任曉文,郭一娜,劉其嘉,李健宇
(太原科技大學(xué) 電子與信息工程學(xué)院,太原 030024)
手勢(shì)識(shí)別技術(shù)一般可以分為手勢(shì)區(qū)域檢測(cè)和手勢(shì)識(shí)別兩個(gè)環(huán)節(jié)。但由于不同人的手勢(shì)不盡相同,并且同一手勢(shì)可以表示多種意義,因此基于視覺的手勢(shì)識(shí)別成為一項(xiàng)難度較大,涉及領(lǐng)域較廣的研究?jī)?nèi)容[1][2]。最近幾年眾多研究者對(duì)手勢(shì)識(shí)別提出了不同的識(shí)別思想。2006年Double[3]利用手勢(shì)的形狀和紋理特征進(jìn)行手勢(shì)識(shí)別,達(dá)到較好的識(shí)別效果,識(shí)別率達(dá)到90%以上;周航在2008年提出利用統(tǒng)計(jì)分類思想,采用支持向量機(jī)進(jìn)行分類,從而達(dá)到手勢(shì)識(shí)別的目的,取得了較好的識(shí)別效果[4];2012年Yi Li[5]從Kinect獲取深度圖像并進(jìn)行人手定位,根據(jù)檢測(cè)手部輪廓和凹凸點(diǎn)來檢測(cè)指尖點(diǎn)進(jìn)而識(shí)別幾種常見的靜態(tài)手勢(shì),但該方法在做手勢(shì)識(shí)別時(shí)對(duì)實(shí)驗(yàn)者有較高的要求;2016年張立志等人[6]將手勢(shì)的局部特征和全局特征結(jié)合,采用“隱馬爾科夫模型(Hidden Markov model, HMM)”方法來識(shí)別靜態(tài)手勢(shì),但是對(duì)于部分差異較小的手勢(shì)組,識(shí)別率并不高;還有就是在2013年,楊磊等人提出基于膚色的手勢(shì)檢測(cè)方法[7][8],該類方法的出發(fā)點(diǎn)是皮膚的色彩信息分布在一定的空間范圍內(nèi),但該方法容易受光照、種族、人體其他部位以及相似顏色背景等多種因素的影響。
總體來說,對(duì)于各種環(huán)境下的手勢(shì),僅僅依靠某一獨(dú)立的特征進(jìn)行手勢(shì)識(shí)別往往并不能夠滿足手勢(shì)識(shí)別的要求。本文首先從卷積神經(jīng)網(wǎng)絡(luò)的模型構(gòu)建入手,結(jié)合手勢(shì)識(shí)別的算法過程及實(shí)驗(yàn)結(jié)果進(jìn)行分析進(jìn)行研究,通過卷積神經(jīng)網(wǎng)絡(luò)中的參數(shù),觀察不同參數(shù)對(duì)網(wǎng)絡(luò)的均方誤差和測(cè)試準(zhǔn)確度的影響。
目前通過神經(jīng)網(wǎng)絡(luò)[9]在解決眾多問題中均有運(yùn)用。其主要的思路如圖1所示:
圖1 神經(jīng)網(wǎng)絡(luò)解決問題思路
Fig.1 Neural network to solve the problem
中間的三個(gè)組成部分,預(yù)處理,特征提取,特征選取,總結(jié)起來即為特征表達(dá)[10]。良好的特征表達(dá),對(duì)于算法最后結(jié)果的正確度起到了相當(dāng)樞紐性的作用。而卷積神經(jīng)網(wǎng)絡(luò)是該問題的良好解決方法。卷積神經(jīng)網(wǎng)絡(luò)思想的基本結(jié)構(gòu)如圖2所示。
圖2 卷積神經(jīng)網(wǎng)絡(luò)基本結(jié)構(gòu)
Fig.2 The basic structure of convolution neural network
在規(guī)范的卷積神經(jīng)網(wǎng)絡(luò)中,均有卷積層和下采樣層,架構(gòu)由多層通用網(wǎng)絡(luò)最終組成,為全連接的一維網(wǎng)絡(luò)[11]。二維的特征映射變化成全連接的一維網(wǎng)絡(luò)輸入。在一維的網(wǎng)絡(luò)中,二維特征映射要作為輸入,直接使用顯然是不行的。一維的輸入由二維特征轉(zhuǎn)化得到,是經(jīng)常所使用的方法[12]。
通常,卷積層之間穿插子采樣層的作用是:降低計(jì)算時(shí)間成本并建立進(jìn)一步的空間配置不變性。同時(shí),為了保持特異性,因此需要一個(gè)小的子采樣因子。多個(gè)輸入映射卷積值可以組成一個(gè)輸出映射(Xj)[13]。有:
這里Mj表示輸入映射集合的其中一個(gè)選擇,常見的輸入映射選擇包括全對(duì)和全三重,在每一個(gè)輸出映射的基礎(chǔ)上都會(huì)被給予一個(gè)另外的偏置b.然而針對(duì)具體的輸出映射,輸入映射將會(huì)受到與其他有別的卷積核的卷積[14]。即如果輸出映射j和輸出映射k都是由輸入映射i卷積求和得來的,那么對(duì)應(yīng)兩個(gè)不同輸出映射的卷積核是不同的。
假設(shè)采樣層L+1均會(huì)在每個(gè)卷積層L存在。依照反向傳播算法,求得當(dāng)前層L每個(gè)神經(jīng)元節(jié)點(diǎn)的靈敏度之后,才可以更新每個(gè)神經(jīng)元的權(quán)值。為了求該靈敏度就需要首先對(duì)下一層神經(jīng)節(jié)點(diǎn)的靈敏度進(jìn)行求和,然后乘以兩層之間連接對(duì)應(yīng)的權(quán)值w.最終乘上當(dāng)前層L神經(jīng)節(jié)點(diǎn)的輸入u的激活函數(shù)f的導(dǎo)數(shù)值,進(jìn)而通過反向傳播來計(jì)算權(quán)重的梯度,并且很多相互連接的權(quán)值都是共享的,所以,針對(duì)確定的權(quán)值,要求對(duì)全部與該權(quán)值存在關(guān)聯(lián)的連接進(jìn)行梯度計(jì)算,而后將這些所得梯度求和。
利用卷積神經(jīng)網(wǎng)絡(luò)進(jìn)行手勢(shì)識(shí)別中,采用270幅28*28像素的灰度值圖片數(shù)據(jù)作為輸入訓(xùn)練CNN網(wǎng)絡(luò),如圖3所示為個(gè)別樣本。
圖3 樣本實(shí)例
Fig.3 Sample instance
輸入數(shù)據(jù)之后,需要首先對(duì)其數(shù)據(jù)進(jìn)行預(yù)處理,即歸一化,并且采用雙精度浮點(diǎn)型數(shù)據(jù)以提高精度[15]。
在對(duì)CNN進(jìn)行訓(xùn)練之前,首先對(duì)CNN的結(jié)構(gòu)進(jìn)行定義。在本模型中采用兩個(gè)卷積層,兩個(gè)子抽樣層的結(jié)構(gòu)。第一卷積層采用6種濾波器,每種濾波器采用5*5的尺寸。第一子采樣層采用2*2的尺寸。第二卷積層使用12種濾波器,每種濾波器采用5*5的尺寸。第二子采樣層與第一子采樣層相同。
而后對(duì)該訓(xùn)練過程中的激活函數(shù),步長(zhǎng)以及迭代次數(shù)等參數(shù)進(jìn)行賦值。注意迭代次數(shù),訓(xùn)練的步數(shù)必須為整數(shù),即步長(zhǎng)必須是樣本數(shù)的約數(shù)。步長(zhǎng)太大,不利于特征的提??;反之,訓(xùn)練的速度會(huì)很慢。迭代次數(shù)太少,訓(xùn)練出的網(wǎng)絡(luò)準(zhǔn)確度太差;迭代次數(shù)太多,時(shí)間成本太大。
接下來繼續(xù)對(duì)CNN進(jìn)行初始化, 對(duì)CNN的每一層進(jìn)行如圖4所示的處理:
圖4 CNN的初始化過程
Fig.4 CNN’s initialization process
完成初始化過程之后,便可以開始利用樣本對(duì)CNN進(jìn)行訓(xùn)練。保存樣本總數(shù),對(duì)樣本的順序進(jìn)行打亂。取出步長(zhǎng)數(shù)量打亂順序后的樣本和對(duì)應(yīng)的標(biāo)簽[16],在每個(gè)訓(xùn)練批次中,在當(dāng)前所得網(wǎng)絡(luò)權(quán)值和網(wǎng)絡(luò)輸入下計(jì)算網(wǎng)絡(luò)的輸出,即使用當(dāng)前神經(jīng)網(wǎng)絡(luò)對(duì)輸入向量進(jìn)行預(yù)測(cè)。如圖5所示。
然后通過對(duì)應(yīng)的樣本標(biāo)簽用反向傳播算法訓(xùn)練得到神經(jīng)網(wǎng)絡(luò),在訓(xùn)練過程中,采用累積的方式計(jì)算累積誤差,從而對(duì)網(wǎng)絡(luò)的訓(xùn)練效果做出評(píng)估。就此完成對(duì)CNN的訓(xùn)練。
圖5 當(dāng)前神經(jīng)網(wǎng)絡(luò)對(duì)輸入向量進(jìn)行預(yù)測(cè)過程
Fig.5 The prediction of current neural network to the input vector
CNN測(cè)試的過程如圖6所示:
圖6 CNN測(cè)試過程
Fig.6 CNN testing process
以上過程即為CNN樣本測(cè)試流程。在良好訓(xùn)練網(wǎng)絡(luò)的情況下,輸出結(jié)果較為理想的。
在270個(gè)訓(xùn)練樣本中,另采集了90個(gè)隨機(jī)樣本作為測(cè)試數(shù)據(jù),9種分類的情況下,3000次迭代,步長(zhǎng)選擇為18,輸出的結(jié)果如圖7所示:
圖7 CNN的均方誤差
Fig.7 CNN′s mean square error
從圖中可以明顯看出CNN的均方誤差隨迭代次數(shù)的變化曲線。當(dāng)增加迭代次數(shù),均方誤差逐漸減小,在達(dá)到30 000次之后,均方誤差基本不變。
其測(cè)試結(jié)果如圖表1.其中表格中的手勢(shì)1、2、3……9各代表的手勢(shì),如圖3所示。
表1 測(cè)試結(jié)果列表
Tab.1 Test results list
手勢(shì)測(cè)試個(gè)數(shù)識(shí)別個(gè)數(shù)錯(cuò)誤識(shí)別正確率/%手勢(shì)1109190手勢(shì)210100100手勢(shì)3109190手勢(shì)4109190手勢(shì)5109190手勢(shì)610100100手勢(shì)710100100手勢(shì)810100100手勢(shì)9108280總計(jì)9084693.33
最后得到準(zhǔn)確度93.33%.
在CNN中迭代的次數(shù)與步長(zhǎng)是眾多參數(shù)中很重要的兩個(gè)。下面就這兩個(gè)參數(shù)對(duì)準(zhǔn)確度的影響進(jìn)行探討,如圖8所示:
圖8 步長(zhǎng)與迭代次數(shù)對(duì)準(zhǔn)確度的影響
Fig.8 The Influence of steps and iterations on accuracy
本文在270個(gè)樣本中分別采用了15,18,27和45四種步長(zhǎng),每種步長(zhǎng)100,300,400,500,700,1 000,2 000和3 000次迭代,準(zhǔn)確度如上圖所示。在每種步長(zhǎng)下,隨著迭代次數(shù)的增加,準(zhǔn)確度普遍會(huì)有所上升,但也有特殊情況。比如當(dāng)步長(zhǎng)為45時(shí),300次迭代的準(zhǔn)確度要比400次的高。并且步長(zhǎng)的選擇非最小或最大為最佳。步長(zhǎng)過大,網(wǎng)絡(luò)對(duì)手勢(shì)的特征提取不夠,準(zhǔn)確度稍差;步長(zhǎng)過小,計(jì)算量增大,時(shí)間成本過高。
本文主要提出一種利用卷積神經(jīng)網(wǎng)絡(luò)完成手勢(shì)識(shí)別的方法,重點(diǎn)討論了迭代次數(shù)和步長(zhǎng)對(duì)網(wǎng)絡(luò)訓(xùn)練的均方誤差和測(cè)試準(zhǔn)確度的影響。特征提取階段依據(jù)步長(zhǎng)的選擇提取不同手勢(shì)的多種特征,步長(zhǎng)的選擇會(huì)直接影響到提取手勢(shì)特征的準(zhǔn)確度;手勢(shì)識(shí)別時(shí),少量的訓(xùn)練識(shí)別率比較低,但進(jìn)行適量的訓(xùn)練識(shí)別率會(huì)有很大的提高,實(shí)驗(yàn)最終手勢(shì)識(shí)別率為93.33%.在后續(xù)的研究中,將在本算法的基礎(chǔ)上繼續(xù)對(duì)各種手勢(shì)進(jìn)行研究,快速準(zhǔn)確的完成手勢(shì)識(shí)別。