胡 瑛,羅 銀,張瀚文,楊萌浩
(湖南工程學院 計算機與通信學院,湘潭 411104)
手語是聾啞人之間、聾啞人與正常人之間表達交流的橋梁,手語識別是通過計算機技術將手語轉換為文字或語音,方便聾啞人與正常人的交流.傳統(tǒng)的手語識別方法通過人工提取的特征來建立時序模型,采用隱馬爾科夫[1]、條件隨機場[2]、動態(tài)時間規(guī)整[3]等時序模型.人工提取特征依賴設計者的經驗,且時序建模過程煩瑣,多年來一直未取得突破.近幾年,深度學習在圖像分類、目標檢測等領域取得了非常好的效果,研究人員借助卷積神經網絡(Convolution Neural Network,CNN)來提取手形特征取得了不錯的性能[4-5].手語詞由視頻序列組成,使用2D-CNN網絡提取特征會丟失時間信息,3DCNN網絡可以提取視頻的時空特征,在行為識別中取得了重大突破,這為手語識別提供了新的啟示[6].
孤立詞只包含一個詞語,是手語識別的一個研究方向,本文提出了一種基于注意力機制的3DCNN孤立詞手語識別方法,解決了目前手語識別中的3個問題:提取手部區(qū)域和關鍵幀作為3DCNN的輸入,專注于手部的動作并忽略背景區(qū)域;采用3D-CNN提取手語視頻中的時空特征,可以捕獲手語的運動信息;引入注意力機制,重點關注表達手語含義的視頻幀.
基于注意力機制的3D-CNN手語識別框架如圖1所示,包括預處理、3D-CNN卷積神經網絡和注意力機制三個部分.
圖1 基于注意力機制的3D-CNN手語識別框架
預處理由提取手部區(qū)域和關鍵幀兩個步驟組成,減少無用的特征,使神經網絡訓練更快速準確.預處理過程如圖2所示.
圖2 預處理流程圖
手語主要由手部動作組成,而手部在視頻幀的尺寸太小,本文在預處理中檢測出手部區(qū)域,去除與手部無關的信息.手部動作是手語視頻中幅度最大的動作,可以通過檢測視頻中的動態(tài)區(qū)域來確定手部區(qū)域.本文通過幀間差分法提取手部區(qū)域[7],首先獲取視頻圖像的灰度圖,設Gk(x,y),Gk+1(x,y)分別是相鄰兩幀灰度圖像的像素值,計算幀間差值,閾值設為T,大于閾值的視為動態(tài)區(qū)域,則將此像素點置為1,反之視為靜態(tài)區(qū)域,則將像素點置為0:
經過閾值化的差分圖會產生脈沖噪聲,使用3×3中值濾波濾除孤立的點,可得到清晰的手部輪廓圖,最后將這些圖片保存,合成手語視頻.
圖3 手部區(qū)域提取圖
按照30幀/s的錄制速度,一個手語孤立詞幀數在50~200范圍內,這些視頻幀中大部分是過度幀,能表達語義特征的關鍵幀并不多.相鄰兩幀的信息變化較大時,則認為是關鍵幀.本文使用幀間差分法提取手語視頻中運動明顯的幀作為手語視頻中的關鍵幀.將上文計算所得的幀間差分值按大小排序,選取前30幀作為關鍵幀,將關鍵幀按原視頻中的位置恢復順序,使關鍵幀恢復時間邏輯.
本文參照文獻[8]設計了一種3D-CNN網絡架構,將預處理后得到的30幀關鍵幀輸入到3DCNN中提取時空兩個維度的信息.針對手語識別任務,3D-CNN網絡架構在C3D網絡結構上做了一些修改,網絡參數如表1所示,該結構由5個卷積層、4個最大池化層和2個全連接層組成[9].3DCNN模型的輸入數據的維度為160×120×30×1,每一幀圖像的長和寬分別為160和120,30代表視頻序列的幀數,1代表圖片是單通道的二值化圖像.卷積運算可以從輸入數據中自動學習特征,每一個卷積核都可以提取特定的特征.3D-CNN網絡可以提取手語的手形、手的位置空間特征,以及幀與幀之間特征關系的時間維度特征.本文所設計網絡結構中包含5個卷積層,每一層卷積核的數量分別為:32、64、128、256、512,卷積核大小均為3×3×3,卷積核參數通過反向傳播算法確定.3D卷積操作就是將多個連續(xù)幀同時疊加在一起,在空間上形成一個三維的立方體,再與一個三維的卷積核進行卷積操作,3D卷積定義如公式2所示:
表1 3D-CNN網絡參數
其中,為第i層第j個特征圖上的輸出值,bij為偏置項,m為i-1層特征圖連接到當前特征圖的集合的坐標,為權重系數,Pi、Qi和Ri分別是卷積核的長度,寬度和時間維度的尺寸.
3D-CNN網絡架構的參數量大,需要足夠的樣本數據訓練,本文采用遷移學習的方法解決訓練樣本數據少的問題.UCF-50行為識別數據庫收集了50個動作類別,首先用UCF-50數據集對3D-CNN網絡模型進行預訓練,學習到圖像的底層特征,將預訓練得到的權重作為手語識別網絡模型的初始化參數,遷移到手語數據集上,對整個網絡進行訓練微調.
圖4 遷移學習模型
人類觀察外部事物時,一般不會觀察事物每個角落,注意力會集中在對觀察目標感興趣的地方.注意力機制[10]學習人類的視覺系統(tǒng),能學習每個時刻的權重分布,篩選出更為重要的信息.每個孤立詞通過預處理獲得了30幀關鍵幀,但每一幀對手語語義的貢獻是不同的,不同的幀應給予不同的權重.本文在3D-CNN網絡的Conv5網絡層后添加了注意力機制,采用自注意力機制[11]來實現對不同視頻幀給予不同的權重,注意力模型如圖5所示.
圖5 注意力模型
F=(f1,f2,…,f6)是Conv5網絡層輸出的特征,大小為6×3×6×512(長×寬×時間深度×通道數).為了方便計算,將長度和寬度采用平均池化變?yōu)橐痪S特征[12],V=(v1,v2,…,v6)為時間深度特征,大小為1×1×6×512(長×寬×時間深度×通道數).采用兩層神經網絡(激活函數選擇tanh函數)計算vi之間的相似度,得到注意力權重αi,如公式3所示.
W1、W2、b1、b2為神經網絡的學習參數.為計算各時間維度上的加權特征,首先采用Softmax函數歸一化注意力權重αi,然后與fi做點乘運算,得到加權后的特征序列si:
服務器的硬件配置:CPU為Intel Xeon E5-2680,128 GB內存,4個NVIDIA TITAN XP GPU.運行的軟件環(huán)境為Ubuntu16.04操作系統(tǒng),搭建了tensorflow2.0深度學習框架.
本文采用公開手語數據集DEVISIGN-D[13],數據集由500個詞匯組成,每一個手語詞匯錄制12個手語視頻,由8人錄制,共6000個視頻,幀率為30 fps.本文選用DEVISIGN-D中的50個常用詞匯作為實驗樣本,按4∶1隨機劃分為訓練集和測試集.
每次迭代隨機選取32個視頻樣本,損失函數選用交叉熵,使用Adam優(yōu)化器,動量取0.9.初始學習率設置為0.001,學習率衰減引入余弦退火算法[14],可以跳出局部最優(yōu)解.卷積層采用ReLU激活函數,網絡參數使用批量歸一化處理.loss值變化曲線如圖6所示,經測試集的loss值隨著迭代次數的增加而減少,表明模型沒有發(fā)生過擬合現象.
圖6 loss值曲線圖
引入注意力機制可以給不同的幀分配不同的權重,讓更重要的幀對結果的影響力更強.圖7為手語詞“領袖”的部分幀,該手語詞由兩套獨立的動作組成,前一部分動作為“領導”的動作,后一部分為最高級別的意思,最高級別的“領導”即為“領袖”.將此視頻幀輸入到網絡,通過自注意力模型,輸出結果為:
圖7 手語詞“領袖”部分幀
此例可以看出,通過注意力機制能學習每個時刻的權重分布,篩選出更為重要的信息.
在上文所提的基于注意力機制的3D-CNN手語識別模型中,去除預處理和注意力機制部分后的模型稱為基礎模型,為驗證預處理和注意力機制是否能提高模型的性能,在相同的參數設置和數據集下進行了對比實驗,實驗結果如表2所示,添加了預處理和注意力機制后,手語識別的準確率都有一定程度的提升.
表2 基礎模型與增強模型準確率比較
為了驗證本文所提模型的可行性,與GMMHMM[15]、3D-CNN[16]、CNN-LSTM[17]3種手語識別方法進行了對比實驗.在相同數據集下,根據文獻[15]-[17]所提算法思路,通過編程實現了上述3種算法和本文所提算法,實驗結果如表3所示,說明采用深度學習方法比傳統(tǒng)方法更有優(yōu)勢,實驗結果驗證了本文所提模型的有效性.
表3 本文方法與其他方法的準確率比較
本文提出了一種新穎的3D卷積神經網絡孤立詞手語識別模型,通過預處理提取了手部區(qū)域和關鍵幀,去除了與手語信息無關的冗余信息,在網絡中引入了注意力機制,重點關注語音信息豐富的視頻幀,提高了網絡模型的特征表達能力.使用UCF-50數據集對3D-CNN網絡參數進行初始化,解決了手語視頻數量少的問題.實驗結果驗證了本文所提出的方法對孤立詞手語識別有較高的準確率,但是該方法還存在一些不足,也是今后還需努力的方向:(1)引入多模態(tài)機制,結合RGB視頻流、深度信息和骨骼信息,考慮多模態(tài)特征的融合;(2)利用Faster-RCNN等深度學習目標檢測方法提取手勢區(qū)域,進一步提高3D-CNN的識別準確率.