楚康波 牛芳琳



摘要:為了提升基于深度學習的手勢識別算法的精度與效率,文章提出了一種改進的YOLOv4-tiny的手勢識別模型,首先,利用輕量化網絡MobileNet代替YOLOv4-tiny中的三個CSPBlock作為YOLOv4-tiny的主干提取網絡,目的是降低網絡的計算量和參數量。其次在YOLOv4-tiny網絡中引入自注意力機制,更好地獲取豐富的上下文信息,通過結合自注意力機制的方法,彌補模型輕量化帶來的部分精度損失。經過在不同特征提取模型以及注意力機制的作用下的手勢識別測試,MobileNet比CSPBlock模型在YOLOv4-tiny中對手勢識別準確率上相差不大,但MobileNet模型運行時間僅為CSPBlock模型所需時間的三分之二。同時,與未引入注意力機制的準確率相比較,MobileNet模型識別準確率從93%上升到96%。由此表明,文章提出的基于注意力機制和MobileNet手勢識別模型比普通手勢識別模型識別效果更佳。
關鍵詞:深度學習;手勢識別;YOLOv4-tiny;輕量級;注意力機制
中圖分類號:TP391 ? ? ?文獻標識碼:A
文章編號:1009-3044(2022)29-0004-03
手勢作為一種無聲的交流工具,成為生活中溝通交流的重要方式。特別在一些特殊的場合(比如聽力障礙者間的交流、真空的條件下等),更能體現手勢的便捷性和重要性。隨著科技的發展,人機交互成了人們生活中的一部分,人控制機器,使機器按照人的意志去工作,此時手勢作為一種無聲的交流工具被廣泛地應用于各種人機交互中,包括航空航天、智能家居、安全駕駛等領域。
目前手勢識別算法主要有三種,分別是基于硬件設備、基于機器視覺和基于深度學習的方法。首先,基于硬件設備的方法,比較成熟且應用廣泛,具有識別精度高、識別速度快等特點,比如可穿戴數據手套[1]、Kinect[2]和Leap motion[3]等方式,但其設備昂貴、人機交互不順暢。其次,基于機器視覺[4]的方法雖然降低了手勢識別算法對于硬件的依賴,但其網絡模型復雜化,降低了手勢識別速度。
近年來,深度學習在目標檢測[5]、圖像分類等領域得到了巨大的發展。如YOLO[6]、SSD[7]、R-CNN[8]和Faster R-CNN[9]等算法在目標檢測和分類問題中取得了較高的準確率。謝淋東等人[10]提出了一種多尺度卷積特征融合的SSD手勢識別方法,引入了不同卷積層的特征融合思想,經過空洞卷積下采樣操作與反卷積上采樣操作,實現網絡結構中的淺層視覺卷積層與深層語義卷積層的融合,代替原有的卷積層用于手勢識別,以提高模型對中小目標手勢的識別精度;張雷樂等人[11]為了提高手勢識別的準確性、魯棒性以及收斂速度,提出一種基于改進殘差網絡和動態調整學習率的手勢識別方法研究;袁帥等人[12]提出基于改進YOLOv3網絡與貝葉斯分類器相結合的手勢識別深度學習模型,雖然解決了數據易受影響問題并且增強了網絡不變性,但是該方法使用的手勢數據集較為簡單且背景較為單一;郭紫嫣等人[13]針對使用YOLOv4算法識別手勢的誤檢和漏檢較多及手勢數據較少的問題,提出了一種基于改進YOLOv4的手勢交互算法,該方法能識別復雜場景下的手勢,并且能夠滿足實時要求。基于深度學習的手勢識別方法雖然能夠取得較高的識別精度,但隨著網絡層數的不斷加深,給神經網絡模型在嵌入式設備上存儲的硬件成本、計算量和訓練運行的難度上帶來了巨大挑戰。因此,本文提出一種具有輕量級卷積神經網絡的手勢識別方法,在保持高精度的同時,降低模型大小,使模型更利于在資源有限的移動端或嵌入式設備上部署。
1 Yolov4-tiny網絡結構
YOLOv4-tiny的主干網絡為CSPdarknet53-tiny,檢測模型的主要結構如圖1所示。
在YOLOV4-tiny中,對(104,104,64)的特征圖進行上采樣并與(52,52,128)特征圖融合,得到感受野較大的檢測路徑,然后結合最小感受野的檢測路徑由骨干網直接輸出,檢測路徑協同完成檢測任務,保證多尺度感知。雖然,現有的基于 Yolov4-tiny 網絡在狹小空間中取得良好的檢測性能,但也存在以下不足:(1)骨干網絡過于輕量化,特征圖在逐層傳遞過程中輪廓演化不足,無法在訓練過程中有效地學習更多的遮擋目標特征。(2)頸部傳統特征融合網絡(Feature Pyramid Network,FPN)過于簡單,不同尺度特征圖間融合效率低下,易丟失邊緣細節信息。(3)傳統IoU-NMS 算法在后處理階段具有局限性,易將重疊預測框誤刪,導致漏檢。針對以上問題,提出基于MobileNet[14]和注意力機制的YOLOv4-tiny手勢識別模型。
2改進的YOLOv4-tiny手勢識別模型
2.1 YOLOv4-tiny結合注意力機制
本文參考CBAM[15]設計了注意力模塊,并將該模塊添加到骨干網絡中,使檢測模型更加關注手勢區域。通道注意力和空間注意力可以表示為:
[F,=Mc(F)?F] ? ? ? ? ? ? ? ? ? ? ? ? ? (1)
[F,,=Ms(F,)?F,] ? ? ? ? ? ? ? ? ? ? ? ? ? (2)
其中[?]表示逐元素乘法。[F]表示輸入特征圖,[F,]表示細化后的特征圖,[F,,]表示最終細化后的輸出。
通道注意力如圖2(a)所示,利用了特征圖的通道間關系。每個卷積核都可以看作是一個特征檢測器,因此每個通道產生的特征圖可以代表一種對象特征,通道注意力的目的是集中在所有通道中最有意義的部分。首先,擠壓特征圖的維度,它會分別經過最大池化層和平均池化層,然后輸出兩個特征描述符,最大池化層是強調對象的重要特征,平均池化層是有效地計算對象的范圍。其次,兩個特征描述符都被轉發到一個共享網絡,共享網絡由級聯層組成:一個輸入層、一個輸出層和三個隱藏層。當兩個描述符通過共享網絡時,使用逐元素求和來合并輸出特征向量。最后,通過sigmoid函數激活特征向量,得到通道注意力圖。
空間注意力如圖2(b)所示,使用空間特征關系來生成空間注意力圖。當圖像進入卷積神經網絡時,圖像中的每個像素都會參與計算。與通道注意力類似,空間注意力集中在圖像中對物體貢獻最大的區域。首先,通道注意力圖和特征圖計算出的細化特征圖將分別通過最大池化層和平均池化層,得到兩個特征描述子。其次,將兩個特征描述符連接起來,然后應用兩個卷積層來強調描述符的區域。最后通過sigmoid函數激活向量,得到通道注意力圖。經過通道注意模塊和空間注意力模塊后,對特征圖的權重進行優化,最終的特征圖會有更多的手勢特征信息。假設平均池化和最大池化過程分別為[Favg]和[Fmax]。[Attavg]可以很好地過濾掉物體的全局背景信息,[Attmax]可以很好地突出手勢的顯著特征。設[X=x1,x2,...,xn],其中[xn]表示第n個卷積核的權重。[Attavg]和[Attmax]的公式如下:
[Attavg=1H×Wi=1Hj=1Wxn(i,j)=Favg(xn)] ? ? ? ? ? ?(3)
[Attmax=agrmax(i=1Hj=1Wxn(i,j))=Fmax(xn)] ? ? ? ? ?(4)
共享網絡后,通道注意力的輸出可以表示為:
[outputavg=relu(FC×Attavg)] ? ? ? ? ? ? ? ? ? (5)
[outputmax=relu(FC×Attmax)] ? ? ? ? ? ? ? ? ? (6)
[outputchannel=σ(outputavg×outputmax)] ? ? ?(7)
矩陣乘法得到的加權特征,濾波后的通道特征為[W=ω1,ω2,...,ωn],可以表示為:
[W=(xn,outputchannel)=xn×outputchannel] ? ? ?(8)
在通道特征過濾之后,需要將[W]輸入空間注意力模塊中。首先,特征向量分別通過平均池化層和最大池化層,然后沿著通道維度,將特征連接起來得到[Cconv∈R1×1×2C]。為了得到特征權重信息,需要進行卷積操作,讓[F5×5]表示輸入通道為2,輸出通道為1,核大小為5×5的卷積操作。最終過濾后的權重可以表示為:
[outputcbsp=F5×5(Cconv)×W] ? ? ? ? ? ? ?(9)
整個注意力模塊的輸出是輸出[outputcbsp+X],重新計算原始輸入向量不同部分的比例,通過這種結構,模型可以選擇性地增強包含手勢的特征,抑制不相關或弱特征。本章提出的模型如下圖所示:
2.2 YOLOv4-tiny結合MobileNet
YOLOv4-tiny方法使用CSPBlock模塊作為殘差模塊,提高了準確性,但也增加了網絡復雜性,降低了對象檢測的速度。為了加速手勢識別檢測速度,使用Mobilenet模塊代替YOLOv4-tiny中的三個CSPBlock模塊。本文以Mobilenet-V1作為主干提取網絡,Mobilenet-V1模型核心思想便是深度可分離卷積塊(Depthwise Separable Convolution)。常規卷積核是同時對三個通道做卷積得到一個數,深度可分離卷積先用三個卷積對三個通道進行卷積后,得到三個數,再通過一個1×1×3的卷積核(pointwise),得到最終的一個數。當提取的特征屬性越來越多時,深度可分離卷積就能節省更多的參數,本節提出模型如圖4所示:
3實驗
3.1自制數據集
本文共采集了15種類型的手勢圖片約10000張,15種類型為分別為從1到10和比心、OK、贊、踩、打電話,其中訓練集8000張、驗證集1000張、測試集1000張。采用Anoconda中的Lambimg用拉框的方式進行人工標注如圖5所示,得到的標注信息存儲成xml格式的文件。
3.2實驗設置
本文所有的實驗都在Linux系統下訓練采用PyTorch框架,訓練設置每次迭代訓練樣本數為64分16個批次。在自制的手勢數據集上對應的迭代次數,與損失函數的關系。模型在迭代10000次左右達到了收斂,損失值在0.1左右。mAP(平均精度的)、FPS(每秒幀數)和GPU利用率用于定量評估不同方法的性能。mAP是檢測所有類別的平均精度的平均值。FPS表示一秒內可以成功檢測到的圖像數量。GPU利用率表示在測試不同檢測方法時使用的GPU內存。對于評估,引入了精度(Pr)、召回率(Re)和F1分數,它們被廣泛用于分類和檢測視覺任務。定義如下:
[Pr=TPTP+FP] ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? (1)
[Re=TPTP+FN] ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?(2)
[F1=2×Pr×RePr+Re] ? ? ? ? ? ? ? ? ? ? ? ? ? (3)
其中TP、FP、FN分別代表被模型預測為正類的正樣本、被模型預測為正類的負樣本和被模型預測為負類的正樣本。
3.3實驗分析
為了比較不同模塊對檢測結果的影響,只改變了YOLOv4-tiny主干提取網絡,數據集上獲取檢測結果如表1所示。
在YOLOv4-tiny上進行測試。結果表明,使用Mobilenet-V1的Yolov4-tiny提高了算法運行時間。雖然Mobilenet-V1算法在準確度上有所降低,但降低僅為1%~2%。在算法訓練時間損耗上,提高了三分之一,改進效果明顯。兩種結構的YOLOv4-tiny算法損失函數圖像如圖6所示:
類似,為了比較注意力機制對檢測結果的影響,使用YOLOv4-tiny+CSPBlock、Yolov4-tiny+ Mobilenet-V1和注意力模塊作為對比模型,結果見表2。
從表2可以看出,加入注意力機制后的方法取得了更好的性能。以MobileNet為基礎模型,在算法準確率、召回率、F1和平均精度比原始模型分別提高了1%、6%、3%和2%。文中改進的注意力模塊召回率方面具有優勢,意味著筆者的模型更關注手勢細節區域。在推理時適當降低了置信度閾值(0.35),以確保可以檢測到更多的手指區域邊界,避免因疏忽而造成的不必要的損失。引入注意力機制后部分實驗效果如圖7所示:
4結論
針對基于深度學習的手勢識別模型參數量大、訓練速度緩慢且對設備要求高、增加了成本的問題,本文提出了一種基于輕量級卷積神經網絡的手勢識別檢測算法YOLOv4-tiny。結合手勢識別困境,本文的結論如下:
1)在YOLOv4-tiny的主干網絡中引入改進的注意力模塊,優化了通道注意力和空間注意力,用加權特征向量代替原始特征向量進行殘差融合,即增強特征表達并減少其他背景噪聲的影響;
2)為了減少物體檢測的耗時,使用三個相同的MobileNet模塊替換YOLOv4-tiny網絡中的三個CSPBlock模塊,以簡化網絡結構。
參考文獻:
[1] 呂蕾,張金玲,朱英杰,等.一種基于數據手套的靜態手勢識別方法[J].計算機輔助設計與圖形學學報,2015,27(12):2410-2418.
[2] 王松林.基于Kinect的手勢識別與機器人控制技術研究[D].北京:北京交通大學,2014.
[3] 胡弘,晁建剛,楊進,等.Leap Motion關鍵點模型手姿態估計方法[J].計算機輔助設計與圖形學學報,2015,27(7):1211-1216.
[4] 徐勝,馮文宇,劉志誠,等.基于機器視覺的復雜環境下精確手勢識別算法研究[J].系統仿真學報,2021,33(10):2460-2469.
[5] 謝富,朱定局.深度學習目標檢測方法綜述[J].計算機系統應用,2022,31(2):1-12.
[6] REDMON J, DIVVALA S, GIRSHICK R, et al. You only look once: Unified, real-time object detection[C]//IEEE. CVPR2016 Conference on Computer Vision and Pattern Recognition. Washington DC: IEEE Computer Society Press, 2016: 779-788.
[7] LIU W, ANGUELOV D, ERHAN D, et al. SSD:singleshotmultibox detector[C]//Proceedings of the European conference on computer vision. Berlin, Heidelberg: Springer, 2016: 21-37.
[8] Girshick R,Donahue J,Darrell T,et al.Region-based convolutional networks for accurate object detection and segmentation[C]//IEEE Transactions on Pattern Analysis and Machine Intelligence.IEEE,2016:142-158.
[9] Ren S,He K,Girshick R,et al.Faster R-CNN:towards real-time object detection with region proposal networks[J].IEEE Transactions on Pattern Analysis and Machine Intelligence,2017,39(6):1137-1149.
[10] 謝淋東,仲志丹,喬棟豪,等.多尺度卷積特征融合的SSD手勢識別算法[J].計算機技術與發展,2021,31(3):100-105.
[11] 張雷樂,田軍委,劉雪松,等.一種改進的殘差網絡手勢識別方法[J].西安工業大學學報,2021,41(2):206-212.
[12] 袁帥,韓曼菲,張莉莉,等.基于改進YOLOV3與貝葉斯分類器的手勢識別方法研究[J].小型微型計算機系統,2021,42(7):1464-1469.
[13] 郭紫嫣,韓慧妍,何黎剛,等.基于改進的YOLOV4的手勢識別算法及其應用[J].中北大學學報(自然科學版),2021,42(3):223-231.
[14] Howard A G,Zhu M L,Chen B,et al.MobileNets:efficient convolutional neural networks for mobile vision applications[EB/OL].2017:arXiv:1704.04861.https://arxiv.org/abs/1704.04861
[15] Woo S,Park J,Lee J Y,et al.CBAM:convolutional block attention module[EB/OL].2018:arXiv:1807.06521.https://arxiv.org/abs/1807.06521
【通聯編輯:唐一東】