楊志芳,李 乾
(武漢工程大學 電氣信息學院,武漢430205)
隨著監控設備的普及,社會的治安管理越來越依賴于視頻圖像的辨識,計算機視覺因此成為了一個備受關注的領域。隨著在行為監控、異常行為監測、老人智能看護、體育比賽等方面的人體行為識別的需求日益增加,對人體行為進行準確,快速的識別尤為重要[1-2]。目前行為識別方法主要分為基于傳統特征標注的方法和基于深度學習的方法,傳統方法使用受限于特征向量的提取和編碼過程中會產生較高的時空復雜度,對算法性能影響極大。而基于深度學習的方法主要分為2D CNN 和3D CNN網絡,3D CNN 網絡對于圖像采集設備要求過高,不適合實際的監控設備部署[3]。目前研究人員大多基于目標檢測來進行多人行為識別的建模和研究,文獻[4]提出了一種改進的運動歷史圖和基于能量塊的二維高斯濾波器的方法對人體的動作信息進行特征提取;文獻[5]提出了一種新的局部聚集描述符的時空向量方法。以上方法其難點在于由于無法準確判斷圖像中的人數,不能提取出有效的特征,最終導致行為識別準確率不高。本文針對以上方法存在的問題,提出了一種基于骨骼關鍵點的異常行為識別方法,該方法結合姿態估計、運動特征描述和行為分類來進行異常行為識別,有效提高了準確率,本文算法在公開數據集上得到了較好的實驗結果。
基于骨骼關鍵點的異常行為檢測程序框圖如圖1 所示,其中包括圖像預處理模塊,關鍵點檢測模塊,運動特征描述模塊,行為分類模塊。

圖1 程序流程Fig.1 Procedure flow chart
圖像預處理模塊將輸入視頻進行由視頻到圖像的轉換,采用25 幀每秒的標準進行提取。提取的圖片進行行為類別標注后分為訓練集和測試集。將圖片傳入關鍵點檢測模塊,模塊采用AS 模型進行關鍵點的提取。將模型返回的數據進行坐標計算,得出關鍵點坐標傳入運動特征描述模塊進行運動特征矩陣的計算,將計算得出的運動描述矩陣作為運動特征傳入行為分析模塊,使用SVM 分類器進行行為分類。
本文采用AS 模型[6]來進行人體關鍵點檢測,該模型通過使用關聯嵌入與堆疊沙漏網絡集成在一起,為每個身體關節生成檢測熱圖和標記熱圖,然后將具有相似標簽的身體關節分組到個人身上,通過高維空間的向量來編碼不同人體的不同關鍵點之間的關系,即同一個人的不同關鍵點在空間上是盡可能接近的,不同人的不同關鍵點在空間上是盡可能遠離的,最后可以通過2 個關鍵點在高維空間上的距離來判斷2 個關鍵點是否屬于同一個人,從而達到聚類的目的。在COCO 數據集進行訓練,得到的17 個關鍵點坐標信息,將提取的關鍵點坐標采用NO0 到NO16 進行標記,如圖2 所示。

圖2 關鍵點位置示意圖Fig.2 Schematic diagram of key points
對于行為特征的描述采用傳統的目標外接矩陣的長寬比、重心坐標等方法進行衡量,需要對關鍵點坐標進行歸一化處理來消除模型得到的關鍵點位置坐標受相機位置、 圖像分辨率等因素的影響,但歸一化的方法實現起來難度較大,且判斷結果受影響較大,也無法充分利用關鍵點坐標信息。本文提出一種新的運動特征提取方法,經過對各種行為過程中的關鍵點之間的數據分析,本文采用兩手腕與肩部形成的向量與軀干向量的夾角角速度,兩腳腕與膝蓋形成的向量與軀干向量的夾角角速度,肘彎曲部分角速度,腿彎曲部分角速度這4 個角速度的變化來描述人體運動,計算公式如式(1)~式(3):

式中:ΔX 為兩點X 坐標的差值;ΔY 為兩點Y 坐標的差值;a tan 2 為計算反正切弧度值;計算角速度v 時需要進行象限約束,將角度的值約束在(0°,180°)。
對于行為的描述采用目標檢測的方法大多只能反映當前幀的運動情況,加入時間軸描述信息會大大增加計算量導致運行緩慢,本文基于骨骼關鍵描述運動特征,提出將每一幀中的每個對象的運動特征用一個向量進行描述,提取該描述對象10 幀內行為的動作描述組成一個特征矩陣來描述行為,這樣可以更好的利用數據,使描述更加可靠。式(4)為一幀的向量e,然后將10 幀的向量合成特征描述矩陣F,如式(5)所示:

本文采用SVM 進行分類,SVM 是一種典型的二類器,本文采用“一對一”方法訓練多個SVM 分類器進行行為分類,對N 個分類通過構建n(n-1)/2個支持向量機,每個支持向量機訓練2 種不同類別的數據,最后分類的時候采取“投票”的方式決定分類結果。把選取的12 類異常行為各截取數據3000幀,形成300 的樣本,總計3600 樣本作為訓練集進行訓練,采用SMO 方法進行優化訓練。
用傳統的CPU 進行關鍵點檢測計算時間太長,無法達到實時處理的要求。考慮到GPU 在體積和功耗方面對模型部署存在問題。本文提出使用CPU+FPGA 對卷積神經網絡模型進行異構并行加速處理。訓練好的卷積神經網絡模型需要進行大量的運算,使本文首先對訓練好的卷積神經網絡模型進行優化處理,然后使用FPGA 設計加速器來對優化后的卷積神經網絡模型進行異構加速處理,提高卷積神經網絡的運算速度。
本項目最終部署平臺為Intel 亞洲研究院推出的異構可擴展開放平臺(Heterogeneous Extension Robot Platform,HERO),其尺寸外觀和內部結構如圖3 所示。OpenVINO 工具包包含了OpenCV 庫、OpenVX 庫以及Intel OpenCL 運行環境等多種工具組件,支持使用C/C++以及Python 語言進行項目開發,能夠對訓練好的模型進行模型優化并調用Intel的多種加速設備(GPU、FPGA 和VPU)進行加速。

圖3 HERO 工具Fig.3 HERO tool
模型優化是OpenVINO 工具的核心部分,其具體流程如圖4 所示。對于訓練好的模型,首先轉換成onnx 模型,然后調用模型優化器進行優化,將訓練好的模型onnx 轉化為包含網絡權重的.bin 文件和包含網絡拓撲結構的.xml 文件的中間模型文件。最后調用FPGA 進行加速,根據得出結果計算關鍵點坐標,使用關鍵點坐標進行特征矩陣的計算,最后送入訓練好的SVM 分類器進行行為分類。

圖4 FPGA 模型部署流程Fig.4 FPGA model deployment flow chart
實驗所配置的硬件環境如表1 所示。

表1 硬件平臺Tab.1 Hardware platform
為了驗證本文的準確度,在數據集HMDB51 上選取毆打、擊劍等12 類異常行為訓練進行測試,選取KTH 數據集跑、 走等6 類常見行為進行訓練測試。在不同分辨率的輸入圖片中均能較好地檢測到人體關鍵點,檢測效果圖如圖5 所示。

圖5 模型關鍵點檢測Fig.5 Model key point detection
從圖中可以看到as 模型可以在不同分辨率的圖片中準確地檢測出人體關鍵點,為后續提取二次特征提供了可靠的依據。為了驗證本文的算法在準確率方面的優勢,選取HMDB51 的12 類異常行為和KTH 中的常見行為進行測試,對比文獻[7],文獻[8],文獻[9]和文獻[10]。結果如表2 所示,本文在準確率上有較大提升。

表2 各數據集檢測結果Tab.2 Test results of each data set
為了探究FPGA 對CPU 的加速及各平臺部署效果,本文在HMDB51 數據集進行測試,分別在CPU1、CPU1+FPGA 及CPU2+GPU 三種平臺上運行算法進行對比實驗。實驗對比了算法模型在CPU 與CPU+GPU 以及CPU+FPGA 端上各自的檢測精度、功耗、幀率。計算了不同平臺的能效比,結果如表3所示。
由表3 中可以看出,采用CPU+FPGA 的方案,可以大大加速模型的運行時間達到了32 FPS 的速度,而且準確率不會有較大的損失。雖然CPU+GPU的部署方案可以獲得更高的速度和幀率,但是在部署體積,特別是能效比方面,本文提出CPU+FPGA的部署方案更具備價值。

表3 不同平臺功耗對比Tab.3 Energy consumption ratio of each platform
本文提出的基于關鍵點的異常行為識別解決了目前異常行為識別領域檢測精度不足、檢測速度慢的缺點。對于存在模型部署困難的問題,本文提出CPU+FPGA 的部署方案,在模型速度和準確率還是能效比方面有較好的平衡。
本文采用的關鍵點檢測方案由于缺少三維深度信息,下一階段計劃引入深度信息估計進行補充。