胡明娣 許天倚 張中茂 楊 潔
(西安郵電大學(xué)通信與信息工程學(xué)院 陜西 西安 710121)(電子信息現(xiàn)場勘驗應(yīng)用技術(shù)公安部重點實驗室 陜西 西安 710121)(陜西省無線通信與信息處理技術(shù)國際合作研究中心 陜西 西安 710121)
在偵破案件中,公安人員查取汽車作為犯罪工具的作案痕跡是調(diào)查犯罪事實的有力信息和證據(jù)。目前,車牌自動識別技術(shù)與市場需求的結(jié)合已很成熟[1-2]。然而,當(dāng)車輛被用作犯罪工具時,車牌必然會遭受污損、遮擋和套牌等方法處理而無法被識別,此時就需要對車輛本身進(jìn)行檢測。公安人員刑事偵查時獲取車輛圖像的渠道主要有兩個:一是高空架設(shè)的交通攝像頭,二是車輛行車記錄儀。犯罪嫌疑人駕駛車輛勢必會有意識避開交通攝像頭,因此可獲取來自交通攝像頭的車輛圖像資料中,絕大部分嫌疑車輛呈現(xiàn)遠(yuǎn)距離小目標(biāo)特點,并且圖像拍攝時受光照、環(huán)境及噪聲等影響,而行車記錄儀獲取的圖像存在拍攝質(zhì)量不穩(wěn)定的情況。
基于深度學(xué)習(xí)完成目標(biāo)檢測任務(wù)的算法大致可以分成一步算法和兩步算法兩大類。兩步算法主要為R-CNN[3]系列算法。具體地,R-CNN采用卷積神經(jīng)網(wǎng)絡(luò)提取圖像特征,使用選擇性搜索方法提取候選框,創(chuàng)造性地將CNN用于目標(biāo)檢測相關(guān)任務(wù)中,R-CNN系列的巔峰之作Faster RCNN[4]在PASCAL VOC2007測試集上的mAP達(dá)到73.2%,但是兩步完成目標(biāo)檢測任務(wù)的算法受到建議框提取階段計算復(fù)雜度的限制,與實時檢測間仍存在巨大鴻溝。為了平衡檢測效率與精度,一步目標(biāo)檢測算法被提了出來。此類算法可以直接回歸得到檢測物體的坐標(biāo)位置和分類得分,主要包括YOLO系列算法和SSD[5]算法。但由于SSD的網(wǎng)絡(luò)層中只有底層的conv4_3用于檢測小目標(biāo),小目標(biāo)特征信息獲取不足,因此SSD無法有效檢測小目標(biāo)。YOLOv1開創(chuàng)性地將目標(biāo)預(yù)測框的坐標(biāo)和寬高類似分類網(wǎng)絡(luò)那樣預(yù)測出來,在PASCAL VOC2007測試集上的mAP達(dá)到78.6%。但是YOLOv1因預(yù)測框個數(shù)限制,不能很好適用于密集型目標(biāo)檢測和小目標(biāo)檢測。YOLOv2將骨干網(wǎng)絡(luò)替換為Darknet-19[6]并在v1的基礎(chǔ)上引入批量歸一化[7]和預(yù)設(shè)框機制[8]等組件優(yōu)化模型,顯著地提升了檢測速度,但因骨干網(wǎng)絡(luò)限制檢測精度并不理想。YOLOv3[9]集v1、v2所長并利用更深層的Darknet-53網(wǎng)絡(luò)提取圖像特征,獲得了目前最好的檢測精度與速度的平衡。
針對刑偵領(lǐng)域進(jìn)行車輛目標(biāo)檢測這一應(yīng)用場景的特殊性,需要在實時檢測的同時確保其準(zhǔn)確性,因此本文以YOLOv3目標(biāo)檢測算法為基礎(chǔ),針對其遠(yuǎn)距離小目標(biāo)檢測效果不好的問題,提出了反卷積YOLOv3算法。該算法對Darknet-53輸出的小尺度特征圖反卷積后與大尺度特征圖進(jìn)行特征融合,提高了對小目標(biāo)的表征能力,并用add代替concat進(jìn)行特征融合增加了描述圖像每維度信息量;采用K-means++算法聚類分析自建車輛目標(biāo)數(shù)據(jù)集后重設(shè)預(yù)設(shè)框,并通過二次訓(xùn)練優(yōu)化模型關(guān)鍵參數(shù),得到更適用于刑偵領(lǐng)域的車輛目標(biāo)檢測模型。在公安部重點實驗室現(xiàn)場勘驗圖片庫中與YOLOv3、SSD、Faster RCNN算法進(jìn)行對比實驗,結(jié)果表明其精確度和召回率相較上述三種算法均有提升。
YOLOv3的骨干網(wǎng)絡(luò)是Darknet-53,從第0層一直到74層,由卷積塊(CBL)和殘差塊(res)[10]組成,卷積塊由卷積層(C)、批歸一化和激活函數(shù)(Leaky ReLU)三部分組成,其殘差塊來源于殘差神經(jīng)網(wǎng)絡(luò)(Resnet)[11]的思想。每個殘差塊由多個殘差單元組成,通過輸入與兩個CBL單元進(jìn)行殘差操作構(gòu)建了殘差單元,有效解決了網(wǎng)絡(luò)層數(shù)過深可能導(dǎo)致梯度消失的問題。從75到105層為YOLO網(wǎng)絡(luò)的特征交互層,分為三個尺度,在每個尺度內(nèi)通過卷積核的方式實現(xiàn)不同尺度間特征的交互,作用類似于全連接層但是通過卷積核(3×3和1×1)的方式實現(xiàn)了特征圖之間的局部特征交互,具體YOLOv3網(wǎng)絡(luò)結(jié)構(gòu)圖如圖1所示。
圖1 YOLOv3網(wǎng)絡(luò)結(jié)構(gòu)圖
YOLOv2采用K-means[12]聚類得到預(yù)設(shè)框的尺寸,YOLOv3延續(xù)了這種方法,為每種尺度設(shè)定3種預(yù)設(shè)框,總共聚類出9種尺寸的預(yù)設(shè)框。詳細(xì)特征圖與預(yù)設(shè)框的相關(guān)匹配如表1所示。
表1 特征圖與預(yù)設(shè)框匹配表
反卷積YOLOv3算法分為訓(xùn)練階段和測試階段。訓(xùn)練階段:用自建的具有更豐富車輛目標(biāo)標(biāo)注的數(shù)據(jù)集對預(yù)訓(xùn)練后具有初始參數(shù)的卷積神經(jīng)網(wǎng)絡(luò)進(jìn)行二次訓(xùn)練,得到車輛目標(biāo)檢測模型;測試階段:在公安部重點實驗室現(xiàn)場勘驗圖片庫中測試得到檢測結(jié)果。反卷積YOLOv3的車輛目標(biāo)檢測流程如圖2所示,整個流程包含以下四個步驟:(1) 設(shè)定好改進(jìn)的YOLOv3算法網(wǎng)絡(luò)結(jié)構(gòu);(2) 利用COCO數(shù)據(jù)集對網(wǎng)絡(luò)進(jìn)行預(yù)訓(xùn)練,得到預(yù)訓(xùn)練參數(shù);(3) 利用自建數(shù)據(jù)集,對預(yù)訓(xùn)練模型進(jìn)行二次訓(xùn)練,得到最終的車輛目標(biāo)檢測模型;(4) 采用公安部重點實驗室現(xiàn)場勘驗的圖片對模型進(jìn)行測試,得到檢測結(jié)果。
圖2 反卷積YOLOv3的車輛目標(biāo)檢測流程
本文主要針對YOLOv3面向刑偵領(lǐng)域車輛目標(biāo)檢測時對遠(yuǎn)距離小目標(biāo)檢測效果不好的問題進(jìn)行改進(jìn)。首先根據(jù)小目標(biāo)特征信息不足問題對網(wǎng)絡(luò)結(jié)構(gòu)進(jìn)行改進(jìn);然后利用K-means++聚類分析自建數(shù)據(jù)集后重設(shè)預(yù)設(shè)框,使得模型在特定數(shù)據(jù)集上泛化能力更強;最后利用自建具有更豐富車輛目標(biāo)標(biāo)注的數(shù)據(jù)集訓(xùn)練模型優(yōu)化關(guān)鍵參數(shù),最終得到更適用于刑偵領(lǐng)域的車輛目標(biāo)檢測模型。
2.2.1網(wǎng)絡(luò)結(jié)構(gòu)設(shè)計
通過對原始圖片進(jìn)入YOLOv3神經(jīng)網(wǎng)絡(luò)輸出的特征圖可視化分析,如圖3所示??梢钥闯?,小目標(biāo)檢測精度不高的原因在于高層特征圖的語義信息被削弱,也就是說52×52特征圖的語義信息不強。
圖3 原始圖片可視化分析
根據(jù)分析結(jié)果采取重復(fù)利用13×13和26×26特征圖的語義信息來提升特征圖對小目標(biāo)的表達(dá)。首先,對原網(wǎng)絡(luò)輸出得到的13×13特征圖進(jìn)行2倍的反卷積后與26×26輸出的特征圖進(jìn)行特征融合,再將融合后的特征圖進(jìn)行2倍的反卷積后與52×52的特征圖進(jìn)行特征融合以得到更多小目標(biāo)的特征語義信息,并將原網(wǎng)絡(luò)中上采樣[13](UNSampling)的方式替換為反卷積[14](Deconvolution)。上采樣是提高圖像分辨率的技術(shù),常用的方式是重采樣和插值,具體為將輸入圖片設(shè)定為一個需要的大于原圖片的尺寸,使用如雙線性插值等插值方法對空白像素點進(jìn)行插值來完成上采樣過程,如圖4所示。反卷積是一個恢復(fù)特征圖像素的過程,具體完成方式分為轉(zhuǎn)置卷積和空洞卷積。轉(zhuǎn)置卷積是將輸入圖像邊緣填充0,而空洞卷積如圖5所示,將原有的像素點,中間插入0,這樣可以還原更高像素的圖片。因此本文選擇空洞卷積的方式。可以看出,圖5中輸入特征圖尺寸為3×3,輸出特征圖為5×5,步長為2,填充為1,卷積核尺寸為3×3,可以得出反卷積過程中特征圖的輸入輸出關(guān)系如式(1)所示,其中:o為輸出,i為輸入,s為步長,k為卷積核大小,p為填充??梢钥闯觯啾扔谏喜蓸拥姆椒?,反卷積不僅僅是臨近像素的填充,還多了一步參數(shù)學(xué)習(xí)的過程,可以在增大特征圖分辨率的同時,得到更充分的小目標(biāo)特征信息。
圖4 上采樣示意圖
圖5 空洞卷積示意圖
o=s(i-1)+k-2p
(1)
除此之外,采用并行策略[15](add)代替系列融合[16](concat)來完成特征融合。add進(jìn)行特征融合后描述圖像的維度并沒有增加,但每一維度下的信息量增加了,提高了描述圖像特征的信息量,顯然這對最終目標(biāo)檢測是有益的。concat僅是通道數(shù)的合并,描述圖像本身的通道數(shù)增加了,而每一通道下的信息并沒有增加,concat每個通道對應(yīng)著相應(yīng)的卷積核。而add先將對應(yīng)的特征圖相加,再進(jìn)行下一步卷積操作,相當(dāng)于增加了一個先驗信息,對應(yīng)通道的特征圖語義類似,從而對應(yīng)的特征圖共享一個卷積核。對于兩路輸入來說,如果是通道數(shù)相同且后面帶卷積的話,add等價于concat之后對應(yīng)通道共享同一個卷積核。由于每個輸出通道的卷積核是獨立的,在只看單個通道的輸出時,假設(shè)兩路輸入的通道分別為A1、A2、…、Ac和B1、B2、…、Bc,C代表通道對應(yīng)的卷積核。那么concat的單個輸出通道如式(2)所示(*表示卷積操作);add的單個輸出通道如式(3)所示。通過計算公式可以看出add的計算量要比concat的計算量小得多。
(2)
(3)
綜上所述,反卷積YOLOv3網(wǎng)絡(luò)結(jié)構(gòu)如圖6所示。
圖6 反卷積YOLOv3網(wǎng)絡(luò)結(jié)構(gòu)圖
2.2.2K-means++聚類重設(shè)預(yù)設(shè)框
目標(biāo)檢測通過預(yù)設(shè)框去逼近標(biāo)注框來準(zhǔn)確檢測出圖像中的目標(biāo)。從YOLOv2開始引入了Faster RCNN的預(yù)設(shè)框機制,預(yù)設(shè)框是一組寬高固定的初始候選框,初始預(yù)設(shè)框設(shè)定的尺寸大小是否切合具體場景對檢測精度有較大影響。YOLOv2利用K-means聚類算法對數(shù)據(jù)集中的目標(biāo)框的寬高進(jìn)行聚類,獲得一組固定的預(yù)設(shè)框。YOLOv3原始預(yù)設(shè)框由COCO數(shù)據(jù)集聚類而得,與刑偵領(lǐng)域車輛目標(biāo)大小存在差距,部分預(yù)設(shè)框的尺寸設(shè)置并不合理。因此在這里針對車輛目標(biāo)數(shù)據(jù)集,采用K-means++聚類分析重設(shè)預(yù)設(shè)框,以提高檢測的準(zhǔn)確率。K-means++對K-means進(jìn)行改進(jìn),最大化聚類中心之間的距離,使得距離當(dāng)前聚類中心最遠(yuǎn)的點被選取的概率達(dá)到最大,從而減少初始聚類中心對最終聚類結(jié)果的影響。具體步驟如下:(1) 從所有數(shù)據(jù)列表中隨機選擇一個點作為第一個聚類中心;(2) 對于列表中的每一個點計算與最近中心的距離D(x);(3) 選擇新的聚類中心,選擇標(biāo)準(zhǔn)是D(x)越大,被選取作為聚類中心的概率越大;(4) 重復(fù)步驟(2)-步驟(3)選取k個聚類中心;(5) 后續(xù)步驟和K-means算法相同。采用平均重疊度(Avg IOU)作為目標(biāo)k值設(shè)定是否恰當(dāng)?shù)脑u判標(biāo)準(zhǔn),對自建數(shù)據(jù)集進(jìn)行聚類分析,當(dāng)平均重疊度趨于平穩(wěn)時為最佳k值。聚類的Avg IOU目標(biāo)函數(shù)為:
(4)
式中:B表示目標(biāo)中心;C表示簇的中心;nk表示第k個聚類中心中樣本的個數(shù);n表示樣本的總個數(shù);k表示簇的個數(shù);IIOU(B,C)表示簇的中心框和聚類框的交并比。
先讀取數(shù)據(jù)集中目標(biāo)的寬W、高H(歸一化)作為待分類數(shù)據(jù),根據(jù)實驗經(jīng)驗設(shè)置初始化聚類中心點個數(shù)k為1~12。如圖7所示,隨著k值的增大,目標(biāo)函數(shù)變化越來越平穩(wěn),選取平穩(wěn)處的k值為預(yù)測框的個數(shù)9,此時對應(yīng)聚類中心的寬和高分別為(12,10)、(19,16)、(26,22)、(32,29)、(42,34)、(55,43)、(80,52)、(139,78)、(291,173)。
圖7 k值與AvgIOU值關(guān)系圖
在目標(biāo)檢測網(wǎng)絡(luò)中,底層網(wǎng)絡(luò)一般是用于識別顏色、輪廓、紋理等特征的基礎(chǔ)結(jié)構(gòu),顯然大部分問題都由這些相同的基礎(chǔ)結(jié)構(gòu)組成,淺層的特征對于不同任務(wù)具有一致性,因此可以選擇凍結(jié)這些層。通過設(shè)置各層的是否訓(xùn)練參數(shù),即可控制是否凍結(jié)該層,從而節(jié)省訓(xùn)練時間。針對新的數(shù)據(jù)集的特點,訓(xùn)練較高的網(wǎng)絡(luò)層。
本文預(yù)訓(xùn)練模型為Darknet-53,預(yù)訓(xùn)練模型參數(shù)權(quán)重來自于Darknet-53在COCO數(shù)據(jù)集下的訓(xùn)練結(jié)果。然后利用自建車輛目標(biāo)數(shù)據(jù)集二次訓(xùn)練模型,在模型訓(xùn)練過程中,不斷調(diào)整網(wǎng)絡(luò)中的參數(shù),使損失函數(shù)的值達(dá)到最小,完成模型訓(xùn)練。
實驗基于Windows 10系統(tǒng),顯卡為NVIDA GeForce GTX 1070Ti,顯存8 GB NVIDIA,采用Keras框架。在訓(xùn)練過程中,采用小批量隨機梯度下降法,每36個樣本更新一次權(quán)重參數(shù)。為減少內(nèi)存占用,多次實驗后最終決定將64個樣本分割成8個大小為8的子樣本來進(jìn)行訓(xùn)練,迭代次數(shù)為12 000次。采用動量系數(shù)使訓(xùn)練過程加速收斂;為防止過擬合,設(shè)置權(quán)重衰減系數(shù),其中動量和權(quán)重衰減分別配置為0.9和0.000 5,學(xué)習(xí)率初始為10-3,最低的最終學(xué)習(xí)率為10-4。
大型公開數(shù)據(jù)集(如VOC2012、COCO等)的圖像中目標(biāo)分類較多,含有車輛目標(biāo)的圖片較少,對車輛目標(biāo)的描述不夠。因此為了訓(xùn)練出更適應(yīng)刑偵領(lǐng)域下進(jìn)行車輛目標(biāo)檢測的模型,需要制作數(shù)據(jù)集,具體步驟如下:(1) 通過互聯(lián)網(wǎng)搜集不同型號、不同外觀、不同角度拍攝的車輛圖片600幅,部分圖片示例如圖8所示;搜集自西安市長安區(qū)西安郵電大學(xué)立交橋上與西安市雁塔區(qū)長安中路立交橋上拍攝的道路圖片來模仿實際交通攝像頭角度所得的刑偵圖像并采集行車記錄儀的圖片共4 000幅,部分示例如圖9所示,由圖9(a)可以看出交通攝像頭角度拍攝的圖片遠(yuǎn)距離小目標(biāo)占比突出。(2) 利用圖像標(biāo)注工具Labelimg對4 600幅圖片中所有車輛目標(biāo)進(jìn)行標(biāo)注,具體方法是在圖像中框選出所有的車輛目標(biāo),標(biāo)注圖片部分示例如圖10所示,并得到VOC格式的xml文件。(3) 將xml文件轉(zhuǎn)換為“標(biāo)簽+X+Y+W+H”格式的txt文件。(4) 根據(jù)VOC數(shù)據(jù)集的目錄結(jié)構(gòu)放置生成的文件。(5) 訓(xùn)練中,隨機改變圖片的亮度、對比度、飽和度、色調(diào),對圖片進(jìn)行隨機剪切和鏡像處理進(jìn)行數(shù)據(jù)增強。
圖8 同一款車不同角度拍攝的圖片
(a) 模仿交通攝像頭角度采集圖片部分示例
圖10 標(biāo)注圖片部分示例
在面向刑偵領(lǐng)域進(jìn)行車輛目標(biāo)檢測時,精確度與召回率較之檢測效率更為重要,因此本文使用召回率(R)和精確度(P)[17]來衡量訓(xùn)練得到的車輛目標(biāo)檢測模型的性能。召回率與精確度的取值范圍均為[0,1],計算公式如式(5)和式(6)所示。測試數(shù)據(jù)集來自公安部重點實驗室現(xiàn)場勘驗圖片庫,包含高空交通攝像頭拍攝的圖片以及行車記錄儀拍攝得到的圖片共100幅(與訓(xùn)練集不重合)。
(5)
(6)
實驗分為如下三個部分。
1) 對比相同場景下各種算法的檢測效果。利用上述車輛目標(biāo)數(shù)據(jù)集分別對YOLOv3、SSD、Faster RCNN與本文算法進(jìn)行訓(xùn)練后測試對比檢測效果。YOLOv3與本文算法加載同樣權(quán)重Darknet-53預(yù)訓(xùn)練模型。Faster RCNN是RCNN系列算法中效果最好的算法,也是最具代表性的兩階段法;SSD同樣是具有很強代表性的一階段法。本文將目標(biāo)檢測轉(zhuǎn)換為二分類問題,即需要盡可能檢測圖片中存在的車輛,且沒有將其他目標(biāo)檢測成車輛。因此從測試集中分五組,每組隨機選取10幅圖片,對圖片中車輛目標(biāo)個數(shù)進(jìn)行統(tǒng)計以便后續(xù)計算精確度與召回率。四種算法的召回率、精確度分別如表2和表3所示,四種算法的檢測效果對比圖如圖11所示。
表2 不同算法檢測精確度對比 %
表3 不同算法檢測召回率對比 %
YOLOv3利用更深層的Darknet網(wǎng)絡(luò)提取圖像特征,并參考SSD的優(yōu)點而得出,在車輛目標(biāo)檢測時相比SSD、Faster RCNN具有更高的精確度和召回率。本文在YOLOv3基礎(chǔ)上重復(fù)利用13×13和26×26特征圖的語義信息來提升特征圖對小目標(biāo)的表達(dá)并對關(guān)鍵特征融合模塊進(jìn)行替換,加強參數(shù)學(xué)習(xí),進(jìn)一步提高了精確度和召回率。從表2和表3可以看出,本文算法相比YOLOv3精確度提高了約4百分點,召回率提高了約5百分點。從四種算法的檢測效果圖可以看出SSD對小目標(biāo)檢測效果不佳,F(xiàn)aster RCNN檢測效果稍遜于YOLOv3,圖11(b)黑色框為本文算法較YOLOv3多檢測出的兩個車輛目標(biāo)。
(a) YOLOv3檢測效果圖 (b) 本文算法檢測效果圖
2) 采用不同改進(jìn)點訓(xùn)練網(wǎng)絡(luò)時的檢測效果。為了進(jìn)一步驗證本文算法中不同改進(jìn)點的有效性,本文分別使用不同的改進(jìn)點對網(wǎng)絡(luò)進(jìn)行訓(xùn)練后測試。采用的改進(jìn)點及訓(xùn)練之后的檢測結(jié)果如表4所示。
表4 采用不同改進(jìn)點檢測效果
續(xù)表4
通過對表4中7種不同改進(jìn)點的對比,發(fā)現(xiàn)重復(fù)利用13×13和26×26特征圖的語義信息來提升特征圖對小目標(biāo)的表達(dá)可以對精確度有約3百分點的提高,召回率有約4百分點的提高。通過對改進(jìn)點1、6進(jìn)行對比,可以發(fā)現(xiàn)通過重設(shè)預(yù)設(shè)框使模型對車輛目標(biāo)數(shù)據(jù)集泛化能力更強和對特征融合模塊的替換提高參數(shù)學(xué)習(xí)量對精確度與召回率均有約1百分點的提高。通過采用不同改進(jìn)點的實驗證明本文算法可以有效提高車輛目標(biāo)檢測的精確度和召回率。
3) 不同實際條件下本文算法的檢測效果。從包含100幅圖片的測試集中挑選8幅不同實際條件(光線、車流量)下的圖片來測試本文算法所得車輛目標(biāo)檢測模型的性能。
(1) 交通攝像頭角度拍攝的實際不同條件圖片檢測效果圖如圖12所示。
(a) 車流量大、光線條件良好 (b) 車流量大、光線昏暗
(2) 行車記錄儀拍攝的實際不同條件圖片檢測效果圖如圖13所示。
(a) 車流量大、光線條件良好 (b) 車流量大、光線昏暗
可以看出,本文在面向刑偵領(lǐng)域不同實際條件下進(jìn)行車輛目標(biāo)檢測均有良好的效果,精確度和召回率均滿足實際要求。綜合考慮,本文算法是一個有效的面向刑偵領(lǐng)域的車輛目標(biāo)檢測算法。
本文通過反卷積的方式重復(fù)利用13×13和26×26特征圖的語義信息并替換關(guān)鍵特征融合模塊提高了網(wǎng)絡(luò)對小目標(biāo)的表征能力,對車輛目標(biāo)數(shù)據(jù)集聚類分析后重設(shè)預(yù)設(shè)框訓(xùn)練模型,使模型在面向刑偵領(lǐng)域進(jìn)行車輛目標(biāo)檢測時具有更強的泛化性。實驗證明,該算法的精確度、召回率較YOLOv3均有提升。通過測試實驗表明訓(xùn)練出的模型對不同車流量、不同光線下的實際刑偵領(lǐng)域場景均具有很好的魯棒性,但通過大量的測試實驗發(fā)現(xiàn),車輛密集、光線條件等因素仍對檢測效果有很大影響。接下來需在訓(xùn)練集著重加入車流量大、光線條件不足的圖片以進(jìn)一步提高模型的準(zhǔn)確率,降低其他因素對檢測效果的影響。