莫宏偉,汪海波
人體行為檢測作為人機交互的重要技術(shù)始終受到計算機視覺的廣泛關(guān)注。但在現(xiàn)實環(huán)境中存在的一些繁雜背景、人體被物體遮蓋、人體動作千姿百態(tài)等問題,使得人體行為檢測任務(wù)難度較大。
近幾年深度學(xué)習(xí)在圖像檢測領(lǐng)域獲得長足發(fā)展,各種網(wǎng)絡(luò)結(jié)構(gòu)層出不窮,但是所用的訓(xùn)練方式都是隨機梯度下降算法,該算法簡單高效,但是需要訓(xùn)練者自主設(shè)置超參數(shù),調(diào)參過程乏味而耗時,批量規(guī)范化(batch normalization, BN)[1]算法是針對該問題提出的,作為2016年以來深度學(xué)習(xí)領(lǐng)域的重要研究結(jié)果,已成為深度學(xué)習(xí)算法的重要組成部分。
R-CNN(regions with CNN features)[2]模型是應(yīng)用于物體檢測任務(wù)的經(jīng)典算法,該模型的算法思路是首先讀入圖像后為輸入的圖像生成大約2 000個類別獨立的候選區(qū)域,之后使用卷積神經(jīng)網(wǎng)絡(luò)從每個候選區(qū)域中獲取長度相同的特征向量,然后使用支持向量機(SVM)[3]對每一個候選區(qū)域中的物體進行檢測分類[4]。R-CNN模型采用圖像仿射變形計算每一個候選窗口固定大小的卷積神經(jīng)網(wǎng)絡(luò)輸入,不受窗口形狀影響。
在R-CNN基礎(chǔ)上發(fā)展而來的Fast R-CNN[5]、Faster R-CNN[6]等在物體檢測方面更為有效。Fast R-CNN模型基于R-CNN模型融合了SPPNet[7]網(wǎng)絡(luò)特點,提高訓(xùn)練和測試速度,同時提高了模型檢測精度。Fast R-CNN模型主要解決了R-CNN和SPPNet 3個方面的問題:測試速度慢、訓(xùn)練速度慢和訓(xùn)練占用空間大。
傳統(tǒng)目標(biāo)檢測方法包括有區(qū)域建議方法和基于區(qū)域的卷積神經(jīng)網(wǎng)絡(luò)的方法,但基于區(qū)域的卷積神經(jīng)網(wǎng)絡(luò)計算量較大,之后通過共享卷積大大降低了深度計算量,F(xiàn)ast R-CNN可以用非常深的網(wǎng)絡(luò)實現(xiàn)了接近實時的檢測速度,這是在忽略生成區(qū)域建議框的基礎(chǔ)之上實現(xiàn)的,因此如何降低區(qū)域建議框的生成時間成為制約卷積神經(jīng)網(wǎng)絡(luò)在目標(biāo)檢測領(lǐng)域應(yīng)用的一大瓶頸。Faster R-CNN網(wǎng)絡(luò)通過RPN網(wǎng)絡(luò)生成區(qū)域建議框,結(jié)合到Fast R-CNN網(wǎng)絡(luò)進行訓(xùn)練,兩者共享卷積層,極大降低了計算復(fù)雜度。
在人體行為檢測方面,Ji等[8]在研究中將卷積神經(jīng)網(wǎng)絡(luò)拓展到三維形式,設(shè)計出了3-D卷積神經(jīng)網(wǎng)絡(luò)(3-D convolutional neural networks,3-D CNN),提出了由3-D卷積操作進行視頻信息時空特性獲取的方法。作者在KTH人體行為數(shù)據(jù)庫上采用這一方法進行了測試,獲得了90.2%的識別正確率。
Karpathy等[9]采用Sports-1M數(shù)據(jù)集對卷積神經(jīng)網(wǎng)絡(luò)進行訓(xùn)練。在框架級別處理所有視頻,使用近似重復(fù)查找算法確定了具體視頻中包含的重復(fù)幀數(shù),實驗結(jié)果顯示了盡管存在著小部分標(biāo)簽錯誤的干擾,但是網(wǎng)絡(luò)仍然能夠保持著較好的學(xué)習(xí)狀態(tài)。
Sun等[10]采用慢特征分析方法(slow feature analysis,SFA)來實現(xiàn)人體行為檢測任務(wù)。慢特征分析方法可以從輸入的圖像信息中學(xué)習(xí)不變或微弱改變的特征,研究人員將SFA方法與深度學(xué)習(xí)技術(shù)結(jié)合起來,用以學(xué)習(xí)視頻數(shù)據(jù)本身的層次表示,使用具有3-D卷積和最大池化操作的雙層SFA學(xué)習(xí)結(jié)構(gòu),將方法擴展到大型輸入,并從視頻中捕獲抽象的結(jié)構(gòu)特征,這一方法在Hollywood2,KTH和UCF Sports等體行為數(shù)據(jù)集上的測試也獲得了很好的檢測效果。
Donahue等[11]提出了一個長期遞歸卷積網(wǎng)絡(luò)模型。結(jié)合深層次的視覺特征提取器(例如CNN)和模型,可以用于學(xué)習(xí)識別語言、視覺信息等任務(wù),科研人員將這一方法應(yīng)用到人體行為檢測任務(wù)中,并且在UCF101數(shù)據(jù)集上檢驗了模型的準(zhǔn)確性。
Gkioxari等[12]提出了利用卷積神經(jīng)網(wǎng)絡(luò)進行人體姿勢預(yù)測和人體行為檢測的方法,在PASCAL VOC數(shù)據(jù)集上對這一方法進行了檢驗,并將其與已有的主要方法進行了對比。
Gkioxari等[13]提出了一種根據(jù)圖像中的情境線索來進行人體行為檢測的方法,并取得了較高的識別正確率,此外這一方法還可用于屬性分類任務(wù)。Khan等[14]提出了一種語義金字塔的姿態(tài)歸一化方法來識別靜態(tài)圖像中的人體行為,并在PASCAL VOC 2010和stanford-40數(shù)據(jù)集上進行測試,取得了較高的識別精度。
Christoph等[15]提出了一種通用卷積構(gòu)架,這一架構(gòu)基于時空特征的乘性交互對視頻中人體行為進行檢測。此架構(gòu)是完全時空卷積,并能夠在單一的視頻通道進行視頻評估。實驗表明,該模型在兩個標(biāo)準(zhǔn)動作數(shù)據(jù)集上均具有較好的效果。
Gkioxari等[16]通過研究人體部件對動作和屬性分類的重要性,提出了一種基于人體部件,利用卷積神經(jīng)網(wǎng)絡(luò)進行人體行為檢測的方法。實驗表明,該方法對人體動作的分類具有較好的效果。
Kar等[17]提出了一種新的視頻幀合并方法,用于人類行為檢測的任務(wù)。該方法發(fā)現(xiàn)少量的視頻幀有可能包含了足夠的信息,以此為依據(jù)進行視頻中的行為分類。并在兩個標(biāo)準(zhǔn)數(shù)據(jù)集上實驗,實現(xiàn)了較高的識別效果。
Feichtenhofer等[18]將雙流卷積神經(jīng)網(wǎng)絡(luò)和殘差網(wǎng)絡(luò)ResNet進行結(jié)合,提出了一種時空域上的人體行為檢測方法,該方法依然使用了兩個流,運動流和外觀流,運動流接收的輸入依然是堆疊的多幀光流灰度圖片。該方法刷新了HMDB51數(shù)據(jù)庫和UCF101數(shù)據(jù)庫行為檢測的精度。
Herath等[19]對過去10年的人體行為檢測從傳統(tǒng)方法到深度學(xué)習(xí)的方法進行了系統(tǒng)的綜述,籌集了新的問題,對人體行為檢測的進一步研究指明了方向。
中國科學(xué)技術(shù)大學(xué)鄧?yán)貉芯繄F隊[20]提出了一種以動作檢索表為主要依據(jù)的識別方法,該方法提出了將動作信息分割成5個片段,然后針對各片段執(zhí)行聚類操作和映射操作等,每種動作的檢測任務(wù)都需要經(jīng)過全局檢索對比和類型匹配等操作來完成。申曉霞等[21]提出了基于深度圖和RGB圖像的行為描述算法,并將其應(yīng)用到了人體行為檢測領(lǐng)域;王忠民等[22]將卷積神經(jīng)網(wǎng)絡(luò)應(yīng)用于人體行為檢測中,在應(yīng)用中將經(jīng)過簡單處理的原始數(shù)據(jù)直接作為卷積神經(jīng)網(wǎng)絡(luò)的輸入,然后由卷積神經(jīng)網(wǎng)絡(luò)進行特征獲取,再將得到的特征交由分類器執(zhí)行分類操作,該方法對測試人員的行為識別正確率達到了84.8%,驗證了算法的有效性;遲元峰等[23]通過對卷積神經(jīng)網(wǎng)絡(luò)和循環(huán)神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)的研究分析,提出了一種新的深度神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)用于檢測視頻中的人體行為,實驗結(jié)果表現(xiàn)出了該方法應(yīng)用在人體行為檢測方面所取得的良好效果;朱煜等[24]對近年來人體行為檢測方法出現(xiàn)的新進展進行了分析總結(jié)和算法綜述。
BN層的基本思想很直觀:BN就是通過一定的規(guī)范化手段,把每層神經(jīng)網(wǎng)絡(luò)任意神經(jīng)元輸入值的分布強行拉回到均值為0,方差為1的標(biāo)準(zhǔn)正態(tài)分布,這樣可以大大加快訓(xùn)練速度,同時避免了因參數(shù)變化而導(dǎo)致的梯度消失的問題。
如果說批量規(guī)范化算法是在網(wǎng)絡(luò)的結(jié)構(gòu)上對算法進行優(yōu)化,那么在線難例挖掘(online-hard-example-mining,OHEM)[25]算法則關(guān)注如何利用現(xiàn)有的樣本對網(wǎng)絡(luò)進行更有效的訓(xùn)練。
在Fast R-CNN算法中提出的mini-batch用來進行隨機梯度下降時并不具有高效和最優(yōu)的狀態(tài),而OHEM算法可以取得更低的訓(xùn)練損失和更高的平均類別和位置精度(mAP)。最初的OHEM算法與Fast R-CNN進行結(jié)合使檢測算法得到了一定程度的提升,所以在理論上將OHEM算法與Faster R-CNN算法進行結(jié)合,可以進一步提高Faster R-CNN的檢測效果。
簡單來說,OHEM算法就是從RoI中選擇難例,而不是簡單的采用。難例挖掘一般需要迭代地進行模型的訓(xùn)練和用模型尋找難例,這些難例無非就是那些分錯了并且置信度還很高的樣本,這要是放在網(wǎng)絡(luò)里面,這個樣本對應(yīng)的訓(xùn)練損失就應(yīng)該很大,因此一個基本思路是利用網(wǎng)絡(luò)訓(xùn)練損失找到這些難例,具體方法如下:
1)對于一張輸入圖像,首先利用卷積網(wǎng)絡(luò)計算出特征圖。
2)RoI網(wǎng)絡(luò)利用1)中計算好的特征圖和RPN網(wǎng)絡(luò)得到的RoI進行一次前向傳播,最后的loss表示RoI網(wǎng)絡(luò)對這個RoI檢測的好壞程度,將每一個RoI對應(yīng)的loss進行排序,取前面B/N個RoI進行反向傳播。
3)因為在同一張圖中的RoI很多之間相互重疊,如果一個RoI是難例,那么和它重疊較大的RoI很大程度上也是難例,這樣在反向傳播的時候就進行了一次重復(fù)的梯度計算。為了避免這種情況,首先根據(jù)損失大小進行排序,然后進行非極大值抑制,最后再選擇B/N個RoI進行反向傳播,實驗中,非極大值抑制的閾值選取0.7。
4)提出的在線難例挖掘算法主要是通過兩個RoI網(wǎng)絡(luò)實現(xiàn)的:只讀RoI網(wǎng)絡(luò)(圖1上部分所示)和標(biāo)準(zhǔn)RoI網(wǎng)絡(luò)(圖1下部分所示),只讀的RoI網(wǎng)絡(luò)進行前向傳播并計算出所有的RoI的損失;之后標(biāo)準(zhǔn)RoI樣本挖掘模塊進行樣本挖掘,得到困難樣本并輸入到只讀RoI網(wǎng)絡(luò)中,網(wǎng)絡(luò)只讀困難樣本進行前向和后向傳播,計算梯度并傳播到卷積神經(jīng)網(wǎng)絡(luò)。
圖1 Faster_RCNN_OHEM算法原理圖Fig. 1 Faster R_CNN_OHEM algorithm schematic
在改進算法中,首先使用更深的預(yù)訓(xùn)練模型ResNet進行參數(shù)初始化和特征提取。其次使用BN算法對輸入樣本和隱藏層中的每個輸入都進行批量規(guī)范化處理,以允許網(wǎng)絡(luò)使用較大的學(xué)習(xí)速率進行訓(xùn)練,加快網(wǎng)絡(luò)的訓(xùn)練速度,具體做法如圖2所示。最后使用OHEM算法選擇難例進行前向和后向傳播,計算梯度并傳播到卷積神經(jīng)網(wǎng)絡(luò),以獲得更低的訓(xùn)練損失和更高的類別和位置精度。改進算法的整體流程見圖2。
圖2 批量規(guī)范化處理Fig. 2 Batch normalization
本文實驗數(shù)據(jù)是從VOC 2012 Action選取包括8個目標(biāo)類別的人體行為數(shù)據(jù)集,3 347張標(biāo)記圖像,每類動作大約400張。在數(shù)據(jù)集中,訓(xùn)練驗證集大約占整個數(shù)據(jù)集的50%,測試集大約占整個數(shù)據(jù)集的50%,訓(xùn)練集大約是訓(xùn)練驗證集的50%,驗證集大約占訓(xùn)練驗證集的50%。算法利用caffe開源框架,在Ubuntu14.04系統(tǒng)下實現(xiàn),所用的計算機配置是,顯卡為GeForce GTX1080Ti,內(nèi)存11 GB。
使用變學(xué)習(xí)率策略訓(xùn)練改進的Faster R-CNN算法模型,初始學(xué)習(xí)率Base_lr為:0.001,批大小Batchs為128,訓(xùn)練步數(shù)Stepsize為6 000,變學(xué)習(xí)率參數(shù)gamma為0.1。采用了變學(xué)習(xí)率策略公式:
式中iter為當(dāng)前的迭代次數(shù)。
合硬件條件和學(xué)習(xí)效率之后,在用Fast R-CNN進行人體行為檢測時選擇Batch_size為128。
Faster R-CNN模型訓(xùn)練階段使用訓(xùn)練好的ResNet模型參數(shù)對RPN模型進行初始化,然后獨立地對RPN模型進行訓(xùn)練,之后依舊采用在ImageNet上訓(xùn)練好的ResNet模型參數(shù)對Fast R-CNN模型參數(shù)進行初始化,可以看出RPN網(wǎng)絡(luò)與Fast R-CNN模型的訓(xùn)練是單獨進行的,兩個網(wǎng)絡(luò)不進行參數(shù)共享,將上一步中RPN模型生成的建議窗口作為輸入樣本對Fast R-CNN模型進行訓(xùn)練,再使用訓(xùn)練后的Fast R-CNN模型參數(shù)對RPN模型再次初始化,但不更新RPN與Fast R-CNN共享的卷積層參數(shù),僅對RPN網(wǎng)絡(luò)特有層參數(shù)進行更新,再進行訓(xùn)練,此時已實現(xiàn)了兩個共享,之后再對Fast R-CNN模型進行訓(xùn)練,如此交替進行訓(xùn)練。
在訓(xùn)練之前首先修改文件中的相關(guān)的參數(shù),將類型換成人體行為數(shù)據(jù)集中的標(biāo)簽。將相應(yīng)輸出的類別數(shù)改為類別數(shù)加一(類別加上背景)。
測試的結(jié)果見表1。表2為ZF+RPN、VGG+RPN實驗結(jié)果和改進算法的實驗結(jié)果。
表 1 改進Faster R-CNN算法檢測各類別的AP值Table 1 AP of actions of improved Faster R-CN
表 2 ZF和VGG16的mAPTable 2 mAP for ZF and VGG16
圖3為ZF+RPN、VGG+RPN和改進算法識別:8個類別的平均精度(AP)柱狀圖。
圖3 3種方法的AP比較Fig. 3 AP comparison of three methods
在測試數(shù)據(jù)中隨機選取了12張人體行為圖片進行抽樣測試,測試的結(jié)果分別展現(xiàn)在圖4~5中。圖4表示未改進算法的測試結(jié)果,從左至右從上至下的人體行為分別為騎馬(1.000)、用電腦(0.954)、玩樂器 (0.981)、打電話 (0.994)、閱讀 (0.997)、騎車 (0.996)、閱讀 (1.000)、玩樂器 (1.000)、跳(0.897)、閱讀 (未檢測出)、拍照 (未檢測出)和騎車(未檢測出),其中括號中為檢測的位置精確度。圖5表示改進算法的測試效果,從左至右從上至下的人體行為分別為騎馬(1.000)、用電腦(1.000)、玩樂器 (1.000)、打電話 (1.000)、閱讀(0.999)、騎車 (0.996)、閱讀 (1.000)、玩樂器 (1.000)、跳 (0.999)、閱讀 (0.987)、拍照 (0.934)和騎車(0.926),其中括號中為檢測的位置精確度。對比隨機選取的測試數(shù)據(jù),圖4中最后3個動作分別為閱讀、拍照和騎車,使用VGGNet時算法并未檢測出圖中的動作。在圖5中同樣的圖片、同樣的行為,改進算法對3種動作均作出了精確的識別,并且圖片中的動作均比原始算法的識別精確度要高。相比兩種算法,改進的算法不僅能準(zhǔn)確地識別出抽樣測試圖像中所有的人體行為,并且在精度上有所提升。
圖4 原始算法檢測結(jié)果Fig. 4 The original algorithm detection results.
結(jié)合表2和圖5的實驗結(jié)果以及隨機抽樣測試的結(jié)果可知,在8種不同的人體行為中,改進的Faster R-CNN算法對玩電腦、騎馬和騎車這3種動作的識別效果較好,雖然閱讀和玩樂器這兩種動作的識別效果相比于其他動作效果略差,但是相對于原始算法識別類別和位置的精度都有著較為明顯的改善。并且對于這8種動作,改進Faster R-CNN算法識別效果有著顯著提升,平均分類效果和位置精確度均達到80%以上,證明改進算法對人體行為檢測任務(wù)的有效性。
圖5 改進算法檢測結(jié)果Fig. 5 The improved algorithm detection results
Faster R-CNN算法在物體檢測方面有著較好的識別效果,本文針對人體行為檢測關(guān)鍵問題將OHEM算法和批量規(guī)范化算法與Faster R-CNN算法進行結(jié)合改進。在改進算法中,利用OHEM算法的優(yōu)勢可以有效地識別出靜態(tài)圖像中存在的小樣本難例,對于人體行為識別整體的識別正確率都有所改善。今后將在通過搜集更多測試樣本,增加類別,來測試所提出方法的有效性。