張起浩 蔣少國 蔣青山 趙鵬
摘 要:針對傳統(tǒng)神經網絡需要人工對參數進行提取的問題,提出基于Leap Motion結合卷積神經網絡的手勢識別方法。首先利用Leap Motion獲取高精度手勢圖像,然后對圖像進行灰度處理,采用卷積神經網絡算法自動對原始圖像進行特征提取及分類,最后設計6層卷積神經網絡用于手勢識別。實驗結果表明,卷積神經網絡算法在
6種手勢測試集上的準確率可達96.5%,且識別時間短,模型具有較好的魯棒性。
關鍵詞:手勢識別;高精度;Leap Motion;灰度處理;卷積神經網絡;深度學習
中圖分類號:TP39文獻標識碼:A文章編號:2095-1302(2019)10-00-03
0 引 言
傳統(tǒng)人機交互模式大多依賴鍵盤鼠標等直接接觸的設備,但這種交互方式不夠自然有效,已無法滿足人們的需求。人們迫切需要一種更自然、更符合人們生活習慣的交互方式,如語音、意念、手勢等。其中,手勢憑借自然、直觀等特點[1]在人機交互中得到廣泛運用,如今手勢識別已成為國內外學者研究的重點。文獻[2]利用豪斯多夫(Hausdorff)距離模板匹配的思想實現手勢識別,將模版手勢與待識別手勢進行邊緣特征提取后變換到歐氏空間距離,其最短距離即對應的模版手勢。文獻[3]基于SVM構造多類分類器的手勢識別,對手勢分別進行一對一、一對多的數據分類,SVM算法是在樣本空間或特征空間構造出最優(yōu)超平面[3],使超平面與樣本數集合之間的距離最大。文獻[4]采用Kinect傳感器對手勢圖像進行獲取,采用動態(tài)時間規(guī)整(Dynamic Time Warping,DTW)的方法將不對齊的兩個序列在某一時刻點進行壓縮,實現兩個點歐氏空間距離最小。文獻[5]利用BP算法訓練多層前饋網絡。
分析上述文獻,發(fā)現以下問題:
(1)模版匹配的方法無法解決時間可變性問題,識別精度低;
(2)基于SVM算法對大規(guī)模樣本訓練集的訓練時間較長,難以運用在實際問題中;
(3)DTW存在時間規(guī)整引入誤差的問題,降低了識別精度;
(4)采用傳統(tǒng)人工神經網絡結構需要人工對參數進行提取。
針對以上問題,本文采用卷積神經網絡算法對采集的手勢進行識別。
市面上有兩種深度視覺傳感器:一種是Kinect傳感器,側重于識別人體骨骼,也能識別人臉與人手,但識別人手的精度不高;另一種是Leap Motion傳感器,能夠采集人體手部的關鍵點信息,故能更好地應用在手勢識別中。
1 Leap Motion手勢數據采集
Leap Motion是一種采用立體視覺原理的傳感器,內部配備雙攝像頭,如同人眼從不同角度捕捉畫面。骨骼追蹤模型如圖1所示,此模型在視野不清晰時能夠預測手指與手的位置,即使手指交叉也可被Leap Motion追蹤。當Leap Motion檢測到手或桿狀物體時,系統(tǒng)會給Frame里的每一個Hand分配一個唯一的ID標識符。Leap Motion能夠對手部信息進行描述,并在Hand::pointable()函數里提供指尖、關節(jié)點等的位置以及手掌的方向向量、法向量信息[6],最后將Leap Motion采集到的人體手勢數據通過USB接口傳輸給PC端。
2 卷積神經網絡
卷積神經網絡(Convolutional Neural Networks,CNN)是一種前饋神經網絡,其神經元可響應一部分覆蓋范圍內的周圍單元,對于大規(guī)模模式識別有著非常好的泛化能力。CNN還是一個分類器,是一種具有監(jiān)督功能的機器學習工具,與傳統(tǒng)神經網絡相比,避免了對圖像進行復雜的前期預處理,可直接將原始圖像輸入模型,圖像經過卷積層、池化層、全局平均池化層,最后輸出分類圖像結果。CNN主要用來識別位移、縮放及其他形式扭曲不變性的二維圖像。因為CNN同一特征平面映射面上的神經元權值相同,所以局部權值共享的特殊結構在圖像識別方面有著獨特的優(yōu)越性。
2.1 卷積神經網絡結構
卷積層的作用是對局部進行感知,在原始圖像的一個小區(qū)域上進行特征提取,池化層的作用是將卷積層輸出的特征面繼續(xù)進行特征化。本文選用最大值池化法(Max Pooling),可保留區(qū)域矩陣塊中的最大數值,忽略其他值,并能提高模型的魯棒性。全局平均池化層的作用是經過若干卷積池化后將所有特征全連接起來組成一個特征向量,這個特征向量更能表達原始圖像;Filter(過濾器)的作用是將輸入的圖像劃分為多個區(qū)域,同時Filter在映射圖像中的參數共享,且相互獨立;激活函數的作用是使整個網絡呈現出非線性。本文采用線性整流函數(Rectified Linear Unit,ReLU),ReLU函數可將神經元的一部分輸出為0,減少參數之間的關系,有效緩解過擬合情況的發(fā)生。卷積神經網絡結構如圖2所示,輸入層為32×32通道為3的圖像。Filter尺寸為5×5,深度為3。但在實際計算中,存在無法將原始圖像邊界點利用起來的情況,針對此問題可根據實際情況設定補零的層數(Zero Padding)。
2.2 卷積層與池化層
3 實驗結果與分析
為了驗證CNN算法在手勢識別上具有較好的準確性,確保Leap Motion能夠采集到每一個手勢,實驗者需在距離Leap Motion傳感器正上方100 mm處采集6種手勢。手勢類別如圖3所示,6個手勢分別代表1,2,3,4,5,6這六個數字,每種手勢采集200個樣本,樣本均為112×112的手勢像素矩陣,訓練集和測試集各為1 200個。訓練前對樣本進行灰度處理,如圖4所示。
實驗結果見表1所列。手勢5的正確率達96.5%,且識別時間較短;但手勢4的正確率只有86%,響應時間較長。由于訓練所用樣本較少,導致復雜手勢識別較低,因此可增加訓練樣本數量,提高手勢識別的準確性。
4 結 語
本文設計了6層卷積神經網絡用于手勢識別,與其他神經網絡相比,由于加入了權重共享原則,因此能夠降低參數數目。理論上設計神經網絡層數越多、節(jié)點越多,在訓練模型上的效果就越好,甚至會達到100%的預測精度。但隨之帶來的是模型過擬合,將模型放在測試數據上,預測效果嚴重降低。殘差神經網絡是解決此類問題的方法之一,也是未來深度神經網絡算法的又一研究方向。
注:本文通訊作者為趙鵬。
參 考 文 獻
[1]周菲,蔡晨曉,鄭標.基于多源信息融合的手勢智能交互系統(tǒng)[J/OL].[2019-05-06].信息與控制,https://doi.org/10.13976/j.cnki.xk.2019.8414.
[2]張良國,吳江琴,高文,等.基于Hausdorff距離的手勢識別[J].中國圖象圖形學報,2002(11):43-49.
[3]馬淑慧,夏斌,楊文璐,等.基于SVM的Leap Motion手勢識別[J].現代計算機(專業(yè)版),2017(23):55-58.
[4]王攀,官巍.基于Kinect手勢識別的應用研究[J].計算機與數字工程,2018,46(8):1659-1663.
[5]王景芳,施霖.基于人工神經網絡對sEMG信號的手勢動作識別[J].傳感器與微系統(tǒng),2017,36(6):63-65.
[6]周開店,謝鈞,羅健欣.基于Leap Motion指尖位置的手勢提取和識別技術研究[J].微型機與運用,2017,36(2):48-51.
[7]蔡娟.基于卷積神經網絡的手勢識別[D].福州:福建師范大學,2015.
[8]蔡娟,蔡堅勇,廖曉東,等.基于卷積神經網絡的手勢識別初探[J].計算機系統(tǒng)應用,2015,24(4):113-117.
[9]呂耀坤.基于卷積神經網絡的實景交通標志識別[J].物聯(lián)網技術,2017,7(1):29-30.
[10]張濤,宋建濤.基于馬爾科夫模型和卷積神經網絡的異常數據檢測方法[J].物聯(lián)網技術,2018,8(8):80-82.