吳斌方,陳 涵,肖書浩
1(湖北工業(yè)大學 機械工程學院,武漢 430068)
2(武昌首義學院 機電工程研究所,武漢 430064)
近年來,機器學習(machine learning)領(lǐng)域快速發(fā)展,圖像識別技術(shù)日益成熟,人機交互方式也隨之改變.手勢識別是人機交互中最簡單、最直觀的一種交互方式.該方式擺脫鍵盤、鼠標、按鍵等硬件束縛,具有簡單易學、操作方便、動作直觀等特點,極大增加用戶體驗感和人機互動性.
手勢識別技術(shù)可分為兩種:基于數(shù)據(jù)手套技術(shù)和基于機器視覺技術(shù)[1].國內(nèi)外學者針對機器視覺手勢識別技術(shù)都有相應的研究與發(fā)展,Mahmoud 等[2]利用YCbCr 顏色空間和深度信息結(jié)合高斯混合概率模型(GMM)計算手部區(qū)域,利用隱馬爾可夫模型(HMM)進行手勢識別.Saha 等[3]利用Kinect 傳感器采集數(shù)據(jù)和隱馬爾可夫模型(HMM)進行手勢識別;隱馬爾可夫模型(HMM)是手勢識別領(lǐng)域常用的方法,該方法需要大量參數(shù),對識別時間和效率有一定影響.Tusor 等[4]利用模糊神經(jīng)網(wǎng)絡(FNN)根據(jù)預處理后的手勢數(shù)據(jù)建立手勢特征模型,用模糊推理進行手勢識別;該方法網(wǎng)絡層數(shù)淺,學習能力較弱,訓練過程容易出現(xiàn)過擬合,識別效果不好.Marin 等[5]利用Leap motion 傳感器和深度相機提取指尖間角度、距離和空間坐標等參數(shù)作為手部特征,將特征饋送到SVM 和隨機森林進行手勢識別,該方法對硬件的要求高,樣本預處理較為復雜.任彧等[6]運用方向梯度直方圖(Histograms of Oriented Gradient,HOG)提取手勢特征,利用SVM 學習識別手勢,消除了光照和手部旋轉(zhuǎn)對手勢識別的影響,但背景要求單一,識別準確率不高.朱越等[7]利用HSV 和RGB 顏色空間聯(lián)合進行手勢分割,根據(jù)手勢輪廓像素變化判斷手勢,該模型對膚色的抗干擾能力較差,適應面窄,識別種類局限.操小文等[8]利用8 層的卷積神經(jīng)網(wǎng)絡對手勢樣本進行訓練和識別,該方法需花費長時間設(shè)計定義網(wǎng)絡模型,且樣本背景需單一,抗干擾能力差.
本文針對手勢識別提出了一種SVM 手勢分割與遷移學習相結(jié)合的方法,利用SVM 對樣本進行手勢分割,采用遷移學習方法將Inception-v3 模型進行finetuning,通過實驗對比獲得最優(yōu)性能的超參數(shù),得到新的手勢識別網(wǎng)絡模型.本文使用SVM 對樣本手勢分割增加了手勢分割的魯棒性和強適應性,消除了膚色、光照、旋轉(zhuǎn)和背景等因素的干擾,運用遷移學習簡化定義和設(shè)計CNN 的工作,節(jié)省大量網(wǎng)絡設(shè)計和網(wǎng)絡訓練時間,構(gòu)建的模型在識別準確率和識別效率上均有一定提升.
卷積神經(jīng)網(wǎng)絡是一種深度前饋神經(jīng)網(wǎng)絡,是深度學習領(lǐng)域的一個重要分支[9],它在圖像處理領(lǐng)域表現(xiàn)出優(yōu)越的性能.卷積神經(jīng)網(wǎng)絡將原始圖像信息分塊處理,能適應圖像特征的平移旋轉(zhuǎn),且分塊處理特征信息后參數(shù)明顯減少,對提高模型學習效率有顯著影響.
傳統(tǒng)機器學習方法學習訓練的過程需要龐大的訓練數(shù)據(jù)集,且測試數(shù)據(jù)集的數(shù)據(jù)分布需與訓練數(shù)據(jù)集相同.在大數(shù)據(jù)時代背景下,輕松獲取所需領(lǐng)域且滿足工作任務需求的龐大數(shù)據(jù)集仍存在一定的難度.另一方面,在監(jiān)督學習完成學習任務時,需要大量的人工將訓練數(shù)據(jù)集進行逐一對應的標注,耗費大量的人力物力,對于一般的高校的機器學習研究或者小型公司的機器學習技術(shù)開發(fā)都有極大的障礙.測試數(shù)據(jù)集的數(shù)據(jù)分布亦常難以與訓練數(shù)據(jù)集的數(shù)據(jù)分布一致,給傳統(tǒng)的機器學習方法帶來一定的難度.
遷移學習可以很好的解決上述問題,遷移學習是運用已存有的知識對不同但相關(guān)的領(lǐng)域的問題求解的一種新的機器學習方法[10].遷移學習在源領(lǐng)域模型上僅需少量的訓練數(shù)據(jù)集便可以建立一個針對目標領(lǐng)域的新模型,對數(shù)據(jù)分布不同的目標領(lǐng)域進行預測和分析.
網(wǎng)絡上的手勢數(shù)據(jù)集較匱乏且不滿足實際需求,遂利用實驗室設(shè)備采集手勢數(shù)據(jù)集,采集10 類不同手勢各250 張,共2500 張手勢樣本,取出每種手勢樣本中的25 張作為驗證數(shù)據(jù)集.采集到的2500 張樣本進行尺寸歸一化處理,得到2500 張640×360 像素的手勢樣本,提高手勢識別準確率.部分樣本如圖1所示.
將2500 張樣本隨機高斯模糊化處理,將樣本與二維的高斯分布的概率密度函數(shù)作卷積,隨機模糊樣本.
其中,σ為正態(tài)分布的標準偏差,(u2+v2)為模糊半徑r的平方.
對樣本進行旋轉(zhuǎn)偏移處理,隨機對樣本添加少量噪聲,增強網(wǎng)絡識別的魯棒性,防止網(wǎng)絡產(chǎn)生過擬合現(xiàn)象對測試結(jié)果造成影響.
手勢識別的重要的一個步驟是對樣本中的手勢進行分割,提取重要的感興趣區(qū)域信息,剔除多余背景和環(huán)境對識別準確率造成的干擾.傳統(tǒng)的通過膚色閾值對手勢進行分割的方法一般有2 種,在RGB 空間膚色閾值分割、HSV 空間膚色檢測.
RGB 空間膚色閾值分割中R(0~255),G(0~255),B(0~255)3 種像素值同時滿足式(2),式(3)則為膚色.
圖1 樣本采集
當背景顏色與膚色相同或相似時,會對膚色分割造成一定干擾,對背景要求較高.
HSV 空間膚色建模要求H(色調(diào)Hue),S(飽和度Saturation),V(亮度Value)滿足式(4)則為膚色.
H、S、V三通道的值對應HSV 空間中的某一點,實際環(huán)境中光照的亮度會帶來色調(diào)的改變,對光照強度的強適應性給膚色檢測帶來一定噪聲.
本文利用SVM 將手部區(qū)域與背景區(qū)分開,形成手勢分割.SVM 在對圖像的二分類處理問題有出色的表現(xiàn),泛化能力較強.其基本的思想是將在低維空間非線性可分的兩類映射到高維空間,求解出一個超平面(hyper lane)在高維空間線性可分的兩類數(shù)據(jù)完成分類.本次實驗采用線性(liner)核函數(shù)(kernel):K(x,y)=xT·y,目標函數(shù)懲罰系數(shù)C=1.0.利用Python 的Tkinter 模塊編寫可視化界面對樣本進行標記,將手部區(qū)域與背景區(qū)域區(qū)分開,如圖2所示,其中紅色標記為手部區(qū)域,綠色點標記為背景區(qū)域.
圖2 SVM 樣本標記
標記完成后利用SVM 學習并顯示結(jié)果,各手勢分割方法分割結(jié)果如圖3所示.通過對比實驗效果,上述前兩種方法都有一定局限性,RGB 空間膚色閾值分割只有在背景單一和光照穩(wěn)定的條件下膚色分割效果較好,有一定的局限性,如圖3(b)所示;HSV 空間膚色建模對光線的魯棒性較強,但分割離散,膚色區(qū)域不連續(xù),無法分割出完整手勢,如圖3(c)所示.利用SVM 學習后對手勢進行分割的效果明顯優(yōu)于基于RGB 和HSV膚色分割的方法,如圖3(d)所示,不僅在手部區(qū)域連續(xù)性較好,對環(huán)境的要求也較低,且該方法魯棒性和靈活性將強,對于膚色區(qū)別較大的實驗者只需重新學習即可得到滿足需求的手勢樣本.
利用訓練好的SVM 模型對2500 張樣本進行批量手勢分割處理,最后將手勢分割后的樣本選取適當?shù)娜珠撝?經(jīng)過全局二值化處理,得到2500 張手勢二值樣本,如圖4所示.
本次實驗采用遷移學習方法將Inception-v3[11]模型結(jié)構(gòu)作為訓練模型的結(jié)構(gòu)基礎(chǔ).Inception-v3 模型由谷歌提出,其網(wǎng)絡思想與其他深度網(wǎng)絡主要有幾點不同,一方面網(wǎng)絡使用更小的卷積核代替尺寸相對較大的卷積核,例如將兩個3×3 的卷積核代替一個5×5 的卷積核.另一方面網(wǎng)絡將n×n例如3×3,7×7 的二維卷積拆分成兩個1×n,n×1 例如3×1,1×3 和7×1,1×7 的二維卷積,這種方式讓網(wǎng)絡參數(shù)量大大減少,在加快運算速度的同時也減少了過擬合的情況,且這種對卷積結(jié)構(gòu)的不對稱拆分使特征空間保留完整,網(wǎng)絡非線性表達的能力也更強.網(wǎng)絡使用Batch Nomalization(BN)算法[12],通過規(guī)范化方法將輸入分配到均值為0 方差為1 的正態(tài)分布,有效解決深層網(wǎng)絡的梯度消失問題,大幅增加訓練效率和收斂后的樣本分類的準確率.
圖3 各方法手勢分割結(jié)果
圖4 二值化處理樣本
將Inception-v3 中Softmax 回歸層一維輸出大小從1000 類定義為所需識別手勢的10 類,保留除Softmax層外所有層的參數(shù),將網(wǎng)絡的底層作為一個特征提取器,只訓練最后一層參數(shù)達到模型能夠識別10 類手勢的目的.模型通過標簽平滑方式進行模型正則化,首先對于輸入的手勢樣本x,使用式(5)計算對應標簽的概率.
其中,k為手勢標簽類別,Zi為尚未歸一化的對數(shù)概率.手勢樣本在對應標簽上在分布為q(k|x),將樣本損失定義為交叉熵損失函數(shù):
最小化交叉熵等價于最大化標簽對數(shù)似然期望,其梯度為:
用q’(k|x)代替標簽分布q(k|x)=δk,y:
其中,δk,y為狄拉克δ函數(shù),(1–ε)與ε分別為實際分布和固定分布的權(quán)重.
Fine-tuning 微調(diào)是訓練深度卷積神經(jīng)網(wǎng)絡的技巧之一,原理是采用模型原有參數(shù)作為網(wǎng)絡的初始化參數(shù),凍結(jié)部分網(wǎng)絡層,降低學習效率,以目標數(shù)據(jù)作為輸入在原有參數(shù)基礎(chǔ)上訓練參數(shù).Fine-tuning 后的網(wǎng)絡模型更易訓練,節(jié)省大量訓練時間,精度會相較直接隨機初始化參數(shù)的網(wǎng)絡有所提高.
完成定義網(wǎng)絡模型后將手勢分割后的二值化樣本導入模型訓練,凍結(jié)網(wǎng)絡175 層參數(shù),調(diào)整網(wǎng)絡超參數(shù)得到不同準確率和交叉熵損失函數(shù)曲線.
本次實驗環(huán)境為Windows 10 操作系統(tǒng),采用GTX1060 顯卡在Tensorflow 深度學習框架下完成實驗.
為增強模型性能,快速達到收斂,讓網(wǎng)絡具有較好的識別效果和節(jié)省適當?shù)挠柧?、識別時間,調(diào)整網(wǎng)絡模型的一系列超參數(shù)作縱向?qū)Ρ葘嶒?訓練集訓練與測試集測試均在GPU 加速環(huán)境下運行.模型采用RMSPro[13]梯度下降算法,設(shè)置衰減值為0.9,ε=1.0.
設(shè)定默認批次大小(batch size)為64,學習效率(learning rate)為0.045,迭代次數(shù)(epoches)為2000,得到迭代次數(shù)與準確率和損失函數(shù)的關(guān)系.由圖5看出,模型在1000 次迭代后基本趨于穩(wěn)定,準確率隨迭代次數(shù)增長的波動較小,損失函數(shù)也基本趨于穩(wěn)定,考慮迭代次數(shù)增加對網(wǎng)絡模型產(chǎn)生過擬合情況的影響,迭代次數(shù)恒定設(shè)置為1000.
圖5 迭代次數(shù)對模型的影響
對比學習效率對模型識別準確率和損失函數(shù)的影響,學習效率對模型訓練起至關(guān)重要的作用,較低的學習效率導致模型收斂速度較慢,訓練時間較長;而較高的學習效率則可能會導致模型不收斂,損失函數(shù)值波動較大.因此設(shè)定4 種分別為0.001,0.015,0.045,0.080 不同的學習效率對模型進行訓練,對比結(jié)果如圖6所示.
從圖6可以看出,圖6(a)中損失函數(shù)和準確率函數(shù)圖像震動劇烈,準確率較低,損失函數(shù)值始終高于0.5,網(wǎng)絡模型收斂情況較差;圖6(b)中圖像震動有些許減少,相較圖6(c)、6(d)波動任較大.圖6(c)、6(d)在迭代初期損失函數(shù)值較大,迭代后期收斂明顯且圖像震動幅度較小,適宜訓練模型,對比圖6(c)、6(d)對訓練集的平均準確率和損失函數(shù)值,選擇圖6(c)學習效率0.045作為最終模型學習效率.
最后探究每次迭代樣本批次大小(batch size)的選擇,不同的批次大小會對網(wǎng)絡模型的準確率和訓練效率產(chǎn)生影響,選擇過小的批次會導致準確率震蕩較大,模型無法收斂;選擇較大的批次會導致內(nèi)存容量不足,參數(shù)更新緩慢,降低運行速度,徒增訓練時間.實驗選擇批次大小為32、64、128 和256 等4 種不同批次大小作對比,得到結(jié)果如表1.
從表1得出,批次大小為32 和64 的模型在訓練時間上與大批次模型相比有一定的優(yōu)勢,準確率與批次大小為128 的模型相比有略微差距,綜合考慮選擇批次大小為128 個樣本導入網(wǎng)絡模型完成訓練.
網(wǎng)絡模型訓練完成后對實時拍攝不同測試者手勢樣本進行預測,選取3 位測試者10 種不同手勢各50 張共1500 張樣本,收集手勢識別預測結(jié)果,如表2所示,可知,本文利用遷移學習訓練卷積神經(jīng)網(wǎng)絡模型對實時獲取的靜態(tài)手勢識別準確率較理想,平均準確率達到96.3%,平均識別時間達到39.2 ms,在識別速度上基本滿足實際應用需求.
將本文方法與傳統(tǒng)的手勢識別方法做對比,驗證本文提出算法模型性能,對比結(jié)果如表3所示.
文獻[2]中方法參數(shù)量大,計算速度慢導致模型識別速度慢效率低.文獻[6]中方法對于手勢區(qū)域在整體圖像所占比例的干擾較大.文獻[7]識別速度快,無法排除手指并攏的手勢干擾,識別準確率較低.文獻[8]中能排除一定噪聲干擾,網(wǎng)絡結(jié)構(gòu)較簡單泛化性能較差.本文方法在識別準確率突出,識別反饋速度較快,內(nèi)因在于采用SVM 進行手勢分割后得到的二值化樣本純凈,特征利于網(wǎng)絡學習,遷移學習方式構(gòu)建的網(wǎng)絡模型層數(shù)深,對特征的學習能力強,善于分類,在模型設(shè)計和參數(shù)訓練的時間上相較傳統(tǒng)卷積神經(jīng)網(wǎng)絡花費少,泛化性能強.
圖6 學習效率對模型的影響
表1 不同批次大小模型訓練結(jié)果
表2 測試結(jié)果
表3 各種手勢識別算法對比
本文方法將支持向量機和遷移學習相結(jié)合,利用SVM 進行手勢分割取得的效果相比其他顏色空間手勢分割方式的效果較好,具有較好的魯棒性和靈活調(diào)整能力;利用遷移學習將已訓練好的卷積神經(jīng)網(wǎng)絡作為基礎(chǔ),訓練全連接層參數(shù),需要的訓練數(shù)據(jù)集較少,大量縮減卷積神經(jīng)網(wǎng)絡構(gòu)建和網(wǎng)絡的訓練時間,取得96.3%的平均識別準確率和39.2 ms 的平均識別反饋時間,基本能滿足實際應用需求.