李 龍 卿粼波 李詩菁 何小海
(四川大學(xué)電子信息學(xué)院 四川 成都 610065)
行為檢測是計算機(jī)視覺領(lǐng)域和圖像處理中的一個重要研究方向[1]。在傳統(tǒng)行為檢測領(lǐng)域,DT[2]算法是最經(jīng)典的算法之一,它主要包括密集采樣特征點(diǎn),特征點(diǎn)軌跡跟蹤以及基于軌跡的特征提取三個部分。2013年由IEAR實(shí)驗(yàn)室發(fā)表的iDT[3]算法,對DT算法做了改進(jìn),主要包括對光流圖像的優(yōu)化、特征正則化方式以及特征編碼方式,大大提升了算法的效果。自深度學(xué)習(xí)應(yīng)用到行為檢測領(lǐng)域后,使用基于深度學(xué)習(xí)的方法[4]得到的效果已經(jīng)明顯超過了使用傳統(tǒng)算法。
深度學(xué)習(xí)理論提出以來,研究人員發(fā)現(xiàn)應(yīng)用深度學(xué)習(xí)進(jìn)行行為檢測,可以有效提高檢測效果和性能,因此深度學(xué)習(xí)在實(shí)時視頻的行為檢測[5-6]開始廣泛應(yīng)用,到現(xiàn)在為止,其檢測效率和精度已經(jīng)有了很大提高。在深度學(xué)習(xí)理論中,Two-Stream[7]是一個主流方法,它由時間、空間兩個網(wǎng)絡(luò)組成。該方法提出對視頻序列中每兩幀計算密集光流,得到密集光流的序列。然后對光流序列和圖像序列分別訓(xùn)練卷積神經(jīng)網(wǎng)絡(luò)模型,再訓(xùn)練一個fusion網(wǎng)絡(luò)進(jìn)行融合圖像序列和光流序列的網(wǎng)絡(luò)。C3D[8](3-Dimensional Convolution)是另一個主流方法,在目前來看,使用C3D方法得到的效果要比Two-Stream方法略差些,但C3D網(wǎng)絡(luò)結(jié)構(gòu)簡單,而且C3D運(yùn)行時間短,處理速度快,所以仍然是當(dāng)前研究熱門。因?yàn)榍度胧狡脚_如NVIDIA JetsonTX2攜帶方便,性能強(qiáng)大,所以使得更大型、更復(fù)雜的神經(jīng)網(wǎng)絡(luò)可以廣泛地部署到嵌入式平臺上。為提高檢測精度以及減少參數(shù)量,本文以C3D網(wǎng)絡(luò)為基礎(chǔ),結(jié)合ResNet[9]的short-cut結(jié)構(gòu)以及改進(jìn)的SqueezeNet[10]來進(jìn)行網(wǎng)絡(luò)結(jié)構(gòu)調(diào)整,并將網(wǎng)絡(luò)模型部署到NVIDIA JetsonTX2上進(jìn)行行為檢測,總體結(jié)構(gòu)如圖1所示。
圖1 總體結(jié)構(gòu)圖
采用C3D卷積神經(jīng)網(wǎng)絡(luò)來進(jìn)行視頻行為檢測,網(wǎng)絡(luò)結(jié)構(gòu)如圖2所示。該網(wǎng)絡(luò)采用三維卷積對視頻連續(xù)幀進(jìn)行操作,相比于二維卷積更能簡單有效地處理時間信息,是一種簡單、高效、通用、快速的行為識別神經(jīng)網(wǎng)絡(luò)。但是C3D網(wǎng)絡(luò)參數(shù)量較大,難以將它跟其他參數(shù)量較大的網(wǎng)絡(luò)同時部署到同一個NVIDIA JetsonTX2上,并且準(zhǔn)確度不高。為提高檢測的準(zhǔn)確度以及減小網(wǎng)絡(luò)參數(shù)量,本文借鑒SqueezeNet網(wǎng)絡(luò)對C3D網(wǎng)絡(luò)進(jìn)行改進(jìn)。
圖2 C3D網(wǎng)絡(luò)結(jié)構(gòu)
由UC Berkeley與Stanford研究人員設(shè)計完成的SqueezeNet網(wǎng)絡(luò),其設(shè)計目標(biāo)并不是想得到更好的檢測精度,而是希望能夠簡化網(wǎng)絡(luò)復(fù)雜度。所以SqueezeNet主要是為了降低卷積神經(jīng)網(wǎng)絡(luò)模型參數(shù)數(shù)量而設(shè)計的,相比較直接使用3×3的卷積核,SqueezeNet的參數(shù)量和理論計算量理論上都降為原來的5/36。與傳統(tǒng)的卷積方式不同,SqueezeNet把原本為一層的卷積分解為兩層:squeeze層和expand層,每層卷積后都有一個激活層,squeeze層里都是1×1的卷積,數(shù)量為s1;expand層里有1×1和3×3兩種卷積核,數(shù)量分別為e1、e3,在數(shù)量上4×s1=e1=e3。expand層之后將1×1和3×3卷積后得到的feature map進(jìn)行拼接,然后把這兩層封裝為一個Fire_Module,如圖3所示。Fire_Module輸入的feature map為H×W×C,輸出的feature map為H×W×(e1+e3),可以看到feature map的分辨率是不變的,變化的是通道的數(shù)量。
圖3 Fire_Module
綜上所述,SqueezeNet可以有效減少網(wǎng)絡(luò)參數(shù)量,為進(jìn)一步減少網(wǎng)絡(luò)參數(shù)量并提高檢測準(zhǔn)確度,本文對SqueezeNet提出如下兩種修訂,以應(yīng)用到C3D網(wǎng)絡(luò)中。
(1) 因?yàn)樗镁W(wǎng)絡(luò)使用的是三維卷積,所以將Fire_Module中的1×1和3×3卷積改為使用三維卷積1×1×1和3×3×3。為提高準(zhǔn)確度,借鑒InceptionV1[11]結(jié)構(gòu),在Fire_Module的expand層中增加一個數(shù)量為e5的5×5×5卷積支路,如圖4所示,輸出大小為H×W×(e1+e3+e5)。這樣不僅增加了網(wǎng)絡(luò)的寬度,而且改進(jìn)后的Fire_Module包含了3種不同尺寸的卷積,同時也增加了網(wǎng)絡(luò)對不同尺度的適應(yīng)性,從而提高準(zhǔn)確度。而網(wǎng)絡(luò)越到后面,特征也越抽象,每個特征所涉及的感受野也更大,因此隨著網(wǎng)絡(luò)深度的增加,3×3×3和5×5×5的卷積比例也會增加。
圖4 基于Inception V1的Fire_Module V1
(2) 如果將網(wǎng)絡(luò)中的卷積全部應(yīng)用為上述改進(jìn)后的Fire_Module V1,因?yàn)?×5×5卷積所需的計算量太大,會造成特征圖厚度增大,網(wǎng)絡(luò)參數(shù)量也會隨之增加。為減少網(wǎng)絡(luò)參數(shù)量,借鑒InceptionV3[12]結(jié)構(gòu),提出另一種方法,將Fire_Module中的3×3×3卷積替換為3×1×3卷積,在不影響網(wǎng)絡(luò)性能的情況下,大大減小參數(shù)量,如圖5所示。
圖5 基于InceptionV3的Fire_Module V2
本文在C3D網(wǎng)絡(luò)基礎(chǔ)上,對網(wǎng)絡(luò)結(jié)構(gòu)進(jìn)行調(diào)整,首先,緊跟著卷積層引入BN[13](Batch Normalization)層與short-cut結(jié)構(gòu),如圖6所示。BN層在神經(jīng)網(wǎng)絡(luò)層的中間,它起到預(yù)處理的功能,也就是對上一層的輸入進(jìn)行歸一化后,再送到網(wǎng)絡(luò)的下一層,這樣做可以有效防止梯度彌散,也可以在網(wǎng)絡(luò)訓(xùn)練過程中加快網(wǎng)絡(luò)收斂速度,加速網(wǎng)絡(luò)訓(xùn)練。其次,將網(wǎng)絡(luò)中的卷積層替換為Fire_Module V1、Fire_Module V2,如果全部使用Fire_Module V1,會造成網(wǎng)絡(luò)參數(shù)量增大,經(jīng)多次實(shí)驗(yàn)得出,F(xiàn)ire_Module V1、Fire_Module V2按圖7所示進(jìn)行卷積層替換,參數(shù)量會大大減小。最后,替換后的網(wǎng)絡(luò)深度變深,為防止訓(xùn)練時出現(xiàn)梯度退化問題以及提高精度,在Fire_Module V2通道數(shù)量相同的模塊之間,添加short-cut結(jié)構(gòu)。
圖6 Short-cut結(jié)構(gòu)
圖7 整體網(wǎng)絡(luò)結(jié)構(gòu)
本文在服務(wù)器上采用GPU模式進(jìn)行網(wǎng)絡(luò)訓(xùn)練,其中訓(xùn)練平臺配置:Intel(R) Core(TM) i7-6700 3.4 GHz處理器;顯卡為顯存12 GB的NVIDIA Titan X;Ubuntu 16.04 64位操作系統(tǒng);深度學(xué)習(xí)框架為Keras。使用UCF101數(shù)據(jù)集,該數(shù)據(jù)集包含動作101類,共有13 320個視頻,每個視頻大小為320×240。開始訓(xùn)練前,先將數(shù)據(jù)集中的視頻轉(zhuǎn)換為圖片格式,按照3∶1的比例將數(shù)據(jù)集分為訓(xùn)練集、測試集。
如圖8、圖9所示,當(dāng)訓(xùn)練約15個epoch后,網(wǎng)絡(luò)收斂趨于平穩(wěn),約20個epoch后準(zhǔn)確率達(dá)到97.1%。
圖8 模型準(zhǔn)確率
圖9 模型丟失
將本文提出的網(wǎng)絡(luò)所得模型進(jìn)行評估并與其他文獻(xiàn)中的行為識別網(wǎng)絡(luò)在UCF101數(shù)據(jù)集上進(jìn)行對比,其中SqueezeNet-C3D為使用 Fire_Module V1模塊的C3D網(wǎng)絡(luò),Improved SqueezeNet-C3D為使用Fire_Module V1和Fire_Module V2結(jié)合的網(wǎng)絡(luò)。結(jié)果如表1所示。
表1 與其他網(wǎng)絡(luò)對比
Temporal ConvNet為基于深度學(xué)習(xí)的、以光流(Flow)數(shù)據(jù)作為輸入的人體動作識別網(wǎng)絡(luò),TSN(RGB+Flow)為以光流和RGB數(shù)據(jù)作為輸入的人體動作識別網(wǎng)絡(luò),其余為以RGB數(shù)據(jù)作為輸入的人體動作識別網(wǎng)絡(luò)??梢钥吹剑疚奶岢龅木W(wǎng)絡(luò)比只以光流數(shù)據(jù)作為輸入的Temporal ConvNet高出3%;當(dāng)以RGB圖片數(shù)據(jù)作為輸入時,本文提出的網(wǎng)絡(luò)比C3D高出4.4%,比TSN(RGB)高出1.6%;但與TSN(RGB+Flow)相比,本文的識別率較低??梢姰?dāng)RGB信息與光流信息融合時,能有效提高識別率,表明光流信息在提升識別率中起到重要的作用。本文只以RGB數(shù)據(jù)作為輸入,這也是本文提出的網(wǎng)絡(luò)識別率比TSN(RGB+Flow)低的原因。但光流信息需要從視頻幀形成,這樣做會使計算量增加,所用時間也會增加,進(jìn)而導(dǎo)致實(shí)時性變差,不利于實(shí)時檢測。
本文使用改進(jìn)的SqueezeNet與使用SqueezeNet網(wǎng)絡(luò)總的參數(shù)進(jìn)行對比,如表2所示。
表2 網(wǎng)絡(luò)參數(shù)對比
使用本文的ImprovedSqueezeNet-C3D網(wǎng)絡(luò)與使用 SqueezeNet-C3D網(wǎng)絡(luò)相比,參數(shù)量降低了15%,與C3D網(wǎng)絡(luò)參數(shù)量相比降低了90.3%。由此可見,本文網(wǎng)絡(luò)大大降低了對計算機(jī)硬件的要求。
本文采用改進(jìn)的SqueezeNet與C3D相結(jié)合的卷積神經(jīng)網(wǎng)絡(luò),引入BN層,隨著網(wǎng)絡(luò)深度的增加采用了ResNet的short-cut結(jié)構(gòu),對走路、跑步、打架、摔倒、坐、等動作進(jìn)行檢測識別,取得較好的檢測結(jié)果,并得到以下結(jié)論:(1) 本文提出的網(wǎng)絡(luò)提升了檢測的準(zhǔn)確度,具有較好的識別率。(2) 本文提出的網(wǎng)絡(luò)參數(shù)量較少,降低了模型的訓(xùn)練及預(yù)測時間,使得網(wǎng)絡(luò)性能在嵌入式平臺(如NVIDIA JetsonTX2)上進(jìn)一步提高。