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