李 妍,楊雨霖,朱 宇,王潤民,周文帥
(1.長安大學(xué) 信息工程學(xué)院,陜西 西安 710000;2.長安大學(xué) 電子與控制工程學(xué)院,陜西 西安 710000;3. 河南中天高新智能科技股份有限公司,河南 鄭州 450000)
隨著汽車工業(yè)、人工智能、深度學(xué)習(xí)的迅速發(fā)展,智能交通系統(tǒng)的發(fā)展步伐也隨之加快。車輛的識別和分類是智能交通系統(tǒng)中的核心部分,其任務(wù)是確定目標車的分類屬性[1-2]。起初車輛的分類大部分是利用硬件設(shè)備加人工篩查的方法進行的,硬件設(shè)備包括地磁傳感器、激光雷達以及無線通信設(shè)備,先利用這些設(shè)備進行車輛的檢測,隨后工作人員對篩查硬件設(shè)備檢測到的車輛信息進行人為判斷、分類以實現(xiàn)車輛的分類,這種分類方法設(shè)備成本較高,且人工進行圖片、視頻篩查會耗費大量人力、時間,還容易發(fā)生誤判、誤分類,準確率較低,不具有普適性。隨著圖像處理、機器學(xué)習(xí)[3]在交通方面的廣泛應(yīng)用,這種方法逐漸被淘汰。Saripan等人[4]提出了一種基于決策樹的車輛分類方法,該方法中用樹的結(jié)構(gòu)、樹的各個節(jié)點分別代表不同車輛外形上不同特征點的屬性,不同類別的車輛分別在樹的不同分支上體現(xiàn),但是這種方法分類準確性較低。Purohit等人[5]結(jié)合SVM和HOG兩種經(jīng)典的機器學(xué)習(xí)算法進行車輛分類。實驗結(jié)果表明,該方法在車輛分類的準確率上相較于利用決策樹的方法有明顯的提高。該方法利用方向梯度直方圖對不同車輛的外觀進行特征提取,根據(jù)提取后的特征利用支持向量機完成對車輛的分類,這種方法在復(fù)雜場景下效果并不是很好,抗噪聲能力較差,結(jié)果具有較大偏差。Shravani等人[6]基于貝葉斯理論構(gòu)建動態(tài)貝葉斯網(wǎng)絡(luò)進行車輛分類,在實驗過程中發(fā)現(xiàn)只有在大規(guī)模的數(shù)據(jù)集上進行實驗才會使結(jié)果更好,這種方法取得了較好的效果,但是分類器培訓(xùn)時間過長。近年來,隨著深度學(xué)習(xí)技術(shù)的發(fā)展,基于深度學(xué)習(xí)的方法在車輛分類問題上具有顯著優(yōu)勢?,F(xiàn)已對全國的ETC門架進行了改造,并且進行了全國聯(lián)網(wǎng)。同時,門架上的高速公路視頻監(jiān)控系統(tǒng)的逐漸升級,基于圖片和視頻的車輛檢測[7]、分類[8]的技術(shù)迅速發(fā)展。一種魯棒性好、檢測速度快、車型分類準確率高、適用于高速公路場景的車輛分類方法在高速公路稽查系統(tǒng)中能夠發(fā)揮重要作用。
基于深度學(xué)習(xí)的目標檢測方法可以分為以下幾類:(1)基于常規(guī)圖像分類的網(wǎng)絡(luò),例如AlexNet[9]、VGG[10]、GoogleNet[11]以及ResNet[12]等;(2)基于區(qū)域識別問題的目標塊檢測與分類的網(wǎng)絡(luò),例如R-CNN[13]、Fast R-CNN[14]等;(3)基于回歸問題的目標檢測及分類,例如YOLO[15]系列、SSD[16]系列。采用R-CNN、Fast R-CNN進行車輛分類任務(wù)時,由于它們是兩步(Two-Stage)的分類網(wǎng)絡(luò),即先檢測后分類,網(wǎng)絡(luò)結(jié)構(gòu)較為復(fù)雜導(dǎo)致需要機器進行大量計算,耗費時間較多,不能滿足在ETC門架下進行實時檢測的要求;對于SSD網(wǎng)絡(luò)來說,由于SSD是基于VGG 16作為主干網(wǎng)絡(luò)的,雖然解決了實時性的問題,但是融合各部分卷積特征時,并沒有考慮各個卷積層之間的關(guān)系,所以SSD網(wǎng)絡(luò)的檢測精確率不高,存在誤檢、漏檢的問題;在YOLO的各個版本之中,YOLOv3[17]是一個相當經(jīng)典的網(wǎng)絡(luò),它在進行檢測和分類時準確度和檢測速度在同類網(wǎng)絡(luò)中屬于佼佼者,但也存在著目標漏檢、誤檢、重復(fù)檢測的現(xiàn)象。
本文針對上述問題,對YOLOv3的網(wǎng)絡(luò)進行改進,提出一種基于改進YOLOv3的高速公路稽查系統(tǒng)車輛分類的方法,解決了YOLOv3在車輛檢測和分類時存在的問題。改進的算法可以在高速公路場景下實時、有效、準確地完成對車輛的分類。
隨著我國公路運輸?shù)母咚侔l(fā)展,高速公路的內(nèi)外環(huán)境發(fā)生了變化,針對高速公路上車輛的車型多樣化問題、高速公路運輸情況變化問題、出現(xiàn)多種新型收費技術(shù)問題,國家對現(xiàn)行的車型分類標準進行了修訂。為滿足高速公路收費的新發(fā)展要求,國務(wù)院辦公廳印發(fā)了《深化收費公路制度改革取消高速公路省界收費站實施方案》[17],提出了調(diào)整貨車通行費計費方式、統(tǒng)一按車(軸)型收費、修訂《收費公路車輛通行費車型分類》[18]標準等任務(wù)要求。《收費公路車輛通行費車型分類》(JT/T 489-2019)是2019年9月1日實施的一項中華人民共和國交通運輸行業(yè)標準,歸口于全國交通工程設(shè)施(公路)標準化技術(shù)委員會。表1為各類車輛的分類標準。
表1 收費公路車輛通行費客車車型分類
做好高速公路車輛類型分類,是推進高速公路取消省界收費站、實現(xiàn)不停車快捷收費的有效途徑,將進一步提高綜合交通運輸網(wǎng)絡(luò)運行效率、降低物流成本。在高速公路的實際場景下,采用ETC門架上的攝像頭對車輛信息進行采集有局限性,只能采集車頭和車尾的圖片信息,對車輛側(cè)身的信息采集不到。本文設(shè)計了一種改進的YOLOv3方法,利用在ETC門架上提取到的有限的車輛圖片信息實現(xiàn)對車輛類別的大體劃分。
YOLOv3首先將高速公路門架上拍攝的圖像尺寸縮放為416×416,接著將這些圖像送入YOLOv3中Darknet-53主干網(wǎng)絡(luò)進行車輛外觀特征的提取。在Darknet-53主干網(wǎng)絡(luò)中,每一個卷積塊都會基于輸入車輛圖片提取到的特征信息生成不同尺寸的特征圖。得到的特征圖會在圖像上劃分s×s個網(wǎng)格,若某個被檢測車輛的中心落在劃分的網(wǎng)格中,則該網(wǎng)格就負責(zé)對當前車輛進行預(yù)測,最終再通過Softmax分類器對車輛進行分類,并輸出結(jié)果。圖1為YOLOv3的預(yù)測流程。
圖1 YOLOv3預(yù)測流程
圖2是改進YOLOv3網(wǎng)絡(luò)模型結(jié)構(gòu),主要由卷積塊、殘差塊和殘差組件構(gòu)成。
圖2 改進YOLOv3網(wǎng)絡(luò)模型結(jié)構(gòu)
2.1.1 主干特征提取網(wǎng)絡(luò)
Darknet-53網(wǎng)絡(luò)中一共有2+(1×2)+1+(2×2)+1+(8×2)+1+(8×2)+1+(4×2)+1=53個 卷 積 層。 與YOLOv2[19]不同的是,YOLOv2的主干特征提取網(wǎng)絡(luò)是Darknet-19,而YOLOv3的主干特征提取網(wǎng)絡(luò)是Darknet-53。Darknet-53網(wǎng)絡(luò)的Top-1(第一個標簽預(yù)測的正確率)的值達到了77.2,相較于Darknet-19網(wǎng)絡(luò)Top-1的值為74.1,有較為明顯的提升。同時YOLOv3的主干提取網(wǎng)絡(luò)中沒有最大池化層Maxpool,取而代之的是殘差結(jié)構(gòu)Residual;在Darknet-53網(wǎng)絡(luò)中所有的下采樣基本上都是通過卷積來實現(xiàn)的,所以提升了檢測效果。其結(jié)構(gòu)如圖2中的Darknet-53主干網(wǎng)絡(luò)所示。Darknet53結(jié)構(gòu)相較于Resnet較為簡單,共進行了53次卷積操作和5次下采樣操作。
由圖2中的卷積塊示意圖可以看出,網(wǎng)絡(luò)中卷積塊由卷積、批量歸一化BN(Batch Normalization)和Leaky ReLU激活函數(shù)三部分構(gòu)成。在本文中,為了提高車輛分類的精度對激活函數(shù)進行了改進,由原來的Leaky ReLU激活函數(shù)換成了Mish激活函數(shù)。如圖2所示,殘差塊和殘差組件構(gòu)成了殘差結(jié)構(gòu),在殘差結(jié)構(gòu)中主分支為一個1×1的卷積層,再通過一個3×3的卷積層,最后將輸入進殘差結(jié)構(gòu)“捷徑”分支上的輸出和主分支上的輸出相加得到最終的輸出。
2.1.2 預(yù)測特征層的輸出
在YOLOv3中第一個預(yù)測特征層是從Darknet53中去平均池化層和全連接層之后的一個結(jié)構(gòu),此時輸出的預(yù)測圖大小是13×13,接著會通過一個Convolutional Set,如圖2所示,在Convolutional Set中有5個卷積層堆疊在一起。通過Convolutional Set的一條分支再通過一個3×3的卷積就得到了第一張預(yù)測特征圖(大小為13×13),最后使用一個距離和大小為1×1的預(yù)測器在預(yù)測圖上進行預(yù)測,這就是預(yù)測特征層一;另外一個分支通過一個1×1的卷積,再通過一個上采樣層,通過上采樣之后圖的高和寬會擴大為原來的兩倍(由13×13變成了26×26),擴大之后它會與Darknet53當中通過8個殘差結(jié)構(gòu)輸出為26×26大小的圖進行深度方向的拼接,將拼接之后得到的特征矩陣再經(jīng)過Convolutional Set進行處理,同樣一個分支通往預(yù)測特征層二;另外一個分支繼續(xù)通過一個1×1的卷積再進行上采樣(由26×26變?yōu)?2×52),接著再和Darknet53當中通過8個殘差結(jié)構(gòu)輸出為52×52大小的圖進行深度方向的拼接,將拼接之后得到的特征矩陣再經(jīng)過Convolutional Set進行處理,同樣一個分支通往預(yù)測特征層三。預(yù)測特征圖一為13×13,所以在預(yù)測特征層一上預(yù)測相對較大的目標。預(yù)測特征圖二的大小為26×26,所以在這個特征圖上預(yù)測尺度中等的目標。最后一個預(yù)測特征層的細膩度最高,它的大小是52×52,所以在預(yù)測特征圖三上預(yù)測小目標。
2.1.3 激活函數(shù)的改進
深度學(xué)習(xí)能夠取得如今的成績不僅因為其包含了優(yōu)秀的卷積結(jié)構(gòu),還得益于激活函數(shù)的發(fā)展。因此一個性能優(yōu)良的激活函數(shù)在網(wǎng)絡(luò)中尤其重要。傳統(tǒng)的激活函數(shù)ReLU在深度學(xué)習(xí)中經(jīng)常被使用,ReLU可以對先進的深度網(wǎng)絡(luò)進行完全監(jiān)督的訓(xùn)練。當ReLU函數(shù)的輸入為正時,梯度能夠正常流動;輸入為負時,稀疏度增加。稀疏激活只激活網(wǎng)絡(luò)中的部分神經(jīng)元,ReLU的稀疏激活只激活正值,不激活網(wǎng)絡(luò)中的負值神經(jīng)元,阻止了負值的傳播,會導(dǎo)致網(wǎng)絡(luò)無法從負值中學(xué)習(xí)參數(shù)。如圖3(a)所示,激活函數(shù)ReLU對于小于0的值,神經(jīng)元的梯度永遠都會是0,會導(dǎo)致神經(jīng)元失活,權(quán)重不再更新,阻礙網(wǎng)絡(luò)學(xué)習(xí)。在實際操作中,若learning rate很大,很可能網(wǎng)絡(luò)中有較多的神經(jīng)元失活,即使是較小的learning rate,這種情況也很有可能發(fā)生。為了解決ReLU函數(shù)這個缺點,在負半軸引入一個泄露(Leaky)值,使得其不完全屏蔽掉負值,如圖3(b)所示,所以稱為Leaky ReLU函數(shù)。Leaky ReLU的數(shù)學(xué)表達式為:
其中Leak是一個很小的常數(shù),這樣保留了一些函數(shù)在負半軸的值,使得負半軸的信息不會全部丟失。
在YOLOv3中原本使用的激活函數(shù)為Leaky ReLU。在本文中,為了再次提高車輛分類的精度對激活函數(shù)進行了改進,由原來的Leaky ReLU激活函數(shù)換成了YOLOv4中的Mish激活函數(shù)。Mish是光滑的非單調(diào)激活函數(shù),可定義為:
2019年,Misra通過搜索技術(shù)構(gòu)造了Mish函數(shù)[20]。Mish函數(shù)圖像沒有上界,無飽和值,因此網(wǎng)絡(luò)中的正參數(shù)可以達到任意大。與Leaky類似的是,Mish也保留了部分負半軸的值,保證對網(wǎng)絡(luò)中負參數(shù)的輕微允許,使得網(wǎng)絡(luò)獲得更好的梯度。實驗證明,平滑的激活函數(shù)可以使網(wǎng)絡(luò)更有效地學(xué)習(xí)數(shù)據(jù)的分布,得到更高的準確性和泛化性[19]。因此Mish激活函數(shù)相較于Leaky ReLU激活函數(shù)更適合神經(jīng)網(wǎng)絡(luò)。Mish函數(shù)具有軟飽和的特點,該特點可以保證網(wǎng)絡(luò)在訓(xùn)練過程中不會由于零梯度的產(chǎn)生而使訓(xùn)練急劇減慢的現(xiàn)象發(fā)生。軟飽和的特點還具有較強的正則化效果,從而減少過擬合情況的發(fā)生。如圖3(c)所示,像Leaky ReLU一樣,理論上對負值也有一些取值,這樣能有更好的梯度流,而不是像ReLU中那樣零邊界。
圖3 激活函數(shù)圖像
在YOLOv3中目標邊界框預(yù)測采用的是和YOLOv2一樣的機制,在YOLOv3網(wǎng)絡(luò)中所預(yù)測的有關(guān)目標中心點的回歸參數(shù)并不是相對于Anchor的,而是相對于當前的Gride Cell (網(wǎng)格)的左上角的點。當一個1×1的卷積層滑動到目標中心點所在的Cell當中,它會針對每一個Anchor模板預(yù)測四個回歸參數(shù)(tx,ty,tw,th)、一個目標參數(shù)和對應(yīng)每一個類別的Score(分數(shù))。如圖4所示,圖中虛線所構(gòu)成的矩形框就是Anchor,圖中黑色粗實線所構(gòu)成的矩形框是網(wǎng)絡(luò)最終預(yù)測目標的位置以及大小。
圖4 目標邊界框預(yù)測
最終預(yù)測目標的位置由以下公式計算得出:
其中:pw和ph分別為Anchor的寬度和高度;cx和cy分別為當前的Gride Cell距離左上角的偏移量;Sigmoid(x)是一個常見的激活函數(shù)。得到的bx和by為最終預(yù)測目標中心點的(x,y)坐標,bw和bh分別為最終預(yù)測網(wǎng)絡(luò)的寬度和高度。
本實驗利用京港澳高速公路路段上收集的來自ETC門架上的圖片信息進行數(shù)據(jù)集的創(chuàng)建,同時根據(jù)《收費公路車輛通行費車型分類》文件對數(shù)據(jù)集上的車輛圖片進行車輛類別的劃分:9座以及9座以下轎車為type I,9座以上車輛、貨車及專項作業(yè)車為type II。為了得到可靠的訓(xùn)練模型,數(shù)據(jù)集通過ETC門架上的攝像頭收集到了車輛圖片56 553張,去除雨雪天氣和分辨率低的圖片,可供訓(xùn)練的車輛訓(xùn)練集圖片共有2 300張,其中驗證集占數(shù)據(jù)集的9%。數(shù)據(jù)集中包括各種主要的場景(如黑夜、白天)、車輛品牌(奧迪、奔馳、大眾、比亞迪、寶馬、尼桑等)、車型條件(普通客車、大面包車、旅游大巴、大型卡車、大型拉土車、專項作業(yè)車等)、車身的遠近視角、車身的平視視角和俯視視角等。圖5所示為數(shù)據(jù)集中部分車輛圖片。
圖5 數(shù)據(jù)集中部分車輛圖片
本實驗利用Labelimg軟件,對數(shù)據(jù)集中車輛圖片內(nèi)車輛的實際位置進行了人為標注(如圖6所示),類別有普通私家車、越野車、小型面包車、大型客車、大型貨車等,標注后的文件轉(zhuǎn)換為“.txt”文本文檔的格式保存在訓(xùn)練集中,以供訓(xùn)練使用。
圖6 Labelimg軟件標注
本實驗環(huán)境基于Windows,用Python編寫,使用Tensor flow1.14深度學(xué)習(xí)框架,硬件CPU處理器為Intel(R)Core(TM) i7-7700K CPU @4.20 GHz,GPU 為 NVIDIA GTX1080ti。
在訓(xùn)練神經(jīng)網(wǎng)絡(luò)模型之前,需要對訓(xùn)練中的各個參數(shù)進行設(shè)定,超參數(shù)的值會對訓(xùn)練的結(jié)果產(chǎn)生很大的影響。模型訓(xùn)練參數(shù)設(shè)置見表2所列。開始神經(jīng)網(wǎng)絡(luò)訓(xùn)練時,開啟學(xué)習(xí)率余弦下降、GPU加速和標簽平滑的操作,使得訓(xùn)練之后得到的模型是最優(yōu)模型。在模型訓(xùn)練結(jié)束后,對測試集中的207張圖片進行測試,并計算真實值。最后對其各項指標進行計算。
表2 模型訓(xùn)練參數(shù)設(shè)置
在對車輛分類訓(xùn)練后所得到的模型進行評估時,衡量模型的指標一般采用精確率P(Precision)和召回率R(Recall)。精確率是模型預(yù)測的所有目標中預(yù)測正確的比例。召回率是所有真實目標中模型預(yù)測正確的目標比例。公式如下:
式中:TP(True Positives)表示正樣本被正確識別為正樣本的數(shù)量;FP(False Positives)表示負樣本被錯誤識別為正樣本的數(shù)量;FN(False Negatives)表示正樣本被錯誤識別為負樣本的數(shù)量。
由圖7中的精確率-召回率曲線可知,曲線位置越靠近右上方,算法的精確度就越高;且在算法改進后不同類型車輛的精確率均高于原始算法。
圖7 改進前后各類型車輛的精確率-召回率曲線
F1的值由公式(11)計算可得,其中P為精確率,R為召回率。該分值越高表明該算法越優(yōu)秀。表3為改進前后YOLOv3檢測模型的各類指標統(tǒng)計。
表3 評價指標統(tǒng)計
本文采用 mAP(mean Average Precision) 指標對訓(xùn)練結(jié)果進行評估,其中AP是以P和R為兩個軸作圖所圍成的面積,m表示取平均值,即各類AP的均值。如圖8所示為算法改進前后的mAP。
圖8 改進前后的mAP值
圖8(a)表示改進前的實驗訓(xùn)練結(jié)果的mAP,圖8(b)表示采用本文所述方法優(yōu)化后的實驗訓(xùn)練結(jié)果的mAP??芍黝愜囕v都有較好的精度,整體驗證集的mAP值由89.65%提高到了90.92%,能夠滿足實際應(yīng)用需要。
本文基于目標檢測及分類中的YOLOv3模型,求出適合本文車輛數(shù)據(jù)集的Anchor Boxes 坐標;并采用Mish激活函數(shù)代替YOLOv3中原來的激活函數(shù)Leaky ReLU。在自行收集并標注好的數(shù)據(jù)集上進行模型的訓(xùn)練與測試。實驗結(jié)果表明,改良后的YOLOv3模型的性能得到了提升,車輛檢測準確性較高,能夠滿足高速公路通行車輛分類的需要。