董哲宇,汪千軍,李萬杰,周 波
(合肥工業(yè)大學(xué)宣城校區(qū)信息工程系,安徽 宣城 242000)
隨著計(jì)算機(jī)視覺技術(shù)的快速發(fā)展,人體動作識別在安防監(jiān)控、機(jī)器人服務(wù)、智能交互等領(lǐng)域應(yīng)用越來越廣泛。人體動作識別過程依次包括運(yùn)動前景檢測、動作特征提取、動作內(nèi)容識別這3個(gè)步驟[1-2]。其中動作內(nèi)容識別的方法可分為3類:1)基于模板的方法,該方法將待識別目標(biāo)的模板與預(yù)先存儲的已知模板進(jìn)行比較,根據(jù)相似度判別動作類別[3-6];2)基于語法的方法,該方法利用自然語言處理中的文法分析技術(shù)進(jìn)行識別[7-10];3)基于概率統(tǒng)計(jì)的方法,該方法把動作表示成一個(gè)連續(xù)的狀態(tài)序列,每個(gè)狀態(tài)都有自己的表現(xiàn)和動態(tài)特征[11-14]。以上3種方法中,模板匹配的方法直觀簡單,但是缺乏魯棒性,一般用于靜態(tài)姿勢或者簡單動作識別;基于語法的方法需要依賴底層描述;基于概率統(tǒng)計(jì)的方法容易出現(xiàn)訓(xùn)練不足或者過擬合問題。
本文提出一種基于神經(jīng)網(wǎng)絡(luò)的加權(quán)識別方法,利用神經(jīng)網(wǎng)絡(luò)模型獲取識別率,對識別率進(jìn)行加權(quán),提高或降低單幀影響力,最后對該方法進(jìn)行實(shí)驗(yàn)。
本文利用基于神經(jīng)網(wǎng)絡(luò)的加權(quán)識別方法,通過前景檢測與動作特征描述、模型訓(xùn)練、加權(quán)識別3個(gè)過程對走、跑、跳、踢、蹲5個(gè)基本動作進(jìn)行識別。
使用ViBe算法[15-16]提取人體運(yùn)動前景。ViBe是一種像素級的背景建模、前景檢測算法,該算法通過隨機(jī)策略實(shí)現(xiàn)背景模型的更新,相比于其他的檢測算法具有計(jì)算量小、內(nèi)存占用少、處理速度快和應(yīng)對噪聲穩(wěn)定可靠的特點(diǎn)。ViBe算法主要由背景模型初始化、前景檢測、背景模型更新這3部分組成。
1)背景模型初始化。使用第一幀初始化背景模型,對每一個(gè)像素點(diǎn),隨機(jī)地選擇鄰域點(diǎn)的像素值作為模型樣本值。
2)前景檢測。每個(gè)背景點(diǎn)存儲一個(gè)樣本集,通過將新的像素值和樣本集比較判斷是否屬于背景。
3)背景模型更新。采用3種隨機(jī)策略:隨機(jī)選取樣本更新、隨機(jī)決定是否更新背景模型、隨機(jī)決定是否更新鄰域像素。
獲得運(yùn)動前景后,對動作特征進(jìn)行描述。等距取N個(gè)輪廓點(diǎn)Pi(xi,yi),其中N設(shè)為128,i=1,2,…,N。利用灰度重心法計(jì)算出輪廓重心坐標(biāo)C(xg,yg),如公式(1)所示,其中m為圖像寬度,n為高度,fij為圖像(i,j)處的像素值。利用公式(2)計(jì)算輪廓點(diǎn)Pi到重心C的距離ri,得到距離向量R(r1,r2,…,rN),輪廓點(diǎn)到重心距離如圖1所示。
(1)
(2)
圖1 輪廓點(diǎn)到重心距離
利用公式(3)對距離向量R進(jìn)行傅里葉變換:
(3)
利用公式(4)將傅里葉系數(shù)歸一化,得傅里葉描述子f:
(4)
本文采用3層BP神經(jīng)網(wǎng)絡(luò)模型[17]。首先在輸入層輸入訓(xùn)練樣本f,利用公式(5)計(jì)算隱含層各神經(jīng)元的輸入值Ii:
(5)
公式中wij為隱含層神經(jīng)元i與輸入層神經(jīng)元j的連接權(quán)值。θi為隱含層神經(jīng)元的閾值。將隱含層輸入Ii代入公式(6)計(jì)算出隱含層各神經(jīng)元的輸出Oi,并利用公式(7)計(jì)算輸出層單個(gè)神經(jīng)元的輸出。
(6)
(7)
公式(7)中Vi為輸出層神經(jīng)元與隱含層神經(jīng)元的連接權(quán)值。
使用公式(8)計(jì)算網(wǎng)絡(luò)的均方差E(w),接著計(jì)算輸出層、隱含層各個(gè)神經(jīng)元的誤差項(xiàng)以及各連接權(quán)的修正值,調(diào)整各連接權(quán)值。
(8)
其中,tk是期望輸出值,yk是網(wǎng)絡(luò)實(shí)際輸出值,p為樣本數(shù)目。
本文設(shè)定輸入層節(jié)點(diǎn)數(shù)為128,隱含層節(jié)點(diǎn)數(shù)為8,輸出層節(jié)點(diǎn)數(shù)L為5,使用前文得到的傅立葉描述子作為輸入,各層之間的權(quán)重與閾值為網(wǎng)絡(luò)參數(shù),在網(wǎng)絡(luò)訓(xùn)練之初隨機(jī)生成,激活函數(shù)采用S型。
使用加權(quán)函數(shù)處理各候選動作的單幀識別率μm,m=1,2,…,5,μm即上文中的yk,加權(quán)函數(shù)如公式(9)所示:
G(μm)=(exp(μm)-1)μm
(9)
圖2 加權(quán)與未加權(quán)處理對比圖
將加權(quán)函數(shù)G(μm)處理后的結(jié)果與未加權(quán)結(jié)果進(jìn)行對比,如圖2所示。曲線在(0.693,0.693)處相交,故ε=0.693為識別率提高或降低的邊界。當(dāng)識別率高于ε時(shí),使用G(μm)函數(shù)提高該幀識別率,擴(kuò)大該幀對識別結(jié)果的影響;識別率小于ε時(shí),降低該幀識別率,削弱對識別結(jié)果的影響,這樣以ε為邊界提高識別率的區(qū)分度。加權(quán)函數(shù)能夠有效地降低相似幀對識別結(jié)果產(chǎn)生的干擾,同時(shí)提高關(guān)鍵幀的影響。
利用公式(10)對加權(quán)后的結(jié)果歸一化處理,并使用公式(10)對μm累加得到累加值Vm:
(10)
Vm=Vm+um
(11)
然后分段對臨界值Tm進(jìn)行更新,如公式(12)所示:
(12)
當(dāng)um1時(shí),該策略將累加值除以當(dāng)前累計(jì)幀數(shù)c作為平均權(quán)值使用修正臨界值,此時(shí)平均權(quán)值較低,受到相似幀影響較大,無法得出準(zhǔn)確的結(jié)果,于是提高臨界值,繼續(xù)考察后續(xù)幀;當(dāng)um>1時(shí),該幀識別率較高,應(yīng)突出該幀對結(jié)果的影響,故減小臨界值來加快輸出結(jié)果。若加入某一幀后有不止一個(gè)動作滿足Tm0,取此時(shí)Tm較小的動作作為結(jié)果。
臨界值Tm能夠影響識別結(jié)果的輸出周期,若Tm取值過大,輸出周期相對增加,實(shí)時(shí)性差;若Tm取值過小,輸出周期可調(diào)范圍較小,識別率低,為了保證實(shí)時(shí)性與識別率的平衡,本文設(shè)定Tm=0.693。
該方法的流程如圖3所示。
圖3 加權(quán)識別算法流程圖
圖3可概括為4個(gè)步驟,若當(dāng)前幀已經(jīng)是最后一幀則結(jié)束流程,各步驟的描述如下:
1)對5個(gè)動作跑、跳、走、踢、蹲分別設(shè)置識別權(quán)值Vm,其中m=1,2,…,5,初始值為0,初始臨界值Tm=0.693,幀數(shù)c=1。
2)使用神經(jīng)網(wǎng)絡(luò)模型對當(dāng)前單幀進(jìn)行識別,獲得候選動作識別率μm,使用公式(9)對μm進(jìn)行加權(quán)并歸一化處理為um。
3)使用公式(11)做權(quán)值累加。
4)使用公式(12)調(diào)整臨界值,當(dāng)存在識別權(quán)值Tm0時(shí),輸出Tm所對應(yīng)的動作,跳轉(zhuǎn)到步驟1;否則c自增1,對t+1幀進(jìn)行識別,跳轉(zhuǎn)到步驟2。
本文在自建數(shù)據(jù)集基礎(chǔ)上進(jìn)行模型訓(xùn)練和實(shí)驗(yàn)識別,視頻內(nèi)容為3個(gè)人物的走、踢、跳、蹲、跑這5個(gè)動作,每個(gè)動作執(zhí)行80個(gè)周期,每個(gè)完整動作的周期為15~35幀,各個(gè)動作的樣本幀數(shù)分別為2600, 2100, 1800, 2400, 1400。數(shù)據(jù)集中80%的樣本用作模型訓(xùn)練,20%用作實(shí)驗(yàn)識別。
采用ViBe算法獲取人體運(yùn)動前景,利用OpenCV視覺庫提取輪廓,人體的動作輪廓依次為:走、踢、跑、跳、蹲,樣例如圖4所示。
圖4 輪廓樣例
圖5 頻譜圖
接著計(jì)算輪廓重心到輪廓點(diǎn)的歐氏距離,并對距離序列做傅里葉變換,圖4中“走”和“跑”的頻譜如圖5所示。一個(gè)輪廓可以唯一確定一個(gè)頻譜圖,同一類動作輪廓的頻譜圖具有一定的相似度,不同動作的頻譜圖具有較大的區(qū)別。
將得到的傅里葉描述子輸入神經(jīng)網(wǎng)絡(luò)模型,對單幀識別結(jié)果使用加權(quán)識別方法進(jìn)行處理,最終識別結(jié)果如表1所示。從表1中可以得出如下結(jié)論:加權(quán)函數(shù)“磨平”了干擾值的影響,并提高了關(guān)鍵幀的權(quán)值,使本方法具有很好的識別效果,識別率均達(dá)到89%。
表1 加權(quán)識別方法識別率/%
動作走跑蹲跳踢走98.200.900.000.900.00跑2.6689.750.005.062.53蹲5.260.0092.981.750.00跳8.771.750.0089.470.00踢7.720.003.250.0089.03
分別對加權(quán)不變臨界值方法和不加權(quán)不變臨界值方法進(jìn)行實(shí)驗(yàn),臨界值設(shè)置為ε,最后將這2種方法與本文提出的方法進(jìn)行對比,從表2中可以發(fā)現(xiàn):相比于不加權(quán)的方法,對單幀識別率加權(quán)可以大大提高結(jié)果的正確率;在加權(quán)識別的基礎(chǔ)上,動態(tài)調(diào)整臨界值可以進(jìn)一步提高正確率。
表2 實(shí)驗(yàn)對比結(jié)果
方法本文方法加權(quán)不變臨界值不加權(quán)不變臨界值輸出周期范圍/幀1~251~101~3平均正確率/%92.0886.1473.31
通過以上試驗(yàn),證明本文提出的加權(quán)識別方法能夠降低干擾值的影響、突出關(guān)鍵幀;動態(tài)調(diào)整結(jié)果輸出周期,避開了人工設(shè)定固定幀數(shù)的問題,能夠適應(yīng)不同的動作類別,具有較高的正確率。
為了驗(yàn)證算法有效性,將本文算法與文獻(xiàn)[11]及文獻(xiàn)[18]中的算法進(jìn)行比較,實(shí)驗(yàn)結(jié)果如表3所示。
表3 3種人體動作識別算法比較/%
算法 平均正確率文獻(xiàn)[11]86.39文獻(xiàn)[18]91.70本文算法92.08
觀察實(shí)驗(yàn)結(jié)果可以發(fā)現(xiàn),本文算法的識別率明顯優(yōu)于文獻(xiàn)[11],文獻(xiàn)[11]要求采集的視頻序列長度為50~100幀,輸出周期較長,實(shí)時(shí)性差;文獻(xiàn)[18]算法的識別率與本文相近,文獻(xiàn)[18]考慮到了與人體目標(biāo)交互的非人體目標(biāo)對動作識別的作用,而本文通過識別率加權(quán)和動態(tài)調(diào)整臨界值實(shí)現(xiàn)動作有效分類。
本文提出了一種基于神經(jīng)網(wǎng)絡(luò)的加權(quán)識別方法,首先通過ViBe算法提取人體運(yùn)動前景,計(jì)算前景重心,對輪廓重心距作傅里葉變換獲得動作特征向量,對神經(jīng)網(wǎng)絡(luò)模型計(jì)算的識別率作加權(quán)處理,并動態(tài)調(diào)整臨界值,最后得到識別結(jié)果。其中識別率加權(quán)提高了關(guān)鍵幀對識別結(jié)果的影響;而動態(tài)調(diào)整臨界值能夠適應(yīng)不同動作類別。實(shí)驗(yàn)結(jié)果表明本文提出的方法對簡單動作能夠有效分類。另外,由于每個(gè)動作采用相同的周期,其中動作“走”單個(gè)周期幀數(shù)最多,可能是導(dǎo)致“走”與其他動作的識別率有較大差別的原因,這一點(diǎn)有待進(jìn)一步實(shí)驗(yàn)驗(yàn)證。
[1] 胡瓊,秦磊,黃慶明. 基于視覺的人體動作識別綜述[J]. 計(jì)算機(jī)學(xué)報(bào), 2013,26(12):2512-2524.
[2] 李瑞峰,王亮亮,王珂. 人體動作行為識別研究綜述[J]. 模式識別與人工智能, 2014,27(1):35-48.
[3] Liu Jingen, Ali S, Shah M. Recognizing human actions using multiple features[C]// IEEE Conference on Computer Vision and Pattern Recognition. 2008:1-8.
[4] 馬義飛. 基于異常行為識別在公共區(qū)域的安全防范建模[D]. 長春:吉林大學(xué), 2016.
[5] 董俊峰. 基于視覺的人體運(yùn)動分析技術(shù)研究[D]. 北京:北方工業(yè)大學(xué), 2015.
[6] Jiang Zhuolin, Lin Zhe, Davis L. Recognizing human actions by learning and matching shape-motion prototype trees[J]. IEEE Transactions on Pattern Analysis & Machine Intelligence, 2012,34(3):533-547.
[7] Ryoo M S, Aggarwal J K. Stochastic representation and recognition of high-level group activities[J]. International Journal of Computer Vision, 2011,93(2):183-200.
[8] Si Zhangzhang, Pei Mingtao, Yao Benjamin, et al. Unsupervised learning of event AND-OR grammar and semantics from video[C]// Proceedings of 2011 International Conference on Computer Vision. 2011:41-48.
[9] Nevatia R, Zhao Tao, Hongeng S. Hierarchical language-based representation of events in video streams[C]// 2012 IEEE Computer Society Conference on Computer Vision and Pattern Recognition Workshop. 2003:39.
[10] 黃金霞. 基于SCFG的復(fù)雜人體行為識別[D]. 長沙:中南大學(xué), 2013.
[11] 黃靜,孔令富,李海濤. 基于傅里葉-隱馬爾科夫模型的人體行為識別[J]. 計(jì)算機(jī)仿真, 2011,28(7):245-248.
[12] Shi Qinfeng, Cheng Li, Wang Li, et al. Human action segmentation and recognition using discriminative semi-markov models[J]. International Journal of Computer Vision, 2011,93(1):22-32.
[13] 王忠民,曹洪江,范琳. 一種基于卷積神經(jīng)網(wǎng)絡(luò)深度學(xué)習(xí)的人體行為識別方法[J]. 計(jì)算機(jī)科學(xué), 2016,43(S2):56-58.
[14] 趙欣,周海英. 一種結(jié)合深度信息的人體行為識別方法[J]. 科學(xué)技術(shù)與工程, 2017,17(1):244-249.
[15] Barnich O, Droogenbroeck M V. ViBe: A powerful random technique to estimate the background in video sequences[C]// IEEE International Conference on Acoustics, Speech and Signal Processing. 2009:945-948.
[16] Barnich O, Droogenbroeck M V. ViBe: A universal background subtraction algorithm for video sequences[J]. IEEE Transactions on Image Processing, 2011,20(6):1709-1724.
[17] 周志華. 機(jī)器學(xué)習(xí)(Machine Learning)[M]. 北京:清華大學(xué)出版社, 2016.
[18] 張杰,吳劍章,湯嘉立,等. 基于時(shí)空圖像分割和交互區(qū)域檢測的人體動作識別方法[J]. 計(jì)算機(jī)應(yīng)用研究, 2017,34(1):302-305.