席志紅,馮宇
哈爾濱工程大學(xué) 信息與通信工程學(xué)院,黑龍江 哈爾濱 150001
隨著計(jì)算機(jī)視覺(jué)和人工智能領(lǐng)域的不斷發(fā)展,越來(lái)越多的先進(jìn)設(shè)備投入到人們的生產(chǎn)生活當(dāng)中,給人們帶來(lái)了巨大的便利。人體行為識(shí)別是計(jì)算機(jī)視覺(jué)領(lǐng)域的重要分支,該技術(shù)在視頻監(jiān)控、醫(yī)學(xué)健康、智能家居、體育運(yùn)動(dòng)以及虛擬現(xiàn)實(shí)等領(lǐng)域應(yīng)用極其廣泛。傳統(tǒng)的行為識(shí)別方法采用時(shí)空興趣點(diǎn)[1](space-time interest points,STIP)表示人體局部時(shí)空特征進(jìn)行姿態(tài)識(shí)別。Wang 等[2]將加速健壯特征 (speeded-up robust features,SURF)與光流特征結(jié)合,提出改進(jìn)密集軌跡算法進(jìn)行人體姿態(tài)識(shí)別。由于傳統(tǒng)的識(shí)別方法大部分需要人工提取特征,所以較為耗時(shí)耗力。隨著2012 年Hinton 等[3]提出深度卷積神經(jīng)網(wǎng)絡(luò),不少研究人員把目光轉(zhuǎn)向了卷積神經(jīng)網(wǎng)絡(luò)。Ji 等[4]首次提出基于3D 卷積網(wǎng)絡(luò)結(jié)構(gòu)的人體姿態(tài)識(shí)別方法。Tran 等[5]提出了C3D網(wǎng)絡(luò),通過(guò)系統(tǒng)化地研究找到了3D 卷積最合適的時(shí)序卷積核長(zhǎng)度。丁紅等[6]提出基于DBN 深度信念網(wǎng)絡(luò)的人體行為檢測(cè)系統(tǒng)。韓雪平等[7]則將人體局部信息與全局信息相結(jié)合提升整體識(shí)別率。黃瀟逸[8]提出一種骨骼關(guān)節(jié)點(diǎn)投影特征并采用支持向量機(jī)進(jìn)行分類(lèi)識(shí)別。葉青等[9]采用3D 卷積層搭建DenseNet 來(lái)提高網(wǎng)絡(luò)中的特征利用率。M.Kocabas 等[10]提出一種3D 人體姿態(tài)估計(jì)的自我監(jiān)督學(xué)習(xí)方法。Li 等[11]提出動(dòng)態(tài)尺度圖神經(jīng)網(wǎng)絡(luò)(dynamic multiscale graph neural networks,DMGNN)來(lái)預(yù)測(cè)基于3D 骨骼的人體運(yùn)動(dòng)。Zhang[12]提出了一種上下文感知圖卷積網(wǎng)絡(luò)(CA-GCN) 用于骨骼的人體姿態(tài)識(shí)別。由于C3D 網(wǎng)絡(luò)能直接提取時(shí)空特征,并且結(jié)構(gòu)由3D 卷積層和3D 池化以及全連接層簡(jiǎn)單堆疊而成,所以結(jié)構(gòu)比較簡(jiǎn)單,廣泛用于視頻的人體行為識(shí)別研究[5]。但是原始C3D 網(wǎng)絡(luò)的參數(shù)較為巨大,不利于模型遷移,并且識(shí)別率還有待提高。所以本文提出基于改進(jìn)型C3D 網(wǎng)絡(luò)的人體行為識(shí)別算法,該算法從卷積核以及網(wǎng)絡(luò)結(jié)構(gòu)入手,對(duì)模型尺寸進(jìn)行壓縮并且進(jìn)一步提高在視頻數(shù)據(jù)集中的識(shí)別率。
原始C3D 網(wǎng)絡(luò)采用3D 卷積和3D 池化,并且由8 個(gè)通道分別為64、128、256、256、512、512、512、512 的3D 卷積層、5 個(gè)3D 最大池化層、2 個(gè)神經(jīng)元為4 096 的全連接層以及softmax 分類(lèi)器構(gòu)成。Tran 等[5]經(jīng)過(guò)大量實(shí)驗(yàn)證明3D 卷積核尺寸為(3×3×3)時(shí)會(huì)使得整體性能達(dá)到最好,所以原始C3D 網(wǎng)絡(luò)中所有3D 卷積層中的3D 卷積核尺寸均為(3×3×3),步長(zhǎng)以及填充(padding)均為(1×1×1),則經(jīng)過(guò)該3D 卷積層的輸入和輸出的尺寸均未改變,尺寸的改變均由3D 最大池化操作進(jìn)行。但是為了避免由于過(guò)早地丟失時(shí)間信息而造成識(shí)別精度的下降,所以?xún)H有第1 層的3D 最大池化內(nèi)核尺寸為(1×2×2),步長(zhǎng)也為(1×2×2),padding 為0,其余3D 最大池化內(nèi)核尺寸以及步長(zhǎng)均為(2×2×2),該網(wǎng)絡(luò)整體結(jié)構(gòu)以及尺寸大小如圖1 所示。
圖1 C3D 神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)
該原始網(wǎng)絡(luò)的輸入尺寸為(3×16×112×112),可以寫(xiě)成通用形式為(c×l×h×w),其中c為圖像通道數(shù),l為視頻幀長(zhǎng)度,h為視頻幀的高度,w為視頻幀的寬度。3D 卷積濾波器內(nèi)核尺寸可以寫(xiě)為(d×k×k),其中d為3D 卷積內(nèi)核的時(shí)間深度,k為3D 卷積內(nèi)核的空間大小。該輸入通過(guò)1 個(gè)數(shù)量為n、內(nèi)核尺寸為(3×3×3)、步長(zhǎng)以及padding均為(1×1×1)的3D 卷積濾波器,則輸出的特征圖尺寸為(n×l×h×w),并且在該原始網(wǎng)絡(luò)中使用的優(yōu)化算法為隨機(jī)梯度下降(stochastic gradient descent,SGD),激活函數(shù)為修正線(xiàn)性單元[13](rectified linear unit,ReLU),并為防止過(guò)擬合現(xiàn)象而采用了Dropout 正則化方法。
以往的優(yōu)化算法常采用SGD,雖然該優(yōu)化算法在計(jì)算梯度時(shí)隨機(jī)選取一個(gè)樣本更新梯度使得訓(xùn)練速度增快,但是SGD 會(huì)引入更多的隨機(jī)噪聲,使得準(zhǔn)確度下降,在某些情況下還會(huì)陷入鞍點(diǎn)容易收斂到局部最優(yōu),并對(duì)學(xué)習(xí)率的選擇較為敏感。考慮以上問(wèn)題,本文采用另外一種改進(jìn)型的梯度下降算法,即Adam 算法。該算法結(jié)合了動(dòng)量和RMSProp算法的特點(diǎn),能夠?yàn)椴煌膮?shù)計(jì)算不同的自適應(yīng)學(xué)習(xí)率,并且能夠快速跳出鞍點(diǎn)以及快速收斂,同時(shí)還能夠解決梯度稀疏和噪音大的問(wèn)題。目前最常用的激活函數(shù)為ReLU,由于該激活函數(shù)計(jì)算簡(jiǎn)單,并且計(jì)算過(guò)程中部分神經(jīng)元為0,使得網(wǎng)絡(luò)具有稀疏性,緩解過(guò)擬合現(xiàn)象,在反向傳播過(guò)程還會(huì)解決梯度消失的問(wèn)題,所以被廣泛應(yīng)用在各種網(wǎng)絡(luò)結(jié)構(gòu)中。但是該激活函數(shù)會(huì)造成神經(jīng)元“壞死”,最終導(dǎo)致相應(yīng)參數(shù)永遠(yuǎn)不會(huì)更新,而且ReLU 還缺乏概率解釋?zhuān)恍╇S機(jī)正則化能夠讓網(wǎng)絡(luò)更好地提升精度,所以本文采用與隨機(jī)正則化有關(guān)的新一類(lèi)激活函數(shù),即高斯誤差線(xiàn)性單元[14](gaussian error linear unit,GELU),如圖2 所示,其中該激活函數(shù)的輸入x為輸入信號(hào)加權(quán)及偏置總和,y為x經(jīng)過(guò)GELU 激活函數(shù)的激活值,并且文獻(xiàn)[14]中已經(jīng)證明在多個(gè)任務(wù)實(shí)驗(yàn)里GELU 的激活效果要優(yōu)于ReLU 的激活效果。
圖2 GELU 激活函數(shù)
在傳統(tǒng)卷積神經(jīng)網(wǎng)絡(luò)中,全連接層往往處于整個(gè)網(wǎng)絡(luò)結(jié)構(gòu)的末尾,如圖3 所示。用于將經(jīng)過(guò)最后一層卷積層輸出的特征圖轉(zhuǎn)換為一維向量,并且該層的每一個(gè)神經(jīng)元都與上一層的每個(gè)神經(jīng)元連接,即把前一層的所有輸出特征全部綜合起來(lái),達(dá)到輸出特征高度提純的目的,有助于更好地識(shí)別有效特征。但是對(duì)輸出特征綜合的同時(shí),該層的權(quán)重參數(shù)數(shù)量也是最多的,并且由于巨大的參數(shù)量則容易造成訓(xùn)練速度降低和過(guò)擬合現(xiàn)象發(fā)生。所以本文采用全局平均池化(global average pooling,GAP)來(lái)代替全連接層,如圖4 所示。該方法在NIN 網(wǎng)絡(luò)[15]中被提出,由于它不需要神經(jīng)元而是直接對(duì)輸入特征做下采樣,得到的圖像輸出尺寸為(1×1×1),所以能夠減少大量參數(shù),并且可以避免在原始C3D 網(wǎng)絡(luò)中因輸入不同圖像尺寸所帶來(lái)的問(wèn)題。它還可以對(duì)卷積層輸出的每個(gè)特征圖進(jìn)行加權(quán)平均,使網(wǎng)絡(luò)具有全局感受野避免損失空間位置信息,該方法還對(duì)整個(gè)網(wǎng)絡(luò)的結(jié)構(gòu)進(jìn)行正則化防止過(guò)擬合現(xiàn)象。
圖3 全連接示意
圖4 全局平均池化示意
在輸入特征經(jīng)過(guò)全局平均池化層后,需要將其輸入到最后的分類(lèi)全連接層中,并經(jīng)過(guò)softmax分類(lèi)器以輸出類(lèi)別得分。但考慮到全連接層會(huì)破壞視頻幀圖像的空間結(jié)構(gòu)信息,所以在本文結(jié)構(gòu)中引入三維點(diǎn)卷積層,即用(1×1×1)的三維點(diǎn)卷積核構(gòu)成的三維卷積層作為分類(lèi)卷積層來(lái)代替該全連接層,并實(shí)現(xiàn)了全卷積的網(wǎng)絡(luò)結(jié)構(gòu)。點(diǎn)卷積即卷積核為(1×1),最早出現(xiàn)在NIN 網(wǎng)絡(luò)[15]中,用于加深網(wǎng)絡(luò)結(jié)構(gòu)并構(gòu)建MLP卷積層。本文受到VGG網(wǎng)絡(luò)[16]啟發(fā),采用堆疊卷積核為(3×3×3)的三維卷積層以及三維點(diǎn)卷積層來(lái)提高網(wǎng)絡(luò)表達(dá)能力。本文結(jié)構(gòu)中的三維點(diǎn)卷積層位于卷積核為(3×3×3)的三維卷積層之后,可以對(duì)三維卷積提取的時(shí)空特征進(jìn)行網(wǎng)絡(luò)通道間的跨通道組織信息,即用以通道之間的信息融合,并且增加卷積層可以加深網(wǎng)絡(luò),提高網(wǎng)絡(luò)模型的非線(xiàn)性以及增加更多的特征變換來(lái)獲取更深層次的有效行為特征,該方法能夠有效地提高模型識(shí)別精度。由于本文是全卷積網(wǎng)絡(luò)形式結(jié)構(gòu),所以去掉了原有的Dropout 正則化操作,但為能夠更好地加快網(wǎng)絡(luò)訓(xùn)練和收斂速度,并進(jìn)一步有效防止過(guò)擬合以及梯度消失和梯度爆炸現(xiàn)象發(fā)生,本文引入批歸一化處理[17](batch normalization,BN) 操作來(lái)對(duì)網(wǎng)絡(luò)進(jìn)行正則化處理。
由于在網(wǎng)絡(luò)結(jié)構(gòu)中增加了卷積層和BN 層,則在提高網(wǎng)絡(luò)識(shí)別能力的同時(shí)參數(shù)的數(shù)量也有所增加,所以本文采用了卷積核合并的方式減少網(wǎng)絡(luò)參數(shù)數(shù)量。在Inception-v3 網(wǎng)絡(luò)[18]文獻(xiàn)中提到2 種卷積核分解方式:1)分解為較小卷積,例如將1 個(gè)(5×5) 的卷積核可以分解為2 個(gè)(3×3)卷積核。2) 空間分解為非對(duì)稱(chēng)卷積,例如將1 個(gè)(3×3) 卷積核可以分解為(1×3) 卷積核以及(3×1)卷積核。根據(jù)第1 種分解方式可知3 個(gè)(3×3)的卷積核可以合并為1 個(gè)(7×7)的卷積核,如圖5所示。由第2 種分解方式可知1 個(gè)(7×7)的卷積核可以拆分成(1×7) 以及(7×1)的2 個(gè)非對(duì)稱(chēng)卷積核,如圖6 所示。所以本文將結(jié)構(gòu)中的3 個(gè)(3×3×3) 的三維卷積核合并成(3×1×7) 和(3×7×1)的2 個(gè)非對(duì)稱(chēng)三維卷積核。這種非對(duì)稱(chēng)形式的拆分能夠節(jié)約大量參數(shù),并且其結(jié)果要好于對(duì)稱(chēng)地拆分為幾個(gè)相同的小卷積核,這種拆分結(jié)構(gòu)能夠處理更多以及更豐富的空間特征,能夠增加特征的多樣性,加快運(yùn)算速率和減輕過(guò)擬合。改進(jìn)型C3D 網(wǎng)絡(luò)整體結(jié)構(gòu)如圖7 所示。
圖5 合并(7×7)卷積示意
圖6 拆分(7×7)卷積為非對(duì)稱(chēng)卷積示意
圖7 改進(jìn)型C3D 網(wǎng)絡(luò)整體結(jié)構(gòu)
本文人體行為識(shí)別改進(jìn)算法研究實(shí)驗(yàn)所采用的實(shí)驗(yàn)設(shè)備是Intel Core i7-8 700 CPU,主頻為3.2 GHz,內(nèi)存為16 GB,硬盤(pán)為1 T,GPU 為Nvidia Tesla T4,GPU 顯存為16 GB。操作系統(tǒng)為Ubuntu16.04,編程語(yǔ)言選擇Python3.7,深度學(xué)習(xí)框架采用PyTorch1.6.0,主要依賴(lài)庫(kù)為Cuda10.1、Cudnn7.6、OpenCV4.4、Pillow7.2、NumPy1.19.2、Matplotlib3.3.2。
本文使用的人體行為識(shí)別數(shù)據(jù)集為UCF101和HMDB51,這兩類(lèi)數(shù)據(jù)集是目前被廣泛使用并公認(rèn)的人體行為識(shí)別算法基準(zhǔn)數(shù)據(jù)集。UCF101數(shù)據(jù)集包含101 個(gè)類(lèi)別,13 320 個(gè)視頻剪輯,每個(gè)類(lèi)別的剪輯視頻數(shù)量都不小于101 個(gè)視頻,并且每個(gè)視頻的長(zhǎng)度大多在2~10 s 之間,每個(gè)視頻的空間分辨率為 3 20像素×240像素,幀速率為25 幀/s,該數(shù)據(jù)集的整體時(shí)長(zhǎng)超過(guò)27 h,由于該數(shù)據(jù)集中的視頻大多包含攝像機(jī)的運(yùn)動(dòng)、背景混亂、部分遮擋、光照條件差以及低質(zhì)量幀的情況,所以在行為識(shí)別任務(wù)中具有一定的挑戰(zhàn)性。HMDB51 數(shù)據(jù)集包含51 個(gè)類(lèi)別,一共有6 766 個(gè)剪輯視頻,每個(gè)類(lèi)別至少包含101 個(gè)剪輯視頻,每個(gè)視頻的空間分辨率為 320像素×240像素,幀速率為30 幀/s,該數(shù)據(jù)集涉及到攝像機(jī)運(yùn)動(dòng)的有無(wú)、攝像機(jī)的不同拍攝角度、動(dòng)作中的人員數(shù)量不同以及視頻幀的質(zhì)量不同等情況,所以該視頻數(shù)據(jù)集同樣具有挑戰(zhàn)性。
首先,將視頻數(shù)據(jù)集按照每隔4 幀截取1 幀的形式將視頻轉(zhuǎn)換為幀圖像,但部分短視頻無(wú)法按照此間隔數(shù)讓網(wǎng)絡(luò)架構(gòu)的輸入時(shí)序長(zhǎng)度達(dá)到16 幀,則針對(duì)這部分較短視頻可自動(dòng)降低采樣步長(zhǎng)直到滿(mǎn)足最少16 幀的要求,這樣均勻采樣后的視頻幀序列能夠比較好地代表整個(gè)視頻的行為變化情況。在轉(zhuǎn)換為幀圖像的同時(shí),將整個(gè)數(shù)據(jù)集按照比例為6∶2∶2 的形式分為訓(xùn)練集、驗(yàn)證集以及測(cè)試集,并將幀圖像轉(zhuǎn)換為1 71像素×128像素保存到指定位置。在網(wǎng)絡(luò)輸入數(shù)據(jù)過(guò)程中,為提高模型精度以及增強(qiáng)模型穩(wěn)定性,將輸入尺寸為171像素×128像 素的圖像幀隨機(jī)裁剪為112像素×112像素,并通過(guò)在以上數(shù)據(jù)處理生成的視頻幀中指定選擇網(wǎng)絡(luò)輸入視頻幀的起始位置,然后在該位置采用一個(gè)滑動(dòng)窗口選取16 幀的網(wǎng)絡(luò)輸入視頻幀,則網(wǎng)絡(luò)輸入尺寸為(3×16×112×112),并且還對(duì)每個(gè)輸入數(shù)據(jù)進(jìn)行概率為0.5 的水平翻轉(zhuǎn)以及沿著圖像幀RGB 三條通道分別做均值減法操作來(lái)進(jìn)行數(shù)據(jù)增強(qiáng)。
本實(shí)驗(yàn)中網(wǎng)絡(luò)的迭代周期(epoch) 為50 次,學(xué)習(xí)率(learning rate)初始設(shè)置為0.000 01,并且每迭代10 次學(xué)習(xí)率將以0.1 進(jìn)行衰減,每次訓(xùn)練采用的批量大小(Batch_size)為8。
本實(shí)驗(yàn)通過(guò)在UCF101 數(shù)據(jù)集進(jìn)行訓(xùn)練,總訓(xùn)練時(shí)長(zhǎng)大約為18.5 h,訓(xùn)練的epoch 為50,準(zhǔn)確率變化曲線(xiàn)以及損失變化曲線(xiàn)分別如圖8、圖9所示,最終識(shí)別準(zhǔn)確率可達(dá)到86.4%,原始C3D 網(wǎng)絡(luò)模型在本實(shí)驗(yàn)中達(dá)到的準(zhǔn)確率為77.5%。可見(jiàn)本文改進(jìn)方法可以有效改進(jìn)準(zhǔn)確率,并且本文改進(jìn)后的模型參數(shù)量為25.82×106,原始C3D 網(wǎng)絡(luò)模型參數(shù)量為78.41×106,所以本文方法也可以有效地壓縮模型參數(shù)量。
圖8 UCF101 準(zhǔn)確率變化曲線(xiàn)
圖9 UCF101 損失變化曲線(xiàn)
本文還與Res3D[19]、Spatial Stream-Resnet[20]、LSTM Composite Model[21]等當(dāng)前流行的3 種方法進(jìn)行準(zhǔn)確率以及模型參數(shù)量的結(jié)果比較,證明本文方法在提高準(zhǔn)確率以及模型壓縮方面有很好的效果,如表1 所示。
表1 UCF101 數(shù)據(jù)集各模型方法結(jié)果對(duì)比
本實(shí)驗(yàn)在HMDB51 數(shù)據(jù)集上同樣進(jìn)行相應(yīng)的訓(xùn)練,該訓(xùn)練時(shí)長(zhǎng)大約為9 h,準(zhǔn)確率變化曲線(xiàn)以及損失變化曲線(xiàn)分別如圖10、圖11 所示。準(zhǔn)確率由圖10 可知為54.3%,原始C3D 網(wǎng)絡(luò)在本實(shí)驗(yàn)中準(zhǔn)確率結(jié)果為46.4%,可見(jiàn)本文方法對(duì)于該數(shù)據(jù)集的準(zhǔn)確率也有一定的提高。
圖10 HMDB51 準(zhǔn)確率變化曲線(xiàn)
圖11 HMDB51 損失變化曲線(xiàn)
本文對(duì)于該數(shù)據(jù)集同樣進(jìn)行本文方法與多種其他方法的準(zhǔn)確率以及模型參數(shù)量的結(jié)果比較,證明了本文方法確實(shí)在改善識(shí)別率和模型壓縮方面有很好的效果,如表2 所示。
表2 HMDB51 數(shù)據(jù)集各模型方法結(jié)果對(duì)比
本文針對(duì)C3D 神經(jīng)網(wǎng)絡(luò)進(jìn)行改進(jìn),并通過(guò)進(jìn)一步分析實(shí)驗(yàn)研究結(jié)果得出以下結(jié)論:
1)本文提出的基于改進(jìn)型C3D 網(wǎng)絡(luò)的人體行為識(shí)別算法經(jīng)過(guò)UCF101 和HMDB51 數(shù)據(jù)集的驗(yàn)證,在識(shí)別準(zhǔn)確率和模型壓縮方面均優(yōu)于原始C3D 網(wǎng)絡(luò)以及其他流行算法;
2)雖然本文方法在識(shí)別精度和模型壓縮方面都有一定的改善,但是改進(jìn)后的整體模型結(jié)構(gòu)卻比較復(fù)雜,容易產(chǎn)生過(guò)擬合,并且增加了模型的整體計(jì)算時(shí)間;
3)在之后的研究中考慮引入注意力機(jī)制以及對(duì)網(wǎng)絡(luò)進(jìn)行殘差形式的連接,來(lái)進(jìn)一步增強(qiáng)對(duì)于有效特征的關(guān)注,并且防止由于模型過(guò)于復(fù)雜導(dǎo)致的過(guò)擬合現(xiàn)象發(fā)生;
4)本文引入的三維點(diǎn)卷積、卷積核合并形式以及構(gòu)建的全卷積網(wǎng)絡(luò)結(jié)構(gòu)可以為之后改善模型識(shí)別效果提供很好的改進(jìn)思路,并且本文的模型壓縮方法可以讓人體行為識(shí)別系統(tǒng)更方便地嵌入到移動(dòng)設(shè)備中,對(duì)于實(shí)際應(yīng)用具有很好的價(jià)值。