王粉花 張 強 黃 超 張 苒
①(北京科技大學(xué)自動化學(xué)院 北京100083)
②(北京科技大學(xué)人工智能研究院 北京100083)
③(北京市工業(yè)波譜成像工程中心 北京100083)
隨著深度學(xué)習(xí)以及虛擬現(xiàn)實技術(shù)的發(fā)展,人機交互技術(shù)正逐漸從以機器和計算機為中心轉(zhuǎn)移到以人為中心[1]。手勢是人類最常用的人機交互方式(Human-Computer Interaction,HCI)之一,也是正常人與聾啞人以及聾啞人之間溝通交流的重要方式[2]。手勢識別是人機交互領(lǐng)域的一個前沿課題和研究熱點。手勢本身具有靈活性、不固定性和多異性,所以手勢識別是一個富有挑戰(zhàn)性的多學(xué)科交叉的研究方向。手勢識別根據(jù)數(shù)據(jù)集是圖片還是視頻可分為靜態(tài)手勢識別和動態(tài)手勢識別,靜態(tài)手勢識別只關(guān)注某個時間點的外形特征,動態(tài)手勢識別則需關(guān)注一段時間的動作,增加了時間信息和動作特征。相比較于靜態(tài)手勢識別,動態(tài)手勢識別更貼近人的表達習(xí)慣、更加具有現(xiàn)實意義。
早期的手語識別主要依靠可穿戴設(shè)備和人工經(jīng)驗提取特征,但是可穿戴設(shè)備需要人們佩戴特定的設(shè)備,影響了人們的活動自由,具有一定的局限性[3]。Parcheta等人[4]使用基于隱馬爾可夫模型(Hsidden Markov Model,HMM)的手勢識別,在包含91個手語單詞數(shù)據(jù)集上取得了比較高的準確率。運用HMM進行手語識別有兩種情況:一是為每個單詞構(gòu)造一個HMM模型[5],二是為多個單詞建立一個HMM模型[6]。將手語視頻中的手形和運動軌跡作為信息提取特征來計算手語識別。但是人工提取特征非常耗時耗力,并且需要領(lǐng)域內(nèi)的專家才能設(shè)計出好的分類特征。隨著卷積神經(jīng)網(wǎng)絡(luò)的不斷發(fā)展,利用深度學(xué)習(xí)實現(xiàn)基于視頻的動態(tài)手勢識別受到了研究者的關(guān)注,視頻處理要求考慮時域連接。在這方面,循環(huán)神經(jīng)網(wǎng)絡(luò)(Recurrent Neural Network,RNN)顯示出其巨大的優(yōu)勢。然而RNN在特征提取方面并不令人滿意,為此一些研究者選擇先用卷積神經(jīng)網(wǎng)絡(luò)(Convolution Neural Network,CNN)來提取圖像特征,生成特征向量并輸入RNN進行計算[7]。在CNN部分,可以使用預(yù)先訓(xùn)練好的CNN網(wǎng)絡(luò)進行圖像特征提取[8],這大大提高了網(wǎng)絡(luò)的訓(xùn)練效率??紤]到視頻的時空信息,3維卷積神經(jīng)網(wǎng)絡(luò)(3D-CNN)應(yīng)運而生。如Tran等人[9]提出的C3D網(wǎng)絡(luò),使用了3D-CNN代替了傳統(tǒng)卷積神經(jīng)網(wǎng)絡(luò)中的2D-CNN,將時間信息也考慮在內(nèi)。Chen等人[10]提出了MFNet。還有參考ResNet等2D-CNN網(wǎng)絡(luò)產(chǎn)生的新3D-CNN結(jié)構(gòu),這些網(wǎng)絡(luò)在行為識別上取得了很好的成績,同樣也可以將它們應(yīng)用于手語識別[11]。在動作識別和手語識別之間有許多相似之處,3D-CNN為手語識別提供了一種很好的方法[12]。然而僅輸入原始圖像不足以獲得足夠多的特征。許多研究者開始利用卷積神經(jīng)網(wǎng)絡(luò)和多流輸入[13]來獲得更多的信息,如光流[14]信息、深度信息、后信息[15]等,這有利于提高網(wǎng)絡(luò)識別的精度。借鑒雙流網(wǎng)絡(luò)和3D-CNN的優(yōu)點,Deep mind團隊提出了I3D網(wǎng)絡(luò)[16],擴展2D卷積Inception v1為3D結(jié)構(gòu),同時將光流單獨作為一個分支和原始圖像形成雙流網(wǎng)絡(luò),RGB圖像和光流分開訓(xùn)練。I3D是目前行為識別最好的網(wǎng)絡(luò)之一。
本文提出了一種在I3D網(wǎng)絡(luò)的基礎(chǔ)上融合注意力機制CBAM[17]的動態(tài)手勢的識別方法。在CSL[18]數(shù)據(jù)集上進行實驗,首先從RGB視頻中提取光流特征,然后將RGB視頻、光流信息分解成幀圖片集合。將數(shù)據(jù)按照3:1:1隨機劃分為訓(xùn)練集、驗證集和測試集,最后將這兩種數(shù)據(jù)送入同一個網(wǎng)絡(luò)結(jié)構(gòu)中進行訓(xùn)練。本文所提出方法的識別準確率達到了90.76%,實現(xiàn)了對動態(tài)手勢很好的識別。
I3D網(wǎng)絡(luò)是由Deep mind團隊提出的最新3D卷積網(wǎng)絡(luò)之一,在總結(jié)以往主流視頻動作識別模型優(yōu)缺點的基礎(chǔ)上,把雙流的思想加入3D卷積當(dāng)中,其中一個3D卷積網(wǎng)絡(luò)接收RGB信息,另一個3D卷積網(wǎng)絡(luò)接收優(yōu)化后的平滑光流信息。3D卷積結(jié)構(gòu)由2D卷積Inception v1擴展而來,如圖1(a)所示,具體做法是把2D模型中的卷積核參數(shù)在時間維度上不斷復(fù)制,形成3D卷積核的參數(shù),之后除以N,保證網(wǎng)絡(luò)輸出和2D卷積上一樣,而其他的非線性層結(jié)構(gòu)都與原來的2D卷積模型一樣,卷積核和池化均增加了時間維度。為了使時間維度不會因過快或過慢的縮減導(dǎo)致捕捉不到動態(tài)場景的發(fā)生,在前兩個池化層上將時間維度的步長設(shè)為1,空間維度是2×2,最后池化層的維度是2×7×7。網(wǎng)絡(luò)的具體連接方式如圖1(b)所示。雖然3D卷積可以直接學(xué)習(xí)視頻的時間特征,但是它只執(zhí)行純粹的前向傳播,而光流算法在一定程度上提供了迭代的思想在里面,將光流加進來后可以提高網(wǎng)絡(luò)的識別精度。
近年來很多論文驗證了在神經(jīng)網(wǎng)絡(luò)中引入注意力機制能夠提高網(wǎng)絡(luò)模型的特征表達能力。注意力不僅能告訴網(wǎng)絡(luò)模型該注意什么,而且也能增強圖像特定區(qū)域的表征能力。由Woo等人[17]提出的CBAM是一種結(jié)合了空間(spatial)和通道(channel)的注意力機制模塊,如圖2所示。相較于SENet[19]只關(guān)注通道的注意力,CBAM顯得更加全面。
通道注意力也就是特征注意力,而空間注意力則是反映輸入結(jié)果在空間維度上的重要程度。兩個模塊結(jié)合,就對輸入進行了立體化的注意力處理,相當(dāng)于一個篩子,在輸入神經(jīng)網(wǎng)絡(luò)之前,先將輸入進行一遍篩選,選出最重要的特征。
圖1 I3D網(wǎng)絡(luò)
圖2 注意力機制CBAM模型
其中,MC(F)為 通道注意力模塊,σ為Sigmod激活函數(shù),M LP()為 多層感知器,A vgPool()和MaxPool()分別為平均值池化和最大值池化。這個模塊相當(dāng)于一個濾波器,重要的通道權(quán)重較大,不重要的通道權(quán)重較小,就實現(xiàn)了在特征維度上的注意力機制。
空間注意力模型關(guān)注的是有用的信息“在哪里”。首先應(yīng)用平均值池化和最大值池化對輸入進行處理,不過這次是在通道維度上進行壓縮采樣,生成兩個2維的空間矩陣,然后把它們疊在一起,輸入一個卷積層,進行權(quán)重的學(xué)習(xí)優(yōu)化,這就又生成了一個空間注意力濾波器,如式(2)所示
其中,MS(F′)為空間注意力模塊,f為卷積層運算。輸入特征圖首先與通道注意力模塊點乘,再與空間注意力模塊點乘,得到最后經(jīng)過CBAM注意力處理后的特征圖,如式(3)和式(4)所示
其中,F(xiàn)為輸入特征圖,F(xiàn)′′為輸出特征圖。
深層神經(jīng)網(wǎng)絡(luò)的訓(xùn)練很復(fù)雜,在訓(xùn)練過程中每一個隱藏層的參數(shù)改變都會影響后一層的輸入,導(dǎo)致每一批次的數(shù)據(jù)分布也隨之發(fā)生改變,使得神經(jīng)網(wǎng)絡(luò)需要在每次迭代中學(xué)習(xí)不同的數(shù)據(jù),大大增加了網(wǎng)絡(luò)學(xué)習(xí)的難度以及網(wǎng)絡(luò)過擬合的風(fēng)險。為了解決以上問題,由Ioffe等人[20]在2015年提出批量歸一化處理方法。通常網(wǎng)絡(luò)的訓(xùn)練采用mini-batch訓(xùn)練法,將整個數(shù)據(jù)集劃分為多個批次,每個批次包含很多組數(shù)據(jù),訓(xùn)練的時候以批次為單位進行數(shù)據(jù)的輸入,并進行1次優(yōu)化。這樣做的好處是,每次迭代整個數(shù)據(jù)集,可以進行多次優(yōu)化,而不是1次迭代只優(yōu)化1次,加快了網(wǎng)絡(luò)訓(xùn)練的速度;而且每次以批次為單位進行運算,引入兩個額外參數(shù)來實現(xiàn)批量歸一化操作。其計算公式為
其中,式(5)計算輸入數(shù)據(jù)的均值,式(6)計算輸入數(shù)據(jù)的方差,式(7)進行數(shù)據(jù)的標(biāo)準化,式(8)進行數(shù)據(jù)的偏移:數(shù)據(jù)經(jīng)過BN層的處理,會更加靠近原點分布,使得激活函數(shù)能夠獲得較大梯度;同時數(shù)據(jù)也由較為稀疏的分布變得更加緊密,利于神經(jīng)網(wǎng)絡(luò)去進行分類。因為密集、整齊的數(shù)據(jù),往往更容易被擬合,且不容易出現(xiàn)過擬合的情況(神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)到了數(shù)據(jù)分布中混亂的不必要的部分)。各種不同來源不同分布的數(shù)據(jù),經(jīng)過BN層的標(biāo)準化處理,分布會更趨于統(tǒng)一,也有利于提高網(wǎng)絡(luò)的泛化性能,因此BN層在提高網(wǎng)絡(luò)訓(xùn)練效率的同時,還可以提升網(wǎng)絡(luò)的性能,如今被越來越多的研究者所采用。
本文提出的CBAM-I3D網(wǎng)絡(luò)的最小結(jié)構(gòu)如圖3(a)所示,是在I3D的3D Inception v1模塊的Concatenation層后加入了CBAM。通過這種融合網(wǎng)絡(luò)既可以實現(xiàn)原始輸入信息的無損傳輸,又可以自動學(xué)習(xí)得到圖像的空間位置和通道的重要程度,然后根據(jù)重要程度去增強有用特征并抑制無用特征,從而實現(xiàn)空間和通道的自適應(yīng)校準,添加CBAM注意力機制對網(wǎng)絡(luò)結(jié)構(gòu)的影響不大,卻能使網(wǎng)絡(luò)學(xué)習(xí)到圖像中更加重要的通道特征和空間位置。其中每一個卷積運算單元都是由3D卷積、BN層和ReLU激活函數(shù)層組成的。BN層和ReLU函數(shù)緩解了梯度消失的問題,也減輕了深層神經(jīng)網(wǎng)絡(luò)的退化,使這個小單元可以多次重復(fù)堆疊使用,構(gòu)建一個足夠深的神經(jīng)網(wǎng)絡(luò)。由于小的卷積核可以獲得更好的效果,故這個結(jié)構(gòu)單元中的所有卷積核尺寸都沒有超過3。除了加入注意力機制CBAM外,本文還對I3D的網(wǎng)絡(luò)結(jié)構(gòu)做了一些修改:(1)去掉前兩個最大池化層,防止由池化操作導(dǎo)致圖像的低級特征丟失。(2)去掉最后的平均池化操作,只保留1×1×1卷積,這樣是為了在減少大量參數(shù)的情況下保留圖像的全局信息,增加了網(wǎng)絡(luò)的魯棒性。網(wǎng)絡(luò)具體的連接方式如圖3(b)所示,網(wǎng)絡(luò)權(quán)重采用標(biāo)準正態(tài)分布(均值為0,方差為1)隨機初始化。
本文提出的雙流CBAM-I3D網(wǎng)絡(luò)的兩個輸入分別選擇原始的RGB圖像和光流圖像,整體的網(wǎng)絡(luò)結(jié)構(gòu)如圖4所示。
使用雙流網(wǎng)絡(luò)的優(yōu)勢在于可以綜合考慮原始圖像中豐富的空間特征信息和光流圖像中的運動特征信息,提取更多的特征用來分類,增加識別精度。
本次實驗的硬件配置為Intel Xeon E5-2660 v4 CPU,64 GB內(nèi)存,GPU顯卡為2組NVIDIA TITAN Xp,24 GB顯存。軟件環(huán)境為64位Ubuntu 16.04操作系統(tǒng),CUDA 8.0.61,cuDNN 5.1.10,深度學(xué)習(xí)框架為PyTorch ,版本為1.0.1,Python版本為3.5.3。
圖3 CBAM-I3D網(wǎng)絡(luò)
實驗使用的手語數(shù)據(jù)集CSL包括一個手語單詞數(shù)據(jù)集、一個手語連續(xù)詞句數(shù)據(jù)集。這兩個數(shù)據(jù)集都包括RGB視頻和深度圖像視頻。本文使用的主要是手語單詞數(shù)據(jù)集的RGB視頻,共有100類手語單詞,5013個RGB視頻。為了防止過擬合,這里將它按照3:1:1分成了訓(xùn)練集、驗證集和測試集兩部分。為了組建雙流網(wǎng)絡(luò),本文還制作了一個光流圖的數(shù)據(jù)集,用于作為第2部分網(wǎng)絡(luò)的輸入,將在下面做詳細介紹。
3.3.1 RGB視頻預(yù)處理
CSL動態(tài)手勢數(shù)據(jù)集原始視頻長度約為2 s,幀寬度為1280,幀高度為720,幀速率為30幀/s。本文使用的神經(jīng)網(wǎng)絡(luò)是以I3D為基礎(chǔ)的,需要輸入連續(xù)的圖像幀。所以先將每個視頻以25幀/s的速率裁剪成圖像幀,裁剪出來大約50張圖片。為了便于處理,選擇50幀為本次實驗的基準幀,在數(shù)據(jù)讀取的時候,如果圖片的數(shù)量大于50張,程序會進行采樣選取其中連續(xù)的50幀圖片;如果圖片的數(shù)量小于50張,程序會隨機選取部分圖像幀進行復(fù)制,湊夠50張圖片。通過這樣的處理,既保留了動態(tài)手勢的核心運動信息,又避免了引入不必要的數(shù)據(jù)對實驗結(jié)果產(chǎn)生影響。另外1280×720圖片的尺寸太大,其中人做手語的部分太小,這樣的圖片輸入網(wǎng)絡(luò)中,一是會存在過多的無用信息,對神經(jīng)網(wǎng)絡(luò)擬合數(shù)據(jù)造成干擾;二是會增大計算開銷,所以本文使用深度學(xué)習(xí)中目標(biāo)檢測的方法,切割出圖像中有人的部分。但是每組圖片中的人的大小是不一樣的,這里運用Tensorflow中的image.resize_image(method)函數(shù)將圖片大小統(tǒng)一調(diào)整為224×224。method參數(shù)選擇雙線性插值法。實驗結(jié)果表明,經(jīng)過處理之后的數(shù)據(jù),對網(wǎng)絡(luò)的精度大約有1.2%的提升。圖5為RGB圖像處理前后的對比。
3.3.2光流圖的提取
光流(optical flow)是視頻動作識別分析的一種重要方法,它代表著3維物體的每個像素在像平面上運動的瞬時速度,一般來說光流也是物體在相鄰兩幀中運動變化情況的縮影。從光流信息中,不僅可以得到物體的運動方向、運動速度,還可以得到這個物體和我們的距離以及角度[21]。所以運用光流就可以很好地表達物體運動過程。得到光流圖的方法有很多,本文使用的是基于Lucas-kanade方法的OpenCV中的calcOpticalFlowPyr LK函數(shù)。使用該函數(shù)成功提取每一幀的光流圖并且保存,制作出單個單詞的光流數(shù)據(jù)集。
圖4 雙流CBAM-I3D網(wǎng)絡(luò)
圖5 RGB圖像處理前后的對比
首先,使用連續(xù)50幀,每幀大小為224×224的RGB圖像來訓(xùn)練網(wǎng)絡(luò)。每一批次隨機選取16個樣本進行一次迭代。初始學(xué)習(xí)率為0.001,學(xué)習(xí)率衰減為指數(shù)衰減,衰減系數(shù)為0.96,衰減步數(shù)為100。采用交叉熵損失函數(shù),選用Adam Optimizer優(yōu)化器對網(wǎng)絡(luò)進行優(yōu)化。共進行50000次迭代,在前1000次迭代中每100次保存1次訓(xùn)練權(quán)重,往后每隔1000次保存1次訓(xùn)練權(quán)重;然后用同樣的方法訓(xùn)練一個光流圖的模型,同樣的方式保存權(quán)重。然后再將兩個模型分別加載到雙流網(wǎng)絡(luò)中,以較低的學(xué)習(xí)率微調(diào)全部參數(shù)完成雙流網(wǎng)絡(luò)的訓(xùn)練。
為了說明提出方法的有效性,本次實驗對比了C3D網(wǎng)絡(luò)、MFnet網(wǎng)絡(luò)、3D ResNet網(wǎng)絡(luò)和I3D網(wǎng)絡(luò)在CSL數(shù)據(jù)集上的識別效果。對比結(jié)果如表1所示(其中平均檢測時間是對于一段視頻而言的)。C3D網(wǎng)絡(luò)首先將3D-CNN應(yīng)用于行為檢測,該網(wǎng)絡(luò)的結(jié)構(gòu)很簡單,只有8個卷積層、5個池化層和2個全連接層,所以在CSL數(shù)據(jù)集上效果最差,耗時也最長。為了使3D卷積網(wǎng)絡(luò)的計算量不至于過于龐大,MFnet被提了出來,MFnet通過分組卷積,降低了模型的計算量,MFnet的每一個分組都類似于ResNet的殘差結(jié)構(gòu),但是一個輸入會在通道維度上被分解為多個部分,所以從表1中能夠看出雖然MFnet的Top1準確率不是很高,但是耗時卻是最少的。為了更好地進行視頻動作識別,研究者開始將深層網(wǎng)絡(luò)如ResNet、Inception等2D網(wǎng)絡(luò)擴展到3D網(wǎng)絡(luò),并對網(wǎng)絡(luò)結(jié)構(gòu)進行適當(dāng)調(diào)整,從表1中也能看到,在CSL數(shù)據(jù)集中3D ResNet、I3D都取得了不錯的效果,說明更深的網(wǎng)絡(luò)結(jié)構(gòu)在擬合復(fù)雜數(shù)據(jù)方面更有優(yōu)勢。另外從表1中也可以看出除了MFnet網(wǎng)絡(luò)耗時時間較少外,其他網(wǎng)絡(luò)耗時均較長,所以行為識別以后的研究方向在于網(wǎng)絡(luò)達到高準確率的同時,也能實現(xiàn)低消耗。CBAM是一個輕量化的模塊,可以完美地與其他網(wǎng)絡(luò)進行融合,從表1中可以看出在添加了CBAM后,各網(wǎng)絡(luò)都有不同程度的提升。另外雙流網(wǎng)絡(luò)對準確率也帶來一定的提升。本文提出的CBAM-I3D網(wǎng)絡(luò)在單流和雙流的網(wǎng)絡(luò)中都取得了的最好效果。實驗結(jié)果驗證了所提方法的有效性。
本文提出了一種融合雙流3D卷積神經(jīng)網(wǎng)絡(luò)和注意力機制的新型動態(tài)手語識別網(wǎng)絡(luò),充分利用了RGB視頻信息和光流信息對動態(tài)手勢進行識別,在I3D網(wǎng)絡(luò)中引入了CBAM,在不影響原始網(wǎng)絡(luò)性能的同時,使網(wǎng)絡(luò)學(xué)習(xí)到圖像中的顯著性信息,使得圖像中重要的特征更加顯著,提高了網(wǎng)絡(luò)的表達能力,并且沒有增加過多額外的參數(shù)和訓(xùn)練時間。同時使用BN層的標(biāo)準化處理提高了網(wǎng)絡(luò)的泛化性能,在加快訓(xùn)練效率的同時,還可以提升網(wǎng)絡(luò)的性能。另外本文還對RGB視頻信息進行了額外的處理,使用了目標(biāo)檢測的方法將人做手語的有用部分切割出來,增強了數(shù)據(jù)的可利用性,對網(wǎng)絡(luò)的精度也有一定的提升。本文提出的方法不CBAM-I3D僅對手語識別有很好的效果,也完全可以應(yīng)用于其他行為的識別。另外,本文提出的網(wǎng)絡(luò)也存在一些不足,如網(wǎng)絡(luò)層數(shù)比較深、3D卷積核參數(shù)比較多,從而導(dǎo)致了網(wǎng)絡(luò)的訓(xùn)練和優(yōu)化比較困難,因此對網(wǎng)絡(luò)結(jié)構(gòu)進行優(yōu)化將是未來的研究方向。
表1 本文方法與其他方法在CSL數(shù)據(jù)集上的實驗結(jié)果對比