劉 釗,楊 帆,司亞中
河北工業(yè)大學(xué) 電子信息工程學(xué)院,天津 300401
作為計算機(jī)視覺領(lǐng)域的一項基礎(chǔ)任務(wù),對行為識別的研究已經(jīng)進(jìn)行了很長時間。如今隨著移動互聯(lián)網(wǎng)時代信息的爆炸式增長,來自監(jiān)控攝像頭、自媒體、自動駕駛等系統(tǒng)的視頻數(shù)據(jù)也變得龐大而復(fù)雜。對網(wǎng)絡(luò)或本地視頻中人類的行為進(jìn)行識別與分類在智能監(jiān)控、視頻推薦、輔助駕駛系統(tǒng)等領(lǐng)域都有很大的需求,因此行為識別算法逐漸成為機(jī)器視覺中的一個研究熱點。
進(jìn)行行為識別的關(guān)鍵是提取視頻中的時空信息,近年來深度學(xué)習(xí)技術(shù)的發(fā)展使得研究者可以利用卷積神經(jīng)網(wǎng)絡(luò)自動提取圖像的空間特征,從而完成目標(biāo)識別、圖像分類、語義分割等不同場景下的任務(wù)。與2D的圖像任務(wù)不同,由于人的動作具有明顯的時間連續(xù)性,處理視頻除了空間信息外還需要關(guān)注時間維度的信息。因此視頻識別和圖像識別的一個重要差別就是對時間的建模,這對識別的效果有很大影響[1]。
分析視頻中行為的方法有很多種,最直接的是使用2DCNN進(jìn)行特征提取,但是這種方式忽略了幀與幀之間的時間關(guān)系,在時間關(guān)聯(lián)性強(qiáng)的動作中無法得到準(zhǔn)確的結(jié)果。另一種方法是使用雙流網(wǎng)絡(luò),光流是描述物體運動的一種有效表征,它提供了與RGB圖像間的正交信息。將視頻的光流作為時間建模信息,和空間數(shù)據(jù)一同輸入到網(wǎng)絡(luò)中可以有效提升行為識別的準(zhǔn)確率,但是光流需要進(jìn)行預(yù)計算,耗費計算資源大,同時需要較多存儲空間,在速度和實時性方面無法取得理想結(jié)果。事實上,將一段視頻看作一個具有兩個空間維度和一個時間維度的三維張量是最自然的做法。因此,使用3D卷積神經(jīng)網(wǎng)絡(luò)同時提取視頻中的時空信息受到研究者的歡迎,在2DCNN的基礎(chǔ)上,添加時間維度進(jìn)行時域建模,同時空間維度保持不變,就可以很方便地分析視頻片段的時空特征。增加一個維度同樣帶來了算力的消耗,但是端到端的優(yōu)勢,使3DCNN方法成為了研究的熱點。
在過去的十年中,隨著網(wǎng)絡(luò)視頻的積累,研究人員制作了各種高質(zhì)量的行為識別數(shù)據(jù)集,而且視頻數(shù)量和行為類別的數(shù)量都在快速增長。典型的數(shù)據(jù)集HMDB51[2]、
UCF101[3]、ActivityNet[4]、Sports1M[5]、Kinetics[6]、You-Tube8M[7]、Something-Something[8]等都有對應(yīng)的SOTA方法。由于大規(guī)模數(shù)據(jù)集有充分的訓(xùn)練數(shù)據(jù),可以在訓(xùn)練時避免過擬合的發(fā)生,從而提高測試時的性能,所以往往被看作行為識別的基準(zhǔn)。一些通用的行為識別模型在經(jīng)過預(yù)訓(xùn)練后可以在這些數(shù)據(jù)集上取得很好的效果,但是訓(xùn)練過程十分依賴硬件設(shè)施,需要強(qiáng)大的算力支持。此外,完成一次大數(shù)據(jù)集上的訓(xùn)練,可能需要幾周甚至一個月以上的時間。為解決此問題,本文提出了一種適用于小型數(shù)據(jù)集的3D卷積神經(jīng)網(wǎng)絡(luò)模型,在兼顧參數(shù)量和計算量的前提下,與一些主流的網(wǎng)絡(luò)相比有較為明顯的精度提升。在某些特定的行為識別場景中,可以在較小算力下(比如性能較差的GPU)進(jìn)行訓(xùn)練。
首先將3D CNN用于行為識別的是Ji等人[9],他們設(shè)計的網(wǎng)絡(luò)包含1個硬線層、3個卷積層、2個下采樣層和1個全連接層。硬線層生成灰度通道、梯度通道和光流通道。在每個通道中應(yīng)用卷積和下采樣,最后通過結(jié)合所有通道的信息計算得到行為識別的結(jié)果。此開創(chuàng)性工作的成功使得更多的研究者開始探索3D CNN的潛力。最直接的工作是對經(jīng)典2D卷積的拓展,即將2D卷積核以及對應(yīng)的輸入輸出映射到3D。Tran等人[10]提出了一個更深的3D卷積網(wǎng)絡(luò),稱之為C3D。C3D網(wǎng)絡(luò)實際上是將VGG[11]網(wǎng)絡(luò)擴(kuò)展到了3D,可以看作是3D版本的VGG16。Hara等人[12]直接使用3D卷積核來代替2D ResNet[13]中的卷積核,并嘗試使用大規(guī)模數(shù)據(jù)集Kinetics來訓(xùn)練此3D ResNet,希望可以達(dá)到2D CNN在ImageNet[14]上的效果。
對于3D卷積網(wǎng)絡(luò),增加時間維度的長度可能捕獲到更多的時間關(guān)聯(lián)信息。為了進(jìn)行長時間建模,Varol等人[15]開發(fā)了一種長時間卷積結(jié)構(gòu)(LTC),該結(jié)構(gòu)使用較多的視頻幀(比如60或者100幀)作為輸入,但與此同時帶來了更多的計算量。為了減少網(wǎng)絡(luò)參數(shù)的數(shù)量,緩解高復(fù)雜度和訓(xùn)練視頻數(shù)據(jù)不足的多種困難,Sun等人[16]提出了一種分解時空卷積網(wǎng)絡(luò)FstCN,將原始的三維卷積核學(xué)習(xí)分解為先學(xué)習(xí)低層的二維空間卷積核,然后再學(xué)習(xí)上層的一維時間卷積核。
為了降低訓(xùn)練時的復(fù)雜度,一些研究者考慮對3D卷積核進(jìn)行分解。比如,一個3D卷積核(尺寸為3×3×3)可以看作是為一個2D的空間卷積核(1×3×3)與一個1D時間卷積核(3×1×1)的組合。如圖1展示了這個分解的過程。
圖1 3D卷積核的分解Fig.1 Decomposition of 3D convolution kernel
Qiu等人[17]提出了一種名為P3D的類似3D Resnet50的結(jié)構(gòu),使用2D和1D卷積核的組合來替代ResNet中的連接部分。R2+1D[18]也采用了這種分解方式,它與P3D的不同之處在于殘差塊的構(gòu)建方式。
由于3D卷積網(wǎng)絡(luò)參數(shù)量較大,為了追求訓(xùn)練速度,降低部署難度,大部分研究者開始探索高效的視頻模型。Lin等人[19]引入了一種新的方法,稱為時域移位模塊(TSM),TSM將移位操作擴(kuò)展到視頻理解中。它將部分通道沿時間維度移動,從而促進(jìn)相鄰幀之間的信息交換以獲取更完整的時間信息。還有一些方法使用注意力機(jī)制來對時域建模,STM方法[20]提出了一個基于通道的時空模塊來提取時空特征以及一個基于通道的運動模塊來高效地編碼運動特征。TEA方法[21]與STM類似,但TEA使用運動特征重新校準(zhǔn)時空特征以增強(qiáng)運動模式。
以上提到的方法中主要關(guān)注點都是網(wǎng)絡(luò)的輸入或者網(wǎng)絡(luò)本身:要么是對2D卷積的擴(kuò)展,要么單純地降低模型復(fù)雜度??紤]到在卷積計算過程中不同的padding方式會對3D卷積中的時域信息進(jìn)行不同的處理,而其中有些處理方法會帶來時間維度上的誤差,本文對時域上的padding方式進(jìn)行了調(diào)整,并根據(jù)此結(jié)構(gòu)提出了一種新的網(wǎng)絡(luò)模型,可以充分利用到特征圖中的時空信息。
在3D卷積行為識別模型中,時間信息的提取和有效利用是保證識別準(zhǔn)確率的重要因素。而網(wǎng)絡(luò)的輕量化需要從網(wǎng)絡(luò)深度,卷積形式以及節(jié)點尺寸等方面考慮。為了在不降低模型準(zhǔn)確率的前提下減少參數(shù)量,我們提出了一種新型的網(wǎng)絡(luò)結(jié)構(gòu)。設(shè)計思路主要包括:
(1)改變在3D卷積過程中時間維度的填充方法,不引入可能影響時間信息的無關(guān)元素,即使用不填充的卷積方式。
(2)適當(dāng)降低網(wǎng)絡(luò)深度并拆分3D卷積核來降低參數(shù)量。
(3)為了最大限度地利用提取到的時空信息,將時間3D卷積重組為2D卷積。
將此網(wǎng)絡(luò)命名為時域非填充網(wǎng)絡(luò)(temporal none padding network,TNP-Net)。網(wǎng)絡(luò)的整體結(jié)構(gòu)如圖2所示。
圖2 整體結(jié)構(gòu)圖Fig.2 Overall structure
對于原始的不定時長的視頻信息,使用TSN方法[22]提出的稀疏時間采樣策略進(jìn)行采樣。首先將視頻的所有幀等分為T個片段,然后在每個片段中隨機(jī)取一個視頻幀,并按照片段的時間順序組合這些幀,這樣就得到了時長為T的輸入視頻序列。在Head以及Stem模塊中堆疊時域非填充結(jié)構(gòu)的3D卷積層和下采樣層,由于時域非填充結(jié)構(gòu)可以自然地縮小時間域上的尺度,因此可以令時間維度的步長一直保持為1。最后在Tail模塊中對網(wǎng)絡(luò)進(jìn)行重組:將原有的空間維度合并為一個維度,從而得到一個2D的卷積神經(jīng)網(wǎng)絡(luò)。之后在此2D網(wǎng)絡(luò)中繼續(xù)卷積以完成特征的提取。整體的行為識別過程如圖3所示。
圖3 行為識別流程Fig.3 Action recognition flow
2.1 時域非填充結(jié)構(gòu)
在卷積過程中為了保持當(dāng)前卷積層的前后一致性,通常的做法是對進(jìn)行卷積的矩陣的邊緣部分進(jìn)行填充[23],填充的方法包括零填充(使用0)和復(fù)制填充(使用邊界數(shù)據(jù))。對于二維的圖像特征圖,由于整體像素點較多,填充引入的數(shù)值并不會帶來太大的誤差。在處理包含動作的視頻片段時,往往會將提取到的表示動作的連續(xù)視頻幀進(jìn)行維度變換:由T×C×H×W變?yōu)镃×T×H×W,其中T、C分別表示時間維度以及特征通道。H和W對應(yīng)空間的形狀。對此四維矩陣進(jìn)行卷積時,會使用C個三維卷積核對T×W×H維的特征圖進(jìn)行卷積。如上所述,有時為了保證維度不變,可以在空間維度進(jìn)行填充操作,但是表示動作的視頻幀往往是有限的,比如16幀或24幀[24]。如果同樣在時間域上進(jìn)行填充,就會在時間維度的兩端添加一整張全零或者與最外側(cè)完全一樣的二維特征圖,而對于對幀間的時間信息比較敏感的行為識別任務(wù),這會引入較大的誤差,從而有可能影響最終的檢測精度。
對于網(wǎng)絡(luò)中正常填充的3D卷積,給定一個輸入特征圖X∈Rc×t×h×w,當(dāng)設(shè)定卷積的步長step為1時,使用m個3×3×3的3D卷積核計算的過程為:
時空維度的變化由公式(2)決定,其中k和p分別代表卷積核大小和填充大小。
在同樣條件下將時域填充變?yōu)?就可得到時域非填充結(jié)構(gòu),此時的計算過程為:
本網(wǎng)絡(luò)的時域非填充層全部集中在Head和Stem模塊,且這兩個模塊中的所有3D卷積在時間維度都不進(jìn)行填充。其中Head模塊的結(jié)構(gòu)如圖4所示。
圖4 Head模塊結(jié)構(gòu)Fig.4 Head module structure
Head模塊由三個卷積層組成,首先在時間和空間維度都進(jìn)行卷積計算,然后分別提取時間和空間信息。由于低層層特征圖包含的時間特征相對較少,為了獲取較多未經(jīng)過處理的時間信息,在第二層單獨進(jìn)行時間卷積并使用維度為5的卷積核。如此便在網(wǎng)絡(luò)的底層進(jìn)行了兩次空間和時間上的特征提取。
Stem模塊中的所有卷積層都使用了時域非填充的設(shè)計,同時采用了大量的卷積分解操作來降低參數(shù)量,圖5為此模塊的結(jié)構(gòu)。
圖5 Stem模塊結(jié)構(gòu)Fig.5 Stem module structure
如上所述,使用時域非填充結(jié)構(gòu)后時間域尺度會自然地下降至4,同時空間維度也隨著卷積的進(jìn)行而變?yōu)?4×14。此時常規(guī)的做法是繼續(xù)在這個三維結(jié)構(gòu)中實施3D卷積。為了融合網(wǎng)絡(luò)學(xué)習(xí)到的時空特征,獲得更好的模型表現(xiàn),對這部分的3D特征圖做了結(jié)構(gòu)上的調(diào)整:保持時間維度不變,將空間維度轉(zhuǎn)換成一維,即把14×14的二維空間展平為196的一維空間。變換過程以及元素排列如圖6所示。
圖6 3D特征圖到2D特征圖的轉(zhuǎn)換Fig.6 Conversion from 3D to 2D feature map
Tail模塊中網(wǎng)絡(luò)重組之前也使用時域非填充來降低時間維度,為了在網(wǎng)絡(luò)重組前后找到最合適的通道數(shù),設(shè)置了planes以調(diào)整相關(guān)的卷積核,planes是一個包含4個元素的列表,4個元素分別對應(yīng)4個卷積核的數(shù)量(即其后面特征圖的通道數(shù))。Tail模塊的細(xì)節(jié)如圖7所示。
圖7 Tail模塊結(jié)構(gòu)Fig.7 Tail module structure
本文致力于在較小數(shù)據(jù)集上提高行為識別的性能,從而減小在某些特定場景下的任務(wù)對硬件設(shè)備的依賴。目前較流行的Kinetics、Something-Something系列數(shù)據(jù)集包含較多的動作類別以及視頻數(shù)量,適合通用行為識別模型的訓(xùn)練。龐大的數(shù)據(jù)使其可以較好地擬合模型,但同時也帶來了訓(xùn)練時算力的大量消耗。但在特定的場景下(比如駕駛員行為檢測),往往只需要在特定的數(shù)據(jù)集上訓(xùn)練,因此本文使用較小的UCF-101以及HMDB51數(shù)據(jù)集,希望可以接近某些真實場景下的數(shù)據(jù)量。其中UCF-101數(shù)據(jù)集包含101個動作類別,共13 320個視頻,HMDB51數(shù)據(jù)集包含51個動作類別,大約有7 000個視頻片段。
對于每個原始的視頻序列,分別從時間和空間維度處理,以進(jìn)行數(shù)據(jù)增強(qiáng)并得到適合網(wǎng)絡(luò)訓(xùn)練的樣本。如上所述,首先使用稀疏時間采樣的方法抽取16幀圖像,如果視頻長度不足16幀,則循環(huán)此視頻以滿足幀長的要求;接下來使用數(shù)據(jù)增強(qiáng),由于每個樣本是連續(xù)的幀,因此應(yīng)保證對這16幀圖像做同樣的處理:將所有圖像進(jìn)行中心裁剪后以0.5的概率在水平方向翻轉(zhuǎn),同時實施歸一化并調(diào)整圖像大小為112×112像素;最后轉(zhuǎn)置通道和時間維度就得到了尺寸為3×16×112×112的輸入樣本。為了準(zhǔn)確地進(jìn)行歸一化,對所有的訓(xùn)練數(shù)據(jù)做了數(shù)據(jù)分析并得到了所有數(shù)據(jù)的標(biāo)準(zhǔn)差以及方差。本文使用交叉熵?fù)p失來作為實驗的誤差函數(shù),訓(xùn)練時使用帶動量的批處理隨機(jī)梯度下降優(yōu)化算法,批處理大小為32。設(shè)置初始學(xué)習(xí)率為0.01,學(xué)習(xí)率衰減因子為0.1。在訓(xùn)練epoch為80、140、180時進(jìn)行學(xué)習(xí)率衰減,優(yōu)化器的具體參數(shù)設(shè)置為:Momentum:0.9;Weight_decay:0.001;Dampening:0。
為驗證本文方法的有效性,與當(dāng)前主流3D卷積行為識別方法進(jìn)行對比,包括C3D[10](ICCV’15)、3DResnet[12](ICPR’18)、R2P1D[18](CVPR’18)、P3D[17](ICCV’17)等。涉及到的實驗使用了相同的數(shù)據(jù)處理方法,且在相同的環(huán)境下進(jìn)行,本文所有實驗都基于Ubuntu20.04系統(tǒng),配備2塊1080Ti顯卡,軟件環(huán)境為Pytorch 1.3。表1展示了在UCF101和HMDB51數(shù)據(jù)集中不同模型的對比結(jié)果,所有模型均使用RGB圖像作為輸入,不使用光流信息。
表1 不同算法性能對比Table 1 Performance comparison of different algorithms
表1中的實驗除了C3D模型都采取同樣的實驗配置,以保證比較的公平性。為了能正常進(jìn)行反向傳播過程,將C3D模型訓(xùn)練時的初始學(xué)習(xí)率設(shè)置為0.1。同時,所有模型都未使用預(yù)訓(xùn)練權(quán)重,即都從零開始訓(xùn)練。可以看到,在其他條件基本相同的情況下,在兩個數(shù)據(jù)集上TNP網(wǎng)絡(luò)可以獲得最高的Top-1準(zhǔn)確率。同時TNP網(wǎng)絡(luò)在犧牲了一定計算量的條件下,擁有最少的參數(shù)量,這使得它在訓(xùn)練時不需要占用過多的計算資源,同時節(jié)約計算時存儲成本。雖然其他網(wǎng)絡(luò)也使用了3D卷積,但得益于時域非填充和網(wǎng)絡(luò)重組結(jié)構(gòu),TNP網(wǎng)絡(luò)較為充分地提取并利用了視頻中的時空信息,從而在參數(shù)量較少的情況下獲得了較好的性能。圖8給出了部分視頻采樣后的視頻幀的預(yù)測結(jié)果。
圖8 部分視頻的采樣及預(yù)測結(jié)果Fig.8 Sampling and prediction results of part video
為評估時域非填充和網(wǎng)絡(luò)重組方法對模型性能的影響,分別改變部分卷積層的時域填充方式和Tail部分的卷積方式,對比前后的識別準(zhǔn)確率來進(jìn)行可行性分析。
3.3.1 時域填充對結(jié)果的影響
分別將Stem模塊中的2、4、6個卷積的時域填充方式轉(zhuǎn)換為0填充來驗證非填充方法的有效性,填充卷積層為0時表示全部使用時域非填充結(jié)構(gòu)。表2展示了在兩個數(shù)據(jù)集上實驗的結(jié)果。
表2 不同填充卷積層的性能對比Table 2 Performance comparison of different padding layers
應(yīng)用了0填充方式的網(wǎng)絡(luò)模型由于改變了降低時間維度的方式,使得網(wǎng)絡(luò)的參數(shù)量有所降低;然而隨著使用0填充卷積層數(shù)量的減少,對應(yīng)的準(zhǔn)確率呈上升趨勢。此現(xiàn)象可以證明時域非填充結(jié)構(gòu)確實可以提高3D卷積網(wǎng)絡(luò)行為識別任務(wù)的準(zhǔn)確率。
3.3.2 重組網(wǎng)絡(luò)對結(jié)果的影響
在Tail模塊中,將3D卷積核重新組合成2D卷積核來充分利用時空信息,為對比其與不使用此種方式的結(jié)構(gòu)的差別,直接利用3D卷積完成了Tail部分的訓(xùn)練。同時改變了Planes列表的元素組合以找到最佳的通道數(shù)設(shè)置,Planes的不同組合如表3所示。
表3 Planes的組合Table 3 Combination of Planes
最后將測試的結(jié)果總結(jié)到表4。
表4 不同卷積類型性能對比Table 4 Performance comparison of different convolution types
在Tail模塊中全部使用3D卷積核時,相比于使用3D卷積核雖然獲得了參數(shù)量的降低,但是會損失較多的精度,由此可證明將網(wǎng)絡(luò)最后的3D特征圖轉(zhuǎn)換為2D特征圖可以在一定程度上提高行為識別的準(zhǔn)確率。而在進(jìn)行網(wǎng)絡(luò)重組的條件下,使用不同的卷積核數(shù)量也會影響識別的速度和精度,在卷積核數(shù)量較少時可以達(dá)到最好效果。
本文針對3D卷積過程中的填充方式設(shè)計了一種在時間維度不進(jìn)行填充的3DCNN網(wǎng)絡(luò),還根據(jù)此種填充方式提出了3D網(wǎng)絡(luò)到2D網(wǎng)絡(luò)的網(wǎng)絡(luò)重組結(jié)構(gòu),可以有效地提取并利用視頻中的時空信息,提高行為識別的準(zhǔn)確率。由于輕量化的結(jié)構(gòu)設(shè)計,使得網(wǎng)絡(luò)訓(xùn)練不需要依賴強(qiáng)大的算力,適用于特定的行為識別場景。在公開數(shù)據(jù)集UCF-101上的實驗表明,本文設(shè)計的時域非填充卷積神經(jīng)網(wǎng)絡(luò)在準(zhǔn)確率以及參數(shù)量方面優(yōu)于一些主流的算法。