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