閆俊伢, 吳 迪, 滕 華
(1. 山西大學商務(wù)學院 信息學院, 山西 太原 030031; 2. 哈爾濱工程大學 計算機科學與技術(shù)學院, 黑龍江 哈爾濱 150001;3. 西華師范大學 計算機學院, 四川 南充 637009)
隨著人工智能技術(shù)的飛速發(fā)展,用于人機交互的手段也更加多樣化和智能化,手勢和語音作為人機交互的2種重要模式,得到了廣泛關(guān)注。簡單的手勢作為人機交互方式使用已經(jīng)較為廣泛,但是,隨著交互功能性和手勢背景的復(fù)雜度增加,急需多種不同的手勢來實現(xiàn)交互功能,復(fù)雜手勢應(yīng)運而生。復(fù)雜手勢的識別成為手勢交互方法在人工智能領(lǐng)域發(fā)展的最大挑戰(zhàn),復(fù)雜手勢的圖像特征提取及特征解析和分類成為手勢識別研究的關(guān)鍵問題[1]。
當前,對于手勢識別的研究成果較多,特別是智能算法和深度學習的發(fā)展,為手勢特征的訓練及分類提供了有力幫助。文獻[2]中通過深度學習算法來訓練復(fù)雜背景下的手勢圖像,從而提高手勢圖像的識別效率。文獻[3]中采用深度視角傳感獲取手勢圖像數(shù)據(jù),以解決復(fù)雜手勢圖像樣本多視角提取的問題。文獻[4]中采用紅綠藍三通道圖像-深度圖像(RGB-D)法完成復(fù)雜背景下的手勢圖像分割,以提高復(fù)雜背景下的手勢輪廓及關(guān)鍵特征,這些方法從圖像特征提取、圖像數(shù)據(jù)訓練解決復(fù)雜背景下的復(fù)雜手勢識別問題,在識別準確率上均有所提升。作為一種特殊類型的神經(jīng)網(wǎng)絡(luò),深度卷積神經(jīng)網(wǎng)絡(luò)被認為是學習圖像內(nèi)容的最佳技術(shù)之一,并且在圖像識別、分割、檢測和檢索相關(guān)任務(wù)方面顯示了最佳的效果。目前,大多數(shù)圖像處理競賽的優(yōu)勝者都采用基于深度卷積神經(jīng)網(wǎng)絡(luò)模型。
本文中采用深度卷積神經(jīng)網(wǎng)絡(luò),并結(jié)合支持向量機(SVM)多類別分類算法(簡稱本文算法)來實現(xiàn)復(fù)雜手勢的識別,以進一步提高手勢識別的準確度,解決大容量手勢樣本及多手勢種類的識別準確率不高的問題。
手勢圖像的來源主要是通過攝像頭從不同角度獲取的圖像數(shù)據(jù)。一般比較簡單的手勢,只需要通過正面攝像頭便可以獲得圖像數(shù)據(jù),而復(fù)雜手勢必須通過不同攝像方位獲得圖像數(shù)據(jù)綜合判別其特點。從手部骨骼的輪廓及結(jié)構(gòu)作為主要特征來識別手勢。人手輪廓及關(guān)節(jié)如圖1所示[5]。
J1、 J2、 J3、 J4和J5分別為5個指尖關(guān)節(jié)輪廓,J6為腕關(guān)節(jié)輪廓。
靜態(tài)手勢特征的提取主要是根據(jù)5個手指指尖及手腕關(guān)節(jié)構(gòu)成的輪廓,以及5個手指的關(guān)節(jié)節(jié)點,通過指尖數(shù)量、手指長度、手勢輪廓周長、手掌面積等來獲取手勢圖像特征。考慮到手勢圖像的背景及周邊環(huán)境和拍攝光線的影響,可以從不同角度來獲取手勢圖像,然后構(gòu)建人手輪廓及關(guān)節(jié)圖[6-7],最后根據(jù)多張圖片來提取手勢特征。而在動態(tài)手勢特征提取時,除了要根據(jù)手部輪廓和手關(guān)節(jié)分布結(jié)構(gòu)來獲取手勢特征外,還需要考慮到手的運動特點,充分跟蹤手部運動時與攝像機的距離和角度,結(jié)合旋轉(zhuǎn)平移等方法來完成動態(tài)手勢識別。
在手勢特征提取時,還需要注意的一個問題就是手勢圖像去噪及二值化處理。去噪的過程一般采用濾波完成,通過高斯和中值濾波可以有效解決手掌輪廓邊緣提取的毛刺問題[7],并且可以處理手指與手指之間輪廓的不光滑問題,從而提高手勢圖像的純度,減少因噪聲累積迭代而引起的手勢識別錯誤的問題。手勢特征的二值化處理主要根據(jù)手部和背景的顏色特點,將手勢圖像提取出來,合理設(shè)定手勢圖像及其背景分割閾值,提高手勢特征提取的準確度。
卷積神經(jīng)網(wǎng)絡(luò)(CNN)在基本神經(jīng)網(wǎng)絡(luò)的基礎(chǔ)上進行卷積和池化操作,將圖像樣本進行處理后獲得特征圖,通過特征圖訓練,減少了原始圖像樣本訓練規(guī)模,提高了訓練效率,但在輸出多類別情況下,需要經(jīng)過分類器處理。深度卷積神經(jīng)網(wǎng)絡(luò)處理流程如圖2所示。
圖2 深度卷積神經(jīng)網(wǎng)絡(luò)處理流程
設(shè)樣本集X=(x1,x2,…,xn),在第l層中對Mj個樣本特征圖進行卷積運算,
(1)
式中:l∈[1,n],為卷積神經(jīng)網(wǎng)絡(luò)的層序號;j∈[1,Mj],為樣本特征圖的序號;klj、blj分別為l層中給特征圖j賦予的權(quán)重及偏置; *為卷積運算;f(·)的表達式[8]為
(2)
卷積操作對象為n個樣本的m個特征。卷積核尺寸為5×3和3×3經(jīng)過卷積運算得到圖3所示的矩陣。
圖3 卷積運算示意圖
設(shè)卷積核尺寸為h×w,池化方法有2種[9],分別是
(3)
(4)
其中式(3)為均值池化,式(4)為最大值池化,本文中選擇前者進行池化操作。
令M=n/(h×w),樣本X=(x1,x2,…,xn)卷積池化后重新得到的樣本為
X=(x1,x2,…,xM)
。
(5)
然后,根據(jù)卷積池化后的樣本按照下式進行轉(zhuǎn)換運算:
(6)
限制條件為
∑aij=1, 0≤aij≤1
。
(7)
根據(jù)式(7)得到卷積神經(jīng)網(wǎng)絡(luò)的全連接層,然后選擇分類器預(yù)測樣本類別。
設(shè)第k個節(jié)點的訓練輸出和實際標簽分別為yk和dk,則誤差項δk[10]為
δk=(dk-yk)yk(1-yk)
。
(8)
假設(shè)第l、l+1層分別有L、M個節(jié)點,則第l層節(jié)點j的誤差為
(9)
式中:hj為輸出;wjk為神經(jīng)元j到l+1層神經(jīng)元k的權(quán)重。
權(quán)重更新為
(10)
式中η為學習率。
偏置Δbk(n)的更新方式[11]為
(11)
式中α為偏置更新步長,一般α=1。
調(diào)整后的權(quán)重為
wjk(n+1)=wjk(n)+Δwjk(n)
,
(12)
調(diào)整后的閾值為
bk(n+1)=bk(n)+Δbk(n)
。
(13)
所有節(jié)點的誤差E為
(14)
當E滿足設(shè)定的閾值時,迭代停止,并得到穩(wěn)定的深度卷積神經(jīng)網(wǎng)絡(luò)模型。
根據(jù)式(6)計算得到全連接層的各個節(jié)點輸出值,采用SVM進行分類。設(shè)輸入向量為X=(x1,x2,…,xn),經(jīng)過SVM映射[12],有
f(x)=sgn((W·X)+b)
,
(15)
式中: sgn()為單位階躍函數(shù);W、b分別為超平面的法向量和截距。
定義函數(shù)K(xi,xj)為SVM的映射函數(shù),本文中選擇單位階躍函數(shù)作為其核函數(shù)。那么式(15)可以轉(zhuǎn)變?yōu)榍蠼庾钚≈祮栴}[13],
(16)
根據(jù)對偶關(guān)系,可得
,
(17)
式中:yi、yj分別對應(yīng)樣本xi和xj;αi、αj分別為樣本xi和xj對應(yīng)的拉格朗日乘子。
計算式(17)得到
(18)
式(17)最終可以表示[14]為
(19)
手勢圖像經(jīng)過去噪處理后,獲得手勢圖像特征樣本,然后進行卷積神經(jīng)網(wǎng)絡(luò)訓練,其主要流程如圖4所示。
圖4 手勢識別流程圖
以下通過實例仿真,驗證卷積神經(jīng)網(wǎng)絡(luò)的SVM手勢識別分類效果。仿真數(shù)據(jù)來源分別為劍橋大學MSRC-12數(shù)據(jù)集,手勢圖像個數(shù)為6 244;ASL數(shù)據(jù)集樣本個數(shù)為6 650;Marcel數(shù)據(jù)集圖像樣本數(shù)為4 872, 樣本的訓練和測試比例為3∶1。差異化設(shè)置卷積核尺寸和池化方法,充分驗證卷積神經(jīng)網(wǎng)絡(luò)和SVM對手勢識別性能的影響,最后比較本文算法和常用的手勢識別算法[15]在MSRC-12、 ASL和Marcel這3個數(shù)據(jù)集的性能差異。設(shè)置η=0.01,池化方法初始化為最大值池化,卷積核初始為2×2。
3.1.1 識別準確率
為了驗證不同卷積核尺寸的手勢識別性能,差異化設(shè)置卷積核尺寸,運用MATLAB軟件對3個不同數(shù)據(jù)集進行仿真,結(jié)果如表1所示。
表1 不同卷積核尺寸的手勢識別準確率
由表可以看出,卷積核尺寸對3種不同的手勢樣本數(shù)據(jù)集的識別準確率影響較大,隨著卷積核尺寸的增大,手勢識別的平均準確率逐漸降低,標準差增大,這可能是卷積核尺寸過大,對手勢圖像提取的粒度過大,漏掉了部分手勢重要特征的緣故。當卷積核尺寸為2×2和3×3時,兩者對手勢識別的準確率差異較小,均表現(xiàn)出了良好的手勢識別準確率,標準差也較小。相同卷積核尺寸的卷積神經(jīng)網(wǎng)絡(luò)對3種樣本的識別準確率表現(xiàn)出了不同的性能,這主要是因為手勢種類存在差異,手勢種類越多,相近的手勢特征也越多,導致分類的難度加大,容易造成手勢分類出現(xiàn)錯誤,因此手勢種類的增加為手勢識別算法提出了更高要求。
3.1.2 不同卷積核的收斂時間
以下分別對卷積核尺寸為2×2、 3×3、 4×4和5×5的收斂性能進行仿真,結(jié)果如表2所示。由表可以看出,卷積核尺寸越大,算法收斂越快,卷積核尺寸為5×5的收斂速度最快,卷積核尺寸為2×2的收斂速度最慢,這是因為通過最大池化,卷積核尺寸為5×5池化卷積后,參與訓練的樣本變少,因此訓練時間短。在實際操作中,可以綜合考量手勢識別準確率和手勢識別時間,根據(jù)表1、 2的性能對比,本文中選擇的卷積核尺寸為3×3。
表2 不同卷積核的手勢識別收斂性能
在采用差異化卷積核尺寸對3種不同手勢數(shù)據(jù)集進行識別性能分析時,默認選擇池化方法為最大值池化,現(xiàn)采用的卷積核尺寸分別用2種池化方法進行性能仿真,結(jié)果見表3。由表可以看出,2種池化方法對3種不同數(shù)據(jù)集的手勢識別準確率敏感度不強,兩者準確率差異較小,但是收斂時間差異較大,這是因為求解均值比求解最大值需要耗費更多的運算時間,因此最大值池化法更適合于本文算法。
表3 不同池化方法的手勢識別準確率和收斂時間
為了充分驗證本文算法的手勢識別性能,采用常用手勢識別算法[15]和本文算法分別對MSRC-12樣本進行手勢識別,結(jié)果見圖5。由圖可以看出,4種算法對MSRC-12手勢樣本的識別性能差異較大,決策樹算法的手勢識別準確率約為0.6,本文算法的手勢識別準確率超過了0.9。而在手勢識別時間方面,決策樹算法在30 s左右開始收斂,神經(jīng)網(wǎng)絡(luò)算法用時最久,超過50 s才開始收斂。綜上而言,本文算法的手勢識別準確率性能最好,但識別時間優(yōu)勢不明顯。
圖5 不同算法的手勢識別性能
本文中將卷積神經(jīng)網(wǎng)絡(luò)和SVM分類相結(jié)合的方法用于手勢識別,通過合理設(shè)置卷積核尺寸和池化方法,可以獲得較好的手勢識別準確率。下一步研究將在手勢識別時間方面進行優(yōu)化,進一步對卷積神經(jīng)網(wǎng)絡(luò)的權(quán)重和偏置求解進行優(yōu)化,以提高卷積神經(jīng)網(wǎng)絡(luò)的手勢識別效率,提高該算法在手勢識別方面的適用度。