孟 維 王計斌 魏東迎
南京華蘇科技有限公司
隨著監(jiān)控系統(tǒng)的發(fā)展,監(jiān)控系統(tǒng)的應用越來越多,若只通過人工來分析大量的視頻監(jiān)控,顯然不現(xiàn)實,且成本較高,因此傳統(tǒng)的人工解析已逐步不適用。機器視覺技術的快速發(fā)展為監(jiān)控系統(tǒng)帶來了解決方案。
視頻行為識別是視頻理解方向中的一個重要問題,迄今為止已經(jīng)研究多年。目前,視頻人體行為識別的方法按特征提取方式的不同分為兩類:一類是基于傳統(tǒng)手工特征的行為識別,其首先利用專家設計的特征提取視頻的底層行為特征,之后采取PCA(Principal Component Analysis)和白化(Whitening)對底層特征進行處理,之后再放入分類器中訓練,最終得到較好的分類器,可以實現(xiàn)視頻行為識別。基于手工特征的視頻行為識別方法中魯棒性最好的方法是Wang等提出的iDT方法;另一類是基于深度學習的方法,其利用迭代學習自動從視頻中提取深度學習的行為特征向量,然后再通過深度模型得到類別得分,并根據(jù)數(shù)據(jù)的標簽,利用反向傳播的方式調整網(wǎng)絡模型參數(shù),最終達到良好的分類效果。基于深度學習的行為識別方法的網(wǎng)絡結構主要有雙流網(wǎng)絡(Two-stream Network)、3D卷積網(wǎng)絡(3D Convolutional Network)和骨骼序列網(wǎng)絡三種。
本研究主要針對視頻人體行為識別,提出了一種基于深度學習的人體行為識別方法,改進了ST-GCN(Spatial Temporal Graph Convolutional Networks)算法和Deepsort目標跟蹤算法。
本研究的數(shù)據(jù)來源主要有三部分:一是開源數(shù)據(jù)集NTURGB+D,二是人工模擬拍攝,三是網(wǎng)絡視頻,如圖1所示。其中,識別動作類型分為五個類別:奔跑,走路,坐,站立,摔倒。

圖1 數(shù)據(jù)集來源
本研究通過人體姿態(tài)估計提取每個數(shù)據(jù)集的骨骼信息,并將18個關節(jié)點簡化為14個關節(jié)點。為增加樣本數(shù)量,本文采用數(shù)據(jù)增強的方式,對現(xiàn)有姿態(tài)估計結果進行骨骼關節(jié)點位置微調,即加入隨機擾動,這樣則能在保證姿態(tài)估計時間序列動作語義不變的情況下實現(xiàn)數(shù)據(jù)增強,實現(xiàn)增加樣本數(shù)量的目的。由于身體部位的運動可以被廣泛地歸類為同心運動和偏心運動,距離脖子關節(jié)點越近,運動幅度越小;離脖子關節(jié)點越遠,運動幅度大。根據(jù)這一運動特性,在進行骨骼關節(jié)點微調的時候,對于較遠的關節(jié)點給予較大的偏移范圍,較近的關節(jié)點給予較小的偏移范圍。其中偏移范圍計算公式如下:

xoffset為偏移范圍,ratio[xlabelt]表示該關節(jié)點可以調整的比例,distance表示該關節(jié)點至脖子的距離。為保證動作的語義不變形,數(shù)據(jù)增強前后,骨骼關節(jié)點存在細微的位置傾斜角度的變化,原姿態(tài)估計結果與數(shù)據(jù)增強后的姿態(tài)估計結果對比,如圖2所示。其中,左圖為原姿態(tài)估計結果,右圖為在原姿態(tài)估計結果上進行數(shù)據(jù)增強的結果,可以看出,對于a1與b1,關節(jié)點5、6的距離發(fā)生了變化,b1關節(jié)點的距離較a1的距離遠;對于a2與b2,關節(jié)點9、10的距離發(fā)生了變化,b2中關節(jié)點的距離較a2距離遠;對于a3與b3,關節(jié)點3與關節(jié)點5的偏移角度發(fā)生了變化,b3中,關節(jié)點5相較于關節(jié)點3的偏移角度比a3中小。

圖2 原姿態(tài)估計結果與數(shù)據(jù)增強后的字體估計結果對比
基于改進的ST-GCN的危險行為分析整體識別流程及中間結果,如圖3所示,首先是視頻流獲取,并進行人員檢測及跟蹤,然后進行人體姿態(tài)估計,再將姿態(tài)估計的結果進行行為識別,最后將最終識別后的結果形成視頻流推送。
在上述流程中,本研究提出了三個優(yōu)化方法。首先,改進DeepSort算法,減少了目標漏檢時人員不被繼續(xù)追蹤的問題;其次,通過精簡OpenPose的輸出,減少行為識別模型的輸入,以此來精簡模型,優(yōu)化速度;最后,針對固定攝像頭視野下的行為識別,本研究調整了模型結構,以獲得更好的識別效果。流程如圖3所示,其中:(1)輸入為視頻或視頻流;(2)對輸入進行基于YOLO的人員檢測和基于改進的DeepSort的跟蹤;(3)通過OpenPose進行骨骼關節(jié)點信息的預測,這里的預測結果包含骨骼的x、y坐標信息和置信度;(4)當某個被跟蹤的人的連續(xù)骨骼序列大于等于30的時候,取最近的30條骨骼時間序列進行基于改進的ST-GCN的行為分析,判斷是否存在危險行為;(5)最后將結果以視頻或視頻流的方式輸出。

圖3 基于改進的ST-GCN的危險行為識別整體識別流程及中間結果
為了識別危險行為,需檢測到視頻中每個單獨的個體,并在連續(xù)時間內,對檢測到的個體進行追蹤,當追蹤時間達到一定幀數(shù)時,再對這一段時間內的動作進行識別。因此,本研究采用YOLOV5來進行人員檢測,理想情況下,目標停在原地不動或移動緩慢且視頻畫面保持不變,該目標應該連續(xù)被跟蹤到,但有時會出現(xiàn)漏檢情況,導致跟蹤ID丟失。針對這種情況,本研究對跟蹤算法DeepSort進行了優(yōu)化,優(yōu)化前后的算法流程如圖4所示,其中a為針對漏檢情況改進的追蹤算法流程,b為針對漏檢情況原追蹤算法流程。

圖4 改進的DeepSort算法與原算法對比
如圖5所示,假設一段視頻中存在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的兩個檢測結果進行預測,得到T_a1、T_a2;之后進入b狀態(tài),b狀態(tài)下只檢測到一個人,通過匈牙利算法將T_a1、T_a2與D_b1進行級聯(lián)匹配,此時D_b1被分配為跟蹤id1,被檢測到的人沒有被分配跟蹤id,接下來再對狀態(tài)b的一個檢測結果進行預測,得到T_b1,由于T_a2沒有匹配到合適的檢測框,在b狀態(tài)下只對T_a2進行緩存,不做任何處理;之后進入狀態(tài)c,c狀態(tài)下檢測出兩個人D_c1、D_c2,通過匈牙利算法對檢測結果與上一幀的預測結果T_b1、T_a2進行匹配,獲取跟蹤id以及預測結果。但是對于b狀態(tài)持續(xù)時間較長的樣本,人員2由于一直保持向右上角移動,當進入c狀態(tài)的時候,人員2的檢測框與T_a2相較太遠,導致用匈牙利算法進行級聯(lián)匹配的時候,由于IOU代價過高,最終被過濾掉。
為解決上述問題,本研究對原有算法進行優(yōu)化,即當進入b狀態(tài)時,不再只對T_a2進行緩存,而是對T_a2進行卡爾曼濾波預測,保證該預測結果仍按照原有運動狀態(tài)運動,這樣再次進入狀態(tài)c的時候對T_a2進行卡爾曼濾波預測的結果與c狀態(tài)下的檢測結果距離不會太遠,使得丟失的目標再次被成功跟蹤上。
ST-GCN的模型結構如圖6所示。在原模型中,對于每一個被連續(xù)追蹤到的人員,可以用一個(3,T,V)的3維矩陣描述其在這一段時間內的行為:其中3代表骨骼關節(jié)點的坐標x、y和骨骼關節(jié)點的置信度,T代表時間序列的長度,在本研究中,T取30,V代表骨骼關節(jié)點的數(shù)量,模型精簡后為14個。

圖6 ST-GCN模型結構
由于危險行為檢測的場景許多都是在固定攝像頭視野下的,針對這種情況,本文在原有模型的基礎上增加了一個輸入(結構如圖7所示):由于在固定視野下,某個運動的個體的骨骼關節(jié)點位置,在上一幀與當前幀,是存在明顯差異的,利用這一明顯的差異,將前后幀的骨骼關節(jié)點的位置差作為另外一個輸入導入模型中。兩個輸入在進行一系列的TCN與GCN的操作之后,將輸出的結果拼接起來,最后再改變原模型中全連接層的輸入輸出參數(shù)的維度,即可預測出行為的類別。

圖7 改進的ST-GCN模型結構
原始DeepSort算法與優(yōu)化后的DeepSort算法結果對比,如表1所示。其中D表示檢測結果,T表示追蹤結果,K表示卡爾曼濾波。

表1 原DeepSort算法與優(yōu)化后的算法結果對比
優(yōu)化后的追蹤算法,在abc三種狀態(tài)下的檢測追蹤結果如圖8所示。其中,可以看到c狀態(tài)下,右側的人重新被跟蹤到并且仍被分配為原來的id。

圖8 三種狀態(tài)下的檢測追蹤示意圖
由于真實樣本集有限,大部分用于訓練模型,因此本研究只對40段真實場景下的數(shù)據(jù)集進行測試,并將其與未采用本文改進方法的結果進行對比,測試集上的準確率顯著提高。具體表現(xiàn)為,未使用改進的DeepSort算法、改進的ST-GCN算法的危險行為識別方法,在測試集上的準確率為82.5%;使用改進的DeepSort算法、改進的ST-GCN算法的危險行為識別方法,在測試集上的準確率為92.5%。如表2所示。

表2 實驗結果對比
本研究提出了一個危險行為識別的方法,首先視頻流獲取,并對人員檢測及跟蹤,其次人體姿態(tài)估計,根據(jù)姿態(tài)估計結果實現(xiàn)行為識別,最后將識別結果形成視頻流推送。
在該方法中本研究提出了三個優(yōu)化手段:一是針對漏檢情況,調整了跟蹤算法;二是針對模型精簡問題,減少了姿態(tài)估計貢獻較少的骨骼關節(jié)點信息;三是針對固定攝像頭視野下的行為識別,提出了改進的模型結構。實驗證明,本研究提出的三個優(yōu)化手段對模型的識別效果有顯著提升,且識別準確率提高10%。