鄧天民,冒國韜,周臻浩,段志堅
(重慶交通大學交通運輸學院,重慶 400074)
近些年來,全球各地汽車保有量飛速增長,大量學者對自動駕駛領域展開了深入研究,目標檢測成為了自動駕駛領域研究的一個重點。車輛作為目標檢測任務中的重要對象之一,在自動駕駛領域有著非常重要的應用價值。隨著計算機硬件水平的提升,基于卷積神經網絡(Convolutional Neural Network,CNN)的目標檢測方法憑借其強大的特征表達能力取得了驚人的成果[1]。Krizhevsky 等[2]提出的AlexNet 結構模型獲得2012 年國際視覺識別挑戰賽(ImageNet Large Scale Visual Recognition Challenge,ILSVRC)的冠軍,CNN 隨即迎來了歷史性的突破,掀起了對深度學習的研究熱潮。
目前,基于深度學習的車輛檢測識別方法主要分為兩類:
一類是兩階段的目標檢測算法,此類方法檢測準確率和定位精度較高,但缺點是訓練速度慢、實時性差,其中代表性的算法有R-CNN[3]、Fast R-CNN[4]、Faster R-CNN[5]等。Nguyen[6]通過改進Faster R-CNN 算法的特征提取網絡,引入上下文感知池化,提高了對小目標車輛和遮擋車輛的檢測精度,但檢測實時性還有待提升;楊薇等[7]提出了一種改進的Faster R-CNN 車輛實時檢測算法,訓練時采用多尺度策略,提高了模型泛化能力,但對于復雜環境下排列密集、遮擋嚴重的車輛檢測效果較差。
另一類是一階段的目標檢測算法,這類方法不需要產生候選框,直接預測物體位置與類別,一次檢測就能得到最終檢測結果,其中代表性的算法有YOLO(You Only Look Once)系列算法[8-11]以及SSD(Single Shot MultiBox Detector)[12]等。Wang 等[13]提出了一種基于改進的YOLOv3-Tiny 的車輛檢測方法,加入空間金字塔池化(Spatial Pyramid Pooling,SPP)模塊,提高了模型特征提取能力,取得了較高的檢測精度,但對于小尺度目標檢測效果較差;趙文清等[14]提出了一種基于SSD 的反卷積和特征融合算法,降低了小目標的漏檢率,但由于反卷積操作增大了運算復雜度,導致檢測速度大幅降低。相較于兩階段的目標檢測算法,一階段的方法檢測速度快、誤檢率低,但缺點是精度偏低、小目標檢測效果較差以及對于復雜環境中的車輛檢測較為困難。
本文針對上述道路車輛檢測算法檢測速度與檢測精度相矛盾、小目標車輛漏檢及復雜環境下檢測困難的問題,提出一種基于密集連接網絡的道路車輛檢測算法。采用改進的密集連接殘差網絡結構,通過聚類算法對車輛數據集的邊界框進行聚類,同時增大網絡的檢測尺度,并在特征融合階段添加跳躍連接結構增強網絡的特征信息融合,解決網絡模型大、車輛檢測精度不高和漏檢的問題。
本文選用YOLOv4 框架進行改進,YOLOv4 模型的主干特征提取網絡CSPDarknet53 是在Darknet53 網絡[10]的5 組深度殘差結構基礎上分別添加跨階段局部網絡(Cross Stage Partial Network,CSPNet)[15]模塊得到的,它將特征圖的映射劃分為兩部分:一部分經過深度殘差結構強化網絡特征提取的能力;另一部分通過跨階段層次結構與它們融合,在減少了計算量的同時可以保持準確性。對于道路車輛的檢測識別,CSPDarknet53 網絡中大量的運算參數會使車輛檢測速度減慢,并且在數據集樣本量較小時易導致過擬合。
YOLOv4 模型在特征提取階段采用5 組深度殘差網絡結構強化網絡的特征提取,當網絡層數加深時,解決梯度消失的問題。
圖1 所示為YOLOv4 的殘差模塊結構,殘差單元(Res unit)從殘差網絡(Residual Network,ResNet)[16]中借鑒而來,其核心的表達式為:

圖1 殘差模塊結構Fig.1 Residual block structure

其中:xn表示n層的輸出;Hn表示包括卷積、批歸一化和激活函數組合在一起的非線性變換。
密集連接卷積網絡(Dense Connected Convolutional Network,DenseNet)[17]具有密集型連接結構,如圖2 所示。在DenseBlock 中,每個密集連接單元(Dense unit)層的輸入都包含了較早層的輸出,更好地利用了每一層的特征。

圖2 DenseNet密集連接結構Fig.2 Dense connected structure of DenseNet
DenseNet 的核心表達式為:

其中:[x0,x1,…,xm-1]表示將0 到m-1 層輸出的特征圖進行并聯粘接(concat)操作;xm表示m層的輸出;Hm表示包括卷積、批歸一化和激活函數組合在一起的非線性變換。
本文借鑒DenseNet 的密集連接結構,在原始的殘差結構基礎上提出具有更強特征提取能力的網絡,稱為DRNet(Dense Residual Network),如圖3 所示。采用DRBlock 代替網絡原有的ResBlock,通過殘差組件單元進行特征提取,使網絡訓練更加容易,在每個殘差組件之間采用密集連接方式,以加強特征復用,強化對淺層復雜度低的特征的利用。

圖3 DRNet結構Fig.3 Structure of DRNet
根據CSP 模塊結構與DRNet 結構的特點,設計以下兩種不同的CSP 模塊:CSPBlock-B 和CSPBlock-C,如圖4 所示。
由圖4(b)與圖4(c)的對比可知,結構B 先將兩個部分的特征進行并聯粘接,之后再輸入到1×1 卷積的過渡層,這樣做可以使大量的梯度信息被重用,有利于網絡的學習。結構C 則是先將部分的特征信息輸入過渡層,然后再進行并聯粘接操作,采用這種做法損失了部分梯度信息的重用,但由于1×1 卷積層輸入維度小于結構B,使得運算復雜度降低。圖4(a)為原始的跨階段局部模塊結構,可以看出,結構A 同時采用了上述兩種結構中的過渡層,學習能力更強,但提高了運算復雜度。為提升模型的運算效率,本文選用結構B 作為新的跨階段局部模塊。

圖4 三種不同的CSPBlockFig.4 Three types of CSPBlock
綜合考慮道路車輛檢測的實時性需求與檢測精度,采用6 組深度殘差結構強化主干網絡的特征提取能力。分別將6組深度殘差結構中殘差組件數量設置為1、2、3、3、3、2,提出一種運算復雜度相對較低、參數量相對較少的主干特征提取網絡CSPDRNet53,網絡模型結構如圖5 所示。

圖5 CSPDRNet53結構Fig.5 Structure of CSPDRNet53
相較于CSPDarknet53 中包含5 組深度殘差結構以及1、2、8、8、4 個殘差組件的較為復雜冗余且參數量過多的網絡,CSPDRNet53 降低了算法的參數量和運算復雜程度,提升道路車輛檢測識別效率,同時能一定程度上避免過擬合。
YOLOv4 模型在多尺度特征融合階段采用路徑聚合網絡(Path Aggregation Network,PANet)結構[18],如圖6 所示。通過自上向下的特征融合,將高層的特征信息通過上采樣的方式傳遞融合,對整個特征金字塔強語義特征進行增強,得到進行預測的特征圖;通過自下向上的特征融合,用下采樣的方式將低層的強定位特征傳遞上去。

圖6 PANet結構Fig.6 Structure of PANet
PANet 結構中1、8 節點只存在一個輸入邊,沒有不同特征信息的融合,因此刪除對特征融合網絡貢獻較小的1、8 節點。除此之外,為使網絡在不增加太多成本的情況下融合更多的特征信息,在輸入特征圖和輸出特征圖大小相同的兩個節點之間添加跳躍連接結構,通過強化網絡的特征信息融合,增強網絡的表征能力,如圖7 所示。

圖7 引入跳躍連接結構的特征融合網絡Fig.7 Feature fusion network introduced by skip connection structure
在特征檢測過程中,原模型通過8 倍、16 倍、32 倍下采樣的特征圖對目標進行檢測。8 倍下采樣特征圖的下采樣倍數低,特征感受野較小,適合檢測小尺度的物體;32 倍下采樣的特征圖具有較大的特征感受野,適合檢測大尺度物體。
為提高算法對小目標檢測精度,本文將特征檢測網絡的3 尺度檢測改進為4 尺度檢測,將CSPDRNet53 主干特征提取網絡中第3 個深度殘差結構輸出的104×104 特征圖與3 次上采樣后的特征圖進行并聯粘接處理得到第4 個特征檢測尺度,并形成新的特征金字塔網絡。4 尺度檢測提高了對小目標車輛的檢測精度,同時降低車輛的漏檢率,改進后算法結構如圖8 所示。

圖8 提出的DR-YOLOv4算法結構Fig.8 Structure of proposed DR-YOLOv4 algorithm
YOLOv4 中先驗框的尺寸是由COCO(Common Objects in COntext)數據集通過聚類得到,但考慮到COCO 數據集中包含的目標種類有80 類,檢測目標的長寬比差別也較大,不適用于道路車輛檢測。在道路車輛檢測任務中目標車輛的長寬比是相對固定的值,不能直接使用模型原本的先驗框尺寸,需對所用訓練集中的標注框進行聚類并重新分配。本文選用K-Means++聚類[19]方法計算聚類,基本步驟如下:
1)從數據集中隨機抽取一個點作為初始的聚類中心。
2)計算每個樣本與已有的聚類中心之間最短距離D(x)。
4)重復步驟2)~3)選出所有的聚類中心。
5)用傳統的K-Means 算法對選出的聚類中心聚類。
DR-YOLOv4 算法通過4 個特征檢測尺度對車輛目標進行檢測,為每個特征檢測尺度分配3 個先驗框,每個特征檢測尺度中的每個單元格通過3 個先驗框分別對3 個邊界框進行預測,因此需要12 個先驗框。利用K-Means++聚類算法對車輛數據集中標注框的長寬進行聚類。
根據聚類結果得出更新后的先驗框大小分別為:(13,28)、(22,47)、(32,77)、(45,60)、(46,114)、(46,193)、(72,96)、(78,145)、(92,191)、(97,257)、(109,392)、(127,204)。相比YOLOv4 原本的先驗框,根據車輛數據集聚類得到的先驗框尺寸更符合訓練集中道路車輛的長寬比,使用更新后的先驗框對車輛數據集進行訓練能夠使得定位更加精確。
本實驗的硬件環境為Windows10 64 位操作系統,Intel Core i7-8700K CPU @ 4.30 GHz 處理器,16 GB 內存,NVIDA GTX 1080Ti 顯卡,8 GB 顯存。軟件環境采用Darknet 深度學習框架[20],相較于其他深度學習框架,Darknet 具有安裝速度快,易于安裝的獨特優勢;整個框架完全由C 語言實現,不存在任何的依賴項;支持CPU 和GPU 計算,使用者可以根據硬件條件靈活切換;移植性非常好,Darknet 框架部署到機器本地非常簡單。
選用KITTI 數據集[21]和BDD100K(Berkeley DeepDrive)數據集[22]中的圖像作為本實驗車輛檢測模型的數據。KITTI數據集由德國卡爾斯魯厄理工學院和豐田美國技術研究院聯合創辦,包含市區、鄉村和高速公路等場景采集的真實圖像數據;BDD100K 數據集由伯克利大學人工智能實驗室發布,數據集涵蓋了6 種不同天氣、6 種不同場景以及白天、黃昏、夜晚三種時間階段的復雜圖片。數據集部分樣本如圖9所示。

圖9 部分樣本示意圖Fig.9 Schematic diagram of partial samples
首先從KITTI 數據集的2D 目標檢測數據集中選取7 481張圖片作為基礎實驗數據集,其中6 000 張圖片作為訓練集,742 張圖片作為驗證集,739 張圖片作為測試集。數據集共含 有Car、Van、Truck、Tram、Pedestrain、Person(sit-ting)、Cyclist、Misc 這8 個類別,將數據集按照VOC(Visual Object Classes)數據集的格式進行整理,并刪除實驗不需要數據的標簽類別,僅保留實驗所需的3 個類別:Car、Van、Truck,共計32 750 個標注信息。最后從BDD100K 數據集中挑選7 000張復雜環境圖片作為擴展實驗數據集,其中5 000 張圖片作為訓練集,1 000 張圖片作為驗證集,1 000 張圖片作為測試集,保留實驗所需的3 個類別:Car、Bus、Truck。
4.3.1 特征提取網絡實驗
本文方法在特征提取網絡進行三處改進,分別是密集連接模塊、跨層連接結構及深度殘差結構。為探究其對模型整體性能的影響,針對特征提取網絡改進方案進行對比實驗。
由表1 可知,融合密集連接網絡后,導致模型運算量增加,檢測速度有所下降,但同時增強了模型對淺層特征的復用,提升了一定的檢測精度;在跨層連接結構改進后,由于損失了部分梯度信息復用,模型均值平均精度(mean Average Precision,mAP)降低了0.06 個百分點,檢測速度有所提升;在對模型深度殘差結構進行簡化后,模型精度降低了0.97個百分點,檢測速度上升了10.2 frame/s;最后,同時采用上述三種特征提取網絡改進方案后,模型精度較原模型有所下降,檢測速度達到了51.39 frame/s。

表1 不同特征提取網絡對模型性能影響對比Tab.1 Influence comparison of different feature extraction networks on model performance
4.3.2 特征融合網絡實驗
在模型的特征融合網絡,本文采用跳躍連接結構和多尺度特征檢測兩種方案對其進行改進。通過對兩種方案的對比實驗,驗證其對模型性能的影響。
由表2 的改進方案對比實驗可知,通過引入跳躍連接結構,強化了網絡特征信息之間的融合,在提升精度的情況下,損失了一定的檢測速度;在多尺度特征檢測改進后,由于采用4 尺度進行檢測,使得模型整體結構更為復雜,運算量增加,檢測速度下降了5.85 frame/s,但采用4 尺度對車輛目標進行檢測,有效降低了車輛漏檢率,并提升了整體檢測性能,檢測精度提升了0.57 個百分點;在同時采用兩種改進方案后,模型損失了一定的檢測速度,但檢測精度達到了98.09%。

表2 不同特征融合網絡對模型性能影響對比Tab.2 Influence comparison of different feature fusion networks on model performance
4.3.3 先驗框分配策略實驗
原模型為每個特征檢測尺度分配3 個先驗框,以此適用于不同大小的檢測目標。采用模型默認的先驗框分配策略不一定適用于道路車輛數據集,因此需要對模型的先驗框重新進行分配。本文在特征檢測部分使用4 個特征檢測尺度,其中13×13 特征圖具有最大的感受野,適合檢測大目標物體,分配最大的幾個先驗框;104×104 特征圖分配最小的先驗框;26×26 和52×52 特征圖分配中等大小的先驗框。為了驗證先驗框分配策略對模型性能的影響,針對不同特征檢測尺度分配不同數量的先驗框,探究最佳的分配方案。由于采用4 個特征檢測尺度,因此將先驗框總數控制為12。
由表3 的分配策略對比實驗可知,不同先驗框分配策略會對模型的性能有一定的影響,當為13×13 特征圖分配4 個先驗框時,模型的檢測精度和檢測速度均有所下降,這是因為訓練集中大目標物體相對中小目標物體要更少,分配更多的先驗框反而導致其他檢測尺度訓練難度增加;當13×13 特征圖少分配1 個先驗框,52×52 特征圖多分配1 個先驗框時,模型的檢測精度與速度都達到最優,可見訓練集中,中等偏小目標占比最大,大目標占比最小,合理地分配降低了模型的訓練難度。根據實驗結果,將聚類得到的12 個不同大小的先驗框,分別按照2、3、4、3 的先驗框分配策略,分配給4個特征檢測尺度。先驗框按照分配策略重新分配后結果為:將尺寸為(97,257)、(109,392)的先驗框分配給13×13 特征圖;(46,193)、(92,191)、(127,204)先驗框分給26×26 特征圖;(45,60)、(46,114)、(72,96)、(78,145)先驗框分給52×52 特征圖;(13,28)、(22,47)、(32,77)先驗框分給104×104特征圖。

表3 不同先驗框分配策略對模型性能影響對比Tab.3 Influence comparison of different anchor allocation strategies on model performance
4.3.4 模型結構改進實驗
為探究主干特征提取網絡改進、特征融合網絡改進以及先驗框尺寸聚類與分配三種綜合改進方案對模型整體性能的影響,構建8 組不同的實驗方案對網絡的檢測精度和速度進行對比分析,實驗結果如表4 所示。

表4 不同實驗方案對模型性能影響分析Tab.4 Analysis of influence of different experimental schemes on model performance
由實驗B 可知,在對特征提取網絡進行簡化后,模型mAP 下降了0.48 個百分點,檢測速度較原始模型有所上升;實驗C 對特征融合網絡改進后,模型獲得了98.09% 的mAP,Car 作為數據集中包含小目標最多的類別,檢測精度比Van 和Truck 提升明顯,檢測速度則隨著模型結構復雜化有一定降低;實驗D 對模型的先驗框進行維度聚類并重新分配后,模型檢測精度提升了0.55 個百分點,檢測速度也略有提升,不難看出先驗框聚類及再分配可提升模型的檢測性能;通過實驗H 可知,同時使用三種改進方案時,在檢測速度上比傳統YOLOv4 高出2.33 frame/s,獲得了48.05 frame/s 的檢測速度,同時mAP 達到了98.21%,較原始模型提升了0.8個百分點,模型結構改進后在檢測精度和速度上均有所提升。
通過以上改進實驗可知,DR-YOLOv4 算法將先驗框根據特征檢測尺度由小到大按照2、3、4、3 個的策略進行分配;設計簡化的跨階段局部模塊結構和6 組密集連接的深度殘差結構,其中殘差組件數量分別為1、2、3、3、3、2 個;在特征融合階段引入跳躍連接結構并采用4 尺度檢測。圖10 所示為模型訓練過程中的平均損失收斂曲線,當模型迭代次數達到14 000 時,學習率由初始的10-3下降到10-4;當模型迭代次數達到16 000 左右時,損失值在0.9 左右上下浮動,此時的學習率降低為10-5,并且在16 000 至18 000 次迭代過程中損失值無明顯下降,平均損失收斂曲線趨近平穩。

圖10 本文算法平均損失收斂曲線Fig.10 Average loss convergence curve of proposed algorithm
表5 中顯示了改進后模型與不同目標檢測模型在KITTI數據集上的測試結果。DR-YOLOv4 算法在檢測速度方面略遜色于SSD300,但仍以48.05 frame/s 的速度達到了實時檢測的效果,并在檢測精度方面以98.21%的mAP 優于其他的目標檢測算法。

表5 不同目標檢測模型在KITTI數據集上效果對比Tab.5 Comparison of effects of different target detection models on KITTI dataset
為進一步驗證模型在復雜惡劣的環境中對車輛目標的檢測效果,本文選取包含各種困難樣本的BDD100K 數據集對模型進行訓練和測試,由表6 的測試結果可以看出,改進后的模型在BDD100K 數據集上的檢測精度與檢測速度方面均優于原始模型。

表6 模型改進前后在BDD100K數據集上測試結果Tab.6 Test results on BDD100K dataset before and after model improvement
由圖11 可以看出,本文算法在KITTI 數據集上的檢測效果良好,在有遮擋及強光照的環境仍然具有很好的檢測能力,可以精準地對車輛進行分類。在BDD100K 數據集的夜間環境中,存在遮擋、小目標及反光等因素干擾時,本文算法也能獲得較好的檢測效果,對道路車輛的檢測具有良好的魯棒性。

圖11 部分檢測結果示意圖Fig.11 Partial schematic diagram of test results
本文提出了一種基于密集連接網絡的道路車輛檢測算法DR-YOLOv4,采用改進的密集連接的殘差結構和跨階段局部模塊結構及6 組深度殘差塊的主干網絡;特征融合階段通過采用多尺度特征檢測和跳躍連接方式加強特征信息的融合;并對重新生成的先驗框進行分配策略實驗。實驗結果表明,DR-YOLOv4 模型在KITTI 數據集上取得了98.21%的均值平均精度與48.05 frame/s 的檢測速度,具有較好的檢測精度和實時性,對小目標車輛的檢測效果良好。最后為了驗證模型在復雜環境中對車輛目標的檢測性能,在BDD100K數據集上進行訓練和測試,結果表明,改進后的模型對復雜環境下的車輛目標也具有良好的檢測效果。