馬浩良 謝林柏
(江南大學(xué)物聯(lián)網(wǎng)工程學(xué)院 無錫 214122)
隨著國(guó)家經(jīng)濟(jì)的快速發(fā)展與人民生活質(zhì)量的不斷提高,近年來城市道路的車輛逐年增多,導(dǎo)致交通擁擠、事故頻發(fā)。面對(duì)上述問題,智能交通系統(tǒng)(Intelligent Transportation System,ITS)應(yīng)運(yùn)而生,而其中車輛檢測(cè)與識(shí)別在指導(dǎo)交通疏導(dǎo)、規(guī)避交通事故、卡口收費(fèi)等方面有了越來越廣泛的應(yīng)用,因此逐漸成為圖像視覺領(lǐng)域的一個(gè)研究熱點(diǎn)[1]。
傳統(tǒng)的機(jī)動(dòng)車檢測(cè)算法[2~3]通常人工設(shè)計(jì)算法來提取圖像特征。文獻(xiàn)[4]基于Vibe 算法實(shí)現(xiàn)了機(jī)動(dòng)車檢測(cè)并結(jié)合自適應(yīng)閾值與雙特征有效地抑制了機(jī)動(dòng)車檢測(cè)中常見的鬼影和空洞現(xiàn)象。文獻(xiàn)[5]針對(duì)夜間車輛檢測(cè)精度相對(duì)不高的問題,提出通過構(gòu)建車頭燈對(duì)空間幾何關(guān)系的高斯混合模型(GMM)和采用逆投影車輛樣本的AdaBoost 分類器準(zhǔn)確檢測(cè)夜間車輛的方法。上述機(jī)動(dòng)車檢測(cè)方法都是基于傳統(tǒng)的目標(biāo)檢測(cè)算法來實(shí)現(xiàn)的,其特點(diǎn)是計(jì)算效率高、算法的設(shè)計(jì)復(fù)雜度低,然而在實(shí)際的應(yīng)用場(chǎng)景中,傳統(tǒng)的機(jī)動(dòng)車檢測(cè)算法需要針對(duì)特定的場(chǎng)景設(shè)計(jì)有針對(duì)性的特征,難以適應(yīng)環(huán)境惡劣、復(fù)雜多變的場(chǎng)景,泛化能力較差,越來越難以勝任日趨復(fù)雜的交通環(huán)境。
近年來深度學(xué)習(xí)迅速發(fā)展,機(jī)動(dòng)車檢測(cè)進(jìn)入一個(gè)新的階段。其中卷積神經(jīng)網(wǎng)絡(luò)作為一種多層神經(jīng)網(wǎng)絡(luò),在圖像處理方面得到了廣泛的應(yīng)用,它在大量訓(xùn)練數(shù)據(jù)的驅(qū)動(dòng)下,通過卷積、池化、權(quán)值共享、全連接等操作,對(duì)圖像數(shù)據(jù)進(jìn)行降維的同時(shí)又能保留有效信息,極大降低了對(duì)圖像平移、場(chǎng)景變化等的敏感性[6]。目前基于深度學(xué)習(xí)的目標(biāo)檢測(cè)算法主要分為兩種,一是有基于區(qū)域的檢測(cè)算法(two-stage detector),如:Fast R-CNN[7],F(xiàn)aster R-CNN[8];二 是 基 于 回 歸 的 物 體 檢 測(cè) 算 法(one-stage detector)如:SSD[9],YOLO[10],YOLO2[11]。針對(duì)機(jī)動(dòng)車檢測(cè),文獻(xiàn)[12]提出一種基于區(qū)域卷積神經(jīng)網(wǎng)絡(luò)(R-CNN)模型改進(jìn)的機(jī)動(dòng)車檢測(cè)方法,該方法以Faster R-CNN 模型為基礎(chǔ),通過多尺度訓(xùn)練及挖掘難負(fù)樣本,相比Faster R-CNN 算法在KITTI數(shù)據(jù)集上檢測(cè)精確度提高了8%。文獻(xiàn)[13]以Faster R-CNN模型為基礎(chǔ),通過嵌入輕量級(jí)的建議網(wǎng)絡(luò)及不同特征的融合技術(shù),相比Faster R-CNN算法在DE-TRAC 數(shù)據(jù)集上檢測(cè)精確度提高了9.5%。在文獻(xiàn)[14]中,以SSD作為機(jī)動(dòng)車檢測(cè)的框架,通過分析類間的特征提高模型的檢測(cè)效果。
本文基于SSD搭建了機(jī)動(dòng)車檢測(cè)的框架。SSD算法應(yīng)用了大量的先驗(yàn)包圍框來覆蓋整個(gè)特征圖,然而很多先驗(yàn)包圍框的尺寸并不符合機(jī)動(dòng)車的尺寸,同時(shí)在機(jī)動(dòng)車數(shù)據(jù)集中,機(jī)動(dòng)車通常在一幅圖像中占比很小,導(dǎo)致在訓(xùn)練過程中出現(xiàn)大量的負(fù)樣本數(shù)據(jù),存在正負(fù)數(shù)據(jù)不均的現(xiàn)象。針對(duì)以上問題,本文在SSD 的基礎(chǔ)上,應(yīng)用聚類方法對(duì)車輛數(shù)據(jù)集進(jìn)行數(shù)據(jù)挖掘以得到更符合車輛尺寸的先驗(yàn)包圍框,利用級(jí)聯(lián)SSD在訓(xùn)練過程中挖掘正負(fù)樣本來剔除部分負(fù)樣本數(shù)據(jù),從而提升機(jī)動(dòng)車的檢測(cè)精度。
如圖1 所示,SSD 算法是基于回歸的目標(biāo)檢測(cè)算法,主要分為四部分:基礎(chǔ)網(wǎng)絡(luò)部分,附加特征提取層部分,先驗(yàn)包圍框生成部分,卷積預(yù)測(cè)部分。SSD 網(wǎng)絡(luò)以尺寸為300*300 的圖像作為輸入,首先基于基礎(chǔ)網(wǎng)絡(luò)VGG16 模型和附加特征提取層來提取圖像特征,然后從中選取了6個(gè)不同尺度的特征層作為目標(biāo)檢測(cè)的依據(jù),經(jīng)過mbox_pribox 網(wǎng)絡(luò),mbox_loc 網(wǎng)絡(luò)和mbox_conf_flattern 網(wǎng)絡(luò),最終輸出目標(biāo)的坐標(biāo)值、所屬類別及其置信度,在訓(xùn)練過程中,SSD 算法將輸出結(jié)果和真值通過loss 層計(jì)算損失,再通過反向傳播算法來更新模型的參數(shù)。
SSD 網(wǎng)絡(luò)開始部分基于VGG16 模型來提取圖像特征,為了獲取不同尺度的特征信息,SSD 網(wǎng)絡(luò)分別從其中選取了六個(gè)特征層,其中VGG16 模型中尺度分別為38*38 的conv4_3_norm 層、19*19 的fc7 層可以獲取較大尺度的特征信息,SSD 附加網(wǎng)絡(luò)中尺度分別為10*10 的conv6_2 層、5*5 的conv7_2層、3*3的conv8_2層和1*1的conv9_2層。SSD 將這六個(gè)傳遞到卷積預(yù)測(cè)層,作為目標(biāo)檢測(cè)的特征依據(jù)。
圖1 SSD的網(wǎng)絡(luò)框架圖
2.2.1 先驗(yàn)包圍框尺寸問題
在SSD 檢測(cè)算法中借鑒了Faster R-CNN 中的anchor boxes 機(jī)制,而anchor boxes 的個(gè)數(shù)和寬高比例是根據(jù)先驗(yàn)知識(shí)手動(dòng)精選的,然后通過網(wǎng)絡(luò)學(xué)習(xí),適當(dāng)調(diào)整anchor boxes 來預(yù)測(cè)目標(biāo)位置。如果在初始階段能夠選擇更具有代表性的anchor box?es,那么網(wǎng)絡(luò)將更加容易學(xué)習(xí)到準(zhǔn)確預(yù)測(cè)機(jī)動(dòng)車位置的參數(shù)。
對(duì)UA-DETRAC[15]數(shù)據(jù)集中機(jī)動(dòng)車的尺寸分布進(jìn)行分析,如圖2 所示,分布在直線上的點(diǎn)代表原始區(qū)域候選框的尺寸,分布在圖中的灰色代表數(shù)據(jù)集中機(jī)動(dòng)車的實(shí)際尺寸。通過比較機(jī)動(dòng)車的尺寸和原始區(qū)域候選框的尺寸可以發(fā)現(xiàn),原始區(qū)域候選框的尺寸為了盡可能地覆蓋不同尺度的目標(biāo),因此分布線性,而在機(jī)動(dòng)車數(shù)據(jù)集中,機(jī)動(dòng)車的實(shí)際尺寸分布分散而且可多的分布在中小尺度之間,原始區(qū)域候選框的尺寸分布在最小尺寸(30,30)和最大尺寸(264,264)之間,而機(jī)動(dòng)車實(shí)際尺寸集中分布在(0,0)和(150,300)之間,兩者的尺寸分布相差較大。因此需要選取更加符合車輛實(shí)際尺寸的原始區(qū)域候選框。
圖2 車輛類型尺寸分布圖
2.2.2 正負(fù)樣本不平衡問題
SSD 算法借鑒了Faster RCNN 的思想,在選取的六個(gè)特征層的每個(gè)單元上設(shè)置不同尺度的先驗(yàn)包圍框,假設(shè)特征圖的大小為m*m,每個(gè)單元設(shè)置k 個(gè)先驗(yàn)包圍框,對(duì)于機(jī)動(dòng)車檢測(cè)來說是二分類問題,則檢測(cè)類別為2,因此所有的單元輸出2km2個(gè)預(yù)測(cè)值,對(duì)于SSD 來說六個(gè)特征層conv4_3_norm層、fc7 層、conv6_2 層、conv7_2 層、conv8_2 層 和conv9_2 層的每個(gè)單元分別設(shè)置4、6、6、6、4、4 個(gè)尺度的先驗(yàn)包圍框,因此共輸出8732 個(gè)先驗(yàn)包圍框,然而在密集采樣的先驗(yàn)包圍框中,絕大部分內(nèi)容為背景,在經(jīng)過匹配步驟后標(biāo)記為負(fù)樣本,當(dāng)大量的負(fù)樣本參與到訓(xùn)練過程時(shí),導(dǎo)致正負(fù)樣本的數(shù)量存在巨大的差距,不利于車輛檢測(cè)模型的優(yōu)化。
針對(duì)以上問題,本文在SSD 算法的基礎(chǔ)上提出了改進(jìn)的機(jī)動(dòng)車檢測(cè)算法。改進(jìn)的SSD 方法應(yīng)用聚類方法對(duì)車輛數(shù)據(jù)集進(jìn)行數(shù)據(jù)挖掘以得到更符合機(jī)動(dòng)車尺寸的先驗(yàn)包圍框。為了優(yōu)化機(jī)動(dòng)車正負(fù)樣本不平衡的問題,本文借鑒two-stage 檢測(cè)器的在區(qū)域提取階段過濾負(fù)樣本的思想[16],引入了級(jí)聯(lián)SSD,先在第一階SSD中用二分類檢測(cè)出目標(biāo)和背景,然后用這種粗略的操作指導(dǎo)第二階SSD調(diào)整an?chor的位置和大小過濾掉部分負(fù)樣本,再進(jìn)一步檢測(cè)機(jī)動(dòng)車。改進(jìn)的SSD方法的整體結(jié)構(gòu)如圖3所示。
在機(jī)動(dòng)車數(shù)樣本中,機(jī)動(dòng)車的尺寸及長(zhǎng)寬比例往往存在一定的規(guī)律,比如機(jī)動(dòng)車的尺寸通常不會(huì)超過圖像尺寸的1/3,轎車、卡車等車型有比較固定的車身比例。為了選擇更加適用于機(jī)動(dòng)車檢測(cè)的原始區(qū)域候選框,替代手動(dòng)選擇的先驗(yàn)包圍框,本文引入統(tǒng)計(jì)學(xué)習(xí)中的k-means 方法。通過對(duì)機(jī)動(dòng)車數(shù)據(jù)集中的ground truth box 進(jìn)行聚類,找到ground truth box 的分布規(guī)律,將先驗(yàn)包圍框的數(shù)量作為聚類數(shù)量k,將先驗(yàn)包圍框的尺度作為聚類中心,通過k-means 統(tǒng)計(jì)機(jī)車數(shù)據(jù)集的車輛尺寸規(guī)律可以獲得優(yōu)于手動(dòng)選擇的先驗(yàn)包圍框。
圖3 改進(jìn)的SSD的整體結(jié)構(gòu)圖
標(biāo)準(zhǔn)的k-means 方法采用的是歐氏距離,這樣會(huì)導(dǎo)致在機(jī)車數(shù)據(jù)集中大尺寸的ground truth box會(huì)計(jì)算出更大的誤差。然而,我們真正想要的是產(chǎn)生高IOU得分的先驗(yàn)包圍框,與其大小無關(guān)。因此采用了如式(1)的距離度量。
其中,box 為ground truth box,centro 為聚類中心,areabox為ground truth box 的面積,areacentro聚類中心的面積。
表1 k-means聚類結(jié)果
聚類中心的個(gè)數(shù)越多,其與ground truth box 的IOU越高,然而先驗(yàn)包圍框的個(gè)數(shù)越多,SSD算法的計(jì)算量越大。為了兼顧SSD 算法的計(jì)算性能和IOU,本文將聚類中心的個(gè)數(shù)設(shè)置為5,表1 所示是k-means 方法聚類后的結(jié)果,表2 是SSD 原始模型長(zhǎng)寬比設(shè)置,可以看出,原始SSD 中先驗(yàn)包圍框的尺寸與機(jī)動(dòng)車的尺寸并不符合,機(jī)動(dòng)車聚類中心高寬比限制在0.7~1 之間,尺度限制在(12.48,17.21)至(87.35,124.86)之間。如圖4 所示,為了使得SSD 網(wǎng)絡(luò)的先驗(yàn)候選框與機(jī)動(dòng)車尺寸更加匹配,機(jī)動(dòng)車尺寸大部分與conv4_3層、fc7層中的先驗(yàn)包圍框的尺度較為匹配,因此將SSD 中的附加預(yù)測(cè)層conv8_2,conv9_2 刪除,然后按照聚類結(jié)果的指導(dǎo),把conv4_3 層1/2 長(zhǎng)寬比更改為0.7,0.95,基于聚類指導(dǎo)的SSD模型長(zhǎng)寬比設(shè)置如表3所示。
表2 SSD模型先驗(yàn)包圍框長(zhǎng)寬比
表3 基于聚類指導(dǎo)的SSD模型長(zhǎng)寬比設(shè)置
SSD算法在訓(xùn)練過程中,由于生成的8732個(gè)先驗(yàn)包圍框大部分會(huì)被匹配為負(fù)樣本,為了避免網(wǎng)絡(luò)由于過多負(fù)樣本參與訓(xùn)練而導(dǎo)致loss 不穩(wěn)定,SSD采用了Hard negative mining 的方法,按照先驗(yàn)包圍框的置信度進(jìn)行排序,選取置信度較高的先驗(yàn)包圍框進(jìn)行訓(xùn)練,將正負(fù)樣本控制在3∶1,然而針對(duì)機(jī)動(dòng)車檢測(cè),要取得最優(yōu)的比值,需要重復(fù)進(jìn)行大量的調(diào)參實(shí)驗(yàn),而且針對(duì)不同的機(jī)動(dòng)車數(shù)據(jù)集,最優(yōu)的比值往往不同,難以訓(xùn)練出更高精度的模型。為了更好地抑制正負(fù)樣本不平衡現(xiàn)象,本文引入了級(jí)聯(lián)SSD 的網(wǎng)絡(luò)結(jié)構(gòu),如圖(4)所示,級(jí)聯(lián)SSD 將兩個(gè)SSD 網(wǎng)絡(luò)進(jìn)行串聯(lián),在第一級(jí)SSD 中挖掘正負(fù)樣本并微調(diào)先驗(yàn)包圍框的坐標(biāo)及尺寸,同時(shí)將第一級(jí)SSD 的特征層通過特征融合作為輸入連接至第二級(jí)SSD,第二級(jí)SSD 以第一級(jí)SSD 的正負(fù)樣本的分類結(jié)果及微調(diào)后的先驗(yàn)包圍框作為指導(dǎo)知識(shí),抑制大量負(fù)樣本引入的loss,同時(shí)進(jìn)一步調(diào)整先驗(yàn)包圍框,獲取精確度更高的目標(biāo)位置。第二級(jí)SSD的損失函數(shù)是在第一級(jí)SSD 輸出結(jié)果的指導(dǎo)下進(jìn)行計(jì)算的,這樣做會(huì)優(yōu)化模型的訓(xùn)練結(jié)果,其定義如式(2)所示。
為了提高機(jī)動(dòng)車的檢測(cè)精度,級(jí)聯(lián)SSD 在兩級(jí)SSD 的連接部分引入了特征融合,特征層通過反卷積操作與上一層特征層進(jìn)行融合,增加了上下文信息,增強(qiáng)了模型特征提取能力。如圖4 所示,特征融合部分將第一級(jí)SSD 中的深層特征和淺層特征融合形成融合特征層,作為第二級(jí)SSD中級(jí)動(dòng)車檢測(cè)的特征層,深層特征通過反卷積操作增加維度,與淺層特征通過Concat操作進(jìn)行融合,得到的融合特征層一半來自深層特征,一半來自淺層特征,當(dāng)通道數(shù)不符合時(shí)可以通過1*1 的卷積核來改變通道數(shù)。
圖4 特征融合框架圖
本文在UA-DETRAC 機(jī)動(dòng)車數(shù)據(jù)集上驗(yàn)證改進(jìn)SSD 的性能,DETRAC 數(shù)據(jù)集是一個(gè)具有挑戰(zhàn)性的真實(shí)世界多目標(biāo)檢測(cè)和多目標(biāo)跟蹤基準(zhǔn)。該數(shù)據(jù)集中包括在中國(guó)北京和天津的24 個(gè)不同地點(diǎn)使用Cannon EOS 550D 相機(jī)拍攝的10 小時(shí)視頻。UA-DETRAC 數(shù)據(jù)集在不同的場(chǎng)景中捕獲,包括晴天、多云、雨天和夜晚,因此變化很大,極具挑戰(zhàn)性,平均每個(gè)視頻幀包含8.6個(gè)車輛,遮擋頻繁發(fā)生,因此對(duì)機(jī)動(dòng)車定位也帶來了極大的阻礙。
本文的實(shí)驗(yàn)環(huán)境如下:操作系統(tǒng)為64 位的ubuntu16.04,CPU:Intel Xeon E5-1650@3.20GHz×12,GPU:NVIDIA GeForce GTX 1070/PClE/SSE2,網(wǎng)絡(luò)模型基于Caffe[17]框架進(jìn)行搭建。
為了評(píng)估本文算法在機(jī)動(dòng)車檢測(cè)的有效性,本文采用準(zhǔn)確率(precision)和召回率(recall)來衡量模型的性能。圖5 為改進(jìn)SSD 與其他經(jīng)檢測(cè)方法的P-R 曲線。圖6 為改進(jìn)SSD 在UA-DETRAC 數(shù)據(jù)集下的部分檢測(cè)結(jié)果。表5 為UA-DETRAC 測(cè)試集下改進(jìn)SSD 與DPM[2]、ACF[3]、YOLO2[11]、Fast?er R-CNN[8]、SSD[9]的檢測(cè)準(zhǔn)確度對(duì)比情況,測(cè)試結(jié)果表明,在UA-DETRAC 數(shù)據(jù)集下改進(jìn)SSD 比其他方法取得了更好的檢測(cè)精度。相比于原始SSD,改進(jìn)SSD 具有更高的平均準(zhǔn)確率,整體提升了13.07%。改進(jìn)SSD 在兩個(gè)SSD 之間加入特征融合,能夠兼顧機(jī)動(dòng)車的深層特征與淺層特征,另外改進(jìn)SSD 應(yīng)用聚類方法初始化先驗(yàn)包圍框的尺寸,級(jí)聯(lián)SSD 的網(wǎng)絡(luò)結(jié)構(gòu)更好地抑制了負(fù)樣本的干擾,使得改進(jìn)SSD 在Hard、Rainy、Night 這些機(jī)動(dòng)車遮擋頻繁,環(huán)境惡劣復(fù)雜的情況下分別提升了8.46%、2.51%、10.08%。
表5 UA-DETRAC測(cè)試集檢測(cè)準(zhǔn)確度對(duì)比情況(mAP)%
圖5 UA-DETRAC測(cè)試集下不同方法的P-R曲線
圖6 UA-DETRAC測(cè)試集部分檢測(cè)結(jié)果
為測(cè)試改進(jìn)SSD 的計(jì)算性能,本文與其他方法進(jìn)行對(duì)比試驗(yàn)。結(jié)果如表6 所示,改進(jìn)SSD 比SSD增加了網(wǎng)絡(luò)結(jié)構(gòu),計(jì)算速度稍慢,但是在取得更高檢測(cè)精度的同時(shí),計(jì)算速度仍可以達(dá)到20 frame/s,明顯快于其他方法,基本可以達(dá)到機(jī)動(dòng)車檢測(cè)的實(shí)時(shí)性要求。
表6 不同檢測(cè)方法的檢測(cè)速度frame/s
針對(duì)機(jī)動(dòng)車檢測(cè)任務(wù),本文結(jié)合聚類算法和基于區(qū)域的檢測(cè)算法的思想對(duì)SSD 做出了改進(jìn),在UA-DETRAC 數(shù)據(jù)集下相比原始SSD 方法提升明顯,對(duì)復(fù)雜場(chǎng)景具有很好的魯棒性。改進(jìn)SSD方法針對(duì)機(jī)動(dòng)車檢測(cè)具有較快的速度,但在嵌入式系統(tǒng)中的檢測(cè)速度仍然很慢,下一步將精簡(jiǎn)和壓縮模型結(jié)構(gòu),增強(qiáng)其嵌入式系統(tǒng)部署能力。