王粉花 張 強 黃 超 張 苒
①(北京科技大學自動化學院 北京100083)
②(北京科技大學人工智能研究院 北京100083)
③(北京市工業波譜成像工程中心 北京100083)
隨著深度學習以及虛擬現實技術的發展,人機交互技術正逐漸從以機器和計算機為中心轉移到以人為中心[1]。手勢是人類最常用的人機交互方式(Human-Computer Interaction,HCI)之一,也是正常人與聾啞人以及聾啞人之間溝通交流的重要方式[2]。手勢識別是人機交互領域的一個前沿課題和研究熱點。手勢本身具有靈活性、不固定性和多異性,所以手勢識別是一個富有挑戰性的多學科交叉的研究方向。手勢識別根據數據集是圖片還是視頻可分為靜態手勢識別和動態手勢識別,靜態手勢識別只關注某個時間點的外形特征,動態手勢識別則需關注一段時間的動作,增加了時間信息和動作特征。相比較于靜態手勢識別,動態手勢識別更貼近人的表達習慣、更加具有現實意義。
早期的手語識別主要依靠可穿戴設備和人工經驗提取特征,但是可穿戴設備需要人們佩戴特定的設備,影響了人們的活動自由,具有一定的局限性[3]。Parcheta等人[4]使用基于隱馬爾可夫模型(Hsidden Markov Model,HMM)的手勢識別,在包含91個手語單詞數據集上取得了比較高的準確率。運用HMM進行手語識別有兩種情況:一是為每個單詞構造一個HMM模型[5],二是為多個單詞建立一個HMM模型[6]。將手語視頻中的手形和運動軌跡作為信息提取特征來計算手語識別。但是人工提取特征非常耗時耗力,并且需要領域內的專家才能設計出好的分類特征。隨著卷積神經網絡的不斷發展,利用深度學習實現基于視頻的動態手勢識別受到了研究者的關注,視頻處理要求考慮時域連接。在這方面,循環神經網絡(Recurrent Neural Network,RNN)顯示出其巨大的優勢。然而RNN在特征提取方面并不令人滿意,為此一些研究者選擇先用卷積神經網絡(Convolution Neural Network,CNN)來提取圖像特征,生成特征向量并輸入RNN進行計算[7]。在CNN部分,可以使用預先訓練好的CNN網絡進行圖像特征提取[8],這大大提高了網絡的訓練效率。考慮到視頻的時空信息,3維卷積神經網絡(3D-CNN)應運而生。如Tran等人[9]提出的C3D網絡,使用了3D-CNN代替了傳統卷積神經網絡中的2D-CNN,將時間信息也考慮在內。Chen等人[10]提出了MFNet。還有參考ResNet等2D-CNN網絡產生的新3D-CNN結構,這些網絡在行為識別上取得了很好的成績,同樣也可以將它們應用于手語識別[11]。在動作識別和手語識別之間有許多相似之處,3D-CNN為手語識別提供了一種很好的方法[12]。然而僅輸入原始圖像不足以獲得足夠多的特征。許多研究者開始利用卷積神經網絡和多流輸入[13]來獲得更多的信息,如光流[14]信息、深度信息、后信息[15]等,這有利于提高網絡識別的精度。借鑒雙流網絡和3D-CNN的優點,Deep mind團隊提出了I3D網絡[16],擴展2D卷積Inception v1為3D結構,同時將光流單獨作為一個分支和原始圖像形成雙流網絡,RGB圖像和光流分開訓練。I3D是目前行為識別最好的網絡之一。
本文提出了一種在I3D網絡的基礎上融合注意力機制CBAM[17]的動態手勢的識別方法。在CSL[18]數據集上進行實驗,首先從RGB視頻中提取光流特征,然后將RGB視頻、光流信息分解成幀圖片集合。將數據按照3:1:1隨機劃分為訓練集、驗證集和測試集,最后將這兩種數據送入同一個網絡結構中進行訓練。本文所提出方法的識別準確率達到了90.76%,實現了對動態手勢很好的識別。
I3D網絡是由Deep mind團隊提出的最新3D卷積網絡之一,在總結以往主流視頻動作識別模型優缺點的基礎上,把雙流的思想加入3D卷積當中,其中一個3D卷積網絡接收RGB信息,另一個3D卷積網絡接收優化后的平滑光流信息。3D卷積結構由2D卷積Inception v1擴展而來,如圖1(a)所示,具體做法是把2D模型中的卷積核參數在時間維度上不斷復制,形成3D卷積核的參數,之后除以N,保證網絡輸出和2D卷積上一樣,而其他的非線性層結構都與原來的2D卷積模型一樣,卷積核和池化均增加了時間維度。為了使時間維度不會因過快或過慢的縮減導致捕捉不到動態場景的發生,在前兩個池化層上將時間維度的步長設為1,空間維度是2×2,最后池化層的維度是2×7×7。網絡的具體連接方式如圖1(b)所示。雖然3D卷積可以直接學習視頻的時間特征,但是它只執行純粹的前向傳播,而光流算法在一定程度上提供了迭代的思想在里面,將光流加進來后可以提高網絡的識別精度。
近年來很多論文驗證了在神經網絡中引入注意力機制能夠提高網絡模型的特征表達能力。注意力不僅能告訴網絡模型該注意什么,而且也能增強圖像特定區域的表征能力。由Woo等人[17]提出的CBAM是一種結合了空間(spatial)和通道(channel)的注意力機制模塊,如圖2所示。相較于SENet[19]只關注通道的注意力,CBAM顯得更加全面。
通道注意力也就是特征注意力,而空間注意力則是反映輸入結果在空間維度上的重要程度。兩個模塊結合,就對輸入進行了立體化的注意力處理,相當于一個篩子,在輸入神經網絡之前,先將輸入進行一遍篩選,選出最重要的特征。

圖1 I3D網絡

圖2 注意力機制CBAM模型


其中,MC(F)為 通道注意力模塊,σ為Sigmod激活函數,M LP()為 多層感知器,A vgPool()和MaxPool()分別為平均值池化和最大值池化。這個模塊相當于一個濾波器,重要的通道權重較大,不重要的通道權重較小,就實現了在特征維度上的注意力機制。
空間注意力模型關注的是有用的信息“在哪里”。首先應用平均值池化和最大值池化對輸入進行處理,不過這次是在通道維度上進行壓縮采樣,生成兩個2維的空間矩陣,然后把它們疊在一起,輸入一個卷積層,進行權重的學習優化,這就又生成了一個空間注意力濾波器,如式(2)所示

其中,MS(F′)為空間注意力模塊,f為卷積層運算。輸入特征圖首先與通道注意力模塊點乘,再與空間注意力模塊點乘,得到最后經過CBAM注意力處理后的特征圖,如式(3)和式(4)所示
其中,F為輸入特征圖,F′′為輸出特征圖。
深層神經網絡的訓練很復雜,在訓練過程中每一個隱藏層的參數改變都會影響后一層的輸入,導致每一批次的數據分布也隨之發生改變,使得神經網絡需要在每次迭代中學習不同的數據,大大增加了網絡學習的難度以及網絡過擬合的風險。為了解決以上問題,由Ioffe等人[20]在2015年提出批量歸一化處理方法。通常網絡的訓練采用mini-batch訓練法,將整個數據集劃分為多個批次,每個批次包含很多組數據,訓練的時候以批次為單位進行數據的輸入,并進行1次優化。這樣做的好處是,每次迭代整個數據集,可以進行多次優化,而不是1次迭代只優化1次,加快了網絡訓練的速度;而且每次以批次為單位進行運算,引入兩個額外參數來實現批量歸一化操作。其計算公式為


其中,式(5)計算輸入數據的均值,式(6)計算輸入數據的方差,式(7)進行數據的標準化,式(8)進行數據的偏移:數據經過BN層的處理,會更加靠近原點分布,使得激活函數能夠獲得較大梯度;同時數據也由較為稀疏的分布變得更加緊密,利于神經網絡去進行分類。因為密集、整齊的數據,往往更容易被擬合,且不容易出現過擬合的情況(神經網絡學習到了數據分布中混亂的不必要的部分)。各種不同來源不同分布的數據,經過BN層的標準化處理,分布會更趨于統一,也有利于提高網絡的泛化性能,因此BN層在提高網絡訓練效率的同時,還可以提升網絡的性能,如今被越來越多的研究者所采用。
本文提出的CBAM-I3D網絡的最小結構如圖3(a)所示,是在I3D的3D Inception v1模塊的Concatenation層后加入了CBAM。通過這種融合網絡既可以實現原始輸入信息的無損傳輸,又可以自動學習得到圖像的空間位置和通道的重要程度,然后根據重要程度去增強有用特征并抑制無用特征,從而實現空間和通道的自適應校準,添加CBAM注意力機制對網絡結構的影響不大,卻能使網絡學習到圖像中更加重要的通道特征和空間位置。其中每一個卷積運算單元都是由3D卷積、BN層和ReLU激活函數層組成的。BN層和ReLU函數緩解了梯度消失的問題,也減輕了深層神經網絡的退化,使這個小單元可以多次重復堆疊使用,構建一個足夠深的神經網絡。由于小的卷積核可以獲得更好的效果,故這個結構單元中的所有卷積核尺寸都沒有超過3。除了加入注意力機制CBAM外,本文還對I3D的網絡結構做了一些修改:(1)去掉前兩個最大池化層,防止由池化操作導致圖像的低級特征丟失。(2)去掉最后的平均池化操作,只保留1×1×1卷積,這樣是為了在減少大量參數的情況下保留圖像的全局信息,增加了網絡的魯棒性。網絡具體的連接方式如圖3(b)所示,網絡權重采用標準正態分布(均值為0,方差為1)隨機初始化。
本文提出的雙流CBAM-I3D網絡的兩個輸入分別選擇原始的RGB圖像和光流圖像,整體的網絡結構如圖4所示。
使用雙流網絡的優勢在于可以綜合考慮原始圖像中豐富的空間特征信息和光流圖像中的運動特征信息,提取更多的特征用來分類,增加識別精度。
本次實驗的硬件配置為Intel Xeon E5-2660 v4 CPU,64 GB內存,GPU顯卡為2組NVIDIA TITAN Xp,24 GB顯存。軟件環境為64位Ubuntu 16.04操作系統,CUDA 8.0.61,cuDNN 5.1.10,深度學習框架為PyTorch ,版本為1.0.1,Python版本為3.5.3。

圖3 CBAM-I3D網絡
實驗使用的手語數據集CSL包括一個手語單詞數據集、一個手語連續詞句數據集。這兩個數據集都包括RGB視頻和深度圖像視頻。本文使用的主要是手語單詞數據集的RGB視頻,共有100類手語單詞,5013個RGB視頻。為了防止過擬合,這里將它按照3:1:1分成了訓練集、驗證集和測試集兩部分。為了組建雙流網絡,本文還制作了一個光流圖的數據集,用于作為第2部分網絡的輸入,將在下面做詳細介紹。
3.3.1 RGB視頻預處理
CSL動態手勢數據集原始視頻長度約為2 s,幀寬度為1280,幀高度為720,幀速率為30幀/s。本文使用的神經網絡是以I3D為基礎的,需要輸入連續的圖像幀。所以先將每個視頻以25幀/s的速率裁剪成圖像幀,裁剪出來大約50張圖片。為了便于處理,選擇50幀為本次實驗的基準幀,在數據讀取的時候,如果圖片的數量大于50張,程序會進行采樣選取其中連續的50幀圖片;如果圖片的數量小于50張,程序會隨機選取部分圖像幀進行復制,湊夠50張圖片。通過這樣的處理,既保留了動態手勢的核心運動信息,又避免了引入不必要的數據對實驗結果產生影響。另外1280×720圖片的尺寸太大,其中人做手語的部分太小,這樣的圖片輸入網絡中,一是會存在過多的無用信息,對神經網絡擬合數據造成干擾;二是會增大計算開銷,所以本文使用深度學習中目標檢測的方法,切割出圖像中有人的部分。但是每組圖片中的人的大小是不一樣的,這里運用Tensorflow中的image.resize_image(method)函數將圖片大小統一調整為224×224。method參數選擇雙線性插值法。實驗結果表明,經過處理之后的數據,對網絡的精度大約有1.2%的提升。圖5為RGB圖像處理前后的對比。
3.3.2光流圖的提取
光流(optical flow)是視頻動作識別分析的一種重要方法,它代表著3維物體的每個像素在像平面上運動的瞬時速度,一般來說光流也是物體在相鄰兩幀中運動變化情況的縮影。從光流信息中,不僅可以得到物體的運動方向、運動速度,還可以得到這個物體和我們的距離以及角度[21]。所以運用光流就可以很好地表達物體運動過程。得到光流圖的方法有很多,本文使用的是基于Lucas-kanade方法的OpenCV中的calcOpticalFlowPyr LK函數。使用該函數成功提取每一幀的光流圖并且保存,制作出單個單詞的光流數據集。

圖4 雙流CBAM-I3D網絡

圖5 RGB圖像處理前后的對比
首先,使用連續50幀,每幀大小為224×224的RGB圖像來訓練網絡。每一批次隨機選取16個樣本進行一次迭代。初始學習率為0.001,學習率衰減為指數衰減,衰減系數為0.96,衰減步數為100。采用交叉熵損失函數,選用Adam Optimizer優化器對網絡進行優化。共進行50000次迭代,在前1000次迭代中每100次保存1次訓練權重,往后每隔1000次保存1次訓練權重;然后用同樣的方法訓練一個光流圖的模型,同樣的方式保存權重。然后再將兩個模型分別加載到雙流網絡中,以較低的學習率微調全部參數完成雙流網絡的訓練。
為了說明提出方法的有效性,本次實驗對比了C3D網絡、MFnet網絡、3D ResNet網絡和I3D網絡在CSL數據集上的識別效果。對比結果如表1所示(其中平均檢測時間是對于一段視頻而言的)。C3D網絡首先將3D-CNN應用于行為檢測,該網絡的結構很簡單,只有8個卷積層、5個池化層和2個全連接層,所以在CSL數據集上效果最差,耗時也最長。為了使3D卷積網絡的計算量不至于過于龐大,MFnet被提了出來,MFnet通過分組卷積,降低了模型的計算量,MFnet的每一個分組都類似于ResNet的殘差結構,但是一個輸入會在通道維度上被分解為多個部分,所以從表1中能夠看出雖然MFnet的Top1準確率不是很高,但是耗時卻是最少的。為了更好地進行視頻動作識別,研究者開始將深層網絡如ResNet、Inception等2D網絡擴展到3D網絡,并對網絡結構進行適當調整,從表1中也能看到,在CSL數據集中3D ResNet、I3D都取得了不錯的效果,說明更深的網絡結構在擬合復雜數據方面更有優勢。另外從表1中也可以看出除了MFnet網絡耗時時間較少外,其他網絡耗時均較長,所以行為識別以后的研究方向在于網絡達到高準確率的同時,也能實現低消耗。CBAM是一個輕量化的模塊,可以完美地與其他網絡進行融合,從表1中可以看出在添加了CBAM后,各網絡都有不同程度的提升。另外雙流網絡對準確率也帶來一定的提升。本文提出的CBAM-I3D網絡在單流和雙流的網絡中都取得了的最好效果。實驗結果驗證了所提方法的有效性。
本文提出了一種融合雙流3D卷積神經網絡和注意力機制的新型動態手語識別網絡,充分利用了RGB視頻信息和光流信息對動態手勢進行識別,在I3D網絡中引入了CBAM,在不影響原始網絡性能的同時,使網絡學習到圖像中的顯著性信息,使得圖像中重要的特征更加顯著,提高了網絡的表達能力,并且沒有增加過多額外的參數和訓練時間。同時使用BN層的標準化處理提高了網絡的泛化性能,在加快訓練效率的同時,還可以提升網絡的性能。另外本文還對RGB視頻信息進行了額外的處理,使用了目標檢測的方法將人做手語的有用部分切割出來,增強了數據的可利用性,對網絡的精度也有一定的提升。本文提出的方法不CBAM-I3D僅對手語識別有很好的效果,也完全可以應用于其他行為的識別。另外,本文提出的網絡也存在一些不足,如網絡層數比較深、3D卷積核參數比較多,從而導致了網絡的訓練和優化比較困難,因此對網絡結構進行優化將是未來的研究方向。

表1 本文方法與其他方法在CSL數據集上的實驗結果對比