胡青松,張 亮,丁 娟,李世銀
(1. 中國礦業(yè)大學(xué)信息與控制工程學(xué)院 江蘇 徐州 221116;2. 吉林大學(xué)珠海學(xué)院 廣東 珠海 519041)
人體動作識別[1]旨在通過在線或離線的方式,從傳感器所采集的數(shù)據(jù)中自動識別出人體正在執(zhí)行的動作,它是計算機(jī)視覺[2]、機(jī)器學(xué)習(xí)[3]、模式識別[4]和人工智能[5]等技術(shù)交叉融合發(fā)展的結(jié)果,在新型人機(jī)交互、虛擬現(xiàn)實(shí)、增強(qiáng)現(xiàn)實(shí)和輔助培訓(xùn)等領(lǐng)域具有廣闊的應(yīng)用前景。
人體動作識別算法主要有模板匹配和機(jī)器學(xué)習(xí)兩大類。模板匹配算法將動作實(shí)例與模板庫中的動作進(jìn)行對比,模板庫中與動作實(shí)例相似度最高的動作即為識別結(jié)果;文獻(xiàn)[6]提出的時間自相似和動態(tài)規(guī)整的識別算法即屬此類。模板匹配識別算法的缺點(diǎn)是隨著模板庫的增加,模板比對的開銷會越來越大。機(jī)器學(xué)習(xí)算法是用一系列動作實(shí)例訓(xùn)練一個分類器,此分類器能夠區(qū)分不同動作的共性與差異,進(jìn)而利用分類器進(jìn)行動作分類;文獻(xiàn)[7]提出的方法即屬此類,它結(jié)合時空特征與3D-SIFT 描述子提取人體特征,使用SVM(support vector machine)算法識別人體動作。與基于模板匹配的識別算法類似,基于機(jī)器學(xué)習(xí)的識別算法也要求手動提取動作特征,因此操作繁瑣,難以通用。
與普通的機(jī)器學(xué)習(xí)不同,深度學(xué)習(xí)算法[8-10]能夠自動提取目標(biāo)特征,其中CNN 在深度學(xué)習(xí)中應(yīng)用得尤為廣泛[11],在很多情況下都表現(xiàn)出優(yōu)秀的性能,適合處理人體動作識別等復(fù)雜任務(wù)。為此,本文提出基于CNN 的精確人體動作識別算法,對人體骨骼數(shù)據(jù)進(jìn)行編碼處理,進(jìn)而構(gòu)建深度學(xué)習(xí)框架,從而準(zhǔn)確識別數(shù)據(jù)所包含的人體動作。
本文采用可開放獲取的MSRC-12(the Microsoft research Cambridge-12)人體動作數(shù)據(jù)集。該數(shù)據(jù)集由微軟劍橋聯(lián)合實(shí)驗(yàn)室使用Kinect設(shè)備采集[12],共包含594 個人體動作序列,719 359幀,播放完畢約需6 小時40 分鐘。由于Kinect 通過發(fā)射紅外光獲取人體骨骼和關(guān)節(jié)的位置坐標(biāo),而不是采用可見光獲取圖像或視頻,因此克服了光照強(qiáng)度對人體動作識別的影響。
為了增強(qiáng)數(shù)據(jù)集的代表性和說服力,MSRC-12共采集了30 名不同志愿者的動作。志愿者特征如下:1)年齡特征:22~65 歲,平均31 歲;2)身高特征:1.52~2 米,平均1.76 米;3)男女比例:3∶2;4)左、右撇子比例:1∶14。
志愿者分別表演圖1 中的12 種動作,共采集到6 244 個動作實(shí)例。在這12 種動作中,奇數(shù)動作是隱喻動作,意為把動作名稱與隱含的寓意相關(guān)聯(lián);偶數(shù)動作是標(biāo)準(zhǔn)動作,動作名稱直接描述了動作本身的含義。從圖1 可以看出,Kinect 記錄的是點(diǎn)和線組成的人體骨骼數(shù)據(jù),其中的點(diǎn)代表人體關(guān)節(jié),關(guān)節(jié)點(diǎn)的不同位置組合便可表達(dá)不同的人體動作。
數(shù)據(jù)采集方式不同,測試者的動作也會受到一定影響。為了體現(xiàn)采集方式的影響,MSRC-12 不但包括單一屬性數(shù)據(jù),也包括復(fù)合屬性數(shù)據(jù)。單一屬性數(shù)據(jù)包括:1)描述分解動作的文本,簡稱文本(Text);2)個體動作的有序靜態(tài)圖像集合,簡稱圖像(Images);3)個體動作的視頻,簡稱視頻(Video)。復(fù)合屬性數(shù)據(jù)包括:1)文本和圖像的復(fù)合(Text+Images);2)文本和視頻的復(fù)合(Text+Video)。
MSRC-12 數(shù)據(jù)集中,每一個測試者的相同動作存儲在一個.csv 文件中,它記錄了三維骨骼數(shù)據(jù)和該數(shù)據(jù)的記錄時間。此外,每個動作還有一個.tagstream 伴生文件,它記錄了每一個動作的中心時間戳。把相同屬性的數(shù)據(jù)追加到一個文件中,最終得到提取后的數(shù)據(jù)文件和相應(yīng)的標(biāo)簽文件。
圖1 MSRC-12 數(shù)據(jù)集的動作實(shí)例
最后,將提取的數(shù)據(jù)進(jìn)行歸一化處理。歸一化的目的有兩點(diǎn):一是保證所繪圖形不失真;二是便于后續(xù)的深度學(xué)習(xí)處理。因?yàn)闅w一化使得數(shù)據(jù)無量綱化,從而加快了優(yōu)化過程,并能提高模型精度。本文把 x,y,z 軸分開處理,用 M表示text_x.mat,Mx 、 My和 Mz 分別表示 x,y,z軸上的數(shù)據(jù)。歸一化處理之前,首先利用式(1)消除 x軸的負(fù)值,接著利用式(2)對 x軸 數(shù)據(jù)進(jìn)行歸一化。 y,z軸數(shù)據(jù)采用同樣方法處理,不再贅述。
本文提出的基于CNN 的動作識別所處理的對象是圖像,因此在進(jìn)行識別前需要對預(yù)處理完畢后的動作數(shù)據(jù)進(jìn)行編碼,將代表動作的人體關(guān)節(jié)數(shù)據(jù)轉(zhuǎn)化為圖像形式。
采用何種方式將動作數(shù)據(jù)轉(zhuǎn)化成圖像,對CNN的性能具有較大影響。本文共提出3 種編碼方式,每種編碼方式均可構(gòu)建灰度圖像或彩色圖像,因此共有6 種編碼組合。灰度圖像的構(gòu)建方法如圖2a所示,選取一個關(guān)節(jié)點(diǎn)的數(shù)據(jù),將其 x,y,z三軸分量依次放入同一個方陣中,每個分量填充一個像素點(diǎn)。按照相同的方法將其他關(guān)節(jié)點(diǎn)的數(shù)據(jù)填入方陣,所得到的方陣即是一個灰度圖像方陣。彩色圖像的構(gòu)建方法與灰度圖像類似,所不同的是將關(guān)節(jié)點(diǎn)的三軸分量分別放入3 個不同的方陣中,如圖2b所示。將所得的3 個方陣作為彩色圖像的r、g、b 分量,組成的圖像即是一張彩色圖像。
如圖3 所示,3 種編碼方法分別稱為平鋪編碼、回旋編碼和“之”字形編碼。平鋪編碼指的是將數(shù)據(jù)按照從左到右來回掃描進(jìn)行平鋪排列,如圖3a;回旋編碼指的是將數(shù)據(jù)按照從外到內(nèi)進(jìn)行“回旋”排列,如圖3b;“之”字形編碼則是將數(shù)據(jù)排列成類似“之”字的編碼方式,如圖3c。
圖2 動作數(shù)據(jù)的灰度與彩色圖像編碼
圖3 動作數(shù)據(jù)的編碼方法
MSRC-12 數(shù)據(jù)集的一個動作實(shí)例由連續(xù)的35 幀構(gòu)成。如果采用灰色圖像編碼,容納一幀動作的數(shù)據(jù)需要一個46×46 的方陣,不能填滿的方陣元素用“0”填充。圖4 為同一個動作的6 種編碼圖案,第一行從左到右依次為采用平鋪編碼、回旋編碼、“之”字型編碼得到的灰色圖像;第二行從左到右分別為采用平鋪編碼、回旋編碼、“之”字型編碼得到的彩色圖像。這些編碼方式的動作識別能力將在第3 節(jié)通過仿真的方式進(jìn)行對比研究。
圖4 動作數(shù)據(jù)的6 種編碼實(shí)例
CNN 是一種高效的深度學(xué)習(xí)方法,通常包括輸入層、卷積層、池化層、全連接層和分類器,如圖5 所示。它通過局部卷積來提取圖像區(qū)域特征,并通過共享卷積權(quán)值和池化操作來降低數(shù)據(jù)維度,最終再通過傳統(tǒng)機(jī)器學(xué)習(xí)方法完成樣本分類。
在一個基于CNN 的學(xué)習(xí)實(shí)例中,可以根據(jù)需要設(shè)置多個卷積層和池化層,在全連接層將得到的特征圖片進(jìn)行全連接,所得的特征向量經(jīng)由分類器輸出,即可得到識別結(jié)果。相比其他算法,圖像從輸入層輸入之后,CNN 能夠自動提取圖像特征,識別準(zhǔn)確率很高。
圖5 CNN 學(xué)習(xí)框架
為了提高識別能力,本文構(gòu)造的CNN 學(xué)習(xí)框架包括7 層結(jié)構(gòu),如圖6 所示。下面以單通道灰色圖像為例對各層予以說明:
第一層(輸入層):輸入圖像,其尺寸為46×46。
第二層(卷積層1):設(shè)置6 幅3×3 的卷積核,并將卷積步長設(shè)定為1(若無特殊說明,下文的卷積步長都設(shè)定為1),分別與輸入圖像卷積,得到6幅44×44 的特征圖。
第三層(池化層1):對卷積層1 得到的特征圖進(jìn)行均勻池化,得到6 幅22×22 的特征圖。
圖6 7 層結(jié)構(gòu)的動作識別CNN 框架
第四層(卷積層2):其處理方式與卷積層1 相同,但是卷積核不同,這里設(shè)置了12 個3×3 的卷積核,得到12 幅20×20 的特征圖。
第五層(池化層2):對卷積層2 輸出的特征圖進(jìn)行與池化層1 相同的處理,得到10×10 的特征圖。
第六層(全連接層):將池化層2 輸出的特征圖展開成一維向量。
第七層(分類器):采用深度學(xué)習(xí)中廣泛使用的Softmax 函數(shù)[13]對人體動作進(jìn)行分類,得到動作識別結(jié)果。
為了進(jìn)行性能對比,彩色圖像編碼的人體動作數(shù)據(jù)采用相同的識別框架,每一層的卷積核數(shù)目和卷積步長等參數(shù)均保持不變。對CNN 進(jìn)行訓(xùn)練時,對網(wǎng)絡(luò)參數(shù)利用梯度下降算法進(jìn)行優(yōu)化。學(xué)習(xí)速率不同,訓(xùn)練結(jié)果具有較大差異,本文根據(jù)反復(fù)實(shí)驗(yàn)將學(xué)習(xí)速率確定為α=0.3。
評價深度學(xué)習(xí)網(wǎng)絡(luò)模型的指標(biāo)很多,其中準(zhǔn)確率(accuracy)因其直觀性而得到了廣泛使用[14],它表示被正確分類的樣本數(shù)據(jù)比例。與此相反,錯誤率則表示被錯誤分類的樣本數(shù)據(jù)比例。顯然,錯誤率=1?準(zhǔn)確率,是網(wǎng)絡(luò)對樣本擬合程度的間接表示。由于樣本數(shù)據(jù)中一般都存在噪聲,因此擬合程度不宜設(shè)置得過高,否則將導(dǎo)致噪聲也被擬合,最終導(dǎo)致網(wǎng)絡(luò)過擬合。用 C表示樣本數(shù)量,可用式(3)計算準(zhǔn)確率:
式中,TP 即true positive,表示被分類為正又確實(shí)為正例的樣本數(shù)量;TN 即true negative,表示被分類為負(fù)又確實(shí)為負(fù)例的樣本數(shù)量。
另外一個常用的評價指標(biāo)是精確率(precision),表示被分類為正又確實(shí)為正例的樣本占所有正例的比例,采用式(4)計算:
式中,F(xiàn)P (false positive,假正)表示分類為正的負(fù)例。
與精確率相關(guān)的一個指標(biāo)是召回率(recall),表示真正的樣本被分類為正例的比例,其計算式為:
式中,F(xiàn)N (false negative,假負(fù))表示分類為負(fù)的正例。精確率和召回率比準(zhǔn)確率更適合評判深度學(xué)習(xí)網(wǎng)絡(luò)的性能。
另一個常用的深度學(xué)習(xí)網(wǎng)絡(luò)性能評價指標(biāo)是F1參數(shù),其計算方法如下:
由于 F1參數(shù)綜合了精確率和召回率的優(yōu)勢,本文主要采用 F1參數(shù)作為動作識別性能的評價指標(biāo)。
對每種編碼方法,采用如下步驟迭代500 次測試其性能:1)選取數(shù)據(jù):從整個數(shù)據(jù)集隨機(jī)選取約1/10 的樣本作為測試數(shù)據(jù),其他數(shù)據(jù)作為訓(xùn)練數(shù)據(jù);2)訓(xùn)練網(wǎng)絡(luò):對CNN 進(jìn)行訓(xùn)練,每訓(xùn)練25 次使用測試數(shù)據(jù)測試一次;3)得到結(jié)果:重復(fù)執(zhí)行步驟1)和2) 10 次,取其均值。
圖7 給出了Text 屬性數(shù)據(jù)在不同編碼方案下的錯誤率。Text 屬性數(shù)據(jù)集的動作總數(shù)為1 304組,從中隨機(jī)選取154 組作為測試數(shù)據(jù),剩下的作為訓(xùn)練數(shù)據(jù)。圖7a 為采用灰度圖像編碼的結(jié)果,可以看出,“之”字型編碼和回旋編碼的識別錯誤率相近,而平鋪編碼的識別錯誤率較高,其原因是平鋪編碼所成圖像十分相似,而回旋編碼和“之”字型編碼卻差異明顯。圖7b 為采用彩色圖像編碼的結(jié)果,可以看出,3 種編碼的識別錯誤率從低到高分別為“之”字編碼、回旋編碼和平鋪編碼。從圖7a 和圖7b 可知,各種編碼方式的識別錯誤率都隨著迭代次數(shù)的增加而逐漸減小,最后趨于穩(wěn)定;灰色圖像編碼的識別性能優(yōu)于彩色圖像編碼。
圖7 Text 屬性數(shù)據(jù)不同編碼方案的錯誤率
圖8 為Images 屬性數(shù)據(jù)集的實(shí)驗(yàn)結(jié)果。Images屬性數(shù)據(jù)集的動作總數(shù)為1 249 組,從中隨機(jī)選取149 組作為測試數(shù)據(jù),剩下的作為訓(xùn)練數(shù)據(jù)。從圖8可以得到與圖7 類似的結(jié)論;對比圖8 和圖7 可知,Images 屬性數(shù)據(jù)的識別錯誤率比Text 屬性數(shù)據(jù)稍低。
圖9 給出了Images+Text 屬性數(shù)據(jù)集的實(shí)驗(yàn)結(jié)果。Images+Text 屬性數(shù)據(jù)集的動作總數(shù)為1 248組,從中隨機(jī)選取148 組作為測試數(shù)據(jù),剩下的作為訓(xùn)練數(shù)據(jù)。從總體趨勢看,采用不同編碼方式的Images+Text 屬性數(shù)據(jù)的錯誤率及其變化趨勢與Text 屬性數(shù)據(jù)類似。Video 屬性數(shù)據(jù)以及Video+Text 屬性數(shù)據(jù)得到的結(jié)果與此類似,此處不再贅述。
綜上,灰色圖像編碼的性能優(yōu)于彩色圖像編碼;在灰色圖像編碼方式中,回旋編碼的識別錯誤率最低,收斂速度最快。因此,本文采用回旋灰色圖像編碼測試動作識別模型的性能。
圖8 采用不同編碼方案的Images 屬性數(shù)據(jù)錯誤率
圖9 采用不同編碼方案的Images+Text 屬性數(shù)據(jù)錯誤率
采用十折交叉驗(yàn)證法測試模型性能,步驟如下:1)預(yù)處理:將數(shù)據(jù)集等分為10 份;2)選取數(shù)據(jù):選取其中1 份作為測試集,其他的作為訓(xùn)練集;3)得到結(jié)果:記錄實(shí)驗(yàn)結(jié)果,然后重復(fù)步驟2)、3) 10 次,取10 次結(jié)果的均值。
采用兩種實(shí)驗(yàn)方案測試動作識別模型的性能,一種方案稱為單一屬性測試,其訓(xùn)練集和測試集都選擇相同屬性的數(shù)據(jù),比如都采用Text 屬性數(shù)據(jù);另一種方案稱為混合屬性測試,其訓(xùn)練集和測試集分別選擇不同屬性的數(shù)據(jù),比如訓(xùn)練集使用Text 屬性數(shù)據(jù),測試集使用Images 屬性數(shù)據(jù)。
單一屬性測試:使用 F1作為評判標(biāo)準(zhǔn),5 種屬性的數(shù)據(jù)各得到一個 F1值,如圖10 所示。其中,Metaphoric 表示6 個隱喻動作,Iconic 表示6 個標(biāo)準(zhǔn)動作,All 則表示所有動作(隱喻動作+標(biāo)準(zhǔn)動作)。如前所述,每個 F1值都是重復(fù)測試10 次得到的均值。
從圖10 可知,在單一屬性測試中,Video 屬性數(shù)據(jù)擁有最好的性能,Images 屬性數(shù)據(jù)緊隨其后,Text 屬性數(shù)據(jù)的性能最差;復(fù)合屬性數(shù)據(jù)比被復(fù)合的單一屬性數(shù)據(jù)好,Video+Text 屬性數(shù)據(jù)的F1值最高。
圖10 所有屬性數(shù)據(jù)測試10 次平均 F1值
混合屬性測試:針對所有動作、隱喻動作和標(biāo)準(zhǔn)動作,分別測試訓(xùn)練集屬性和測試集屬性的所有可能組合,其結(jié)果見圖11~圖13。
圖11 給出了全部動作數(shù)據(jù)的混合測試結(jié)果。從圖11 可以看出,相比單一屬性測試,混合屬性測試的 F1值有所下降,這與文獻(xiàn)[11]的結(jié)論相吻合。但是,如果訓(xùn)練集采用的是復(fù)合屬性數(shù)據(jù),并選擇復(fù)合屬性的任一成員屬性作為測試集,其 F1值與使用相同屬性數(shù)據(jù)測試的 F1值相當(dāng)甚至更高,反之,則并不理想。
圖11 全部動作數(shù)據(jù)混合測試10 次平均 F1值
圖12 隱喻動作數(shù)據(jù)混合測試10 次平均 F1值
圖13 標(biāo)準(zhǔn)動作數(shù)據(jù)混合測試10 次平均 F1值
圖12 給出了隱喻動作數(shù)據(jù)的混合測試結(jié)果,其 F1值的整體走勢與圖11 類似。不過,相對于全部動作,隱喻動作的 F1值普遍偏小,意味著隱喻動作識別難度更大。
圖13 給出了標(biāo)準(zhǔn)動作數(shù)據(jù)的混合測試結(jié)果,其結(jié)論與圖11 相同。不過,相對于全部動作,標(biāo)準(zhǔn)動作的 F1值整體偏大,意味著標(biāo)準(zhǔn)動作更易識別。
圖14 顯示了本文算法與文獻(xiàn)[12]、文獻(xiàn)[15]的性能對比。公平起見,各算法均采用相同屬性的數(shù)據(jù)。文獻(xiàn)[12]采用隨機(jī)森林法進(jìn)行訓(xùn)練和識別,其特征向量包括35 個關(guān)節(jié)角度、35 個關(guān)節(jié)角速度和20 個關(guān)節(jié)點(diǎn),共 35+35+20×3=130維。由于一組動作需用35 幀描述,因而特征向量共130 × 35 =4 550 維。文獻(xiàn)[15]旨在建立標(biāo)準(zhǔn)的人體動作模板,它先建立人體模板字典,再提取人體關(guān)節(jié)特征,最后利用稀疏字典編碼建立人體動作模板,進(jìn)而利用模板匹配的方式識別人體動作。從圖14 可以看出,本文算法的 F1值普遍大于0.8,遙遙領(lǐng)先于文獻(xiàn)[12],相比文獻(xiàn)[15]也有較大優(yōu)勢。
圖14 本文算法與文獻(xiàn)[12]和文獻(xiàn)[15]的識別性能對比
除了利用MSRC-12 數(shù)據(jù)集進(jìn)行性能測試之外,本文還在MSR Action3D 數(shù)據(jù)集上進(jìn)行了性能測試,以驗(yàn)證算法對不同數(shù)據(jù)集的普適性。本文算法在MSR Action3D 數(shù)據(jù)集(由567 組動作組成)上的平均識別準(zhǔn)確為76.6%,高于文獻(xiàn)[16]提出的Bag of 3D points 算法,其平均識別準(zhǔn)確率為74.7%。另外,本文還利用Kinect 2.0 自采了圖1 中的12 個動作各10 組,本文算法在自采數(shù)據(jù)集上的測試結(jié)果達(dá)到了100%的平均識別準(zhǔn)確率。這些結(jié)果充分說明,本文算法具有較強(qiáng)的場景適應(yīng)能力。
人體動作識別在新型人機(jī)交互等眾多領(lǐng)域具有廣闊的應(yīng)用前景。本文提出了一種基于卷積神經(jīng)網(wǎng)絡(luò)的精確人體動作識別算法,用以對Kinect 等傳感器采集的動作數(shù)據(jù)集進(jìn)行訓(xùn)練和識別。為了使用CNN 框架處理動作數(shù)據(jù),本文設(shè)計了平鋪編碼、回形編碼以及“之”字形編碼,這些編碼方法可將動作數(shù)據(jù)編碼成灰度圖像或彩色圖像。實(shí)驗(yàn)表明,本文所提出的人體動作識別方法具有較高的識別率和較強(qiáng)的泛化能力。接下來,將把本文算法應(yīng)用于工程領(lǐng)域,用以判斷特殊崗位的工作人員(比如煤礦井下的檢修工人或矸石挑選工人)是否執(zhí)行了違規(guī)操作,從而降低生產(chǎn)事故的發(fā)生率。