孟 維 王計斌 魏東迎
南京華蘇科技有限公司
隨著監(jiān)控系統(tǒng)的發(fā)展,監(jiān)控系統(tǒng)的應(yīng)用越來越多,若只通過人工來分析大量的視頻監(jiān)控,顯然不現(xiàn)實,且成本較高,因此傳統(tǒng)的人工解析已逐步不適用。機器視覺技術(shù)的快速發(fā)展為監(jiān)控系統(tǒng)帶來了解決方案。
視頻行為識別是視頻理解方向中的一個重要問題,迄今為止已經(jīng)研究多年。目前,視頻人體行為識別的方法按特征提取方式的不同分為兩類:一類是基于傳統(tǒng)手工特征的行為識別,其首先利用專家設(shè)計的特征提取視頻的底層行為特征,之后采取PCA(Principal Component Analysis)和白化(Whitening)對底層特征進(jìn)行處理,之后再放入分類器中訓(xùn)練,最終得到較好的分類器,可以實現(xiàn)視頻行為識別?;谑止ぬ卣鞯囊曨l行為識別方法中魯棒性最好的方法是Wang等提出的iDT方法;另一類是基于深度學(xué)習(xí)的方法,其利用迭代學(xué)習(xí)自動從視頻中提取深度學(xué)習(xí)的行為特征向量,然后再通過深度模型得到類別得分,并根據(jù)數(shù)據(jù)的標(biāo)簽,利用反向傳播的方式調(diào)整網(wǎng)絡(luò)模型參數(shù),最終達(dá)到良好的分類效果?;谏疃葘W(xué)習(xí)的行為識別方法的網(wǎng)絡(luò)結(jié)構(gòu)主要有雙流網(wǎng)絡(luò)(Two-stream Network)、3D卷積網(wǎng)絡(luò)(3D Convolutional Network)和骨骼序列網(wǎng)絡(luò)三種。
本研究主要針對視頻人體行為識別,提出了一種基于深度學(xué)習(xí)的人體行為識別方法,改進(jìn)了ST-GCN(Spatial Temporal Graph Convolutional Networks)算法和Deepsort目標(biāo)跟蹤算法。
本研究的數(shù)據(jù)來源主要有三部分:一是開源數(shù)據(jù)集NTURGB+D,二是人工模擬拍攝,三是網(wǎng)絡(luò)視頻,如圖1所示。其中,識別動作類型分為五個類別:奔跑,走路,坐,站立,摔倒。
圖1 數(shù)據(jù)集來源
本研究通過人體姿態(tài)估計提取每個數(shù)據(jù)集的骨骼信息,并將18個關(guān)節(jié)點簡化為14個關(guān)節(jié)點。為增加樣本數(shù)量,本文采用數(shù)據(jù)增強的方式,對現(xiàn)有姿態(tài)估計結(jié)果進(jìn)行骨骼關(guān)節(jié)點位置微調(diào),即加入隨機擾動,這樣則能在保證姿態(tài)估計時間序列動作語義不變的情況下實現(xiàn)數(shù)據(jù)增強,實現(xiàn)增加樣本數(shù)量的目的。由于身體部位的運動可以被廣泛地歸類為同心運動和偏心運動,距離脖子關(guān)節(jié)點越近,運動幅度越小;離脖子關(guān)節(jié)點越遠(yuǎn),運動幅度大。根據(jù)這一運動特性,在進(jìn)行骨骼關(guān)節(jié)點微調(diào)的時候,對于較遠(yuǎn)的關(guān)節(jié)點給予較大的偏移范圍,較近的關(guān)節(jié)點給予較小的偏移范圍。其中偏移范圍計算公式如下:
xoffset為偏移范圍,ratio[xlabelt]表示該關(guān)節(jié)點可以調(diào)整的比例,distance表示該關(guān)節(jié)點至脖子的距離。為保證動作的語義不變形,數(shù)據(jù)增強前后,骨骼關(guān)節(jié)點存在細(xì)微的位置傾斜角度的變化,原姿態(tài)估計結(jié)果與數(shù)據(jù)增強后的姿態(tài)估計結(jié)果對比,如圖2所示。其中,左圖為原姿態(tài)估計結(jié)果,右圖為在原姿態(tài)估計結(jié)果上進(jìn)行數(shù)據(jù)增強的結(jié)果,可以看出,對于a1與b1,關(guān)節(jié)點5、6的距離發(fā)生了變化,b1關(guān)節(jié)點的距離較a1的距離遠(yuǎn);對于a2與b2,關(guān)節(jié)點9、10的距離發(fā)生了變化,b2中關(guān)節(jié)點的距離較a2距離遠(yuǎn);對于a3與b3,關(guān)節(jié)點3與關(guān)節(jié)點5的偏移角度發(fā)生了變化,b3中,關(guān)節(jié)點5相較于關(guān)節(jié)點3的偏移角度比a3中小。
圖2 原姿態(tài)估計結(jié)果與數(shù)據(jù)增強后的字體估計結(jié)果對比
基于改進(jìn)的ST-GCN的危險行為分析整體識別流程及中間結(jié)果,如圖3所示,首先是視頻流獲取,并進(jìn)行人員檢測及跟蹤,然后進(jìn)行人體姿態(tài)估計,再將姿態(tài)估計的結(jié)果進(jìn)行行為識別,最后將最終識別后的結(jié)果形成視頻流推送。
在上述流程中,本研究提出了三個優(yōu)化方法。首先,改進(jìn)DeepSort算法,減少了目標(biāo)漏檢時人員不被繼續(xù)追蹤的問題;其次,通過精簡OpenPose的輸出,減少行為識別模型的輸入,以此來精簡模型,優(yōu)化速度;最后,針對固定攝像頭視野下的行為識別,本研究調(diào)整了模型結(jié)構(gòu),以獲得更好的識別效果。流程如圖3所示,其中:(1)輸入為視頻或視頻流;(2)對輸入進(jìn)行基于YOLO的人員檢測和基于改進(jìn)的DeepSort的跟蹤;(3)通過OpenPose進(jìn)行骨骼關(guān)節(jié)點信息的預(yù)測,這里的預(yù)測結(jié)果包含骨骼的x、y坐標(biāo)信息和置信度;(4)當(dāng)某個被跟蹤的人的連續(xù)骨骼序列大于等于30的時候,取最近的30條骨骼時間序列進(jìn)行基于改進(jìn)的ST-GCN的行為分析,判斷是否存在危險行為;(5)最后將結(jié)果以視頻或視頻流的方式輸出。
圖3 基于改進(jìn)的ST-GCN的危險行為識別整體識別流程及中間結(jié)果
為了識別危險行為,需檢測到視頻中每個單獨的個體,并在連續(xù)時間內(nèi),對檢測到的個體進(jìn)行追蹤,當(dāng)追蹤時間達(dá)到一定幀數(shù)時,再對這一段時間內(nèi)的動作進(jìn)行識別。因此,本研究采用YOLOV5來進(jìn)行人員檢測,理想情況下,目標(biāo)停在原地不動或移動緩慢且視頻畫面保持不變,該目標(biāo)應(yīng)該連續(xù)被跟蹤到,但有時會出現(xiàn)漏檢情況,導(dǎo)致跟蹤ID丟失。針對這種情況,本研究對跟蹤算法DeepSort進(jìn)行了優(yōu)化,優(yōu)化前后的算法流程如圖4所示,其中a為針對漏檢情況改進(jìn)的追蹤算法流程,b為針對漏檢情況原追蹤算法流程。
圖4 改進(jìn)的DeepSort算法與原算法對比
如圖5所示,假設(shè)一段視頻中存在a、b、c三個連續(xù)的狀態(tài),其中a狀態(tài)為兩個人都檢測到了,b狀態(tài)為有一個人沒有被檢測到,c狀態(tài)為兩個人都再次被檢測到。人員1幾乎保持靜止,人員2向右上角移動。
圖5 三種狀態(tài)示意圖
原跟蹤算法為:a狀態(tài)下檢測出兩個人,并為這兩人分配跟蹤id1和id2,再對狀態(tài)a的兩個檢測結(jié)果進(jìn)行預(yù)測,得到T_a1、T_a2;之后進(jìn)入b狀態(tài),b狀態(tài)下只檢測到一個人,通過匈牙利算法將T_a1、T_a2與D_b1進(jìn)行級聯(lián)匹配,此時D_b1被分配為跟蹤id1,被檢測到的人沒有被分配跟蹤id,接下來再對狀態(tài)b的一個檢測結(jié)果進(jìn)行預(yù)測,得到T_b1,由于T_a2沒有匹配到合適的檢測框,在b狀態(tài)下只對T_a2進(jìn)行緩存,不做任何處理;之后進(jìn)入狀態(tài)c,c狀態(tài)下檢測出兩個人D_c1、D_c2,通過匈牙利算法對檢測結(jié)果與上一幀的預(yù)測結(jié)果T_b1、T_a2進(jìn)行匹配,獲取跟蹤id以及預(yù)測結(jié)果。但是對于b狀態(tài)持續(xù)時間較長的樣本,人員2由于一直保持向右上角移動,當(dāng)進(jìn)入c狀態(tài)的時候,人員2的檢測框與T_a2相較太遠(yuǎn),導(dǎo)致用匈牙利算法進(jìn)行級聯(lián)匹配的時候,由于IOU代價過高,最終被過濾掉。
為解決上述問題,本研究對原有算法進(jìn)行優(yōu)化,即當(dāng)進(jìn)入b狀態(tài)時,不再只對T_a2進(jìn)行緩存,而是對T_a2進(jìn)行卡爾曼濾波預(yù)測,保證該預(yù)測結(jié)果仍按照原有運動狀態(tài)運動,這樣再次進(jìn)入狀態(tài)c的時候?qū)_a2進(jìn)行卡爾曼濾波預(yù)測的結(jié)果與c狀態(tài)下的檢測結(jié)果距離不會太遠(yuǎn),使得丟失的目標(biāo)再次被成功跟蹤上。
ST-GCN的模型結(jié)構(gòu)如圖6所示。在原模型中,對于每一個被連續(xù)追蹤到的人員,可以用一個(3,T,V)的3維矩陣描述其在這一段時間內(nèi)的行為:其中3代表骨骼關(guān)節(jié)點的坐標(biāo)x、y和骨骼關(guān)節(jié)點的置信度,T代表時間序列的長度,在本研究中,T取30,V代表骨骼關(guān)節(jié)點的數(shù)量,模型精簡后為14個。
圖6 ST-GCN模型結(jié)構(gòu)
由于危險行為檢測的場景許多都是在固定攝像頭視野下的,針對這種情況,本文在原有模型的基礎(chǔ)上增加了一個輸入(結(jié)構(gòu)如圖7所示):由于在固定視野下,某個運動的個體的骨骼關(guān)節(jié)點位置,在上一幀與當(dāng)前幀,是存在明顯差異的,利用這一明顯的差異,將前后幀的骨骼關(guān)節(jié)點的位置差作為另外一個輸入導(dǎo)入模型中。兩個輸入在進(jìn)行一系列的TCN與GCN的操作之后,將輸出的結(jié)果拼接起來,最后再改變原模型中全連接層的輸入輸出參數(shù)的維度,即可預(yù)測出行為的類別。
圖7 改進(jìn)的ST-GCN模型結(jié)構(gòu)
原始DeepSort算法與優(yōu)化后的DeepSort算法結(jié)果對比,如表1所示。其中D表示檢測結(jié)果,T表示追蹤結(jié)果,K表示卡爾曼濾波。
表1 原DeepSort算法與優(yōu)化后的算法結(jié)果對比
優(yōu)化后的追蹤算法,在abc三種狀態(tài)下的檢測追蹤結(jié)果如圖8所示。其中,可以看到c狀態(tài)下,右側(cè)的人重新被跟蹤到并且仍被分配為原來的id。
圖8 三種狀態(tài)下的檢測追蹤示意圖
由于真實樣本集有限,大部分用于訓(xùn)練模型,因此本研究只對40段真實場景下的數(shù)據(jù)集進(jìn)行測試,并將其與未采用本文改進(jìn)方法的結(jié)果進(jìn)行對比,測試集上的準(zhǔn)確率顯著提高。具體表現(xiàn)為,未使用改進(jìn)的DeepSort算法、改進(jìn)的ST-GCN算法的危險行為識別方法,在測試集上的準(zhǔn)確率為82.5%;使用改進(jìn)的DeepSort算法、改進(jìn)的ST-GCN算法的危險行為識別方法,在測試集上的準(zhǔn)確率為92.5%。如表2所示。
表2 實驗結(jié)果對比
本研究提出了一個危險行為識別的方法,首先視頻流獲取,并對人員檢測及跟蹤,其次人體姿態(tài)估計,根據(jù)姿態(tài)估計結(jié)果實現(xiàn)行為識別,最后將識別結(jié)果形成視頻流推送。
在該方法中本研究提出了三個優(yōu)化手段:一是針對漏檢情況,調(diào)整了跟蹤算法;二是針對模型精簡問題,減少了姿態(tài)估計貢獻(xiàn)較少的骨骼關(guān)節(jié)點信息;三是針對固定攝像頭視野下的行為識別,提出了改進(jìn)的模型結(jié)構(gòu)。實驗證明,本研究提出的三個優(yōu)化手段對模型的識別效果有顯著提升,且識別準(zhǔn)確率提高10%。