,
(安徽工程大學 電氣工程學院,安徽 蕪湖 241000)
近年來,隨著計算機視覺和機器學習等相關學科的發展,基于視覺的人機交互技術逐漸成為研究熱點,研究者們對人臉、表情、手勢等交互信息進行了大量的研究.區別于其他的交互方式,手勢具有直觀、靈活、多樣的特點,因此手勢識別逐漸成為研究熱點[1].手勢識別主要分為動態和靜態手勢識別,研究主要對靜態手勢識別進行研究.傳統靜態手勢識別算法的關鍵在于手勢特征的提取.楊麗[2]等結合RGB和HSV顏色空間對手勢進行分割,提取Hu矩和手指個數描述輪廓,然后通過ELM前饋神經網絡進行訓練識別.薛俊韜[3]等在YCbCr空間下對手勢進行分割,提取Hu矩,并結合傅里葉描述子得出所需特征,再通過BP神經網絡進行訓練識別.以上兩種算法都能快速地識別出手勢,但是手勢的分割效果對識別率影響較大.呂蕾[4]等基于數據手套,改善了手勢特征提取和特征點匹配的方法,提高了數據手套手勢識別的準確率和識別速度,但在手勢類別增多的情況下識別率下降.蔡芝蔚[5]等利用SVM算法提取手勢特征,然后結合ANN、HMM以及DTW算法對手勢進行識別,取得了較高的識別率,但該組合算法的運算速度較慢,不適合實時系統.近年來,微軟推出的Kinect深度相機可以捕捉圖像的深度信息,為人機交互信息研究者們提供了新的研究思路[6-8].
卷積神經網絡是一種深度神經網絡.作為深度學習的一個重要分支,卷積神經網絡近年來已經成為圖像和語音識別領域的研究熱點.區別于傳統人工神經網絡,卷積神經網絡擁有較多的網絡層數,卷積層的神經元能從前一層輸入中提取更高層次的特征,得出特征圖,并通過池化層進行降維,減少數據冗余,最后通過全連接層和分類器進行分類識別.權值共享是卷積神經網絡的一大特點,通過權值共享,網絡的復雜程度大大降低,減少了網絡的權值數量,也就使得訓練網絡時的運算量大大降低.這一優點特別適用于多維圖像作為樣本輸入的網絡訓練.圖像可以直接輸入,省去了傳統識別算法中手動提取特征的復雜操作.目前卷積神經網絡已成功運用于人臉識別[9-10]、目標檢測[11]等領域,在手勢識別領域也逐漸興起.蔡娟[12]等通過卷積神經網絡訓練出的模型取得了不錯的手勢識別效果.操小文[13]等通過引入噪聲驗證了其網絡結構的魯棒性.不足之處在于上述兩者的研究選取的訓練樣本背景較為單一,在復雜背景下的效果無法得到驗證.研究提出的基于卷積神經網絡的手勢識別方法,相較于文獻[9]用于人臉識別的卷積神經網絡,提升了網絡卷積層和池化層的層數,以求得到更好的高維圖像特征,區別于文獻[12]、文獻[13],選取了復雜背景下0到5共6類手勢樣本進行訓練和測試.
2006年Hinton[14]在科學雜志上發表了一篇使用多層神經網絡實現數據降維的文章,引發了研究者們對深度學習的廣泛關注,深度學習逐漸成為機器學習研究的新領域[15].深度學習實質上是對擁有深層結構的神經網絡模型進行訓練的一類方法的總稱.相對于SVM、MLP等淺層結構算法,深度學習在處理內部復雜的數據時具有更好的表現.深層結構模型能夠通過隱含層逐級地提取和表示特征.當輸入數據內部比較復雜且具有高度非線性關系時,深層結構模型比淺層結構模型更能準確地表現出數據的內部特征[16].目前主流的深度學習模型主要包括自動編碼器、稀疏編碼、深度置信網絡(DBN)、限制性玻爾茲曼機(RBM)和卷積神經網絡(CNN).研究主要基于卷積神經網絡.典型的卷積神經網絡的結構主要包含卷積層、池化層、全連接層和Softmax回歸層.
卷積層是卷積神經網絡核心的層結構,通過卷積層提取圖像特征圖的好壞直接影響到后續層的處理.卷積層主要通過卷積核與輸入的二維圖像數據進行局部連接,得出圖像數據的局部特征,并通過權值共享的方式得出特征圖.卷積層上的每個神經元通過卷積核與前一層特征圖的局部區域(局部感受野)相連接,卷積核的作用就是提取局部區域的特征,一旦該局部特征被提取后,通過卷積核在前一層特征圖上滑動,遍歷所有區域,每個局部區域的特征也就確定了.權值共享指的是卷積層中的每個神經元用一組相同的連接權值參數與前一層局部連接,即用同一個卷積核去卷積前一層的圖像,這樣網絡訓練時的權值參數就減少了.選用不同的卷積核分別遍歷卷積前一層的特征圖,加上偏置,通過激活函數得出當前神經元,就構成不同的特征圖.
卷積層卷積示意圖如圖1所示.卷積層的計算公式可表示為:
(1)


圖1 卷積層卷積示意圖
池化層又稱為下采樣層,該層往往跟隨卷積層,在卷積層之后.卷積層層數的增加會導致特征圖的個數隨之增加,因此學習到的特征維數也會快速增加,池化層的作用就是降低卷積后特征圖的特征維數,以降低網絡的復雜度,減少計算量.
根據不同的需求,池化層有不同的池化方式.最大池化和均值池化是最常見的兩種池化方式.假設采樣大小為2×2,即將卷積層輸入的特征圖分割成2×2的小塊,那么最大池化操作即提取每個小塊中最大的值,組成新的特征.均值池化操作即取小塊中參數的均值.通過池化操作,若圖像稍有偏移,池化結果不會隨之改變,因此也提升了系統的魯棒性.池化的一般表達式為:
(2)
式中,l表示當前層數;j表示第j個特征圖;down(g)表示池化函數.
全連接層實際上也是一種卷積層,但區別于卷積層的局部連接,全連接層中每個神經元與前一層所有神經元相連接,但該層神經元之間不相互連接.全連接的一個作用是維度變換,把前一層的高維矩陣數據變換成低維矩陣,提取和整合有鑒別能力的特征.另一個作用是隱含語義的表達,把原始特征映射到各個隱語義節點.全連接層的一般表達式為:
(3)

Softmax回歸層一般接在全連接層之后,作為卷積神經網絡的最后一層輸出分類.Softmax回歸分析是logistic回歸分析在多個分類問題上面的發展.在卷積神經網絡中,Softmax分類器用于對樣本種類進行概率判斷,選取輸出值最大的神經元所對應的類別作為分類結果.
提出一種用于手勢識別的卷積神經網絡結構,如圖2所示.不包含輸入,該卷積神經網絡共有8層,其中包含3個卷積層,3個池化層,1個全連接層和1個Softmax回歸層.網絡輸入為224×224的手勢像素矩陣,卷積層1卷積核大小為5×5,卷積核數量為32個,得出32個特征圖.池化層1的采樣大小為2×2不重疊采樣,與卷積層1相對應,得出32個特征圖.類似的,卷積層2、卷積層3卷積核大小都為5×5,卷積核數量變為64,池化層2、池化層3與之對應.全連接層的神經元個數設置為500個,與池化層3進行全連接.全連接層后接Softmax回歸層含有6個神經元,對全連接層輸出的特征進行分類,得出0到5共6種手勢.

圖2 用于手勢識別的卷積神經網絡結構
卷積神經網絡本質上是通過大量樣本訓練得出輸入輸出之間的映射關系,是一種有監督訓練,在開始訓練前,用一些不同的小隨機數對網絡的所有權值進行初始化.卷積神經網絡的訓練過程一般經歷兩個階段:前向傳播階段和反向傳播階段.

f(x)=max(x,0),
(4)
通過前向傳播得出網絡的代價函數(Loss function):
(5)
式中,n為訓練樣本總數;xi為當前訓練樣本;y=y(xi)是訓練樣本對應的目標輸出.l表示網絡層數,al=al(xi)是當xi為輸入時網絡輸出的激活值向量.

實驗基于Windows平臺,在開源深度學習框架Caffe上進行.采用純CPU模式進行訓練,CPU為Intel Core i7-3610QM,主頻2.3 GHz,內存4 GB.由于目前統一的手勢庫較少,實驗采集了復雜背景環境下0到5共6種手勢,如圖3所示.訓練集每種500張,共計3 600張手勢樣本.測試集每種100張共計600張手勢樣本.訓練前對樣本進行歸一化和灰度處理.

圖3 手勢類別樣例
將預處理后的手勢樣本作為輸入數據,采用研究設計的8層卷積神經網絡進行訓練.選取隨機梯度下降法(SGD)和AdaDelta梯度下降法兩種不同的梯度優化策略,對輸入的樣本分別進行5 000次的迭代訓練.訓練過程中代價函數隨迭代次數變化情況如圖4所示.兩種不同梯度優化策略訓練出的模型對測試集的識別率如表1所示.由表1與圖4可以看出,相同條件下,選用兩種梯度優化策略在迭代訓練1 800次左右時代價函數都能下降到很小的值,但分別經過5 000次迭代后選用AdaDelta梯度下降法訓練出的模型對測試集手勢識別效果更好.
將預處理后的手勢樣本作為輸入數據,采用研究中設計的8層卷積神經網絡進行訓練.選用AdaDelta梯度下降法,將原本網絡中全連接層500個神經元提升到800和1 000,各自迭代訓練5 000次.訓練過程中代價函數歲迭代次數的變化情況如圖5所示.全連接層不同神經元個數訓練出的模型對測試集的正確識別率如表2所示.由表2與圖5可以看出,選用AdaDelta梯度下降法,相同條件下,改變全連接層神經元個數后代價函數值下降速度有所變化,當全連接層神經元個數為1 000個時下降速度最快.然而迭代訓練5 000次后,測試集的正確識別率并沒有提升,反而是神經元個數為500時識別率最高,由此可見,增加全連接層神經元個數一定程度上能夠提升訓練速度,但并不是越多越好.
表1兩種不同梯度優化策略訓練出模型的手勢識別率

策略測試集識別率/%SGD92.67%AdaDelta98.50%
表2全連接層神經元個數改變后的手勢識別率對比

策略測試集識別率/%全連接層神經元個數測試集識別率/%50098.50%80096.67%100097.00%

圖4 不同梯度優化策略代價函數隨迭代次數變化情況圖5 改變全連接層神經元個數后代價函數變化情況
研究設計了一個8層的卷積神經網絡用于手勢識別,通過SGD和AdaDelta兩種梯度優化策略下訓練出的模型在手勢測試集上分別取得了92.67%和98.50%的正確識別率.通過改變全連接層的神經元個數,得出研究設計的卷積神經網絡在全連接層神經元個數為500個時,能取得較好的識別率,而且采集的手勢樣本皆是復雜背景下的手勢,因此通過研究中設計的網絡訓練出的模型具有較強的魯棒性.同時,由于本次實驗在純CPU模式下進行,訓練模型所需時間相對較長,后續研究工作將進一步優化網絡結構,提升訓練速度和識別率.
[1] 易靖國,程江華,庫錫樹.視覺手勢識別綜述[J].計算機科學,2016,43(S1):103-108.
[2] 楊麗,胡桂明,黃東芳,等.結合膚色分割和ELM算法的靜態手勢識別[J].廣西大學學報:自然科學版,2015,40(2):444-450.
[3] 薛俊韜,縱蘊瑞,楊正瓴.基于改進的YCbCr空間及多特征融合的手勢識別[J].計算機應用與軟件,2016,33(1):151-155.
[4] 呂蕾,張金玲,朱英杰,等.一種基于數據手套的靜態手勢識別方法[J].計算機輔助設計與圖形學學報,2015,27(12):2 410-2 418.
[5] 蔡芝蔚,吳淑燕,宋俊鋒.基于SVM和組合優化模型的手勢識別[J].系統仿真學報,2016,28(8):1 812-1 817.
[6] Y LI. Hand gesture recognition using kinect[C]//2012 IEEE 3rd International Conference on Software Engineering and Service Science (ICSESS 2012),Washington:IEEE Computer Society,2012:196-199.
[7] 談家譜,徐文勝.基于Kinect的指尖檢測與手勢識別方法[J].計算機應用,2015,35(6):1 795-1 800.
[8] 楊勇,葉梅樹.基于Kinect的中國手語識別[J].重慶郵電大學學報:自然科學版,2013,25(6):834-841,849.
[9] 陳耀丹,王連明.基于卷積神經網絡的人臉識別方法[J].東北師大學報:自然科學版,2016,48(2):70-76.
[10] S AHMAD RADZI,K H MOHAMAD,S S LIEW,et al.Convolutional neural network for face recognition with pose and illumination variation[J].International Journal of Engineering and Technology(IJET),2014,6(1):44-57.
[11] 周俊宇,趙艷明.卷積神經網絡在圖像分類和目標檢測應用綜述[J].計算機工程與應用,2017,53(13):34-41.
[12] 蔡娟,蔡堅勇,廖曉東,等.基于卷積神經網絡的手勢識別初探[J].計算機系統應用,2015,24(4):113-117.
[13] 操小文,薄華.基于卷積神經網絡的手勢識別研究[J].微型機與應用,2016,35(9):55-57,61.
[14] G E HINTON,R R SALAKHUTDINOV.Reducing the dimensionality of data with neural networks[J].Science,2006,313(5 786):504-507.
[15] 張建明,詹智財,成科揚,等.深度學習的研究與發展[J].江蘇大學學報:自然科學版,2015,30(2):191-200.
[16] 盧官明,何嘉利,閆靜杰,等.一種用于人臉表情識別的卷積神經網絡[J].南京郵電大學學報:自然科學版,2016,36(1):16-22.