李 剛,韓 超
(安徽工程大學(xué) 電氣工程學(xué)院,安徽 蕪湖 241000)
隨著經(jīng)濟(jì)和社會(huì)的發(fā)展,家用轎車和公共交通工具數(shù)量與日俱增,給交通道路的運(yùn)輸帶來不小的壓力,特別是樞紐路口和繁忙路段擁堵現(xiàn)象頻發(fā)。因此,如何改善和疏解現(xiàn)有的擁堵問題是近些年大家共同關(guān)心的問題,而智能交通系統(tǒng)(ITS)的出現(xiàn)給解決交通擁堵問題帶來福音。因此車輛檢測在ITS系統(tǒng)數(shù)據(jù)前端采集的過程中顯得尤為重要,其所采集到的數(shù)據(jù)的全面性和有效性為智能交通控制、疏解交通擁堵問題與交通違法證據(jù)抓拍提供了數(shù)據(jù)保障。其廣闊的應(yīng)用前景和潛在的研究價(jià)值吸引了國內(nèi)外眾多研究學(xué)者重點(diǎn)探究。
當(dāng)前,許多傳統(tǒng)的方法已經(jīng)被采用,例如:GPS[1]和無線傳感器[2]等方法的使用。然而,越來越多的研究學(xué)者發(fā)現(xiàn)傳統(tǒng)的檢測手段具有難以克服外界干擾的局限性,如天氣的變化、遮擋、以及車速改變帶來的檢測效果差等問題。因此研究者們開始關(guān)注基于視頻圖像的車輛檢測的算法和技術(shù)[3]。相較于傳統(tǒng)方法,基于視頻圖像的車輛檢測技術(shù)能夠提供更全面、更細(xì)微的信息。對(duì)于外界干擾的變化有著更加穩(wěn)定的檢測效果。文獻(xiàn)[4]中,Hedi Harzallah等人介紹的一種滑動(dòng)窗口遍歷待檢測圖像的檢測手段,通過提取覆蓋區(qū)域的HOG[5]特征,將其輸入SVM分類器1。該分類器將對(duì)圖像中的非目標(biāo)區(qū)域進(jìn)行剔除進(jìn)而把目標(biāo)區(qū)域很好的保留下來。然后將保留區(qū)域的HOG特征和SIFT特征輸入SVM分類器2。最后由分類器2對(duì)目標(biāo)車輛進(jìn)行檢測和候選驗(yàn)證。然而滑動(dòng)窗口是對(duì)整個(gè)圖像遍歷,并且需要設(shè)定不同的尺度,因此其在區(qū)域選擇策略上針對(duì)性有所不足,產(chǎn)生冗余窗口較多,對(duì)后續(xù)特性提取和分類影響較為明顯。文獻(xiàn)[6]中,Bautista C M等人提出基于卷積神經(jīng)網(wǎng)絡(luò)[7](CNN)的車輛檢測的方法,通過滑動(dòng)窗口尋找候選區(qū)域,但是遍歷圖像時(shí)容易出現(xiàn)窗口間隔較小和窗口尺度倍數(shù)過小等問題,以致檢測實(shí)時(shí)性降低。針對(duì)滑動(dòng)窗口實(shí)時(shí)性較差問題,研究者提出基于感興趣區(qū)域(Region of Interesting)的區(qū)域提名法。文獻(xiàn)[8]中,F(xiàn)anQ在生成候選區(qū)域、特征提取、候選驗(yàn)證等階段均應(yīng)用了Faster R-CNN[9]。該方法較于滑動(dòng)窗口,車輛檢測速度雖得到一定程度提升,仍遠(yuǎn)不能滿足交通監(jiān)控的實(shí)時(shí)性需求。2015年,一種全新端到端(End-to-End)的檢測算法被提出,即Redmon J提出的YOLO[10]檢測算法。相較于其它檢測技術(shù),YOLO算法模糊了候選區(qū)域、特征提取、候選驗(yàn)證三個(gè)階段的區(qū)別,直接快速地完成檢測任務(wù)。新的問題是YOLO算法具有較好的實(shí)時(shí)性,但準(zhǔn)確率與召回率均不高。因此研究人員通過分析和改進(jìn)設(shè)計(jì)出了新的網(wǎng)絡(luò)結(jié)構(gòu)YOLOv2、YOLOv3,采用分批規(guī)范化、高分辨率預(yù)訓(xùn)練網(wǎng)絡(luò)以及多種分辨率圖片訓(xùn)練等方法,相比YOLO模型框架檢測性能與速度顯著提高,是目前最先進(jìn)的目標(biāo)檢測算法之一。通過分析YOLOv3特征提取網(wǎng)絡(luò),發(fā)現(xiàn)其依靠殘差結(jié)構(gòu)加深網(wǎng)絡(luò)層數(shù),通過加深網(wǎng)絡(luò)層提取更加豐富的特征。對(duì)比YOLOv1和YOLOv2,其特征提取網(wǎng)絡(luò)一定程度上提高檢測精度,但是對(duì)于小目標(biāo)車輛的檢測和受遮擋較為嚴(yán)重的車輛目標(biāo)仍存在漏檢、錯(cuò)檢的問題,原因是其殘差塊的結(jié)構(gòu)較為簡單,對(duì)于特征的提取不夠豐富?;诖诉x用FPN網(wǎng)絡(luò)結(jié)構(gòu)特征,在YOLOv3檢測算法基礎(chǔ)上提出結(jié)合FPN改進(jìn)后的YOLOv3網(wǎng)絡(luò)模型結(jié)構(gòu),重新構(gòu)造金字塔模塊替換原來的殘差模塊,網(wǎng)絡(luò)層將得到更豐富的語義特征(即目標(biāo)信息),有效增強(qiáng)了網(wǎng)絡(luò)中小目標(biāo)車輛的語義信息。并進(jìn)行nuscenes數(shù)據(jù)集和自建數(shù)據(jù)集訓(xùn)練和驗(yàn)證,以期在小目標(biāo)車輛檢測精度和召回率方面得到改善,有效緩解小目標(biāo)車輛漏檢錯(cuò)檢等問題。
分析YOLOv3的特征提取網(wǎng)絡(luò)可以發(fā)現(xiàn)其依靠殘差結(jié)構(gòu)加深了網(wǎng)絡(luò)層數(shù),通過更深的網(wǎng)絡(luò)層來提取更加豐富的特征。雖然相比于v1和v2新的特征提取網(wǎng)絡(luò)對(duì)于精度的提高有一定的幫助,但是對(duì)于小目標(biāo)的檢測仍存在漏檢的問題。通過分析YOLOv3的網(wǎng)絡(luò)結(jié)構(gòu),可以發(fā)現(xiàn)其殘差塊的結(jié)構(gòu)較為簡單,對(duì)于小目標(biāo)車輛特征的提取還是不夠豐富。故采用FPN網(wǎng)絡(luò)的結(jié)構(gòu)特征,重新構(gòu)造了金字塔模塊替換原來的殘差模塊,新設(shè)計(jì)的雙金字塔模塊如圖1所示。
圖1 雙金字塔模型的網(wǎng)絡(luò)結(jié)構(gòu)
圖2 結(jié)合FPN改進(jìn)后的YOLO-V3網(wǎng)絡(luò)結(jié)構(gòu)
在一個(gè)雙金字塔模塊內(nèi)同時(shí)包含有大小特征圖,在金字塔的上層放置的是大特征圖,大特征圖能夠更好體現(xiàn)目標(biāo)的區(qū)域信息。之后通過步長為2的卷積層將特征圖的大小縮小,并獲得一定深度的網(wǎng)絡(luò),這時(shí)的網(wǎng)絡(luò)層相較于之前會(huì)具有更豐富的語義特征即目標(biāo)信息。最后使用反卷積網(wǎng)絡(luò)將特征圖放大,并與之前的網(wǎng)絡(luò)進(jìn)行融合。在模塊的尾端,接入1x1的卷積層,對(duì)提取到的信息進(jìn)行整合,整合之后輸入下一個(gè)金字塔模塊。對(duì)于修改后的網(wǎng)絡(luò)結(jié)構(gòu)如圖2所示。
YOLOv3的網(wǎng)絡(luò)模型結(jié)構(gòu)主要由75個(gè)卷基層構(gòu)成,用作來分析物體特征。由于沒有使用全連接層,其網(wǎng)絡(luò)可以對(duì)應(yīng)任意大小的輸入圖像。此外,值得注意的是YOLOv3并沒有選擇加入池化層,取而代之的是將卷基層的stride設(shè)為2來達(dá)到下采樣的效果。因?yàn)閅OLOv3采用了殘差網(wǎng)絡(luò)結(jié)構(gòu),形成更深的網(wǎng)絡(luò)層次,以及進(jìn)行的是多尺度檢測,提升了mAP及小物體檢測效果。如果采用COCOmAP50做評(píng)估指標(biāo),YOLOv3的表現(xiàn)相當(dāng)驚人,在精確度相當(dāng)?shù)那闆r下,其速度是其它模型的3、4倍。而在訓(xùn)練過程中對(duì)于輸入的每幅圖像,YOLOv3首先會(huì)預(yù)測三個(gè)不同大小的3D-tensor,對(duì)應(yīng)著三個(gè)不同scale。設(shè)計(jì)這三個(gè)scale的目的就是為了能夠檢測出不同大小的物體。以13×13的tensor為例,對(duì)于這個(gè)scale,原始輸入圖像會(huì)被分成分割成13×13的網(wǎng)格單元,每個(gè)網(wǎng)格單元對(duì)應(yīng)著3D-tensor中的1×1×255這樣一個(gè)長條形voxel。255這個(gè)數(shù)字來源于(3×(4+1+80)),其中的數(shù)字代表bounding-box的坐標(biāo),物體識(shí)別度(objectness score),以及相對(duì)應(yīng)的每個(gè)class的confidence。其次,如果訓(xùn)練集中某一個(gè)ground-truth對(duì)應(yīng)的bounding-box中心恰好落在了輸入圖像的某一個(gè)grid-cell中,那么此grid-cell就負(fù)責(zé)預(yù)測該物體的bounding-box,為原圖中標(biāo)記的邊框。這個(gè)grid-cell所對(duì)應(yīng)的objectness-score就被賦予1,其余的grid-cell則為0。此外,每個(gè)grid-cell還被賦予3個(gè)不同大小的prior-box。在學(xué)習(xí)的過程中,這個(gè)grid-cell通過訓(xùn)練會(huì)逐漸學(xué)會(huì)如何選擇哪個(gè)大小的prior-box,以及對(duì)這個(gè)prior-box進(jìn)行微調(diào)。最后grid-cell將按照特定規(guī)則只選取與ground-truth-bounding-box的交并比最高的那個(gè)prior-box。分析檢測流程的整個(gè)環(huán)節(jié)可以看出,YOLOv3算法直接省去了基于候選區(qū)域?qū)ふ夷繕?biāo)這一步驟,采用回歸的思想即可對(duì)目標(biāo)進(jìn)行位置與類別的判斷。也正是由于YOLOv3算法將汽車的檢測轉(zhuǎn)化為一個(gè)回歸問題,才使得檢測速度大大提升,從而使得該算法能夠輕易滿足實(shí)時(shí)檢測的要求。
本文在訓(xùn)練中摒棄了之前的softmax,而是直接用邏輯回歸對(duì)每個(gè)類別進(jìn)行獨(dú)立二分類判定,用交叉熵計(jì)算損失。并且使用獨(dú)立的邏輯回歸來代替softmax,可以適配具有重疊標(biāo)簽的數(shù)據(jù)集。對(duì)于1維Anchor Box置信度,同樣也是使用邏輯回歸作為激活函數(shù),用交叉熵作為損失函數(shù)。此外,其四維位置數(shù)值tx,t0,tw,th,經(jīng)過如下公式進(jìn)行解碼,可得到預(yù)測框的中心坐標(biāo)(w,h)。其中σ(tx),σ(t0)是基于矩形框中心點(diǎn)左上角格點(diǎn)坐標(biāo)的偏移量;σ是激活函數(shù),這里使用sigmoid函數(shù);pw,ph是先驗(yàn)框的寬、高。通過以上描述,可計(jì)算出實(shí)際預(yù)測框的寬高(bw,bh)分別如公式(1)(2)(3)(4)。
bx=σ(tx)+cx
(1)
b0=σ(t0)+cx
(2)
bw=pwetw
(3)
bh=pheth
(4)
(5)
為了比較正確地評(píng)價(jià)本文提出的檢測模型的效果[12],在此先作True Vehicle、True N-Vehicle、False Vehicle、False N-Vehicle 4種定義。①True Vehicle:目標(biāo)為汽車,且被系統(tǒng)正確成功地檢測出來;②TrueN-Vehicle:目標(biāo)非汽車種類,且系統(tǒng)未將其錯(cuò)誤檢測為汽車;③False Vehicle:目標(biāo)非汽車種類,但被系統(tǒng)錯(cuò)誤地檢測成了汽車(誤檢);④False N-Vehicle:目標(biāo)為汽車,但系統(tǒng)沒有將其檢測為汽車(漏檢)。在此基礎(chǔ)上選用三個(gè)指標(biāo)來衡量本文算法性能的質(zhì)量:
(1)精確度(Precision),精確度指的是被正確檢測出的汽車占檢測出的汽車的比例,其計(jì)算表達(dá)式為此:
(6)
(2)召回率(Recall),召回率指的是被正確檢測出的汽車占驗(yàn)證集中所有汽車的比例,其計(jì)算表達(dá)式為:
(7)
(3)邊界框?qū)?yīng)的置信度(Confidence),置信度指的是一種用來判斷邊框是否包含物體及物體的位置是否準(zhǔn)確的指標(biāo),通過圖像交并比(IOU)來計(jì)算。其計(jì)算表達(dá)式如下:
(8)
2.1實(shí)驗(yàn)平臺(tái)
實(shí)驗(yàn)中主要硬件配置如下:深度學(xué)習(xí)軟件學(xué)習(xí)框架,Tensorflow;處理器,Intel(R)Core(R)i7-8700;顯卡,NVIDIA GeForce RTX 2080Ti;內(nèi)存,8GB;程序設(shè)計(jì)語言,phython語言。
本文的實(shí)驗(yàn)數(shù)據(jù)來源于nuscenes數(shù)據(jù)集和自建數(shù)據(jù)集。自建數(shù)據(jù)集取景具體位置為安徽省蕪湖市北京中路安徽工程大學(xué)西門天橋上方,并仿照交通攝像頭拍攝角度拍攝得到,按照車流疏密程度分別拍取了簡單樣本和困難樣本。最后從nuscenes數(shù)據(jù)集選取2000幅樣本圖片用來實(shí)驗(yàn)驗(yàn)證,其中訓(xùn)練集1600幅,測試集400幅。自建數(shù)據(jù)集500幅,其中訓(xùn)練集400幅,測試集100幅。為了確定優(yōu)化后算法的性能提升,將其分別與Faster-Rcnn和YOLOv3算法進(jìn)行比較。關(guān)于nuscenes數(shù)據(jù)集檢測效果對(duì)比如圖a、a(1)、a(2)、a(3),不難發(fā)現(xiàn)Faster-Rcnn和YOLOv3算法出現(xiàn)了尾部小車輛的漏檢現(xiàn)象,相比之下本文算法較好的解決了漏檢問題。關(guān)于自建數(shù)據(jù)集(簡單樣本)檢測效果圖對(duì)比如圖b、b(1)、b(2)、b(3),本文算法成功將遠(yuǎn)處細(xì)小車輛檢測出來。對(duì)于自建數(shù)據(jù)集(困難樣本)不同算法檢測效果對(duì)比如圖c、c(1)、c(2)、c(3),發(fā)現(xiàn)在車流量較大、光線較暗情況下進(jìn)行檢測,本文算法對(duì)于遠(yuǎn)處密集車輛仍有著很好的檢測效果。
a 數(shù)據(jù)集原圖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數(shù)據(jù)集對(duì)比對(duì)比結(jié)果如下表1所示,自建數(shù)據(jù)集對(duì)比結(jié)果如下表2所示。
表1 實(shí)驗(yàn)結(jié)果
表2 實(shí)驗(yàn)結(jié)果
為了更好的驗(yàn)證本文算法的可行性和優(yōu)越性,本文選取了目前檢測效果較好的Faster-Rcnn算法和YOLOv3算法分別進(jìn)行了對(duì)比,由表1和表2的結(jié)果對(duì)比可以發(fā)現(xiàn),本文提出的方法在綜合性能上有著不錯(cuò)的提升,其中在檢測精度上較原有YOLO算法提升了5個(gè)百分點(diǎn),此外召回率也從原有的83%提升至89%,并且在自建數(shù)據(jù)集上也得到了良好的檢測精度和召回率。速度方面雖然相比原有YOLOv3算法略為慢些,但在實(shí)際檢測過程中影響不明顯,完全能夠達(dá)到實(shí)時(shí)性檢測的要求。
本文提出的結(jié)合FPN的改進(jìn)YOLOv3車輛實(shí)時(shí)檢測算法,通過借鑒FPN網(wǎng)絡(luò)的結(jié)構(gòu)特征,將原有YOLOv3網(wǎng)絡(luò)結(jié)構(gòu)中的殘差模塊剔除重新構(gòu)造并且替換成了新設(shè)計(jì)的雙金字塔模塊。經(jīng)過訓(xùn)練和驗(yàn)證可知,該方法在滿足實(shí)時(shí)檢測速度要求的同時(shí),提高了車輛目標(biāo)檢測的準(zhǔn)確率與召回率,尤其對(duì)于小目標(biāo)車輛的檢測效果明顯。這對(duì)于無人駕駛系統(tǒng)和智能交通系統(tǒng)的研究具有一定的應(yīng)用價(jià)值。但對(duì)于存在嚴(yán)重遮擋和過遠(yuǎn)距離車輛的檢測效果尚未達(dá)到最佳,解決這個(gè)問題將是未來的一個(gè)重要研究方向。