潘衛(wèi)華 羅裕坤
(華北電力大學(xué)計(jì)算機(jī)系 河北 保定 071000)
隨著經(jīng)濟(jì)的快速發(fā)展,我國(guó)人民生活水平日漸提高,車輛數(shù)量也隨之增長(zhǎng),但車輛的增長(zhǎng)也伴隨著各種交通問題的發(fā)生。調(diào)查顯示,大部分事故是司機(jī)在無(wú)監(jiān)管情況下違規(guī)駕駛、異常停車造成的,若道路管理方可以加強(qiáng)監(jiān)控并及時(shí)發(fā)現(xiàn)駕駛員的違規(guī)行為,則可以減少交通事故的發(fā)生。在復(fù)雜的交通環(huán)境下精準(zhǔn)且快速地識(shí)別車輛是熱點(diǎn)也是難點(diǎn)。傳統(tǒng)的目標(biāo)檢測(cè)算法[1]一般分為區(qū)域選擇、特征提取、分類器分類三個(gè)階段,但是傳統(tǒng)算法的缺點(diǎn)較為明顯,算法時(shí)間復(fù)雜度高,窗口冗余,特征提取對(duì)多樣化的變化沒有很好的魯棒性。
伴隨著深度學(xué)習(xí)的發(fā)展,目標(biāo)檢測(cè)算法也取得了巨大的突破,主流的基于深度學(xué)習(xí)的目標(biāo)檢測(cè)算法[2]主要分為兩階段檢測(cè)算法(Two-stage detectors)和單階段檢測(cè)算法(Single-stage detectors)兩類。
兩階段檢測(cè)算法即基于候選區(qū)域的檢測(cè)方法,過(guò)程主要包括兩個(gè)階段,即算法先提取候選區(qū)域,然后再對(duì)候選區(qū)域進(jìn)行分類和回歸。兩階段檢測(cè)算法主要包括R-CNN[3]、Fast R-CNN[4]、Faster R-CNN[5]、Mask R-CNN[6]等。而兩階段算法也存在明顯的缺陷,例如R-CNN須采用固定尺寸的輸入圖像,候選區(qū)域提取、特征提取、分類和回歸這些操作導(dǎo)致訓(xùn)練測(cè)試不簡(jiǎn)潔,也是R-CNN檢測(cè)速度慢的主要原因。通過(guò)一系列改進(jìn)的Fast R-CNN、Faster R-CNN、Mask R-CNN等算法檢測(cè)精度很高而且檢測(cè)速度也在不斷提升,但是仍然無(wú)法滿足實(shí)時(shí)性的要求。
單階段檢測(cè)算法即基于回歸的檢測(cè)方法,主要包括SSD[7]、YOLO[8]、YOLOv2[9]、YOLOv3[10]等。SSD是基于多尺度特征圖像的檢測(cè),因此在一定限度上提升了小目標(biāo)物體的檢測(cè)精度,并且SSD借鑒了Faster R-CNN[11]中的Anchor boxes思想,提升了檢測(cè)的召回率。YOLO系列是另一種單次目標(biāo)檢測(cè)器,YOLOv1直接在輸出層回歸bounding box的位置和bounding box所屬的類別,網(wǎng)絡(luò)結(jié)構(gòu)借鑒了 GoogLeNet;YOLOv2在YOLOv1的基礎(chǔ)上加入了批量歸一化層以及殘差網(wǎng)絡(luò)結(jié)構(gòu);YOLOv3調(diào)整了網(wǎng)絡(luò)結(jié)構(gòu),使用了全新的Darknet-53殘差網(wǎng)絡(luò),并加入了多尺度預(yù)測(cè),基本平衡了準(zhǔn)確性與實(shí)時(shí)性間的關(guān)系。
將YOLOv3算法應(yīng)用于車輛檢測(cè)領(lǐng)域,為進(jìn)一步提高算法對(duì)車輛檢測(cè)的準(zhǔn)確性以及滿足車輛檢測(cè)的實(shí)時(shí)要求,對(duì)YOLOv3算法加以改進(jìn)。首先將特征提取網(wǎng)絡(luò)進(jìn)行刪減,減少不必要的運(yùn)算量,其次引進(jìn)DenseNet[12]網(wǎng)絡(luò),加入Dense Block[13]塊加深網(wǎng)絡(luò)層次,最后用PReLU損失函數(shù)[14-16]替代原有損失函數(shù)。每一步改進(jìn)后都與原YOLOv3模型在相同數(shù)據(jù)集下進(jìn)行實(shí)驗(yàn)對(duì)比,在對(duì)比實(shí)驗(yàn)中使用相同的測(cè)試圖片,以便發(fā)現(xiàn)方法的改進(jìn)是否滿足最初的想法,再將完全改進(jìn)后的算法與原始YOLOv3算法及主流的目標(biāo)檢測(cè)算法進(jìn)行實(shí)驗(yàn)對(duì)比,在相同數(shù)據(jù)集和相同測(cè)試圖片的條件下,改進(jìn)后的算法在mAP值、準(zhǔn)確率及檢測(cè)速度等方面要優(yōu)于其他主流算法。
YOLOv3是目標(biāo)檢測(cè)領(lǐng)域目前為止速度和精度最均衡的網(wǎng)絡(luò),與Faster R-CNN相比,YOLOv3實(shí)現(xiàn)了端到端的訓(xùn)練,降低了模型訓(xùn)練的復(fù)雜度,并且圖像的處理速度大幅度提高;與SSD算法相比,YOLOv3有著更高的檢測(cè)精度及更快的檢測(cè)速度。
YOLOv3網(wǎng)絡(luò)是從YOLO網(wǎng)絡(luò)和YOLOv2網(wǎng)絡(luò)的基礎(chǔ)上發(fā)展并改進(jìn)而來(lái)的。首先,YOLOv3改進(jìn)了特征提取網(wǎng)絡(luò),用更深Darknet-53網(wǎng)絡(luò)結(jié)構(gòu)代替YOLOv2的Darknet-19,具體網(wǎng)絡(luò)結(jié)構(gòu)如圖1所示,該網(wǎng)絡(luò)是在ResNet[17]網(wǎng)絡(luò)結(jié)構(gòu)上發(fā)展起來(lái)的,總體網(wǎng)絡(luò)結(jié)構(gòu)用由52個(gè)卷積層和一個(gè)全連接層組成,將輸入的圖像數(shù)據(jù)交替進(jìn)行3×3、1×1的卷積。其次YOLOv3借鑒了FPN(Feature Pyramid Networks)[18]的思想,F(xiàn)PN通過(guò)高低層融合的方式增強(qiáng)低層特征的語(yǔ)義信息,從而提高對(duì)小目標(biāo)檢測(cè)的準(zhǔn)確率,YOLOv3分別在32倍降采樣、16倍降采樣、8倍降采樣時(shí)進(jìn)行檢測(cè),輸出三個(gè)特征圖并進(jìn)行尺度融合,將深層信息與淺層信息結(jié)合,最后輸出多尺度預(yù)測(cè)結(jié)果。
圖1 YOLOv3模型結(jié)構(gòu)圖
圖1中Convolutional由一個(gè)卷積層(Conv2d)、BN層批量歸一化層(Batch Normalization)[19]和激活函數(shù)(Leaky ReLU)[20]組成,BN層在神經(jīng)網(wǎng)絡(luò)訓(xùn)練網(wǎng)絡(luò)模型時(shí)加速網(wǎng)絡(luò)收斂,并且能夠解決梯度消失和梯度爆炸問題。Residual代表一個(gè)殘差塊,Concatenate代表張量拼接,Convolutional Set由五個(gè)卷積核分別為1×1、3×3、1×1、3×3、1×1的Convolutional單元組成。
雖然YOLOv3算法中使用的Darknet-53網(wǎng)絡(luò)在實(shí)時(shí)性和準(zhǔn)確性方面獲得了很好的平衡,并且通過(guò)使用殘差網(wǎng)絡(luò)結(jié)構(gòu)使得訓(xùn)練難度降低,但考慮到是針對(duì)車輛的目標(biāo)檢測(cè),原網(wǎng)絡(luò)結(jié)構(gòu)中過(guò)多的卷積層顯得有些復(fù)雜和冗余,導(dǎo)致檢測(cè)速度變慢,不符合擋路車輛檢測(cè)對(duì)實(shí)時(shí)性的要求。因此,為滿足車輛檢測(cè)實(shí)時(shí)性,將原來(lái)的Darknet-53網(wǎng)絡(luò)結(jié)構(gòu)進(jìn)行刪減,將原有的1×、2×、8×、8×、4×殘差塊的五組網(wǎng)絡(luò)改成1×、2×、4×、4×、2×殘差塊的五組網(wǎng)絡(luò),參數(shù)數(shù)量減少,運(yùn)算復(fù)雜度下降,改進(jìn)的網(wǎng)絡(luò)模型結(jié)構(gòu)圖如圖2所示。
圖2 改進(jìn)的Darknet-53網(wǎng)絡(luò)模型結(jié)構(gòu)圖
為提高目標(biāo)檢測(cè)性能,在改進(jìn)的Darknet-53網(wǎng)絡(luò)結(jié)構(gòu)的基礎(chǔ)上加入DenseNet[16]網(wǎng)絡(luò)結(jié)構(gòu)來(lái)提高特征提取網(wǎng)絡(luò)的信息傳遞能力。相比ResNet,DenseNet[16]的特征重用(feature reuse)是通過(guò)特征在channel上的連接來(lái)實(shí)現(xiàn)的,所以DenseNet在與ResNet參數(shù)量相等的情況下,計(jì)算成本更少,但性能比ResNet高,DenseNet將所有層都互相連接,后面每個(gè)層的輸入都是前面所有層的輸出。式(1)和式(2)分別代表了ResNet和DenseNet的信息傳遞方式,通過(guò)公式可以更直觀地對(duì)比出DenseNet的優(yōu)越性。
xl=Hl(xl-1)+xl-1
(1)
xl=Hl(x0,x1,…,xl-1)
(2)
式中:l代表神經(jīng)網(wǎng)絡(luò)層數(shù);H(·)代表非線性轉(zhuǎn)化函數(shù);xl代表第l層的輸出??梢钥闯鯮esNet網(wǎng)絡(luò)第l層的輸出為第l-1層輸出的非線性轉(zhuǎn)化加上第l-1層的輸出,而DenseNet網(wǎng)絡(luò)第l層的輸出則是從第0層到第l-1層的輸出都進(jìn)行非線性轉(zhuǎn)換,再將這些非線性轉(zhuǎn)換進(jìn)行維度拼接而成的,顯然DenseNet網(wǎng)絡(luò)減少了許多計(jì)算量,因此決定將DenseBlock[17]結(jié)構(gòu)融入到特征提取網(wǎng)絡(luò)中以提高檢測(cè)精度。
由于網(wǎng)絡(luò)層次越深其語(yǔ)義信息就越豐富,所以將DenseBlock結(jié)構(gòu)加入到改進(jìn)好的網(wǎng)絡(luò)結(jié)構(gòu)中。而DenseNet網(wǎng)絡(luò)結(jié)構(gòu)過(guò)深則會(huì)導(dǎo)致算法復(fù)雜度升高,從而使得檢測(cè)速度變慢,所以不宜增加過(guò)多的DenseBlock結(jié)構(gòu),因此決定在特征提取網(wǎng)絡(luò)末尾增加倆個(gè)DenseBlock結(jié)構(gòu)來(lái)提升檢測(cè)精度。在DenseBlock中,非線性組合函數(shù)H(·)采用的是BN+ReLU+1×1 Conv+BN+ReLU+3×3 Conv結(jié)構(gòu),與ResNet不同,DenseBlock在卷積后均輸出k個(gè)特征圖,k在DenseNet稱為增長(zhǎng)率(growth rate),同時(shí)在DenseBlock中1×1的卷積數(shù)量為4k個(gè),3×3的卷積數(shù)量為k個(gè),本文中擬決定k為24(因?yàn)橐话闶褂幂^小的k就可以獲得較好的性能)。
單個(gè)DenseBlock結(jié)構(gòu)如圖3所示。
圖3 單個(gè)DenseBlock結(jié)構(gòu)圖
最終的特征提取網(wǎng)絡(luò)結(jié)構(gòu)如圖4所示。
圖4 最終的特征提取網(wǎng)絡(luò)結(jié)構(gòu)圖
在圖4中每個(gè)DenseBlock塊由倆組1×1和3×3的卷積構(gòu)成,每組的輸入都和前面每組的輸出有關(guān),輸入圖片后,將輸出五種尺寸不同用于檢測(cè)的特征圖,例如輸入的圖片尺寸為512×512,輸出的特征圖尺寸則為64×64、32×32、16×16、8×8、4×4。輸出的五組特征圖通過(guò)FPN的思想進(jìn)行上采樣尺度融合構(gòu)造特征金字塔,通過(guò)高低層信息融合的方式進(jìn)行目標(biāo)檢測(cè)。而如果將原有特征提取網(wǎng)絡(luò)全部替換為DenseNet網(wǎng)絡(luò),雖然會(huì)更有效地提取特征信息,但會(huì)使得特征提取網(wǎng)絡(luò)變得冗余復(fù)雜,計(jì)算量加大,檢測(cè)速度則會(huì)大大減慢,與改進(jìn)初衷有所相悖,故采用添加DenseBlock塊的方式來(lái)提高檢測(cè)精度。
在車輛檢測(cè)數(shù)據(jù)集中,存在一些數(shù)據(jù)集車輛被障礙物遮擋或者在光照條件不好的情況下車輛的特征不明顯的情況,為了改善在復(fù)雜環(huán)境下車輛的檢測(cè),決定使用參數(shù)修正單元PReLU激活函數(shù)來(lái)代替原有的Leaky ReLU激活函數(shù)。Leaky ReLU會(huì)給予所有負(fù)值0.01的非零斜率即將數(shù)據(jù)中的負(fù)特征看作弱特征,導(dǎo)致在檢測(cè)的過(guò)程中會(huì)出現(xiàn)漏檢或錯(cuò)檢的情況。Leaky ReLU公式定義如下:
(3)
PReLU則會(huì)根據(jù)數(shù)據(jù)來(lái)確定負(fù)值的斜率即會(huì)根據(jù)數(shù)據(jù)特征來(lái)調(diào)整斜率,在檢測(cè)的過(guò)程中會(huì)更加注重?cái)?shù)據(jù)中的負(fù)特征。PReLU的公式定義如下:
(4)
可以看出在檢測(cè)場(chǎng)景簡(jiǎn)單的條件下(即數(shù)據(jù)無(wú)遮擋以及光照條件較為良好的條件下),PReLU函數(shù)就會(huì)退化成Leaky ReLU函數(shù),兩種函數(shù)都可以將數(shù)據(jù)目標(biāo)的特征在卷積層之間傳遞;在檢測(cè)場(chǎng)景復(fù)雜的條件下,PReLU函數(shù)會(huì)更加注重負(fù)特征的變化,在反向傳播的過(guò)程中會(huì)根據(jù)負(fù)特征的變化來(lái)改變線性函數(shù)的斜率,在對(duì)目標(biāo)進(jìn)行分類回歸時(shí),結(jié)合語(yǔ)義信息以及負(fù)特征,會(huì)一定程度上改善車輛在被障礙物遮擋以及光照條件不好的場(chǎng)景下檢測(cè)效果不佳的情況。在神經(jīng)網(wǎng)絡(luò)反向傳播的過(guò)程中,是采用帶動(dòng)量的更新方式來(lái)更新斜率ai的:
(5)
式中:ai的初始值為0.25;μ為動(dòng)量因子;ε為學(xué)習(xí)率,φ為常數(shù)。
實(shí)驗(yàn)的軟硬件配置如下:處理器Intel(R) Core(TM) i7-8700 CPU @3.20 GHz 16 GB,顯卡Nvidia GeForce GTX 1080Ti的Windows 10 64位,深度學(xué)習(xí)框架為Tensorflow,程序設(shè)計(jì)語(yǔ)言為Python。
RETRAC數(shù)據(jù)集是從北京和天津不同的24個(gè)區(qū)域道路的監(jiān)控中截取的,其俯拍照片與本文道路車輛實(shí)時(shí)監(jiān)測(cè)的場(chǎng)景相吻合,從RETRAC數(shù)據(jù)集中選取了具有代表意義的8 000幅圖片作為本文的數(shù)據(jù)集,其中訓(xùn)練集為7 500幅,測(cè)試集為500幅,并將輸入圖片的尺寸改為512像素×512像素。
YOLOv3的9組anchor box是由COCO和VOC數(shù)據(jù)集訓(xùn)練所得的,對(duì)本文的數(shù)據(jù)集來(lái)說(shuō)其原有的anchor box的尺寸不合適,故本文采用聚類算法對(duì)車輛數(shù)據(jù)重新進(jìn)行聚類分析,生成15組大小分別為(36,36)、(442,68)、(76,77)、(89,88)、(126,134)、(150,142)、(147,200)、(162,228)、(76,240)、(320,107)、(162,134)、(184,277)、(247,327)、(342,276)、(396,412)的anchor box,其中小尺寸的負(fù)責(zé)檢測(cè)小目標(biāo),大尺寸的負(fù)責(zé)檢測(cè)大目標(biāo)。由于本文只檢測(cè)車輛一個(gè)類別,故本文迭代次數(shù)為5 000次,avg loss最終為0.113 2。
改進(jìn)后的算法評(píng)價(jià)指標(biāo)為平均精度均值(Mean Average Precision,mAP)、單幅圖片檢測(cè)時(shí)間(單位:ms)以及準(zhǔn)確率。
對(duì)特征提取網(wǎng)絡(luò)的改進(jìn)結(jié)果如表1和圖5所示,并在表1中列出了改進(jìn)特征提取網(wǎng)絡(luò)的其他兩種網(wǎng)絡(luò)結(jié)構(gòu)(即Darknet-45和Darknet-19)。
表1 特征提取網(wǎng)絡(luò)改進(jìn)效果表
圖5 引入密集連接網(wǎng)絡(luò)效果測(cè)試圖
由表1可以看出,對(duì)特征提取網(wǎng)絡(luò)進(jìn)行刪減會(huì)不同程度地提高網(wǎng)絡(luò)的運(yùn)算速度,但經(jīng)過(guò)比較Darknet-33(即本文改進(jìn)的方法)在平均精度均值及準(zhǔn)確度方面皆優(yōu)于其他兩種改進(jìn)方法,故本文提出的特征提取網(wǎng)絡(luò)改進(jìn)方式更優(yōu)。由圖5(左為原YOLOv3算法效果,右為改進(jìn)后效果)的實(shí)驗(yàn)結(jié)果可以看出,在刪減卷積層后,雖然一個(gè)車輛目標(biāo)沒有被檢測(cè)出來(lái),但是檢測(cè)速度大大提高,比原來(lái)的網(wǎng)絡(luò)結(jié)構(gòu)單幅圖片檢測(cè)速度提高了大約16 ms,符合了改進(jìn)的初衷,滿足了檢測(cè)的實(shí)時(shí)性,因此刪減不必要的卷積層是有意義的。
引入密集連接網(wǎng)絡(luò)后的改進(jìn)結(jié)果如表2和圖6所示。
表2 引入密集連接網(wǎng)絡(luò)效果表
(a) 原YOLOv3算法 (b) 本文算法圖6 引入密集連接網(wǎng)絡(luò)效果測(cè)試圖
從表2可以看出,在加入Dense Block加深網(wǎng)絡(luò)結(jié)構(gòu)后,平均精度均值相較于原始的YOLOv3提高了3.02百分點(diǎn),準(zhǔn)確率提高了2.52百分點(diǎn),并且滿足實(shí)時(shí)性的要求。從圖6可以看出,同一幅測(cè)試圖片,在原始YOLOv3中沒有檢測(cè)出的車輛在本模型中可以檢測(cè)出來(lái),改進(jìn)后的YOLOv3算法利用五組不同尺度構(gòu)成的特征金字塔可以較好地解決漏檢的問題,小尺度的特征對(duì)測(cè)試集中較小的目標(biāo)檢測(cè)效果較好,而由于使用了密集連接網(wǎng)絡(luò),加深網(wǎng)絡(luò)層次并不會(huì)引起梯度消失和梯度爆炸,因此引入密集連接網(wǎng)絡(luò)是有意義的。
表3為對(duì)原始的YOLOv3算法、用Focal loss改進(jìn)損失函數(shù)[21]及使用PReLU損失函數(shù)的數(shù)據(jù)對(duì)比。
表3 損失函數(shù)改進(jìn)效果表
(a) 原YOLOv3算法 (b) 本文算法圖7 改進(jìn)損失函數(shù)結(jié)果效果圖
從表3可以看出,使用Focal loss對(duì)損失函數(shù)進(jìn)行改進(jìn)后,在mAP值、單幅圖片檢測(cè)時(shí)間以及準(zhǔn)確率方面都有所提升,但是使用PReLU損失函數(shù)代替原有的損失函數(shù)后,mAP值和準(zhǔn)確率比使用Focal loss對(duì)損失函數(shù)進(jìn)行改進(jìn)后都高,檢測(cè)單幅圖片的速度也更快,并且PReLU損失函數(shù)提高了對(duì)負(fù)特征的關(guān)注,所以從圖7可以看出,在光照條件不好的情況下,改進(jìn)后的算法可以檢測(cè)出原算法漏檢的車輛,因此在使用PReLU損失函數(shù)后,降低了原算法的漏檢率。
在對(duì)YOLOv3算法進(jìn)行改進(jìn)后,改進(jìn)模型在準(zhǔn)確率和實(shí)時(shí)性方面都高于當(dāng)前主流的目標(biāo)檢測(cè)算法。
表4 總體改進(jìn)效果表
圖8 與其他主流算法相比較結(jié)果測(cè)試圖
從表4和圖8可以看出,改進(jìn)的算法在準(zhǔn)確率和實(shí)時(shí)性方面是優(yōu)于其他三個(gè)算法的。改進(jìn)后的算法檢測(cè)出了其他三種算法都沒有檢測(cè)出的小目標(biāo)及模糊目標(biāo),明顯改善了小目標(biāo)的識(shí)別效果。改進(jìn)后的算法mAP值比Mask R-CNN高14.50百分點(diǎn),檢測(cè)單幅圖片的時(shí)間比Mask R-CNN少36.49 ms,同時(shí)準(zhǔn)確率提高了1.32百分點(diǎn),故本文算法滿足實(shí)時(shí)性和準(zhǔn)確性的要求,有效地降低了車輛的漏檢率,并在遮擋和拍攝模糊的情況下仍然有著良好的檢測(cè)效果。
表5給出了其他改進(jìn)YOLOv3算法與本文改進(jìn)YOLOv3算法的結(jié)果對(duì)比,可以看出改進(jìn)后mAP值和速度都有一定程度的提升,而其他文獻(xiàn)的算法改進(jìn)只是在速度或者精度一方面的提升,對(duì)比而言,本文提出的改進(jìn)更具有綜合性。
表5 與其他改進(jìn)后的YOLOv3算法進(jìn)行比較
為了對(duì)道路車輛進(jìn)行實(shí)時(shí)且準(zhǔn)確的檢測(cè),提出將YOLOv3算法改進(jìn)并應(yīng)用于道路車輛的檢測(cè)中。為了滿足車輛檢測(cè)的實(shí)時(shí)性,對(duì)原YOLOv3算法特征提取網(wǎng)絡(luò)中不必要的卷積層刪減,大大提高了檢測(cè)速度,并且引入了密集連接網(wǎng)絡(luò)來(lái)加深網(wǎng)絡(luò)層次提高車輛檢測(cè)的準(zhǔn)確率。最后將原損失函數(shù)改為參數(shù)修正單元PReLU損失函數(shù),有效地改善了車輛錯(cuò)檢和漏檢的問題,并有效改善了小目標(biāo)車輛的識(shí)別效果。實(shí)驗(yàn)結(jié)果表明,提出的算法在車輛檢測(cè)中mAP值達(dá)到了83.63%,檢測(cè)單幅圖片的速度達(dá)到了32.64 ms,并且準(zhǔn)確率達(dá)到了96.77%,為后續(xù)研究車輛跟蹤奠定了良好的基礎(chǔ)。