王景中, 胡 凱
(北方工業(yè)大學(xué) 計(jì)算機(jī)學(xué)院,北京 100144)
人體動(dòng)作識(shí)別存在著廣泛應(yīng)用,比如視頻監(jiān)控、客戶的屬性分析、行為分析. 比較流行的人體動(dòng)作識(shí)別方法,主要分為兩種,一種基于卷積神經(jīng)網(wǎng)絡(luò).2013年余凱提出3D卷積神經(jīng)網(wǎng)[1,2],其通過將連續(xù)的7幀60×40圖像數(shù)據(jù)送入卷積神經(jīng)網(wǎng)絡(luò)中進(jìn)行訓(xùn)練,通過將卷積核提取的特征進(jìn)行堆疊形成3D卷積核,進(jìn)而實(shí)現(xiàn)人體行為識(shí)別. 2014年由Karen Simonyan等人提出雙流卷積神經(jīng)網(wǎng)絡(luò)[3,4],結(jié)合VGGnet、GOOGLEnet等深度學(xué)習(xí)模型對(duì)視頻中人的連續(xù)動(dòng)作提取光流特征,再將光流特征與原始圖像送入卷積神經(jīng)網(wǎng)絡(luò)中進(jìn)行訓(xùn)練,從而實(shí)現(xiàn)動(dòng)作識(shí)別. 2018年由 Zisserman A等人提出的I3D[5]模型是將上述兩種放法進(jìn)行結(jié)合. 另外一種方法為基于深度攝像機(jī)[6,7],它除了能提供人體的骨骼特征之外,還能夠提供人體的相對(duì)深度信息,即輸出的數(shù)據(jù)為(x,y,z),分別代表骨骼點(diǎn)在圖像中的坐標(biāo)及深度信息,然后結(jié)合支持向量機(jī)(SVM)[6]、隱馬爾可夫模型(HMM)[7,8]等機(jī)器學(xué)習(xí)方法既可以對(duì)人體的動(dòng)作進(jìn)行有效識(shí)別.
雖然上述方法均能實(shí)現(xiàn)對(duì)人體動(dòng)作的識(shí)別,但是其應(yīng)用也有一定的局限性. 基于卷積神經(jīng)網(wǎng)絡(luò)的識(shí)別方法,只能對(duì)動(dòng)作進(jìn)行分類,不能給出人體姿態(tài)的其它相關(guān)信息; 對(duì)于訓(xùn)練數(shù)據(jù)和被識(shí)別數(shù)據(jù)必須是由連續(xù)動(dòng)作組成的圖像,當(dāng)動(dòng)作不連續(xù)時(shí),則不能進(jìn)行有效分析. 基于深度攝像機(jī)的識(shí)別方法,雖然能較好的完成人體動(dòng)作識(shí)別,但對(duì)視頻中快變場景或者靜態(tài)圖像無法完成人體動(dòng)作識(shí)別.
本文中分析對(duì)象為普通視頻中人的動(dòng)作,視頻中圖像的特點(diǎn)為場景變化快、圖像中的人物動(dòng)作多變且不連續(xù). 通過以上分析可以看出,上述方法均不能應(yīng)用于這種應(yīng)用場景.
近年來,隨著人體姿態(tài)估計(jì)方法不斷發(fā)展,其已經(jīng)具有很高的識(shí)別精度. 2016年由卡內(nèi)基梅隆大學(xué)Cao Z、Simon T等人提出的openpose框架[9,10],其使用卷積神經(jīng)網(wǎng)絡(luò)和PAF算法實(shí)現(xiàn)人體姿態(tài)估計(jì). 另外,2017年由上海交通大學(xué)盧策吾等人提出RMPE框架[11],其使用對(duì)稱空間變換網(wǎng)絡(luò)(SSTN)、參數(shù)非最大化抑制(PNMS)等方法實(shí)現(xiàn)對(duì)多人人體骨骼框架的提取. 本文中定義被擬合角度的坐標(biāo)空間后,利用openpose框架提取出人體骨骼特征數(shù)據(jù),經(jīng)過數(shù)據(jù)重構(gòu)、預(yù)處理及增加肢體相關(guān)的先驗(yàn)信息,生成10個(gè)與人體角度相關(guān)的數(shù)據(jù)集. 使用基于“徑向基核(RBF)”的SVR[12]回歸模型作為基線,與BP神經(jīng)網(wǎng)絡(luò)的回歸[13,14]結(jié)果做比較.另外通過主成分分析(PCA)[15,16]方法計(jì)算標(biāo)準(zhǔn)數(shù)據(jù)集和增維后數(shù)據(jù)集特征值,通過特征值的方差證明增維數(shù)據(jù)的有效性. 通過分析實(shí)驗(yàn)結(jié)果,使用加入先驗(yàn)信息的數(shù)據(jù)集,4層BP神經(jīng)網(wǎng)絡(luò)訓(xùn)練結(jié)果要優(yōu)于基于RBF核SVR回歸模型的訓(xùn)練結(jié)果,數(shù)據(jù)集增維后,數(shù)據(jù)間的關(guān)聯(lián)有效減小.
使用openpose框架對(duì)人體骨骼關(guān)節(jié)點(diǎn)數(shù)據(jù)進(jìn)行提取,骨骼示意圖如圖1所示. 本文中只對(duì)人體相對(duì)于攝像機(jī)的正面、左側(cè)面和右側(cè)面時(shí)的人體手臂關(guān)節(jié)角度進(jìn)行擬合,提取的骨骼數(shù)據(jù)包括:頸部、左肩膀、左手肘、左手腕、右肩膀、右手肘、右手腕、髖關(guān)節(jié),對(duì)應(yīng)的編號(hào)分別為:1、2、3、4、5、6、7、8.
圖1 人體骨骼特征編號(hào)示意圖
本文中將人體骨骼以頸部為中心分為左右2個(gè)部分,通過分析人體動(dòng)作特征,每半個(gè)部分只要確定4個(gè)自由度即可確定相應(yīng)的動(dòng)作姿態(tài),所以共需要對(duì)8個(gè)角度進(jìn)行擬合,角度左右對(duì)稱. 相關(guān)數(shù)據(jù)定義以及需要擬合的角度定義見表1.
表1 相關(guān)數(shù)據(jù)對(duì)照
由于沒有人體角度相關(guān)的標(biāo)準(zhǔn)數(shù)據(jù)集,本文中所使用的數(shù)據(jù)集,均為自行設(shè)計(jì). 生成的數(shù)據(jù)集見表2. 相對(duì)于8個(gè)被擬合的人體角度,共生成6組數(shù)據(jù)集,對(duì)應(yīng)表1中定義的角度. 6組數(shù)據(jù)中細(xì)分為5個(gè)標(biāo)簽,分別對(duì)應(yīng)一個(gè)被擬合角度空間的不同狀態(tài),分別為∠10、∠45、∠90、∠135、∠180,其中角度Ar2和Ar3共用一組數(shù)據(jù)、其中角度Al2和Al3共用一組數(shù)據(jù),每組數(shù)據(jù)1000張照片,其中訓(xùn)練集比例為80%,測試集比例為20%. 訓(xùn)練數(shù)據(jù)見圖2.
表2 生成的數(shù)據(jù)集
圖2 訓(xùn)練數(shù)據(jù)
提取出相應(yīng)的骨骼數(shù)據(jù)后,為了保證訓(xùn)練數(shù)據(jù)的相對(duì)位置不變性,首先將數(shù)據(jù)集變換到同一坐標(biāo)原點(diǎn),本文中以頸部作為人體坐標(biāo)中心,計(jì)算方法為:
為了保證數(shù)據(jù)的尺度不變性,需要對(duì)數(shù)據(jù)進(jìn)行歸一化處理,計(jì)算方法為:
通過觀察人體骨骼特征,若不考慮觀測角度,人體大臂和小臂的長度約為軀干的0.5倍左右,為了提高角度擬合的精度,對(duì)上述部分?jǐn)?shù)據(jù)集加入手臂長度的先驗(yàn)信息,提高數(shù)據(jù)集維度,文中設(shè)定手臂與軀干的比例系數(shù)為0.6. 計(jì)算公式為(3). 重新構(gòu)建數(shù)據(jù)集,將對(duì)應(yīng)同一角度的兩套數(shù)據(jù)集在不同的模型中的擬合結(jié)果進(jìn)行比較.
通過主成分分析(PCA)方法,對(duì)增維的數(shù)據(jù)集和正常數(shù)據(jù)集進(jìn)行分析,PCA計(jì)算過程如下:
計(jì)算數(shù)據(jù)集的協(xié)方差矩陣:
計(jì)算協(xié)方差矩陣的特征值和特征向量:
在得到特征值矩陣后,計(jì)算特征值矩陣中特征值的期望和方差并比較不同數(shù)據(jù)集的計(jì)算結(jié)果.
BP神經(jīng)網(wǎng)絡(luò)由輸入層、隱層和輸出層組成. 其通過有監(jiān)督學(xué)習(xí)方式進(jìn)行訓(xùn)練,即在訓(xùn)練時(shí)需要一定數(shù)量的有標(biāo)簽數(shù)據(jù). 通過訓(xùn)練數(shù)據(jù)的正向傳播得到訓(xùn)練誤差,通過誤差的反向傳播修正神經(jīng)元的權(quán)重. 本文中構(gòu)建的所有神經(jīng)網(wǎng)絡(luò)均為4層,其中隱層h1和h2的神經(jīng)元數(shù)量為50和32,激活函數(shù)選擇為Sigmod函數(shù),見式(7)~式(8),輸出層神經(jīng)元個(gè)數(shù)為1,激活函數(shù)為線性函數(shù),見式(9),學(xué)習(xí)率α設(shè)置為0.1,訓(xùn)練次數(shù)為650 000次.
當(dāng)BP神經(jīng)網(wǎng)絡(luò)處于正向傳播時(shí),輸入數(shù)據(jù)由輸入層通過隱層最終到達(dá)輸出層,其計(jì)算公式為:
當(dāng)BP神經(jīng)網(wǎng)絡(luò)進(jìn)行反向傳播時(shí),其使用隨機(jī)梯度下降進(jìn)行優(yōu)化,本文中BP回歸神經(jīng)網(wǎng)絡(luò)的損失函數(shù)定義為:
通過上式不難看出,優(yōu)化的過程即是對(duì)二次函數(shù)尋找極小值點(diǎn)的過程. 如圖3.
圖3 非凸二次函數(shù)示意圖
若二次函數(shù)為非凸函數(shù),在訓(xùn)練過程中,若參數(shù)選擇不合理,BP神經(jīng)網(wǎng)絡(luò)會(huì)將局部極小值點(diǎn)[13,14]作為全局極小值點(diǎn)作為優(yōu)化的目標(biāo),為了避免這種情況,本文中使用批量訓(xùn)練(minibatch)的方法進(jìn)行訓(xùn)練,batchsize設(shè)置為40.
BP神經(jīng)網(wǎng)絡(luò)在反向傳播時(shí),通過求各個(gè)層中的偏導(dǎo)數(shù)獲得權(quán)重的優(yōu)化方向后,通過公式(12)~(13)對(duì)權(quán)重進(jìn)行修改,其中w 為神經(jīng)元權(quán)重、b 為神經(jīng)元偏置.
由于均為復(fù)合函數(shù),其梯度值計(jì)算為式(14)~式(15):
對(duì)于擬合結(jié)果指標(biāo)評(píng)估的方法包括:“平均絕對(duì)誤差(MAE)”、“平方誤差(MSE)”以及“R平方值(RSquared)”,本文中采用MAE作為歸回結(jié)果性能評(píng)估指標(biāo)之一,公式為式(16). 另外,允許擬合的結(jié)果產(chǎn)生一定的誤差,MAE指標(biāo)評(píng)估了所有訓(xùn)練數(shù)據(jù)的誤差,并不能準(zhǔn)確的反應(yīng)回歸的精度,所以本文中使用分類指標(biāo)評(píng)估思想,對(duì)AUC[16]指標(biāo)進(jìn)了修改,其中T為正確樣本數(shù)量、U為樣本總數(shù)量,通過設(shè)定不同的err值確認(rèn)回歸結(jié)果的精度范圍,公式為式(17).
為了對(duì)比BP神經(jīng)網(wǎng)絡(luò)擬合結(jié)果的性能,使用了SVR回歸模型的訓(xùn)練結(jié)果作為基線,該模型可以設(shè)置核函數(shù),分別為“線性核(linear-kernel)”、“徑向基核(RBFkernel)”、“多項(xiàng)式核(ploy-kernel)”. 其中“線性核”函數(shù)不具備非線性空間擬合的能力,“多項(xiàng)式核”在多維數(shù)據(jù)下訓(xùn)練時(shí)間比較長,所以在這里選用“徑向基核”作為SVR的核函數(shù),開發(fā)工具使用sklearn. 詳細(xì)參數(shù)設(shè)置見表3.
表3 SVR回歸模型參數(shù)設(shè)置
針對(duì)上述內(nèi)容,共設(shè)計(jì)4組實(shí)驗(yàn),為了避免重復(fù)說明,這里只對(duì)人體骨骼右臂的Ar1角度的擬合結(jié)果進(jìn)行詳細(xì)說明,對(duì)于其它數(shù)據(jù)集直接給出實(shí)驗(yàn)結(jié)果,實(shí)驗(yàn)設(shè)計(jì)見表4.
實(shí)驗(yàn)過程中,每1000次迭代記錄一次訓(xùn)練集損失數(shù)據(jù)和測試集損失數(shù)據(jù),分析模型的損失函數(shù)曲線,實(shí)驗(yàn)C4效果最好,訓(xùn)練集數(shù)據(jù)的損失和測試集數(shù)據(jù)的損失均為最小,分別為0.1314(紅色實(shí)線)、0.1933(藍(lán)色虛線); 實(shí)驗(yàn)C1效果最差,訓(xùn)練集數(shù)據(jù)的損失和測試集數(shù)據(jù)的損失均為最大,分別為0.5275(紅色實(shí)線)、1.030(藍(lán)色虛線). 詳細(xì)實(shí)驗(yàn)訓(xùn)練曲線見圖4~圖7.
表4 實(shí)驗(yàn)設(shè)計(jì)
圖4 實(shí)驗(yàn)C1損失函數(shù)曲線
圖5 實(shí)驗(yàn)C2損失函數(shù)曲線
圖6 實(shí)驗(yàn)C3損失函數(shù)曲線
圖7 實(shí)驗(yàn)C4損失函數(shù)曲線
使用BP回歸神經(jīng)網(wǎng)絡(luò),通過數(shù)據(jù)集T3、T6、T8、T10,對(duì)人體其它7個(gè)角度進(jìn)行回歸訓(xùn)練,各項(xiàng)指標(biāo)見表5. 實(shí)驗(yàn)結(jié)果見表6.
表5 Ar1角度擬合實(shí)驗(yàn)結(jié)果
對(duì)于增維數(shù)據(jù)的有效性,通過PCA方法對(duì)數(shù)據(jù)集進(jìn)行分析,計(jì)算各數(shù)據(jù)的特征值的方差,計(jì)算結(jié)果見表7.通過分析結(jié)果看出增維后的數(shù)據(jù)集方差更小,說明數(shù)據(jù)集增維后的數(shù)據(jù)集相比較標(biāo)準(zhǔn)數(shù)據(jù)集可以有效減少數(shù)據(jù)的關(guān)聯(lián)性.
本文在定義了人體相關(guān)角度空間的情況下,提出利用openpose提取人體骨骼數(shù)據(jù),經(jīng)過數(shù)據(jù)重構(gòu)、預(yù)處理以及升維后,生成訓(xùn)練數(shù)據(jù)集,通過BP回歸神經(jīng)網(wǎng)絡(luò)對(duì)人體相關(guān)的8個(gè)角度進(jìn)行擬合. 通過對(duì)比試驗(yàn)結(jié)果及相關(guān)的指標(biāo)表明,該方法可以有效的擬合出對(duì)應(yīng)的角度,為動(dòng)作識(shí)別提供依據(jù). 雖然卷積神經(jīng)網(wǎng)絡(luò)經(jīng)過大樣本訓(xùn)練后會(huì)有更強(qiáng)的表達(dá)能力,但其只是對(duì)數(shù)據(jù)整體進(jìn)行評(píng)估,更適用于整體分類,不能給出分類結(jié)果的相關(guān)細(xì)節(jié)的信息. 若要使用單一的卷積神經(jīng)網(wǎng)絡(luò)對(duì)人體的動(dòng)作進(jìn)行分析,需要對(duì)被訓(xùn)練數(shù)據(jù)的各個(gè)部分進(jìn)行非常精確的標(biāo)注,考慮到圖像中的觀測視角和人的身體動(dòng)作均為變量,此項(xiàng)工作量巨大. 使用文獻(xiàn)[1-5]中提出的方法將卷積神經(jīng)網(wǎng)絡(luò)和光流特征結(jié)合完成動(dòng)作識(shí)別,但對(duì)圖像連續(xù)性有一定的要求,并且不能給出人體肢體動(dòng)作的局部信息. 基于以上原因使用BP回歸神經(jīng)網(wǎng)絡(luò)并結(jié)合提取的骨骼數(shù)據(jù)的方法,可以更好的完成人體動(dòng)作角度識(shí)別. 下一步考慮將與深度置信網(wǎng)絡(luò)(DBN)相結(jié)合,進(jìn)一步提高其擬合的精度.
表6 其它角度擬合實(shí)驗(yàn)結(jié)果
表7 數(shù)據(jù)集的方差對(duì)比