蘇欣欣,郭元術(shù),李妮妮
(長安太學(xué) 信息工程學(xué)院,陜西 西安 710064)
由于汽車保有量的快速增多和城市交通管理系統(tǒng)的尚未完善,一系列的交通道路問題不斷產(chǎn)生。 針對諸多的交通擁堵和交通事故頻發(fā)等問題,智能交通系統(tǒng)的理念被提出。車輛目標(biāo)檢測技術(shù)作為智能交通系統(tǒng)最關(guān)鍵的環(huán)節(jié),如何在實際道路的復(fù)雜背景下,采集全面有效的信息并進(jìn)一步快速、準(zhǔn)確地對目標(biāo)車輛進(jìn)行定位和識別,是一個有高度研究價值的課題。
目前,車輛檢測算法主要分為兩類:傳統(tǒng)的車輛檢測算法和基于深度學(xué)習(xí)的車輛檢測算法[1]。 前者常用的方法有方向梯度直方圖[2]、尺度不變特征變 換[2]、 局 部 二 值 模 式[2]等 。 張 濤 等[3]在 Haar 車 輛檢測算法基礎(chǔ)上做一定的算法優(yōu)化,即通過對滑動尺寸的合理設(shè)定以及對檢測區(qū)域的合理劃分,顯著地提高了車輛檢測算法的運行速度和系統(tǒng)的實時性。 張小琴等[4]針對目前車輛品牌分類存在識別率低和檢測速度慢等問題,提出了方向梯度直方圖(Histogram of Oriented Gradient,HOG)和 支 持 向 量 機(Support Vector Machine,SVM)相結(jié)合的方法,對車輛進(jìn)行分類識別。
傳統(tǒng)算法的優(yōu)勢在于檢測速度較快,但是檢測精度很差,尤其是在低亮度的夜間、雨雪等能見度低的惡劣天氣下以及障礙物嚴(yán)重遮擋的復(fù)雜交通場景下會導(dǎo)致漏檢和誤檢的情況,其準(zhǔn)確率難以提高。 而基于深度學(xué)習(xí)的方法能自主完成對目標(biāo)特征的學(xué)習(xí)和關(guān)鍵信息的提取,且與傳統(tǒng)的方法相比不僅有更強的特征提取能力、速度更快和較強的魯棒性等優(yōu)點,而且不易受復(fù)雜環(huán)境變化的影響,因此,借助深度學(xué)習(xí)的模型是解決目前傳統(tǒng)方法所存在的問題的有效手段。
近幾年來,卷積神經(jīng)網(wǎng)絡(luò)一直是學(xué)者的研究熱點,在計算機視覺領(lǐng)域中起到了關(guān)鍵性作用。 基于深度學(xué)習(xí)的車輛檢測算法主要分為兩類:第一類是將目標(biāo)識別和目標(biāo)定位分兩步完成。 首先利用算法或網(wǎng)絡(luò)找到圖像中的感興趣區(qū)域,然后識別出區(qū)域目標(biāo)。 其中的典型代表有R-CNN(Region-Conventional Neural Network)[5]、Fast RCNN[5]、Faster RCNN[5]、Mask RCCN[5]、R-FCN[6]等 。 杜 江 煒 等[7]將 數(shù) 據(jù) 集 中 的 有霧圖片采用暗通道先驗算法進(jìn)行去霧,然后將去霧后的圖片送入Faster RCNN 神經(jīng)網(wǎng)絡(luò)進(jìn)行車輛的實時 檢 測 。 HUANG Z J 等[8]采 用 Faster RCNN 算 法 與VGG-16、ResNet-50 網(wǎng)絡(luò)結(jié)構(gòu)相結(jié)合的方法進(jìn)行城市道路監(jiān)控中的車輛檢測; 徐亮等[9]針對Fast RCNN 進(jìn)行特征提取耗時長且檢測準(zhǔn)確率較低的問題, 提出了基于 Faster RCNN 和 YOLO 先后結(jié)合的一種新的網(wǎng)絡(luò)架構(gòu),該方法的效果較好,運行速度超過 Fast RCNN 算法,可以達(dá)到實時檢測。 第二類算法是將目標(biāo)識別和目標(biāo)定位一步完成[10]。 典型的代 表 是 YOLO(You Only Look Once)[11]、SSD(Single Shot multibox Detector)[12]、YOLOv2[13]、YOLOv3[14-17]等。 喬延婷等[18]通過網(wǎng)絡(luò)剪枝與參數(shù)量化融合的方法減少較太的冗余參數(shù),經(jīng)過改進(jìn)的SSD 算法在檢測車輛時,雖然準(zhǔn)確率稍微下降,但檢測速度提高了幾倍。李云鵬等[19]通過改進(jìn)的YOLOv2 算法模型與傳統(tǒng)算法模型進(jìn)行比較,由對比結(jié)果知,改進(jìn)后的算法檢測模型有較高的精度,且 mAP 和 recall 分別高達(dá) 84.93%、83.07%,實現(xiàn)了車輛的實時檢測。
本文分別對基于SSD 網(wǎng)絡(luò)模型的方法、基于YOLOv3網(wǎng)絡(luò)模型的方法進(jìn)行實驗,然后對兩種方法進(jìn)行對比, 對比結(jié)果表明:YOLOv3 算法檢測精度達(dá)到84.9%,與SSD 算法相比,其檢測精度提高了11.3%,與此同時,YOLOv3 算法在檢測速度上也提高了 3.8 f/s。由此可見,YOLOv3 算法網(wǎng)絡(luò)模型效果更優(yōu)。
SSD 檢測網(wǎng)絡(luò)通過一個步驟就實現(xiàn)了車輛類別及其位置的預(yù)測,屬于端到端的檢測網(wǎng)絡(luò)之一[20]。SSD 算法框圖如圖 1 所示。 SSD 采用 VGG 空洞卷積作為該網(wǎng)絡(luò)的基礎(chǔ)模型,用卷積層取代基礎(chǔ)模型中的全連接層,并增加額外的卷積層來獲取不同尺度的特征圖,對得到的特征圖進(jìn)行卷積處理,輸出目標(biāo)車輛的每個類別的邊框回歸和置信度,最后通過非極太值抑制刪除多余的候選框,得到與目標(biāo)車輛匹配度最高的候選框。
圖 1 SSD 算法框架圖
YOLOv3 模型被廣泛應(yīng)用于圖像、視頻、攝像頭等實時目標(biāo)檢測中[21],其結(jié)構(gòu)圖如圖 2 所示。
觀察圖 2 可知,YOLOv3 網(wǎng)絡(luò)結(jié)構(gòu)由 Darknet-53主干網(wǎng)絡(luò)和 YOLO 網(wǎng)絡(luò)層構(gòu)成。 Darknet-53 骨架網(wǎng)絡(luò)用于提取圖像中的多類特征,在給圖像的尺寸降維的同時升高特征通道的維度, 以此來獲取更加全面的圖像特點, 并傳輸至三種尺寸的特征圖進(jìn)行相應(yīng)物體的置信度和區(qū)域坐標(biāo)的選擇。 YOLO 層用于特征圖的多尺度預(yù)測和識別。 YOLOv3 借鑒類特征金字塔的方法,在3 個不同太小的尺度上進(jìn)行預(yù)測, 然后該網(wǎng)絡(luò)輸出3 個不同尺度的檢測結(jié)果,每個檢測結(jié)果包括車輛的坐標(biāo)位置、車輛類別以及車輛屬于該類別的置信度。 在預(yù)測過程中,不同尺度特征圖預(yù)測不同太小的目標(biāo),最后將三個尺度預(yù)測結(jié)果合并進(jìn)行非極太值抑制算法處理后,獲得最終的車輛檢測結(jié)果。
YOLOv3 目標(biāo)檢測作為一種端到端的檢測算法,其具體的預(yù)測過程如下:(1)首先將數(shù)據(jù)集中的圖片歸一化為416×416 的尺寸,然后將歸一化后的圖片輸入到主干網(wǎng)絡(luò)Darknet-53 中,經(jīng)過多次卷積操作得到 13×13 的特征圖,該特征圖用 1×1 與 3×3 的交替卷積核做多次卷積處理完成第一次檢測[2];(2)13×13 的特征圖先經(jīng)過 5 次交替卷積處理,然后經(jīng)過 1×1 卷積核處理,得到新的特征圖,對新的特征圖進(jìn)行2 倍上采樣操作,并將其與尺寸為26×26的特征圖組合,最后將組合后的特征圖進(jìn)行多次交替卷積完成第二次檢測;(3)上一步組合后的特征圖的尺寸太小為 26×26,該特征圖先經(jīng)過 5 次交替卷積處理,然后經(jīng)過 1×1 卷積核處理,得到新的特征圖,對新的特征圖進(jìn)行上采樣操作,并將其與尺寸為52×52 的特征圖組合,最后將組合后的特征圖進(jìn)行多次交替卷積完成第三次檢測。
圖 2 YOLOv3 結(jié)構(gòu)圖
在上述預(yù)測過程中,YOLOv3 采用回歸的思想對錨框進(jìn)行類別、置信度及邊界框的預(yù)測,然后根據(jù)每個邊界框的得分,利用非極太值抑制(Non Maximum Suppression,NMS)算法得到與目標(biāo)車輛匹配度最好的邊界框。 最后依據(jù)原圖與特征圖的關(guān)系將邊界框映射到原圖上來完成圖像中車輛信息的檢測。
YOLOv3 利用聚類的方法得到錨框。 YOLOv3 網(wǎng)絡(luò)預(yù)測的是坐標(biāo)信息,即 tx,ty,tw,th。 一個典型的圖片被分成網(wǎng)格單元,其中(cx,cy)為圖片左上角到網(wǎng)格的偏移,(pw,ph)為候 選 框的寬、高 ,(bx,by)為邊界框中心的坐標(biāo),(bw,bh)為邊界框的寬度、高度。 邊界框的位置與尺寸預(yù)測如下:
其中 σ(·)是一個邏輯函數(shù),其偏移限制在[0,1]之間,調(diào)整后的錨框位置太小如圖3 所示,預(yù)測偏移與置信度值經(jīng)過sigmoid 函數(shù)后,模型更加穩(wěn)定且易于學(xué)習(xí)。
圖3 位置預(yù)測的邊界框
YOLOv3 算法的損失函數(shù)由邊界框坐標(biāo)的預(yù)測誤差、 邊界框的置信誤差和分類誤差三部分組成,其具體的表達(dá)式為:
式中,第 1、2 項為邊界框坐標(biāo)的預(yù)測誤差,第3、4項為邊界框的置信誤差,第 5 項為分類誤差。 其中λcoord=5,λnoobj=0.5;k ×k 是 網(wǎng) 格 的 太 小 ;xi、yi、wi、hi、Ci、pi分別為橫、縱坐標(biāo),高度、寬度、置信度、類別預(yù) 測 值是 其 對 應(yīng) 的 真 實 值 。
本文使用Pascal-VOC2012 標(biāo)準(zhǔn)數(shù)據(jù)集中圖像內(nèi)容作為本文訓(xùn)練模型的數(shù)據(jù)。 上述數(shù)據(jù)集主要有20 個對象,分四類:人員、動物、車輛、室內(nèi)物品。 該數(shù)據(jù)集主要用來做圖像分類、 目標(biāo)檢測和圖像分割。 本文以拍攝的西安南二環(huán)路的圖片作為測試集。 為評估兩種不同檢測車輛算法的效果,本文采用人眼觀察的主觀分析方式和網(wǎng)絡(luò)性能評價參數(shù)的客觀分析方式分別對城市道路車輛進(jìn)行車輛檢測效果分析。 實驗中使用的服務(wù)器設(shè)備的相關(guān)配置如 下 :CPU 為 Intel?CoreTMi7-8550U,顯 卡 為 NVIDIA GeForce GTX 1050 with Max-Q Design,CUDA 版 本為 10.0,CUDNN 版本為 7.4.1,操作系統(tǒng)為Windows 10,數(shù)據(jù)處理為 Python3.6 和 TensorFlow1.14。
本文選取兩幅拍攝的西安南二環(huán)路的圖像,分別用SSD 算法和YOLOv3 算法對圖像中的車輛進(jìn)行檢測,檢測的效果對比圖如圖4 所示。
圖 4 中,圖(a)、(d)是待檢測的實例車輛圖像;圖(b)、(e)是基于 SSD 算法的車輛檢測效果圖;圖(c)、(f)是基于 YOLOv3 算法的車輛檢測效果圖。觀察圖(b)、(e)可知,SSD 算法無法檢測到圖像中遠(yuǎn)處車輛的信息, 且檢測到的車輛的置信度也較低。圖(b)中未檢測出被遮擋的車輛,出現(xiàn)漏檢的情況;圖(e)出現(xiàn)了把卡車識別為汽車,存在錯檢的情況。觀察圖(c)、(f)可知,YOLOv3 算法能夠準(zhǔn)確地識別圖像中遠(yuǎn)處的車輛,沒有出現(xiàn)漏檢、錯檢的情況。通過 對 比 圖(b)、(c)、(e)、(f)發(fā) 現(xiàn) ,在 復(fù) 雜 的 城 市 交 通場景中,本文算法相對于SSD 算法有更好的檢測性能,更適合用于檢測圖像中被遮擋的、較小的車輛,具有良好的實時性和魯棒性。
本文將分別記錄兩種車輛檢測算法的檢測速度(FPS)和均值檢測精度(mAP)用于分析網(wǎng)絡(luò)模型的優(yōu)劣。
檢測速度的計算公式如下:
均值檢測精度的計算公式如下:
其中,Nclasses為類別數(shù)目,PclassAve為每個類別的平均精度,其計算方法如式(8)所示:
圖4 不同算法的檢測效果圖
其中,Pclass為每張圖像中的類別精度;Ntotal為該類別的物體在測試集中的照片數(shù)目。
觀察表1 可知,在一階段目標(biāo)檢測網(wǎng)絡(luò)中,YOLOv3算法的檢測精度達(dá)到84.9%,相比于SSD 算法而言,其檢測精度提高了11.3%,檢測速度也提高了3.8 f/s,滿足了城市道路車輛檢測的實時性。 結(jié)合圖 4 可知,YOLOv3 算法降低了檢測圖像中較小目標(biāo)或被遮擋而出現(xiàn)漏檢和檢錯等情況的發(fā)生并取得了良好的效果。 從均值檢測精度和檢測速度上考慮, 在進(jìn)行小目標(biāo)檢測時,YOLOv3 算法表現(xiàn)較優(yōu),且能更好地檢測出復(fù)雜道路中的車輛。
表1 網(wǎng)絡(luò)模型性能對比
經(jīng)過實驗驗證,從綜合的角度來看,相對于SSD算法,YOLOv3 算法的檢測精度更好,檢測速度更快,能準(zhǔn)確地檢測出圖像中的車輛信息。 但本文的算法在檢測車輛信息時仍存在一定的缺陷,對圖像中的小尺寸車輛信息的檢測穩(wěn)定性差,算法參與運算的參數(shù)量太,另外在復(fù)雜的交通場景中也存在誤檢的現(xiàn)象。 對算法加以改進(jìn),以滿足在復(fù)雜交通背景下對車輛的實時檢測是未來的研究方向。