占 俊,謝全卿
(1.景德鎮學院 計算機工程系,江西 景德鎮 333000;2.南京航空航天大學 電子信息工程學院,江蘇 南京 210016)
在當前的視頻中,大部分都是以人的活動為主體,例如智能家居、人機交互中,安全監控等方面[1]。因此,對人體動作識別研究意義重大。一般通過對視頻序列進行分析,提取動作特征,構建視頻對象與動作間的映射聯系,通過分類學習對視覺特征與動作類別的關系[2,3]。周風余等[4]提出了一種時序深度置信網絡的在線動作識別方案。該方法通過根據動作序列先后幀的上下文相互關系,較好解決了深度置信模型中對動態動作特征識別難題。該方法較好地提高了識別率,并且無需人們事先對圖像序列處理,可從動作過程中任何時間進行識別,能夠在一定程度上完成在線識別功能。然而,在復雜環境中,對于光照變化、模糊運動等識別效果還有待進一步提高。Davis等[5]設計一種基于運動能量圖的動作識別。根據馬氏距離來計算模板之間的距離。利用觀察圖像特征與訓練圖像特征之間的距離,通過很K-近鄰分類對動作特征學習。該方法計算簡單,但是在選擇時間間隔時較難,當間隔小,模板數較大,樣本與訓練間的差異較較小時,動作識別率較高。反之,識別率較低,一般用于簡單或者靜態動作識別。吳珍珍等[6]提出了一種骨架模型和格拉斯曼流形的3D動作識別算法。該方法利用ARMA對每個變化的動作特征表示,提取時空動態運作特征。通過矩陣得到的空間為流形的點。再利用控制切線對類別表示,得到局部切叢,并利用SVM進行分類學習。該方法的辨別率較高,對延遲方面測試也取得了較好表現,但是該方法計算復雜,對噪聲較為敏感深度圖像提供更豐富的幾何信息,促進人體與背景的分離和相似的消除,因此,本文設計了深度圖像的動作識別方案。首先,提出了基于深度圖特征,稱為3D局部特征,通過擴展2D形狀上下文形成3D空間,表征人體輪廓和關節之間的位置線索,3D局部特征能在3D空間中有效捕捉輪廓點的相對位置信息。其優點是對身體尺寸具有不變性,能有效捕獲不同高度的人體。其次,提出了一個數據相關的圖像結構與回歸森林組合學習方案。具體地說,根據訓練數據到達回歸森林的葉節點,該模型可以了解各關節的分布和相鄰關節之間的空間約束,不同于一般的圖形結構,本文模型根據特定的測試圖像進行相對分布。與當前流行方法比較,提出的方案可顯著提高動作的正確率。最后在常用的數據集完成測試。
形狀匹配已被應用到動作識別中,其能有效在對數坐標中通過直方圖對人體輪廓的局部信息編碼[7]。但是,形狀匹配存在2個問題:運動檢測得到的人體輪廓通常是含噪聲的,由于服裝紋理的模糊性,很難提取準確內邊緣。由于缺乏深度信息,從2D輪廓恢復3D動作是病態的。為了解決以上2個問題,本文從深度圖像中提取有用特征,其不僅提供人體三維信息,也有利于提取內邊緣。因此,從深度圖像提取的人體輪廓的有規律的空間點,計算特征直方圖,形成了新的3D局部特征。因此,本文特征構建包括2部分:輪廓提取和直方圖分級。
對于一幅深度圖像I,假設人體的前景是已知的。需要從深度圖像中提取外邊緣和內邊緣,為了降低深度傳感器對噪聲的影響,首先利用高斯濾波器平滑提取的身體形狀。
對深度di在像素pi處的高斯濾波可定義為[8]

(1)

在深度圖像的人體輪廓是邊緣點上的一個點集,為了提取輪廓點,背景像素的深度值設置為無窮大,因此,輪廓點的集合S可采用局部深度極值函數得到,表示為
(2)
式中:td為深度閾值,本實驗中設置td=4cm。
在S中存在成千上萬個點,導致了對形狀過于密集描述,同時也花費了大量的計算時間。因此,對S下采樣為一個含有500個點的子集合S′。
為了捕捉3D信息,將S′中的每個點變換為3D空間,并計算3D特征直方圖。對于S′中的每個點pi,計算其3D空間 {r,θ,γ} 值,r為半徑;θ為方位角;γ為天頂角。空間參數的具體表示如圖1所示。

圖1 3D空間參數表示
然后,將空間點投射到3D直方圖hi中,hi由360個成分組成,其中包括5個半徑r,12個方位角θ,6個天頂角γ,第k個成分的hi(k)計算如下
(3)
式中:Ci=∑k,j≠1vij(k) 為歸一化常數,vij(k)為在hi中第k個成分與點pj的權重映射,vij(k)定義如下
(4)
式中:r(k)、θ(k)、γ(k)表示第k次的中值。在3×3鄰域內,將vij(k)以中心分為2類,可看作是一種量化直方圖平滑作用,可以減少異常值對深度輪廓的影響。因此,所有的形狀和動作可通過N直方圖進行編碼表示,定義為ζ。

本文的3D局部特征是一種魯棒性較強的人體動作描述,包含了大量的動作信息,因為一個人的3D形狀中,身體關節的位置可以很容易地識別。
對于當前的形狀特征到人體動作識別的學習映射,容易受到模糊形狀影響或者是專為某些特定的動作檢測,這使得其不適合關節檢測,最近,回歸森林被證明是一個有效的動作識別[9],其可以處理高維特征向量且計算復雜度低,因此,可利用隨機森林的優勢學習動作估計的回歸系數。然而,在以往的工作中,人體關節的分布是獨立的,事實上,連接關節之間具有很強的依賴關系,例如給定肘部的位置與附近形狀的一些信息,手的位置將被強烈約束[10,11]。
在3D局部特征空間到人體動作的學習映射中,在回歸森林中嵌入了圖結構。學習兩種基于訓練樣本的弱回歸的葉節點:一個是關于關節的獨立估計量xi,另一個是對一個關節的空間約束估計(xi,xj)。通過Gaussian密度方程對節點xi與(xi,xj)分布估計,因此,該方法可以提供關節的位置的結構化輸出,如圖2所示。

圖2 3D局部特征結構化輸出
假設身體關節之間的依賴關系可以由一個預定義的圖表示,表示為G=(V,E), 其中,V與E表示圖像G中的節點與邊緣。節點i=1,2,…,V對應人體處于xi的關節,邊緣(i,j)∈E。 圖模型可以分為兩個圖:一個說明了人體上部結構,另一部分用于下部[12]。設人體動作結構X={x1,x2,…,xj}, 其輪廓最大化后驗分布估計為
p(X|ζ)∝p(ζ|X)p(X)
(5)
式中:p(ζ|X) 表示概率,可變形為∏i∈Vφ(xi)。p(X)為前位動作結構,表示為Πi,j∈Eφ(xi,xj)。 因此,人體動作的后部可表示為
(6)

對于一個回歸森林,定義為T={T1,…,Tt}, 其中含有t個回歸樹,每個樹通過一系列學習的分裂函數計算。令S={pi} 表示從訓練圖像中收集的一組采樣點,在樹的根節點上,訓練數據S可通過分裂函數f分裂成兩個子集,左子集SL和右子集SR。分裂函數f通過對點p的第k個特征hp(k)與閾值τ比較,定義如下[13]
(7)
在每個節點,有一組候選的分裂函數隨機設置的參數{k,τ},選擇函數f*是尋求熵最小的過程,定義為
(8)
式中:H(Sm)表示為
(9)
式中:p(xj|pi)表示處于關節xj的pi權重,定義為
(10)

在樹被構造后,在每個葉子節點l上,定義φ(xi,xj)、φ(xi)的回歸系數表達式,為了使分布密集,引入Gaussian密度函數[14]。通過學習并存儲相應的參數集,得到兩種位移中心Vi(l),Vij(l)。

(11)
(12)
其中,wk(i)l,wk(ij)l分別為中心Δk(i)l, Δk(ij)l的關節位移與結構位移。
對于給定的深度圖像,其含輪廓采樣N個點{s1,s2,…,sN}, 每一點s都會到達森林里每一棵樹的葉子節點l,通過評估分裂節點的二進制分裂函數來計算xi的權重
(13)


(14)


(15)

因此,在圖形模型中,人體動作的最佳外形可通過以下表示
(16)
由于三維空間中位置變量是連續的,使搜索的最佳解決方案具有較大難度,因此,本文利用迭代方法給出了輸出動作的近似解方案。具體來說,通過一個均值漂移算法尋找空間的一個或兩個候選為每個關節的初始動作,然后利用梯度下降算法計算最終結果
(17)
本文算法結構表示如圖3所示。

圖3 本文算法流程
為了對識別方法的可行性分析,在MSR-3D與Weizmann動作數據集中進行測驗。Weizmann數據集由含有Bend,Jack,Jump,P-jump,Run,Side,Skip,Walk,Wave1,Wave2的10種動作類別組成。MSR-3D[15]主要由上揮臂,平揮臂,捶打揮臂,抓,打拳,上拋,畫X,畫勾,畫圓,拍手10個類別組成。實驗采用的數據集與方法見表1。

表1 實驗數據集與方法
實驗環境為:Intel Core I5,3.50 GHz的64位CPU,8 GB運行內存,Win8操作系統。為了顯示算法的優先進性,將當前常用的3種動作識別方法作對比:時序深度置信網絡的在線人體動作識別[4],基于運動能量圖與運動歷史圖動作識別[5],骨架模型和格拉斯曼流形的3D人體動作識別[6]。為了便于記錄,將3種對照算法標記為A、B、C算法。設深度閾值td=4 cm,hi=0.07,K=8,閾值τ=0.03。在實驗中,對圖像序列提取輪廓點,將臀部當作原點,圖4為Weizmann數據中Walk、Jack、Run這3種動作的提取結果。圖4中第1行為視頻幀圖像中3種動作類型,第2行為對應的3種人體動作輪廓顯示,第3行為提取的關節點與邊緣。

圖4 Weizmann數據集中動作的提取結果
為了對不同動作中的評價,分別在MSR-3D、Weizmann中進行測試,得到2種混淆矩陣,見表2與表3所示。表中第i行第j為第i行識別為第j種動作的概率,相同行累加等于1。表2為MSR-3D數據庫中不同動作的混淆矩陣。依據2中得出,“向上揮臂”與“水平揮臂”的正確率相對不高,“向上揮臂”易被當作“水平揮臂”與“捶打揮臂”類別,“水平揮臂”易被當作“向上揮臂”類別。另外“打拳”類別的正確率也較低,易被作為“鼓掌”類別,因為這幾種動作軌跡相似度較高,在判斷時易被誤識別。“鼓掌”、“畫勾號”的識別率相對較高,達0.96與0.94。
表3為Weizmann測試集中各個動作的混淆矩陣。依據3中看出,“Run”和“Side”的正確率較低,“Run”易被作為“Side”與“Jump”,“Side”易被作為“Jump”。這幾種動作特征相似度高,而“Jump”與“Wavel”的正確率最高,其中,“Jump”、“Wave1”的識別率高達1。
圖5為在MSR-3D和Weizmann中通過不同方法測量的平均識別率(average recognition rate,ARR)。依圖5中得出,相同情況下,本文方法的ARR最高。具有一定的優勢,并且在Weizmann中的識別效性能高于MSR-3D。表4為在Weizmann中對不同類別獲得的識別率。從表4中得出,在Weizmann的10種動作識別效果上,本文算法均取得了相對優良的成績。其中,在“Jump”、“Wave1”、“Walk”類型上正確率達到95%以上。而A、B、C算法在不同的類別的識別效果與本文算法具有一定的差距,本文算法正確率相對較高。主要是本文通過Gaussian 濾波器從深度圖像中提取的人體輪廓的空間點,降低了噪聲影響。然后計算特征直方圖,形成了3D局部特征。利用關節點與邊緣形成人體的圖形模型,并得到了圖像的結構約束和空間約束,通過回歸森林法進行分類學習,完成人體動作識別與理解,提高了正確率與魯棒性。

表2 MSR-3D數據集的混淆矩陣

表3 Weizmann數據集的混淆矩陣
依據實驗結果與實驗數據可得知,在MSR-3D和Weizmann中,Weizmann的精度優于MSR-3D。主要是Weizmann中環境簡單,動作區分度較大。與對照算法比較,提出方案識別率更優,能夠較好完成對各種動作類型識別與理解。主要是因為本文算法通過Gaussian濾波器從深度圖像中提取的人體輪廓的空間點,降低了噪聲影響。然后計算特征直方圖,形成了3D局部特征,通過3D局部特征包含了大量的動作信息,能夠有效對人體動作描述,在人體的3D形狀中,身體關節的位置可以很容易地識別。利用關節點與邊緣形成人體的圖形模型,并得到了圖像的結構約束和空間約束,通過回歸森林法進行分類學習,完成人體動作識別與理解,提高了算法識別率與魯棒性。而A、B、C算法的識別率相對不高,魯棒性不強。主要是對照算法中對動作特征提取不全面、準確,對于復雜場景、模糊運動、光照變化等干擾時,無法有效提取動作信息,特征提取魯棒性不強,因此,影響了識別率。

圖5 MSR-3D與Weizmann識別率測試

BendJackJumpP-jumpRunSideSkipWalkWave1Wave2A方法80.2479.7784.1580.3284.4579.2586.2185.8480.5983.44B方法85.3384.1283.4084.7585.7984.5389.6887.5890.6386.72C方法91.5689.4487.8586.1489.9687.9590.1492.3391.4188.93本文方法94.1593.1397.6392.6688.6391.3294.2195.4298.6394.21
在本文中,設計了關于深度圖像的動作識別方案,首先,利用深度圖特征,通過擴展2D形狀上下文形成3D空間,表征人體輪廓和關節之間的位置線索,3D局部特征能在3D空間中有效捕捉輪廓點的相對位置信息。其優點是對身體尺寸具有不變性,能有效捕獲不同高度的人體。其次,提出了一個數據相關的圖像結構與回歸森林組合學習方案。具體地說,根據訓練數據到達回歸森林的葉節點,該模型可以了解各關節的分布和相鄰關節之間的空間約束,不同于一般的圖形結構,本文模型根據特定的測試圖像進行相對分布。結果表明,通過本文方法可以提高人體動作估計的準確性,對人類動作具有優良的判別能力。實驗結果也表明一些研究問題,特別是如何結合顏色和深度信息,以提供更準確地估計關節之間的依賴關系,這將是今后的研究方面。