羅曉杰,郭建文,苗涵琪,曹夢華,晏曉輝,李宇琛,候鵬鵬,梁志翔
(東莞理工學(xué)院機械工程學(xué)院,廣東東莞 523808)
無人小車在使用過程中系統(tǒng)的控制部分需要專門人機交互方式實現(xiàn)相關(guān)的功能[1-2]。手勢控制人機交互方式運用移動端(無人小車)來進(jìn)行手勢識別,并基于識別的結(jié)果來執(zhí)行命令,操作者通過簡單的手勢完成他們想要完成的控制動作。手勢控制作為一種新興的人機交互控制方式,在無人小車領(lǐng)域得到越來越多的關(guān)注[3]。
手勢識別的人機交互方式一般有數(shù)據(jù)手套和視覺傳感器兩類。數(shù)據(jù)手套[4]的手勢識別方式:使用者需要戴上部署了傳感器的手套,手勢識別系統(tǒng)通過手套上的傳感器獲取手的位置、姿態(tài)等信息。由于需要配置額外的手套設(shè)備,數(shù)據(jù)手套的手勢識別方式在應(yīng)用過程中存在應(yīng)用場景受限、成本高等不足[5]。視覺傳感器的手勢識別基于計算機視覺技術(shù),對視覺傳感器采集設(shè)備拍攝到的包含手勢圖像序列,通過計算機視覺技術(shù)進(jìn)行目標(biāo)檢測,識別出手勢[6]。目標(biāo)檢測是指從圖像中找出所有感興趣的目標(biāo),同時確認(rèn)目標(biāo)的種類和位置,是城市安防、自動導(dǎo)航、醫(yī)療診斷、增強現(xiàn)實等領(lǐng)域非常重要的應(yīng)用之一[7-8]。視覺傳感器的方式可以分為專用的視覺設(shè)備和普通攝像頭。微軟Kinect 是典型的專用的視覺設(shè)備代表,基于基Kinect 這種特殊功能的攝像頭,可以很好地識別手勢的信息,領(lǐng)域內(nèi)相關(guān)學(xué)者開展了大量的研究并在多方面得到應(yīng)用[9]。然而基于Kinect的手勢識別和數(shù)據(jù)手套都有一個共同的不足,就是設(shè)備昂貴,不利于普及應(yīng)用?;谄胀〝z像頭的方法不需要采購價格昂貴的數(shù)據(jù)手套設(shè)備或者專有的視覺傳感設(shè)備,在有普通視覺傳感器(攝像頭)的場景下都可以使用,具有設(shè)備成本低、普及率高等優(yōu)勢[10]。
近年來深度學(xué)習(xí)目標(biāo)檢測上取得的突破進(jìn)展[11],目前基于深度學(xué)習(xí)的目標(biāo)檢測已經(jīng)成為主流。同時Intel 的神經(jīng)計算棒、NVIDIA Jetson 等邊緣計算產(chǎn)品的計算能力得到進(jìn)一步發(fā)展,可以為算力不足的移動設(shè)備(無人小車等)提供深度學(xué)習(xí)的目標(biāo)檢測解決方案[12]。
本文采用深度學(xué)習(xí)技術(shù),設(shè)計了一種基于YOLOv5 手勢識別的無人小車運動交互控制系統(tǒng),具有結(jié)構(gòu)簡單、操作靈活、性能可靠等特點,能夠較為精準(zhǔn)地識別指令并達(dá)到人機交互的控制效果。
本系統(tǒng)設(shè)計思想是采用移動的無人小車+普通的攝像頭+深度學(xué)習(xí),設(shè)計一套手勢識別的無人小車交互控制系統(tǒng)。
無人小車的軟件平臺選用Ubuntu18.04,運行環(huán)境為Jetson nano 開發(fā)板,CPU 基于四核ARM Cortex-A57,GPU 為NVIDIA MAXWELL,Arduino Maga 2560,樹莓派USB 攝像頭,軟件環(huán)境為OpenCV 4.1.0、Pytorch-GPU等。實驗平臺實物如圖1所示。
圖1 實驗平臺實物
無人小車的硬件結(jié)構(gòu)如圖2 所示。考慮到須在平地上運動,其設(shè)計結(jié)構(gòu)采用小車底盤是上下兩層亞克力橫板,上層亞克力橫板安裝固定云臺,云臺上連接六軸機械臂,在機械臂第四軸處安裝樹莓派攝像頭模塊,亞克力橫板頂部固定Jetson nano 開發(fā)板模塊;下層亞克力橫板固定裝有Arduino Maga 2560單片機模塊,24 V直流電源模塊,電機驅(qū)動模塊,亞克力橫板底部左右兩側(cè)分別固定有4 個直流電機模塊,直流電機模塊用麥科納姆輪連接,亞克力橫板間由銅柱固定連接。采用輪式控制結(jié)構(gòu)設(shè)計,可以使小車在平地上行走平穩(wěn)。
圖2 無人小車硬件結(jié)構(gòu)
人機交互系統(tǒng)結(jié)構(gòu)如圖3 所示。系統(tǒng)樹莓派攝像頭模塊獲取包括領(lǐng)航者在內(nèi)的特定手勢數(shù)據(jù)視頻流,實時傳輸給上位機Jetson nano 模塊,通過部署在上位機Jetson nano 模塊上的已經(jīng)訓(xùn)練達(dá)到識別精度要求的YOLOv5 模型進(jìn)行識別,根據(jù)識別算法來做出判斷,處理數(shù)據(jù)得到相應(yīng)的控制信息。上位機與下位機通訊根據(jù)串口通訊原理,通過有線usb串口通訊方式向Arduino Maga 2560單片機傳送控制指令,Arduino Maga 2560單片機接受控制指令處理并傳達(dá)控制信息給電機驅(qū)動模塊,驅(qū)動4 個直流電機模塊進(jìn)行正反轉(zhuǎn),實現(xiàn)無人小車的運動控制。
圖3 人機交互系統(tǒng)結(jié)構(gòu)
本文中的YOLOv[13-14]的核心思想是把物體目標(biāo)檢測(object detection)問題處理成回歸問題,用一個卷積神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)從輸入圖像直接預(yù)測檢測框和類別概率,是典型的目標(biāo)檢測one stage 方法。YOLOv 算法將候選區(qū)域和檢測階段合二為一,將輸入劃分成s×s個窗格,每個格子會生成不同長寬比的B個邊界框(bounding box)。當(dāng)目標(biāo)框中心點落在某個窗格,則此目標(biāo)的檢測由該窗格負(fù)責(zé),同時預(yù)測出邊界框的位置信息、分類概率及置信度(confidence)。
在YOLOv5 中,一共出現(xiàn)了5 個版本,分別是YOLOv5n、YOLOv5s、YOLOv5m、YOLOv5l、YOLO5x 五個模型。其中,YOLOv5s 網(wǎng)絡(luò)是YOLOv5 系列中深度最小,特征圖的寬度最小的網(wǎng)絡(luò)。其他4 種都是在此基礎(chǔ)上不斷加深和加寬。綜合考慮下,本文選擇用YOLOv5s 網(wǎng)絡(luò)模型。YOLOv5 模型的訓(xùn)練利用深度學(xué)習(xí)框架Pytorch,首先在YOLOv5模型中對手勢數(shù)據(jù)集進(jìn)行訓(xùn)練,調(diào)用YOLOv5 針對訓(xùn)練的腳本文件,在基于YOLOv5預(yù)訓(xùn)練模型yolov5.xyam 的前提下,在權(quán)重文件yolov5x.pt 的輸入下進(jìn)行手勢識別模型訓(xùn)練,生成手勢識別和檢測的.yaml 文件,將模型與測試集數(shù)據(jù)進(jìn)行匹配,選擇訓(xùn)練識別精度最高的權(quán)重文件輸入作為視覺模型。
系統(tǒng)根據(jù)識別手勢圖片的不同,實現(xiàn)控制小車不同的運動方式,定義手勢數(shù)字代表指令如下:手勢0 控制小車啟動,手勢1控制小車直行,手勢2控制左轉(zhuǎn),手勢3控制右轉(zhuǎn),手勢4控制后退,手勢6、7、8 共同控制小車上的機械臂運動,手勢9控制小車停止運動。
系統(tǒng)通過樹莓派攝像頭采集空白背景處人體手勢圖像視頻流,分別有數(shù)字0、1、2、3、4、5、6、7、8、9 下所代表的特定人體手勢圖像。系統(tǒng)利用Opencv 圖像處理技術(shù)將數(shù)據(jù)視頻流逐幀轉(zhuǎn)化為圖片數(shù)據(jù),結(jié)合立體匹配算法,獲取包含控制者目標(biāo)在內(nèi)的深度圖像,在對圖像進(jìn)行閾值化、歸一化等圖像預(yù)處理方法,融合基于YCrCb 顏色空間Cr、Cb 范圍篩選法色彩空間轉(zhuǎn)換算法來排除周圍環(huán)境因素的干擾,得到只有控制者特定手勢的深度圖片,通過圖像轉(zhuǎn)化的技術(shù)還原初始的圖像空間色彩和人物信息,并分類不同的手勢圖片信息制作數(shù)據(jù)集進(jìn)行篩選,最終得到每個數(shù)字代表的特定手勢圖片503 張,共有5 030 張手勢圖片數(shù)據(jù),在python 的LabelImg模塊工具中對手勢圖片進(jìn)行標(biāo)注,并生成YOLOv5 深度學(xué)習(xí)模型的手勢圖片數(shù)據(jù)集,分為訓(xùn)練集85%,測試集15%。部分?jǐn)?shù)據(jù)如圖4 所示。
圖4 部分手勢數(shù)據(jù)集
實驗過程一共分為3 個部分。實時手勢視頻流識別檢測,控制指令通訊測試和無人小車運動測試。在YOLOv5 模型手勢數(shù)據(jù)訓(xùn)練中,設(shè)定每次訓(xùn)100 輪,訓(xùn)練批次大小為8,分多次進(jìn)行試驗。預(yù)測識別率達(dá)到85%~90%以上,基本符合實驗要求,預(yù)測結(jié)果如圖5 所示。實時手勢視頻流識別檢測,設(shè)置置信度在0.5,迅速準(zhǔn)確檢測出各手勢分別代表控制指令信息,控制指令通訊測試,將檢測到的手勢數(shù)據(jù)通過usb 串口通訊準(zhǔn)確轉(zhuǎn)化無人小車的控制指令,無人小車運動方式按照預(yù)期手勢控制指令運動。在手勢數(shù)據(jù)訓(xùn)練識別率達(dá)到一定精度后符合測試要求,將訓(xùn)練后模型文件部署到移動端,實現(xiàn)手勢指令控制小車的運動,小車前進(jìn),后退,轉(zhuǎn)彎,停止等。系統(tǒng)運行界面效果如圖6所示。
圖5 手勢預(yù)測結(jié)果
圖6 系統(tǒng)運行界面效果
針對YOLOv5模型手勢數(shù)據(jù)集的訓(xùn)練,對0~9的手勢圖片數(shù)據(jù)識別進(jìn)行測試及結(jié)果的統(tǒng)計分析,結(jié)果如圖7 所示。圖8所示為F1分?jǐn)?shù)與置信度之間的關(guān)系,圖9所示為召回率跟置信度的關(guān)系,都能夠反映訓(xùn)練后性能的指標(biāo)。F1 分?jǐn)?shù)(F1-score)是分類問題的一個衡量指標(biāo),是精確率precision 和召回率recall的調(diào)和平均數(shù),最好為1,最差為0。
圖7 YOLOv5模型手勢數(shù)據(jù)集的訓(xùn)練分析
圖8 F1分?jǐn)?shù)與置信度分析
圖9 召回率與置信度分析
根據(jù)實驗訓(xùn)練數(shù)據(jù)分析,訓(xùn)練后測試的識別率穩(wěn)定在85%~95%之間,達(dá)到本系統(tǒng)允許的控制誤差范圍內(nèi),在保證快速識別手勢指令而精確控制小車運動的前提下,本系統(tǒng)手勢控制無人小車測試結(jié)果達(dá)到預(yù)期效果。同時需要說明的是,由于手勢數(shù)據(jù)集制作的大小限制以及訓(xùn)練過程中訓(xùn)練迭代次數(shù)的限制,識別率精度受限制。
本文設(shè)計的基于YOLOv5 手勢識別的無人小車運動交互控制系統(tǒng),將YOLOv5 改進(jìn)算法融合在無人小車運動控制,實現(xiàn)精確控制指令傳達(dá)效果,與相比于傳統(tǒng)的手勢識別控制系統(tǒng),利用普通攝像頭作為單一傳感器來實現(xiàn)對周圍環(huán)境的感知,作為控制的輸入端,只需要攝像頭傳感器識別操作者簡單的特定手勢便可實現(xiàn)控制,控制操作簡便快捷,可降低控制系統(tǒng)對于控制人員專業(yè)性的依賴。同時利用YOLOv5 模型應(yīng)用開發(fā)的深度學(xué)習(xí)圖像識別技術(shù),對硬件算力要求較小,支持使用最新的圖像識別模型,體積小,對訓(xùn)練的手勢圖像識別率高,系統(tǒng)控制反應(yīng)速度更快,精度高。