周裔揚(yáng),鄧三鵬,祁宇明,王 振,陳 偉,李丁丁
(1.天津職業(yè)技術(shù)師范大學(xué)機(jī)器人及智能裝備研究院,天津 300222;2.天津市智能機(jī)器人技術(shù)及應(yīng)用企業(yè)重點(diǎn)實(shí)驗(yàn)室,天津 300352)
移動(dòng)機(jī)器人目標(biāo)檢測(cè)是機(jī)器人對(duì)抗、軍事偵察和物料搬運(yùn)等領(lǐng)域的關(guān)鍵技術(shù)。移動(dòng)機(jī)器人通過(guò)所部署的視覺(jué)傳感器了解周?chē)膹?fù)雜環(huán)境,識(shí)別周?chē)哪繕?biāo),并對(duì)其進(jìn)行定位。近年來(lái),基于深度學(xué)習(xí)的目標(biāo)檢測(cè)算法在檢測(cè)效果方面取得了進(jìn)展,同傳統(tǒng)方法相比,在復(fù)雜環(huán)境下的準(zhǔn)確率和檢測(cè)速度有著質(zhì)的飛躍。深度學(xué)習(xí)檢測(cè)算法在語(yǔ)音識(shí)別、圖像識(shí)別和自然語(yǔ)言處理等領(lǐng)域得到應(yīng)用,基于卷積神經(jīng)網(wǎng)絡(luò)的移動(dòng)機(jī)器人檢測(cè)算法具有廣泛的應(yīng)用前景和重大的實(shí)用價(jià)值[1]。卷積神經(jīng)網(wǎng)絡(luò)是一種通過(guò)對(duì)現(xiàn)有的大量數(shù)據(jù)進(jìn)行訓(xùn)練從而搭建一個(gè)具有特定特征的模型來(lái)進(jìn)行特征學(xué)習(xí)的機(jī)器學(xué)習(xí)方法,目前為止已經(jīng)有R-CNN,F(xiàn)aster R-CNN,F(xiàn)ast R-CNN 和YOLO 等檢測(cè)算法。YOLO 采用徹底的端到端的檢測(cè)方法,不需要區(qū)域建議尋找目標(biāo),具有檢測(cè)速度快,背景誤判率低等優(yōu)點(diǎn)[2]。目前經(jīng)過(guò)幾年的更新迭代,已經(jīng)更新到Y(jié)OLOv5。
Yolov5 目標(biāo)檢測(cè)網(wǎng)絡(luò)中有Yolov5s、Yolov5m、Yolov5l 和Yolov5x 一共四個(gè)版本。Yolov5s 網(wǎng)絡(luò)是Yolov5 系列中深度最小,特征圖寬度最小的網(wǎng)絡(luò),是其它3 種的基礎(chǔ)。鑒于研究的檢測(cè)目標(biāo)是移動(dòng)機(jī)器人,根據(jù)檢測(cè)的目標(biāo)大小,為了保證檢測(cè)目標(biāo)的速度和精度以及后續(xù)的研究目的,由此選擇Yolov5s 作為主干網(wǎng)絡(luò)。Yolov5s 的網(wǎng)絡(luò)結(jié)構(gòu)如圖1 所示。
圖1 YOLOv5 的網(wǎng)絡(luò)結(jié)構(gòu)
YOLOv5 核心的運(yùn)行流程為:
(1)輸入端部分:輸入端首先使用Mosaic 數(shù)據(jù)增強(qiáng)的方式對(duì)數(shù)據(jù)集進(jìn)行隨機(jī)縮放、隨機(jī)裁剪、隨機(jī)排布,通過(guò)選取4 張圖片進(jìn)行拼接后投入訓(xùn)練,這樣的方式豐富了圖像的背景,同時(shí)也增強(qiáng)了網(wǎng)絡(luò)檢測(cè)小目標(biāo)的能力,大大提高了網(wǎng)絡(luò)的魯棒性[3]。在YOLO算法中,根據(jù)數(shù)據(jù)集的差異,初始都會(huì)有設(shè)定長(zhǎng)寬的錨框。在訓(xùn)練過(guò)程中,網(wǎng)絡(luò)會(huì)在初始錨框的基礎(chǔ)上,先輸出預(yù)測(cè)框然后同真實(shí)框ground truth 進(jìn)行比較,計(jì)算出雙方的差距,再反向更新錨框,迭代網(wǎng)絡(luò)參數(shù),這樣就可以獲取訓(xùn)練集中最佳的錨框值。
(2)骨干網(wǎng)絡(luò)部分:骨干網(wǎng)絡(luò)部分包括Focus 結(jié)構(gòu)和CSP 結(jié)構(gòu)。Focus 結(jié)構(gòu)指的是輸入608×608×3的圖像,隨后進(jìn)行切片操作,從而得到304×304×12的特征圖,隨后再經(jīng)過(guò)一次32 個(gè)卷積核的卷積操作,最后輸出304×304×32 的特征圖[4]。在Yolov5s中,含有兩種CSP 結(jié)構(gòu),其中,Backbone 主干網(wǎng)絡(luò)使用CSP1_X 結(jié)構(gòu),Neck 則使用CSP2_X 結(jié)構(gòu)。
(3)多尺度特征融合模塊[5]部分:多尺度特征融合模塊使用的是FPN(Feature Pyramid Networks,特征金字塔網(wǎng)絡(luò))+PAN(Pyramid Attention Network,金字塔注意力網(wǎng)絡(luò))結(jié)構(gòu)。FPN 是通過(guò)由上而下的方式將頂端的特征信息與骨干網(wǎng)絡(luò)的特征信息相融合,傳遞強(qiáng)語(yǔ)義特征信息,隨后PAN 再通過(guò)由下而上的方式進(jìn)一步實(shí)現(xiàn)強(qiáng)定位特征的傳遞。兩者相結(jié)合構(gòu)成了多尺度特征融合模塊部分,加強(qiáng)網(wǎng)絡(luò)的特征信息。
(4)預(yù)測(cè)端部分:預(yù)測(cè)端輸出3 個(gè)尺度的特征圖,分別為19×19、38×38 和76×76 的網(wǎng)格,對(duì)應(yīng)檢測(cè)大目標(biāo)、中目標(biāo)、小目標(biāo)。在最后,使用非極大值抑制(NMS)的方法,篩選掉重復(fù)冗余的預(yù)測(cè)框,保留下置信度最高的預(yù)測(cè)框信息,完成預(yù)測(cè)。
使用Varifocal Loss 替換原先的Focal Loss 來(lái)訓(xùn)練密集目標(biāo)檢測(cè)器來(lái)預(yù)測(cè)IACS(置信度和定位精度的IoU 感知分類(lèi)評(píng)分)[6]。Varifocal Loss 源自于Focal Loss。在密集目標(biāo)檢測(cè)器訓(xùn)練中,常常會(huì)有前景類(lèi)和背景類(lèi)之間及其不平衡的問(wèn)題,所以我們常常會(huì)使用Focal Loss 在解決此類(lèi)問(wèn)題。Focal Loss 定義為:
其中y∈{±1}為ground truth 類(lèi),而p∈[1,-1]則為前景類(lèi)的預(yù)測(cè)概率。如公式所示,調(diào)制因子(為前景類(lèi)和為背景類(lèi))的作用是減少簡(jiǎn)單樣例的損失貢獻(xiàn),同時(shí)相對(duì)增加誤分類(lèi)樣例的重要性。
因此,F(xiàn)ocal Loss 防止了訓(xùn)練過(guò)程中大量的簡(jiǎn)單負(fù)樣本淹沒(méi)檢測(cè)器,并將檢測(cè)器聚焦在稀疏的一組困難的例子上。
在訓(xùn)練密集目標(biāo)檢測(cè)器時(shí),通過(guò)借鑒Focal Loss的加權(quán)方法來(lái)解決在對(duì)連續(xù)IACS 進(jìn)行回歸時(shí)類(lèi)別不平衡的問(wèn)題。但與此同時(shí),不同的Focal Loss 處理的正負(fù)相等,存在不對(duì)稱(chēng)的對(duì)待。這里Varifocal loss也是基于binary cross entropy loss,定義為:
其中p為預(yù)測(cè)的IACS,代表目標(biāo)分?jǐn)?shù)。對(duì)于前景點(diǎn)時(shí),將其ground truth 類(lèi)q設(shè)為生成的邊界框和它的ground truth(gt_IoU)之間的IoU,否則為0,在對(duì)于背景點(diǎn)時(shí),所有類(lèi)的目標(biāo)q為0。
如公式所示,使用q的因子縮放損失后,Varifocal loss 僅減少了負(fù)例(q=0)的損失貢獻(xiàn),并沒(méi)有以同樣的方式降低正例(q>0)的權(quán)重。因?yàn)閜ositive 樣本相對(duì)于negatives 樣本非常罕見(jiàn),由此保留它們的學(xué)習(xí)信息。另一方面,受PISA 的啟發(fā)將正例與訓(xùn)練目標(biāo)q加權(quán)。如果一個(gè)正例的gt_IoU 比較高,則它對(duì)損失的貢獻(xiàn)就會(huì)比較大。因此需要把訓(xùn)練的重點(diǎn)放在那些高質(zhì)量的正面例子上,高質(zhì)量的正面例子同低質(zhì)量的例子相比,其可以獲得更高的AP,對(duì)訓(xùn)練也更為重要。
移動(dòng)機(jī)器人數(shù)據(jù)集包含了醫(yī)療機(jī)器人、巡邏機(jī)器人、防爆機(jī)器人、消防機(jī)器人、物流機(jī)器人等各個(gè)機(jī)器人功能領(lǐng)域,并在不同的移動(dòng)機(jī)器人移動(dòng)視頻中截取了一部分圖片作為數(shù)據(jù)集,在數(shù)據(jù)集選擇方面涵蓋了絕大部分主流的移動(dòng)機(jī)器人,同時(shí)也涵蓋了各種移動(dòng)機(jī)器人工作場(chǎng)景,具有豐富的多樣性和優(yōu)秀的泛化能力。
實(shí)驗(yàn)設(shè)計(jì)的整體框架流程圖如圖2。
圖2 整體框架流程圖
首先在平臺(tái)上訓(xùn)練好基于YOLOv5 的移動(dòng)機(jī)器人模型,然后將訓(xùn)練好的模型部署在Jetson TX2 開(kāi)發(fā)板上,移動(dòng)機(jī)器人利用攝像頭實(shí)時(shí)采集現(xiàn)場(chǎng)圖像后傳輸?shù)絁etson TX2 開(kāi)發(fā)板中進(jìn)行處理,Jetson TX2 開(kāi)發(fā)板利用訓(xùn)練好的模型實(shí)時(shí)監(jiān)測(cè)圖像中是否含有移動(dòng)機(jī)器人,最后將檢測(cè)結(jié)果通過(guò)串口發(fā)送給終端STM32,STM32 控制移動(dòng)機(jī)器人采取追蹤,撤退等操作。最終搭建的機(jī)器人系統(tǒng)硬件如圖3,RGB-D 相機(jī)固定在移動(dòng)機(jī)器人前端,處理采集環(huán)境信息的開(kāi)發(fā)板固定在移動(dòng)機(jī)器人后端。二維激光雷達(dá)位于移動(dòng)機(jī)器人最上方,其通過(guò)高速旋轉(zhuǎn)的激光發(fā)射器和接受器來(lái)獲得移動(dòng)機(jī)器人周?chē)S水平面上的點(diǎn)云信息,幫助移動(dòng)機(jī)器人獲取自身的位置,為移動(dòng)機(jī)器人自主導(dǎo)航提供支持。
圖3 移動(dòng)機(jī)器人硬件平臺(tái)
實(shí)驗(yàn)中的運(yùn)行環(huán)境:CPU 為Intel i7 9750H,GPU為NVIDIA GeForce RTX 2060,內(nèi)存為16G,操作系統(tǒng)為windows 10,安裝CUDA11.2 庫(kù)文件,開(kāi)發(fā)語(yǔ)言為Python,訓(xùn)練平臺(tái)是Pycharm,訓(xùn)練采用的深度學(xué)習(xí)框架為pytorch1.8.1。訓(xùn)練選用的batchsize 為16,epochs為300,選用的權(quán)重為YOLOv5s。
圖為改進(jìn)后的YOLOv5 網(wǎng)絡(luò)損失函數(shù)曲線(xiàn),由圖4 可以看出,訓(xùn)練模型迭代80 次后損失函數(shù)收斂。直到訓(xùn)練完成時(shí),都未產(chǎn)生過(guò)擬合的現(xiàn)象,訓(xùn)練效果理想。
圖4 改進(jìn)的YOLOv5 損失函數(shù)曲線(xiàn)
實(shí)驗(yàn)檢測(cè)效果如圖5 所示,各種類(lèi)型的移動(dòng)機(jī)器人可以被很好的檢測(cè)出來(lái)。
圖5 部分檢測(cè)識(shí)別效果
在機(jī)器學(xué)習(xí)模型評(píng)估中,混淆矩陣解析法是評(píng)價(jià)模型準(zhǔn)確度中最基本和直觀(guān)的方法?;煜仃嚾鐖D6 所示。
圖6 混淆矩陣解析法
準(zhǔn)確率(Precision)指的是所得數(shù)值與真實(shí)值之間的精確程度;預(yù)測(cè)正確的正例數(shù)占預(yù)測(cè)為正例總量的比率,一般情況下,準(zhǔn)確率越高,說(shuō)明模型的效果越好。準(zhǔn)確率公式如下:
召回率(Recall):預(yù)測(cè)對(duì)的正例數(shù)占所有正例的比率,一般情況下,Recall 越高,說(shuō)明有更多的正類(lèi)樣本被模型預(yù)測(cè)正確,模型的效果越好。召回率公式如下:
模型評(píng)估中,單一追求Precision 或者單一追求Recall 都會(huì)造成非常嚴(yán)重的錯(cuò)誤檢測(cè),所以我們需要對(duì)模型的Precision 和Recall 兩者進(jìn)行結(jié)合,綜合考量。由此我們使用mAP(mean Average Precision)對(duì)目標(biāo)檢測(cè)算法性能進(jìn)行評(píng)價(jià)。AP指的是,利用不同的Precision 和Recall 的點(diǎn)的組合作圖以后所圍成圖形的面積,這個(gè)面積就是某個(gè)類(lèi)的AP值,而mAP就是所有的類(lèi)的AP值求平均。
通過(guò)分析訓(xùn)練數(shù)據(jù),并使用Python 繪制mAP圖像,圖像如圖7。
圖7 模型性能評(píng)估
通過(guò)數(shù)據(jù)結(jié)果,該模型的mAP達(dá)到了94.6%,檢測(cè)效果優(yōu)異,絕大部分的移動(dòng)機(jī)器人樣本都可以被該模型很好的檢測(cè)出來(lái)。
為了驗(yàn)證YOLOv5 改進(jìn)算法的性能,研究選取相同的數(shù)據(jù)集并在不同的算法上進(jìn)行對(duì)比實(shí)驗(yàn)。對(duì)比實(shí)驗(yàn)包含的算法有SSD 算法、Faster R-CNN 算法、YOLOv5 算法和改進(jìn)后的YOLOv5 算法,對(duì)比結(jié)果如表1。
表1 不同算法檢測(cè)性能對(duì)比
分析數(shù)據(jù)可以看出,改進(jìn)后的YOLOv5 目標(biāo)檢測(cè)算法相對(duì)于Faster R-CNN 算法和SSD 算法的各項(xiàng)模型評(píng)估指標(biāo)都有顯著提升。而比起改進(jìn)前的YOLOv5目標(biāo)檢測(cè)算法在mAP上提升了1.69%,識(shí)別速度也達(dá)到了89 幀/秒。
研究將YOLOv5 目標(biāo)檢測(cè)網(wǎng)絡(luò)模型應(yīng)用到移動(dòng)機(jī)器人目標(biāo)檢測(cè)領(lǐng)域,使用訓(xùn)練集對(duì)目標(biāo)檢測(cè)網(wǎng)絡(luò)模型迭代80 次后損失函數(shù)收斂。通過(guò)使用Varifocal Loss 替換原先的Focal Loss 來(lái)訓(xùn)練密集目標(biāo)檢測(cè)器來(lái)預(yù)測(cè)IACS 改進(jìn)后的檢測(cè)網(wǎng)絡(luò)性能提升,目標(biāo)檢測(cè)模型mAP 達(dá)到94.6%,且對(duì)環(huán)境具有一定的魯棒性,實(shí)現(xiàn)了移動(dòng)機(jī)器人的目標(biāo)檢測(cè)精確度提升。但移動(dòng)機(jī)器人種類(lèi)較多,后續(xù)將在數(shù)據(jù)集完善、提高不同情形下的識(shí)別準(zhǔn)確率等方面進(jìn)一步研究。