呂松杰,祁宇明,鄧三鵬,夏育泓,劉 浩
(1.天津職業(yè)技術(shù)師范大學(xué)機(jī)器人及智能裝備研究院,天津 300222;2.天津市智能機(jī)器人技術(shù)及應(yīng)用企業(yè)重點(diǎn)實(shí)驗(yàn)室,天津 300350)
隨著工業(yè)智能化的迅速發(fā)展,近年來,人機(jī)協(xié)作技術(shù)逐漸被應(yīng)用于非結(jié)構(gòu)化工業(yè)領(lǐng)域中,人機(jī)協(xié)作的提出打破了傳統(tǒng)的人控制機(jī)器的工作模式和單一結(jié)構(gòu)化的工作環(huán)境,在同一作業(yè)環(huán)境下實(shí)現(xiàn)了人與機(jī)器人協(xié)作完成任務(wù)[1]。感知技術(shù)是實(shí)現(xiàn)人機(jī)協(xié)作的前提[2]。為了更加安全高效完成人機(jī)協(xié)作任務(wù),在復(fù)雜的工業(yè)場(chǎng)景下機(jī)器人需要對(duì)工人的行為意圖準(zhǔn)確識(shí)別和快速理解,因此基于視覺的人體動(dòng)作識(shí)別在人機(jī)協(xié)作的場(chǎng)景中有著重要的應(yīng)用價(jià)值。
人體動(dòng)作識(shí)別作為人機(jī)協(xié)作過程中的重要一步,近年來得到了快速發(fā)展,人體動(dòng)作識(shí)別的方法根據(jù)輸入形式的不同主要分為2 種,分別是基于RGB數(shù)據(jù)[3,4]和基于人體骨架數(shù)據(jù)[5]。第1 種最常見的是用3D 卷積神經(jīng)網(wǎng)絡(luò)[6]和雙流卷積神經(jīng)網(wǎng)絡(luò)的方法來完成動(dòng)作識(shí)別。第2 種骨架數(shù)據(jù)相較于RGB 數(shù)據(jù)而言,排除了圖片中復(fù)雜背景和冗余信息的干擾,單純保留了人體動(dòng)作本身的關(guān)鍵信息[7],在工業(yè)場(chǎng)景下更適合作為人體動(dòng)作識(shí)別的輸入數(shù)據(jù)。
隨著深度學(xué)習(xí)的發(fā)展,基于人體姿態(tài)估計(jì)的算法僅通過處理圖片就可以得到人體骨骼點(diǎn)的位置信息,但是目前大多數(shù)的人體姿態(tài)估計(jì)算法模型的參數(shù)量較大,應(yīng)用在工業(yè)場(chǎng)景中實(shí)時(shí)性較差。BlazePose 是谷歌2020年提出的一種用于人體姿態(tài)估計(jì)的輕量級(jí)卷積神經(jīng)網(wǎng)絡(luò)模型[8],可以完成實(shí)時(shí)的檢測(cè)。
使用BlazePose 處理自制的數(shù)據(jù)集得到人體三維的骨骼點(diǎn)位置信息,對(duì)骨骼點(diǎn)數(shù)據(jù)進(jìn)行數(shù)據(jù)預(yù)處理后,利用主成分分析(PCA)對(duì)數(shù)據(jù)進(jìn)行降維處理。采用BP 神經(jīng)網(wǎng)絡(luò)分類算法對(duì)工業(yè)場(chǎng)景下工人可能出現(xiàn)的3 種動(dòng)作:正常狀態(tài)下的站立或行走、搬運(yùn)、操作示教器,進(jìn)行動(dòng)作的識(shí)別。
設(shè)計(jì)的人體動(dòng)作識(shí)別模型主要包括兩部分:人體3D 骨骼點(diǎn)特征工程的構(gòu)建和分類算法的設(shè)計(jì),整體設(shè)計(jì)流程如圖1 所示。用BlazePose 算法處理得到的33個(gè)骨骼點(diǎn),經(jīng)過數(shù)據(jù)預(yù)處理和PCA 降維處理,將未降維和降維的數(shù)據(jù)分別輸入到分類算法中完成動(dòng)作分類,最后經(jīng)過實(shí)驗(yàn)對(duì)比,選擇出一種最優(yōu)的動(dòng)作識(shí)別算法。
圖1 動(dòng)作識(shí)別算法的流程
自制的數(shù)據(jù)集包括3 種工業(yè)場(chǎng)景下工人可能會(huì)出現(xiàn)的動(dòng)作:搬運(yùn)、操作示教器和正常狀態(tài)下站立或行走。如表1 所示,篩選整理過后的3 種動(dòng)作數(shù)據(jù)集一共包括2802 張圖片。
表1 工業(yè)場(chǎng)景下動(dòng)作數(shù)據(jù)集
BlazePose 是一種用于人體姿態(tài)估計(jì)的輕量級(jí)卷積神經(jīng)網(wǎng)絡(luò)模型,在預(yù)測(cè)的過程中,BlazePose 將輸出33個(gè)3D 骨骼點(diǎn)位置信息(x,y,z),其中x、y、z三個(gè)坐標(biāo)是在以米為單位的真實(shí)世界3D 坐標(biāo)系中,原點(diǎn)位于臀部之間的中心。每張圖片輸出的骨骼點(diǎn)坐標(biāo)不僅都以臀部中心為坐標(biāo)原點(diǎn),而且每次輸出的數(shù)據(jù)尺度也相同,這樣在比較不同樣本之間的骨骼點(diǎn)數(shù)據(jù)時(shí),就不需要對(duì)骨骼點(diǎn)數(shù)據(jù)進(jìn)行歸一化等處理。如圖2 所示為BlazePose 處理搬運(yùn)這個(gè)動(dòng)作后得到的結(jié)果以及此動(dòng)作33個(gè)關(guān)鍵點(diǎn)在三維空間坐標(biāo)系中的可視化。
圖2 BlazePose 處理后的可視化效果
經(jīng)過實(shí)驗(yàn)分析,僅僅使用BlazePose 輸出得到的33個(gè)人體骨骼點(diǎn)位置信息就可以表達(dá)人體動(dòng)作的語義特征。單張圖像經(jīng)過BlazePose 處理可以得到33個(gè)關(guān)鍵點(diǎn)的3D 坐標(biāo)信息,是一個(gè)大小為(33,3)的二維數(shù)組數(shù)據(jù),將這個(gè)二維數(shù)組數(shù)據(jù)經(jīng)過維度變換之后得到一個(gè)特征維度為99 的一維數(shù)組數(shù)據(jù),加入動(dòng)作的標(biāo)簽后,這樣就完成了一個(gè)樣本數(shù)據(jù)的構(gòu)建。用BlazePose 循環(huán)處理數(shù)據(jù)集中的所有圖像,對(duì)數(shù)據(jù)預(yù)處理后得大小為(2802,100)的二維數(shù)組數(shù)據(jù),將數(shù)據(jù)寫入到CSV 文件中,用于后面的動(dòng)作分類任務(wù)。
PCA 是最常用的降維算法,其目的在于將高維的數(shù)據(jù)映射到低維的空間中,并期望在所投影的維度上數(shù)據(jù)的信息量最大。一般用主成分所占的百分比來衡量PCA 降維后數(shù)據(jù)的好壞,也就是前k個(gè)主成分總的方差貢獻(xiàn)率。用PCA 對(duì)預(yù)處理后的數(shù)據(jù)進(jìn)行降維處理,為了找到一個(gè)較好的下降維度,輸出前n個(gè)主成分占比總和,如圖3 所示,當(dāng)數(shù)據(jù)下降到20 維的時(shí)候,前20個(gè)主成分占比可以達(dá)到99.5%,因此可以將數(shù)據(jù)從99 維降到20 維,將降維后大小為(2802,20)的二維數(shù)組數(shù)據(jù)加入標(biāo)簽后寫入到另外一個(gè)CSV 文件中。
圖3 下降到不同維度時(shí)PCA 總的主成分占比
完成人體3D 骨骼點(diǎn)特征工程的構(gòu)建后,得到了2 組數(shù)據(jù),都是2802個(gè)樣本數(shù)據(jù),包括3 種動(dòng)作類別。第1 組是沒有進(jìn)行PCA 降維的數(shù)據(jù),特征維度為99 維,數(shù)據(jù)保留了動(dòng)作姿態(tài)原始的特征;第2 組是降維后的數(shù)據(jù),特征維度為20 維,數(shù)據(jù)量相對(duì)較小。將這2 組數(shù)據(jù)分別作為分類算法的輸入,使用BP 神經(jīng)網(wǎng)絡(luò)算法進(jìn)行分類,最后將動(dòng)作識(shí)別算法應(yīng)用在視頻數(shù)據(jù)上,來驗(yàn)證動(dòng)作識(shí)別算法的實(shí)時(shí)性。
BP 神經(jīng)網(wǎng)絡(luò)是一種按誤差反向傳播算法訓(xùn)練的多層前饋網(wǎng)絡(luò),訓(xùn)練的過程包括前向傳播和反向傳播,在反向傳播的過程中,根據(jù)誤差更新各種參數(shù)的值,使得總誤差減小。對(duì)數(shù)據(jù)進(jìn)行反復(fù)訓(xùn)練,直到誤差減少到可以接受的程度。本實(shí)驗(yàn)中,輸入層節(jié)點(diǎn)數(shù)將設(shè)置為99個(gè)或20個(gè),輸出層節(jié)點(diǎn)數(shù)為3個(gè),設(shè)置兩個(gè)隱藏層,在分類之前需要進(jìn)行大量的實(shí)驗(yàn)來確定隱藏層節(jié)點(diǎn)的個(gè)數(shù),以保證可以得到一個(gè)較好的分類結(jié)果。同時(shí)在BP 神經(jīng)網(wǎng)絡(luò)中還將加入BN(Batch Nor原malization)層,它可以很好地約束特征數(shù)據(jù)的尺度范圍,讓數(shù)據(jù)保持在一個(gè)良好的分布范圍之內(nèi)。加入BN 層不僅可以加速模型的訓(xùn)練,還可以提高分類的準(zhǔn)確率。
實(shí)驗(yàn)均在Intel i5-8250U CPU 處理器、4G 內(nèi)存的PC 上進(jìn)行,系統(tǒng)環(huán)境為64 位Windows 10 操作系統(tǒng),采用Python3.8 進(jìn)行編程,采用Pytorch 1.10 深度學(xué)習(xí)框架完成網(wǎng)絡(luò)模型的搭建、訓(xùn)練和測(cè)試。
數(shù)據(jù)集中的圖片經(jīng)過BlazePose 處理會(huì)輸出33個(gè)3D 骨骼點(diǎn)位置坐標(biāo)信息,經(jīng)過數(shù)據(jù)處理后得到的特征維度為99 維,再經(jīng)過PCA 降維得到20 維,將降維前的數(shù)據(jù)和降維后的數(shù)據(jù)分別寫入到不同的CSV文件中,這兩組非結(jié)構(gòu)化數(shù)據(jù)將輸入到分類算法中完成動(dòng)作分類。
將數(shù)據(jù)按照0.75頤0.25 的比例劃分成訓(xùn)練集和測(cè)試集,經(jīng)過大量的實(shí)驗(yàn)測(cè)試,最終將BP 神經(jīng)網(wǎng)絡(luò)設(shè)置為4 層,其中輸入層有99個(gè)節(jié)點(diǎn),第1 層有120個(gè)節(jié)點(diǎn),在第2 層后面加入BN 層和激活函數(shù)RELU,第3 層有84個(gè)節(jié)點(diǎn),第3 層后面也加入BN 層和激活函數(shù)RELU,輸出層有3個(gè)節(jié)點(diǎn)。網(wǎng)絡(luò)模型的批大小設(shè)置為112,初始學(xué)習(xí)率設(shè)置為0.01,選擇交叉熵?fù)p失函數(shù),采用隨機(jī)梯度下降作為優(yōu)化策略,訓(xùn)練周期為30 epoch,采用學(xué)習(xí)率下降策略,在15 ~ 30 epoch 學(xué)習(xí)率下降10 倍。網(wǎng)絡(luò)模型訓(xùn)練時(shí)的loss 曲線和準(zhǔn)確率曲線,訓(xùn)練30 epoch 之后,測(cè)試集的準(zhǔn)確率可以達(dá)到98.37%,如圖4 所示。從圖4 可以看出,降維的數(shù)據(jù)用BP 神經(jīng)網(wǎng)絡(luò)模型訓(xùn)練后,測(cè)試集的準(zhǔn)確率為98.86%,準(zhǔn)確率比未降維的數(shù)據(jù)高,同時(shí)模型參數(shù)量更小,識(shí)別速度相對(duì)快點(diǎn)。
圖4 BP 神經(jīng)網(wǎng)絡(luò)訓(xùn)練時(shí)的loss 曲線和準(zhǔn)確率曲線
將訓(xùn)練好的動(dòng)作分類模型應(yīng)用在一段480 幀的視頻數(shù)據(jù)上,計(jì)算模型識(shí)別的FPS,來驗(yàn)證動(dòng)作識(shí)別算法的實(shí)時(shí)性,該視頻數(shù)據(jù)中的動(dòng)作為操作示教器。當(dāng)采用不同模型時(shí)它的動(dòng)作識(shí)別準(zhǔn)確率與動(dòng)作識(shí)別速度,可以看到2 種算法基本都能達(dá)到實(shí)時(shí)識(shí)別(表2)。
表2 動(dòng)作識(shí)別準(zhǔn)確率與動(dòng)作識(shí)別速度
在非結(jié)構(gòu)工業(yè)場(chǎng)景下對(duì)人體動(dòng)作識(shí)別的算法,該算法使用自制的3 種動(dòng)作數(shù)據(jù)集,通過BlazePose 提取人體3D 骨骼點(diǎn)位置信息,經(jīng)過數(shù)據(jù)預(yù)處理和PCA降維后,將未降維的數(shù)據(jù)和降維的數(shù)據(jù)分別送入到BP 神經(jīng)網(wǎng)絡(luò)中進(jìn)行分類,從而完成人體動(dòng)作的識(shí)別。經(jīng)過實(shí)驗(yàn)對(duì)比,使用PCA 降維后的數(shù)據(jù)作為分類算法的輸入,模型的準(zhǔn)確率相對(duì)高一點(diǎn),準(zhǔn)確率可達(dá)到98.86%,識(shí)別速度更快,平均每秒可以運(yùn)行30 幀,可完成實(shí)時(shí)的動(dòng)作識(shí)別。在真實(shí)的工業(yè)場(chǎng)景下,分析和識(shí)別工人的動(dòng)作不僅可以對(duì)工人的行為規(guī)范進(jìn)行監(jiān)督,還可以讓機(jī)器人更加安全高效的與工人共同完成工作任務(wù),具有良好的實(shí)際應(yīng)用價(jià)值。
本研究收集到的數(shù)據(jù)集存在數(shù)量少、不夠全面等缺點(diǎn),對(duì)于比較相近的動(dòng)作可能會(huì)出現(xiàn)識(shí)別錯(cuò)誤,接下來的研究應(yīng)擴(kuò)大和優(yōu)化數(shù)據(jù)集,尋找更好的特征提取方法,來提高人體動(dòng)作識(shí)別的準(zhǔn)確度和魯棒性。