基于深度學習的手勢識別算法設計
引 言
人機交互 [1] 即 HCI,是指人們通過相應方式與機器溝通,獲取機器反饋信息的過程。
深度學習相比傳統(tǒng)的機器學習算法往往在圖像處理方面能獲得更好的效果。其中常用的算法如 Faster R-CNN[2], YOLO[3],SSD[4] 等均有其獨特魅力,在目標檢測領域具有舉足輕重的作用。
本文基于深度學習理論,采用卷積神經(jīng)網(wǎng)絡中的輕量級分類網(wǎng)絡 MobileNet 和目標檢測網(wǎng)絡 SSD 相結合 ;基于輸入圖片的尺寸不同對模型的影響、帶孔卷積的引入,對改進后的 SSD 算法進行微調(diào)。為了進一步提升識別速度,使用Deepwise 卷積以進一步降低網(wǎng)絡參數(shù)和計算量。
1 卷積計算
對于輸入的圖片,CNN[5] 無法準確獲悉這些特征與原圖哪些部分相匹配,因此需要用不同尺寸的過濾器提取圖像特征。計算過程被稱為卷積操作,卷積過程如圖 1 所示。過濾器和圖像中左上角的 3×3 像素塊卷積后的值為特征圖中的第一個值 4。
計算特征圖中像素點和原圖的映射結果。實際計算過程是將過濾器和原圖對應尺寸匹配,相同位置的值相乘,再將所有的乘積結果相加。
2 手勢識別算法模型設計
2.1 算法主干網(wǎng)絡
本文網(wǎng)絡模型是將 MobileNet和 SSD網(wǎng)絡相結合,然后對網(wǎng)絡進行微調(diào)。其中 MobileNet使用了 MobileNet-v1網(wǎng)絡。截取 MobileNet-v1 網(wǎng)絡前 12 層卷積層作為網(wǎng)絡的基礎特征提取層,再加上6層輔助特征提取網(wǎng)絡,組成算法的主干網(wǎng)絡。標簽邊框和默認框之間存在偏移值,因此將偏移值作為網(wǎng)絡學習的內(nèi)容。結合分類誤差,計算端對端損失函數(shù),進行反向傳播的計算和更新。
2.2 模型微調(diào)
(1) 將輔助特征提取網(wǎng)絡中的 3×3標準卷積使用 Deep- wise卷積進行替換,進一步減少網(wǎng)絡參數(shù)和計算量。
(2) 本文卷積均使用 Atrous卷積(帶孔卷積),在減少padding 帶來的噪聲的同時,也能減少冗余特征的提取。
(3) 對部分輔助特征提取卷積網(wǎng)絡卷積步長或者特征維度進行調(diào)整,使輔助特征網(wǎng)絡的尺寸在不斷減小的同時,維度數(shù)量也隨之減小,減少冗余特征對訓練和識別結果的影響。
3 手勢識別算法設計
3.1 算法流程
算法流程如圖 2 所示。首先準備好收集的且已人工標記的訓練集圖片,然后經(jīng)圖中所示的圖片預處理過程,將訓練集送入上文設計的 MobileNet-SSD 網(wǎng)絡進行迭代學習訓練, 直至模型訓練完成。重復上述步驟,多次實驗,獲得模型。最終選擇在驗證集上表現(xiàn)效果最好的模型,在測試集上進行測試,得到相關數(shù)據(jù),作為本文最終的數(shù)據(jù),分析本文設計的算法模型的優(yōu)劣。
3.2 手勢數(shù)據(jù)集
本文共采集了 15 種手勢的數(shù)據(jù)圖片。平均每種約為2 300 張。數(shù)據(jù)集的組成包含石頭,布,ok,比心等。從每種手勢中抽出 300 張加入驗證集,抽取 100 張加入測試集。最終,訓練集中有 32 327 張圖片,驗證集中有 4 500 張圖片,測試集中有 1 500 張圖片,數(shù)據(jù)集共有 38 327 張圖片。數(shù)據(jù)集中部分圖片如圖 3 所示。
3.3 圖片標注
數(shù)據(jù)集采用 LabelImg 標定工具進行人工標記得到真實標簽和類別信息。圖 4 和圖 5 所示分別為在標注工具中、標注圖片和標注完成將目標信息進行存儲的 xml 文件信息展示。
3.4 算法環(huán)境
本文的硬件環(huán)境見表 1 所列。對于神經(jīng)網(wǎng)絡 [6] 訓練而言, 顯卡的計算能力和 CPU 的性能至關重要,性能優(yōu)良的顯卡與 CPU 可以大幅縮減訓練時間與算法的運行時間。
3.5 實驗與分析
3.5.1 實驗步驟
(1)本文手勢數(shù)據(jù)集中有 15 個類別,因此先將網(wǎng)絡文件、網(wǎng)絡訓練和測試文件,以及類別定義文件中的相關描述修改為 15 個類別。
(2)將準備好的圖片和對應包含了標注信息的 xml 文件制作成 caffe 框架常使用的 lmdb 格式數(shù)據(jù)集。
(3)把 caffe 框架下的模型文件和訓練文本映射在訓練文本設置好的參數(shù)中。
(4)觀察終端輸出迭代過程中 loss 值的變化,驗證集上輸出的測試準確率,并保存日志文件,方便后期對訓練模型進行分析。
(5)迭代訓練完成后找到生成的模型。若模型在測試集上表現(xiàn)較好,則在測試集上測試 ;否則,修改參數(shù)文件中的相關參數(shù)微調(diào)模型后繼續(xù)訓練。
3.5.2 實驗結果分析
算法中訓練模型包括如下種類 :
(1)SSD 經(jīng)典算法網(wǎng)絡,基礎網(wǎng)絡使用 VGG-16,圖片的輸入尺寸為 300×300,記為 SSD-300 ;
(2)本文改進的算法輸入尺寸為 416×416 和 600×600,分別記為 MN-SSD-416 和 MN-SSD-600 ;
(3)輔助特征層卷積使用標準卷積,圖片的輸入尺寸為416×416,模型記為 MNS-SSD-416。模型訓練信息見表 2 所列。通過對比可知,本文改進后的算法模型在參數(shù)量和計算量方面都大幅減少。
將上述模型進行多方比較可得 :
(1)通過對比可以發(fā)現(xiàn)改進后的三種網(wǎng)絡在手勢識別精度方面與 SSD-300 相比未降低,但在識別速度方面卻有很大提高,其中 MN-SSD-416 和 MNS-SSD-416 可以實現(xiàn)實時手勢識別。
(2)MNS-SSD-416 網(wǎng)絡減少了參數(shù)和計算量,使得每秒能夠識別的圖片數(shù)提高至 43.5 幀,mAP 僅降低 0.3 個百分點。由此可得,使用 Deepwise 卷積替換輔助特征層的標準卷積是成功的,識別速度實現(xiàn)了大幅提高,付出的識別準確率代價較小。
(3)MN-SSD-600 和 MN-SSD-416 具有相同的網(wǎng)絡結構,增大了輸入圖片的尺寸。雖然在識別精度方面表現(xiàn)出了略微優(yōu)勢,能夠使得較難識別的幾類手勢有較好的識別精度,但是大大降低了網(wǎng)絡識別速度,使得識別速度僅為 22.6 幀 /s。說明增大圖片輸入尺寸確實能夠使特征更豐富,識別率也有所提高,但卻大大降低了識別速度。
3.6 手勢識別效果展示
本文展示了識別精度和速度都較好的模型 MN-SSD-41的測試效果圖,如圖 6 所示。左圖中預測“我愛你”手勢類別的置信度為 0.895 3 ;右圖中預測類別是“數(shù)字 7”的置信度為 0.921 1。本文主要考量手勢識別的精度,所以對邊框位置并未考察。但從實際效果可以看出,算法的位置回歸效果也很好。
4 結 語
本文設計的算法能夠滿足多種嵌入式平臺的使用需求,在保證較好的手勢識別精度的前提下,識別速度也有著很大優(yōu)勢,為實時手勢識別提供了一種可行的算法。