贠衛國,史其琦,王 民
(西安建筑科技大學 信息與控制工程學院, 陜西 西安 710055)
由于手語特征具有多樣性,因此在以計算機作為輔助的手語識別其研究對象通常都是手勢圖像識別。手勢識別的關鍵是手勢提取,即從手勢圖像中挖掘出能夠部分或完全表達手勢的信息的如形狀上下文等基于形狀的[1];局部二值模式(Local Binary Patterns,LBP)等基于紋理的[2];傅里葉描述子等基于頻率特征的[3]等有意義的特征。由于手勢特征的類別多種多樣,為了提高手勢識別的準確率將從2個方面入手[4]:(1) 手勢特征的提取。手勢特征的采集容易受環境影響從而造成手勢的幾何特征和紋理特征有較大浮動,因此必須選用一些表達能力較強的特征來描述手勢特征[5]。(2) 識別分類器的選擇。例如,尚小晶等[6]提出一種基于改進概率神經網絡(Probabilistic Neural Network,PNN)的手勢動作識別方法。吳健健等[7]提出一種基于多特征融合與支持向量機(Support Vector Machine,SVM)的手勢識別方法。
基于以上分析,本文提出了一種融合紋理特征、幾何特征和卷積神經網絡(Convolutional Neural Network,CNN)等特征進行手勢識別的方法,并且將深度卷積神經網絡(Deep Convolutional Neural Network,DCNN)作為分類器引入到手語識別中,從而來提高手語的識別率,并將此方法應用于建立的手語數據庫-“hand”數據庫中進行。
手勢圖像的特征眾多,因此需要對手勢圖像進行預處理。手勢圖像預處理的步驟如圖1所示,首先將手勢RGB圖像轉換為手勢灰度圖像從而消除顏色特征的影響;其次將灰度圖像轉換成二值圖像并選取二值圖像的前景部分作為手勢提取區域[8]。
LBP是描述手勢圖像紋理特征最常見的一種形式。LBP算子能夠從3×3大小的窗口中,比較中心點像素與相鄰點像素的灰度值[9]。LBP局部區域紋理計算方法如公式(1)所示:
(1)


圖1 手勢圖像預處理的步驟Fig.1 Gesture image preprocessing steps
手勢識別的算法流程圖如圖2 所示。

圖2 手勢識別的算法流程圖Fig.2 Gesture recognition algorithm flow chart
CNN具有2個最大的特點:(1)局部連接性,圖像中距離越近的像素之間的影響也就越大;(2)權值共享性,圖像中區域間的權值是可以共享的[10]。概況的講,卷積層的計算方法就是根據公式(2):
conv=σ(imgMat*W+b),
(2)

圖3 多個卷積核運算提取圖像特征Fig.3 Multiple convolution kernel operations to extract image features
式中:“σ”表示激活函數;“imgMat”表示灰度圖像矩陣;“*”表示卷積操作;“W”表示卷積核;“b”表示偏置值。
圖3中我們分別使用了2個不同卷積核進行卷積運算從而提取圖像特征,得到了不同的圖像特征。實際中,我們會采用多個卷積核來提取圖像特征,進而來進行下一步的運算。
Hu氏不變量是具有旋轉、平移、尺度不變性的量[11]。函數f(x,y)的二維Hu氏p、q階統計量定義如式(3)所示,式中p,q為非負整數。
(3)
考慮質心(xc,yc)時,則式(3)變成式(4):
(4)

平移不變性通過以上統計量結果得到,尺度不變性由公式(5)計算確保。
(5)
Hu氏不變量見式(6)~(12),這些特征量可以用來描述手勢圖像特征。
φ1=η20+η02,
(6)
(7)
φ3=(η30-3η12)2+(η03-3η21)2,
(8)
φ4=(η30+η12)2+(η03+η21)2,
(9)
φ5=(η30-η12)(η30+η12)[(η30+η12)2-3(η21+η03)2]+
(3η21-η03)(η21+η03)[3(η21+η30)2-(η21+η03)2],
(10)
φ6=(η20-η02)[(η30+η12)2-(η21+η03)2]+4η11(η30+η21)(η21+η03),
(11)
φ7=(3η21-η03)(η30+η12)[(η30+η12)2-3(η03+η12)2]+(3η21-η03)
(η03+η12)[3(η30+η12)2-(η03+η21)2].
(12)
在我們的實驗中,為了滿足深度卷積神經網絡的輸入,特征選取7個Hu不變量的絕對值的對數值。
灰度共生矩陣(Gray Level Cooccurrence Matrix,GLCM)用來反映手勢灰度圖像的相鄰像素之間的梯度信息量[4]。式(13)是灰度共生矩陣的計算公式:
(13)
式中:PGLCM(x,y)為歸一化后的GLCM值,GGLCM(x,y)為原GLCM值,L為GLCM級數。
對比度、逆差矩、能量、熵和相關性這5個量[12]的計算方法依次如式(14)~(18)所示。
(14)
(15)
(16)
(17)
(18)

傅里葉級數特征是一種常用的表示手勢輪廓的方法,傅里葉級數特征是將手勢輪廓變換到頻域上進分析,其高頻部分可以清晰表達圖像的形狀紋理特征[13]。將預處理后的手勢邊緣圖像排序為序列(x0,y0),(x1,y1),…,(xK-1,yK-1)。其中(x0,y0)是首坐標,K是范圍內的點數。每個坐標都是1個復數s(k)=x(k)+j(k) (k=1,2,…,K),對其進行傅里葉變換可得到傅里葉系數a(u)(u=0,1,2,…,K-1):
(19)
手勢輪廓的傅里葉級數特征是a(u)傅里葉反變換。
(20)
深度卷積神經網絡具有更復雜的網絡結構以及更強大的特征學習和表達能力[14]。DCNN可以看作是一種機器學習和深度學習交叉的產物。1990年LeCun等[15]提出了使用梯度反向傳播算法訓練的卷積神經網絡模型。本文將DCNN作為分類器應用于手勢識別從而解決手勢識別問題。
深度卷積神經網絡(DCNN)是由若干個單層卷積神經網絡相互嵌套組成的,主要處理對象是二維輸入數據,是一種監督型深度學習網絡結構[16]。如圖4所示一種最常見的深度卷積神經網絡模型,其由2個卷積層(C1、C2)、2個下采樣層(S1、S2)和1個全連接層堆疊而成。單層卷積神經網絡的權值共享是通過約束神經元來實現的。各網絡層的輸入和輸出都是由一組維度確定的特征向量來表示,有利于卷積運算降低時耗。

圖4 深度卷積神經網絡架構Fig.4 Deep convolutional neural network architecture
過擬合現象是訓練中極易產生的現象,訓練時若測試樣本過少,樣本參數可能會過度擬合訓練數據集,這樣容易影響訓練數據集的泛化性能,造成過擬合現象從而對測試樣本產生錯誤的分類結果。為了削弱這種情況,本文采用“dropout”方法的深度卷積神經網絡通過在訓練過程中隨機地忽略隱含層中一定比例的節點響應,有效地提高了網絡的魯棒性。
本文中的手勢數據均由本課題組人員自行錄制,針對不同人以及不同背景下的手勢分別進行了采集,并將手勢圖片保存成jgp格式,創建了“hand”數據庫。為了驗證方法的有效性,我們在“hand”數據庫中進行試驗。試驗使用Lenovo筆記本電腦window 10系統,MATLAB(R2016a版本)環境,處理器為英特爾Core i5-7300HQ @ 2.5GHz。
本文所建立的“hand”手勢數據庫由5 220個樣本構成,讓15個不同的人把使用頻率較高的86個手語詞用攝像機采集數據。將所采集的手勢圖像統一調整成512×512(像素)大小,以方便進行操作和處理,并按照手語詞對應的意思為圖像文件命名,儲存在本地硬盤中以備程序調用和對比[17]。我們隨機選擇使用“hand”數據庫每個45張手勢圖像作為訓練樣本,5張作為測試樣本。
將多特征進行融合并采用不同的分類器進行試驗對比,其中類別數分別為100維LBP特征,7個Hu氏不變量,7層深度卷積神經網絡,10個灰度共生矩陣特征量,400維傅里葉特征,總特征維數為520維。
試驗結果見表1。通過對比分析得出文獻[6]中的方法的識別率是最低的,說明PNN作為分類器的識別率最低,其識別效果最差,識別時間過長;文獻[7]中的方法識別率中等,SVM的識別效果高于PNN;本文方法采用的分類器DCNN識別率最高可以達到97.73%,識別效果最好且大幅縮短了識別時間。同時可以看出隨著特征融合的種類數的增多,其方法識別率隨之升高。

表1 “hand”數據庫試驗結果Tab.1 “hand” database test result
本文提出了一種基于深度卷積神經網絡的多特征融合的手勢識別算法,將深度卷積神經網絡作為分類器融入到手勢識別中。伴隨著融合特征復雜度提高,“dropout”方法能夠在DCNN中避免過擬合現象,進而有效地提高識別率,對比概率神經網絡和支持向量機作為分類器大幅縮短了識別時間,做到了高效分類。同時伴隨著深度卷積神經網絡層數的增加,“dropout”方法能夠通過隨機忽略各網絡層中一定比例的節點響應,提高算法的魯棒性。