錢聞卓
(杭州電子科技大學(xué),杭州 310018)
自從進(jìn)入了自媒體時(shí)代以后,越來(lái)越多的用戶在抖音、快手這樣的平臺(tái)來(lái)分享自己的生活視頻并且觀看別人的視頻。在抖音公布的2020年數(shù)據(jù)報(bào)告中,日活躍用戶已經(jīng)突破了6億大關(guān),這已經(jīng)接近全國(guó)人口數(shù)量的一半。伴隨著視頻量的爆炸式增長(zhǎng),視頻的商業(yè)用途也在逐漸地?cái)U(kuò)大,在過(guò)去十幾年中,隨著計(jì)算機(jī)視覺(jué)技術(shù)的不斷發(fā)展,與視頻數(shù)據(jù)處理有關(guān)的人體動(dòng)作識(shí)別[1]、目標(biāo)檢測(cè)[2-3]等方法都在生活中被大規(guī)模推廣和應(yīng)用,這大大提高了人們的生活效率和質(zhì)量。其中人體動(dòng)作識(shí)別技術(shù)是計(jì)算機(jī)視覺(jué)應(yīng)用的一大代表,它在辦公交互、虛擬競(jìng)技、虛擬游戲、醫(yī)療診斷、視頻監(jiān)控等領(lǐng)域都有很廣泛的應(yīng)用。近年來(lái),人體動(dòng)作識(shí)別技術(shù)取得了較快的發(fā)展,比較常用的傳統(tǒng)的動(dòng)作識(shí)別方法有基于模板匹配的方法、基于概率統(tǒng)計(jì)的方法,以及基于語(yǔ)法的方法[4]。由于傳統(tǒng)的識(shí)別方法大部分需要人工提取特征,所以較為耗時(shí)耗力[5]。而隨著深度學(xué)習(xí)技術(shù)的發(fā)展,人們開(kāi)始利用神經(jīng)網(wǎng)絡(luò)技術(shù)完成一些分類任務(wù),其中在2012年ImageNet大型視覺(jué)識(shí)別挑戰(zhàn)賽(ILSVRC)上,由于AlexNet的橫空出世,使像ImageNet這樣的大型數(shù)據(jù)集的圖像分類錯(cuò)誤率大大下降[6],使人們更加注意到利用深度學(xué)習(xí)技術(shù)進(jìn)行分類的優(yōu)勢(shì)。此后,不少研究人員將目光轉(zhuǎn)向了深度學(xué)習(xí)研究中去。伴隨著深度學(xué)習(xí)技術(shù)的發(fā)展,行為動(dòng)作識(shí)別的技術(shù)也得到了快速發(fā)展,其中,有基于無(wú)監(jiān)督學(xué)習(xí)的方法構(gòu)造網(wǎng)絡(luò)[7],也有基于循環(huán)神經(jīng)網(wǎng)絡(luò)的識(shí)別方法[8],還有基于卷積神經(jīng)網(wǎng)絡(luò)的識(shí)別方法,其中一種方法是基于雙流法來(lái)處理視頻數(shù)據(jù)[9],對(duì)其動(dòng)作進(jìn)行分類,該方法的缺點(diǎn)在于訓(xùn)練速度較為緩慢,難以處理規(guī)模較大的實(shí)時(shí)視頻,另一種方法則是在2015年,由Facebook提出的C3D神經(jīng)網(wǎng)絡(luò)[10],C3D神經(jīng)網(wǎng)絡(luò)是直接將視頻數(shù)據(jù)作為輸入,來(lái)提取其特征,進(jìn)行數(shù)據(jù)信息的傳遞,由于此過(guò)程的數(shù)據(jù)預(yù)處理過(guò)程很少,因此其運(yùn)行時(shí)間得到大大縮短。該模型在UCF101數(shù)據(jù)集上進(jìn)行訓(xùn)練,識(shí)別的準(zhǔn)確率是85.2%,速度達(dá)到313.9 fps,由于它的高速率,使此網(wǎng)絡(luò)應(yīng)用前景會(huì)更加廣闊。
雖然C3D神經(jīng)網(wǎng)絡(luò)的速率較快,但是其速率大小仍不適合在商業(yè)領(lǐng)域進(jìn)行應(yīng)用,而對(duì)于準(zhǔn)確率,C3D神經(jīng)網(wǎng)絡(luò)在UCF101數(shù)據(jù)上的準(zhǔn)確率為85.2%,還有較大的提升空間。因此,在這些問(wèn)題上,本文將進(jìn)一步優(yōu)化C3D神經(jīng)網(wǎng)絡(luò),來(lái)對(duì)其進(jìn)行準(zhǔn)確率的提升,訓(xùn)練收斂速度的加快。
最原始的C3D神經(jīng)網(wǎng)絡(luò)具有8個(gè)卷積層,8個(gè)通道數(shù)分別為 64、128、256、256、512、512、512、512,5個(gè)最大池化層、2個(gè)全連接層,以及1個(gè)softmax輸出層。其中視頻輸入是C×L×H×W,C為圖像通道,L為視頻序列的長(zhǎng)度。Tran經(jīng)過(guò)大量的實(shí)驗(yàn)證明3×3×3的卷積核是3D卷積網(wǎng)絡(luò)的最佳選擇[10]。因此,在本網(wǎng)絡(luò)中,所有3D卷積濾波器均為3×3×3,步長(zhǎng)為1×1×1。為了保持早期的時(shí)間信息,設(shè)置pool1核大小為1×2×2、步長(zhǎng)1×2×2,其余所有3D池化層均為2×2×2,步長(zhǎng)為2×2×2。每個(gè)全連接層有4096個(gè)輸出單元。整個(gè)網(wǎng)絡(luò)的結(jié)構(gòu)以及各層的尺寸大小如圖1所示。
圖1 C3D網(wǎng)絡(luò)結(jié)構(gòu)
該網(wǎng)絡(luò)的輸入尺寸大小是(3×16×112×112),對(duì)于這類尺寸,可以寫成(c×l×h×w)的形式。在這其中,c代表著通道的數(shù)量,l代表著輸入視頻幀的數(shù)量,h代表輸入高度,w代表輸入寬度。其中3D卷積濾波器內(nèi)核尺寸可以寫為(d×k×k),其中d代表著3D卷積濾波器內(nèi)核的深度,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)化算法為SGD(隨機(jī)梯度下降),而激活函數(shù)為ReLU,并為防止過(guò)擬合現(xiàn)象而采用了Dropout正則化方法[5]。
原始的C3D神經(jīng)網(wǎng)絡(luò)在層與層之間采用了ReLU激活函數(shù),并且優(yōu)化器采用了SGD優(yōu)化算法,本文針對(duì)這兩個(gè)方面,將ReLU激活函數(shù)優(yōu)化為Mish激活函數(shù),用Adam優(yōu)化算法替換了SGD優(yōu)化算法,形成了MA-C3D神經(jīng)網(wǎng)絡(luò)(Mish-Adam C3D network,后文統(tǒng)一簡(jiǎn)寫為MA-C3D),以此來(lái)提高模型的識(shí)別準(zhǔn)確率。
在以往的卷積神經(jīng)網(wǎng)絡(luò)訓(xùn)練當(dāng)中,多數(shù)網(wǎng)絡(luò)通常都會(huì)使用的激活函數(shù)為修正線性單元(recti?fied linear unit,ReLU)[11],該激活函數(shù)的計(jì)算表達(dá)式較為簡(jiǎn)單,沒(méi)有一些過(guò)多的復(fù)雜運(yùn)算。并且,由于此激活函數(shù)沒(méi)有飽和區(qū),梯度消失的現(xiàn)象就不會(huì)再次發(fā)生。因此,它被廣泛地應(yīng)用在各個(gè)網(wǎng)絡(luò)結(jié)構(gòu)中。但是,ReLU在訓(xùn)練過(guò)程中并不適應(yīng)較大的梯度輸入,會(huì)造成部分神經(jīng)元“壞死”的情況,導(dǎo)致相應(yīng)的參數(shù)無(wú)法更新,并且它在原點(diǎn)并不可導(dǎo)、不平滑,因此會(huì)導(dǎo)致在梯度優(yōu)化過(guò)程中會(huì)出現(xiàn)一些意想不到的問(wèn)題。上述的問(wèn)題會(huì)導(dǎo)致輸入數(shù)據(jù)的信息難以深入地向網(wǎng)絡(luò)層傳遞,進(jìn)而影響網(wǎng)絡(luò)層之間的參數(shù)的優(yōu)化更新,最后導(dǎo)致應(yīng)用的模型的識(shí)別準(zhǔn)確率出現(xiàn)下降。因此,在這樣的情況下,本文采用了一種新的激活函數(shù),即Mish激活函數(shù),該函數(shù)相比ReLU激活函數(shù),有以下幾方面的優(yōu)點(diǎn):
(1)該函數(shù)沒(méi)有上界。因此不會(huì)出現(xiàn)因?yàn)轱柡投鴮?dǎo)致梯度為零的情況,從而可以使參數(shù)更好地進(jìn)行更新,進(jìn)而使模型的識(shí)別準(zhǔn)確率得到上升。
(2)該函數(shù)存在下界。在負(fù)半軸有較小的權(quán)重,因此可以防止ReLU函數(shù)出現(xiàn)的神經(jīng)元壞死的現(xiàn)象,此模型也可以產(chǎn)生更強(qiáng)的正則化效果,并且如果出現(xiàn)輸入為負(fù)數(shù)的情況,同樣能夠進(jìn)行參數(shù)更新和信息的傳遞,進(jìn)而使最后訓(xùn)練的參數(shù)更加準(zhǔn)確,使模型識(shí)別更加準(zhǔn)確。
(3)Mish激活函數(shù)的每個(gè)點(diǎn)基本都是平滑的。因此會(huì)更加容易優(yōu)化并且更加容易泛化,而且隨著網(wǎng)絡(luò)更深,輸入信息也可以更深入的流動(dòng)。此外,在x<0的部分中,該函數(shù)保留了少量的負(fù)信息,這樣也有利于輸入信息更好的流動(dòng)。進(jìn)而使參數(shù)的更新更加準(zhǔn)確,使得最后的模型識(shí)別更加準(zhǔn)確。
Mish的函數(shù)圖像如圖2所示。其中該激活函數(shù)的輸入x為輸入信息的加權(quán)和,y為x經(jīng)過(guò)Mish激活函數(shù)的函數(shù)值,并且該激活函數(shù)已經(jīng)在文獻(xiàn)[12]中已經(jīng)證明在多個(gè)任務(wù)實(shí)驗(yàn)里Mish的激活效果要優(yōu)于ReLU的激活效果。
圖2 Mish激活函數(shù)
對(duì)于優(yōu)化器,本文采用Adam優(yōu)化算法[13]來(lái)進(jìn)行優(yōu)化,選用Adam優(yōu)化算法而不是以往的隨機(jī)梯度下降(stochastic gradient descent,SGD)[14]算法的原因是隨機(jī)梯度下降算法是在每一次僅僅取一個(gè)樣本進(jìn)行優(yōu)化,這樣會(huì)比較容易引入隨機(jī)噪聲,導(dǎo)致準(zhǔn)確率下降。并且,隨機(jī)梯度下降的學(xué)習(xí)率一般是固定的,因此如果學(xué)習(xí)率的選擇不當(dāng),會(huì)導(dǎo)致難以得出理想中的最優(yōu)解。因此,基于上述的問(wèn)題,本文采取了另一種優(yōu)化算法,即Adam算法,Adam算法相比于SGD算法它結(jié)合了動(dòng)量和RMSprop算法的優(yōu)點(diǎn),它利用梯度的一階矩估計(jì)和二階矩估計(jì)來(lái)動(dòng)態(tài)調(diào)整每個(gè)參數(shù)的學(xué)習(xí)率,這樣使得學(xué)習(xí)率不再是一個(gè)定值,并且學(xué)習(xí)率的調(diào)整也有一個(gè)確定的范圍,這會(huì)使得參數(shù)的變化比較平穩(wěn),且能夠很好地處理噪音數(shù)據(jù)帶來(lái)的問(wèn)題。因此,損失值能達(dá)到全局最優(yōu)解的概率也就越大,最后可以更容易得到神經(jīng)網(wǎng)絡(luò)最優(yōu)參數(shù),進(jìn)而使模型的識(shí)別準(zhǔn)確率達(dá)到更高。
本文實(shí)驗(yàn)所采用的實(shí)驗(yàn)設(shè)備是Intel(R)Xeon(R)Platinum 8260C CPU,主頻為2.30 GHz,內(nèi)存為16 GB,硬盤為1 T,GPU為NVIDIA GeForce RTX 3090,GPU顯存為24 GB。操作系統(tǒng)為Ubuntu 18.04,編程語(yǔ)言選擇Python 3.7,深度學(xué)習(xí)框架采用PyTorch1.7.1,主要依賴庫(kù)為Cuda 11.0、Cudnn 8.0、OpenCV 4.4、Pillow 7.2、NumPy 1.19.5、Matplotlib 3.3.3。
本文實(shí)驗(yàn)采用了UCF101數(shù)據(jù)集對(duì)其進(jìn)行實(shí)驗(yàn),它是收集自YouTube的UCF101數(shù)據(jù)集[15],它是一個(gè)現(xiàn)實(shí)動(dòng)作視頻的動(dòng)作識(shí)別數(shù)據(jù)集,它提供了來(lái)自101個(gè)動(dòng)作類別的13320個(gè)視頻,總共時(shí)長(zhǎng)約27 h。UCF101在動(dòng)作方面提供了最大的多樣性,它也包含了像攝像機(jī)的大量移動(dòng)、雜亂的背景、亮度不一的照明條件等干擾因素,這些問(wèn)題都對(duì)模型的泛化能力提出了很高的要求,增大了模型訓(xùn)練的難度。
對(duì)于自身的數(shù)據(jù)視頻,首先將視頻轉(zhuǎn)化為連續(xù)的幀,之后本文按照每相隔3幀取1幀的原則,得到能覆蓋此動(dòng)作信息的連續(xù)幀,如果最后的幀數(shù)沒(méi)有到16幀,則可以降低采樣的步長(zhǎng),使得每個(gè)動(dòng)作得幀數(shù)達(dá)到16幀及以上。利用這樣的方式,可以獲取整個(gè)動(dòng)作較為完整的信息。轉(zhuǎn)化為幀圖像之后,我們按照16∶5∶4的比例劃分訓(xùn)練集、測(cè)試集和驗(yàn)證集。并且在訓(xùn)練時(shí),將每幀大小統(tǒng)一為171×128,以進(jìn)入本文的網(wǎng)絡(luò)進(jìn)行訓(xùn)練。同時(shí),為了進(jìn)一步增強(qiáng)模型的魯棒性,我們利用了對(duì)圖像的隨機(jī)像素丟棄、圖像添加噪聲以及對(duì)圖像進(jìn)行幾何變化等手段來(lái)對(duì)原始數(shù)據(jù)進(jìn)行增廣。
本實(shí)驗(yàn)通過(guò)UCF101數(shù)據(jù)集進(jìn)行訓(xùn)練,總共進(jìn)行了50次迭代,訓(xùn)練時(shí)長(zhǎng)約為18.7h,準(zhǔn)確率變化曲線以及損失函數(shù)曲線如圖3、圖4所示,最終可達(dá)到的行為動(dòng)作識(shí)別準(zhǔn)確率可達(dá)到85.3%,原始C3D網(wǎng)絡(luò)在本實(shí)驗(yàn)中達(dá)到的準(zhǔn)確率為79.4%,由此可見(jiàn),本方法能夠有效地提高準(zhǔn)確率。
圖3 UCF101準(zhǔn)確率變化曲線
圖4 UCF101函數(shù)損失值變化曲線
在此基礎(chǔ)上,本文也和一些經(jīng)典模型,比如Two-stream雙流卷積神經(jīng)網(wǎng)絡(luò)[16]、LTSM Compos?ite Model[17]、R-C3D[18]進(jìn)行了比較,經(jīng)過(guò)模型之間準(zhǔn)確率的比較,證實(shí)了本文提出的模型的準(zhǔn)確率要好于上述三種模型,如表1所示。
表1 UCF101各數(shù)據(jù)集對(duì)比
本文采用對(duì)C3D神經(jīng)網(wǎng)絡(luò)進(jìn)行了結(jié)構(gòu)上的一些改進(jìn),形成了MA-C3D神經(jīng)網(wǎng)絡(luò),基于以上的改進(jìn)方法,可以得到以下的結(jié)論:
(1)改進(jìn)后的MA-C3D神經(jīng)網(wǎng)絡(luò),在UCF101數(shù)據(jù)集上驗(yàn)證,經(jīng)過(guò)測(cè)試之后,可以得到改進(jìn)后的MA-C3D網(wǎng)絡(luò)的準(zhǔn)確率要高于原始的C3D網(wǎng)絡(luò)及其他的一些卷積神經(jīng)網(wǎng)絡(luò)模型算法。
(2)Mish函數(shù)雖然可以讓網(wǎng)絡(luò)的信息能夠更加深入的流動(dòng),進(jìn)而提高模型的準(zhǔn)確率,但是會(huì)因此降低模型訓(xùn)練的速度,增大一定的計(jì)算量。
(3)本文主要對(duì)模型準(zhǔn)確率的提高進(jìn)行了實(shí)驗(yàn)與研究。但是,在模型參數(shù)量的大小優(yōu)化方式上,并沒(méi)有進(jìn)行更深的研究,后續(xù)將考慮對(duì)最后的全連接層進(jìn)行替換,換為以全局平均池化[19]加上全連接層的方式手段來(lái)減少參數(shù)量的計(jì)算,進(jìn)而對(duì)模型就行更深的優(yōu)化。
(4)本文主要對(duì)激活函數(shù)和優(yōu)化器進(jìn)行了優(yōu)化,網(wǎng)絡(luò)結(jié)構(gòu)優(yōu)化較小。因此,后續(xù)將考慮采用逐層卷積[20]以及將特征金字塔方法應(yīng)用于3D卷積神經(jīng)網(wǎng)絡(luò)[21-22]等方法來(lái)對(duì)網(wǎng)絡(luò)進(jìn)行優(yōu)化。
(5)本文通過(guò)對(duì)激活函數(shù)和優(yōu)化器的變化來(lái)提高C3D網(wǎng)絡(luò)訓(xùn)練的準(zhǔn)確度,這是一種非常簡(jiǎn)單有效的改變結(jié)構(gòu)的方式,未來(lái)可以從這些角度進(jìn)一步對(duì)各個(gè)神經(jīng)網(wǎng)絡(luò)模型進(jìn)行優(yōu)化,讓其更好應(yīng)用到生產(chǎn)生活中。