李 航, 張 琦, 殷守林, 孫 可
(沈陽(yáng)師范大學(xué) 軟件學(xué)院, 沈陽(yáng) 110034)
快速準(zhǔn)確的車輛檢測(cè)對(duì)于支持各種應(yīng)用程序的開發(fā)至關(guān)重要,例如視頻監(jiān)控,公共安全,智能交通控制和自動(dòng)駕駛。車輛檢測(cè)是計(jì)算機(jī)視覺的重要分支,已經(jīng)在世界范圍內(nèi)進(jìn)行了一段時(shí)間的研究。然而,由于許多因素的影響,例如照明條件的變化、遮擋、視角和物體變形,具有魯棒性的車輛檢測(cè)仍然很有挑戰(zhàn)性。而且,在復(fù)雜場(chǎng)景中對(duì)車輛的實(shí)時(shí)檢測(cè)的需求也增加了困難。尤其在學(xué)生比較多的大學(xué)校園中,校園車輛的檢測(cè)對(duì)于學(xué)生安全及人流控制具有很重要的意義[1]。
盡管存在這些挑戰(zhàn),但基于機(jī)器學(xué)習(xí)的車輛檢測(cè)算法的研究,在最近一段時(shí)間已取得了很大的進(jìn)步。例如,司陽(yáng)等[2]利用動(dòng)態(tài)貝葉斯網(wǎng)絡(luò)(DBN)開發(fā)了一種具有良好適應(yīng)性和車輛檢測(cè)精度的車輛檢測(cè)方法,該方法基于車輛顏色和物體邊緣的特征,降低近似目標(biāo)的影響,精確提取出車輛目標(biāo);Jens等[3]提出了一種基于AdaBoost和支持向量機(jī)(SVM)分類器的車輛檢測(cè)方法,文中用AdaBoost和SVM分類器檢查每個(gè)車輛圖像窗口中是否存在目標(biāo)區(qū)域;Noh等[4]提出了一種自適應(yīng)滑動(dòng)窗口策略來(lái)連續(xù)模擬給定場(chǎng)景,大大提高了車輛檢測(cè)性能。
盡管這些過(guò)去的研究已經(jīng)解決了與車輛檢測(cè)相關(guān)的許多挑戰(zhàn),但是隨著理論的深度研究和實(shí)踐的飛速發(fā)展,基于機(jī)器學(xué)習(xí)的車輛檢測(cè)和分類算法的發(fā)展進(jìn)入了一個(gè)新階段。例如,與傳統(tǒng)的物體檢測(cè)算法相比,卷積神經(jīng)網(wǎng)絡(luò)(CNN)的應(yīng)用在車輛檢測(cè)算法中為幾何變換、物體變形和可變照明條件提供了更高的不變性,從而大大減少了車輛外觀的影響并提高了檢測(cè)精度。另外,已經(jīng)提出了一種深層的CNN體系結(jié)構(gòu),被稱為初始體系,以進(jìn)一步提高分類和檢測(cè)的準(zhǔn)確性[5]。Simonyan等[6]分析了卷積網(wǎng)絡(luò)深度對(duì)大規(guī)模圖像識(shí)別精度的影響,通過(guò)將深度推至16~19個(gè)權(quán)重層,對(duì)現(xiàn)有技術(shù)的配置進(jìn)行了重要改進(jìn),AlexNet和聚合通道特征(ACF)算法被提出用于目標(biāo)檢測(cè),而SVM被提出用于提高目標(biāo)分類性能。 深度學(xué)習(xí)在對(duì)象檢測(cè)中的應(yīng)用在2013年有了進(jìn)一步的發(fā)展,提出了基于區(qū)域的卷積神經(jīng)網(wǎng)絡(luò)(RCNN)[7],該方法創(chuàng)新性地將傳統(tǒng)的機(jī)器學(xué)習(xí)方法與深度學(xué)習(xí)相結(jié)合。
2015年,He等[8]提出了一種空間金字塔池網(wǎng)絡(luò)(SPPnet)來(lái)解決RCNN所需要的大量重復(fù)卷積計(jì)算,并放棄了以前在所有區(qū)域共享卷積計(jì)算所采用的選擇性搜索(SS)算法。同年,Girshick[9]提出了使用A-softmax回歸,而不是SVM分類器的快速RCNN,以減少內(nèi)存空間和時(shí)間成本。Ren等[10]提出了一種更快的RCNN結(jié)構(gòu),簡(jiǎn)稱Faster RCNN。從那時(shí)起,已經(jīng)引入了對(duì)象檢測(cè)網(wǎng)絡(luò),如YOLO和單發(fā)多盒對(duì)象檢測(cè)器(SSD)。但是,Faster RCNN將RPN和Fast RCNN組合到一個(gè)統(tǒng)一的深度CNN框架中,與其他方法相比,檢測(cè)精度更高。
盡管Faster RCNN方法已經(jīng)在計(jì)算機(jī)視覺領(lǐng)域取得了進(jìn)展,但是道路圖像檢測(cè)方法研究的瓶頸也限制了其在車輛檢測(cè)中的應(yīng)用。第1個(gè)困難是,在識(shí)別和定位小尺寸目標(biāo)時(shí),Faster RCNN方法的性能比較差。第2個(gè)困難是,Faster RCNN方法在提取車輛對(duì)象的邊界框時(shí)不考慮車輛對(duì)象屬性的注釋。為了解決這些問題,本工作提出了一種改進(jìn)車輛檢測(cè)方法,該方法采用改進(jìn)的基于Faster的卷積神經(jīng)網(wǎng)絡(luò)(RCNN)。
如圖1所示,首先獲取合適的校園車輛訓(xùn)練樣本,然后結(jié)合視覺目標(biāo)類挑戰(zhàn)2007(VOC2007)車輛數(shù)據(jù)集,統(tǒng)一進(jìn)行歸一化處理[11-13]。采用提出的深度學(xué)習(xí)網(wǎng)絡(luò)從車輛數(shù)據(jù)集中提取原始圖像特征圖,將獲得的特征圖輸入精確車輛候選區(qū)域提取網(wǎng)絡(luò)中以生成帶有車輛的目標(biāo)區(qū)域,并且將車輛目標(biāo)區(qū)域輸入到車輛屬性檢測(cè)網(wǎng)絡(luò)中以獲得位置估計(jì)及類型分類,獲得檢測(cè)車輛結(jié)果。

圖1 提出的車輛檢測(cè)方案Fig.1 Proposed vehicle detection framework
Faster RCNN的基本結(jié)構(gòu)如圖2所示,包括特征圖提取、區(qū)域提議提取、邊界框回歸和網(wǎng)絡(luò)分類。因此,Faster RCNN由以下4個(gè)主要部分組成。
1) 卷積層:Faster RCNN使用一組基本的卷積層、ReLu層和池化層來(lái)提取圖像的特征圖,然后輸入到池化層,如圖2中的箭頭。

圖2 Faster RCNN的基本結(jié)構(gòu)Fig.2 Faster RCNN framework
2) 區(qū)域提議網(wǎng)絡(luò):區(qū)域建議網(wǎng)絡(luò)(RPN)生成候選區(qū)域。每個(gè)層的softmax分類決定了錨點(diǎn)(相對(duì)于k個(gè)參考框的k個(gè)建議點(diǎn)被參數(shù)化,稱為錨點(diǎn))是屬于前景還是背景。然后通過(guò)邊界框回歸對(duì)錨進(jìn)行修正,以獲得準(zhǔn)確的區(qū)域建議。
3) 感興趣區(qū)域合并:感興趣區(qū)域(ROI)層集成了特征圖和區(qū)域提議信息,將輸入圖像中的區(qū)域提議坐標(biāo)映射到最后的卷積層(conv5-3),并在特征圖中合并相應(yīng)區(qū)域以獲得合并的結(jié)果,然后附加到后面的全連接層。
4) 分類和回歸:全連接層之后是2個(gè)子連接層:分類層(cls)和回歸層(reg)。分類層用于確定提議類別,回歸層用于通過(guò)邊界框回歸來(lái)預(yù)測(cè)提案的確切位置。
對(duì)傳統(tǒng)Faster RCNN結(jié)構(gòu)進(jìn)行的改進(jìn)如圖3所示。首先,該算法將任意大小P×Q的道路圖像轉(zhuǎn)換為固定大小的M×N。接下來(lái),將固定大小的圖像輸入到DCN中,該DCN由VGG-16網(wǎng)絡(luò)的13個(gè)卷積層,13個(gè)ReLu層和4個(gè)最大池化層組成,然后使用inception網(wǎng)絡(luò)用于特征圖提取。AVRN導(dǎo)入特征圖以實(shí)時(shí)生成候選車輛區(qū)域,并輸出這些帶有置信度分?jǐn)?shù)的建議區(qū)域。最后,VALN從AVRN接收車輛候選區(qū)域并確定其對(duì)應(yīng)的分類和位置作為輸出。因此,車輛目標(biāo)的檢測(cè)被轉(zhuǎn)換為車輛或背景的二元分類問題。在訓(xùn)練階段,對(duì)AVRN和VALN進(jìn)行交替優(yōu)化和聯(lián)合訓(xùn)練。接下來(lái)將詳細(xì)討論改進(jìn)的Faster RCNN的主要組成部分。

圖3 改進(jìn)的Faster RCNN模型Fig.3 Modified Faster RCNN model
DCN架構(gòu)由VGG-16和改進(jìn)后的Inception架構(gòu)組成如圖4所示。

圖4 改進(jìn)后的Inception結(jié)構(gòu)Fig.4 Modified Inception
為了更好地說(shuō)明圖4中的結(jié)構(gòu),單獨(dú)提取Inception架構(gòu)。其中,Max-pool 2是指第2層的最大池化層。Output 3-1表示Inception(3a)的輸出。
Output 3-2表示Inception(3b)的輸出。為了減少網(wǎng)絡(luò)參數(shù)和計(jì)算復(fù)雜度,Inception(3a)和Inception(3b)結(jié)構(gòu)分別添加了64個(gè)1×1大小的卷積內(nèi)核和128個(gè)1×1大小的卷積內(nèi)核。結(jié)合圖4進(jìn)行分析,獲得上層192個(gè)56×56的特征圖,并將其輸入到Inception(3a)體系結(jié)構(gòu)中,輸出256個(gè)56×56的特征圖。然后,將256個(gè)56×56的特征圖輸入到Inception(3b)體系結(jié)構(gòu)中,輸出480張56×56的特征圖。 最后,使用大小為2×2和步驟2的最大池化操作來(lái)輸出480個(gè)28×28的特征圖。
Inception(4a)和Inception(4b)架構(gòu)分別參見圖7和圖8,其中,Max-pool 3是指第3層的最大池化層,Output 4-1代表Inception(4a)的輸出,Output 4-2表示Inception(4b)的輸出。Inception(4a)和Inception(4b)結(jié)構(gòu)分別添加了192個(gè)1×1大小的卷積內(nèi)核和160個(gè)1×1大小的卷積內(nèi)核。結(jié)合圖4進(jìn)行分析,獲得上層480個(gè)28×28的特征圖,并將其輸入到Inception(4a)結(jié)構(gòu)中,輸出Inception(4b)體系結(jié)構(gòu)。最后,最大池化操作的大小為2×2,步驟2用于輸出512個(gè)14×14的特征圖。

圖5 Inception(3a)Fig.5 Inception(3a)

圖6 Inception(3b)Fig.6 Inception(3b)

圖7 Inception(4a)Fig.7 Inception(4a)

圖8 Inception(4b)Fig.8 Inception(4b)
根據(jù)全卷積網(wǎng)絡(luò)(FCN),本文設(shè)計(jì)了準(zhǔn)確候選車輛區(qū)域檢測(cè)網(wǎng)絡(luò)。VALNet結(jié)構(gòu)是將最后3個(gè)卷積層輸出的特征圖和DCN的Inception結(jié)構(gòu)組合到一個(gè)相連的特征圖中。通過(guò)用2個(gè)附加的卷積層替換原始的全連接層來(lái)計(jì)算類似車輛的區(qū)域。為了組合多個(gè)特征圖,在第12和第13卷積層的后面分別添加了一個(gè)內(nèi)核大小為3×3的卷積層和Inception,可以生成512個(gè)特征圖。然后,使用歸一化響應(yīng)對(duì)輸出特征圖進(jìn)行歸一化,并將它們合并為單個(gè)特征圖。由于淺層和深層分別更適合于位置和分類操作,因此當(dāng)在實(shí)驗(yàn)中檢測(cè)到小尺度目標(biāo)時(shí),將連接的特征圖定義為ROI。為了生成ROI,采用3×3的滑動(dòng)窗口。滑動(dòng)操作是使用3×3卷積層實(shí)現(xiàn)的。對(duì)于512個(gè)特征圖,為每個(gè)滑動(dòng)窗口提取512維的特征向量,并將特征圖輸入到2個(gè)大小為1×1的卷積核中[14],分別表示為框分類(平移滑動(dòng))和框回歸(convbbr)層。對(duì)于每個(gè)滑動(dòng)窗口位置,該算法同時(shí)預(yù)測(cè)具有不同縱橫比和不同比例的疑似車輛的區(qū)域。對(duì)于所選車輛的大小(大約在40×40和160×160之間),該算法使用3∶2、1∶1和2∶3的3個(gè)寬高比和7個(gè)標(biāo)尺(框面積為40×40、60)預(yù)測(cè)21個(gè)區(qū)域60×60、80×80、100×100、120×120、140×140和160×160像素。對(duì)于AVRN訓(xùn)練,該算法會(huì)丟棄圖像邊界之外的所有預(yù)測(cè)區(qū)域,并為所有其余區(qū)域分配代表目標(biāo)或背景的二進(jìn)制類別標(biāo)簽。可以通過(guò)根據(jù)以下公式計(jì)算交并比(IoU)來(lái)確定最佳比例框區(qū)域。

(1)
其中Sdr代表檢測(cè)結(jié)果,Sgt代表真值。
在訓(xùn)練過(guò)程中,檢測(cè)框與真實(shí)框匹配。IoU值大于0.5的檢測(cè)框被定義為正標(biāo)簽,而IoU小于0.5的檢測(cè)框被設(shè)置為負(fù)標(biāo)簽。設(shè)置VALNet損失函數(shù)是為了提高檢測(cè)性能,利用VALNet中2個(gè)同級(jí)輸出層的不同損失函數(shù)。由第1同級(jí)層計(jì)算使用針對(duì)每個(gè)預(yù)測(cè)區(qū)域的softmax分類器的疑似車輛區(qū)域置信度得分。第2個(gè)同級(jí)層為每個(gè)預(yù)測(cè)區(qū)域?qū)С鲎鴺?biāo)矢量Ioc=(x,y,w,h),其中x和y表示預(yù)測(cè)區(qū)域左上角的坐標(biāo),而w和h表示坐標(biāo)區(qū)域的寬度和高度。首先使用smoothL1函數(shù)來(lái)改進(jìn)坐標(biāo),該函數(shù)定義如下。

(2)
然后使用多任務(wù)損失函數(shù)LAVRN對(duì)每個(gè)陽(yáng)性標(biāo)簽區(qū)域fc和真實(shí)目標(biāo)位置Ioc′進(jìn)行訓(xùn)練分類,定義如下。

(3)
其中Lcls表示用于前景和背景分類的softmax損失函數(shù),p′表示真實(shí)目標(biāo)標(biāo)簽,而δ是平衡參數(shù),為了平衡Lcls和Lbbr,將其設(shè)置為2。Lbbr定義如下:
Lbbr(Ioc,Ioc′)=smoothL1(Ioc,Ioc′)
(4)
Liu等[15]提出了基于多級(jí)管線中生成的疑似車輛區(qū)域的手動(dòng)設(shè)計(jì)特征的訓(xùn)練分類和位置估計(jì)模型。但是,這種方法的效率很低。因此,基于對(duì)這2個(gè)分類任務(wù)的研究,設(shè)計(jì)了一個(gè)車輛屬性學(xué)習(xí)網(wǎng)絡(luò)(VALNet)。
VALNet結(jié)構(gòu)是基于DCN結(jié)構(gòu)。VALNet從VALNet輸出的每個(gè)疑似車輛區(qū)域中提取固定長(zhǎng)度的特征向量,然后使用多個(gè)分類器對(duì)區(qū)域進(jìn)行分類。由于類似車輛的區(qū)域的大小各不相同,因此最大池化層和RoI池化層將每個(gè)區(qū)域轉(zhuǎn)換為固定大小為6×6的特征圖。每個(gè)RoI特征圖進(jìn)入隨后的FC6和FC7完全連接層,其中每個(gè)層均共有4 096個(gè)神經(jīng)元,每層的大小為4 096。為了提高檢測(cè)性能,FC7層進(jìn)一步分為2個(gè)全連接層,分別表示為FC_type和FC_ori。FC_type層的輸出輸入到雙向softmax分類器中,該分類器產(chǎn)生分類標(biāo)簽T。FC_ori層的輸出輸入到8方向softmax分類器中,該分類器生成位置標(biāo)簽O。

LVALN(pO,pT)=Lloc(pO)+βLtype(pT)
(5)
其中Lloc(pO)和Ltype(pT)分別是用于位置估計(jì)和分類的softmax損失函數(shù)。為了平衡Lloc(pO)和Ltype(pT),參數(shù)β設(shè)置為1。
AVRNet和VALNet的訓(xùn)練都源自DCN結(jié)構(gòu),因此可以對(duì)其進(jìn)行聯(lián)合訓(xùn)練和交替優(yōu)化。使用隨機(jī)梯度下降(SGD)方法訓(xùn)練AVRNet和VALNet。為了防止過(guò)度擬合,采用了預(yù)訓(xùn)練的VGG-16來(lái)初始化DCN中的前13個(gè)卷積層。使用零均值高斯分布和0.01標(biāo)準(zhǔn)偏差來(lái)初始化其他卷積層的權(quán)重。然后,通過(guò)微調(diào)共享卷積層來(lái)共同訓(xùn)練2個(gè)網(wǎng)絡(luò)。在每次訓(xùn)練迭代期間,將一批標(biāo)記的訓(xùn)練數(shù)據(jù)輸入到AVRNet中,并更新參數(shù)。為了減少冗余,基于置信度得分采用非最大抑制來(lái)定義類似車輛的區(qū)域。將類似車輛的區(qū)域發(fā)送到VALNet以推斷其相應(yīng)的分類和位置,從而訓(xùn)練VALNet。
為了證明提出算法的優(yōu)越性能,實(shí)驗(yàn)環(huán)境為3.4 GHz的Intel Core i7-6700 CPU和GTX1060顯卡。采用Caffe深度學(xué)習(xí)框架。將每次訓(xùn)練的小批量大小設(shè)置為128,網(wǎng)絡(luò)權(quán)重衰減和動(dòng)量分別設(shè)置為0.000 5和0.9。需要進(jìn)行70 000次迭代訓(xùn)練,前50 000次迭代的學(xué)習(xí)率為0.01,最后20 000次迭代的學(xué)習(xí)率為0.001。
采用3種常用的方法定量地評(píng)估實(shí)驗(yàn)結(jié)果,精確召回率(PR)、平均精確度(AP)和F1-score(F1)。 用正標(biāo)簽分類為真陽(yáng)性(TP),并用負(fù)標(biāo)簽分類為假陽(yáng)性(FP)和假陰性(FN)。 然后,將這些值用于確定準(zhǔn)確率P,召回率R和F1,如下所示:
根據(jù)測(cè)試集的預(yù)測(cè)結(jié)果組裝P-R曲線,并根據(jù)P-R曲線下的面積計(jì)算AP,以獲得車輛檢測(cè)的平均精度。
較大的mAP值表示更好的檢測(cè)性能。此外,F1的值結(jié)合了精度和可重復(fù)性指標(biāo),以全面評(píng)估車輛檢測(cè)的質(zhì)量。如果IoU大于0.5,則為測(cè)試結(jié)果分配一個(gè)正標(biāo)簽;否則,該值為0。另外,如果多個(gè)測(cè)試與同一個(gè)真值框重疊,則將IoU最大的檢測(cè)結(jié)果分配為正標(biāo)簽,而將其他測(cè)試分配為負(fù)標(biāo)簽。
將提出的方法與其他車輛檢測(cè)方法作對(duì)比,包括ACF+Fast R-CNN,SS+Fast R-CNN,Raster R-CNN。圖9表示不同方法下獲得的P-R曲線,而圖10表示基于P-R曲線下的積分面積計(jì)算出的AP值。此外,總體測(cè)試結(jié)果如表1。

圖9 不同車輛檢測(cè)方法的P-R曲線Fig.9 P-R comparison with different methods

圖10 不同車輛檢測(cè)方法的平均精度(AP)Fig.10 Average precision with different methods

表1 定量化分析結(jié)果Table 1 Quantitative analysis results
圖9和10顯示,與SS+Fast RCNN,ACF+Fast RCNN和Faster RCNN相比,該提出的方法可顯著改善車輛檢測(cè)效果。SS+Fast RCNN,ACF+Fast RCNN,Fast RCNN和提出的AP結(jié)果分別為40%,57%,69%和80%,這表明提出方法的AP比Fast RCNN高11%,比SS+Fast RCNN高40%。而且提出方法的mAP值比Faster RCNN高出11%。
表1表明,所提出方法的Recall值比SS+Fast RCNN的值高21.28%,比ACF+Fast RCNN的值高30.18%,比Faster RCNN的值高5.28%。對(duì)于每張圖像的時(shí)間,所提出的方法將每張圖像的檢測(cè)時(shí)間減少到0.28 s,這比SS+Fast RCNN的速度快0.48 s,比ACF+Fast RCNN的速度快0.33 s,比Faster RCNN快0.08 s。
為了顯示所提出方法的檢測(cè)性能,使用Faster R-CNN和所提出的方法對(duì)涉及復(fù)雜場(chǎng)景的6個(gè)道路圖像(即,標(biāo)識(shí)為60107、60111、60175、60197、60214和60399的圖像)進(jìn)行了車輛檢測(cè)。通過(guò)Faster R-CNN獲得的車輛檢測(cè)結(jié)果顯示在圖11中,而通過(guò)候選區(qū)域的方法獲得的車輛檢測(cè)結(jié)果顯示在圖12中。從圖12中可以得出通過(guò)檢測(cè)得到的車輛檢測(cè)數(shù)量。圖像60107、60111、60175、60197、60214和60399的更快R-CNN分別為0、1、1、1、1和2,而圖12表示通過(guò)建議的方法獲得的檢測(cè)到的車輛數(shù)量, 對(duì)于圖像60107、60111、60175、60197、60214和60399,分別為1、2、2、2、2和3。顯然,當(dāng)采用本文提出的改進(jìn)的Faster R-CNN方法時(shí),檢測(cè)到的車輛的數(shù)量顯著增加。定性地,可以從圖11中得知,相對(duì)容易識(shí)別的相對(duì)較大的車輛并提供完整的車輛表示只能通過(guò)Faster R-CNN進(jìn)行檢測(cè)。然而,圖12中的車輛檢測(cè)結(jié)果表明,該方法具有較好的檢測(cè)性能和較高的檢測(cè)精度,不僅可以識(shí)別容易識(shí)別的車輛,而且可以將道路圖像中的小物體,部分代表物體準(zhǔn)確地識(shí)別為車輛。

601076011160175601976021460399

圖11 基于Fast RCNN的車輛檢測(cè)結(jié)果Fig.11 Fast RCNN-based vehicle detection
圖12 基于Faster RCNN的車輛檢測(cè)結(jié)果
Fig.12 Faster RCNN-based vehicle detection
本文提出了改進(jìn)的Faster R-CNN車輛檢測(cè)方法。該方法引入了VGG-16和初始架構(gòu),該架構(gòu)主要包括一組大小為1×1的卷積內(nèi)核,稱為DCN。然后,詳細(xì)介紹了AVRN和VALN以及設(shè)計(jì)的功能。AVRN可以實(shí)時(shí)準(zhǔn)確地生成疑似車輛的區(qū)域,而VALN可以檢測(cè)相應(yīng)的分類和疑似車輛區(qū)域的位置。為了提高檢測(cè)精度,為AVRN和VALN引入了損失函數(shù)。還通過(guò)交替優(yōu)化和聯(lián)合訓(xùn)練AVRN和VALN來(lái)提高計(jì)算速度。實(shí)驗(yàn)結(jié)果表明,改進(jìn)的Faster R-CNN方法在檢測(cè)精度和計(jì)算速度方面比現(xiàn)有的車輛檢測(cè)算法有了顯著改進(jìn)。與最新的Fast R-CNN目標(biāo)檢測(cè)方法相比,該方法獲得的檢測(cè)結(jié)果的mAP顯示增加了11%,檢測(cè)時(shí)間減少了1/3。
沈陽(yáng)師范大學(xué)學(xué)報(bào)(自然科學(xué)版)2020年1期