胡臣辰,陳賢富
(中國科學(xué)技術(shù)大學(xué) 微電子學(xué)院,安徽 合肥 230027)
車輛是目標(biāo)檢測(cè)任務(wù)中的重要對(duì)象之一,在自動(dòng)駕駛、目標(biāo)追蹤等領(lǐng)域有著十分重要的應(yīng)用。以梯度方向直方圖(Histogram of Oriented Gradient,HOG)和支持向量機(jī)(Support Vector Machine,SVM)結(jié)合的傳統(tǒng)目標(biāo)檢測(cè)算法先計(jì)算候選框內(nèi)圖像梯度的方向信息統(tǒng)計(jì)值,再通過正負(fù)樣本訓(xùn)練SVM,使用傳統(tǒng)方法受限于候選框提取效率、HOG特征尺度魯棒性,在實(shí)時(shí)性以及遮擋目標(biāo)檢測(cè)等諸多方面有著明顯缺陷[1]。近年來,基于深度學(xué)習(xí)的目標(biāo)檢測(cè)方法以強(qiáng)特征提取能力、高檢測(cè)率取得了驚人的成果。近年來深度學(xué)習(xí)網(wǎng)絡(luò)在計(jì)算機(jī)視覺上因AlexNet在2012年的ImageNet大賽中大放異彩而進(jìn)入飛速發(fā)展。2014年VGGNet在追求深層網(wǎng)絡(luò)的性能時(shí),發(fā)現(xiàn)增加網(wǎng)絡(luò)的深度會(huì)提高性能,但是與此同時(shí)帶來的梯度消失問題不可避免。2015年ResNet網(wǎng)絡(luò)較好地解決了這個(gè)問題,深層殘差網(wǎng)絡(luò)可以減少模型收斂時(shí)間、改善尋優(yōu)過程,但應(yīng)用尺度大的卷積核的同時(shí)增加了網(wǎng)絡(luò)模型的參數(shù)量與計(jì)算量,降低了模型的訓(xùn)練與檢測(cè)速度[2]。
計(jì)算機(jī)視覺中的目標(biāo)檢測(cè)任務(wù)關(guān)注圖像中特定目標(biāo)的位置信息,現(xiàn)有方法分為two-stage和one-stage兩類。two-stage方法先產(chǎn)生包含目標(biāo)的候選框,再通過卷積神經(jīng)網(wǎng)絡(luò)對(duì)目標(biāo)進(jìn)行分類,常見的方法有RCNN、Fast-RCNN、Faster-RCNN。 one-stage方法直接使用一個(gè)卷積網(wǎng)絡(luò)對(duì)給定輸入圖像給出檢測(cè)結(jié)果,以YOLO為代表的one-stage目標(biāo)檢測(cè)方法在檢測(cè)時(shí),將候選框的生成與目標(biāo)的分類回歸合并成一步,基于YOLO的檢測(cè)算法大大提高了檢測(cè)速度,但檢測(cè)精度仍有待提高[3]。本文選擇在基于YOLO方法的基礎(chǔ)上改進(jìn)主干網(wǎng)絡(luò)的殘差網(wǎng)絡(luò)結(jié)構(gòu),設(shè)計(jì)了一種新的網(wǎng)絡(luò)模型,經(jīng)實(shí)驗(yàn)表明提高了檢測(cè)準(zhǔn)確率。
2015年何凱明等人在論文中正式提出了ResNet[4],其針對(duì)常規(guī)網(wǎng)絡(luò)在進(jìn)行加深深度時(shí)出現(xiàn)的梯度消失、淺層網(wǎng)絡(luò)無法提高網(wǎng)絡(luò)的識(shí)別能力等問題取得了重大突破。殘差結(jié)構(gòu)的表達(dá)式為:
若不使用殘差結(jié)構(gòu),當(dāng)輸入為x時(shí),經(jīng)網(wǎng)絡(luò)后輸出為 F(x,{Wi}),而引入殘差結(jié)構(gòu)后,需要學(xué)習(xí)的特征為 F(x,{Wi})-Wsx,使用殘差結(jié)構(gòu)的網(wǎng)絡(luò)對(duì)于微小變化更顯突出。
圖1所示的殘差網(wǎng)絡(luò)結(jié)構(gòu)中,先使用1×1的卷積核縮小通道數(shù),最后通過1×1的卷積核恢復(fù)通道,使用1×1與3×3組合結(jié)構(gòu)可以減少計(jì)算量與參數(shù)。
圖1 三層殘差學(xué)習(xí)網(wǎng)絡(luò)結(jié)構(gòu)
2016年REDMOND J提出 YOLO(You Only Look Once)算 法[5],將 特 征 圖分為S×S的網(wǎng)格,每個(gè)網(wǎng)格負(fù)責(zé)預(yù)測(cè)中心點(diǎn)落在網(wǎng)格中的目標(biāo),YOLO將生成候選框與分類預(yù)測(cè)合并成一步,加快了檢測(cè)速度。
2018年REDMOD J發(fā)布了YOLO的第三個(gè)版本—YOLOV3[6],YOLOV3算法采用了不含全連接層的darknet53網(wǎng)絡(luò)作為主干網(wǎng)絡(luò),darknet53借鑒了ResNet結(jié)構(gòu),復(fù)用殘差結(jié)構(gòu)(Res-block),加強(qiáng)主干網(wǎng)絡(luò)提取特征的能力。
圖2所示的Res-block是組成darknet53的重要部分,它由一個(gè)下采樣的卷積塊(Con-block)與若干殘差單元(Res-unit)組成,其中 Con-block由卷積層、歸一化層、激活函數(shù)層構(gòu)建,Res-unit由包含兩個(gè) 1×1與 3×3的卷積核的 Con-block組成。
圖2 組成darknet53網(wǎng)絡(luò)的基本組成單元
YOLOV3在預(yù)測(cè)時(shí),使用特征金字塔網(wǎng)絡(luò)(Feature Pyramid Networks,F(xiàn)PN)選取主干網(wǎng)絡(luò)上的三個(gè)尺度進(jìn)行預(yù)測(cè),有效增強(qiáng)不同大小的目標(biāo)檢測(cè)效果,同時(shí)將高層特征上采樣堆疊到低層特征上,加強(qiáng)低層特征的語義信息。圖3所示的FPN結(jié)構(gòu)有三個(gè)尺度的輸出,格式均為 S×S×(3×C),其中 S為特征圖的網(wǎng)格大小,3代表每個(gè)網(wǎng)格負(fù)責(zé)預(yù)測(cè)3個(gè)候選框,5代表每個(gè)候選框的位置信息(相對(duì)網(wǎng)格左上角偏移值及候選框的寬高)及包含物體的置信度,C表示候選框所要預(yù)測(cè)目標(biāo)的置信度。本文檢測(cè)單一的車輛目標(biāo),C的數(shù)值為 1。
YOLOV4算法[7]的主干網(wǎng)絡(luò)上采用了CSPdarknet53,它借鑒 CSPNet網(wǎng)絡(luò)結(jié)構(gòu)[8],重復(fù)使用含有三個(gè)卷積塊及n個(gè)Res-unit單元組合而成的網(wǎng)絡(luò)結(jié)構(gòu)(Csp-block),在激活函數(shù)的選擇上,使用 Mish函數(shù)替換LeakyReLu函數(shù)。
圖4所示的卷積塊使用的激活函數(shù)為Mish函數(shù):
YOLOV4選用Mish激活函數(shù)針對(duì)ReLu函數(shù)在負(fù)值時(shí)直接截?cái)啵荻认陆挡粔蚱交M(jìn)行了優(yōu)化。
YOLOV4在YOLOV3的結(jié)構(gòu)基礎(chǔ)上使用諸多了技巧,在MSCOCO數(shù)據(jù)集上mAP-50達(dá)到了65.7%,相對(duì)于YOLOV3提高了大約10%。但是所用技巧對(duì)特定場(chǎng)合下的目標(biāo)檢測(cè)效果并不是均有益。本文結(jié)合CSPdarknet53網(wǎng)絡(luò)結(jié)構(gòu)、darknet53網(wǎng)絡(luò)結(jié)構(gòu),重新設(shè)計(jì)了一種新殘差單元結(jié)構(gòu)NRes-block,將輸入單元分為兩個(gè)部分,第一部分進(jìn)行一次激活函數(shù)為Mish的卷積單元操作,再復(fù)用若干殘差單元;第二部分只進(jìn)行一次激活函數(shù)為Mish的卷積單元操作,最后堆疊這兩部分,具體結(jié)構(gòu)如圖5所示。
圖4 CSPdarknet53網(wǎng)絡(luò)的殘差網(wǎng)絡(luò)結(jié)構(gòu)
圖5 改進(jìn)的殘差網(wǎng)絡(luò)結(jié)構(gòu)
新設(shè)計(jì)的模型復(fù)用NRes-block,以此構(gòu)建主干網(wǎng)絡(luò),網(wǎng)絡(luò)輸出采用FPN結(jié)構(gòu),整個(gè)網(wǎng)絡(luò)模型如圖6所示。
圖6所示的改進(jìn)結(jié)構(gòu)輸入為尺寸416×416的三通道圖像,復(fù)用卷積塊和NRes-block網(wǎng)絡(luò)結(jié)構(gòu)后,從 52×52,26×26,13×13 三個(gè)尺度進(jìn)行輸出預(yù)測(cè),13×13尺度下的特征圖經(jīng)5次卷積塊后上采樣與52×52尺度下特征圖進(jìn)行堆疊,堆疊后的特征圖經(jīng)上采樣與52×52尺度下的特征圖進(jìn)行堆疊。最終13×13尺度下的特征圖負(fù)責(zé)預(yù)測(cè)大目標(biāo),26×26尺度下的特征圖負(fù)責(zé)預(yù)測(cè)中等目標(biāo),52×52尺度下的特征圖負(fù)責(zé)預(yù)測(cè)小目標(biāo)。
在YOLO系列算法中,訓(xùn)練與檢測(cè)的輸入圖像需要經(jīng)過變換固定到416×416的大小,但是任意進(jìn)行圖像變換會(huì)造成目標(biāo)的變形,對(duì)訓(xùn)練與檢測(cè)有著一定影響。本文預(yù)先獲取圖像的寬高w、h,使用max(w,h)確定變換后的一邊,之后再對(duì)圖像另一邊進(jìn)行變換,具體公式如下:
其中Rel、Res表示圖像變換之后的邊長(zhǎng),最后再對(duì)圖像進(jìn)行填充,使得滿足訓(xùn)練與檢測(cè)的尺度(416×416)。
圖7所示原圖像尺寸大小為1 020×680,從圖中可見預(yù)處理后的圖像(右下)與直接使用OpenCV的resize方法處理后的圖像(左下)對(duì)比效果。
圖6 改進(jìn)后網(wǎng)絡(luò)結(jié)構(gòu)
圖7 有無經(jīng)預(yù)處理的圖像對(duì)比
自制訓(xùn)練集包括1 200張含有車輛目標(biāo)的圖像,訓(xùn)練集與驗(yàn)證集劃分比例為 9:1,圖像目標(biāo)標(biāo)繪工具為labelImg。
本文使用的硬件平臺(tái):CPU采用Intel E5-2678v3,GPU采用 NVIDAI GTX1080Ti,操作系統(tǒng)為 Ubuntu16.04,訓(xùn)練框架采用 Pytorch1.2。
Batchsize設(shè)定為 16,初始學(xué)習(xí)率設(shè)定為 1e-3,經(jīng) 1 000次迭代后,學(xué)習(xí)率設(shè)定為 1e-4,繼續(xù)訓(xùn)練 400次結(jié)束訓(xùn)練。 訓(xùn)練 Loss為 13×13、26×26、52×52三個(gè)尺度下坐標(biāo)、邊框、置信度及類別損失值的總和,每經(jīng)過50次epoch訓(xùn)練后記錄Loss值,通過對(duì)比YOLOV3模型,結(jié)果如圖8所示。
對(duì)比發(fā)現(xiàn),改進(jìn)殘差網(wǎng)絡(luò)結(jié)構(gòu)的模型訓(xùn)練Loss下降較YOLOV3模型快,經(jīng)600代訓(xùn)練后,Loss逐漸穩(wěn)定,且比 YOLOV3低。
在目標(biāo)檢測(cè)模型的評(píng)估中,精準(zhǔn)率P(precision)、召回率 R(recall)通常是衡量模型的重要指標(biāo),具體計(jì)算公式如下:
其中TP(True Positives)表示樣本被檢測(cè)為正樣本并且檢測(cè)正確,F(xiàn)P表示樣本被檢測(cè)為正樣本但是檢測(cè)錯(cuò)誤,F(xiàn)N表示樣本被檢測(cè)為負(fù)樣本但是檢測(cè)檢測(cè)錯(cuò)誤。
圖8 訓(xùn)練過程中Loss下降對(duì)比
精準(zhǔn)率與召回率一般具有:精準(zhǔn)率高、召回率低;召回率高、精準(zhǔn)率低的特點(diǎn)。本文使用結(jié)合了精準(zhǔn)率隨召回率變化生成的PR函數(shù)與坐標(biāo)軸圍成的面積——平均精度mAP(mean Average Precision)來衡量模型性能。本文檢測(cè)單一目標(biāo),mAP即為AP,計(jì)算公式如下:
將本文改進(jìn)的模型與YOLOV3模型在自定義數(shù)據(jù)集上進(jìn)行實(shí)驗(yàn)對(duì)比,本文設(shè)計(jì)的網(wǎng)絡(luò)模型mAP為 90.63%,YOLOV3的 mAP為 86.47%,較 YOLOV3提高4.6%。
對(duì)于部分圖像的檢測(cè)結(jié)果如圖9所示。
圖9 檢測(cè)結(jié)果
本文基于YOLO系列模型,通過研究ResNet、darknet53、CSPdarknet53的網(wǎng)絡(luò)結(jié)構(gòu),對(duì)模型結(jié)構(gòu)中的殘差模塊進(jìn)行了重新的設(shè)計(jì),并對(duì)網(wǎng)絡(luò)輸入時(shí)的圖像進(jìn)行了預(yù)處理操作,最后在自行收集標(biāo)繪的數(shù)據(jù)集上進(jìn)行訓(xùn)練、測(cè)試。實(shí)驗(yàn)結(jié)果表明,本文設(shè)計(jì)的檢測(cè)網(wǎng)絡(luò)較YOLOV3的性能有著一定提升。本文設(shè)計(jì)的模型針對(duì)的是單一目標(biāo),檢測(cè)目標(biāo)所處背景環(huán)境非復(fù)雜場(chǎng)景,后續(xù)將進(jìn)行復(fù)雜場(chǎng)景下的車輛目標(biāo)識(shí)別。