黃旭陽(yáng),韓建海,2,李向攀,2
(1 河南科技大學(xué)機(jī)電工程學(xué)院,河南 洛陽(yáng) 471023;2 河南科技大學(xué)河南省機(jī)器人與智能系統(tǒng)重點(diǎn)實(shí)驗(yàn)室,河南 洛陽(yáng) 471023)
手勢(shì)不僅是人與人之間的一種重要交流方式,同時(shí)也改變了人與機(jī)器之間的交流方式[1],手勢(shì)識(shí)別目前被廣泛應(yīng)用在多種領(lǐng)域[2]。 在控制領(lǐng)域,手勢(shì)識(shí)別系統(tǒng)取代了按鍵或者觸摸屏控制,通過(guò)手勢(shì)實(shí)現(xiàn)機(jī)器人運(yùn)動(dòng)過(guò)程中的目標(biāo)辨識(shí)使用戶感到更加自然[3]。在計(jì)算機(jī)交互領(lǐng)域,手勢(shì)取代了鼠標(biāo)、鍵盤對(duì)計(jì)算機(jī)的控制,使人與計(jì)算機(jī)之間的交互更加智能化[4]。 隨著卷積神經(jīng)網(wǎng)絡(luò)的不斷發(fā)展,基于深度學(xué)習(xí)的視覺(jué)手勢(shì)識(shí)別系統(tǒng)的應(yīng)用范圍也會(huì)越來(lái)越廣泛。
最初的手勢(shì)識(shí)別方法主要有數(shù)據(jù)手套和視覺(jué)識(shí)別.。 第一種方法主要利用穿戴設(shè)備獲取手部各個(gè)關(guān)節(jié)的角度信息,這些設(shè)備將手勢(shì)信息傳入識(shí)別系統(tǒng)中,精確度比較高,但是需要大量傳感器輔助,佩戴繁瑣且設(shè)備成本較高[5]。 視覺(jué)識(shí)別方法應(yīng)用更加方便,通過(guò)圖像處理、圖像分割完成特征提取,然后通過(guò)分類算法對(duì)手勢(shì)特征進(jìn)行識(shí)別。 但是對(duì)數(shù)據(jù)集的依賴性大,容易受到環(huán)境光照、背景干擾,算法的局限性比較大。
隨著卷積神經(jīng)網(wǎng)絡(luò)的發(fā)展,手勢(shì)識(shí)別中的目標(biāo)分類問(wèn)題被轉(zhuǎn)換成了目標(biāo)檢測(cè)的問(wèn)題。 Girshick 等學(xué)者提出R-CNN 用于目標(biāo)檢測(cè),隨后又提出Fast R-CNN,F(xiàn)aster R-CNN 等基于區(qū)域建議的目標(biāo)檢測(cè)算法,提高了識(shí)別的速度和精度[5]。 Redmon 等學(xué)者[6]在2016年的CVPR 大會(huì)提出了基于回歸的YOLO 算法,YOLO 算法不生成候選區(qū)域,直接利用檢測(cè)網(wǎng)絡(luò)生成目標(biāo)的位置、類別信息,進(jìn)一步提高了檢測(cè)的速度。
YOLOv1 自2016年提出,因其檢測(cè)速度較快而廣受關(guān)注,但對(duì)目標(biāo)的定位不夠準(zhǔn)確,隨后又相繼提出了YOLOv2,YOLOv3。 在2020年,Bochkovskiy 等學(xué)者[7]提出了YOLOv4,該網(wǎng)絡(luò)在YOLOv3 的基礎(chǔ)上結(jié)合了很多提高精度的技巧,包括加權(quán)殘差鏈接(WRC)、跨階段部分連接(CSP)、交叉小批量標(biāo)準(zhǔn)化(CmBN)、自對(duì)抗訓(xùn)練(SAT)等,最終在COCO 的數(shù)據(jù)集上的AP值為43.5%,在TeslaV100 上的實(shí)時(shí)監(jiān)測(cè)速度達(dá)到了65 FPS,有效提高了識(shí)別速度和精度。
基于深度視覺(jué)手勢(shì)識(shí)別的協(xié)作機(jī)械臂物體抓取系統(tǒng)整體設(shè)計(jì)方案的設(shè)計(jì)共由2 部分組成,包括手勢(shì)識(shí)別系統(tǒng)和協(xié)作機(jī)械臂物體抓取系統(tǒng)(圖1)。
圖1 系統(tǒng)整體方案設(shè)計(jì)Fig. 1 Overall scheme design of the system
手勢(shì)識(shí)別系統(tǒng)是指通過(guò)數(shù)據(jù)集處理,將數(shù)據(jù)通過(guò)改進(jìn)后的算法模型進(jìn)行訓(xùn)練,訓(xùn)練后的網(wǎng)絡(luò)模型對(duì)單目攝像機(jī)采集到的數(shù)據(jù)進(jìn)行預(yù)測(cè),再將預(yù)測(cè)的手勢(shì)信息通過(guò)串口發(fā)送到PC 端。
在機(jī)械臂抓取物體的系統(tǒng)中,PC 端和sawyer 機(jī)器人會(huì)把自身的節(jié)點(diǎn)信息發(fā)送到ROS Master 中保存起來(lái),ROS Master 會(huì)根據(jù)節(jié)點(diǎn)信息進(jìn)行匹配,匹配成功后PC 端可以直接和Sawyer 機(jī)器人進(jìn)行通信,PC端將通過(guò)串口獲得的手勢(shì)信息進(jìn)行處理后,轉(zhuǎn)換成相應(yīng)的指令通過(guò)節(jié)點(diǎn)以話題、服務(wù)、動(dòng)作的通訊方式發(fā)出,機(jī)器人節(jié)點(diǎn)接收指令后完成相應(yīng)的動(dòng)作。
手勢(shì)識(shí)別系統(tǒng)主要分為如下步驟。
(1)數(shù)據(jù)采集:采集不同背景,保存手勢(shì)的數(shù)據(jù)信息,并對(duì)采集后的數(shù)據(jù)進(jìn)行數(shù)據(jù)標(biāo)定。
(2)算法設(shè)計(jì):為了更加方便地控制機(jī)械臂的運(yùn)動(dòng),基于YOLO v4 算法進(jìn)行改進(jìn),增加輸出信息的種類,可以實(shí)現(xiàn)機(jī)械臂的更全面地控制。
(3)網(wǎng)絡(luò)模型訓(xùn)練:將處理后的圖片通過(guò)卷積、池化、全連接進(jìn)行特征提取和分類,通過(guò)不斷地更新網(wǎng)絡(luò)權(quán)值使預(yù)測(cè)值和真實(shí)值之間的loss小于某一期望值。
(4)手勢(shì)識(shí)別:通過(guò)對(duì)相機(jī)采集到的數(shù)據(jù)進(jìn)行識(shí)別,將手勢(shì)的分類信息進(jìn)行輸出,獲得有效的手勢(shì)識(shí)別結(jié)果。
YOLOv4 算法是在原有YOLOv3 的基礎(chǔ)上,結(jié)合了很多提升精度的技巧,優(yōu)化了數(shù)據(jù)處理、基礎(chǔ)網(wǎng)絡(luò)的算法,使用了Mish激活函數(shù),提高了識(shí)別的速度和精度,YOLOv4 的改進(jìn)如圖2 所示。 這里,可對(duì)圖2 中的重要設(shè)計(jì)內(nèi)容,展開(kāi)闡釋分述如下。
圖2 YOLOv4 網(wǎng)絡(luò)結(jié)構(gòu)圖Fig. 2 YOLOv4 network structure diagram
(1)YOLOv4 的主干網(wǎng)絡(luò)使用了CSPDarkNet53網(wǎng)絡(luò),CSPNet 的核心思想是輸入切分,通過(guò)分割梯度流,將基礎(chǔ)層的特征圖分為2 部分,然后利用跨階段特征融合策略將其合并起來(lái)。 CSPNet 不僅減少了計(jì)算量,而且實(shí)現(xiàn)了更豐富的梯度組合。 YOLOv4 的主干網(wǎng)絡(luò)使用Mish激活函數(shù)代替了Leaky_ReLU激活函數(shù),平滑的激活函數(shù)取代了硬零邊界,允許更好的信息深入神經(jīng)網(wǎng)絡(luò),提高準(zhǔn)確性和泛化能力[8]。
(2)YOLOv4 在CSPDarkNet53 結(jié)構(gòu)后添加了SPP 模塊,SPP 用最大池化來(lái)滿足最后輸入特征一致,解決輸入圖像尺寸不統(tǒng)一的問(wèn)題,可以增加感受視野,分離出最顯著的上下文特征,使算法適應(yīng)不同分辨率的圖像。
(3)YOLOv4 采用了FPN+PAN 模塊,F(xiàn)PN+PAN一個(gè)非常重要的特點(diǎn)就是特征反復(fù)提取。 FPN 將高特征層通過(guò)上采樣和低特征層做融合得到預(yù)測(cè)的特征圖,增強(qiáng)了語(yǔ)義信息;PAN 自底向上傳遞定位特征,通過(guò)對(duì)FPN 模塊的補(bǔ)充,進(jìn)一步提高了特征提取的能力,從而加強(qiáng)了對(duì)目標(biāo)的檢測(cè)能力。
YOLOv4 在YOLOv3 的基礎(chǔ)上融合了提高精度的技巧,包括數(shù)據(jù)增強(qiáng)、加權(quán)殘差連接、跨階段部分連接、交叉小批量標(biāo)準(zhǔn)化、Mish 激活等,使得YOLOv4 在識(shí)別精度和識(shí)別速度方面有了很大的提升,但在最后網(wǎng)格的特征通道上只有先驗(yàn)框的位置、置信度和種類的信息,不能滿足對(duì)機(jī)械臂靈活控制時(shí)的數(shù)據(jù)要求。針對(duì)這種情況,本文在YOLOv4 算法的基礎(chǔ)上優(yōu)化YOLOv4 的輸出模型結(jié)構(gòu),將網(wǎng)格特征通道上加入2個(gè)手勢(shì)關(guān)鍵點(diǎn)的分析,通過(guò)對(duì)這2 個(gè)關(guān)鍵點(diǎn)的訓(xùn)練和分析,得到手的水平方向,進(jìn)而控制機(jī)械臂手爪的夾持方向,提高機(jī)械臂控制的靈活性。
YOLOv4 通過(guò)CSPDarkNet53 網(wǎng)絡(luò)完成對(duì)輸入圖片特征的提取,并對(duì)輸入圖片提取3 個(gè)有效特征層,將3 個(gè)有效特征層分成大小不同的網(wǎng)格,比如特征層為(N,8,6,75)的格式就是將輸入圖像分成了8?6 的網(wǎng)格;接下來(lái)在這些網(wǎng)格中心建立3 個(gè)先驗(yàn)框,再通過(guò)網(wǎng)絡(luò)預(yù)測(cè)結(jié)果來(lái)判斷哪些先驗(yàn)框中有所需要檢測(cè)的物體,并判斷出所檢測(cè)到物體的種類。
以特征層(N,8,6,75)為例,由于每個(gè)網(wǎng)格中共同有3 個(gè)先驗(yàn)框,所以75 可以看作3×25,25 中包括4 個(gè)先驗(yàn)框調(diào)整參數(shù)(x,y,h,w),1 個(gè)置信度信息用來(lái)確定框內(nèi)有沒(méi)有檢測(cè)到物體,20 是網(wǎng)絡(luò)檢測(cè)物體的種類。
為了更加靈活地控制機(jī)械臂,將特征層輸出內(nèi)容做出調(diào)整,如圖3 所示,通過(guò)增加1,10 兩個(gè)關(guān)鍵點(diǎn)的位置信息來(lái)判斷手的水平方向,為此將特征層的輸出結(jié)果改變?yōu)椋∟,8,6,3,29),新增的4 組數(shù)據(jù)表示2 個(gè)手勢(shì)關(guān)鍵點(diǎn)的坐標(biāo)信息,隨即推得最后特征層的輸出結(jié)果為(N,8,6,87)。
圖3 手勢(shì)關(guān)鍵點(diǎn)Fig. 3 Gesture key points
深度神經(jīng)網(wǎng)絡(luò)中的損失是衡量訓(xùn)練出來(lái)的模型泛化能力好壞的重要指標(biāo)。 損失是指訓(xùn)練后網(wǎng)絡(luò)模型的預(yù)測(cè)值和目標(biāo)值之間的差值,預(yù)測(cè)值和目標(biāo)值之間的差值越小,損失值也就越小,說(shuō)明訓(xùn)練的模型也就越準(zhǔn)確,泛化能力也就越好。 當(dāng)損失值比較高時(shí),就需要通過(guò)優(yōu)化函數(shù)不斷地更新網(wǎng)絡(luò)權(quán)值,使差值達(dá)到最小或者小于某一期望值,從而提高模型的準(zhǔn)確度和泛化能力[8-9]。
2.3.1loss的計(jì)算
損失一般由3 部分組成。 第一部分是預(yù)測(cè)框x,y,w,h帶來(lái)的誤差,用CIoU loss計(jì)算;第二部分是置信度帶來(lái)的誤差,用BCE loss來(lái)計(jì)算;第三部分是類別和關(guān)鍵點(diǎn)帶來(lái)的誤差,用BCE loss來(lái)計(jì)算。
Intersection over Union (IoU) 是目標(biāo)檢測(cè)中的一種重要的評(píng)價(jià)值。IoU通過(guò)計(jì)算這2 個(gè)框A、B間的Intersection AreaI(相交的面積)和Union AreaU(總的面積)的比值來(lái)獲得:
IoU是比值的概念,對(duì)尺度不敏感,而且當(dāng)2 個(gè)框的重疊為0 時(shí),IoU無(wú)法進(jìn)行反向傳播。CIoU將預(yù)測(cè)框和真實(shí)框距離、重疊率和懲罰項(xiàng)都考慮進(jìn)去了,使目標(biāo)回歸更趨穩(wěn)定[10]。CIoU的公式如下:
其中,ρ2b,bgt() 表示預(yù)測(cè)框和中心框的距離,c表示能同時(shí)包含預(yù)測(cè)框和真實(shí)框的對(duì)角線的距離。α和v的公式如下:
把1-CIoU就得到了lossbox,所以lossbox的公式如下:
其中,帶“^” 的變量表示標(biāo)簽真值;s表示特征層的長(zhǎng)寬;B表示每個(gè)網(wǎng)格點(diǎn)先驗(yàn)框的個(gè)數(shù);表示預(yù)測(cè)框是否為正樣本,是、為1,否、為0;表示該檢測(cè)框是否是負(fù)樣本,是、為1,否、為0,如果2 個(gè)值都為0,說(shuō)明該檢測(cè)框?yàn)楹雎詷颖尽?/p>
2.3.2 手勢(shì)識(shí)別結(jié)果分析
使用改進(jìn)后的YOLOv4 算法對(duì)自制數(shù)據(jù)集進(jìn)行檢測(cè),手勢(shì)檢測(cè)結(jié)果如圖如4 所示,各類手勢(shì)的置信度見(jiàn)表1。 在圖4 中,預(yù)測(cè)框在原圖上的位置就是手勢(shì)所在的位置,手勢(shì)關(guān)鍵點(diǎn)的連線代表著各個(gè)手勢(shì)點(diǎn)的坐標(biāo)信息,預(yù)測(cè)框上面左邊的標(biāo)簽表示檢測(cè)出來(lái)的手勢(shì)種類,右邊的表示所識(shí)別手勢(shì)的置信度。在表1 中,可以看到各類手勢(shì)的置信度達(dá)到了98%,置信度表示該手勢(shì)被正確識(shí)別的概率,根據(jù)實(shí)驗(yàn)數(shù)據(jù)顯示,改進(jìn)的YOLOv4 算法可以準(zhǔn)確地識(shí)別出手勢(shì)種類以及各個(gè)關(guān)鍵點(diǎn)的坐標(biāo)信息。
表1 各類手勢(shì)置信度Tab. 1 Gestures confidence
圖4 手勢(shì)檢測(cè)結(jié)果Fig. 4 Gesture detection results
實(shí)驗(yàn)所用平臺(tái)來(lái)自實(shí)驗(yàn)室搭建的基于ROS 系統(tǒng)的Sawyer 協(xié)作機(jī)械臂控制系統(tǒng),操作系統(tǒng)及版本:Ubuntu20.04;手勢(shì)識(shí)別模塊: PaddlePi-K210 AI開(kāi)發(fā)套件。
在手勢(shì)識(shí)別系統(tǒng)中,根據(jù)識(shí)別到的不同手勢(shì)信息,來(lái)實(shí)現(xiàn)機(jī)械臂的物體抓取動(dòng)作,手勢(shì)識(shí)別系統(tǒng)的步驟流程如圖5 所示。 在圖5 中,首先將機(jī)械臂處于使能狀態(tài),進(jìn)入準(zhǔn)備階段,隨后打開(kāi)攝像頭獲取手勢(shì)種類、手勢(shì)關(guān)鍵點(diǎn)和手勢(shì)水平方向的信息,通過(guò)手勢(shì)的種類控制機(jī)械臂執(zhí)行相應(yīng)的動(dòng)作,利用手勢(shì)的關(guān)鍵點(diǎn)和水平方向的信息來(lái)實(shí)現(xiàn)機(jī)械臂跟蹤手勢(shì)以及抓取物體方向的控制。
圖5 機(jī)械臂抓取物體系統(tǒng)步驟Fig. 5 Steps of mechanical arm grabbing object system
將手勢(shì)識(shí)別模塊應(yīng)用在機(jī)械臂控制中,本文主要設(shè)計(jì)了2 種應(yīng)用模式,如圖6 所示。 第一種為指令控制模式,也就是檢測(cè)到觸發(fā)類動(dòng)作時(shí)輸出該指令,隨即控制機(jī)械臂做出相應(yīng)的動(dòng)作。 第二種為跟隨模式,指檢測(cè)到手勢(shì)狀態(tài)變化時(shí)輸出該指令,接著使機(jī)械臂手爪跟隨手勢(shì)中心點(diǎn)移動(dòng),再通過(guò)檢測(cè)手勢(shì)水平方向控制跟隨移動(dòng)過(guò)程中機(jī)械臂的手爪夾持方向。
圖6 應(yīng)用模式圖Fig. 6 Application pattern diagram
3.3.1 指令控制模式
在該控制模式中,由手勢(shì)模塊將手勢(shì)信息通過(guò)串口的方式發(fā)送到PC 端,在PC 端對(duì)手勢(shì)信息進(jìn)行分析,通過(guò)手勢(shì)分析將指令發(fā)送到Sawyer 機(jī)器人。當(dāng)識(shí)別的手勢(shì)為兩指時(shí),機(jī)械臂的手爪夾緊;當(dāng)檢測(cè)的手勢(shì)為空鼠時(shí)候,機(jī)械臂的手爪張開(kāi),如圖7 所示。 當(dāng)檢測(cè)的手勢(shì)為張開(kāi)手掌時(shí),機(jī)械臂進(jìn)行搖頭操作。 指令模式下手勢(shì)對(duì)應(yīng)指令見(jiàn)表2。
表2 指令模式下手勢(shì)對(duì)應(yīng)指令Tab. 2 Instructions gesture correspond to gestures in instruction mode
圖7 指令控制實(shí)驗(yàn)結(jié)果圖Fig. 7 Command control experiment result chart
3.3.2 跟隨控制模式
在這種控制模式下,機(jī)械臂不僅實(shí)現(xiàn)指令控制,而且可以跟隨手勢(shì)中心點(diǎn)移動(dòng),完成準(zhǔn)確的物體夾取動(dòng)作。 跟隨模式實(shí)驗(yàn)結(jié)果如圖8 所示。
圖8 跟隨模式實(shí)驗(yàn)結(jié)果圖Fig. 8 Experiment result diagram of in follow-up mode
當(dāng)檢測(cè)的手勢(shì)為手掌變OK 時(shí),進(jìn)入跟隨模式,手爪跟隨手勢(shì)中心點(diǎn)移動(dòng)同時(shí)根據(jù)手勢(shì)水平方向的夾角來(lái)調(diào)整手爪的夾持方向。 當(dāng)檢測(cè)的手勢(shì)為OK變手掌時(shí),退出跟隨控制,稍后就可以利用指令控制進(jìn)行物體的夾取。 跟隨模式下手勢(shì)對(duì)應(yīng)指令見(jiàn)表3。表3 中,GHA(Gesture horizontal angle)表示手勢(shì)中1,10 兩個(gè)關(guān)鍵點(diǎn)與水平方向的夾角。
表3 跟隨模式下手勢(shì)對(duì)應(yīng)指令Tab. 3 Instructions corresponding to gestures in follow-up mode
本文利用視覺(jué)識(shí)別的方法實(shí)現(xiàn)了手勢(shì)對(duì)機(jī)械臂的控制,最終的效果為機(jī)械臂跟隨手掌移動(dòng)到指定位置后完成抓取動(dòng)作。 本文設(shè)計(jì)了多種手勢(shì)動(dòng)作,進(jìn)行了機(jī)械臂的控制實(shí)驗(yàn),而后通過(guò)對(duì)YOLOv4 算法的改進(jìn),在訓(xùn)練結(jié)果中引入了手勢(shì)方向的訓(xùn)練,從而有效實(shí)現(xiàn)了在跟隨手掌移動(dòng)過(guò)程中手爪夾持方向的問(wèn)題,讓機(jī)械臂的控制更加靈活。