劉世平, 陳 萌, 夏文杰, 馬梓焱, 黃元境, 張文奇
(1.上海市空間飛行器機構(gòu)重點實驗室, 上海 201108; 2.華中科技大學(xué)機械科學(xué)與工程學(xué)院, 武漢 430074)
動作識別是計算機視覺領(lǐng)域中的研究熱點與難點。 人類可以通過動作來處理事情和表達感受,其能承載豐富的語義信息,因此動作識別在人機交互[1]、視頻監(jiān)控[2]、視頻檢索[3]等領(lǐng)域得到廣泛應(yīng)用。
研究人員提出了許多方法來對人體動作進行準(zhǔn)確快速的識別。 根據(jù)輸入數(shù)據(jù)的不同,目前主要有RGB 圖像序列[4]、深度圖像序列[5]與人體骨架序列[6]等。 使用RGB 圖像序列與深度圖像序列數(shù)據(jù)的動作識別,會受到人體所處環(huán)境的干擾,而且需要處理巨大的數(shù)據(jù)量。 對于使用人體骨架序列的動作識別,由于人體每一幀動作序列只包含骨架特征,不會受到環(huán)境的干擾,而且需要處理的數(shù)據(jù)也更少,所以通過對人體骨架序列數(shù)據(jù)進行動作識別更加輕量并且具有更好的魯棒性。
傳統(tǒng)的基于人體骨架序列進行動作識別的方法為動態(tài)時間規(guī)整(Dynamic Time Warping,DTW)法[7]。 該方法通過對采集到的每類動作進行特征提取建立動作模板庫,在進行動作識別時,對需要進行識別的動作與動作模板庫中的每類動作進行距離比較,距離最短的一類動作即為所識別到的動作。 由于動態(tài)時間規(guī)整的方法需要與模板庫中的每類動作進行比較,當(dāng)動作種類比較多的時候,計算時間會大大增加。
近年來,隨著深度學(xué)習(xí)的發(fā)展,不少研究人員通過深度學(xué)習(xí)進行骨架序列動作識別。 Ke 等[8]通過CNN(Convolutional Neural Networks)進行骨架序列動作識別,但是該方法需要對骨架序列進行編碼,這會喪失骨架的空間拓?fù)湫?,并且不能很好地處理動作的時間序列關(guān)系;Liu 等[9]通過LSTM(Long Short-Term Memory)進行骨架序列動作識別,該方法能夠較好地處理時間序列的問題,但由于把骨架序列數(shù)據(jù)變?yōu)橄蛄孔鳛槟P偷妮斎?,這同樣會喪失骨架的空間拓?fù)湫?;Yan 等[10]首次使用時空圖卷積神經(jīng)網(wǎng)絡(luò)(Spatial Temporal Graph Convolutional Networks, ST-GCN)對骨架序列進行特征學(xué)習(xí)實現(xiàn)動作識別,該方法保留了骨架的空間拓?fù)湫圆⑶乙材茌^好地處理時間序列;Shi 等[11]對Yan 等[10]的方法進行了改進,建立了自適應(yīng)圖卷積神經(jīng)網(wǎng)絡(luò)(Adaptive Graph Convolutional Networks, AGCN),增加了骨架長度信息并且能夠自適應(yīng)地學(xué)習(xí)骨架的拓?fù)浣Y(jié)構(gòu),但是這2種方法都沒有考慮到局部時間對網(wǎng)絡(luò)模型的影響。
針對上述問題,本文設(shè)計雙擴展時域自適應(yīng)圖卷積神經(jīng)網(wǎng)絡(luò)模型(Dual Dilated Temporal Adaptive Graph Convolutional Networks, DTAGCN)。 首先,對于月面多功能機器人在月面復(fù)雜非結(jié)構(gòu)環(huán)境下航天員的輔助活動設(shè)計一套人機交互動作命令集,根據(jù)命令集采集數(shù)據(jù)并進行視點無關(guān)變化預(yù)處理;然后,通過輸入關(guān)節(jié)點信息與骨架向量信息建立雙擴展時域自適應(yīng)圖卷積神經(jīng)網(wǎng)絡(luò),通過雙擴展時域卷積層獲取局部時間與全局時間對動作的影響;最后,根據(jù)采集到的數(shù)據(jù)集訓(xùn)練模型進行人體骨架動作識別實驗。
針對月面多功能機器人在月面復(fù)雜非結(jié)構(gòu)環(huán)境下航天員的伴隨跟蹤、輔助作業(yè)、安全陪護、緊急救助等任務(wù),設(shè)計了一套人機交互動作命令集,命令集動作的代表幀,如圖1(a)所示,包括需要/無需攙扶、機器人停止運動、提供工具、緊急撤離、拿起/放下/挖掘物體、在我前方/后方/側(cè)方行走、需要救援等12 類語義動作。 骨架動作命令集通過微軟Kinect 傳感器采集得到,共33 人次進行采集,其中每人對每類動作采集30 次。 圖1(b)為需要攙扶類動作所采取的關(guān)鍵幀示意圖。
圖1 數(shù)據(jù)采集示意圖Fig.1 Schematic diagram of data acquisition
從傳感器中得到的數(shù)據(jù)是基于相機坐標(biāo)系的,這會造成坐標(biāo)數(shù)據(jù)(x,y,z) 對視點的變化很敏感。 當(dāng)在不同的位置對同一個動作進行數(shù)據(jù)采集時會使數(shù)據(jù)相差很大,因此需要進行視點無關(guān)處理,把相機坐標(biāo)系轉(zhuǎn)換到人體坐標(biāo)系,使動作的空間位置基本接近。
建立相機坐標(biāo)系與人體坐標(biāo)系,如圖2 所示。圖中相機坐標(biāo)系已經(jīng)經(jīng)過平移,坐標(biāo)系ncxncyncz為傳感器所采集數(shù)據(jù)的相機坐標(biāo)系,坐標(biāo)系npxnpynpz為人體坐標(biāo)系,由于人體運動時點1、2、13、17 變化幅度比較小,人體坐標(biāo)系以點1 為原點,點13 到點17 方向為x軸方向,點1 到點2 方向為z軸方向。
圖2 相機坐標(biāo)系與人體坐標(biāo)系Fig.2 Camera coordinate system and human coordinate system
為了達到視點無關(guān)性,首先需要進行坐標(biāo)系平移,對于每一個動作序列,使序列第一幀的點1 為原點,對動作序列中所有骨架節(jié)點減去原點坐標(biāo)vSB(xSB,ySB,zSB) 完成得到新的坐標(biāo),以此完成坐標(biāo)系的平移;然后通過坐標(biāo)系旋轉(zhuǎn)使數(shù)據(jù)從相機坐標(biāo)系轉(zhuǎn)換到人體坐標(biāo)系,使用四元數(shù)求解旋轉(zhuǎn)矩陣的方法完成坐標(biāo)系旋轉(zhuǎn),對于相機坐標(biāo)系的單位軸向量n(nx,ny,nz), 與對應(yīng)人體坐標(biāo)系軸向量的夾角為θ,則四元數(shù)為式(1):
通過對z軸和x軸進行旋轉(zhuǎn)完成坐標(biāo)系的旋轉(zhuǎn)。 對于任意節(jié)點v(x,y,z),其完成坐標(biāo)系轉(zhuǎn)換的節(jié)點v′(x′,y′,z′) 為式(3):
數(shù)據(jù)預(yù)處理前的骨架序列圖如圖3(a)所示,圖中2 人所做的動作為同一個動作,但是位置不同導(dǎo)致坐標(biāo)相差較大。 經(jīng)過視點無關(guān)處理骨架序列圖如圖3(b)所示,圖中2 人的動作序列基本相近,經(jīng)過視點無關(guān)處理過的數(shù)據(jù)用來訓(xùn)練模型可以使模型識別準(zhǔn)確率提高。
圖3 數(shù)據(jù)預(yù)處理結(jié)果對比Fig.3 Comparison of data preprocessing results
本文所設(shè)計的雙擴展時域自適應(yīng)圖卷積神經(jīng)網(wǎng)絡(luò)模型輸入2 種數(shù)據(jù)信息類型。 輸入的第一種數(shù)據(jù)信息類型為骨架關(guān)節(jié)點信息vi,t=(xi,t,yi,t,zi,t),如圖4(a)所示;輸入的第二種數(shù)據(jù)信息類型為相鄰骨架關(guān)節(jié)點的向量信息bi,j,t=(xj,t-xi,t,yj,t-yi,t,zj,t-zi,t),如圖4(b)所示。 最后得到的結(jié)果通過對2 種數(shù)據(jù)結(jié)合得到。
圖4 輸入數(shù)據(jù)信息Fig.4 Enter data information
對于所輸入的數(shù)據(jù),圖卷積操作可以提取更高維度的特征[10]。 在空間維度的圖卷積操作如式(4)所示。
然而,式(4)中的鄰接矩陣是人為主觀預(yù)定義的,這并不能捕獲人體動作所有關(guān)節(jié)點之間的關(guān)聯(lián)程度,使用自適應(yīng)圖卷積可以解決這個問題,對式(4)進行改進[11],得自適應(yīng)圖卷積,如式(5)所示。
式中,Wθk與WΦk通過高斯函數(shù)計算得到,Hl-1是第l- 1 層的特征圖,與式(4)和式(5)中的一致。
使用自適應(yīng)空間圖卷積操作可以捕獲人體整體關(guān)節(jié)點之間連接關(guān)系與關(guān)聯(lián)程度,使模型能夠適應(yīng)不同類型的動作。
Yan 等[10]與Shi 等[11]的方法能在空間圖內(nèi)學(xué)習(xí)到較好的特征,但是卻忽略了人體動作的時間變化性,不同的人做同一個動作的速度會不一樣,同時同一個人做同一個動作也可能會時快時慢,因此人體的動作不僅在全局具有關(guān)聯(lián)性,在局部也同樣有關(guān)聯(lián)。 由于膨脹卷積能夠快速良好地處理時間問題[12],為了解決這個問題,本文設(shè)計了雙擴展時域卷積層,雙擴展時域卷積層對2 個不同膨脹因子的卷積進行結(jié)合,使模型能夠捕獲動作的局部時間信息與全局時間信息。
其中第一個卷積在低層中設(shè)置較小的膨脹因子,并且隨著層數(shù)的增加而增加,使用卷積核大小為3 的非因果卷積,由于膨脹因子不斷擴大而卷積核的大小一直為3,這一個卷積能在不擴大核尺寸情況下在較高層獲得較大的感受野,因此可以捕獲全局時間信息。 第二個卷積與第一個卷積相反,在低層中設(shè)置較大的膨脹因子,隨著層數(shù)的增加而減小,使用卷積核的大小與第一個卷積相同,該卷積可以捕獲局部時間信息,每一層的操作可以通過式(7)~(10)描述。
式中,Wd1,Wd2∈?3×Cout×Cout分別是膨脹因子2l-1和2L-l-1核大小為3 的擴展卷積操作的權(quán)重向量,其中Cout為當(dāng)前層卷積濾波器的數(shù)目,l為當(dāng)前層,L為總層數(shù);Hl是第l層的輸出;W∈?1×2Cout×Cout是1×1 卷積的權(quán)重;bd1,bd2,b∈?Cout為偏差向量;Relu為激活函數(shù)。
通過空間自適應(yīng)圖卷積層與雙擴展時域卷積層建立雙擴展時域自適應(yīng)圖卷積神經(jīng)網(wǎng)絡(luò)模型,模型圖如圖5 所示。 模型第一層通過批量歸一化層(Batch Normalization, BN)對數(shù)據(jù)做標(biāo)準(zhǔn)化處理,之后通過7 個自適應(yīng)圖卷積塊(Adaptive Graph Convolutional Blocks, AGCB)與3 個雙擴展時域自適應(yīng)圖卷積塊(Dual Dilated Temporal Adaptive Graph Convolutional Blocks, DT-AGCB)對數(shù)據(jù)特征進行提取,除了第一個網(wǎng)絡(luò)塊沒有進行殘差操作,其他的網(wǎng)絡(luò)塊都增加了殘差操作來緩解層數(shù)增加帶來的梯度消失,每一個網(wǎng)絡(luò)塊的前三個層為自適應(yīng)空間卷積操作,后三個層為時域卷積操作。 AGCB 的時域卷積操作的卷積核無膨脹因子,DT-GCB 的時域卷積操作的卷積核膨脹因子隨層數(shù)變化而變化(圖5 中的小圓點代表時間幀)。 模型的后面通過全局池化層(Global Average Pooling, GAP)降低參數(shù)量,最后通過Soft max 層對動作進行分類,完成動作識別。
圖5 雙擴展時域自適應(yīng)圖卷積神經(jīng)網(wǎng)絡(luò)模型圖Fig.5 Diagram of dual dilated temporal adaptive graph convolutional networks model
本文實驗使用的開發(fā)語言為Python3.8,深度學(xué)習(xí)平臺為Tensorflow2.4,GPU 為NVIDIA Ge-Force RTX 2080 Ti, CPU 為 Intel Xeon E5-2678 v3。
由于每一類動作的數(shù)據(jù)比較少,為了使訓(xùn)練的模型效果較好,所采集的數(shù)據(jù)集中76%劃分為訓(xùn)練集,12%劃分為驗證集,12%劃分為測試集。模型的損失函數(shù)為交叉熵?fù)p失函數(shù),batch size 大小設(shè)置為8,參數(shù)初始化采用He 等[13]的方法。通過epochs 為20 次的訓(xùn)練,得到時空圖卷積神經(jīng)網(wǎng)絡(luò)、自適應(yīng)圖卷積神經(jīng)網(wǎng)絡(luò)與雙擴展時域自適應(yīng)圖卷積神經(jīng)網(wǎng)絡(luò)的訓(xùn)練結(jié)果如圖6 所示。 圖6(a)為訓(xùn)練過程訓(xùn)練集的準(zhǔn)確率,圖6(b)為訓(xùn)練過程驗證集準(zhǔn)確率,從圖6 可以得出DT-AGCN訓(xùn)練結(jié)果優(yōu)異,優(yōu)于ST-GCN 與AGCN,并且在訓(xùn)練集與驗證集上得到的識別率在98%以上。 并對模型的識別效率進行了測試,對于平均每個動作序列幀,ST-GCN 需要0.3142 s,AGCN 需要0.3162 s,DT-AGCN 需要0.3238 s,因此在識別效率方面,3 種模型速度相差不大。
圖6 數(shù)據(jù)訓(xùn)練結(jié)果對比Fig.6 Comparison of data training results
對訓(xùn)練所得到的模型通過測試集進行準(zhǔn)確率比較如表1 所示,表中DT-AGCN(Joint)表示對模型輸入骨架關(guān)節(jié)點信息,DT-AGCN(Bone)表示輸入骨架向量信息,DT-AGCN(Joint+Bone)表示輸入骨架關(guān)節(jié)點信息與骨架向量信息的結(jié)合。
表1 測試集結(jié)果對比Table 1 Comparison of test set results
測試集各個動作類識別準(zhǔn)確率的混淆矩陣如圖7 所示。
圖7 動作類識別準(zhǔn)確率的混淆矩陣Fig.7 Confusion matrix of action recognition accuracy
從表1 與圖7 可以得出所建立模型識別準(zhǔn)確率優(yōu)異,總的識別率在98.5%,每一類動作的識別率在97.5%以上。 通過對人體實際動作進行測試得到識別效果圖如圖8 所示。
圖8 人體動作識別效果圖Fig.8 Effect drawing of human action recognition
本文針對月面多功能機器人在月面復(fù)雜非結(jié)構(gòu)環(huán)境下基于動作識別的人機交互問題,設(shè)計了雙擴展時域自適應(yīng)圖卷積神經(jīng)網(wǎng)絡(luò)對各個動作類別進行識別;針對具體的人機交互任務(wù)設(shè)計了一套動作指令集,對采集到的動作幀數(shù)據(jù)通過坐標(biāo)系變換進行數(shù)據(jù)的預(yù)處理;針對人體運動的時間局部性與全局性設(shè)計了雙擴展時域卷積層,并與空間自適應(yīng)圖卷積層結(jié)合完成了神經(jīng)網(wǎng)絡(luò)模型的建立。 通過所采集到的數(shù)據(jù)集對所建立的模型進行實驗驗證,并與ST-GCN 與AGCN 進行對比。結(jié)果表明,本文所設(shè)計模型識別率優(yōu)異,動作的總體識別率為98.5%,每一類動作的識別率達97.5%以上,能滿足人機交互任務(wù)的需求。