(西安工程大學(xué) 電子信息學(xué)院,西安 710048)
針對現(xiàn)如今高交通流的信息發(fā)展時代下,道路交通擁堵問題及車輛信息識別的需求,智能交通系統(tǒng)[1]成為解決此類問題的有效手段。在此背景下,我們必須對車輛的微觀信息進(jìn)行有效采集。車輛檢測是智能交通系統(tǒng)數(shù)據(jù)前端采集的一個重要環(huán)節(jié)[2],同時作為目標(biāo)檢測技術(shù)的一個具體應(yīng)用方向,基于機(jī)器學(xué)習(xí)的車輛檢測更是近年研究熱點。而深度學(xué)習(xí)[3]作為機(jī)器學(xué)習(xí)中重要的一部分,在未來車路協(xié)同環(huán)境和微觀交通對象信息提取的工程應(yīng)用中,在進(jìn)一步提高檢測率、魯棒性的車輛多目標(biāo)實時檢測系統(tǒng)中提供了良好的技術(shù)基礎(chǔ)。
文獻(xiàn)[4]中,Szegedy等人采用深度學(xué)習(xí)的方法在VOC 2007數(shù)據(jù)集測試結(jié)果中使mAP達(dá)到了30%;R-CNN[5]則將傳統(tǒng)機(jī)器學(xué)習(xí)和深度學(xué)習(xí)結(jié)合起來,有效的將mAP提升至48%;不久Uijlings等人通過修改網(wǎng)絡(luò)模型的結(jié)構(gòu)將mAP提高到66%。隨后通過進(jìn)一步優(yōu)化目標(biāo)檢測網(wǎng)絡(luò)模型結(jié)構(gòu),出現(xiàn)了SPP-Net[6]、Fast R-CNN[7]、Faster R-CNN[8]、YOLO[9]等,mAP變化如表1所示。YOLO與傳統(tǒng)依賴先驗知識的特征提取算法不同,它是采用深度卷積神經(jīng)網(wǎng)絡(luò)的全新實時目標(biāo)檢測方法,對幾何變換、形變和光照具有一定程度的不變性,進(jìn)一步的將mAP提升到了78.6%,改善了車輛外觀多變帶來的影響,使檢測系統(tǒng)具有更高的靈活性和泛化能力。
表1 mAP變化
本文針對車輛多目標(biāo)檢測系統(tǒng)中,車輛外形、車體結(jié)構(gòu)以及道路場景復(fù)雜等變化導(dǎo)致的檢測率低的問題[10],利用Darknet深度學(xué)習(xí)框架的YOLO9000算法,對本文構(gòu)建的多目標(biāo)車輛VOC數(shù)據(jù)集進(jìn)行特征訓(xùn)練學(xué)習(xí),進(jìn)一步對網(wǎng)絡(luò)模型進(jìn)行改進(jìn)和參數(shù)的調(diào)整,最終得到本文改進(jìn)的車輛多目標(biāo)實時檢測模型。
YOLO9000是采用YOLO v2 + join training算法,在ImageNet上進(jìn)行預(yù)訓(xùn)練后,采用我們的數(shù)據(jù)集開始訓(xùn)練模型。將數(shù)據(jù)隨機(jī)旋轉(zhuǎn)或調(diào)整色度和亮度等進(jìn)行數(shù)據(jù)增強(qiáng),對訓(xùn)練目標(biāo)進(jìn)行卷積池化的特征提取,進(jìn)而得到我們的車輛檢測模型并進(jìn)行視頻檢測分析。訓(xùn)練流程如圖1所示。
YOLO9000是一個實時物體檢測系統(tǒng),可以檢測9418個對象類別[11]。YOLO9000的設(shè)計理念遵循端到端訓(xùn)練和實時檢測:它把一整張圖片一次性應(yīng)用到一個神經(jīng)網(wǎng)絡(luò)中去,網(wǎng)絡(luò)會把圖片分成s×s個不同的單元格,對每個單元格進(jìn)行訓(xùn)練學(xué)習(xí),若車輛的中心點落在某個單元格內(nèi),則相應(yīng)的單元格負(fù)責(zé)檢測該車;我們設(shè)置閾值為0.25,在輸出的特征圖上,對每個單元格進(jìn)行直接位置預(yù)測,輸出置信度評分超過閾值的檢測結(jié)果。通過WordTree產(chǎn)生所需要的B個bounding boxes的位置,每一個bounding box獲得5個坐標(biāo)預(yù)測值:分別為(tx,ty)、(tw,th)和一個置信度評分,目標(biāo)回歸如圖2所示。
圖2 回歸目標(biāo)
(tx,ty)是每個bounding boxes的中心距離其所在單元格邊框的偏移坐標(biāo)位置,(tw,th)是bounding boxes的真實寬高相對于整幅圖像的比例,單元格距離圖像左上角的邊距為(cx,cy),單元格對應(yīng)bounding boxes維度的長和寬分別為(pw,ph)。則bounding boxes的真實位置預(yù)測如式(1)所示:
bx=σ(tx)+cx
by=σ(ty)+cy
bw=pwetw
bh=pheth
(1)
置信度評分是通過出現(xiàn)的bounding box與對應(yīng)待檢測車輛目標(biāo)的概率以及bounding box和車輛目標(biāo)真實位置的IOU積的關(guān)系對該bounding box位置預(yù)測的精度進(jìn)行表示,其具體計算如式(2)所示。
(2)
除此之外,YOLO9000算法中每個單元格還將產(chǎn)生有且僅有一組包含C個條件概率Pr(Classi|Object)的概率集,此概率集將用于目標(biāo)最佳位置的確定。
YOLO9000使用WordTree整合數(shù)據(jù)集之后,在數(shù)據(jù)集(分類-檢測數(shù)據(jù))上利用層次分類的方法訓(xùn)練模型,使該系統(tǒng)可以識別超過9000種物品[11],本文是用于車輛多目標(biāo)的檢測系統(tǒng)設(shè)計,因此只有一類目標(biāo)——車,去掉了層次訓(xùn)練方式。YOLO9000模型與VGG模型類似,使用3×3的濾波器在每次池化之后將通道數(shù)加倍,并采用batch normalization 來穩(wěn)定訓(xùn)練,加速收斂,正則化模型。YOLO9000的模型結(jié)構(gòu)簡化到了24層,第23層是17×17,和之前YOLO v2的13×13類似,只是把輸出預(yù)測網(wǎng)格變成了17×17,網(wǎng)絡(luò)結(jié)構(gòu)如圖3所示。
圖3 YOLO9000模型框架
在深度卷積神經(jīng)網(wǎng)絡(luò)中,route層起連接作用,可以進(jìn)行層的合并為網(wǎng)絡(luò)帶來更細(xì)粒度特征[12];reorg層可以將這些特征與下一層的特征尺寸相匹配,即match特征圖尺寸。因此,本文在YOLO9000網(wǎng)絡(luò)結(jié)構(gòu)的15層后添加一個route層,16層后添加一個reorg層和一個route層,本文命名為YOLO9000_md(YOLO9000_multi-target detection)網(wǎng)絡(luò)模型。
車輛檢測系統(tǒng)硬件配置為:西安工程大學(xué)深度學(xué)習(xí)工作站的服務(wù)器容天SCW4750,采用一個CPU Intel i7-5930,4個NVIDIA GeForce TitanX 12G,8個8G內(nèi)存。YOLO9000算法的程序設(shè)計語言為C++語言,操作系統(tǒng)為Ubuntu16.04,深度神經(jīng)網(wǎng)絡(luò)參數(shù)配置平臺為Darknet框架,整個開發(fā)環(huán)境為Ubuntu16.04+Opencv 3.1.0+CUDA 8.0+CUDNN5.0,配合應(yīng)用基于深度卷積神經(jīng)網(wǎng)絡(luò)的GPU加速庫CUDNN,對數(shù)據(jù)進(jìn)行快速訓(xùn)練及實時性驗證。
基于CNN[13]的車輛檢測方法需要從大量樣本中學(xué)習(xí)車輛特征,若樣本集不具有代表性,很難選擇出好的特征。為保證數(shù)據(jù)的多樣性,本文分時段對同一目標(biāo)路段(西安市碑林區(qū)金花南路19號西安工程大學(xué)立交橋)進(jìn)行圖像采集。同時,根據(jù)光照和車流密度的不同,文章采集了早上6:00-7:00的自由流(車輛數(shù)<300輛/小時)、9:00-11:00的同步流(300≤車輛數(shù)≤900輛/小時)、7:30-8:30的阻塞流(900<車輛數(shù)<1300輛/小時)等[14]車流密度條件下的三組數(shù)據(jù)組合成一個混合樣本(由訓(xùn)練集和驗證集組成),獲取樣本如圖4所示(部分)。將訓(xùn)練樣本按80%和20%的比例隨機(jī)分開,用于模型的訓(xùn)練和模型性能的驗證(見2.2.1節(jié))。
圖4 混合數(shù)據(jù)樣本
2.2.1 訓(xùn)練結(jié)果驗證分析
本文使用在ImageNet上預(yù)訓(xùn)練得到的網(wǎng)絡(luò)模型對YOLO9000和YOLO9000_md模型進(jìn)行參數(shù)調(diào)整,將我們制作的車輛VOC數(shù)據(jù)集導(dǎo)入模型,在GPU加速情況下訓(xùn)練1小時后,獲取了迭代20000次之后的檢測模型。我們將初始學(xué)習(xí)率設(shè)為0.001和0.0001,在迭代2000次、6000次和15000次時以之前的0.1倍來改變學(xué)習(xí)率,保存迭代10000次和20000次的不同權(quán)重模型,將訓(xùn)練結(jié)果進(jìn)行實驗對比分析。
1)Loss曲線分析:
圖5為YOLO9000模型和YOLO9000_md模型訓(xùn)練時的Loss曲線圖。子圖(a)是YOLO 9000模型以0.0001的初始學(xué)習(xí)率在迭代1000次時的Loss曲線圖,其訓(xùn)練開始由于學(xué)習(xí)率過小發(fā)散比較嚴(yán)重,在迭代接近400次逐漸趨于收斂;子圖(b)是將學(xué)習(xí)率調(diào)整為0.001后的Loss曲線圖,對比圖(a)明顯訓(xùn)練開始抖動降低,并且在迭代200次時就迅速收斂,但是兩條曲線開始擺動都處于發(fā)散狀態(tài),且Loss最大值都達(dá)到了2000多;子圖(c)是YOLO9000_md模型以0.001的初始學(xué)習(xí)率訓(xùn)練時的Loss值,訓(xùn)練時一直處于收斂狀態(tài)比較平穩(wěn),Loss值一直在300以內(nèi),并且在迭代400次后逐漸無限趨于0。雖然圖(b)YOLO9000在收斂速度上具有優(yōu)勢,但在檢測實驗過程匯總中發(fā)現(xiàn),前期收斂速度的微小差別對后期檢測效果影響較小。因此做了進(jìn)一步的驗證。
圖5 Loss 曲線圖
2)準(zhǔn)確性分析:
我們進(jìn)一步對驗證集進(jìn)行測試的結(jié)果如表1所示。其中,Total表示實際有多少個目標(biāo)包圍框,即待檢測實際目標(biāo)個數(shù);Correct表示正確的識別出了多少個包圍框,就是我們在檢測一張圖片時,網(wǎng)絡(luò)模型會檢測出很多目標(biāo)包圍框,每個目標(biāo)包圍框都有其置信概率,概率大于閾值的包圍框與實際的目標(biāo)包圍框計算IOU,找出IOU最大的包圍框,如果這個最大值大于預(yù)設(shè)的IOU的閾值,那么Correct就加一;Proposal表示所有檢測出來的包圍框中,大于閾值的包圍框的數(shù)量;Precision表示精確度如式(3)所示;Recall表示召回率,是檢測出車輛的個數(shù)與驗證集中所有車輛個數(shù)的比值,如式(4)所示:
(3)
(4)
由表2可知:在驗證364個目標(biāo)時,以0.0001的初始學(xué)習(xí)率得到的YOLO9000模型可準(zhǔn)確檢測出314個車輛目標(biāo),其Precision只有76.77%,Recall值是86.26%;以0.001的初始學(xué)習(xí)率得到的模型其Precision值提升到了89.03%,同時Recall提高到了95.88%;改進(jìn)模型YOLO 9000_md以0.001的初始學(xué)習(xí)率訓(xùn)練后得到的驗證結(jié)果顯示,其Precision和Recall值同時提升了0.2%以上,達(dá)到了很好的折中效果。
表2 測試結(jié)果
3)檢測結(jié)果分析:
為進(jìn)一步驗證模型在實際交通視頻視頻檢測中,訓(xùn)練的不同權(quán)重模型對檢測結(jié)果的影響。本文將YOLO9000模型以0.001的初始學(xué)習(xí)率在經(jīng)過半個小時的訓(xùn)練后得到了迭代10000次的權(quán)重模型,一小時后得到迭代20000次的權(quán)重模型,將不同的權(quán)重模型進(jìn)行車輛多目標(biāo)的檢測,對檢測結(jié)果進(jìn)行了直觀的對比,如圖6所示。
圖6 YOLO9000模型
對比圖6實驗結(jié)果,YOLO9000迭代20000次檢測效果優(yōu)于10000次結(jié)果。子圖(a)的第一張右后方、第二張中間下方對比子圖(b)存在明顯的漏檢情況;第一張右下方將背景誤檢為了車輛目標(biāo),第三張中右后方將地面雜物也誤檢為了車輛;這是由于預(yù)測框與檢測出的標(biāo)記框即IOU數(shù)值存在較大差異。分析可知,迭代次數(shù)在同等條件下較多的迭代次數(shù),將獲得更好的檢測效果,但對于資源的耗費(fèi)將更多。
2.2.2 視頻下的多目標(biāo)實時檢測結(jié)果分析
因YOLO方法受訓(xùn)練樣本影響較大,需要樣本多樣性且具有代表性,在應(yīng)用本文采集的組合不同車流密度得到的樣本訓(xùn)練模型之后,為驗證其在交通視頻下檢測結(jié)果都具有準(zhǔn)確性,本文根據(jù)之前實驗結(jié)果(詳見2.2.1),以0.001的初始學(xué)習(xí)率用YOLO9000和改進(jìn)YOLO9000_md模型將采集到的視頻圖像進(jìn)行實時檢測如圖7所示,最后得出其測試結(jié)果的混淆矩陣?;煜仃囍饕糜诒容^分類結(jié)果和實際檢測結(jié)果,可以把分類結(jié)果的比例顯示在一個混淆矩陣?yán)锩?,進(jìn)而分析圖像檢測分類的準(zhǔn)確程度。結(jié)果如圖8、圖9所示。
圖7 視頻檢測結(jié)果
圖9 YOLO9000_md模型
在交通視頻的檢測中,可以很好地檢測出視頻中的車輛,如圖8所示。我們一共提取到了673張圖像,一共包括2880個待檢測目標(biāo),由圖9可知,YOLO9000模型將背景檢測為車輛的有142個,也就是誤檢;而將車輛目標(biāo)沒有檢測出來303輛,也就是漏檢;最終正確檢測出車輛目標(biāo)2738個。相比圖8,圖9改進(jìn)YOLO9000_md模型正確檢測出目標(biāo)2743個,比YOLO9000模型的正確檢測出的目標(biāo)多了5個,同時對做到了很好的處理誤檢和漏檢情況做了很好處理,情況也有所減少。因此,針對視頻下的多車輛目標(biāo)實時檢測,本文訓(xùn)練獲得的YOLO9000-md模型具有更好的檢測效果。
本文針對城市多車道中多目標(biāo)視頻檢測問題,利用深度學(xué)習(xí)的Darknet框架下的YOLO9000目標(biāo)檢測算法,通過對YOLO9000模型參數(shù)的分析,根據(jù)車輛目標(biāo)特征及其運(yùn)動特征,進(jìn)行不同網(wǎng)絡(luò)結(jié)構(gòu)的訓(xùn)練和對比,提出了一種能夠獲得較準(zhǔn)確檢測結(jié)果的YOLO9000-md網(wǎng)絡(luò)模型,該模型將目標(biāo)檢測問題轉(zhuǎn)換為目標(biāo)的二分類問題,通過大量的試驗,獲得了以組合不同車流密度的車輛作為訓(xùn)練集,基于YOLO9000-md網(wǎng)絡(luò)結(jié)構(gòu)模型選取2000次迭代的視頻下多車輛目標(biāo)檢測方法。文章最后,對所建立模型進(jìn)行了實測實驗,通過實驗結(jié)果的多種分析發(fā)現(xiàn):本文改進(jìn)的YOLO9000-md模型的實驗結(jié)果正確率可以達(dá)到96.15%,相比于傳統(tǒng)的機(jī)器學(xué)習(xí),無論在準(zhǔn)確率或者運(yùn)行效率上都得到了大大的提高;對比經(jīng)典的YOLO9000模型可以看出,YOLO9000-md模型在獲得較好Precision值的條件下?lián)p失的Recall值明顯較??;同時最終檢測結(jié)果更好,普適于視頻下的多目標(biāo)檢測,雖正確檢測結(jié)果相差不遠(yuǎn),但效果良好。