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