張楊 朱霞 丁文靜 卜飏 陸怡霖
(金陵科技學(xué)院 網(wǎng)絡(luò)與通信工程學(xué)院 江蘇省南京市 211116)
貨車(chē)盲區(qū)[1,2,3]研究點(diǎn)由于貨車(chē)存在多方位的視覺(jué)盲區(qū)[5],使得駕駛員無(wú)法充分觀察周?chē)h(huán)境,易發(fā)生交通事故。因此開(kāi)發(fā)可靠安全的貨車(chē)盲區(qū)檢測(cè)系統(tǒng)[4,5]對(duì)道路車(chē)輛交通安全有較大的意義。本文通過(guò)結(jié)合科研項(xiàng)目,通過(guò)YOLOv3[6,7,8]算法大幅度地提高了檢測(cè)精度和檢測(cè)速度,實(shí)現(xiàn)檢測(cè)的準(zhǔn)確性和快速性。所設(shè)計(jì)檢測(cè)系統(tǒng)通過(guò)多角度全方面檢測(cè)貨車(chē)盲區(qū),并及時(shí)警報(bào),為貨車(chē)司機(jī)提供真正的駕駛便利,讓公路交通擁有更高的安全保障。
YOLO 算法全稱(chēng)You Only Look Once,最早由Joseph Redmon等人提出,其原理是將待檢測(cè)的圖片轉(zhuǎn)換為矩陣數(shù)據(jù)作為卷積神經(jīng)網(wǎng)絡(luò)的輸入,最后使用OpenCV 開(kāi)源計(jì)算機(jī)視覺(jué)庫(kù)在輸出層直接標(biāo)記出回歸的目標(biāo)框的位置和類(lèi)別信息。YOLO 算法最大的創(chuàng)新在于將物體檢測(cè)作為回歸問(wèn)題來(lái)求解,實(shí)現(xiàn)了端到端的結(jié)構(gòu)。YOLOv1算法在檢測(cè)速度方面較CNN[9]算法有一定的提升,但也存在目標(biāo)定位準(zhǔn)確度低、針對(duì)小目標(biāo)檢測(cè)效果較差和計(jì)算量大等缺陷。YOLOv2 在YOLOv1 算法上進(jìn)行了改進(jìn),參考了SSD[10]網(wǎng)絡(luò),使用3*3 卷積核,在每一次池化操作之后都會(huì)把通道的數(shù)量翻倍,在檢測(cè)速度上有一定的提升,但仍有一些缺陷需要改進(jìn)。

圖1:YOLOv3 結(jié)構(gòu)圖

圖2:系統(tǒng)架構(gòu)圖
YOLOv3 算法是在YOLO 以及YOLO2 算法的基礎(chǔ)上繼續(xù)進(jìn)行優(yōu)化算法,實(shí)現(xiàn)快速的多尺度的檢測(cè),修改了損失函數(shù)和anchor box 的數(shù)目,改進(jìn)了特征提取網(wǎng)絡(luò)。在檢測(cè)精度和速度上都有很大的提高,其使用殘差神經(jīng)網(wǎng)絡(luò)(Darknet-53)作為全卷機(jī)神經(jīng)網(wǎng)絡(luò)隱藏層進(jìn)行特征提取,大量使用殘差的跳層連接并且為了降低網(wǎng)絡(luò)池化帶來(lái)的梯度負(fù)面效果,該神經(jīng)網(wǎng)絡(luò)直接摒棄了POOLing,使用函數(shù)conv2d 中的stride 參數(shù)實(shí)現(xiàn)降采樣,使得速度更快,在預(yù)測(cè)輸出模塊的架構(gòu)中,YOLOv3 中采用了類(lèi)似FPN (Feature Pyramid Network)算法中的upsample 融合做法,對(duì)多尺度的特征圖進(jìn)行識(shí)別目標(biāo)的預(yù)測(cè),即在三種不同尺度上,每個(gè)尺度上的每個(gè)單元格都會(huì)預(yù)測(cè)出三個(gè)邊界框。

圖3:人車(chē)檢測(cè)

圖4:小型物體檢測(cè)
按照YOLO9000,使用維度簇來(lái)預(yù)測(cè)邊界框。網(wǎng)絡(luò)為每一個(gè)邊界框tx,ty,tw,th預(yù)測(cè)4 個(gè)坐標(biāo)。(cx, cy)作為單元格中相對(duì)于從圖像位置的左上角偏移值,(pw, ph)為對(duì)應(yīng)尺度錨框的長(zhǎng)和寬,而且邊界框已預(yù)先設(shè)定好寬度和高度pw,ph預(yù)測(cè)對(duì)應(yīng)于如下方程:

在圖像訓(xùn)練的過(guò)程中,通常用使用平方誤差損失的和的方法。若某個(gè)坐標(biāo)預(yù)測(cè)的標(biāo)定過(guò)的真值是t*,梯度標(biāo)定過(guò)的真值減去我們預(yù)測(cè)的值:?t*? t*.真值可以較為容易的反推上述方程。
YOLOv3 使用邏輯回歸來(lái)預(yù)測(cè)每一個(gè)邊界框的對(duì)象分?jǐn)?shù)。如果邊界框比其他邊界框與真值對(duì)象重疊更多,該值為1;如果邊界框具有維度尺寸先驗(yàn)和位置預(yù)測(cè)的邊界框。預(yù)測(cè)長(zhǎng)方體的寬度和高度為群集質(zhì)心的偏移量,使用Sigmoid 函數(shù)預(yù)測(cè)盒子相對(duì)于過(guò)濾應(yīng)用位置中心坐標(biāo)。
YOLOv3 共包含圖1 所示的三個(gè)模塊,分別受Darkent53 特征提取模塊,F(xiàn)PN(Feature Pyramid Network)特征金字塔和預(yù)測(cè)分支模塊。
如圖2 為基于YOLOv3 的貨車(chē)盲區(qū)檢測(cè)系統(tǒng)的架構(gòu)圖。首先通過(guò)攝像頭進(jìn)行圖像采集,將采集到的圖片通過(guò)攝像頭傳送到處理器,使用OpenCV 算法,先將圖像進(jìn)行預(yù)處理,再通過(guò)Coco 數(shù)據(jù)集、TinyYOLOv3。過(guò)濾之后再進(jìn)行圖像分析和圖像標(biāo)志疊加。
本實(shí)驗(yàn)所用的環(huán)境操作系統(tǒng)為Ubuntu16.04,所用的硬件為樹(shù)莓派4B,其系統(tǒng)環(huán)境為openeuler 20.09,顯卡型號(hào)為Nvidia GTX2060 8G,實(shí)驗(yàn)基于GPU 運(yùn)行,開(kāi)發(fā)環(huán)境為PyCharm,所用到的開(kāi)發(fā)包有OpenCv、NumPy 和imutils。
在本次實(shí)驗(yàn)的訓(xùn)練模型中,通過(guò)可視化的訓(xùn)練輸出參數(shù)loss 曲線變化設(shè)定不同參數(shù),得到多個(gè)訓(xùn)練模型。以精確率(Precision)、召回率(Recall)、平均精度(AP)、均值平均精度(mAP)和檢測(cè)速度作為衡量模型的指標(biāo)。其中檢測(cè)速度對(duì)于貨車(chē)盲區(qū)的目標(biāo)實(shí)時(shí)檢測(cè)來(lái)說(shuō),是否滿(mǎn)足實(shí)時(shí)的檢測(cè)要求相當(dāng)重要。
本文通過(guò)圖片采用YOLOv3 算法得到模型對(duì)于測(cè)試集的貨車(chē)盲區(qū)物體進(jìn)行檢測(cè)可視化。在項(xiàng)目實(shí)驗(yàn)過(guò)程中,模擬公路場(chǎng)景,將攝像頭安裝在模型貨車(chē)上,通過(guò)自行車(chē)、行人和障礙物等作為目標(biāo)檢測(cè)對(duì)象進(jìn)行跟蹤識(shí)別來(lái)實(shí)現(xiàn),如圖3、圖4 所示。
隨著互聯(lián)網(wǎng)環(huán)境下物流行業(yè)的飛速發(fā)展,公路運(yùn)輸也成為運(yùn)輸?shù)闹е?,而貨?chē)盲區(qū)的存在會(huì)對(duì)貨車(chē)駕駛、公路交通造成巨大的危害。本文將YOLO3 算法應(yīng)用到貨車(chē)盲區(qū)物體跟蹤及自動(dòng)檢測(cè)系統(tǒng),通過(guò)實(shí)驗(yàn)仿真以及實(shí)際的應(yīng)用驗(yàn)證了該系統(tǒng)的可行性以及在盲區(qū)檢測(cè)過(guò)程中的快速性、準(zhǔn)確性和魯棒性,技術(shù)的成本以及實(shí)現(xiàn)等方面都是貼近市場(chǎng)、較為合理的。當(dāng)然該系統(tǒng)也存在不足,對(duì)于較小的事物識(shí)別率較低,因此,將來(lái)有必要將算法進(jìn)一步的優(yōu)化從未來(lái)發(fā)展的角度看,貨車(chē)盲區(qū)檢測(cè)系統(tǒng)將會(huì)被廣泛使用。