姬曉飛,張 旭,李俊鵬
(沈陽航空航天大學 自動化學院,沈陽 110136)
動態(tài)手勢是由一系列連續(xù)手勢動作組成用以表達信息的一種身體姿態(tài)[1],其在人機交互、自動駕駛、智能教學儀器等實際場景中都有著廣泛的應用前景,因此基于視覺的動態(tài)手勢識別逐漸成為機器視覺領域的研究熱點[2]。因其所表達的信息豐富,識別難度大,動態(tài)手勢識別仍存在很多難點,其關鍵技術仍有很大的研究空間[3]。
現階段的動態(tài)手勢識別主要由手勢檢測、手勢跟蹤、動態(tài)手勢建模與識別3個關鍵技術組成[4]。手勢檢測是對手勢目標區(qū)域進行定位與分割的技術,現階段的手勢檢測技術多采用二維平面特征、運動信息以及深度學習網絡3種方式。Hu[5]等人在YCbCr空間中通過預定義膚色閾值進行手勢檢測,并通過Adaboost分類器排除類膚色區(qū)域干擾。文獻[6]中提出一種組合濾波配合自適應閾值canny算子邊緣檢測的方法提取手勢邊緣特征來達到手勢檢測的目的。 這類利用二維平面特征進行手勢檢測的方法容易受到相似特征的影響,抗干擾性差。文獻[7]中利用光流法(Optical Flow)對帶有特定顏色手套的手勢進行檢測進而實現手語識別。該方法可以檢測理想狀態(tài)下獨立運動的手勢,但運算量大、實時性差。而幀間差分法、背景差分法等基于運動信息的方法也分別存在對手勢運動速度依賴性大或要求背景不變的缺點。隨著深度學習網絡的發(fā)展,深度學習網絡在手勢檢測方面的應用取得良好的效果。文獻[8]利用YOLO深度學習網絡實現實時手勢檢測功能,進而建立一套基于視覺手勢識別的教學互動演示系統(tǒng)。文獻[9]提出一種通過集成均值漂移跟蹤器改進Mask R-CNN的手勢檢測,算法有著更好的分割精度及更高的魯棒性?;谏疃葘W習網絡的手勢檢測算法精度高、實時性好、適用性強。
手勢跟蹤技術本質上是通過對連續(xù)幀的圖像進行分析,在兩幀之間快速計算出跟蹤目標,這是動態(tài)手勢識別最重要的環(huán)節(jié)。均值漂移(Meanshift)算法[10]是典型基于區(qū)域分析的跟蹤算法,通過核函數計算偏移進行跟蹤。Meanshift算法結構簡單,運行速度快,實時性好,但目標大小發(fā)生變化時會發(fā)生跟蹤漂移。連續(xù)自適應均值漂移(Camshift)算法[11]是Meanshift算法的改進,是通過連續(xù)幀迭代Meanshift算法進行跟蹤,可在目標大小發(fā)生變化時,自適應調整跟蹤窗口大小,但跟蹤窗口在背景復雜時會發(fā)散,從而導致跟蹤失敗。文獻[12]提出了一種多模型卡爾曼(Kalman)濾波的改進型手勢跟蹤算法,其利用多模型描述運動狀態(tài),最終組合濾波器修正后的狀態(tài)估計值得到最優(yōu)狀態(tài)估計。這類稀疏表示結合濾波器的跟蹤方式計算速度快、解釋性好,但因其細節(jié)特征缺失導致容易出現目標誤匹配?;趥鹘y(tǒng)方式跟蹤方法都存在復雜環(huán)境下跟蹤精度差的問題,將深度學習引進跟蹤框架成為當前的熱點方式[13],但目前在手勢識別中的應用還未見報道。
動態(tài)手勢建模與識別是利用機器語言實現手勢語義理解,是手勢識別的最終目的。余超等[14]利用haar特征實現手勢分割,TLD算法獲取手勢軌跡,最后使用改進的DTW算法識別手勢取得不錯的識別效果。Naguri等[15]提出了一種基于長短期記憶(LSTM)和卷積網絡(CNN)的動態(tài)手勢識別算法對6種手勢進行識別評估,取得97%的識別率。該方法對每幀數據采用CNN來提取手勢深層特征,再采用LSTM進行動態(tài)手勢的時序建模與識別,計算量大,很難達到實時處理復雜環(huán)境的要求。
復雜環(huán)境下的動態(tài)手勢識別對于手勢檢測、跟蹤、建模與識別技術均提出了較高的要求。深度學習網絡的引入,為復雜環(huán)境的手勢檢測和識別提供了解決方案,但此項研究仍處于起步階段。目前綜合考慮動態(tài)手勢多樣性、多義性以及遮擋問題,提出了一種基于深度學習網絡的手勢檢測、跟蹤和識別框架,即基于多域卷積神經網絡(MDnet)跟蹤框架下的動態(tài)手勢識別算法。該算法采用改進的MDnet網絡作為檢測跟蹤框架,為了增強MDnet網絡在手勢跟蹤環(huán)節(jié)的適用性,根據動態(tài)手勢特點改進網絡,減少fc6網絡分支,構建單個全域通用fc6層網絡。利用跟蹤框架獲得手勢坐標建立手勢軌跡模型,最后通過VGG-19網絡實現手勢識別,并在自建的動態(tài)手勢庫進行驗證,取得良好的識別效果。系統(tǒng)結構如圖1所示。
圖1 系統(tǒng)框圖
MDnet網絡是由小型卷積神經網絡實現視覺目標跟蹤的跟蹤框架,其原理是通過區(qū)分目標與背景實現跟蹤。網絡采用3個卷積層(conv1~conv3)、兩個全連接層(fc4~fc5)的五層隱含層結構,其中卷積層對應VGG-M部分網絡,兩個全連接層的每一分支包含softmax二值分類,用來區(qū)分目標和背景。最后的全連接層fc6擁有K個分支,每個分支特定于某個跟蹤域。
完整的MDnet網絡分為離線學習和在線跟蹤兩個模塊,離線學習訓練模型的初始參數,在線跟蹤過程實時更新網絡參數。
離線學習過程是通過VGG-M模型對數據訓練得到網絡中的conv1~conv3層參數及fc4、fc5層初始參數的過程。其訓練過程如下:
(1)讀取所有序列要訓練的圖片和跟蹤區(qū)域信息;
(2)確定分支數K,生成樣本生成器;
(3)初始化模型,定義損失函數以及優(yōu)化器;
(4)訓練過程:打亂訓練序列的順序,按新順序對序列進行訓練。每個分支訓練也先打亂圖片序列,樣本生成器每隔8幀周期性地在跟蹤區(qū)域周圍隨機生成32個正樣本和96個負樣本,將正樣本和負樣本送入模型得到損失函數,然后進行反向傳播來更新每一層的參數。
在線跟蹤與離線學習框架不同,其保留離線學習的conv1~conv3和fc4~fc5的訓練參數,根據跟蹤對象選擇 fc6層重置參數,并以離線學習網絡的conv3的輸出建立邊框回歸層。具體跟蹤流程如下。
1.3.1 啟動跟蹤
重置網絡fc6層和fc_bbox層參數完成網絡初始化,并在跟蹤首幀上標注跟蹤區(qū)域,確認跟蹤目標。
1.3.2 啟動跟蹤
由于跟蹤環(huán)節(jié)采用正樣本增強策略導致預測框無法緊密包圍真實跟蹤區(qū)域,所以需要采用邊界回歸模型調整預測區(qū)域。
邊框回歸并非用于得到目標邊框的實際數值,而是利用參數計算來調整跟蹤網絡得到的目標邊框,使其更接近真實的目標邊框。MDnet網絡通過對網絡中最后1個卷積層的輸出特征值進行線性回歸計算fc_bbox參數。
1.3.3 首幀訓練
根據1.3.1中的真實跟蹤區(qū)域的位置,利用隨機高斯分布建立的500例正樣本及均勻隨機建立的5000例負樣本完成fc4~fc6層參數更新。
1.3.4 實時跟蹤
以隨機高斯分布方式在上一幀跟蹤區(qū)域周圍生成255個候選區(qū)域并計算相似度,通過最大相似度給出最佳跟蹤區(qū)域。
在線更新采用長周期更新和短期更新兩種策略更新fc4~fc6參數。長周期利用最近100幀收集到的正樣本數據,每10幀周期性更新一次;而短周期更新則是在跟蹤失效時利用最近20幀收集到的正樣本數據進行更新。
原始MDnet網絡用于輸出的全連接層fc6為每個跟蹤序列所獨有,K個訓練視頻對應K個fc6,跟蹤時根據跟蹤序列再啟用對應的fc6層。這種方式針對多類別跟蹤十分有效,但手勢跟蹤可以看作同類別的跟蹤,每個手勢序列的特征具有通用性,所以本文簡化fc6結構,將fc6還原成1×1×1×2結構,設置成統(tǒng)一的全連接層,建立全域通用fc6層。全域通用fc6由所有視頻序列通用,簡化其原始網絡中每個序列分別訓練后再分別啟用的步驟,可以更好地學習每個跟蹤序列的通用特征。其改進的網絡模型如圖2所示。
圖2 網絡結構圖
動態(tài)手勢蘊含豐富信息的同時,也為手勢建模帶來了難度,采用傳統(tǒng)的特征提取方式會導致特征維數大,信息冗余嚴重。針對這一問題,本文利用手勢中心坐標建立動態(tài)手勢模型,并將其可視化成軌跡特征圖譜,可以極大地減少數據維數,更加方便機器學習、理解。
特征圖譜的構建過程:先建立與手勢集同等大小的640*480規(guī)格的空白圖像,然后將手勢位置點按照跟蹤框架獲得的手勢區(qū)域中心坐標映射到特征圖譜中,并將映射點周圍4*4范圍內的像素點進行渲染,將多幀手勢映射點連接成手勢軌跡線。這樣既能體現手勢運行軌跡,又可以降低部分遺漏跟蹤手勢點的影響。為了適應后續(xù)網絡的識別,再利用雙三次插值法,以矩形網格中4*4像素鄰域加權平均的原理將圖片縮放到224*224規(guī)格,其最終的手勢軌跡特征圖譜如圖3所示。
圖3 手勢軌跡特征圖譜樣例
VGG-19網絡[16]是2014年由Oxford Visual Geometry Group提出的小卷積核深度學習網絡,該網絡采用多層非線性堆積的小卷積核,增加網絡深度的同時減少網絡參數。因其網絡更深、特征圖更寬,以及網絡測試階段重用訓練時的參數,使測試得到的全卷積網絡沒有全連接的限制等優(yōu)點,在圖像分類領域有著良好的識別效果。所以本文采用VGG-19作為最終的動態(tài)手勢識別網絡。
本文共用到兩組數據庫對手勢跟蹤識別進行測試。其中自制數據集采用OTB數據集數據結構,每組數據包括手勢圖像數據和手勢區(qū)域坐標信息。為了保證數據集的多樣性,數據集由8人手持握拳姿勢分別在不同的背景、不同的光照下執(zhí)行手勢橫向移動、縱向移動、圓形軌跡移動、三角形軌跡移動采集視頻制作而成,數據集例圖如圖4所示。數據庫分辨率為640*480,并手動標注跟蹤區(qū)域,主要用來測試系統(tǒng)的跟蹤效果。第二組數據庫來源于國際公開標準手勢庫Chalearn gesture data(CGD),CGD數據集例圖如圖5所示。CGD手勢庫是ChaLearn Gesture Challenge挑戰(zhàn)賽中提供的手勢數據庫,數據庫提供手部以及手臂的RGB-D動作序列,本文從CGD數據庫中挑選5類手臂式RGB動態(tài)手勢進行識別,主要用來測試動態(tài)手勢識別效果。
圖4 自制數據集例圖
圖5 CGD數據集例圖
測試目的是為了驗證跟蹤網絡的跟蹤效果和跟蹤速度,所以測試階段通過跟蹤重疊分數(meanIOU)和跟蹤速度兩項用來判定跟蹤效果。其中meanIOU是跟蹤預測區(qū)域與目標真實區(qū)域的比值。
(1)
跟蹤框架在表1所示的測試環(huán)境下對自建手勢庫進行測試,整個測試的數據量為80組。通過訓練好的MDnet網絡對手勢庫進行跟蹤測試,通過測試可得:平均meanIOU分數可達80%,平均跟蹤速度為0.3 s/幀,其跟蹤效果如圖 6所示。圖6中淺色框表示手勢真實區(qū)域,深色框為跟蹤預測區(qū)域。
表1 系統(tǒng)測試環(huán)境
圖6 跟蹤效果圖
通過實際測試,文中所采用的跟蹤框架跟蹤效果良好,可以滿足動態(tài)手勢識別的要求。
為了測試動態(tài)手勢識別最終效果,將兩組數據庫的手勢模型分別輸入到VGG-19網絡進行訓練識別。其中自建手勢庫10組作為訓練數據,10組作為測試數據。自建手勢庫得到的識別結果如圖7所示。CGD手勢庫14組作為訓練數據,6組作為測試數據,其識別結果如圖8所示。
自建的手勢庫因數據集量級小,特征圖譜簡潔明了,所以識別模型收斂較快,模型經過80次迭代就已經收斂,識別率趨近穩(wěn)定,最終的識別率為97.5%。CGD數據庫手勢較為復雜,模型最終的識別率為93.33%。
圖7 自建手勢庫識別結果圖
圖8 CGD數據庫識別結果圖
本文實驗結果與其他方法在SGD數據庫進行實驗的結果對比如表2所示。
表2 實驗結果對比
如表2所示,表中所提及的前兩種方案來自于ChaLearn競賽結果分析報告[18]中第二輪競賽的前兩名。兩種方案都采用傳統(tǒng)方法與深度學習相結合的策略對手勢進行RGB視頻和深度視頻綜合分析再識別,其識別的準確率不高。文獻[17]采用骨架3D模型對深度視頻建立手勢全局軌跡模型,再利用SIFT特征完成RGB視頻的局部特征建模。綜合考慮全局特征與局部特征完成手勢識別,模型的識別效果良好,但該模型結構復雜,需要利用深度視頻建立時序關系,手勢特征模型構建繁瑣。
本文針對現階段動態(tài)手勢識別算法存在的問題,提出基于多域卷積神經網絡跟蹤框架下的動態(tài)手勢識別算法。該算法采用多域卷積神經網絡學習跟蹤目標共性,能更好地給出跟蹤目標模型,且利用淺層卷積神經網絡能更強化空間信息,從而提高動態(tài)手勢跟蹤和識別效果。經過兩組數據庫的測試結果表明該算法對動態(tài)手勢識別有著較高的準確率。