馬 立,鞏笑天,歐陽(yáng)航空
(上海大學(xué) 機(jī)電工程與自動(dòng)化學(xué)院,上海 200444)
隨著社會(huì)發(fā)展和科技進(jìn)步,無(wú)人駕駛車(chē)輛成為未來(lái)交通的一大趨勢(shì)。目標(biāo)檢測(cè)方法是無(wú)人駕駛系統(tǒng)必不可少的部分,可分為淺層學(xué)習(xí)和深度學(xué)習(xí)兩種方法。淺層學(xué)習(xí)一般根據(jù)模板和圖像穩(wěn)定的特征點(diǎn)獲得模板與場(chǎng)景中對(duì)象的對(duì)應(yīng)關(guān)系來(lái)檢測(cè)目標(biāo),使用 AdaBoost[1]和Canny[2]等特征提取方法和粒子群SVM(Support Vector Machine)[3]等分類(lèi)方法進(jìn)行檢測(cè)。近年來(lái),隨著硬件運(yùn)算能力提高,基于卷積神經(jīng)網(wǎng)絡(luò)的深度學(xué)習(xí)[4]得到迅速發(fā)展。相比淺層學(xué)習(xí),深度學(xué)習(xí)能夠更好地提取特征,目前分為兩種:一種是結(jié)合預(yù)測(cè)框和卷積神經(jīng)網(wǎng)絡(luò)分類(lèi),為二階段算法,以R-CNN[5-7]系列為主要發(fā)展方向,雖然檢測(cè)精度大幅提升,但是速度非常慢;另一種是將分類(lèi)和預(yù)測(cè)合并為一步,為單階段算法,以SSD(Single Shot MultiBox Detector)[8]系列和YOLO(You Only Look Once)[9-11]系列為主,通過(guò)卷積網(wǎng)絡(luò)提取特征,直接預(yù)測(cè)邊界框坐標(biāo)和類(lèi)別。YOLOV3是YOLO系列最新的目標(biāo)檢測(cè)算法,融合了特征金字塔[12],借鑒了殘差網(wǎng)絡(luò)[13]和多尺度預(yù)測(cè)網(wǎng)絡(luò)[14-15],大幅提升了目標(biāo)檢測(cè)速度和準(zhǔn)確率。 但這些算法模型較大,對(duì)嵌入式系統(tǒng)來(lái)說(shuō),無(wú)法滿足實(shí)時(shí)性要求,不適用于無(wú)人駕駛實(shí)際場(chǎng)景。
Tiny YOLOV3是YOLOV3的簡(jiǎn)化版本,卷積層數(shù)大幅減少,模型結(jié)構(gòu)簡(jiǎn)單,不需占用大量?jī)?nèi)存,是目前最快的目標(biāo)實(shí)時(shí)檢測(cè)算法,但檢測(cè)精度較低,尤其是在行人等小目標(biāo)檢測(cè)[16-17]中,漏檢率較高。本文針對(duì)這一問(wèn)題展開(kāi)研究,在特征提取網(wǎng)絡(luò)階段添加2步長(zhǎng)的卷積層,深化的網(wǎng)絡(luò)可以更好地提取特征,提高檢測(cè)精度,但增加卷積層數(shù),會(huì)導(dǎo)致參數(shù)量劇增,這將極大地增加計(jì)算量并占用內(nèi)存資源,因此本文采用深度可分離卷積構(gòu)造反殘差塊,在提高檢測(cè)精度的同時(shí)實(shí)現(xiàn)快速計(jì)算以滿足實(shí)時(shí)檢測(cè)要求。改進(jìn)預(yù)測(cè)網(wǎng)絡(luò)和損失函數(shù),實(shí)現(xiàn)三尺度預(yù)測(cè),進(jìn)一步提高檢測(cè)精度。
Tiny YOLOV3算法是在 YOLOv3算法基礎(chǔ)上應(yīng)用于嵌入式平臺(tái)的輕量級(jí)實(shí)時(shí)檢測(cè)算法,在檢測(cè)精度上有所降低,但是實(shí)現(xiàn)了模型壓縮,Tiny YOLOV3 將 YOLOv3 特征檢測(cè)網(wǎng)絡(luò) darknet-53 縮減為 7 層傳統(tǒng)卷積和 6 層 Max Pooling(最大池化)層,采用 13×13、26×26 兩尺度預(yù)測(cè)網(wǎng)絡(luò)對(duì)目標(biāo)進(jìn)行預(yù)測(cè),網(wǎng)絡(luò)結(jié)構(gòu)如圖 1 所示。
圖1 Tiny YOLOV3網(wǎng)絡(luò)結(jié)構(gòu)Fig.1 Tiny YOLOV3 network structure
Tiny YOLOv3 將輸入圖像劃分為S×S的網(wǎng)格,在每個(gè)網(wǎng)格內(nèi)預(yù)測(cè)B個(gè)邊界框,對(duì)C類(lèi)目標(biāo)進(jìn)行檢測(cè),輸出每類(lèi)目標(biāo)的邊界框和置信度。置信度由每個(gè)網(wǎng)格中包含檢測(cè)目標(biāo)的概率和輸出邊界框的準(zhǔn)確度共同確定,其公式為:
(1)
Tiny YOLOv3 的損失函數(shù)Loss主要從邊界框位置誤差項(xiàng)、邊界框的置信度誤差項(xiàng)以及分類(lèi)預(yù)測(cè)誤差項(xiàng)3個(gè)方面定義:
(2)
其中:第1、2項(xiàng)為位置坐標(biāo)誤差項(xiàng),第3、4項(xiàng)為置信度誤差項(xiàng),第5項(xiàng)為分類(lèi)預(yù)測(cè)誤差項(xiàng)。
傳統(tǒng)卷積的參數(shù)計(jì)算量隨著卷積層數(shù)增加而大幅增長(zhǎng),本文使用深度可分離卷積代替?zhèn)鹘y(tǒng)卷積,將傳統(tǒng)卷積轉(zhuǎn)變?yōu)樯疃染矸e和逐點(diǎn)卷積兩部分,可有效減少模型大小的參數(shù)計(jì)算量。但這種方法會(huì)隨著卷積層數(shù)增加而出現(xiàn)梯度消失問(wèn)題,殘差結(jié)構(gòu)能夠解決這個(gè)問(wèn)題,但殘差結(jié)構(gòu)會(huì)壓縮特征圖損害特征表達(dá)。本文在特征提取過(guò)程中采用反殘差塊,先通過(guò)1×1 卷積擴(kuò)張通道,然后用3×3 的深度卷積提取高維空間特征,最后再通過(guò)1×1 的點(diǎn)卷積層將深度卷積結(jié)果映射到新的通道空間。殘差塊與反殘差塊結(jié)構(gòu)如圖2所示。圖中:n為輸入通道數(shù),t為擴(kuò)充或壓縮通道的倍數(shù),C為通道數(shù)。本文反殘差塊參數(shù)見(jiàn)表1。表1中:h,w分別為特征圖的高和寬;n為特征圖的通道數(shù);s為步長(zhǎng)。
圖2 殘差塊與反殘差塊結(jié)構(gòu)Fig.2 Figure 2 residual block and anti-residual block structure
表1 反殘差塊參數(shù)
Tab.1 Anti-residual block parameter
輸入卷積輸出h×w×n Conv 1×1, Reluh×w×2nh×w×2n Conv DW 3×3, Reluh/s×w/s×2nh/s×w/s×2nConv 1×1 h/s×w/s×2n
為了解決Tiny YOLOv3對(duì)行人等小目標(biāo)檢測(cè)精度低,漏檢率高的問(wèn)題,本文在原有網(wǎng)絡(luò)基礎(chǔ)上進(jìn)行改進(jìn),網(wǎng)絡(luò)結(jié)構(gòu)如圖 3 所示,其中,ARB為反殘差塊(Anti-Residual Block),虛線框中為網(wǎng)絡(luò)特征提取部分。
在特征提取網(wǎng)絡(luò)中,通過(guò)增加卷積層提高特征提取量,用步長(zhǎng)為2 的卷積代替原網(wǎng)絡(luò)中的最大池化層進(jìn)行下采樣,并用深度可分離卷積構(gòu)造的反殘差塊代替?zhèn)鹘y(tǒng)卷積。改進(jìn)的網(wǎng)絡(luò)由12個(gè)反殘差塊構(gòu)成,通過(guò)反殘差塊,擴(kuò)張?zhí)卣鲌D通道提取高維特征,再進(jìn)行通道降維,得到特征圖。在增加特征提取的同時(shí),有效降低模型尺寸和參數(shù)計(jì)算量。同時(shí),在原網(wǎng)絡(luò)26×26、13×13兩尺度預(yù)測(cè)目標(biāo)的基礎(chǔ)上增加一上采樣層upsample,形成52×52、26×26、13×13三尺度預(yù)測(cè),進(jìn)一步提高目標(biāo)檢測(cè)準(zhǔn)確率。
表2列出了YOLOV3,Tiny YOLOV3及本文改進(jìn)的網(wǎng)絡(luò)模型大小及處理一張圖片所需要的計(jì)算量??梢钥闯觯疚母倪M(jìn)后的網(wǎng)絡(luò)模型與Tiny YOLOV3相比,模型尺寸僅大0.4 M,處理一張圖片所需計(jì)算量增加0.17GFLOPs,遠(yuǎn)小于YOLOV3模型計(jì)算量,在模型大小和運(yùn)算量上極具優(yōu)勢(shì),滿足嵌入式系統(tǒng)實(shí)時(shí)檢測(cè)要求。
表2 不同網(wǎng)絡(luò)模型大小及計(jì)算量
圖3 改進(jìn)的Tiny YOLOV3網(wǎng)絡(luò)模型Fig.3 Improved Tiny YOLOV3 network model
交并比(Intersection Over Union,IOU)度量預(yù)測(cè)框和真實(shí)框之間的交并集,是在目標(biāo)檢測(cè)基準(zhǔn)中使用的最流行的評(píng)估方法,但是在預(yù)測(cè)框和真實(shí)框無(wú)交集的情況下不能進(jìn)行度量評(píng)估。為此,本文對(duì)損失函數(shù)中邊界框位置誤差項(xiàng)進(jìn)行優(yōu)化,采用廣義交并比(Generalized Intersection Over Union,GIOU)解決這個(gè)問(wèn)題。GIOU為IOU與不含最小封閉面的預(yù)測(cè)框真實(shí)框交集與最小封閉面的比值的差。交并比和廣義交并比的定義如式(3)和式(4):
(3)
(4)
其中:A表示真實(shí)框,B表示預(yù)測(cè)框,C表示預(yù)測(cè)框和真實(shí)框之間的最小封閉面。
使用GIOU檢測(cè)目標(biāo)時(shí),比較兩個(gè)軸對(duì)齊的邊界框,真實(shí)框和預(yù)測(cè)框組成的交叉面和最小封閉面均為矩形,可用解析解來(lái)計(jì)算。
(5)
(6)
預(yù)測(cè)框與真實(shí)框的交集I為:
I=
預(yù)測(cè)框與真實(shí)框的最小封閉面Mc為:
(7)
最小封閉面面積Nc為:
(8)
則Mp和Mg的IOU 和GIOU公式為:
(9)
(10)
由式(5)~式(10)可以看出,GIOU能更加準(zhǔn)確地描述預(yù)測(cè)框和真實(shí)框的距離,對(duì)訓(xùn)練和檢測(cè)效果更好,所以,本文在原損失函數(shù)中的位置誤差項(xiàng)使用GIOU替換IOU。
本文中的整個(gè)實(shí)驗(yàn)在以TensorFlow為后端的keras中實(shí)現(xiàn),實(shí)驗(yàn)環(huán)境為:Cuda 9.0加速;硬件配置為AMD Ryzen 5 Six-Core Processor@3.4 GHz、GeForce GTX 1080Ti 顯卡;操作系統(tǒng)為:Ubuntu 18.04.1 LTS??偟螖?shù)為50 020,初始學(xué)習(xí)率設(shè)置為0.001,在40 000次迭代之后,學(xué)習(xí)率為0.000 1,小批量設(shè)置為16,細(xì)分設(shè)置為4,權(quán)重衰減系數(shù)設(shè)定為0.000 5,動(dòng)量系數(shù)設(shè)定為0.9。訓(xùn)練時(shí),模型的輸入大小每次迭代改變10次,這樣最終的模型對(duì)不同尺寸的圖像具有更好的檢測(cè)效果。
針對(duì)所研究的問(wèn)題,本文使用混合數(shù)據(jù)集。首先使用自動(dòng)駕駛數(shù)據(jù)集KITTI,將原始數(shù)據(jù)集8個(gè)類(lèi)別重新劃分:將汽車(chē),卡車(chē)和貨車(chē)合并為機(jī)動(dòng)車(chē)類(lèi);行人,坐著的行人和騎車(chē)的人合并為人類(lèi);最后兩項(xiàng)電車(chē)和雜項(xiàng)刪除。最終得到的訓(xùn)練樣本數(shù)量為:機(jī)動(dòng)車(chē)33 250個(gè)、行人4 900個(gè)。削減KITTI中機(jī)動(dòng)車(chē)數(shù)量,與INRIA行人數(shù)據(jù)集、VOC2007行人數(shù)據(jù)集混合,最終得到共50 000張圖片的混合數(shù)據(jù)集,其中車(chē)類(lèi)和人類(lèi)比例接近1∶1,防止數(shù)據(jù)集中樣本差距過(guò)大導(dǎo)致的過(guò)擬合問(wèn)題,其中70%用于訓(xùn)練,20%用于驗(yàn)證,10%用于測(cè)試?;旌蠑?shù)據(jù)集背景復(fù)雜,行人姿態(tài)多樣,遮擋的程度和樣本目標(biāo)的大小不同,可以得到更好的訓(xùn)練效果和模型泛化能力。
為了評(píng)估改進(jìn)算法的準(zhǔn)確率,將KITTI、INRIA、VOC、混合數(shù)據(jù)集分別在YOLOV3,Tiny YOLOV3和本文改進(jìn)算法中訓(xùn)練并驗(yàn)證測(cè)試,計(jì)算平均精度均值(mAP)和檢測(cè)速度(FPS)。測(cè)試結(jié)果如表3所示。
由表3可以看出,本文使用混合數(shù)據(jù)集訓(xùn)練后的檢測(cè)平均精度均值高于各單個(gè)數(shù)據(jù)集,能得到更好的訓(xùn)練效果和檢測(cè)結(jié)果。YOLOV3的檢測(cè)準(zhǔn)確率遠(yuǎn)高于Tiny YOLOV3和本文改進(jìn)的算法,但其網(wǎng)絡(luò)的模型大,參數(shù)多,計(jì)算量大,從而導(dǎo)致FPS低,不適用于汽車(chē)的嵌入式設(shè)備對(duì)目標(biāo)的實(shí)時(shí)檢測(cè)。對(duì)比Tiny YOLOV3和本文改進(jìn)的算法,雖然FPS下降了2.8,檢測(cè)速度稍慢,但仍高于YOLOV3,滿足實(shí)時(shí)檢測(cè)要求。
表3 各算法用不同數(shù)據(jù)集訓(xùn)練后的測(cè)試結(jié)果
Tab.3 Test results of algorithms trained with different data sets
數(shù)據(jù)集算法名稱mAP/%FPS/(frame·s-1)KITTIYOLOV383.623.6Tiny YOLOV360.335.5改進(jìn)算法70.132.7INRIAYOLOV375.823.6Tiny YOLOV346.935.5改進(jìn)算法65.732.7VOCYOLOV381.223.6Tiny YOLOV358.335.5改進(jìn)算法68.132.7混合數(shù)據(jù)集YOLOV385.123.6Tiny YOLOV361.435.5改進(jìn)算法71.232.7
表4 各算法在混合數(shù)據(jù)集上檢測(cè)結(jié)果
Tab.4 Detection results of algorithm on a mixed data set
算法名稱類(lèi)別AP/%mAP/%YOLOV3機(jī)動(dòng)車(chē)87.3高度小于16 pxl的行人76.585.1高度為16~32 pxl的行人85.5高度大于32 pxl的行人86.7Tiny YOLOV3機(jī)動(dòng)車(chē)75.6高度小于16 pxl的行人38.661.4高度為16~32 pxl的行人45.3高度大于32pxl的行人57.7改進(jìn)算法機(jī)動(dòng)車(chē)76.3高度小于16 pxl的行人58.371.2高度為16~32 pxl的行人67.1高度大于32 pxl的行人72.9
表4為各算法在混合數(shù)據(jù)集上的檢測(cè)結(jié)果,本文改進(jìn)的算法對(duì)機(jī)動(dòng)車(chē)的檢測(cè)準(zhǔn)確率比Tiny YOLOV3提高0.7%,對(duì)高度小于16 pxl、高度為16~32 pxl、高度大于32 pxl的行人檢測(cè)準(zhǔn)確率比Tiny YOLOV3分別提高了19.7%、21.8%、15.2%,平均準(zhǔn)確率為71.2%,比Tiny YOLOV3算法61.4%的平均準(zhǔn)確率提高了9.8%,在保證實(shí)時(shí)檢測(cè)的前提下,提高了目標(biāo)檢測(cè)精度。
圖4是本文算法的真實(shí)場(chǎng)景檢測(cè)結(jié)果,并與Tiny YOLOV3檢測(cè)結(jié)果進(jìn)行比較。其中圖4(a)~圖4(e)為T(mén)iny YOLOV3檢測(cè)結(jié)果,圖4(f)~圖4(j)為相同情況下改進(jìn)算法的檢測(cè)結(jié)果。a1中,漏檢了左側(cè)高度小于16 pxl的行人,圖4(f)中無(wú)行人漏檢;圖4(b)中將兩個(gè)高度小于16 pxl的行人檢測(cè)為一人,圖4(g)中正確檢測(cè)為兩人;圖4(c)中,漏檢了遠(yuǎn)處高度為16~32 pxl的行人,圖4(h)中無(wú)行人漏檢;圖4(d)中漏檢了汽車(chē)遮擋身體的高度為16~32 pxl的行人,圖4(i)準(zhǔn)確檢測(cè)出行人;圖4(e)中,漏檢了右側(cè)高度小于16 pxl和高度為16~32 pxl的行人,圖4(j)中無(wú)行人漏檢??梢钥闯?,本文改進(jìn)算法對(duì)行人等小目標(biāo)有更好的檢測(cè)效果,并且在光線較弱的環(huán)境下仍有良好的檢測(cè)結(jié)果,這表明改進(jìn)算法對(duì)復(fù)雜實(shí)時(shí)環(huán)境具有良好的適應(yīng)性,能更準(zhǔn)確地檢測(cè)目標(biāo)。
圖4 實(shí)驗(yàn)結(jié)果Fig.4 Experimental results
本文改進(jìn)的Tiny YOLOV3算法,不僅通過(guò)在特征提取網(wǎng)絡(luò)增加卷積層數(shù)提高了目標(biāo)特征提取量,還通過(guò)深度可分離卷積構(gòu)造反殘差塊替換傳統(tǒng)卷積降低了網(wǎng)絡(luò)模型尺寸和參數(shù)計(jì)算量,保證目標(biāo)檢測(cè)速度。同時(shí),通過(guò)在預(yù)測(cè)網(wǎng)絡(luò)增加尺度形成三尺度預(yù)測(cè)更好的檢測(cè)行人等小目標(biāo)。最后,通過(guò)優(yōu)化損失函數(shù)中的邊界框位置誤差項(xiàng)進(jìn)一步提高了目標(biāo)檢測(cè)準(zhǔn)確率。通過(guò)在制作的混合數(shù)據(jù)集中訓(xùn)練后的實(shí)驗(yàn)結(jié)果表明:改進(jìn)的Tiny YOLOV3算法目標(biāo)檢測(cè)準(zhǔn)確率為71.2%,比原算法提高了9.8%,F(xiàn)PS為32.7 frame/s,滿足實(shí)時(shí)檢測(cè)要求。雖然改進(jìn)后算法的目標(biāo)檢測(cè)準(zhǔn)確率有所提高,但仍無(wú)法滿足精度要求,跟大型檢測(cè)網(wǎng)絡(luò)相比還有較大差距,如何在滿足實(shí)時(shí)檢測(cè)的要求下進(jìn)一步提高準(zhǔn)確率,這是下一步工作要努力的方向。