基于 Leap Motion 和卷積神經(jīng)網(wǎng)絡(luò)的手勢(shì)識(shí)別
掃描二維碼
隨時(shí)隨地手機(jī)看文章
0 引 言
傳統(tǒng)人機(jī)交互模式大多依賴鍵盤鼠標(biāo)等直接接觸的設(shè)備,但這種交互方式不夠自然有效,已無(wú)法滿足人們的需求。人們迫切需要一種更自然、更符合人們生活習(xí)慣的交互方式,如語(yǔ)音、意念、手勢(shì)等。其中,手勢(shì)憑借自然、直觀等特點(diǎn) [1] 在人機(jī)交互中得到廣泛運(yùn)用,如今手勢(shì)識(shí)別已成為國(guó)內(nèi)外學(xué)者研究的重點(diǎn)。文獻(xiàn) [2] 利用豪斯多夫(Hausdorff)距離模板匹配的思想實(shí)現(xiàn)手勢(shì)識(shí)別,將模版手勢(shì)與待識(shí)別手勢(shì)進(jìn)行邊緣特征提取后變換到歐氏空間距離,其最短距離即對(duì)應(yīng)的模版手勢(shì)。文獻(xiàn) [3] 基于 SVM 構(gòu)造多類分類器的手勢(shì)識(shí)別,對(duì)手勢(shì)分別進(jìn)行一對(duì)一、一對(duì)多的數(shù)據(jù)分類,SVM算法是在樣本空間或特征空間構(gòu)造出最優(yōu)超平面 [3],使超平面與樣本數(shù)集合之間的距離最大。文獻(xiàn) [4] 采用 Kinect 傳感器對(duì)手勢(shì)圖像進(jìn)行獲取,采用動(dòng)態(tài)時(shí)間規(guī)整(Dynamic TimeWarping,DTW)的方法將不對(duì)齊的兩個(gè)序列在某一時(shí)刻點(diǎn)進(jìn)行壓縮,實(shí)現(xiàn)兩個(gè)點(diǎn)歐氏空間距離最小。文獻(xiàn) [5] 利用 BP算法訓(xùn)練多層前饋網(wǎng)絡(luò)。
分析上述文獻(xiàn),發(fā)現(xiàn)以下問(wèn)題 :
(1)模版匹配的方法無(wú)法解決時(shí)間可變性問(wèn)題,識(shí)別精度低 ;
(2)基于 SVM 算法對(duì)大規(guī)模樣本訓(xùn)練集的訓(xùn)練時(shí)間較長(zhǎng),難以運(yùn)用在實(shí)際問(wèn)題中 ;
(3)DTW 存在時(shí)間規(guī)整引入誤差的問(wèn)題,降低了識(shí)別精度 ;
(4)采用傳統(tǒng)人工神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)需要人工對(duì)參數(shù)進(jìn)行提取。
針對(duì)以上問(wèn)題,本文采用卷積神經(jīng)網(wǎng)絡(luò)算法對(duì)采集的手勢(shì)進(jìn)行識(shí)別。
市面上有兩種深度視覺(jué)傳感器 :一種是 Kinect 傳感器,側(cè)重于識(shí)別人體骨骼,也能識(shí)別人臉與人手,但識(shí)別人手的精度不高 ;另一種是 Leap Motion 傳感器,能夠采集人體手部的關(guān)鍵點(diǎn)信息,故能更好地應(yīng)用在手勢(shì)識(shí)別中。
1 Leap Motion 手勢(shì)數(shù)據(jù)采集
Leap Motion 是一種采用立體視覺(jué)原理的傳感器,內(nèi)部配備雙攝像頭,如同人眼從不同角度捕捉畫(huà)面。骨骼追蹤模型如圖 1 所示,此模型在視野不清晰時(shí)能夠預(yù)測(cè)手指與手的位置,即使手指交叉也可被 Leap Motion 追蹤。當(dāng) LeapMotion 檢測(cè)到手或桿狀物體時(shí),系統(tǒng)會(huì)給 Frame 里的每一個(gè)Hand 分配一個(gè)唯一的 ID 標(biāo)識(shí)符。Leap Motion 能夠?qū)κ植?/span>信息進(jìn)行描述,并在 Hand ::pointable()函數(shù)里提供指尖、關(guān)節(jié)點(diǎn)等的位置以及手掌的方向向量、法向量信息 [6],最后將 Leap Motion 采集到的人體手勢(shì)數(shù)據(jù)通過(guò) USB 接口傳輸給PC 端。

2 卷積神經(jīng)網(wǎng)絡(luò)
卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Networks,CNN)是一種前饋神經(jīng)網(wǎng)絡(luò),其神經(jīng)元可響應(yīng)一部分覆蓋范圍內(nèi)的周圍單元,對(duì)于大規(guī)模模式識(shí)別有著非常好的泛化能力。CNN 還是一個(gè)分類器,是一種具有監(jiān)督功能的機(jī)器學(xué)習(xí)工具,與傳統(tǒng)神經(jīng)網(wǎng)絡(luò)相比,避免了對(duì)圖像進(jìn)行復(fù)雜的前期預(yù)處理,可直接將原始圖像輸入模型,圖像經(jīng)過(guò)卷積層、池化層、全局平均池化層,最后輸出分類圖像結(jié)果。CNN 主要用來(lái)識(shí)別位移、縮放及其他形式扭曲不變性的二維圖像。 CNN 同一特征平面映射面上的神經(jīng)元權(quán)值相同,所以局部權(quán)值共享的特殊結(jié)構(gòu)在圖像識(shí)別方面有著獨(dú)特的優(yōu)越性。
2.1 卷積神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)
卷積層的作用是對(duì)局部進(jìn)行感知,在原始圖像的一個(gè)小區(qū)域上進(jìn)行特征提取,池化層的作用是將卷積層輸出的特征面繼續(xù)進(jìn)行特征化。本文選用最大值池化法(Max Pooling),可保留區(qū)域矩陣塊中的最大數(shù)值,忽略其他值,并能提高模型的魯棒性。全局平均池化層的作用是經(jīng)過(guò)若干卷積池化后將所有特征全連接起來(lái)組成一個(gè)特征向量,這個(gè)特征向量更能表達(dá)原始圖像 ;Filter(過(guò)濾器)的作用是將輸入的圖像劃分為多個(gè)區(qū)域,同時(shí) Filter 在映射圖像中的參數(shù)共享,且相互獨(dú)立 ;激活函數(shù)的作用是使整個(gè)網(wǎng)絡(luò)呈現(xiàn)出非線性。本文采用線性整流函數(shù)(Rectified Linear Unit,ReLU),ReLU 函數(shù)可將神經(jīng)元的一部分輸出為 0,減少參數(shù)之間的關(guān)系,有效緩解過(guò)擬合情況的發(fā)生。卷積神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)如圖 2 所示,輸入層為 32×32 通道為 3 的圖像。Filter 尺寸為 5×5,深度為 3。但在實(shí)際計(jì)算中,存在無(wú)法將原始圖像邊界點(diǎn)利用起來(lái)的情況,針對(duì)此問(wèn)題可根據(jù)實(shí)際情況設(shè)定補(bǔ)零的層數(shù)(ZeroPadding)。

2.2 卷積層與池化層
在卷積層中,將第一層的特征圖與卷積核進(jìn)行卷積,然后通過(guò)激活函數(shù)得出卷積層的特征圖,其公式如下 :
式 中:i 表示網(wǎng)絡(luò)層數(shù);j 表示特征圖個(gè)數(shù);f (*) 表 示激活函數(shù);k 表示卷積核;mj 表示輸入特征圖;b 表示偏置項(xiàng)。
在池化層中,神經(jīng)元 x 的計(jì)算公式如下 :
式中 n 表示從上一層到池化層的窗口大小。池化是對(duì)該層輸入 n×n 大小的矩陣區(qū)域加權(quán)求和,因此輸出圖像的大小是原來(lái)輸入圖像大小的 1 ? n[8]。
3 實(shí)驗(yàn)結(jié)果與分析
為了驗(yàn)證 CNN 算法在手勢(shì)識(shí)別上具有較好的準(zhǔn)確性,確保 Leap Motion 能夠采集到每一個(gè)手勢(shì),實(shí)驗(yàn)者需在距離Leap Motion 傳感器正上方 100 mm 處采集 6 種手勢(shì)。手勢(shì)類別如圖 3 所示,6 個(gè)手勢(shì)分別代表 1,2,3,4,5,6 這六個(gè)數(shù)字,每種手勢(shì)采集 200 個(gè)樣本,樣本均為 112×112 的手勢(shì)像素矩陣,訓(xùn)練集和測(cè)試集各為 1 200 個(gè)。訓(xùn)練前對(duì)樣本進(jìn)行灰度處理,如圖 4 所示。

實(shí)驗(yàn)結(jié)果見(jiàn)表 1 所列。手勢(shì) 5 的正確率達(dá) 96.5%,且識(shí)別時(shí)間較短 ;但手勢(shì) 4 的正確率只有 86%,響應(yīng)時(shí)間較長(zhǎng)。由于訓(xùn)練所用樣本較少,導(dǎo)致復(fù)雜手勢(shì)識(shí)別較低,因此可增加訓(xùn)練樣本數(shù)量,提高手勢(shì)識(shí)別的準(zhǔn)確性。

4 結(jié) 語(yǔ)
本文設(shè)計(jì)了 6 層卷積神經(jīng)網(wǎng)絡(luò)用于手勢(shì)識(shí)別,與其他神經(jīng)網(wǎng)絡(luò)相比,由于加入了權(quán)重共享原則,因此能夠降低參數(shù)數(shù)目。理論上設(shè)計(jì)神經(jīng)網(wǎng)絡(luò)層數(shù)越多、節(jié)點(diǎn)越多,在訓(xùn)練模型上的效果就越好,甚至?xí)_(dá)到 100% 的預(yù)測(cè)精度。但隨之帶來(lái)的是模型過(guò)擬合,將模型放在測(cè)試數(shù)據(jù)上,預(yù)測(cè)效果嚴(yán)重降低。殘差神經(jīng)網(wǎng)絡(luò)是解決此類問(wèn)題的方法之一,也是未來(lái)深度神經(jīng)網(wǎng)絡(luò)算法的又一研究方向。