李 剛,韓 超
(安徽工程大學 電氣工程學院,安徽 蕪湖 241000)
隨著經濟和社會的發展,家用轎車和公共交通工具數量與日俱增,給交通道路的運輸帶來不小的壓力,特別是樞紐路口和繁忙路段擁堵現象頻發。因此,如何改善和疏解現有的擁堵問題是近些年大家共同關心的問題,而智能交通系統(ITS)的出現給解決交通擁堵問題帶來福音。因此車輛檢測在ITS系統數據前端采集的過程中顯得尤為重要,其所采集到的數據的全面性和有效性為智能交通控制、疏解交通擁堵問題與交通違法證據抓拍提供了數據保障。其廣闊的應用前景和潛在的研究價值吸引了國內外眾多研究學者重點探究。
當前,許多傳統的方法已經被采用,例如:GPS[1]和無線傳感器[2]等方法的使用。然而,越來越多的研究學者發現傳統的檢測手段具有難以克服外界干擾的局限性,如天氣的變化、遮擋、以及車速改變帶來的檢測效果差等問題。因此研究者們開始關注基于視頻圖像的車輛檢測的算法和技術[3]。相較于傳統方法,基于視頻圖像的車輛檢測技術能夠提供更全面、更細微的信息。對于外界干擾的變化有著更加穩定的檢測效果。文獻[4]中,Hedi Harzallah等人介紹的一種滑動窗口遍歷待檢測圖像的檢測手段,通過提取覆蓋區域的HOG[5]特征,將其輸入SVM分類器1。該分類器將對圖像中的非目標區域進行剔除進而把目標區域很好的保留下來。然后將保留區域的HOG特征和SIFT特征輸入SVM分類器2。最后由分類器2對目標車輛進行檢測和候選驗證。然而滑動窗口是對整個圖像遍歷,并且需要設定不同的尺度,因此其在區域選擇策略上針對性有所不足,產生冗余窗口較多,對后續特性提取和分類影響較為明顯。文獻[6]中,Bautista C M等人提出基于卷積神經網絡[7](CNN)的車輛檢測的方法,通過滑動窗口尋找候選區域,但是遍歷圖像時容易出現窗口間隔較小和窗口尺度倍數過小等問題,以致檢測實時性降低。針對滑動窗口實時性較差問題,研究者提出基于感興趣區域(Region of Interesting)的區域提名法。文獻[8]中,FanQ在生成候選區域、特征提取、候選驗證等階段均應用了Faster R-CNN[9]。該方法較于滑動窗口,車輛檢測速度雖得到一定程度提升,仍遠不能滿足交通監控的實時性需求。2015年,一種全新端到端(End-to-End)的檢測算法被提出,即Redmon J提出的YOLO[10]檢測算法。相較于其它檢測技術,YOLO算法模糊了候選區域、特征提取、候選驗證三個階段的區別,直接快速地完成檢測任務。新的問題是YOLO算法具有較好的實時性,但準確率與召回率均不高。因此研究人員通過分析和改進設計出了新的網絡結構YOLOv2、YOLOv3,采用分批規范化、高分辨率預訓練網絡以及多種分辨率圖片訓練等方法,相比YOLO模型框架檢測性能與速度顯著提高,是目前最先進的目標檢測算法之一。通過分析YOLOv3特征提取網絡,發現其依靠殘差結構加深網絡層數,通過加深網絡層提取更加豐富的特征。對比YOLOv1和YOLOv2,其特征提取網絡一定程度上提高檢測精度,但是對于小目標車輛的檢測和受遮擋較為嚴重的車輛目標仍存在漏檢、錯檢的問題,原因是其殘差塊的結構較為簡單,對于特征的提取不夠豐富。基于此選用FPN網絡結構特征,在YOLOv3檢測算法基礎上提出結合FPN改進后的YOLOv3網絡模型結構,重新構造金字塔模塊替換原來的殘差模塊,網絡層將得到更豐富的語義特征(即目標信息),有效增強了網絡中小目標車輛的語義信息。并進行nuscenes數據集和自建數據集訓練和驗證,以期在小目標車輛檢測精度和召回率方面得到改善,有效緩解小目標車輛漏檢錯檢等問題。
分析YOLOv3的特征提取網絡可以發現其依靠殘差結構加深了網絡層數,通過更深的網絡層來提取更加豐富的特征。雖然相比于v1和v2新的特征提取網絡對于精度的提高有一定的幫助,但是對于小目標的檢測仍存在漏檢的問題。通過分析YOLOv3的網絡結構,可以發現其殘差塊的結構較為簡單,對于小目標車輛特征的提取還是不夠豐富。故采用FPN網絡的結構特征,重新構造了金字塔模塊替換原來的殘差模塊,新設計的雙金字塔模塊如圖1所示。

圖1 雙金字塔模型的網絡結構

圖2 結合FPN改進后的YOLO-V3網絡結構
在一個雙金字塔模塊內同時包含有大小特征圖,在金字塔的上層放置的是大特征圖,大特征圖能夠更好體現目標的區域信息。之后通過步長為2的卷積層將特征圖的大小縮小,并獲得一定深度的網絡,這時的網絡層相較于之前會具有更豐富的語義特征即目標信息。最后使用反卷積網絡將特征圖放大,并與之前的網絡進行融合。在模塊的尾端,接入1x1的卷積層,對提取到的信息進行整合,整合之后輸入下一個金字塔模塊。對于修改后的網絡結構如圖2所示。
YOLOv3的網絡模型結構主要由75個卷基層構成,用作來分析物體特征。由于沒有使用全連接層,其網絡可以對應任意大小的輸入圖像。此外,值得注意的是YOLOv3并沒有選擇加入池化層,取而代之的是將卷基層的stride設為2來達到下采樣的效果。因為YOLOv3采用了殘差網絡結構,形成更深的網絡層次,以及進行的是多尺度檢測,提升了mAP及小物體檢測效果。如果采用COCOmAP50做評估指標,YOLOv3的表現相當驚人,在精確度相當的情況下,其速度是其它模型的3、4倍。而在訓練過程中對于輸入的每幅圖像,YOLOv3首先會預測三個不同大小的3D-tensor,對應著三個不同scale。設計這三個scale的目的就是為了能夠檢測出不同大小的物體。以13×13的tensor為例,對于這個scale,原始輸入圖像會被分成分割成13×13的網格單元,每個網格單元對應著3D-tensor中的1×1×255這樣一個長條形voxel。255這個數字來源于(3×(4+1+80)),其中的數字代表bounding-box的坐標,物體識別度(objectness score),以及相對應的每個class的confidence。其次,如果訓練集中某一個ground-truth對應的bounding-box中心恰好落在了輸入圖像的某一個grid-cell中,那么此grid-cell就負責預測該物體的bounding-box,為原圖中標記的邊框。這個grid-cell所對應的objectness-score就被賦予1,其余的grid-cell則為0。此外,每個grid-cell還被賦予3個不同大小的prior-box。在學習的過程中,這個grid-cell通過訓練會逐漸學會如何選擇哪個大小的prior-box,以及對這個prior-box進行微調。最后grid-cell將按照特定規則只選取與ground-truth-bounding-box的交并比最高的那個prior-box。分析檢測流程的整個環節可以看出,YOLOv3算法直接省去了基于候選區域尋找目標這一步驟,采用回歸的思想即可對目標進行位置與類別的判斷。也正是由于YOLOv3算法將汽車的檢測轉化為一個回歸問題,才使得檢測速度大大提升,從而使得該算法能夠輕易滿足實時檢測的要求。
本文在訓練中摒棄了之前的softmax,而是直接用邏輯回歸對每個類別進行獨立二分類判定,用交叉熵計算損失。并且使用獨立的邏輯回歸來代替softmax,可以適配具有重疊標簽的數據集。對于1維Anchor Box置信度,同樣也是使用邏輯回歸作為激活函數,用交叉熵作為損失函數。此外,其四維位置數值tx,t0,tw,th,經過如下公式進行解碼,可得到預測框的中心坐標(w,h)。其中σ(tx),σ(t0)是基于矩形框中心點左上角格點坐標的偏移量;σ是激活函數,這里使用sigmoid函數;pw,ph是先驗框的寬、高。通過以上描述,可計算出實際預測框的寬高(bw,bh)分別如公式(1)(2)(3)(4)。
bx=σ(tx)+cx
(1)
b0=σ(t0)+cx
(2)
bw=pwetw
(3)
bh=pheth
(4)


(5)
為了比較正確地評價本文提出的檢測模型的效果[12],在此先作True Vehicle、True N-Vehicle、False Vehicle、False N-Vehicle 4種定義。①True Vehicle:目標為汽車,且被系統正確成功地檢測出來;②TrueN-Vehicle:目標非汽車種類,且系統未將其錯誤檢測為汽車;③False Vehicle:目標非汽車種類,但被系統錯誤地檢測成了汽車(誤檢);④False N-Vehicle:目標為汽車,但系統沒有將其檢測為汽車(漏檢)。在此基礎上選用三個指標來衡量本文算法性能的質量:
(1)精確度(Precision),精確度指的是被正確檢測出的汽車占檢測出的汽車的比例,其計算表達式為此:
(6)
(2)召回率(Recall),召回率指的是被正確檢測出的汽車占驗證集中所有汽車的比例,其計算表達式為:
(7)
(3)邊界框對應的置信度(Confidence),置信度指的是一種用來判斷邊框是否包含物體及物體的位置是否準確的指標,通過圖像交并比(IOU)來計算。其計算表達式如下:

(8)
2.1實驗平臺
實驗中主要硬件配置如下:深度學習軟件學習框架,Tensorflow;處理器,Intel(R)Core(R)i7-8700;顯卡,NVIDIA GeForce RTX 2080Ti;內存,8GB;程序設計語言,phython語言。
本文的實驗數據來源于nuscenes數據集和自建數據集。自建數據集取景具體位置為安徽省蕪湖市北京中路安徽工程大學西門天橋上方,并仿照交通攝像頭拍攝角度拍攝得到,按照車流疏密程度分別拍取了簡單樣本和困難樣本。最后從nuscenes數據集選取2000幅樣本圖片用來實驗驗證,其中訓練集1600幅,測試集400幅。自建數據集500幅,其中訓練集400幅,測試集100幅。為了確定優化后算法的性能提升,將其分別與Faster-Rcnn和YOLOv3算法進行比較。關于nuscenes數據集檢測效果對比如圖a、a(1)、a(2)、a(3),不難發現Faster-Rcnn和YOLOv3算法出現了尾部小車輛的漏檢現象,相比之下本文算法較好的解決了漏檢問題。關于自建數據集(簡單樣本)檢測效果圖對比如圖b、b(1)、b(2)、b(3),本文算法成功將遠處細小車輛檢測出來。對于自建數據集(困難樣本)不同算法檢測效果對比如圖c、c(1)、c(2)、c(3),發現在車流量較大、光線較暗情況下進行檢測,本文算法對于遠處密集車輛仍有著很好的檢測效果。

a 數據集原圖a(1) Faster-Rcnn檢測效果a(2) YOLOv3檢測效果faster-1a(3) 本文算法檢測效果b 自建簡單樣本原圖b(1) Faster-Rcnn檢測效果YOLO-1YOLO-NEW-1b(2) YOLOv3檢測效果b(3) 本文算法檢測效果c 自建困難樣本原圖fasterYOLOYOLO-Newc(1) Faster-Rcnn檢測效果c(2) YOLOv3檢測效果c(3) 本文算法檢測效果
nuscenes數據集對比對比結果如下表1所示,自建數據集對比結果如下表2所示。

表1 實驗結果

表2 實驗結果
為了更好的驗證本文算法的可行性和優越性,本文選取了目前檢測效果較好的Faster-Rcnn算法和YOLOv3算法分別進行了對比,由表1和表2的結果對比可以發現,本文提出的方法在綜合性能上有著不錯的提升,其中在檢測精度上較原有YOLO算法提升了5個百分點,此外召回率也從原有的83%提升至89%,并且在自建數據集上也得到了良好的檢測精度和召回率。速度方面雖然相比原有YOLOv3算法略為慢些,但在實際檢測過程中影響不明顯,完全能夠達到實時性檢測的要求。
本文提出的結合FPN的改進YOLOv3車輛實時檢測算法,通過借鑒FPN網絡的結構特征,將原有YOLOv3網絡結構中的殘差模塊剔除重新構造并且替換成了新設計的雙金字塔模塊。經過訓練和驗證可知,該方法在滿足實時檢測速度要求的同時,提高了車輛目標檢測的準確率與召回率,尤其對于小目標車輛的檢測效果明顯。這對于無人駕駛系統和智能交通系統的研究具有一定的應用價值。但對于存在嚴重遮擋和過遠距離車輛的檢測效果尚未達到最佳,解決這個問題將是未來的一個重要研究方向。