查偉偉,白 天
(中國科學(xué)技術(shù)大學(xué) 軟件學(xué)院,安徽 合肥 230000)
公路視頻的車輛分類與車流量統(tǒng)計是運動物體目標(biāo)檢測識別與跟蹤問題,可以通過傳統(tǒng)圖像方法和現(xiàn)代深度網(wǎng)絡(luò)實現(xiàn)。傳統(tǒng)圖像方法由于計算量較小,因此實時性相對較高。現(xiàn)代深度網(wǎng)絡(luò)在背景分割、目標(biāo)分類的準(zhǔn)確度上有著壓倒性的優(yōu)勢。
傳統(tǒng)方法進行運動物體檢測一般是在圖像連續(xù)的幀之間做差分,進行背景去除或者對每個像素進行前景背景建模。經(jīng)典的方法如幀差法[1]、光流法[2]、背景減除法[3]、高斯背景建模[4],這些方法實時性高,但弊端也顯而易見:對高速和低速運動物體檢測效果差,抗背景擾動性差,對光照度變化敏感,切割出的物體有較大的背景邊緣。這些弊端不利于后續(xù)的分類和統(tǒng)計。文獻[5]給出了背景建模的難點并構(gòu)建了合成數(shù)據(jù)庫用以評價其他方法。
深度卷積神經(jīng)網(wǎng)絡(luò)[6](Deep Convolutional Neural Network,DCNN)應(yīng)用之后,給類似于圖像的網(wǎng)格計算帶來了福音。從RCNN[7]、Fast RCNN[8]到Faster RCNN[9]以及后續(xù)的Mask RCNN[10]等一系列深度網(wǎng)絡(luò)在目標(biāo)檢測和分類準(zhǔn)確率上有了極大的提升。其中Mask RCNN甚至可以將目標(biāo)沿著邊緣直接切割出來。特征金字塔FPN[11]的提出更是對細(xì)小物體輪廓檢測的精確度產(chǎn)生了極大影響,可以在低層次特征圖上獲取小物體輪廓。RetinaNet提出用FocalLoss[12]代替原來的交叉熵?fù)p失,緩解了two-stage網(wǎng)絡(luò)的類別不平衡問題,進一步提高了檢測速度。與此同時,像YOLO[13]、SSD[14]、對SSD的改進RefineDet[15],以及對特征圖融合的改進M2Det[16]這樣的one-stage深度網(wǎng)絡(luò)在提升準(zhǔn)確度的同時,實時性上也有所提升。在經(jīng)過YOLO網(wǎng)絡(luò)和YOLO9000[17]算法的奠基之后,YOLOv3[18]已經(jīng)可以對視頻進行端到端的實時目標(biāo)檢測和分類,但如果將其直接用在公路視頻上,研究發(fā)現(xiàn)由于車輛的由遠及近,在遠處捕捉的目標(biāo)誤差很大;夜間光照度弱的時候,背景常常被誤判捕捉;甚至是攝像頭視頻左上角的時間變化都會被捕捉成運動物體。這不便于車流量統(tǒng)計。
基于以上問題和需要,本文提出一個基于修改后的YOLOv3和淺層網(wǎng)絡(luò)的重構(gòu)網(wǎng)絡(luò)和后續(xù)的去重統(tǒng)計車流量算法。實驗結(jié)果表明相比傳統(tǒng)檢測帶法,該算法明顯降低了復(fù)檢和漏檢率,相比于目前的目標(biāo)跟蹤方法降低了時間復(fù)雜度。
YOLOv3是一個端到端的one-stage目標(biāo)檢測網(wǎng)絡(luò)。其端到端的特性是指可以直接從視頻輸入到視頻輸出。這依賴其one-stage的優(yōu)勢——實時性好,依據(jù)其官網(wǎng)提供的數(shù)據(jù),YOLOv3-320可以達到45 f/s,YOLOv3-tiny可以達到220 f/s,可以實現(xiàn)在mAP和速率之間權(quán)衡。公路視頻一般在25 f/s,可以滿足實時性需要。但相對于two-stage網(wǎng)絡(luò),YOLOv3也有其明顯的劣勢,由于其候選anchor數(shù)目很多,而真正進行分類和坐標(biāo)回歸預(yù)測的只有少數(shù)真正含有目標(biāo)物體的anchor。YOLOv3的損失包括了是否含有目標(biāo)物體的置信度損失、分類損失以及坐標(biāo)預(yù)測損失。大量的anchor預(yù)測的都是背景導(dǎo)致負(fù)例比例嚴(yán)重大于正例比例,而負(fù)例損失雖然沒有計入分類損失和坐標(biāo)預(yù)測損失,但是卻會被計入是否含有目標(biāo)物體的置信度損失中。通過實際預(yù)測較少的anchor提高了YOLOv3的速率但也降低了預(yù)測的準(zhǔn)確度。
自Alexnet之后,人們自主設(shè)計的分類網(wǎng)絡(luò)層出不窮。經(jīng)典的如VGG、GoogleNet、Inception Network、ResNet。與這些網(wǎng)絡(luò)相比,淺層網(wǎng)絡(luò)層數(shù)少,時效高,準(zhǔn)確率也不會丟失幾個百分點。較之后動則上百層的分類網(wǎng)絡(luò),淺層網(wǎng)絡(luò)可以僅有5層卷積層、3層池化層以及4個全連接層。外加一些ReLU、dropout等提高網(wǎng)絡(luò)性能的手段??紤]到實時性的要求,本文采用這樣一個層數(shù)較淺的分類網(wǎng)絡(luò)去提高抗背景的擾動性,去除目標(biāo)檢測網(wǎng)絡(luò)中錯誤切割出的運動目標(biāo)以及變化的背景。
本文提出一種基于YOLOv3與淺層神經(jīng)網(wǎng)絡(luò)整合后的實時車輛檢測與分類網(wǎng)絡(luò),在滿足實時性的同時提高網(wǎng)絡(luò)對公路視頻的車輛檢測和分類的準(zhǔn)確性。之后根據(jù)兩個網(wǎng)絡(luò)的輸出提出一種基于傳統(tǒng)圖像方法的車流量統(tǒng)計算法。
檢測網(wǎng)絡(luò)采用YOLOv3,模型采用YOLOv3-416,根據(jù)官網(wǎng)提供數(shù)據(jù),YOLOv3-416可達35 f/s。利用Darknet平臺提供的detector demo API測試,可以實現(xiàn)公路視頻的實時端到端輸出。實測直接用YOLOv3訓(xùn)練自己的車輛數(shù)據(jù)集進行檢測分類時,網(wǎng)絡(luò)由于數(shù)據(jù)集的大小、公路視頻的噪聲干擾、環(huán)境光照度變化等因素導(dǎo)致分類效果不理想,甚至?xí)e誤分類一些類似模糊的背景以及攝像頭上方變化的時間信息。實時性可以保證,準(zhǔn)確性達不到實際需求。
針對以上問題,本文對YOLOv3網(wǎng)絡(luò)的主體部分進行改造。改造后的網(wǎng)絡(luò)如圖1所示。
為保證分類的準(zhǔn)確性不受公路視頻噪聲、光線變化等因素的干擾,應(yīng)當(dāng)先對圖片數(shù)據(jù)進行一次篩選,不應(yīng)當(dāng)直接分類,所以改造YOLOv3主干網(wǎng)絡(luò)輸出層前的1×1網(wǎng)絡(luò)通道數(shù)為3×7,3為每個grid預(yù)測3個尺寸的anchor;7包含x、y、w、h四個坐標(biāo),物體置信度prob以及iscar、notcar兩個分類。兩個分類中的notcar用來對采集的視頻圖片數(shù)據(jù)進行清洗,篩除行人、攝像頭上角變化的數(shù)字等一系列運動的物體??紤]到車輛在剛進入攝像頭畫面時是不清晰的,不利于后續(xù)分類,所以希望捕捉到盡量大一些清晰些的車輛,同時進一步提高實時性。基于以上兩點,在FPN(特征金字塔)中,只向上采樣一次,在原有13×13的特征圖中再得到26×26的融合特征輸出,分別對應(yīng)于圖1中的output1和output2。對主干網(wǎng)絡(luò)的輸出進行坐標(biāo)回歸以及非極大值抑制后得到的輸出為準(zhǔn)車輛的boundingbox坐標(biāo)(小目標(biāo)物體由于多次特征提取導(dǎo)致坐標(biāo)回歸不精確,很大概率會在后續(xù)的初步根據(jù)置信度篩選目標(biāo)框中被過濾)。根據(jù)坐標(biāo)對原圖進行裁剪,將目標(biāo)裁剪出來,進一步排除背景變化對分類的干擾。為保證實時性,選擇一個層數(shù)不深的淺層神經(jīng)網(wǎng)絡(luò)作為后繼,淺層分類可并行。將裁剪后的目標(biāo)圖片resize成固定大小的圖片作為淺層網(wǎng)絡(luò)的輸入。淺層網(wǎng)絡(luò)輸出為car、bus、motor、truck、none五個分類,其中none用來篩除誤檢測的背景等圖片。考慮到自身公路視頻車輛數(shù)據(jù)集的大小問題,為了防止過擬合,并不對車輛數(shù)據(jù)集進行去噪和手動篩選,仍然采用含有噪聲擾動以及運動模糊的原公路視頻車輛數(shù)據(jù)集進行訓(xùn)練。為了防止高偏差,淺層網(wǎng)絡(luò)的特征提取層采用在ImageNet上的預(yù)訓(xùn)練參數(shù),僅對4個全連接層用自身車輛數(shù)據(jù)集遷移學(xué)習(xí)。
圖1 改造后的darknet53
融合后的網(wǎng)絡(luò)采取分開訓(xùn)練的方式,改造后的YOLOv3網(wǎng)絡(luò)使用ImageNet進行初始權(quán)重的訓(xùn)練,初始學(xué)習(xí)率設(shè)置為 0.1,weight decay設(shè)置為0.000 5,momentum設(shè)置為0.9,batchsize設(shè)為 128。訓(xùn)練30個epochs。使用廈門公路局提供的車輛數(shù)據(jù)集制作成coco數(shù)據(jù)集在初始權(quán)重上再訓(xùn)練10個epochs。淺層分類網(wǎng)絡(luò)的訓(xùn)練采取finetune的方式,初始權(quán)重在ImageNet上預(yù)訓(xùn)練得到,保存在npy文件中,將該文件中網(wǎng)絡(luò)權(quán)重轉(zhuǎn)化成tensorflow的ckpt格式。加載過后凍結(jié)最后的四個全連接層,將廈門公路局提供的車輛數(shù)據(jù)集通過改造的YOLOv3網(wǎng)絡(luò)進行目標(biāo)檢測,裁剪出車輛目標(biāo)以及一些none分類目標(biāo)圖片作為訓(xùn)練集,訓(xùn)練集比例car:bus:motor:truck:none為1∶1∶1∶1∶1。將該裁剪后的圖片訓(xùn)練集對淺層網(wǎng)絡(luò)進行finetune,得到最終的權(quán)重文件。
將淺層網(wǎng)絡(luò)輸出的4個車輛分類(none分類直接過濾)以及YOLOv3網(wǎng)絡(luò)輸出的對應(yīng)目標(biāo)坐標(biāo)作為車流量統(tǒng)計算法的輸入。因為YOLOv3網(wǎng)絡(luò)在目標(biāo)檢測階段對每一幀圖片都實時地輸出了目標(biāo)的中心點坐標(biāo)和長寬,可以充分利用幀與幀之間的大量重復(fù)信息,類似于幀差法求運動前景的輪廓,當(dāng)物體運動過快或者選擇不連續(xù)的幀進行差分的時候就會出現(xiàn)拖長的輪廓。同理,可以對每隔幾幀的圖片的anchor box中心點坐標(biāo)以及長寬進行匹配。目標(biāo)中心點坐標(biāo)相差小于閾值,并且長寬變化小于閾值時判定為同一輛車。反之判定為新的車輛進入視野,車輛計數(shù)器加一。
算法流程如下:
(1)初始化車輛計數(shù)器Count=0。
(1)
(5)計算矩陣每一行Li1,Li2,…,Lin(i=1,2,…,m),若存在Lij<ε(j=1,2,…,m),則Count不變;否則,Count++。
(6)提取交通視頻剩余幀畫面,重復(fù)步驟(3)~步驟(5),直至結(jié)束。
算法流程圖如圖2所示。
圖2 車流量統(tǒng)計算法流程圖
實驗用到兩個數(shù)據(jù)集:ImageNet數(shù)據(jù)集和從廈門公路局提供的公路視頻提取到的車輛數(shù)據(jù)集。其中公路視頻數(shù)據(jù)集包括45 012張訓(xùn)練圖片和13 587張測試圖片。訓(xùn)練集和測試集均劃分為5個類:car,truck,motor,bus,none。其中none代表非車輛分類的運動物體或背景。并且對該數(shù)據(jù)集只進行了人工打標(biāo)簽操作,并未進行任何數(shù)據(jù)集清洗,圖片包含噪聲,目標(biāo)物體存在運動模糊,與攝像頭存在距離變化。因此訓(xùn)練出的模型泛化能力好。
實驗環(huán)境包括硬件設(shè)備和軟件配置。硬件參數(shù)為:Intel(R) Xeon(R) Silver 4116 CPU @ 2.10 GHz;6條32 GB內(nèi)存;Ubuntu16.04;Tesla V100 16 130 MB顯存。軟件參數(shù)為:TensorFlow 1.13.1;Keras 2.2.4;Python3.7.3;Jupyter Notebook。
實驗?zāi)P蛥?shù)分為兩部分,第一部分YOLOv3網(wǎng)絡(luò)采用YOLOv3-416改造后的模型,權(quán)重參數(shù)使用在ImageNet數(shù)據(jù)集和自身車輛數(shù)據(jù)集上訓(xùn)練得到的初始參數(shù)。該權(quán)重是在ImageNet數(shù)據(jù)集上分了幾個階段訓(xùn)練得到的,比直接使用公路視頻提取的車輛數(shù)據(jù)集訓(xùn)練得到的權(quán)重在目標(biāo)檢測上效果好。第二部分淺層網(wǎng)絡(luò)初始訓(xùn)練采用ImageNet數(shù)據(jù)集。初始訓(xùn)練過后使用車輛測試數(shù)據(jù)集進行測試,top1準(zhǔn)確率為83.31%。初始訓(xùn)練和測試完畢后使用車輛訓(xùn)練數(shù)據(jù)集再次訓(xùn)練,凍結(jié)之前的所有特征提取層。訓(xùn)練10個epochs過后再次使用車輛測試數(shù)據(jù)集進行測試,top1準(zhǔn)確率達到96.30%。
3.2.1 檢測分類效果
由于公路視頻車輛檢測和分類難以找到具體的對照指標(biāo)。為了體現(xiàn)本文重構(gòu)模型的分類效果,將本文模型與直接用YOLOv3訓(xùn)練車輛數(shù)據(jù)集得到的模型的分類進行對比。將車輛數(shù)據(jù)集制作成YOLOv3官方要求的coco數(shù)據(jù)集進行訓(xùn)練YOLOv3網(wǎng)絡(luò),初始權(quán)重采用ImageNet上的預(yù)訓(xùn)練權(quán)重。設(shè)置上述5個分類,模型采用YOLOv3-416,Batchsize設(shè)置為與淺層網(wǎng)絡(luò)同樣的大小128,訓(xùn)練10個epoch。隨機抽取測試集5個分類中車輛的分類結(jié)果和置信度大小,本文重構(gòu)網(wǎng)絡(luò)分類效果如圖3所示。
圖3 本文重構(gòu)網(wǎng)絡(luò)識別效果圖
由圖3第一行子圖可見,本文重構(gòu)網(wǎng)絡(luò)對于夜間背景和光線昏暗的隧道等可見度低的背景篩除效果較好;由第二行第一個子圖可見,對于特殊的箱式貨車,模型可以正確給出分類結(jié)果,但分類置信度不高,后期可以通過對這種特殊的貨車進行數(shù)據(jù)增強以提高分類置信度;由第三行和第四行可見,模型對于白天車型分類準(zhǔn)確率和置信度很高,完全可以投入到實際應(yīng)用中;由第五行前兩張圖片可見,模型對于夜間微小車輛分類具有魯棒性,由最后一張圖片可見運動模糊的車輛在切片過后分類效果較好。
由圖4很容易看出夜間直接用YOLOv3網(wǎng)絡(luò)訓(xùn)練自己的數(shù)據(jù)集已經(jīng)不能檢測公路視頻中的車輛類型,還有噪聲被當(dāng)成目標(biāo)錯誤地捕捉。由圖3可以看出本文的重構(gòu)網(wǎng)絡(luò)夜間可以很好地去除YOLOv3錯誤捕捉的噪聲構(gòu)成的目標(biāo),去除大量噪聲的錯檢。但對車輛檢測的置信度也存在一定的下降,會存在漏檢的情況,這時可以通過降低設(shè)置的置信度閾值來進行一定的補償。但仍需后期進一步改進夜間的效果。
圖4 YOLOv3網(wǎng)絡(luò)識別效果圖
綜合上述對比圖可以看出,基于one-stage的YOLOv3網(wǎng)絡(luò)訓(xùn)練得到的模型直接用在公路視頻車輛測試集上,分類存在一定的錯誤率,尤其是在存在運動模糊的小型物體如motor和較大背景周期噪聲的truck上,錯誤率較高,而這些情況在公路視頻上很常見。置信度的差距尤為明顯。這體現(xiàn)出直接在車輛數(shù)據(jù)集上訓(xùn)練的泛化能力不足。后期可以考慮在YOLOv3上凍結(jié)某些層進行訓(xùn)練。
3.2.2 車流量統(tǒng)計效果
為驗證本文車流量統(tǒng)計算法在摻雜光照強度和背景變化干擾下的效果,隨機抽取3條道路,每條道路抽取2個視頻,包含白天、夜晚。人工輸出一定視頻時長中車輛數(shù)目,具體如表1所示。
表1 車流量實際情況統(tǒng)計表
實驗中采用匹配準(zhǔn)確率作為指標(biāo):
(2)
其中,right代表正確檢測并匹配對的機動車數(shù)量,error代表未檢測到或者匹配出錯導(dǎo)致誤檢漏檢的機動車數(shù)量。為驗證本文提出的算法效果,本文使用基于虛擬檢測帶的方法對實驗視頻數(shù)據(jù)進行處理并做對比,如表2所示。
表2 車流量統(tǒng)計效果對照表
本文提出一種傳統(tǒng)圖像方法和深度學(xué)習(xí)方法相結(jié)合的基于公路視頻的實時車輛檢測分類和車流量統(tǒng)計算法,在保證實時性的同時提高了公路視頻車輛分類的準(zhǔn)確率。建立了基于YOLOv3網(wǎng)絡(luò)和淺層網(wǎng)絡(luò)的重構(gòu)網(wǎng)絡(luò),當(dāng)輸入為有噪聲污染的圖像和公路實時視頻時,分類置信度和準(zhǔn)確率相較于原YOLOv3網(wǎng)絡(luò)有明顯的提高,對于夜間視頻有一定的改善效果?;谥饚ヅ涞能嚵髁拷y(tǒng)計算法,相比于傳統(tǒng)的檢測帶法,本文方法誤檢漏檢率低、人工干預(yù)少。該方法還有很多可以提升的空間,其中檢測網(wǎng)絡(luò)還是會有一定的小目標(biāo)物體被檢測,導(dǎo)致后續(xù)的分類網(wǎng)絡(luò)會分類一些在圖像邊緣就捕捉到的輪廓模糊的車輛,從而降低分類準(zhǔn)確率;其次目前由于數(shù)據(jù)集的限制,沒有對車輛具體類別再繼續(xù)細(xì)化下去。后續(xù)研究會考慮對公路的具體每個車道進行車流量統(tǒng)計。