劉潤萱,龍斌,關(guān)源,王二凱,張勇,王鶴
(1.遼寧科技大學(xué) 機械工程與自動化學(xué)院,遼寧鞍山,114051;2.遼寧福鞍重工股份有限公司,遼寧鞍山,114016)
傳統(tǒng)無人機交互控制系統(tǒng)中,通常采用的語音識別技術(shù),以及各種傳感器信息融合技術(shù)基本是將傳感器采集來的信號轉(zhuǎn)化為較有限的指令,然后通過指令驅(qū)動機器人執(zhí)行事先定義好的運動或操作[1~2]。這樣的交互方式操作較為刻板,一定程度上限制了人機交互的靈活性與直觀性。要使無人機能夠更好地工作,深度學(xué)習(xí)技術(shù)必然是其重要的研究和應(yīng)用方向[3]。
手勢識別類似于人體動作識別,常用的基于深度學(xué)習(xí)的方法有,基于圖像序列的LSTM 動作識別、基于3D 卷積的視頻分類以及基于關(guān)鍵點的動作識別。在基于圖像序列的LSTM 動作識別方面,楊萬鵬等[4]提出了一種特征級融合的LSTM 和CNN 方法。該方法將獨立的傳感器數(shù)據(jù)依次接入到LSTM 層和卷積組件層用于特征提取,之后匯聚起多傳感器的特征再進行動作分類。張儒鵬等[5]提出了O-Inception結(jié)構(gòu),并將其與LSTM 進行了融合,進而提出了OI-LSTM動作識別模型。實驗結(jié)果表明,所提出的OI-LSTM 動作識別模型,在WISDM 和UCI 兩個數(shù)據(jù)集上其準確率比當前最先進的方法分別提高了約4%和1%。在基于3D 卷積的視頻分類方面,劉巖石等[6]提出一種改進的三維卷積神經(jīng)網(wǎng)絡(luò)模型。該模型將傳統(tǒng)的3D CNN 網(wǎng)絡(luò)結(jié)構(gòu)拆分為空間流和時間流進行數(shù)據(jù)運算,并借鑒ResNet 網(wǎng)絡(luò)的設(shè)計思想,減少參數(shù)設(shè)置,避免梯度消失。實驗結(jié)果表明,文中模型在保證識別精度的條件下,訓(xùn)練速度得到了大幅提升。在基于關(guān)鍵點的動作識別方面,劉源[7]提出了一種基于目標分割網(wǎng)絡(luò)的人體關(guān)鍵點檢測方法,以提高人體關(guān)鍵點的檢測精度。尹建芹等[8]提出了時序直方圖的概念用以建模關(guān)鍵點序列。再通過比較軌跡間關(guān)鍵點序列的相似性,完成動作識別任務(wù)。
本文提出一種基于深度學(xué)習(xí)技術(shù),即YOLOv5(You Only Look Once)的手勢指令智能識別方法。利用該方法無人機根據(jù)人的手勢指令執(zhí)行相應(yīng)的飛行動作,為無人機的交互式控制提供技術(shù)支持。
YOLOv5 與之前的模型相比,它的識別速度和準確率都有了明顯提高,成為目標識別的最佳選擇[9],其網(wǎng)絡(luò)結(jié)構(gòu)如圖1 所示。主要的改進思路如下:

圖1 YOLOv5網(wǎng)絡(luò)結(jié)構(gòu)圖
輸入端:在模型訓(xùn)練階段,提出了一些改進思路,主要包括Mosaic 數(shù)據(jù)增強、自適應(yīng)錨框計算、自適應(yīng)圖片縮放;
Backbone:融合其他檢測算法中的一些新思路,主要包括:Focus 結(jié)構(gòu)與CSP 結(jié)構(gòu);
Neck:目標檢測網(wǎng)絡(luò)在Backbone 與最后的Head 輸出層之間往往會插入一些層,YOLOv5 中添加了FPN+PAN結(jié)構(gòu);
Prediction:輸出層的錨框機制與YOLOv4 相同,主要改進的是訓(xùn)練時的損失函數(shù)GIOU_Loss,以及預(yù)測框篩選的DIOU_nms。
采用YOLOv5 算法實現(xiàn)手勢指令檢測主要有三個階段:第一階段為數(shù)據(jù)集采集,第二階段為模型訓(xùn)練,最后為模型驗證。
本文要實現(xiàn)無人機的飛行動作主要有:啟動、起飛、降落、懸停,以及向上/下/左/右/前/后飛5cm。無人機的飛行動作對應(yīng)的手勢指令分別為:OK 手勢,大拇指向上,大拇指向下,拳頭,以及手勢一/二/三/四/五/六。具體對應(yīng)關(guān)系如表1 所示。

表1 無人機飛行動作與手勢的對應(yīng)關(guān)系
為了提高模型訓(xùn)練的效率,在訓(xùn)練前調(diào)整每張圖片大小為同一尺寸,每張圖像像素大小設(shè)置為600×600。訓(xùn)練集、驗證集和測試集按照7:1:2 的比例隨機分配和規(guī)劃。該自制手勢行為數(shù)據(jù)集樣本數(shù)量大約有200 張圖片。在進行正式訓(xùn)練手勢數(shù)據(jù)集前,首先通過Labelme 軟件對每張圖片進行手勢類別標注,生成帶有位置信息的XML 文件,標明每張圖片所對應(yīng)的標簽,將全部的訓(xùn)練圖片標注完成后放入訓(xùn)練集文檔中,至此完成數(shù)據(jù)集的制作。
使用YOLOv5 訓(xùn)練模型進行訓(xùn)練,在進行了200 次迭代后達到了收斂,訓(xùn)練結(jié)果如圖2 所示。從圖2 中可以看出,模型隨著訓(xùn)練次數(shù)的增多很快就達到了收斂狀態(tài),Loss 值也逐漸趨于穩(wěn)定,達到了期望的數(shù)值。Precision 和Recall曲線的波動較小表明模型訓(xùn)練的效果較好,可認為模型具有較好的精確度和穩(wěn)定性。并且訓(xùn)練數(shù)據(jù)集和測試數(shù)據(jù)集的損失函數(shù)基本都減小到了0.01 以下。經(jīng)過訓(xùn)練,最終模型的準確率達到了90%以上。

圖2 模型訓(xùn)練收斂曲線
為了驗證模型的性能,這里采用F1 分數(shù),Precision 值,Recall 值和mAP 值四個指標來評估所訓(xùn)練的模型。四個指標的作用和具體計算方式可參見文獻[10]。驗證的結(jié)果如圖3~6 所示。從圖3 可以看到F1 曲線很“寬敞”且頂部接近1,說明在測試集上表現(xiàn)得很好(既能很好地查全,也能很好地查準)的置信度閾值區(qū)間很大。從圖4 可以看出當判定概率超過置信度閾值時,各個手勢識別的準確率。當置信度越大時,手勢檢測越準確,但是這樣就有可能漏掉一些判定概率較低的真實樣本。從圖5 可以看出當置信度越小的時候,手勢檢測的越全面,即手勢檢測不容易被漏掉,但容易誤判。從圖6 可以看出mAP 曲線的面積接近1,也就是說所訓(xùn)練出的模型在準確率很高的前提下,基本能檢測到全部的手勢類別。因此通過四個指標的曲線圖可知,所訓(xùn)練出的模型具有良好手勢識別的性能。

圖3 F1 曲線

圖4 Precision 曲線

圖5 Recall 曲線

圖6 mAP 曲線
為了進一步驗證模型的性能,將與原先數(shù)據(jù)集中人物、場景均不同的全新的100 個樣本的測試集放進訓(xùn)練好的模型中進行測試。結(jié)果表明,模型在測試集上表現(xiàn)良好。通過圖7 混淆矩陣分析可知,模型對這10 種手勢都達到了良好的檢測效果。一部分樣本由于圖片背景過于復(fù)雜而導(dǎo)致識別錯誤,例如具有較強的反射光背景或者是圖片像素過低所造成的。

圖7 混淆矩陣
為了進一步驗證Yolov5 在數(shù)據(jù)集上的性能優(yōu)越性,構(gòu)建了ResNet,VGG16 和RCNN 三個深度學(xué)習(xí)算法手勢指令檢測模型,使用上述的測試集進行訓(xùn)練和評估,與Yolov5進行對比測試,實驗結(jié)果如圖8 所示。由圖8 可以直接看出,在本文構(gòu)建的手勢數(shù)據(jù)集上,RCNN,VGG16 和ResNet 分別獲得了90.6%,92.1%和93.2%的準確率,而Yolov5算法的準確率在對比實驗中最高,為96.4%,能夠更好地滿足手勢指令的檢測要求,為控制無人機提供更加準確的手勢指令。

圖8 不同深度學(xué)習(xí)算法的對比
實驗平臺采用的是大疆Tello 無人機,此無人機支持Python 編程,并提供Python API 接口。同時提供了Tello SDK,其能夠通過Wi-Fi UDP 協(xié)議與無人機連接,讓用戶可以通過文本指令控制無人機。圖9 為使用YOLOv5 作為檢測模型對手勢指令的檢測效果。從檢測結(jié)果可以明顯看出,該模型對10 種手勢指令都具有良好的識別效果,并且無人機能夠根據(jù)識別出的手勢指令執(zhí)行相應(yīng)的飛行動作。

圖9 實際識別手勢指令的效果
本文為了實現(xiàn)視覺識別手勢指令以控制無人機飛行運動,建立了基于YOLOv5 算法的識別模型。具體結(jié)論如下:第一,采用測試集對模型進行驗證。驗證結(jié)果顯示所建立的模型對10 種手勢指令具有較高的識別準確率;第二,在無人機應(yīng)用驗證顯示所建立的模型對手勢指令識別準確率在90%以上。