陳小順 錢鑫雨













摘要:增強人機交互形式,對機器人控制具有重要意義。然而,目前控制方式多集中于遙控控制方式,與人的互動性不足。研究提出基于手勢識別的YOLOv5l算法提升機器人控制的交互性能。首先,精簡HaGRID手勢數據集至8類,因手勢在圖像中屬于小目標,采用帶有CBAM注意力機制的YOLOv5l模型進行訓練;其次,通過QT平臺搭建控制系統,部署手勢識別模型。對機器人進行Mesh組網,以廣播機制傳輸控制指令。實驗結果表明,該模型在HaGRID數據集上平均準確度達到98%,自建數據集平均準確度達到95%,檢測速度34FPS,模型大小88.5MB,機器人可建立Mesh網絡,通過手勢識別控制機器人運動。
關鍵詞:手勢識別; YOLOv5; HaGRID; CBAM; Mesh
中圖分類號:TP391? ? ? 文獻標識碼:A
文章編號:1009-3044(2023)36-0037-05
開放科學(資源服務)標識碼(OSID)
智能機器在如今的科技世界中扮演著越來越重要的角色。機器人不僅用于工業和生產自動化,還在醫療、軍事、農業、服務業等多個領域發揮著巨大的作用[1-2]。機器人可以是無人車、仿生機器人、無人機、機械臂等。人機交互是人與機器之間的溝通,以人為中心,機器需要能夠理解人的交互手段,其中包含對于手勢動作的理解。使機器能夠識別手勢的方法通常有3類:3D傳感器、機器學習算法、深度學習算法[3]。韓彥鵬等人使用LeapMotion傳感器獲取數據,使用SVM改進的KNN算法進行手勢識別,理想情況下對5種手勢的識別準確率達95%以上[4]。王松林等人使用Kinect景深攝像機獲取人體骨骼姿態數據,進而進行手勢分割,使用DTW算法識別手勢,對6種動態手勢識別的平均準確率達到94%[5]。徐玥等人通過機器學習方法,改進手勢分割和手勢特征提取方法,基于Opencv采用支持向量機構建手勢識別模型,對13種手勢平均識別率達到89.96%[6]。李國玄等人提出HOG+SVM的手勢識別算法,對手勢數據集提取HOG特征,通過SVM進行分類識別,在復雜背景情況下手勢識別率達95%[7]。谷學靜等人提出CNN混合LSTM模型識別動態手勢類型,對8種動態手勢的識別率達92.5%[8]。李泰國等人提出有CBAM模塊的YOLOv5s算法識別列車駕駛員的手勢動作,在測試集的識別率達95.5%,檢測速度為71FPS,模型大小15.9MB[9]。王粉花等人通過對YOLOv3算法改進,縮小最大值池化后的通道數進行手勢識別訓練,減少模型參數量與計算量,在UST數據集上檢測精度達92.24%[10]。孟青云等人提出基于YOLOv8算法進行手勢識別,實驗得出YOLOv8精確度高于YOLOv5,但是檢測速度稍慢,準確率達到95.7%[11]。針對現有YOLOv5l神經網絡模型對手勢特征表征不足的問題[12],采用帶有CBAM注意力機制[13]的YOLOv5l模型進行對手勢數據集進行訓練,增強特征表征能力,提高手勢識別的分類精度[14-15]。
1 YOLOv5算法
1.1 數據預處理
手勢識別數據集HaGRID[16]是一個大型圖像數據集,每張圖片的手勢部分被額外截取成為新的數據集,如圖1所示,數據集包含了18種類型手勢,共723GB,共包含553 991張全高清RGB圖像,每個手勢數據集約40GB大小,每張圖像成像距離相機 0.5~4 米。
根據HaGRID數據集已有的算法檢測結果,結合手勢控制機器的實際需求,去除容易與peace混淆識別的rock、three、three2、two up、two up inv手勢,去除容易與one和ok混淆的mute手勢,選取call、dislike、fist、like、ok、one、peace、stop共8類手勢作為控制機器人的手勢數據集,每個手勢從數據集中抽選200張,并額外拍攝真實使用背景下標注的100張圖像作為補充數據,使得每個手勢有300張圖像數據,提升算法的魯棒性。
HaGRID數據集采用COCO數據集標注形式,需要將數據從.xml格式轉換為YOLOv5l所使用的.txt 格式。通過ElementTree工具將.xml文件解析成樹形結構,提取.xml文件中鍵值對,獲得輸入數據size中的width、height,object中的name,bndbox中的xmin、ymin、xmax、ymax。對數據進行歸一化處理,如公式(1)所示,獲得YOLOv5中所需的數據格式:calss、x、y、w、h。
其中,分類名name,映射為數字0~7。x為手勢框中心點x的坐標除以原圖width值、y為手勢框中心點y的坐標除以原圖height、w為手勢框的寬度除以原圖width、h為手勢框的高度除以原圖height。手勢數據集來源:https://github.com/hukenovs/hagrid。
1.2 C3CBAM模塊
CBAM模塊整體結構如圖2所示,模塊由通道注意力模塊和空間注意力模塊組成。
如公式(2)所示,給定一個輸入的特征F∈RC×H×W,對F做Mc∈RC×1×1通道注意力計算,并與F做元素相乘,得到計算結果F′,對F′做Ms∈R1×H×W空間注意力計算,并與F′做元素相乘,得到計算結果F″。
YOLOv5模型一共有5個版本,分別為:YOLOv5n、YOLOv5s、 YOLOv5m 、YOLOv5l、 YOLOv5x。
如圖3所示,添加CBAM注意力機制的YOLOv5l算法網絡結構分為Backbone、Head兩大部分,共25大層,769小層,48 065 087個參數。YOLOv5每個版本深度不同,但基礎框架相同。其中P0~P9為Backbone,P10~P23為Neck與P24的Detect合稱Head。
如表1所示,將原Backbone中P2、P4、P6、P8層的C3結構替換為C3CBAM結構,其他保持不變。各層參數量、參數及數據來源如表1所示,其中from表示數據來源,-1為上一層數據。P12、P16、P19、P22層分別由(P6、P11)、(P4、P15)、(P14、P18)、(P10、P21)張量拼接所得。
C3結構即(CSP Bottleneck with 3 Convolutions),如圖4所示,C3可以增強CNN的學習能力,使網絡輕量化的同時提升準確度。C3參考CSPNet方法,利用n個Bottleneck、3個卷積模塊、1個Concat來實現。增強了backbone的學習能力、降低內存成本。
Bottleneck用于減少模型計算量和參數量。如圖5所示修改原有結構,在Conv2與Add(shortcut)之間添加CBAM模塊。
1.3 模型訓練與分析
實驗使用Anaconda+Pycharm集成開發環境,使用PyTorch框架實現。GPU設備型號GTX1070、8G顯存、內存32GB。手勢數據集中80%用于模型訓練、10%用于測試、10%用于驗證。訓練參數epochs設置為200,batch-size設置為4,初始weights設置為YOLOv5l.pt,optimizer設置為SGD,學習率設置為0.01。最終訓練時長33 h,模型大小88.5 MB。項目訓練源碼、訓練方法、數據集、格式轉換、模型參數、測試方法、測試結果等數據已上傳至倉庫:https://gitee.com/destiny_shun/yolov5-master。
F1 值綜合考慮Precision和recall雙面因素,如圖6所示,模型訓練后的F1值達到了0.99。
如圖7所示,模型對8個手勢類別均有較好的識別效果,其中peace手勢識別精度較低,只有0.967。
如圖8所示,圖中為在數據集上檢測出錯的示例,手勢在數據集中屬于小目標,極易受到背景信息干擾,當人體手勢動作與皮膚、強光、陰影疊加在一起,遇到相似顏色造型,錯檢、漏檢率上升。如圖9混淆矩陣所示,模型在目標檢測任務中,主對角線顏色深,表示正確預測數量多,其中ok、one、peace三類存在預測錯誤情況。如圖10所示,模型分類損失、置信度損失、邊框損失在迭代200次訓練后已經收斂,模型mAP值可達99.1%,模型的Precision、recall值趨于穩定。
如表2所示,從HaGRID數據集中,每個手勢類別抽選100張新的圖像,測試模型檢測效果。由于實驗平臺限制,模型在第一次迭代次數設置為100次,并未有明顯收斂,故而設置為200次,訓練時長達到33h,出現較為明顯的、穩定的收斂現象,故而此次訓練過程有效。由于模型在數據集上檢測效果非常好,為驗證模型是否在數據集上出現過擬合現象,額外抽取、拍攝數據集外手勢數據進行測試,測試結果表明,模型檢測具有良好的精確度。模型在數據集上平均識別準度率為98%。自建數據集中每個手勢分別拍攝100張圖像,結果表明,模型在自建數據集上平均識別準確率為95%。模型加載后,平均檢測時間為0.028 7s,480×640分辨率圖片,幀率為34,達到實時檢測效果。
1.4 控制平臺設計
Qt是跨平臺開發常用工具,方便后續嵌入式移動端的使用[17]。在Pycharm平臺上安裝PyQt5庫,并嵌入QtDesigner界面設計工具、pyuic5界面代碼轉換工具。
如圖11所示,完成簡易控制界面設計,界面加載訓練好的best.pt模型,可調用電腦攝像頭,視頻實時識別手勢,根據手勢類型發送控制指令。
1.5 機器人及mesh組網設計
機器人之間的通信是機器人控制的關鍵組成部分,這包括使用Wi-Fi、藍牙、Zigbee、LoRa等不同的通信技術,以便機器人之間進行信息共享和協同工作[18]。ESP8266 Mesh是一種用于構建自組織、低功耗物聯網(IoT)網絡的技術,由樂鑫公司開發。它建立在ESP8266 Wi-Fi模塊之上,提供了一種方便的方式來連接和管理大量ESP8266設備,使它們能夠相互通信和協同工作[19]。將手勢識別模型應用到機器人控制中,能夠增加人機交互的互動性。將集群中的所有機器人的舵機控制板通過串口通信連接ESP8266模塊,舵機控制板通過上位機預先錄入指定動作及編號,ESP8266編寫指令完成機器人的Mesh組網。通過Mesh組網全網廣播命令,實現機器人的集群控制[20]。
如圖12所示,Esp8266 Mesh允許機器人內部相互廣播通信,網絡無中心節點,每個節點都可以作為中繼節點,節點數量與范圍更大,各個機器人節點之間根據節點編號和控制命令可以相互通信也可以獨立控制,網絡自主修復能力好,心跳包斷連和接入均可自更新完成,通過與路由器相連可以實現遠程互動控制。
如圖13所示,手勢控制界面可以通過stop手勢停止所有機器人動作,通過fist手勢立正機器人,通過call手勢,激活舞蹈模式,通過like與dislike手勢切換舞蹈動作,fist手勢作為中間過渡手勢,無實際意義,OK手勢為確認執行當前動作。one、peace手勢分別表示調整機器人語音音量大小。機器人收到各類手勢執行指令時,通過語音播報與實施者確認是否準確識別命令。
2 結論
通過手勢動作控制機器人,提升人機交互性能,手勢識別的精確度是指令發出的關鍵。手勢數據集HaGRID提供了手勢數據來源,手勢動作在實際使用過程中屬于較小的檢測目標,需要深層與淺層特征圖在語義性與空間性上得到更好的均衡。使用帶有CBAM注意力機制的YOLOv5算法模型進行訓練。在實驗準備階段,對COCO數據標注形式的數據進行轉化,并添加真實使用場景圖像補充數據集,用以增強算法魯棒性。實驗過程中,選擇YOLOv5l模型,使用官方YOLOv5.pt作為初始參數展開訓練。最終得到此次訓練測試最好的best.pt模型文件,實現對手勢的識別,同時搭建可視化平臺驗證手勢控制機器人的可行性。實驗結果表明,改進的模型在測試數據集上的檢測精度達到98%,在自建數據集上的檢測精度達95%,最終的權重文件大小88.5MB,預測一張尺寸大小為640×480的圖像需要28.7ms,處理速度達到34FPS,可以滿足實時檢測要求。在實際控制中,機器人間可以穩定組網運行,能夠通過手勢識別控制機器人及集群運動。
參考文獻:
[1]王成,李敏,王克宇.基于改進Faster RCNN的機器人運動控制與視覺抓取研究[J/OL].機械設計與制造:1-12.
[2] 叢玉華,何嘯,邢長達,等.基于計算機視覺手勢識別的人機交互技術研究[J].兵器裝備工程學報,2022,43(1):152-160.
[3] 解迎剛,王全.基于視覺的動態手勢識別研究綜述[J].計算機工程與應用,2021,57(22):68-77.
[4] 韓彥鵬,秦飛舟.基于LeapMotion的手勢識別算法改進與研究[J].電子設計工程,2023,31(1):7-10,15.
[5] 王松林.基于Kinect的手勢識別與機器人控制技術研究[D].北京:北京交通大學,2014.
[6] 徐玥,周輝.簡單背景下基于OpenCV的靜態手勢識別[J].計算機科學,2022,49(S2):393-398.
[7] 李國玄,馬凱凱,王文博.基于HOG特征提取和SVM的手勢識別方法研究[J].傳感器世界,2022,28(12):30-36.
[8] 谷學靜,周自朋,郭宇承,等.基于CNN-LSTM混合模型的動態手勢識別方法[J].計算機應用與軟件,2021,38(11):205-209.
[9] 李泰國,張英志,張天策,等.基于改進YOLOv5s算法的列車駕駛員手勢識別[J].鐵道學報,2023,45(1):75-83.
[10] 王粉花,黃超,趙波,等.基于YOLO算法的手勢識別[J].北京理工大學學報,2020,40(8):873-879.
[11] 孟青云,戴佳蔚,查佳佳,等.基于YOLOv8算法的常用手勢識別[J].現代儀器與醫療,2023,29(4):12-20.
[12] 李熙尉,孫志鵬,王鵬,等.基于YOLOv5s改進的井下人員和安全帽檢測算法研究[J].煤,2023,32(3):22-25.
[13] WOO S,PARK J,LEE J Y,et al.CBAM:convolutional block attention module[C]//Proceedings of the European Conference on Computer Vision (ECCV).Munich: ECCV,2018:3-19.
[14] 胡宗承,段曉威,周亞同,等.基于多模態融合的動態手勢識別研究[J].計算機工程與科學,2023,45(4):665-673.
[15] 胡宗承,周亞同,史寶軍,等.結合注意力機制與特征融合的靜態手勢識別算法[J].計算機工程,2022,48(4):240-246.
[16] KAPITANOV A,MAKHLYARCHUK A,KVANCHIANI K.HaGRID - HAnd gesture recognition image dataset[EB/OL].2022:arXiv:2206.08219.http://arxiv.org/abs/2206.08219.pdf
[17] 潘雪熒,吳慶達.基于Qt的仿蠶機器人上位機軟件設計與實現[J].現代制造技術與裝備,2023,59(8):193-196.
[18] 夏田,張大為,代斌斌.全向移動的送餐機器人控制系統研究與仿真[J].制造業自動化,2022,44(5):17-20.
[19] 張申毅,樊紹勝,程嘉翊,等.基于STM32的軌道式巡檢機器人控制系統的設計[J].儀表技術與傳感器,2020(9):93-97,116.
[20] 劉成濤,郭帥.基于手勢識別的智能小車無線控制系統設計[J].現代電子技術,2023,46(16):182-186.
【通聯編輯:唐一東】