呂 潔,李洪奇,趙艷紅,Sikandar Ali,劉艷芳
(1.中國石油大學(北京) 石油數據挖掘北京市重點實驗室,北京 102249;2.中國石油大學(北京) 信息科學與工程學院,北京 102249)
人體行為識別屬于智能監控中難度最大的核心模塊,因此人體行為的分析識別研究已成為當務之急,對提升社區居民的生活質量起著積極作用。基于計算機視覺的人體行為識別是將包含人體行為動作的視頻按照所屬的類型加上相應的標簽。如何獲取有效的興趣點或者興趣區域來表征行為是基于機器視覺的人體行為識別的關鍵點;如何在存在遮擋等環境干擾的情況下進行有效的行為分類是基于機器視覺的人體行為識別的難點。根據行為表征的方式不同,人體行為識別研究可以分為兩類:基于全局信息表征的人體行為識別[1,2]和基于特定信息表征的人體行為識別[3-6]。但是,智能監控系統中,通過監控視頻獲取人體的全局信息存在相當大的難度,基于特定信息表征的方法更適用。
基于全局信息表征的人體行為識別方法通常采用全局特征來表征描述圖像中的人體區域。Clawson等[1]將光流特征與一組人體運動特征相結合用于行為識別,Vishwakarma等[2]通過使用梯度的邊緣空間分布以及像素的方向變化計算平均能量圖像來表示人類行為活動,在低噪聲環境下的效果較好,否則識別準確率就會明顯下降。
基于特定信息表征的行為識別方法則是不需要提取人體全局特征,直接對局部興趣特征進行分析。Mckenna等[3]提出使用空間時間興趣點和定向梯度特征的直方圖之間的融合識別一種攻擊性的人類行為,分類精度值達到82.26%。Kim等[4]的方法創建一個行為模板集,其中包含具有縮放和旋轉不變屬性的加權人體關節數據,Mei等[5]根據空間的不變性,計算各個結構向量之間的關節角度的角速度,再通過支持向量機對關鍵幀進行分類,特征計算都較為復雜。Song等[6]提出了一個端到端的空間和時間關注模型,用于從骨架數據中識別人類行為。這種基于人體骨架信息的人體行為識別方法能夠有效進行動作識別,但沒有充分提取人體骨架運動信息。
綜上所述,為了能更有效描述人體行為,同時解決實際場景中難以獲取人體全局信息的問題,本文提出一種魯棒的、將空域信息與時域信息相融合的人體行為描述方法,并使用KPCA-XGBoost分類器在公開的且具有挑戰性的數據集上進行評估,算法流程如圖1所示。

圖1 算法流程
人體行為表征是人體行為識別的第一步也是至關重要的一步,有效的行為特征表示可以提升行為分類的準確性。常用的人體行為識別特征可分為兩類:全局特征和局部特征。全局特征包括人體的邊緣特征,剪影輪廓,光流信息等。全局特征信息含量豐富,但對環境噪聲、視角變化以及遮擋非常敏感。局部特征則是提取人體相對獨立的單元或者感興趣部位的圖像塊(例如,人體關節)進行分析。局部特征不依賴底層的人體定位和分割,對噪聲和遮擋都不敏感,但計算復雜度較高。考慮本研究是針對具有時序性的視頻數據進行分析,在選擇關節空域信息這種局部特征的同時,融合時域特征以獲得更具區別度的特征向量,用于人體行為識別。
人體骨架可由18個關鍵點表征,因此本文利用人體骨架信息對動作行為進行建模。圖2(a)為18個關鍵點的分布圖,自底向上依次為踝關節(節點10和13)、膝關節(節點9和12)、髖關節(節點8和11)、腕關節(節點4和7)、肘關節(節點3和6)、肩關節(節點2和5),節點0為鼻子所在位置,剩下的4個節點則表示眼睛和耳朵所在位置。

圖2 人體主要關節及關鍵點
考慮到實際場景中眼睛和耳朵目標過小容易誤檢,同時降低特征的冗余度,本文選擇前14個關節點作為人體行為的底層特征數據,對已切割的行為的動態過程建模,實現不同類別的行為識別。圖2(b)為本文所觀測的人體主要關節點的位置分布圖。
對于不同的行為動作,人體的各個關節位置以及相應的運動狀態都各不相同,任何一種行為動作都是一個包含空間信息和時間信息的序列。在基于關節空域信息的人體行為識別過程中,每個行為均可表示為一個包含若干個人體關節點位置信息的序列,不同的行為具有不同的時域長度,故序列長度不盡相同。眾所周知,人體的每一種行為都需要經歷起承轉合的不同階段,每個階段人體的關節點相對位置均不同,對于行為判別的重要程度也不同。據此本文使用固定長度為L的時間窗將所有的行為序列分成N個階段,從中篩選出起始階段、關鍵階段、結束階段。每個階段稱為一個狀態(Stage),表示特定時間內的行為特征,則每個行為包含3個狀態。每個關節點位置數據包含水平和豎直兩個方向上的坐標信息(x,y),本文使用Pk代表第k個關節點的位置信息
Pk=[xk,yk]T
(1)
其中,k∈{0,1,2,…,13}。 對于任意階段中的第i幀圖像,人體行為的二維空域特征可表示為
Fi=[P0,P1,…,P13]T
(2)
其中,i∈{0,1,…,L}。 每個動作狀態包含L幀圖像,定義如下所示的狀態矩陣表征在狀態j下的行為空域特征
Sj=[F0,F1,…,FL]T
(3)
人體行為不僅可在時域上進行重要性劃分,在空域上同樣存在關鍵關節點集合。顯然,一些行為只與人體的部分關節點組成的集合相關,這些特定關節點集合在行為動作發生期間的運動狀態變化明顯。圖3是扔垃圾的行為分解圖示。由圖觀察發現,扔垃圾的行為主要跟肩膀,手肘和手腕這些關節點組成的集合密切相關,這幾處重要關節點在行為發生的不同階段表現出不同的運動狀態。因此,本文將人體關節的空域信息與時域信息相融合構建人體行為的空時融合特征用于人體行為識別,提高識別算法的準確率。

圖3 扔垃圾行為分解
為了尋找出每個行為動作中最重要的關節點集合,在將行為分解為3個主要階段的基礎上,本文對每種狀態下的連續L幀圖像中的人體關節點求運動速度,將連續L幀的速度均值作為該狀態下的各個關節點運動狀態。因此,任意狀態下的人體關節點運動狀態可表示為
Vj=[v0,v1,v2,…,v13]T
(4)
將式(4)中的速度向量與式(3)中的行為空域特征進行融合,生成用于人體行為識別的空時融合特征。對于任意一種行為的任意一個狀態,其空時融合特征Aj可表示為
Aj=[ST,VT]T
(5)
該融合特征亦可表示為
Aj=[F0,F1,…,FL,Vj]T
(6)
本文利用OpenPose[7]獲取二維骨架信息作為人體行為識別的底層數據,通過上述的特征提取方法對該數據進行處理生成空時融合特征向量用于行為識別。顯然,基于空時融合特征向量的人體行為識別問題對應于模式識別中最常見的多分類問題。考慮到本文提取的空時融合特征向量已經丟失掉成千上萬的像素信息,因此使用機器學習的多分類算法即可解決,無需再使用端到端的復雜網絡模型[8]。
人體行為是一個包含若干個人體關節點位置信息的序列,兼具空間特征屬性和時間特征屬性。利用OpenPose[9]提取的關節點數據僅僅代表了每一幀圖像中人體各個關節點在圖像中所處的位置信息,缺乏時間屬性,并且關節點數據存在稀疏問題,并不能直接表征人體行為。本文提出的空時融合特征向量是一個336維的高維向量,對高維數據進行迭代計算會增大距離計算難度,耗費大量的內存空間和時間開銷,最終導致識別系統的實時性能降低,因此需要對數據做進一步的處理。圖4中的圖(a)和圖(b)分別為數據樣本點在二維空間和三維空間的分布圖。本文通過對稀疏輸入進行縮放操作來緩解樣本數據的稀疏性問題、對縮放后的數據進行降維操作來緩解維數危機。
針對本文出現的特征數據維度過高的問題,我們嘗試在實驗過程中使用主成分分析(principal component analysis,PCA)對其進行維度縮減,圖4(c)為進行PCA處理后的樣本點分布圖。
顯然,對于表征人體行為特征的高維稀疏矩陣,PCA這樣的線性數據處理方式找不到一個恰當的低維嵌入,需要進行非線性映射。圖4(d)給出了經過核主成分分析(kernel principal component analysis,KPCA)處理后的樣本點分布圖。對于一個新樣本x,利用核主成分分析將其投影到超平面W上,則其第j維坐標可表示為

(7)

在實踐中使用的機器學習算法中,梯度樹提升[10](gradient tree boosting,GTB)是一種在眾多應用場景中都很流行的算法。XGBoost算法[11,12]是GTB算法的一種變體,它在GTB算法目標函數的基礎上增加了對回歸樹復雜度進行懲罰的正則項,使得學習生成的模型更加不容易過擬合。對于稀疏數據的處理,XGBoost算法使用稀疏感知這種全新的樹節點分裂方法較快地學習出默認的節點分裂方向。
結合本研究的實際情況,本文采用XGBoost算法作為人體行為識別系統中的分類算法,對坐下、扔垃圾、拿起這3種日常行為動作進行分類。根據此算法的分類結果,可以對上述3種行為動作進行有效識別。在利用KPCA算法對空時融合特征進行降維處理后,使用XGBoost算法對特征數據進行訓練,生成分類模型對3種日常行為動作進行分類。
對于一個具有M個樣本、N種屬性、H個類別的數據集D={(X0,y0),(X1,y1),…,(XM,yM)}(Xj∈RN,yj∈{0,1,2,…,H}),XGBoost算法首先利用具有I棵樹的集成樹模型對該數據集建模,則模型的輸出可表示為

(8)

圖4 樣本點空間分布
其中,G={g(X)=ωq(X)}(q∶RN→T,ω∈RT) 為回歸樹空間,q表示每棵樹的結構,T表示樹中葉子的數量。每個gi對應一個葉子權重為ω,樹結構為q的獨立分類樹。為了學習得到模型中使用的函數集合,需最小化目標損失函數L
(9)

(10)
使用二階泰勒展開式進行近似逼近
(11)
將式(11)中的常數項消除,對目標損失函數進行化簡

(12)
令集合Sk={j|q(Xj)=k} 表示葉子節點k的實例集合,將目標函數中的正則化項展開,則目標函數可表示為

(13)
將樹的結構q(x) 固定,可計算出權重更新值和損失函數值
(14)
本文在以下兩個數據集上進行實驗:Multiview Action 3D[13]數據集以及NTU RGB+D[14]數據集。
Multiview Action 3D數據集(MA-3D):Multiview Action 3D數據集是用3臺Kinect相機從不同角度拍攝的多視角三維事件數據集。該數據集包含拿起,丟棄垃圾,坐下,站起來等10種單人行為動作。每個動作分別由10位不同的人執行。圖5(a)~圖5(d)給出了幾類行為的圖像樣本。
NTU RGB+D數據集(NTU):NTU RGB+D數據集是目前最大的行為識別數據集,共56 880個視頻序列,包含60個類別的行為數據,例如舉手、合掌等。該數據集可以分為Cross-Subject和Cross-View兩部分,本文使用NTU Cross-View(NTU-CV)這部分。圖5(e)~圖5(h)給出了幾類行為的圖像樣本。

圖5 數據集中幾種行為樣圖
實現細節:實驗過程中,通過對數據集中的行為視頻長度進行分析,本文采用時間長度為3的時間窗將行為動作過程分為3個階段。因此,對于一個完整的人體行為視頻,通過上述的特征提取方式可生成一個336維的特征向量,此向量同時包含了空域特征和時域特征。通過對比實驗發現,對336維的原始特征數據進行L2范數正則化,可以突出部分特征,提高特征向量的辨識度,改善了實驗結果。因此,實驗中本文對提取的空時融合特征向量均進行L2范數正則化處理。
為了驗證本文提出的空時融合特征的有效性和魯棒性,我們分別在MA-3D和NTU-CV數據集上將其與利用OpenPose提取的原始數據進行對比,如圖6和圖7所示。根據特征可視化結果可以看出原始數據具有很大的相似性,區分力比較小。本文在MA-3D數據集上分別采用兩種特征數據進行對比實驗,發現基于空時融合特征的人體行為識別準確率更高,見表1。這是因為原始數據是由人體18個關鍵點位置信息組成的集合,而實際上在行為分類過程中使用的監督信息僅是一些核心關節點組成的子集,引入被不同行為所共有的特征數據會對實驗造成干擾,降低行為間的區分度。與原始數據相比,空時融合特征數據突出了一個完整行為序列中的關鍵序列以及核心關節點集合,降低了數據冗余度的同時,提高了特征數據在不同類別間的辨識度。

圖6 MA-3D數據集原始行為數據與空時融合特征數據可視化結果

圖7 NTU數據集原始行為數據與空時融合特征數據可視化結果

表1 各種方法在MA-3D數據集上的實驗結果比較
為了驗證KPCA-XGBoost識別算法的有效性,我們將本文所述的方法與其它基于人體骨架信息的行為識別算法相比較,表1和表2分別給出了在兩種數據集上不同方法的表現。實驗結果表明:在MA-3D數據集上,采用KPCA-XGBoost算法進行人體行為特征分類,準確率達到94.52%,優于Nguyen等[15]提出的PCA-SVM算法。在NTU-CV數據集上,與幾種先進的行為識別算法相比,本文提出的行為特征分類算法亦表現更佳。
圖8為在MA-3D數據集上采用KPCA-XGBoost算法對空時融合特征進行分類生成的混淆矩陣。從混淆矩陣可以發現,對于實驗的3個行為類別,坐下的行為識別率最高,扔和撿兩個行為的識別率稍差,二者容易混淆。實際上,“扔”和“撿”這兩類動作的核心關節點組成的集合存在交集,3個主要行為階段中的部分關節點運動狀態非常相似,容易導致分類錯誤。

表2 各種方法在NTU-CV數據集上的實驗結果比較

圖8 本文方法在Multiview Action 3D數據庫上的混淆矩陣
全面考慮實際場景中的行為識別問題,本文給出了基于人體骨架的空時特征融合方法,利用KPCA-XGBoost分類算法進行人體行為特征的分類。該方法與前人的算法對比表明,空時融合特征能更有效表征不同的行為序列,使用KPCA-XGBoost算法對該特征進行分類,在MA-3D數據集上準確率達到94.52%。該算法具有較低的時間復雜度以及較高的準確率,適用于實際場景中的單人行為識別。未來工作的方向是將嘗試將此方法用于人體交互行為(例如,打架)識別上,使得該模型對于不同類別的人體行為泛化能力更強。