楊志芳,李 乾
(武漢工程大學(xué) 電氣信息學(xué)院,武漢430205)
隨著監(jiān)控設(shè)備的普及,社會(huì)的治安管理越來(lái)越依賴于視頻圖像的辨識(shí),計(jì)算機(jī)視覺因此成為了一個(gè)備受關(guān)注的領(lǐng)域。隨著在行為監(jiān)控、異常行為監(jiān)測(cè)、老人智能看護(hù)、體育比賽等方面的人體行為識(shí)別的需求日益增加,對(duì)人體行為進(jìn)行準(zhǔn)確,快速的識(shí)別尤為重要[1-2]。目前行為識(shí)別方法主要分為基于傳統(tǒng)特征標(biāo)注的方法和基于深度學(xué)習(xí)的方法,傳統(tǒng)方法使用受限于特征向量的提取和編碼過(guò)程中會(huì)產(chǎn)生較高的時(shí)空復(fù)雜度,對(duì)算法性能影響極大。而基于深度學(xué)習(xí)的方法主要分為2D CNN 和3D CNN網(wǎng)絡(luò),3D CNN 網(wǎng)絡(luò)對(duì)于圖像采集設(shè)備要求過(guò)高,不適合實(shí)際的監(jiān)控設(shè)備部署[3]。目前研究人員大多基于目標(biāo)檢測(cè)來(lái)進(jìn)行多人行為識(shí)別的建模和研究,文獻(xiàn)[4]提出了一種改進(jìn)的運(yùn)動(dòng)歷史圖和基于能量塊的二維高斯濾波器的方法對(duì)人體的動(dòng)作信息進(jìn)行特征提??;文獻(xiàn)[5]提出了一種新的局部聚集描述符的時(shí)空向量方法。以上方法其難點(diǎn)在于由于無(wú)法準(zhǔn)確判斷圖像中的人數(shù),不能提取出有效的特征,最終導(dǎo)致行為識(shí)別準(zhǔn)確率不高。本文針對(duì)以上方法存在的問(wèn)題,提出了一種基于骨骼關(guān)鍵點(diǎn)的異常行為識(shí)別方法,該方法結(jié)合姿態(tài)估計(jì)、運(yùn)動(dòng)特征描述和行為分類來(lái)進(jìn)行異常行為識(shí)別,有效提高了準(zhǔn)確率,本文算法在公開數(shù)據(jù)集上得到了較好的實(shí)驗(yàn)結(jié)果。
基于骨骼關(guān)鍵點(diǎn)的異常行為檢測(cè)程序框圖如圖1 所示,其中包括圖像預(yù)處理模塊,關(guān)鍵點(diǎn)檢測(cè)模塊,運(yùn)動(dòng)特征描述模塊,行為分類模塊。
圖1 程序流程Fig.1 Procedure flow chart
圖像預(yù)處理模塊將輸入視頻進(jìn)行由視頻到圖像的轉(zhuǎn)換,采用25 幀每秒的標(biāo)準(zhǔn)進(jìn)行提取。提取的圖片進(jìn)行行為類別標(biāo)注后分為訓(xùn)練集和測(cè)試集。將圖片傳入關(guān)鍵點(diǎn)檢測(cè)模塊,模塊采用AS 模型進(jìn)行關(guān)鍵點(diǎn)的提取。將模型返回的數(shù)據(jù)進(jìn)行坐標(biāo)計(jì)算,得出關(guān)鍵點(diǎn)坐標(biāo)傳入運(yùn)動(dòng)特征描述模塊進(jìn)行運(yùn)動(dòng)特征矩陣的計(jì)算,將計(jì)算得出的運(yùn)動(dòng)描述矩陣作為運(yùn)動(dòng)特征傳入行為分析模塊,使用SVM 分類器進(jìn)行行為分類。
本文采用AS 模型[6]來(lái)進(jìn)行人體關(guān)鍵點(diǎn)檢測(cè),該模型通過(guò)使用關(guān)聯(lián)嵌入與堆疊沙漏網(wǎng)絡(luò)集成在一起,為每個(gè)身體關(guān)節(jié)生成檢測(cè)熱圖和標(biāo)記熱圖,然后將具有相似標(biāo)簽的身體關(guān)節(jié)分組到個(gè)人身上,通過(guò)高維空間的向量來(lái)編碼不同人體的不同關(guān)鍵點(diǎn)之間的關(guān)系,即同一個(gè)人的不同關(guān)鍵點(diǎn)在空間上是盡可能接近的,不同人的不同關(guān)鍵點(diǎn)在空間上是盡可能遠(yuǎn)離的,最后可以通過(guò)2 個(gè)關(guān)鍵點(diǎn)在高維空間上的距離來(lái)判斷2 個(gè)關(guān)鍵點(diǎn)是否屬于同一個(gè)人,從而達(dá)到聚類的目的。在COCO 數(shù)據(jù)集進(jìn)行訓(xùn)練,得到的17 個(gè)關(guān)鍵點(diǎn)坐標(biāo)信息,將提取的關(guān)鍵點(diǎn)坐標(biāo)采用NO0 到NO16 進(jìn)行標(biāo)記,如圖2 所示。
圖2 關(guān)鍵點(diǎn)位置示意圖Fig.2 Schematic diagram of key points
對(duì)于行為特征的描述采用傳統(tǒng)的目標(biāo)外接矩陣的長(zhǎng)寬比、重心坐標(biāo)等方法進(jìn)行衡量,需要對(duì)關(guān)鍵點(diǎn)坐標(biāo)進(jìn)行歸一化處理來(lái)消除模型得到的關(guān)鍵點(diǎn)位置坐標(biāo)受相機(jī)位置、 圖像分辨率等因素的影響,但歸一化的方法實(shí)現(xiàn)起來(lái)難度較大,且判斷結(jié)果受影響較大,也無(wú)法充分利用關(guān)鍵點(diǎn)坐標(biāo)信息。本文提出一種新的運(yùn)動(dòng)特征提取方法,經(jīng)過(guò)對(duì)各種行為過(guò)程中的關(guān)鍵點(diǎn)之間的數(shù)據(jù)分析,本文采用兩手腕與肩部形成的向量與軀干向量的夾角角速度,兩腳腕與膝蓋形成的向量與軀干向量的夾角角速度,肘彎曲部分角速度,腿彎曲部分角速度這4 個(gè)角速度的變化來(lái)描述人體運(yùn)動(dòng),計(jì)算公式如式(1)~式(3):
式中:ΔX 為兩點(diǎn)X 坐標(biāo)的差值;ΔY 為兩點(diǎn)Y 坐標(biāo)的差值;a tan 2 為計(jì)算反正切弧度值;計(jì)算角速度v 時(shí)需要進(jìn)行象限約束,將角度的值約束在(0°,180°)。
對(duì)于行為的描述采用目標(biāo)檢測(cè)的方法大多只能反映當(dāng)前幀的運(yùn)動(dòng)情況,加入時(shí)間軸描述信息會(huì)大大增加計(jì)算量導(dǎo)致運(yùn)行緩慢,本文基于骨骼關(guān)鍵描述運(yùn)動(dòng)特征,提出將每一幀中的每個(gè)對(duì)象的運(yùn)動(dòng)特征用一個(gè)向量進(jìn)行描述,提取該描述對(duì)象10 幀內(nèi)行為的動(dòng)作描述組成一個(gè)特征矩陣來(lái)描述行為,這樣可以更好的利用數(shù)據(jù),使描述更加可靠。式(4)為一幀的向量e,然后將10 幀的向量合成特征描述矩陣F,如式(5)所示:
本文采用SVM 進(jìn)行分類,SVM 是一種典型的二類器,本文采用“一對(duì)一”方法訓(xùn)練多個(gè)SVM 分類器進(jìn)行行為分類,對(duì)N 個(gè)分類通過(guò)構(gòu)建n(n-1)/2個(gè)支持向量機(jī),每個(gè)支持向量機(jī)訓(xùn)練2 種不同類別的數(shù)據(jù),最后分類的時(shí)候采取“投票”的方式?jīng)Q定分類結(jié)果。把選取的12 類異常行為各截取數(shù)據(jù)3000幀,形成300 的樣本,總計(jì)3600 樣本作為訓(xùn)練集進(jìn)行訓(xùn)練,采用SMO 方法進(jìn)行優(yōu)化訓(xùn)練。
用傳統(tǒng)的CPU 進(jìn)行關(guān)鍵點(diǎn)檢測(cè)計(jì)算時(shí)間太長(zhǎng),無(wú)法達(dá)到實(shí)時(shí)處理的要求。考慮到GPU 在體積和功耗方面對(duì)模型部署存在問(wèn)題。本文提出使用CPU+FPGA 對(duì)卷積神經(jīng)網(wǎng)絡(luò)模型進(jìn)行異構(gòu)并行加速處理。訓(xùn)練好的卷積神經(jīng)網(wǎng)絡(luò)模型需要進(jìn)行大量的運(yùn)算,使本文首先對(duì)訓(xùn)練好的卷積神經(jīng)網(wǎng)絡(luò)模型進(jìn)行優(yōu)化處理,然后使用FPGA 設(shè)計(jì)加速器來(lái)對(duì)優(yōu)化后的卷積神經(jīng)網(wǎng)絡(luò)模型進(jìn)行異構(gòu)加速處理,提高卷積神經(jīng)網(wǎng)絡(luò)的運(yùn)算速度。
本項(xiàng)目最終部署平臺(tái)為Intel 亞洲研究院推出的異構(gòu)可擴(kuò)展開放平臺(tái)(Heterogeneous Extension Robot Platform,HERO),其尺寸外觀和內(nèi)部結(jié)構(gòu)如圖3 所示。OpenVINO 工具包包含了OpenCV 庫(kù)、OpenVX 庫(kù)以及Intel OpenCL 運(yùn)行環(huán)境等多種工具組件,支持使用C/C++以及Python 語(yǔ)言進(jìn)行項(xiàng)目開發(fā),能夠?qū)τ?xùn)練好的模型進(jìn)行模型優(yōu)化并調(diào)用Intel的多種加速設(shè)備(GPU、FPGA 和VPU)進(jìn)行加速。
圖3 HERO 工具Fig.3 HERO tool
模型優(yōu)化是OpenVINO 工具的核心部分,其具體流程如圖4 所示。對(duì)于訓(xùn)練好的模型,首先轉(zhuǎn)換成onnx 模型,然后調(diào)用模型優(yōu)化器進(jìn)行優(yōu)化,將訓(xùn)練好的模型onnx 轉(zhuǎn)化為包含網(wǎng)絡(luò)權(quán)重的.bin 文件和包含網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)的.xml 文件的中間模型文件。最后調(diào)用FPGA 進(jìn)行加速,根據(jù)得出結(jié)果計(jì)算關(guān)鍵點(diǎn)坐標(biāo),使用關(guān)鍵點(diǎn)坐標(biāo)進(jìn)行特征矩陣的計(jì)算,最后送入訓(xùn)練好的SVM 分類器進(jìn)行行為分類。
圖4 FPGA 模型部署流程Fig.4 FPGA model deployment flow chart
實(shí)驗(yàn)所配置的硬件環(huán)境如表1 所示。
表1 硬件平臺(tái)Tab.1 Hardware platform
為了驗(yàn)證本文的準(zhǔn)確度,在數(shù)據(jù)集HMDB51 上選取毆打、擊劍等12 類異常行為訓(xùn)練進(jìn)行測(cè)試,選取KTH 數(shù)據(jù)集跑、 走等6 類常見行為進(jìn)行訓(xùn)練測(cè)試。在不同分辨率的輸入圖片中均能較好地檢測(cè)到人體關(guān)鍵點(diǎn),檢測(cè)效果圖如圖5 所示。
圖5 模型關(guān)鍵點(diǎn)檢測(cè)Fig.5 Model key point detection
從圖中可以看到as 模型可以在不同分辨率的圖片中準(zhǔn)確地檢測(cè)出人體關(guān)鍵點(diǎn),為后續(xù)提取二次特征提供了可靠的依據(jù)。為了驗(yàn)證本文的算法在準(zhǔn)確率方面的優(yōu)勢(shì),選取HMDB51 的12 類異常行為和KTH 中的常見行為進(jìn)行測(cè)試,對(duì)比文獻(xiàn)[7],文獻(xiàn)[8],文獻(xiàn)[9]和文獻(xiàn)[10]。結(jié)果如表2 所示,本文在準(zhǔn)確率上有較大提升。
表2 各數(shù)據(jù)集檢測(cè)結(jié)果Tab.2 Test results of each data set
為了探究FPGA 對(duì)CPU 的加速及各平臺(tái)部署效果,本文在HMDB51 數(shù)據(jù)集進(jìn)行測(cè)試,分別在CPU1、CPU1+FPGA 及CPU2+GPU 三種平臺(tái)上運(yùn)行算法進(jìn)行對(duì)比實(shí)驗(yàn)。實(shí)驗(yàn)對(duì)比了算法模型在CPU 與CPU+GPU 以及CPU+FPGA 端上各自的檢測(cè)精度、功耗、幀率。計(jì)算了不同平臺(tái)的能效比,結(jié)果如表3所示。
由表3 中可以看出,采用CPU+FPGA 的方案,可以大大加速模型的運(yùn)行時(shí)間達(dá)到了32 FPS 的速度,而且準(zhǔn)確率不會(huì)有較大的損失。雖然CPU+GPU的部署方案可以獲得更高的速度和幀率,但是在部署體積,特別是能效比方面,本文提出CPU+FPGA的部署方案更具備價(jià)值。
表3 不同平臺(tái)功耗對(duì)比Tab.3 Energy consumption ratio of each platform
本文提出的基于關(guān)鍵點(diǎn)的異常行為識(shí)別解決了目前異常行為識(shí)別領(lǐng)域檢測(cè)精度不足、檢測(cè)速度慢的缺點(diǎn)。對(duì)于存在模型部署困難的問(wèn)題,本文提出CPU+FPGA 的部署方案,在模型速度和準(zhǔn)確率還是能效比方面有較好的平衡。
本文采用的關(guān)鍵點(diǎn)檢測(cè)方案由于缺少三維深度信息,下一階段計(jì)劃引入深度信息估計(jì)進(jìn)行補(bǔ)充。