劉 朔,谷玉海,饒文軍,王菊遠(yuǎn)
(北京信息科技大學(xué)現(xiàn)代測控教育部重點實驗室,北京 100192)
近年來,隨著我國經(jīng)濟的快速發(fā)展,我國人民的生活水平也在不斷提高,汽車擁有量逐年增長,與此同時,交通事故的發(fā)生也越來越頻繁。超速行駛是交通事故多發(fā)的主要原因之一[1],為了約束駕駛?cè)藛T的超速行為,目前很多國家和地區(qū)都在道路上安裝了車輛超速自動拍照設(shè)備,對拍下來的車輛進(jìn)行檢測和識別,獲取超速行駛車輛的車型、車牌號、駕駛?cè)藛T以及乘坐人員等信息,然后對相關(guān)車輛的駕駛?cè)藛T進(jìn)行處罰,使用這種警示措施,更好地約束駕駛員,減少因超速造成的交通事故。
目標(biāo)檢測技術(shù)是對車輛超速自動拍照設(shè)備所拍攝到的圖像中的車輛進(jìn)行檢測的關(guān)鍵技術(shù)[2],隨著科學(xué)技術(shù)的發(fā)展,目標(biāo)檢測在智能交通系統(tǒng)中的應(yīng)用越來越廣泛。近年來,卷積神經(jīng)網(wǎng)絡(luò)在目標(biāo)檢測領(lǐng)域取得了一系列突破性的研究成果,YOLOv3模型便是基于卷積神經(jīng)網(wǎng)絡(luò)的目標(biāo)檢測模型,YOLOv3是由Joseph Redmon等在2018年4月提出來的,YOLOv3是在YOLO和YOLOv2的基礎(chǔ)上進(jìn)行改進(jìn)的算法,是目前檢測性能較高的目標(biāo)檢測算法。YOLO算法將目標(biāo)檢測視為回歸問題進(jìn)行求解,所以具有檢測速度快并且背景檢測錯誤率較低的特點[3],但是檢測精度較低,并且容易產(chǎn)生漏檢現(xiàn)象,對于小目標(biāo)(面積小于322像素)物體的檢測效果非常差。YOLOv2在YOLO的基礎(chǔ)上,使用新的網(wǎng)絡(luò)結(jié)構(gòu)(darknet19)和技巧(batch normalization、high resolution classifier、convolutional with anchor boxes等),提高了檢測速度和檢測精度[4]。雖然YOLOv2準(zhǔn)確性有所提高,但是對小目標(biāo)檢測效果依然不好。YOLOv3算法借鑒了殘差神經(jīng)網(wǎng)絡(luò)的思想[5],引入多個殘差網(wǎng)絡(luò)模塊和使用多尺度預(yù)測的方式改善了YOLOv2對小目標(biāo)識別上的缺陷,其檢測的準(zhǔn)確率高并且時效性好,成為目標(biāo)檢測算法中集檢測速度和準(zhǔn)確率于一身的優(yōu)秀方法[6]。
本文使用YOLOv3算法對交通路口圖片中的車輛、車牌、人臉進(jìn)行目標(biāo)檢測,由于車牌和人臉在交通路口圖片中比較小,為了提高YOLOv3算法對小目標(biāo)的檢測能力,增加多個尺度檢測,提高模型對車牌、人臉等小目標(biāo)物體的檢測能力,并增加k-means算法中生成的anchors的數(shù)量,提高目標(biāo)檢測的準(zhǔn)確率。在真實交通卡口資源下使用不同的尺度以及不同的anchors進(jìn)行訓(xùn)練、測試,對實驗結(jié)果進(jìn)行分析,發(fā)現(xiàn)改進(jìn)后的YOLOv3算法模型的mAP為89.52%,幀頻為45.25 FPS,檢測性能優(yōu)于原始算法,且能夠滿足實時檢測要求。
YOLO、YOLOv2和 YOLOv3算法是 Joseph Redmon等[7]提出的通用目標(biāo)檢測模型,YOLOv3在網(wǎng)絡(luò)模型上相對于YOLO和YOLOv2有較大改進(jìn),在同等檢測速度下,YOLOv3在進(jìn)行檢測任務(wù)時的平均準(zhǔn)確率相較于YOLO和YOLOv2都有較大地提升,并且對小目標(biāo)檢測的平均準(zhǔn)確率有較好的效果。YOLOv3有如下特點:
在對圖像進(jìn)行特征檢測的過程當(dāng)中,YOLOv3使用Darknet-53網(wǎng)絡(luò)代替了YOLOv2的Darknet-19網(wǎng)絡(luò)。YOLOv3借鑒了殘差網(wǎng)絡(luò)(Residual Network)的方法,在某些層設(shè)置了快捷鏈路[8],從而提高了效率。圖1為 Darknet-53網(wǎng)絡(luò)框圖[9],Darknet-53網(wǎng)絡(luò)相對于Darknet-19網(wǎng)絡(luò),平均準(zhǔn)確率有較高地增長,處理速度略微降低,同時Darknet-53網(wǎng)絡(luò)可以實現(xiàn)較高的測試浮點運算,因此其可以更好地利用GPU,使預(yù)測效率更高[10]。
圖1 Darknet-53網(wǎng)絡(luò)框圖
YOLOv3的anchor boxes是通過聚類方法得到的。如圖2所示,YOLOV3對每個bounding box預(yù)測4個坐標(biāo)值,分別為 tx、ty、tw、th。在圖像中,一般左上角為坐標(biāo)原點,圖像的偏移為cx、cy,且對應(yīng)的邊框的長和寬分別為ph、pw,在預(yù)測的邊框中,式(1)為邊框的中心點橫坐標(biāo)的計算公式,式(2)為邊框的中心點縱坐標(biāo)的計算公式,式(3)為邊框的寬的計算公式,式(4)邊框的長的計算公式[11]。
圖2 位置預(yù)測的邊界框
1)跨尺度預(yù)測
YOLOv3采用多尺度結(jié)合進(jìn)行預(yù)測。YOLOv3借鑒 FPN(Feature Pyramid Networks)網(wǎng)絡(luò)中的融合(融合了3層)和上采樣方法,進(jìn)行多樣本、多尺寸檢測[12],在網(wǎng)絡(luò)第 82、94、106層進(jìn)行了跨尺度預(yù)測,極大地提高了YOLOv3對小目標(biāo)檢測的準(zhǔn)確率[13]。
2)分類預(yù)測
YOLOv3沒有使用YOLOv2的softmax分類方法,softmax分類只能輸出1個分類,YOLOv3采用多個簡單的邏輯回歸sigmoid輸出類別得分[14],用二元交叉熵計算類別損失,每個分類器對于目標(biāo)邊框中出現(xiàn)的物體只判斷其是否屬于當(dāng)前標(biāo)簽,即簡單的二分類,這樣便實現(xiàn)了多標(biāo)簽分類。
常見的基于回歸的目標(biāo)識別算法有YOLOv2、YOLOv3、SSD,在Microsoft COCO數(shù)據(jù)集下對它們的性能進(jìn)行測試,測試結(jié)果如表1所示[15]。
表1 基于回歸的目標(biāo)檢測算法性能對比
經(jīng)觀察對比發(fā)現(xiàn),YOLOv3在Microsoft COCO數(shù)據(jù)集下的識別平均準(zhǔn)確率和幀頻有較好表現(xiàn),并且在將尺寸歸一化為416像素時,可滿足實時處理需求。
YOLOv3算法的模型借鑒了FPN網(wǎng)絡(luò)的思想,同時利用底層特征的高分辨率和高層特征的信息,使用上采樣的方法,將不同層的特征進(jìn)行融合,在3個不同尺度的特征層上對物體進(jìn)行檢測。由于在違章車輛檢測的過程當(dāng)中,車輛距離攝像頭的遠(yuǎn)近會導(dǎo)致車輛在圖片中所占比例的大小不一樣,且在違章車輛實時檢測中還需要檢測車牌信息以及駕駛員的面部信息,這些目標(biāo)物在圖片中為小目標(biāo)物體,為了提高YOLOv3網(wǎng)絡(luò)模型對小目標(biāo)物體的檢測能力,本文對YOLOv3算法模型中的尺度檢測模塊進(jìn)行改進(jìn),將原有的3個尺度檢測擴展為4個尺度檢測,給特征圖分配準(zhǔn)確的錨框,提高檢測精度。本文提出的YOLOv3多尺度檢測模塊如圖3所示。
圖3 改進(jìn)后的YOLOv3網(wǎng)絡(luò)結(jié)構(gòu)
YOLOv3算法模型依然延用了YOLOv2算法模型中的思想,使用k-means聚類的方法對訓(xùn)練數(shù)據(jù)集中標(biāo)記的目標(biāo)框進(jìn)行聚類,獲得合適的anchors(錨框),anchors的選取會影響到目標(biāo)檢測的速度以及精度。YOLOv3算法模型在VOC和COCO數(shù)據(jù)集上進(jìn)行聚類,每個尺度的anchors的數(shù)量為3,本文根據(jù)違章車輛檢測數(shù)據(jù)集和4個尺度檢測層的特點,采用準(zhǔn)確度更高的FCM聚類算法對訓(xùn)練集的邊界框做聚類,選取合適的邊界先驗框,對違章車輛以及車牌、駕駛員面部進(jìn)行更好的預(yù)測。在使用FCM聚類算法對樣本框進(jìn)行聚類時,計算各個樣本框與聚類中心的IOU(intersection over union),然后使用(1-IOU)作為 FCM聚類算法的距離函數(shù),得到如式(4)所示的FCM聚類算法的目標(biāo)函數(shù),
式中,IOUij為第j個樣本框和第i個聚類中心的重合度;b為模糊加權(quán)指數(shù),且1<b<∞,b取值的最佳區(qū)間[16]為[1.5,2.5],本文 b值取 2;uij為第 j個樣本框?qū)儆诘趇類聚類中心的隸屬度,取值介于0~1之間,且滿足式(5)所示的約束條件。
通過最小化式(4)中的目標(biāo)函數(shù),可得到各樣本框?qū)τ诟骶垲愔行牡碾`屬度,最后根據(jù)式(6)可實現(xiàn)最終的聚類。
最終得到的 anchors為(4,7)、(8,9)、(7,17)、(8,12)、(11,23)、(22,12)、(34,12)、(19,31)、(36,18)、(35,64)、(84,40)、(94,53)、(34,188)、(105,66)、(81,125)、(63,223)、(169,116)、(130,198)、(145,240)、(190,274)。
在3個尺度檢測中的每個尺度下分別使用anchors數(shù)目為2、3、4、5的網(wǎng)絡(luò)模型進(jìn)行目標(biāo)檢測,然后在4個尺度檢測中的每個尺度下分別使用anchors數(shù)目為2、3、4、5的網(wǎng)絡(luò)模型進(jìn)行目標(biāo)檢測,對比實驗結(jié)果,以此來選擇每個尺度下合適的anchors數(shù)目。
作為對比,采用k-means維度聚類的方法對訓(xùn)練集的邊界框做聚類,選取合適的邊界先驗框,kmeans聚類方法中距離公式定義如式(7)所示[17]:
得到的 anchors為:(4,8)、(8,9)、(6,14)、(10,14)、(12,20)、(25,11)、(33,14)、(19,31)、(37,18)、(35,64)、(84,40)、(93,53)、(34,188)、(105,66)、(81,122)、(63,223)、(175,117)、(132,200)、(148,239)、(192,277)。
使用k-means維度聚類的方法所獲取的anchors,在篩選得到的最優(yōu)尺度和最優(yōu)anchors數(shù)目下進(jìn)行實驗并對比實驗結(jié)果,驗證FCM聚類算法的優(yōu)越性。
對于交通圖像目標(biāo)檢測屬于監(jiān)督學(xué)習(xí),因此制作訓(xùn)練集時需標(biāo)注圖像的位置和類別,本文利用實際交通場景原圖資源作為訓(xùn)練集、驗證集以及測試集。在實際交通場景圖片中采用labelimg開源工具標(biāo)記出所需要檢測的目標(biāo)物體,并使用不同的標(biāo)簽代表所需要檢測的不同物體,本次實驗分別檢測車輛、車牌以及人臉3種目標(biāo)物體,標(biāo)簽代號分別為“car”“plate”“face”。
圖像資源共有23 741張,圖像資源分辨率有2 048×1 380、1 616×1 046兩種。訓(xùn)練集包含20 000張真實交通卡口圖像,驗證集包含2 000張真實交通卡口圖像,測試集包含1 741張真實交通卡口圖像。
實驗環(huán)境配置如下:CPU為 Intel(R)Core(TM)i5-8500@3.00 GHz,NVIDIA GeForce GTX 1080 Ti顯卡,CUDA版本為8.0,CuDNN版本為6.0,操作系統(tǒng)為 ubuntu16.04.05(64位)。
YOLOv3網(wǎng)絡(luò)的訓(xùn)練參數(shù)配置如下:將輸入圖片的batch、subdivisions分別設(shè)置為64、16。迭代次數(shù)設(shè)置為30 000次。學(xué)習(xí)率使用分步策略,初始值設(shè)置為0.001,變化的次數(shù)為25 000,比率為0.1。
網(wǎng)絡(luò)訓(xùn)練過程中損失變化曲線如圖4所示,IOU曲線如圖5所示。
圖4 損失變化曲線
圖5 IOU曲線
在使用3個尺度的網(wǎng)絡(luò)模型進(jìn)行檢測時,分別使用每個尺度的anchors數(shù)目為2、3、4、5的網(wǎng)絡(luò)模型進(jìn)行目標(biāo)檢測,檢測的AP(準(zhǔn)確率)和IOU(重疊率)如表2所示,平均檢測每張圖片所需的時間如表4所示;在使用4個尺度的網(wǎng)絡(luò)模型進(jìn)行檢測時,分別使用每個尺度的anchors數(shù)目為2、3、4、5的網(wǎng)絡(luò)模型進(jìn)行目標(biāo)檢測,檢測的AP和IOU如表3所示,平均檢測每張圖片所需的時間如表4所示。
由表2、表3可以得出結(jié)論:在相同anchors數(shù)目的情況下,針對大目標(biāo)物體的檢測,以對車的檢測為例,使用YOLOv3原本的3個尺度進(jìn)行檢測的檢測效果,與使用改進(jìn)之后的4個尺度進(jìn)行檢測的檢測效果相差不大,但是針對于小目標(biāo)物體的檢測,以對車牌的檢測為例,使用4個尺度檢測時,檢測效果明顯要優(yōu)于使用3個尺度進(jìn)行檢測,說明YOLOv3網(wǎng)絡(luò)模型的尺度的優(yōu)化對小目標(biāo)的檢測性能有所提高。在網(wǎng)絡(luò)模型的檢測尺度相同的情況下,每個尺度下anchors數(shù)量在4個的時候準(zhǔn)確率達(dá)到最高,對比YOLOv3原本每個尺度下anchors數(shù)量為3時的檢測效果,改進(jìn)之后的檢測效果明顯更優(yōu)。由表3可知,改進(jìn)之后的網(wǎng)絡(luò)模型的檢測速度比改進(jìn)之前的網(wǎng)絡(luò)模型的速度稍慢些,但是都小于50 ms,都能夠滿足實時檢測的需求。選取 4個尺度、4個 anchors作為最終的YOLOv3優(yōu)化模型,測試的mAP為92.53%,幀頻為44.58 FPS。
表2 3個尺度檢測時使用不同anchors數(shù)目的AP與IOU %
表3 4個尺度檢測時使用不同anchors數(shù)目的A P與IOU %
表4 平均檢測每張圖片所需的時間 ms
表5 使用FCM聚類算法與k-means聚類算法的AP與IOU %
在4個尺度下使用k-means聚類算法生成的4個anchors進(jìn)行實驗,實驗結(jié)果如表5所示,由表可知,除了在檢測車輛的時候,使用FCM聚類算法的IOU稍遜于k-means聚類算法,其他指標(biāo),F(xiàn)CM聚類算法均優(yōu)于k-means聚類算法,因此,使用FCM聚類算法生成anchors是一種有效可行的方法,且具有一定的優(yōu)越性。
實際場景檢測圖如圖6所示。當(dāng)在有反光的條件下進(jìn)行檢測的時候,使用原YOLOv3網(wǎng)絡(luò)模型進(jìn)行檢測,產(chǎn)生了人臉漏檢的情況,而使用改進(jìn)之后的YOLOv3網(wǎng)絡(luò)模型對相同的圖片進(jìn)行檢測,則能夠成功檢測出人臉,如圖7所示。
圖6 實際場景檢測圖
圖7 反光條件檢測對比圖
為了提高對違章車輛檢測的準(zhǔn)確性與實時性,并對違章車輛的車牌以及駕駛員的面部等小目標(biāo)物體進(jìn)行檢測,提出一種基于YOLOv3框架的違章車輛實時檢測改進(jìn)算法。該算法以YOLOv3為基礎(chǔ)網(wǎng)絡(luò)結(jié)構(gòu),結(jié)合違章車輛檢測任務(wù)特點進(jìn)行優(yōu)化與改進(jìn),使用增加檢測尺度、優(yōu)化錨框數(shù)目等方法來改進(jìn)檢測效果。實驗結(jié)果表明,提出的方法在違章車輛檢測的實驗中比原始YOLOv3方法檢測效果更好,且能夠滿足實時性的要求,基本達(dá)到實際應(yīng)用的要求。