趙曉麗,田麗華,李 晨
ZHAO Xiaoli,TIAN Lihua,LI Chen
西安交通大學 軟件學院,西安 710049
School of Software Engineering,Xi’an Jiaotong University,Xi’an 710049,China
人體動作行為識別是近年來計算機視覺領域的一個研究熱點,其廣泛應用于人機智能交互、虛擬現實和視頻監控等領域[1]。在以往的研究中,往往通過從可穿戴傳感器或視頻中采集的動作圖來進行人體動作識別,過程過于繁瑣,且受環境和噪音影響較大。但隨著低成本、易操作的Kinect設備的出現,基于深度數據的動作識別受到了研究人員的歡迎。利用Kinect設備采集的人體動作信息不僅對環境中的顏色、光照和紋理不敏感,而且可以實時獲取人體深度圖像。利用文獻[2]中的方法可以快速準確的從深度圖像中評估人體骨骼關節點的空間位置,相對于傳統的視頻具有視角無關系。基于深度圖像的行為識別對噪聲和遮擋更具有魯棒性[3],動作識別主要可分為數據采集與預處理、特征提取、特征處理、分類識別等幾個步驟,其中特征提取和處理最為重要。Yang等[3]通過聚集深度序列中的曲面法線構建特征向量,然后在時空網格上分別進行稀疏編碼和池化來構建可區分性強的特征描述子(SNV)。文獻[4]提出了HON4D描述子,首先用投影向量量化4D空間,然后將動作序列分割成時空方塊,分塊統計法線方向分布直方圖作為最終特征向量。文獻[5]通過提取點云數據中的主成分向量,然后投影到以正二十面體的頂點向量所確定的方向上,來構建方向主成分直方圖(HOPC),對速度和角度的變化具有很好的魯棒性。
分類識別目前有基于模板匹配、基于統計、基于語義的方法,以及一些其他分類方法。基于模板匹配的方法主要有動態時間規整法[6]、動態規劃法[7]和模板匹配法等。動態時間規整和動態規劃法可以消除動作運動速度不一致對識別的影響;模板匹配法適合于簡單的動作識別,由于個體對動作理解的差異,很難對動作定義一個標準的模板。基于統計的方法主要有隱馬爾科夫模型(HMM)[8]和動態貝葉斯模型(DBN)[9],識別效果較好,但往往有很多特征參數需要選取,參數選取的好壞直接影響識別結果。基于語義識別的方法更目前僅能對簡單語義進行識別,無法應用于復雜場景。除此之外,近年來支持向量機(SVM)[10]、卷積神經網絡(CNN)[11]在動作分類中應用廣泛。
支持向量機(SVM)分類可拓展到多分類,是目前最普遍使用的分類方法。Chang等[12]提出的LIBSVM分類工具可簡單有效的進行模式識別與回歸,但訓練速度較慢。Fan等[13]提出的LIBLINEAR分類器主要為大規模數據而設計的線性模型,采用線性核,計算速度更快。由于粒子群算法原理簡單且易于求值,逐漸被用來優化SVM分類器。文獻[14]提出的基于檢測策略的骨干粒子群算法,適應度函數使用彈性網絡估計方法,能使算法更加穩定且加速收斂。文獻[15]提出的借鑒復雜適應度系統(CAS)理論,將混沌和自適應引入到基本PSO中,形成一種雙重自適應PSO算法,解決算法易陷入局部最優等問題。
通過對文獻[3-4]所提出的方法進行分析,針對其特征冗余、訓練速度慢,以及識別率不高等問題提出了基于稀疏編碼局部時空描述子的動作識別方法。首先對Kinect設備采集的深度圖像進行法線提取,同時利用基于能量的自適應時空金字塔對動作序列進行時空分塊。然后局部時空法線,減少冗余信息,得到顯著特征向量,即局部時空描述子。隨后將法線特征進行稀疏編碼[16]得到一組字典向量來重構樣本數據。對于每一塊時空的特征向量應用已求得的字典來稀疏編碼和池化,降低特征維度;最后利用sPSO優化的SVM分類器,可以得到更符合樣本數據的模型。
法線是始終垂直于某平面的虛線,用來描述幾何體表面的方向。圖像法線特征能夠捕獲豐富的信息,具有很好的辨別性,能更好地完成動作識別任務。
在深度序列中,3D空間可以拓展成一個混合4D空間。R3→R1:z=f(x,y,t),其中(x,y,t)是第t幀點云的空間坐標。每個點云(x,y,t)滿足S(x,y,t,z)=f(x,y,t)-z=0;4D空間表面S的法線特征可以由公式(1)求得,每個像素點應有一條法線,如圖1為法線示意圖。

圖1 法線示意圖

4D法線相對于傳統梯度方向更有能力獲取豐富且可區分性強的信息[4]。
考慮到每幀特征之間具有一定的時空關系,因此通過時空金字塔進行特征聚集。時空金字塔不僅能夠捕獲動作序列的空間結構也能獲得動作序列的時間信息。
為獲取空間維度上的信息,將每一幀分為nH×nW塊;為獲取時間維度的信息,將整個動作分為T級;最終每個動作序列將分成nH×nW×(2T-1)塊。本文在時間維度上使用3級金字塔:{t0t4},{t0t2,t2t4},{t0t1,t2t3,t3t4},因此時空金字塔共劃分成了nH×nW×7塊。圖2為3級時空金字塔在時間維度上的示意圖。

圖2 時空金字塔示意圖(3級共分為7塊)
時空金字塔的第1級表示動作的整體特征,第2級和第3級分別代表了動作不同部分的局部特征。時空金字塔加入了動作的空間結構,可以顯著提升不同類型動作之間的區分度,從而提升分類的準確性和魯棒性。
稀疏編碼是一種無監督學習方法,用來尋找一組字典向量來重構樣本數據。白化后的樣本數據P=(p1,p2,…,pN)∈RM×N,其中 Pi代表每幀動作的特征值。用公式(2)來獲得字典D和相關系數:

其中,字典 D∈RM×K,是字典D中的虛擬單詞;αi∈RM×N是稀疏分解系數;λ是正則系數。
由Elberhart和Kennedy最早提出的粒子群優化算法(bPSO)[17],系統初始化為一組隨機解,通過迭代搜尋最優值[18],算法公式如下:

為了提高粒子群跳出局部極值的能力,Shi等[19]對公式(3)添加了慣性因子ω:

文獻[20]證明了粒子群的進化與速度無關。假設種群中除第i個粒子外其余粒子保持不動,可以省略下標i;假設粒子群的維數為一維,則可以省略下標d,再為便于理解,將式中的變量符號移到變量符后的括號中,則式(4)和(5)可以變為:

式(8)是不含速度項的經典二階微分方程(假設粒子的位置移動為連續過程)[20]。綜上所述,不含速度項的粒子群公式為:

sPSO算法可以沒有粒子速度的概念,避免了設定參數[-vmax,vmax]而影響粒子的收斂速度和收斂精度[18],適用于算法優化、參數尋優等情況。
本文利用sPSO來尋求SVM中懲罰系數C的最優值。簡化粒子群算法sPSO的實現步驟為:
(1)初始化粒子群相關參數。種群大小為M,每個粒子初始位置x,慣性因子ω,加速常數c1、c2,局部最優 pid和全局最優 pgd。
(2)計算每個粒子的適應度值。
(3)每個粒子的適應度值分別與個體最優 pid比較,取最優的一個。
(4)用每個粒子的適應度值分別與全局最優 pgd比較,取最優的一個。
(5)根據公式(9)更新粒子的位置。
(6)滿足結束條件(達到最大迭代次數N或在誤差范圍內),則退出;否則返回(2)。
本文在法線的基礎上,局部聚集法線得到時空局部描述子。為提取時間和空間上動作序列的相關信息,使用基于能量的自適應時空金字塔對動作進行分塊。為了減少冗余的法線信息,對提取到的特征先稀疏編碼后池化。最終送入sPSO優化的SVM分類器進行分類。總體的算法流程圖3所示。

圖3 算法流程圖
文獻[3]中使用基于時空的描述子,將點云lr×lc×lt鄰域串聯起來組成lr×lc×lt×3維鄰域法線,但卻包含大量重復信息。文獻[4]提取的HON4D描述子在時空中統計法線方向直方圖,雖然提取出了一定的顯著特征,但卻部分丟失了曲面方向的信息。
為了減少鄰域法線重復信息又不至于丟失顯著性特征,提高算法的魯棒性,若先將每個動作序列分成nH×nW×(2T-1)塊,再將每塊均分為若干塊求每塊法線均值后串聯起來作為最終特征,雖有效降低了特征維度,但無法足夠準確地表達運動特征。若將每個點云鄰域lr×lc×lt中的法線平均起來表征中心點云,雖去除了部分噪聲對動作序列的影響,但仍無法提取出顯著性特征。
因人體動作是在時間軸上連續運動的空間序列,故考慮聚集行、列、幀平面的法線表達運動特征,行、列為提取空間維度上的運動特征,幀即為時間維度上的運動表征,最終應用局部時空描述子來進行特征提取。
對于每個點云,在鄰域lr×lc×lt中分別聚集過中心點的行、列、幀平面的法線,得到9維法線特征。在4D表面中,只有法線的方向是與圖像表面形狀息息相關的。對于lr×lc×lt組成的局部鄰域R,行聚集法線由公式(10)可得:

公式中的[]表示向上取整。混合局部鄰域法線P由行、列、幀平均法線串聯而來,即

nly、nlt的特征同nlx。所有點云平均法線的串聯即每一幀的特征描述子P,即

圖4為3×3×3局部時空描述子示意圖,分別聚集藍、紫、黃3個平面內的法線后串聯起來,即為塊中心點的局部時空描述子。

圖4 局部時空描述子提取示意圖
在對動作進行分類前,為了提高分類的準確性和魯棒性,本文提出自適應時空金字塔即將動作序列在時間和空間維度上分塊,對塊內法線進行進一步的處理,以達到更好的識別結果。
在空間維度上,首先對每幀姿態提取出包含人體動作的最小區域,消除無動作背景的影響,然后將每幀動作分為nH×nW塊。在時間維度上劃分金字塔時,由于不同的動作被記錄的速度和運動速度都會直接導致動作幀序列的不同,若時間軸上直接平均分塊會導致一定的差異。為了消除這些差異,用累加的運動能量來構建能量曲線,能量曲線在一定程度上反映了人體動作姿態的變化以及速度的快慢。
為了獲取運動能量,本文用了一個簡單有效的方法來移除靜態幀。假設Fi-1和Fi是相鄰的兩幀,則運動能量的公式由公式(13)獲取:

其中,ε表示去除噪音的閾值;sum()·返回幀差值的非零元素總數;第i幀的運動能量即為第1幀到第i幀的能量疊加。
獲取到的運動能量一般為105級別的數值,用式(14)歸一化到[0,1]區間,歸一化后最接近1/n的即為n分的幀節點。

其中,T為動作序列的長度減1。如圖5為使用能量分塊與普通分塊對比圖。

圖5 使用能量分塊與普通分塊對比
圖5上圖為直接均分示意圖,分塊區間為[1,11,23,34,45];下圖為使用運動能量分塊示意圖,分塊區間為[1,27 34,39,45]。由圖可以看出,前10幀幾乎處于靜止狀態,而35~40幀運動變化較大,使用運動能量能夠根據動作變化情況更加均勻的分塊,不受運動速度或記錄速度等的影響。
池化操作不僅能提取出特征中可區分性強的特征,同時也可降低圖像特征的維數。池化操作分為平均池化和最大化池化兩種。對于每一個時空網格,在空間上應用平均池化:

其中,uk(t)代表第k個虛擬單詞在第t幀的差分向量。
在時間上應用最大化池化:

其中,uk,i代表第k個虛擬單詞向量中相對應第i個值。向量就是一個時空網格的特征。最后,將時空網格的特征向量串聯起來即為最終特征向量。
SVM中懲罰系數C代表的是在線性不可分的情況下,對分類錯誤的懲罰程度,C值過大容易造成過擬合,C值過小容易造成欠擬合。為了獲得SVM中的最優懲罰系數C,利用簡化粒子群算法(sPSO)進行迭代求取。傳統PSO算法易陷入局部極值且收斂速度慢,sPSO算法消除了粒子速度的影響,避免了速度參數對粒子的收斂速度和收斂精度的影響。在利用sPSO求解最優懲罰系數C時,初始設置c1=1.5,c2=1.7,種群規模M=20,慣性因子w=1,由于訓練樣本數量龐大,為了減少時間成本,設置最大迭代次數為N=200或誤差范圍在10-3內。因訓練數據維數較高,故求解過程中的模型訓練使用LIBLINEAR工具箱。使用粒子群優化懲罰系數增加的時間復雜度為O(MN),由表2和表6可看出,雖然求取最優懲罰系數的過程雖然提升了運算量,但卻提升了大于1%的識別率。經過實驗對分分析求得,對于MSRAction3D和MSRGesture3D數據集的最優懲罰系數為0.3~0.7。
為了驗證本文提出的基于稀疏編碼局部時空描述子的識別算法的魯棒性,分別在公共數據集MSRAction3D和MSRGesture3D上進行了測試。兩個深度序列數據集部分動作如圖6和圖7所示。

圖6 MSRAction3D中high arm wave深度圖像

圖7 MSRGesture3D中畫Z深度圖像
MSRAction3D數據集[21]是用Kinect設備獲取到的動作幀的深度序列,包含20個動作:“high arm wave”“horizontal arm wave”“hammer”“hand catch”“forward punch”“high throw”“draw x”“draw tick”“draw circle”“hand clap”“two hand wave”“side boxing”“bend”“forwardkick”“sidekick”“jogging”“tennisswing”“tennis serve”“golf swing”“pick up&throw”,每個動作分別由10個人做2~3次。該數據集的識別難度在于其中的很多動作很相似。
MSRGesture3D數據集[22]是由Kinect設備獲取手勢的深度圖像,它包含了被ASL定義的12個手語動作:“bathroom”“blue”“finish”“green”“hungry”“milk”“past”“pig”“store”“where”“j”“z”,每個動作分別由 10 個人做2~3次。該數據集的挑戰主要是自遮擋的問題。
在MSRAction3D數據集上,第1、3、5、7、9個人的動作作為訓練數據,第2、4、6、8、10個人的動作作為測試數據,混淆矩陣如圖8所示。在兩個數據集的實驗中式(2)的正則系數λ取0.15,式(13)的能量閾值ε取100。
從圖8可以看出,20個動作里有15個動作的識別率可達100%,而誤識別則出現在了比較相似的動作上,例如high throw和hand catch。
如圖9為在MSRAction3D數據集上字典數量與識別率的關系。圖9上圖為字典數量在10~100以10為梯度的字典數量與識別率的關系;下圖則為100~400以100為梯度的字典數量與識別率的關系。由圖可以看出,當字典數量設為100的時候識別精度最高。
表1為字典大小設置為100時MSRAction3D數據集中時空網格大小和識別率的關系,可以看出時空網格并設置為5×5×5最為合適。

表1 MSRAction3D中時空網格大小和識別率的關系
表2為僅使用sPSO優化、僅使用能量分塊優化和sPSO+能量分塊優化后與優化前的識別率對比。可以看出,單獨使用sPSO算法尋求最優懲罰系數后,算法精度提高了1.09%。單獨使用運動能量分塊能夠更加精準地分割動作序列,算法精度提高了1.46%。sPSO和能量分塊優化后,算法精度提高了2.19%

表2 MSRAction3D中優化前后對比
將本文提出的識別方法與其他人體行為識別方法相對比,平均識別率的對比如表3所示。

表3 在MSRAction3D上的識別率比較結果
在MSRGesture3D數據集上,第1、3、5、7、9個人的動作作為訓練數據,第2、4、6、8、10個人的動作作為測試數據,混淆矩陣如圖10所示。

圖10 MSRGesture3D混淆矩陣
從圖10可以看出,在12個動作中有8個動作的識別率達到了100%,同樣的,Z和Pig動作在手語中十分相似,出現了誤識別的情況。
如圖11為MSRGesture3D數據集字典數量與識別率的關系,由圖可以看出,當字典數量設為20的時候識別精度最高。
表4為字典大小設置為20時,MSRGesture3D數據集中時空網格大小和識別率的關系,可以看出時空網格并設置為3×3×3最為合適。

圖11 MSRGesture3D字典數量與識別率

表4 MSRGesture3D中時空網格大小和識別率的關系
將本文提出的識別方法與其他手勢動作識別方法,平均識別率的對比如表5所示。

表5 MSRGesture3D上的識別率比較結果
實驗所用平臺為Intel?E5-2609處理器,CPU@2.5 GHz,128 GB內存的Win7 64位操作系統,開發工具為MATLAB R 2017b。平均每幀運行時間,如表6所示。

表6 平均每幀運行時間s
本文提出的方法從特征維度上相對于SNV降了9倍,在MSRAction3D數據集上平均每幀的處理速度約提高了5倍,而在MSRGesture3D數據集上約提速了2倍。
為解決已有算法特征維數過高導致訓練速度較慢以及識別率不高等問題,本文提出基于稀疏編碼局部時空描述子的動作識別方法,在時空維度上聚集提取到的法線,利用稀疏編碼求取字典來重構數據。為了能提取更加顯著的特征,提出基于運動能量的自適應時空金字塔,對動作分塊;然后對分塊后的動作分別池化降維,得到最終特征送入sPSO優化后的SVM分類器分類。通過在MSRAction3D和MSRGesture3D數據集上實驗,結果驗證了本文提出的識別方法具有很好的識別率和魯棒性。
參考文獻:
[1]李瑞峰,王亮亮,王珂.人體動作行為識別研究綜述[J].模式識別與人工智能,2014,27(1):35-48.
[2]Shotton J,Kipman A,Kipman A,et al.Real-time human pose recognition in parts from single depth images[J].Communications of the ACM,2013,56(1):116-124.
[3]Yang X,Tian Y L.Super normal vector for activity recognition using depth sequences[C]//Proceedings of IEEE Conference on Computer Vision and Pattern Recognition,2014:804-811.
[4]Oreifej O,Liu Z.HON4D:Histogram of oriented 4D normals for activity recognition from depth sequences[J].Computer Vision and Pattern Recognition,2013,9(4):716-723.
[5]Rahmani H,Mahmood A,Du Q H,et al.HOPC:Histogram of oriented principal components of 3D pointclouds for action recognition[C]//Proceedings of European Conference on Computer Vision,2014:742-757.
[6]李正欣,張鳳鳴,李克武,等.一種支持DTW距離的多元時間序列索引結構[J].軟件學報,2014,25(3):560-575.
[7]Bobick A F,Wilson A D.Using configuration states for the representation and recognition and gesture[R].Cambridge,Massachusetts:MIT Media Lab Perceptual Comuting Section Technical Report,1995.
[8]Ji X,Liu H,Li Y.Human actions recognition using fuzzy PCAanddiscriminativehiddenmodel[C]//Proceedings of IEEE International Conference on Fuzzy Systems,2010:1-6.
[9]Murphy K P.Dynamic bayesian networks[C]//Proceedings of Probabilistic Graphical Models.2002:27-56.
[10]Bartlett M S,Littlewort G,Frank M,et al.Recognizing facial expression:Machine learning and application to spontaneous behavior[C]//Proceedings of IEEE Computer Society Conference on Computer Vision and Pattern Recognition,2005:568-573.
[11]張順,龔怡宏,王進軍.深度卷積神經網絡的發展及其在計算機視覺領域的應用[J].計算機學報,2017(S):1-29.
[12]Chang Chihchung,Lin Chihjen.LIBSVM:A library for support vector machines[J].ACM Transactions on Intelligent Systems and Technology,2011,2(3):1-27.
[13]Fan R E,Chang K W,Hsieh C J,et al.LIBLINEAR:A library for large linear classification[J].Journal of Machine Learning Research,2008,9:1871-1874.
[14]李光早,王士同.基于骨干粒子群的彈性稀疏人臉識別[J].計算機工程與應用,2017,53(17):143-148.
[15]劉舉勝,何建佳,李鵬飛.基于CAS理論的改進PSO算法[J].計算機工程與應用,2017,53(5):57-63.
[16]Yu C N,Mirowski P,Ho T K.A sparse coding approach to household electricity demand forecasting in smart grids[J].IEEE Transactions on Smart Grid,2017,8(2):738-748.
[17]Kennedy J,Eberhart R.Particle swarm optimization[C]//Proceedings of IEEE International Conference on Neural Networks,2002:1942-1948.
[18]任江濤,趙少東,許盛燦,等.基于二進制PSO算法的特征選擇及SVM參數同步優化[J].計算機科學,2007,34(6):179-182.
[19]Shi Y,Eberhart R.A modified particle swarm optimizer[M]//Advances in Natural Computation.Berlin Heidelberg:Springer,1998.
[20]胡旺,李志蜀.一種更簡化而高效的粒子群優化算法[J].軟件學報,2007,18(4):861-868.
[21]Li W,Zhang Z,Liu Z.Action recognition based on a bag of 3D points[C]//Proceedings of Computer Vision and Pattern Recognition Workshops,2010:9-14.
[22]Wang J,Liu Z,Chorowski J,et al.Robust 3D action recognition with random occupancy patterns[C]//Proceedings of European Conference on Computer Vision,2012:872-885.
[23]Xia L,Chen C C,Aggarwal J K.View invariant human action recognition using histograms of 3D joints[C]//Proceedings of European Conference on Computer Vision,2012:20-27.