閆俊伢, 吳 迪, 滕 華
(1. 山西大學商務學院 信息學院, 山西 太原 030031; 2. 哈爾濱工程大學 計算機科學與技術學院, 黑龍江 哈爾濱 150001;3. 西華師范大學 計算機學院, 四川 南充 637009)
隨著人工智能技術的飛速發展,用于人機交互的手段也更加多樣化和智能化,手勢和語音作為人機交互的2種重要模式,得到了廣泛關注。簡單的手勢作為人機交互方式使用已經較為廣泛,但是,隨著交互功能性和手勢背景的復雜度增加,急需多種不同的手勢來實現交互功能,復雜手勢應運而生。復雜手勢的識別成為手勢交互方法在人工智能領域發展的最大挑戰,復雜手勢的圖像特征提取及特征解析和分類成為手勢識別研究的關鍵問題[1]。
當前,對于手勢識別的研究成果較多,特別是智能算法和深度學習的發展,為手勢特征的訓練及分類提供了有力幫助。文獻[2]中通過深度學習算法來訓練復雜背景下的手勢圖像,從而提高手勢圖像的識別效率。文獻[3]中采用深度視角傳感獲取手勢圖像數據,以解決復雜手勢圖像樣本多視角提取的問題。文獻[4]中采用紅綠藍三通道圖像-深度圖像(RGB-D)法完成復雜背景下的手勢圖像分割,以提高復雜背景下的手勢輪廓及關鍵特征,這些方法從圖像特征提取、圖像數據訓練解決復雜背景下的復雜手勢識別問題,在識別準確率上均有所提升。作為一種特殊類型的神經網絡,深度卷積神經網絡被認為是學習圖像內容的最佳技術之一,并且在圖像識別、分割、檢測和檢索相關任務方面顯示了最佳的效果。目前,大多數圖像處理競賽的優勝者都采用基于深度卷積神經網絡模型。
本文中采用深度卷積神經網絡,并結合支持向量機(SVM)多類別分類算法(簡稱本文算法)來實現復雜手勢的識別,以進一步提高手勢識別的準確度,解決大容量手勢樣本及多手勢種類的識別準確率不高的問題。
手勢圖像的來源主要是通過攝像頭從不同角度獲取的圖像數據。一般比較簡單的手勢,只需要通過正面攝像頭便可以獲得圖像數據,而復雜手勢必須通過不同攝像方位獲得圖像數據綜合判別其特點。從手部骨骼的輪廓及結構作為主要特征來識別手勢。人手輪廓及關節如圖1所示[5]。

J1、 J2、 J3、 J4和J5分別為5個指尖關節輪廓,J6為腕關節輪廓。
靜態手勢特征的提取主要是根據5個手指指尖及手腕關節構成的輪廓,以及5個手指的關節節點,通過指尖數量、手指長度、手勢輪廓周長、手掌面積等來獲取手勢圖像特征。考慮到手勢圖像的背景及周邊環境和拍攝光線的影響,可以從不同角度來獲取手勢圖像,然后構建人手輪廓及關節圖[6-7],最后根據多張圖片來提取手勢特征。而在動態手勢特征提取時,除了要根據手部輪廓和手關節分布結構來獲取手勢特征外,還需要考慮到手的運動特點,充分跟蹤手部運動時與攝像機的距離和角度,結合旋轉平移等方法來完成動態手勢識別。
在手勢特征提取時,還需要注意的一個問題就是手勢圖像去噪及二值化處理。去噪的過程一般采用濾波完成,通過高斯和中值濾波可以有效解決手掌輪廓邊緣提取的毛刺問題[7],并且可以處理手指與手指之間輪廓的不光滑問題,從而提高手勢圖像的純度,減少因噪聲累積迭代而引起的手勢識別錯誤的問題。手勢特征的二值化處理主要根據手部和背景的顏色特點,將手勢圖像提取出來,合理設定手勢圖像及其背景分割閾值,提高手勢特征提取的準確度。
卷積神經網絡(CNN)在基本神經網絡的基礎上進行卷積和池化操作,將圖像樣本進行處理后獲得特征圖,通過特征圖訓練,減少了原始圖像樣本訓練規模,提高了訓練效率,但在輸出多類別情況下,需要經過分類器處理。深度卷積神經網絡處理流程如圖2所示。

圖2 深度卷積神經網絡處理流程
設樣本集X=(x1,x2,…,xn),在第l層中對Mj個樣本特征圖進行卷積運算,
(1)
式中:l∈[1,n],為卷積神經網絡的層序號;j∈[1,Mj],為樣本特征圖的序號;klj、blj分別為l層中給特征圖j賦予的權重及偏置; *為卷積運算;f(·)的表達式[8]為
(2)
卷積操作對象為n個樣本的m個特征。卷積核尺寸為5×3和3×3經過卷積運算得到圖3所示的矩陣。

圖3 卷積運算示意圖
設卷積核尺寸為h×w,池化方法有2種[9],分別是
(3)
(4)
其中式(3)為均值池化,式(4)為最大值池化,本文中選擇前者進行池化操作。
令M=n/(h×w),樣本X=(x1,x2,…,xn)卷積池化后重新得到的樣本為
X=(x1,x2,…,xM)
。
(5)
然后,根據卷積池化后的樣本按照下式進行轉換運算:
(6)
限制條件為
∑aij=1, 0≤aij≤1
。
(7)
根據式(7)得到卷積神經網絡的全連接層,然后選擇分類器預測樣本類別。
設第k個節點的訓練輸出和實際標簽分別為yk和dk,則誤差項δk[10]為
δk=(dk-yk)yk(1-yk)
。
(8)
假設第l、l+1層分別有L、M個節點,則第l層節點j的誤差為
(9)
式中:hj為輸出;wjk為神經元j到l+1層神經元k的權重。
權重更新為
(10)
式中η為學習率。
偏置Δbk(n)的更新方式[11]為
(11)
式中α為偏置更新步長,一般α=1。
調整后的權重為
wjk(n+1)=wjk(n)+Δwjk(n)
,
(12)
調整后的閾值為
bk(n+1)=bk(n)+Δbk(n)
。
(13)
所有節點的誤差E為
(14)
當E滿足設定的閾值時,迭代停止,并得到穩定的深度卷積神經網絡模型。
根據式(6)計算得到全連接層的各個節點輸出值,采用SVM進行分類。設輸入向量為X=(x1,x2,…,xn),經過SVM映射[12],有
f(x)=sgn((W·X)+b)
,
(15)
式中: sgn()為單位階躍函數;W、b分別為超平面的法向量和截距。
定義函數K(xi,xj)為SVM的映射函數,本文中選擇單位階躍函數作為其核函數。那么式(15)可以轉變為求解最小值問題[13],
(16)

根據對偶關系,可得

,
(17)
式中:yi、yj分別對應樣本xi和xj;αi、αj分別為樣本xi和xj對應的拉格朗日乘子。
計算式(17)得到
(18)

式(17)最終可以表示[14]為
(19)
手勢圖像經過去噪處理后,獲得手勢圖像特征樣本,然后進行卷積神經網絡訓練,其主要流程如圖4所示。

圖4 手勢識別流程圖
以下通過實例仿真,驗證卷積神經網絡的SVM手勢識別分類效果。仿真數據來源分別為劍橋大學MSRC-12數據集,手勢圖像個數為6 244;ASL數據集樣本個數為6 650;Marcel數據集圖像樣本數為4 872, 樣本的訓練和測試比例為3∶1。差異化設置卷積核尺寸和池化方法,充分驗證卷積神經網絡和SVM對手勢識別性能的影響,最后比較本文算法和常用的手勢識別算法[15]在MSRC-12、 ASL和Marcel這3個數據集的性能差異。設置η=0.01,池化方法初始化為最大值池化,卷積核初始為2×2。
3.1.1 識別準確率
為了驗證不同卷積核尺寸的手勢識別性能,差異化設置卷積核尺寸,運用MATLAB軟件對3個不同數據集進行仿真,結果如表1所示。

表1 不同卷積核尺寸的手勢識別準確率
由表可以看出,卷積核尺寸對3種不同的手勢樣本數據集的識別準確率影響較大,隨著卷積核尺寸的增大,手勢識別的平均準確率逐漸降低,標準差增大,這可能是卷積核尺寸過大,對手勢圖像提取的粒度過大,漏掉了部分手勢重要特征的緣故。當卷積核尺寸為2×2和3×3時,兩者對手勢識別的準確率差異較小,均表現出了良好的手勢識別準確率,標準差也較小。相同卷積核尺寸的卷積神經網絡對3種樣本的識別準確率表現出了不同的性能,這主要是因為手勢種類存在差異,手勢種類越多,相近的手勢特征也越多,導致分類的難度加大,容易造成手勢分類出現錯誤,因此手勢種類的增加為手勢識別算法提出了更高要求。
3.1.2 不同卷積核的收斂時間
以下分別對卷積核尺寸為2×2、 3×3、 4×4和5×5的收斂性能進行仿真,結果如表2所示。由表可以看出,卷積核尺寸越大,算法收斂越快,卷積核尺寸為5×5的收斂速度最快,卷積核尺寸為2×2的收斂速度最慢,這是因為通過最大池化,卷積核尺寸為5×5池化卷積后,參與訓練的樣本變少,因此訓練時間短。在實際操作中,可以綜合考量手勢識別準確率和手勢識別時間,根據表1、 2的性能對比,本文中選擇的卷積核尺寸為3×3。

表2 不同卷積核的手勢識別收斂性能
在采用差異化卷積核尺寸對3種不同手勢數據集進行識別性能分析時,默認選擇池化方法為最大值池化,現采用的卷積核尺寸分別用2種池化方法進行性能仿真,結果見表3。由表可以看出,2種池化方法對3種不同數據集的手勢識別準確率敏感度不強,兩者準確率差異較小,但是收斂時間差異較大,這是因為求解均值比求解最大值需要耗費更多的運算時間,因此最大值池化法更適合于本文算法。

表3 不同池化方法的手勢識別準確率和收斂時間
為了充分驗證本文算法的手勢識別性能,采用常用手勢識別算法[15]和本文算法分別對MSRC-12樣本進行手勢識別,結果見圖5。由圖可以看出,4種算法對MSRC-12手勢樣本的識別性能差異較大,決策樹算法的手勢識別準確率約為0.6,本文算法的手勢識別準確率超過了0.9。而在手勢識別時間方面,決策樹算法在30 s左右開始收斂,神經網絡算法用時最久,超過50 s才開始收斂。綜上而言,本文算法的手勢識別準確率性能最好,但識別時間優勢不明顯。

圖5 不同算法的手勢識別性能
本文中將卷積神經網絡和SVM分類相結合的方法用于手勢識別,通過合理設置卷積核尺寸和池化方法,可以獲得較好的手勢識別準確率。下一步研究將在手勢識別時間方面進行優化,進一步對卷積神經網絡的權重和偏置求解進行優化,以提高卷積神經網絡的手勢識別效率,提高該算法在手勢識別方面的適用度。