張 良,錢毅敏
(中國民航大學(xué)電子信息與自動化學(xué)院,天津 300300)
隨著計算機(jī)視覺技術(shù)的飛速發(fā)展,研究熱點(diǎn)逐漸轉(zhuǎn)向人體行為識別領(lǐng)域。目前,相關(guān)行為識別技術(shù)已經(jīng)廣泛應(yīng)用于監(jiān)控、視頻游戲、人機(jī)交互等領(lǐng)域。早期研究主要利用傳統(tǒng)光學(xué)信息、人體關(guān)鍵姿態(tài)[1]、剪影[2]、時空特征[3]等方法,而準(zhǔn)確識別所有動作仍充滿挑戰(zhàn)。新一代的深度相機(jī)(如微軟公司的Kinect 產(chǎn)品)不僅能實(shí)時提取彩色圖像,還可提取深度圖像和骨骼信息。如何更好地融合RGB-D 相機(jī)獲取的多模信息,成為行為識別領(lǐng)域新的突破點(diǎn)。
在深度圖像研究方法中:Yang 等[4]將深度圖像序列投影得到深度運(yùn)動圖(DMM,depth motion map),對其提取梯度直方圖;Rahmani 等[5]采用方向主成分直方圖(HOPC,histogram of oriented principal components)對動作點(diǎn)云數(shù)據(jù)進(jìn)行描述,從局部幾何形狀來刻畫動作,忽略各點(diǎn)間的全局約束,對局部自遮擋也具有較好的魯棒性;Liu 等[6]將深度圖像生成運(yùn)動歷史點(diǎn)云(MHPC,motion history point cloud),保留動作空間與時序信息,以此實(shí)現(xiàn)動作的全局表示,但對動作類內(nèi)差異容忍性不足?;诠趋佬畔⒆R別的方法:Xia 等[7]提出通過關(guān)節(jié)點(diǎn)位置直方圖(HOJ3D,histogram of 3D joint location)對人體動作進(jìn)行表示,采用離散隱馬爾科夫模型進(jìn)行分類;Carbonera 等[8]提出基于分組的骨骼點(diǎn)幀間相對位移特征、幀內(nèi)相對距離特征的方法,并獲得較高的識別率。在融合多種數(shù)據(jù)進(jìn)行識別方面,毛峽等[9]提出一種基于RGB 和骨骼信息的多模態(tài)人體行為識別框架。
目前,基于深度圖像和骨骼信息進(jìn)行人體動作識別的研究較少。針對已有方法的不足,提出使用運(yùn)動歷史點(diǎn)云的全局特征融合人體動作的骨骼特征,構(gòu)建一種基于深度圖像和骨骼信息的人體動作識別方法。首先,使用深度圖像序列生成運(yùn)動歷史點(diǎn)云,用全局特征替代局部特征,同時從深度相機(jī)得到的骨骼序列幀分組提取特征并聚類,然后使用局部特征聚合描述符(VLAD,vector of locally aggregated descriptors)算法[10]生成骨骼點(diǎn)特征。針對人體動作的兩組特征,使用支持向量機(jī)(SVM)進(jìn)行特征融合,在相似動作上的識別準(zhǔn)確性得到有效提高,且減小了噪聲數(shù)據(jù)對分類結(jié)果的影響,其動作識別框架如圖1所示。
圖1 基于深度圖像和骨骼信息的動作識別框架Fig.1 Action recognition framework based on depth image and skeleton information
傳統(tǒng)方法對深度圖像提取特征一般是將深度圖像序列投影到不同平面,并在不同平面對圖像提取特征。而文中對深度圖像的處理是先將深度圖像序列生成運(yùn)動歷史點(diǎn)云數(shù)據(jù)并提取全局特征。圖2 為UTKinect-Action3D 數(shù)據(jù)集[11]中“揮手”動作的示意圖。
圖2 RGB 圖像、深度圖像和骨骼信息示意圖Fig.2 RGB image,depth image and skeleton diagram
將預(yù)處理后的每幀二維深度圖像坐標(biāo)系轉(zhuǎn)換到三維相機(jī)坐標(biāo)系下(即運(yùn)動歷史點(diǎn)云),其坐標(biāo)轉(zhuǎn)換公式如下
式中:fx,fy為相機(jī)在x,y兩軸上的焦距;cx,cy為相機(jī)的光圈中心;s為深度圖縮放因子;(u,v)為深度圖像的像素坐標(biāo);d為深度圖像的距離信息。
深度圖像序列生成運(yùn)動歷史點(diǎn)云實(shí)現(xiàn)1 個動作樣本的深度圖序列,壓縮為1 個包含空間與時間信息的點(diǎn)的集合。運(yùn)動歷史點(diǎn)云可表示為M={P1,P2,…,Pn},點(diǎn)云中任一點(diǎn)的坐標(biāo)定義為Pj(x,y,z,h),j =1,2,…,n,其中:x、y、z為三維相機(jī)坐標(biāo)系下點(diǎn)的坐標(biāo),用來記錄動作發(fā)生的位置,h為深度圖像的幀號,用來記錄該點(diǎn)發(fā)生的時間。揮手運(yùn)動歷史點(diǎn)云的生成流程如圖3所示。
圖3 MHPC 生成流程Fig.3 MHPC generation flow
運(yùn)動歷史點(diǎn)云是將每幀深度圖像生成的點(diǎn)云合并起來,數(shù)據(jù)量十分龐大,直接提取特征會消耗大量計算資源,因此,采用濾波器[12]對運(yùn)動歷史點(diǎn)云進(jìn)行下采樣,降低運(yùn)動歷史點(diǎn)云的密度,加快運(yùn)算速度,既保持原有運(yùn)動歷史點(diǎn)云的形狀特征和周圍點(diǎn)的信息特征而不影響其動作特征。
視點(diǎn)特征直方圖(VFH,view feature histogram)[13]特征是對原有Liu 等[6]提出的局部特征方法的改進(jìn),通過直接提取運(yùn)動歷史點(diǎn)云的全局特征,使特征對行為識別具有更好的動作類內(nèi)差異容忍度。設(shè)置不同的采樣半徑r進(jìn)行提取,以此得到最佳的全局特征。圖4 顯示了得到的VFH 動作特征,VFH 具體實(shí)現(xiàn)步驟如下。
圖4 VFH 動作特征Fig.4 Histogram of VFH action feature
1)在其中一點(diǎn)上定義一個固定的局部坐標(biāo)系,如圖5所示,其中:u、v、w 為定義的3 個坐標(biāo)軸方向向量,Pi和Pj為運(yùn)動歷史點(diǎn)云上的兩點(diǎn);ni和nj為Pi和Pj對應(yīng)的法向量。
圖5 一個固定的局部坐標(biāo)系Fig.5 One fixed local coordinate system
2)計算運(yùn)動歷史點(diǎn)云中兩點(diǎn)之間的3 個幾何屬性不變量如下
式中:α 為向量v 和向量nj的點(diǎn)積,用來表示統(tǒng)計視點(diǎn)方向與每個法線之間的幾何屬性;φ 為向量u 與由Pi指向Pj的向量的點(diǎn)積,用來表示中心點(diǎn)的視點(diǎn)方向和每個點(diǎn)對應(yīng)法線間的幾何屬性;θ 為向量w·nj與u·nj之間的角度。
3)通過這3 個幾何屬性不變量描述整個運(yùn)動歷史點(diǎn)云的VFH 動作特征。
深度相機(jī)可實(shí)時提取20 個人體骨骼點(diǎn)坐標(biāo),分別為頭、肩中心、脊柱、髖中心、右肩、右肘、右腕、右手、右髖、右膝、右踝、右腳、左肩、左肘、左腕、左手、左髖、左膝、左踝、左腳,具體骨骼點(diǎn)分布[14]如圖6所示。
圖6 人體骨骼點(diǎn)分布圖Fig.6 Distribution of human skeleton point
為使骨骼序列對視點(diǎn)不變,需要將Camera 坐標(biāo)轉(zhuǎn)換成真實(shí)世界場景坐標(biāo)。用表示骨骼點(diǎn)i第t動作幀在Camera 坐標(biāo)系下的三維坐標(biāo)系,表示骨骼點(diǎn)i第t動作幀在真實(shí)世界場景坐標(biāo)系。Camera 坐標(biāo)系到真實(shí)世界場景坐標(biāo)系的轉(zhuǎn)換方式如下
式中
θx,θy,θz表示攝像頭在x、y、z軸的偏轉(zhuǎn)角度;Δx,Δy,Δz表示真實(shí)世界場景坐標(biāo)系與Camera 坐標(biāo)系原點(diǎn)的偏移量。
將骨骼點(diǎn)按表1 和表2 進(jìn)行分組[15]。
表1 幀間相對位移特征分組Tab.1 Feature grouping of inter-frame relative displacement
表2 幀內(nèi)相對距離特征分組Tab.2 Feature grouping of inner-frame relative distance
表1 中,特征f1、f2、f3分別由5 個骨骼點(diǎn)的坐標(biāo)位移差值作為相對位移特征,代表特定身體部位的運(yùn)動。根據(jù)式(4)提取幀間骨骼點(diǎn)相對位移特征,即
式中:s為動作幀序號;τ 為整個動作最后的動作幀數(shù);表示骨骼點(diǎn)i第s動作幀的坐標(biāo);ΔT為第s+1動作幀和第s-1 動作幀之間的時間間隔。
表2 中,特征f4、f5、f6、f7分別由連接兩骨骼點(diǎn)間的坐標(biāo)位置差值構(gòu)成,描述了人的身體位置距離的相關(guān)信息。根據(jù)式(5)提取幀內(nèi)兩骨骼點(diǎn)的相對距離特征,即
對于每個骨骼動作序列幀,通過局部特征提取方法來提取每組的局部特征,局部特征集合由fn,s表示,n={1,2,…,7},s代表第s動作幀。該階段的目標(biāo)是構(gòu)建固定大小的特征,骨骼特征構(gòu)建步驟如下。
1)將得到的每組骨骼點(diǎn)特征集合進(jìn)行C組k均值(k-means)運(yùn)算,將每組特征劃分為k類,用{μn,c,m}表示得到的C組k個中心,其中:m= 1,2,…,k;c=1,2,…,C。
2)將每個局部特征量化到最近鄰的字典,即
3)計算每個局部特征fn,s與最近鄰字典的殘差,用vn,c,m表示動作中屬于最近鄰字典中的所有局部特征與μn,c,m殘差的累計和,其計算式表示如下
4)將所有字典上的殘差向量進(jìn)行串聯(lián),將串聯(lián)得到VLAD 特征描述符向量作為骨骼特征向量表示如下
將兩個通道得到點(diǎn)云特征和骨骼特征分別送入兩個SVM 分類器中訓(xùn)練,通過參數(shù)尋優(yōu)方式得到各自最優(yōu)的分類器模型。采用SVM 進(jìn)行訓(xùn)練和分類,易受噪聲影響[16],因此,使用SVM 輸出每個動作類別的概率,通過兩組通道的概率融合解決噪聲對分類結(jié)果的影響,提高人體動作識別的準(zhǔn)確率。
圖7 為SVM 試圖在兩類中找出1 個平面分隔,即
圖7 SVM 二分類示意圖Fig.7 SVM bi-classification diagram
為了SVM 能夠輸出概率,使用擠壓函數(shù)將f(x)映射到[0,1],得到每種標(biāo)簽的輸出概率如下
測試時SVM 分類器輸出的是每個動作類別標(biāo)簽的準(zhǔn)確率并將其歸一化,其概率向量yq=[y1…yk…yC],其中:C為人體動作樣本的動作類別總數(shù);q為通道序號,q∈{1,2},yk∈[0,1]。對兩通道得到的各自概率向量進(jìn)行加權(quán)相加,得到最后總的概率向量,然后取概率向量中最大值所在的類別作為動作分類識別的類別,從而實(shí)現(xiàn)動作識別,其識別式表示為
式中:μq為權(quán)值;yq為SVM 輸出的概率向量;Q代表通道數(shù);y*為加權(quán)相加后準(zhǔn)確率最大值所在的類別。
該特征融合方法具有以下優(yōu)勢。
1)從運(yùn)動歷史點(diǎn)云所提取的點(diǎn)云特征為形狀特征,從骨骼信息所提取出的特征為骨骼距離特征和位移特征。兩通道的特征相互補(bǔ)充,使得特征信息更為豐富。
2)使用深度圖像序列生成一個整體,以此實(shí)現(xiàn)動作的全局表示,解決了遮擋和視角變化帶來的影響,而骨骼信息通道使用骨骼坐標(biāo)轉(zhuǎn)換來解決視角與遮擋影響。兩算法相互補(bǔ)充,使對于視角變化和遮擋帶來的影響大大減小。
3)動作識別采用SVM 分類器的概率融合算法實(shí)現(xiàn),與其他分類器相比,減小了噪聲因素對分類結(jié)果的影響,進(jìn)一步優(yōu)化分類效果。
實(shí)驗(yàn)環(huán)境:聯(lián)想M4390,CPU 3.2 GHz,內(nèi)存6 G。Visual Studio 2012,Matlab R2016b。在MSR-Action3D和UTKinect-Action3D 數(shù)據(jù)集[17]上進(jìn)行實(shí)驗(yàn)。MSR Action3D 數(shù)據(jù)集一共有567 個動作樣本,20 個動作類別,每個動作類別由10 個演員執(zhí)行2~3 次。UTKinect-Action3D 數(shù)據(jù)集是得克薩斯州大學(xué)奧斯汀分校建立的數(shù)據(jù)集,由10 個人執(zhí)行10 個動作:步行、坐下、站立、拿起、攜帶、投擲、推動、拉、揮手、拍手。
本研究僅使用MSR-Action3D 數(shù)據(jù)集進(jìn)行參數(shù)優(yōu)化,在UTKinect-Action3D 數(shù)據(jù)集上使用相同的參數(shù)設(shè)置。使用不同的參數(shù)設(shè)置進(jìn)行多次實(shí)驗(yàn),選取實(shí)驗(yàn)動作識別率最高的參數(shù)組合作為最終實(shí)驗(yàn)參數(shù)。設(shè)計的實(shí)驗(yàn)參數(shù)有采樣半徑r和加權(quán)系數(shù)μq。
對采樣后的運(yùn)動歷史點(diǎn)云提取特征時需要設(shè)置不同的采樣半徑,不同的采樣半徑r對識別率結(jié)果有直接影響,如圖8所示。隨著r的增加,識別率整體呈現(xiàn)上升趨勢,當(dāng)采樣半徑達(dá)到0.03 時,識別率達(dá)到最高值,之后隨半徑增加而減小,由此可知,r=0.03 時算法識別率最高。
圖8 不同采樣半徑下的識別率Fig.8 Recognition rate under different sampling radii
將得到的點(diǎn)云特征和骨骼特征進(jìn)行訓(xùn)練,得到兩個分類器,對分類器分配不同權(quán)值,步長設(shè)為0.1,依次進(jìn)行動作識別驗(yàn)證。通過表3 可知,對5 組不同權(quán)重的數(shù)據(jù)進(jìn)行分析,當(dāng)μ1=0.2,μ2=0.8 時,動作識別率達(dá)到最高,比μ1=0.5,μ2=0.5 下的識別率高4.29%。
表3 不同權(quán)重下的識別率Tab.3 Recognition rate under different weights
MSR-Action3D 數(shù)據(jù)集有兩種實(shí)驗(yàn)設(shè)置。實(shí)驗(yàn)設(shè)置1 分為3 個子集(AS1、AS2、AS3),每個子集中包含8 個類別,如表4所示,每個動作子集有3 種測試方式:測試方法1 將每個子集的1/3 樣本用來訓(xùn)練,其他的2/3 樣本用來測試;測試方法2 將每個子集2/3 樣本用來訓(xùn)練,其他的1/3 樣本用來測試;測試方法3 是選用不同人之間的動作進(jìn)行訓(xùn)練測試。實(shí)驗(yàn)設(shè)置2 則是將測試方法3 適用于整個動作集。
表4 MSR-Action3D 數(shù)據(jù)集的動作子集分類表Tab.4 Action subset classification table of MSR-Action3D data set
實(shí)驗(yàn)設(shè)置1 下的各項(xiàng)子集的識別率如表5所示。通過與當(dāng)前主流方法[4,7,18-19]進(jìn)行比較,按3 種不同測試方法在3 個動作子集上進(jìn)行測試,特征融合方法的識別率在多數(shù)情況下優(yōu)于表5 中所提及的方法,每種測試方法識別率均值高于其他方法,總的平均識別率達(dá)96.8%。
表5 不同方法在實(shí)驗(yàn)設(shè)置1 時的識別率Tab.5 Recognition rate of different methods under experiment setting 1 %
對單一采用點(diǎn)云特征、骨骼特征與融合后的3 種情況下的平均識別率進(jìn)行比較,如圖9所示。特征融合方法比單一特征在AS1、AS2、AS3 這3 組下的識別率分別至少提高了2.9%、2.1%和0.5%,表明通過加權(quán)概率分類器進(jìn)行特征融合方法的有效性。
圖9 單一特征及融合后的識別率Fig.9 Recognition rate of different features before and after fusion
表6 為實(shí)驗(yàn)設(shè)置2 下的實(shí)驗(yàn)結(jié)果。實(shí)驗(yàn)設(shè)置2 包含更多的樣本及更多動作,且有不同人之間進(jìn)行訓(xùn)練測試,由于特征融合方法使用深度圖像和骨骼信息,識別率達(dá)到了95.60%,優(yōu)于其他方法[4-5,20-21]。
表6 不同方法在實(shí)驗(yàn)設(shè)置2 時的識別率Tab.6 Comparison of different methods under experiment setting 2
圖10 給出了MSR-Action3D 數(shù)據(jù)集在實(shí)驗(yàn)設(shè)置2 下的混淆矩陣,矩陣中的數(shù)字代表動作概率。從圖10 可以看出,提出的特征融合方法對大多數(shù)動作達(dá)到了100%的識別率,只有在少數(shù)動作識別中發(fā)生錯誤,如手抓、沖拳、高拋等。與Liu[6]提出方法相比,此種方法對類內(nèi)差異的容忍度更高。
圖10 MSR-Action3D 的混淆矩陣Fig.10 Confusion matrix of MSR-Action3D
UTKinect-Action3D 數(shù)據(jù)集的實(shí)驗(yàn)設(shè)置:訓(xùn)練數(shù)據(jù)為其他9 個人的動作樣本,測試數(shù)據(jù)為某1 個錄制人的動作樣本,測試錄制人體動作樣本的準(zhǔn)確性。將所有人的動作樣本既充當(dāng)訓(xùn)練數(shù)據(jù)又充當(dāng)測試數(shù)據(jù),最后得到平均的動作識別率。從表7 可看出,特征融合方法的識別率最高,達(dá)到98.00%,明顯高于其他方法[7,22-23]。
表7 不同方法在UTKinect-Action3D 數(shù)據(jù)集下的識別率Tab.7 Recognition results of various different methods with UTKinect-Action3D data set %
利用深度圖像序列生成運(yùn)動歷史點(diǎn)云并提取全局特征,簡化了特征提取流程,同時融合骨骼特征,減少了噪聲對單個模型的影響,獲得更好的類內(nèi)差異容忍度。特征融合方法在MSR-Action3D 和UTKinect-Action3D 兩個數(shù)據(jù)集上的識別率均比文中涉及的其他方法有較為明顯的提高,證明了該方法的有效性。下一步的研究方向是提取更多更加有效的點(diǎn)云特征,嘗試識別多種復(fù)雜環(huán)境下的動作。