馬巧梅,王明俊,梁昊然
1.中北大學(xué) 軟件學(xué)院,太原 030051
2.山西省軍民融合軟件技術(shù)工程研究中心,太原 030051
隨著交通基礎(chǔ)設(shè)施建設(shè)的不斷完善,車輛不斷的增多,車輛管理壓力也逐漸增大,而車牌定位檢測成為了智能交通很重要的一部分。由于現(xiàn)有的車牌定位大多都是在特定場景下,而在復(fù)雜場景仍然存在諸多局限。國內(nèi)外車牌檢測的方法主要有兩種:一種是基于先驗(yàn)信息的傳統(tǒng)車牌檢測方法;另一種是基于深度學(xué)習(xí)的車牌檢測方法。傳統(tǒng)的車牌檢測主要利用車牌的特征、紋理和顏色來進(jìn)行定位[1-2],其主要問題是沒有針對性、時間復(fù)雜度高、窗口冗余和魯棒性較差?;谏疃葘W(xué)習(xí)的方法因無需特征工程,適應(yīng)性強(qiáng)等特點(diǎn)得到了較為廣泛的應(yīng)用域。目前通過深度學(xué)習(xí)來解決目標(biāo)檢測的方法主要有兩種,分別是以RCNN為代表的兩階段(two-stage)模型,比如RCNN[3]、SPP-NET[4]、Fast R-CNN[5]、Faster R-CNN[6]等,另一種是以YOLO[7-9]系列和SSD[10]為代表的單階段(one-stage)模型檢測算法,其僅僅使用一個CNN網(wǎng)絡(luò)直接預(yù)測不同目標(biāo)的類別與位置。
當(dāng)前國內(nèi)外針對目標(biāo)檢測算法最新的研究來看,王兵等[11]利用改進(jìn)后的YOLOv3 算法在檢測安全帽方面得到優(yōu)化;李東潔等[12]在動態(tài)手勢跟蹤領(lǐng)域有了新的進(jìn)展;孔方方等[13]利用YOLOv3在全景交通目標(biāo)檢測有了新的提升。在車牌定位檢測方面,Wang[14]利用LPR-Net對車牌進(jìn)行定位檢測,實(shí)現(xiàn)了復(fù)雜環(huán)境下的高精度檢測;Jamtsho等[15]提出基于YOLO算法的車牌實(shí)時定位,提高了檢測精度;趙偉等[16]提出復(fù)雜環(huán)境下車牌定位的檢測方法,對有遮擋及干擾物的車牌可以實(shí)現(xiàn)高效、高精確度的定位識別;艾曼[17]利用Faster R-CNN 來進(jìn)行車牌定位檢測,通過替換主干網(wǎng)絡(luò)來提高車牌定位精度。
本文將YOLOv3 算法應(yīng)用于車牌定位檢測的目標(biāo)領(lǐng)域,為了提高算法的適應(yīng)性和精確度,對YOLOv3 算法進(jìn)行改進(jìn),從而提高了檢測的精度,加快了收斂速度和優(yōu)化了參數(shù)的計算問題。
YOLOv3 算法是Joseph Redmon 等在2018 年新提出的目標(biāo)檢測算法,它針對YOLOv2 中由于下采樣造成特征丟失的問題,仿照特征金字塔網(wǎng)絡(luò)FPN[18]設(shè)計了位置與類別預(yù)測。通過在網(wǎng)絡(luò)中3 個不同位置的3 種不同大小的特征圖來完成檢測,并且在每個卷積層后增加批量歸一化操作(Batch Normalization,BN)[19]并使用激活函數(shù)Leaky Relu[20]來避免梯度消失及過擬合。YOLOv3的網(wǎng)絡(luò)結(jié)構(gòu),如圖1所示。
首先,將輸入圖片縮放到416×416,通過特征提取網(wǎng)絡(luò)進(jìn)行了5次下采樣,提取特征得到大小一定的特征圖,比如13×13,之后將輸入圖像分成13×13 個網(wǎng)格(grid cells),接著如果GT 中某個目標(biāo)的中心坐標(biāo)落在哪個grid cell 中,那么就由該grid cell 來預(yù)測該目標(biāo)。每個grid cell都會預(yù)測3個邊界框。預(yù)測得到的輸出特征圖共有3 個維度。每個預(yù)測框都對應(yīng)邊界框位置信息:中心點(diǎn)坐標(biāo)(x,y) 框的寬高尺寸(w,h) 和置信度(confidence)。網(wǎng)格預(yù)測的類別置信度得分為:
其中,如有中心目標(biāo)落入該網(wǎng)絡(luò),則Pr(object)=1 否則Pr(object)=0。Pr(classi|object)為網(wǎng)絡(luò)預(yù)測第i類目標(biāo)的置信概率。IOUtruthpred為預(yù)測邊界框與真實(shí)框的交并比(Intersection Over Union,IOU)[21]。之后通過對confidence 這一項(xiàng)設(shè)定閾值,過濾掉低分的預(yù)測框,然后對剩下的預(yù)測框執(zhí)行非極大抑值(Non Maximum Suppression,NMS)[22]處理,得到網(wǎng)絡(luò)的最終預(yù)測。
YOLOv3 算法在多個尺度的融合特征圖上分別獨(dú)立做檢測,最終對于小目標(biāo)的檢測效果提升明顯。在VOC、COCO 等數(shù)據(jù)集上效果取得了很大的進(jìn)展,但在本文車牌檢測應(yīng)用中仍具備優(yōu)化的潛力,需要對YOLOv3的算法進(jìn)行改進(jìn)來適應(yīng)特定的檢測。
傳統(tǒng)的YOLOv3 網(wǎng)絡(luò)每種尺度的特征圖分別有3個錨框。YOLOv3 也采用K-means 算法,為每種下采樣尺度設(shè)定3 種先驗(yàn)框,總共聚類出9 種尺寸的先驗(yàn)框。但是尺度越大的特征圖使用越小的錨框,以得到更多的邊緣信息,如圖2 所示,對于本文的車牌數(shù)據(jù)來說,原始的錨框參數(shù)由公共數(shù)據(jù)集聚類生成。公共數(shù)據(jù)集類別豐富,實(shí)際的尺寸太大,對應(yīng)的錨框參數(shù)值也很大且具有普遍性,不適用于本文的車牌數(shù)據(jù)集,所以需要重新進(jìn)行維度聚類,從而對車牌數(shù)據(jù)集進(jìn)行更好的預(yù)測。
圖1 YOLOv3網(wǎng)絡(luò)結(jié)構(gòu)
圖2 目標(biāo)檢測框尺寸
由于聚類的目的是anchor boxes 和臨近的ground truth有更大的IOU值,錨框尺寸的大小會影響到檢測準(zhǔn)確率的高低,而IOU距離表示預(yù)測框與實(shí)際邊界框的交并比,因此本文使用IOU 距離公式以代替歐氏距離公式,度量的函數(shù)公式如下:
其中,box表示實(shí)際邊界框信息,centroid表示聚類中心,IOU表示預(yù)測框與實(shí)際邊界框的交并比。IOU越大,距離越小。本文針對K-means 聚類方法在初始聚類點(diǎn)的選擇上存在較大的隨機(jī)性和敏感性問題,使用了隨機(jī)性更小的K-means++[23]算法進(jìn)行聚類計算。K-means++算法的主要思想是讓初始的聚類中心之間的相互距離要盡可能的遠(yuǎn)。首先選取數(shù)據(jù)的任意一個樣本作為第一個聚類中心c1;然后計算每個樣本與當(dāng)前已有聚類中心之間的最短距離(最短距離為最近的一個聚類中心的距離),該距離用D(x)表示。而D(x)較大的點(diǎn),被選取作為聚類中心的概率較大,之后采用輪盤法選出下一個聚類中心cx,直到選出k個聚類中心。在本文數(shù)據(jù)集上進(jìn)行聚類分析得到的目標(biāo)框聚類分布如圖3 所示,橫坐標(biāo)代表錨框的寬度,縱坐標(biāo)代表錨框的高度,其中錨框的寬高維度對應(yīng)聚類中心點(diǎn)目標(biāo)框的寬高。然后從1 開始不斷增加聚類中心的個數(shù),得到聚類中心數(shù)量k與Avg IOU 之間的關(guān)系如圖4 所示。橫坐標(biāo)代表聚類中心數(shù)量k值,縱坐標(biāo)代表k值對應(yīng)的Avg IoU值。
圖3 目標(biāo)框聚類分布圖
圖4 K-means++聚類分析結(jié)果
由圖4 可以看出,隨著聚類數(shù)量的增加,平均交并比逐漸上升,當(dāng)k大于7的時候,平均交并比逐漸平緩,介于本文采用了4個尺度預(yù)測,因此選擇了12組anchor。由于車牌為一類,所以聚類結(jié)果相對稀疏,聚類得到12組anchor 為(1.26,1.03)、(1.76,1.12)、(3.75,1.74)、(9.55,4.30)、(1.53,1.06)、(0.64,0.31)、(1.71,0.77)、(6.70,2.88)、(2.66,3.27)、(2.75,1.47)、(1.90,1.34)、(4.89,2.16)。
將這些anchor 按照面積從小到大的順序分配給4種尺度的特征圖,尺度較大的特征圖使用較小的anchor框,每個網(wǎng)格需計算3個預(yù)測框。每個網(wǎng)格根據(jù)錨盒參數(shù)及特征圖多尺度縮放預(yù)測出n個候選框的位置及其對應(yīng)的目標(biāo)種類置信度為:(tx,ty,tw,th,to)。其中(tx,ty)表示候選框中心坐標(biāo),(tw,th)表示候選框的寬和高,to表示目標(biāo)種類置信度。由錨盒參數(shù)獲得目標(biāo)候選框的位置的方法公式如下:
式(3)~(6)中,Cx、Cy表示網(wǎng)格位置。如圖5 所示網(wǎng)格位置由該網(wǎng)格左上角坐標(biāo)表示,虛線框表示錨盒,藍(lán)色線框表示目標(biāo)候選框相對錨的偏移量。目標(biāo)候選框位于網(wǎng)格(Cx,Cy)中,ph、pw表示錨盒的高和寬,錨合中心為網(wǎng)絡(luò)中心,bh、bw表示目標(biāo)候選框相對于錨盒的長寬偏移量,而σ 為邏輯回歸函數(shù)
圖5 目標(biāo)候選框示意圖
原始的YOLOv3 使用的特征提取網(wǎng)絡(luò)是DarkNet-53,雖然DarkNet-53里面加入了殘差結(jié)構(gòu)后可以增加特征多樣性,加快網(wǎng)絡(luò)訓(xùn)練。但是隨著網(wǎng)絡(luò)深度的增加,網(wǎng)絡(luò)訓(xùn)練的參數(shù)也隨之加大,那么會導(dǎo)致車牌定位檢測的速度有所下降,且YOLOv3采用13×13的特征圖易造成小目標(biāo)丟失的問題,從而也增加了復(fù)雜場境下車牌的漏檢和錯檢。針對上述問題,本文在Darknet-53的基礎(chǔ)上對網(wǎng)絡(luò)進(jìn)行改進(jìn)。改進(jìn)的方法如下:
(1)網(wǎng)絡(luò)結(jié)構(gòu)優(yōu)化。
本文借鑒DarkNet-53,提出一種參數(shù)數(shù)量相對較少、運(yùn)算復(fù)雜度相對較低的特征提取網(wǎng)絡(luò)。稱為DarkNet-41,如圖6 所示。首先將原來輸入圖像的416×416 大小改為512×512,然后將網(wǎng)絡(luò)結(jié)構(gòu)中殘差結(jié)構(gòu)的數(shù)量進(jìn)行適當(dāng)調(diào)整,分別把網(wǎng)絡(luò)主干中2、4、8、16、32倍下采樣后殘差網(wǎng)絡(luò)結(jié)構(gòu)的數(shù)量調(diào)整為1、2、6、6、2個,同時將卷積層的濾波器數(shù)量降低50%,即第一層卷積層用16 個大小為3×3的卷積核過濾輸入大小為512×512的圖像,然后將之前卷積層的輸出作為輸入,采用32個尺寸為3×3的卷積核以及兩個像素的步長對它們?yōu)V波,實(shí)現(xiàn)下采樣操作。該網(wǎng)絡(luò)結(jié)構(gòu)包含1×、2×和6×殘差塊的5組網(wǎng)絡(luò),相比較于YOLOv3中1×、2×、8×、4×殘差塊的5組網(wǎng)絡(luò),參數(shù)數(shù)量減少,運(yùn)算復(fù)雜度下降,實(shí)現(xiàn)檢測速度的提升。
圖6 DarkNet-41網(wǎng)絡(luò)結(jié)構(gòu)
(2)改進(jìn)多尺度檢測。
首先,輸入圖像改為512×512的目的是為了確保在幾次下采樣后,小的目標(biāo)不會出現(xiàn)特征消失的情況,在經(jīng)過5次下采樣后,特征圖的大小依次變?yōu)榱?56、128、64、32、16。然后將網(wǎng)絡(luò)的3 尺度檢測改為4 尺度檢測,設(shè)定的4 個尺度大小為128×128、64×64、32×32 和16×16。最后采用FPN(Feature Pyramid Network)原理,對上述4個尺度檢測的特征層進(jìn)行融合處理,在保留深層圖像語義信息的基礎(chǔ)上獲得更多的淺層圖像特征信息,其中新增加的128×128的特征圖采用更精確的錨框,提高算法對小目標(biāo)的檢測精度。同時,緩解了在多車輛和密集車輛下車牌定位的錯檢和漏檢。
FPN 的結(jié)構(gòu)如圖7 所示。應(yīng)用于本文的多尺度預(yù)測方法為:先對16×16 大小的特征圖進(jìn)行處理,然后送到檢測大目標(biāo)的YOLO-1層,同時將該尺度特征圖上采樣后與32×32 大小的特征圖進(jìn)行拼接后送到檢測中等目標(biāo)的YOLO-2層,之后對當(dāng)前尺度的特征圖進(jìn)行上采樣并與64×64 大小的特征圖進(jìn)行拼接后送到檢測小目標(biāo)的YOLO-3層,最后與新增加的128×128的特征圖進(jìn)行拼接操作后送到Y(jié)OLO-4 層,實(shí)現(xiàn)了4 個尺度的相融合操作。這樣可以獲得一個強(qiáng)語義信息,并且在每個融合后的特征層上單獨(dú)進(jìn)行預(yù)測。
圖7 FPN網(wǎng)絡(luò)結(jié)構(gòu)
在預(yù)測方面,對于輸入的車牌圖像,預(yù)測一個三維張量,包括車牌邊界框、車牌對象和車牌類別。改進(jìn)后的YOLOv3將特征圖劃分成N×N 的網(wǎng)格(不同特征圖N 大小不同),為每個網(wǎng)格預(yù)測3個不同的邊界框,并且張量可以表示為N×N×[3×(4+1+1)],即4 個邊界框偏移量,1個車牌對象和1個車牌類型。
(3)添加Inception-SE結(jié)構(gòu)
Inception 結(jié)構(gòu)是由不同大小的卷積核組成,其中1×1 卷積核實(shí)現(xiàn)了降維,再利用3×3 和5×5 卷積核對特征圖提取不同尺寸的特征信息。為了減少計算量,本文將Inception結(jié)構(gòu)進(jìn)行改進(jìn),一方面用3×3卷積層代替5×5卷積層,另一方面用兩個3×1和1×3的卷積層代替3×3卷積層,最大池化層的規(guī)模大小仍然為3×3。Inception結(jié)構(gòu)和改進(jìn)后的結(jié)構(gòu)如圖8(a)和(b)所示。
如圖9 為Inception-SE 結(jié)構(gòu),該結(jié)構(gòu)是將(Squeezeand-Excitation,SE)[24]注意力機(jī)制模塊融入了改進(jìn)后的Inception 架構(gòu)中。方框旁邊的維度信息代表該層的輸出。本文使用average pooling 作為Squeeze 操作,兩個FC(Fully Connected)層組成一個Bottleneck 結(jié)構(gòu)去建模通道間的相關(guān)性,并輸出和輸入相同特征數(shù)目的權(quán)重。首先將特征維度降低到輸入的1/16,然后再通過一個FC層升回到原來的維度。
圖8 (a) Inception模塊結(jié)構(gòu)
圖8 (b) 改進(jìn)后Inception模塊結(jié)構(gòu)
圖9 Inception-SE模塊結(jié)構(gòu)
本文對檢測網(wǎng)絡(luò)中規(guī)模為5×5 大小的DBL(Conv+BN+Leaky Relu)模塊進(jìn)行改進(jìn),如圖10(a)所示,在網(wǎng)絡(luò)檢測得第1、3、5層仍然使用規(guī)模為1×1大小的DBL層來進(jìn)行降維操作,而在網(wǎng)絡(luò)的第2、4層分別由Inception-SE 模塊替代DBL,通過增加不同規(guī)模大小的卷積來提取數(shù)據(jù)的特征,同時在Inception-SE的后面繼續(xù)保留BN層和Leaky ReLu層,使得在3×1和3×3卷積操作的分支中都存在1×1的降維卷積層。對于Inception-SE結(jié)構(gòu)的加入,不但可以使網(wǎng)絡(luò)更加收斂且在靠近輸入的層也可以獲得全局的感受野,從而提高了檢測的精度。改進(jìn)后的總體網(wǎng)絡(luò)結(jié)構(gòu)如圖10所示。
圖10 改進(jìn)YOLOv3整體網(wǎng)絡(luò)結(jié)構(gòu)
(4)使用CIoU作為邊界框損失
原始的YOLOv3采用MSE作為損失函數(shù)來進(jìn)行目標(biāo)框回歸,但MSE 損失函數(shù)對目標(biāo)的尺度相當(dāng)敏感。由于IoU可以作為目標(biāo)檢測中最常用的指標(biāo),它不僅可以確定正負(fù)樣本,還可以衡量兩個邊界框的距離,因此IoU更能體現(xiàn)回歸框的質(zhì)量。如圖11為IoU的3種不同情況。
圖11 3種IoU值的不同表現(xiàn)結(jié)果
然而用IoU作為損失函數(shù),預(yù)測框與真實(shí)框之間沒有重合時,IoU無法衡量兩邊界框距離的遠(yuǎn)近。并且當(dāng)IoU 為0 時,導(dǎo)致優(yōu)化損失函數(shù)時梯度為0,無法優(yōu)化。如圖12為IoU為0的兩種不同應(yīng)用場景,但是場景A中預(yù)測框與真實(shí)框的距離更近一些,其預(yù)測效果也更佳。
圖12 IoU為0的不同場景
本文針對IoU 無法優(yōu)化無重疊的邊界框問題引入了CIoU[25]作為損失函數(shù),CIoU將目標(biāo)的重疊面積,中心點(diǎn)距離及長寬比都考慮進(jìn)去,使得目標(biāo)框回歸變得更加穩(wěn)定,避免了IoU在訓(xùn)練過程中出現(xiàn)發(fā)散等問題。CIoU的計算公式如下:
公式中,b 和bgt表示預(yù)測框與GT 框的中心點(diǎn),ρ 表示歐式距離,C2是指剛好能包含predict box和GT box的最小box 的對角線長度平方。其中C 的表示區(qū)域?yàn)閳D13 的黑色框范圍,而α 代表權(quán)重函數(shù),ν 用來度量長寬比的相似性。α 和ν 的公式如下:
圖13 CIoU中C的表示區(qū)域
本文的車牌圖像數(shù)據(jù)主要來源于選取CCPD[26]數(shù)據(jù)集以及自己收集的車牌數(shù)據(jù)圖像,共9 650 張圖像。包括各種復(fù)雜環(huán)境下的圖片(例如:傾斜、夜間、強(qiáng)光、遮擋、多車輛、雨霧天),其數(shù)量分配如表1所示。在9 650張數(shù)據(jù)集中,選取6 755 張圖片為訓(xùn)練數(shù)據(jù),2 895 張圖片為測試數(shù)據(jù)。數(shù)據(jù)種類名稱用英文單詞代替。最后隨機(jī)選取1/3訓(xùn)練數(shù)據(jù)(965張)包括所有復(fù)雜環(huán)境的驗(yàn)證數(shù)據(jù)進(jìn)行實(shí)驗(yàn)測試,用于分析和比較。
本文的數(shù)據(jù)預(yù)處理包括數(shù)據(jù)增強(qiáng)和數(shù)據(jù)標(biāo)簽格式轉(zhuǎn)換兩部分。
表1 數(shù)據(jù)分配表
3.1.1 數(shù)據(jù)增強(qiáng)
本文車牌數(shù)據(jù)集包括不同大小的圖像,其中圖像像素分布于600×600~2 000×2 000 之間,由于本文的圖像輸入大小為512×512,所以首先需要將數(shù)據(jù)集進(jìn)行裁剪操作,使數(shù)據(jù)進(jìn)行歸一化處理??紤]到原數(shù)據(jù)集存在噪聲影響以及在裁剪的過程中會有圖像分辨率丟失的情況,本文采用Jobson 等[27]提出的多尺度(Multi-Scale Retinex,MSR)算法對車牌數(shù)據(jù)圖像進(jìn)行增強(qiáng),即對一幅圖像在不同的尺度上利用高斯進(jìn)行濾波,然后在對不同尺度上的濾波結(jié)果進(jìn)行平均加權(quán),獲得所估計的照度圖像,其公式為:
其中,N 是尺度參數(shù)的個數(shù),當(dāng)N=3 時,即使用3個不同尺度的高斯濾波器對原始圖像進(jìn)行濾波處理時,效果達(dá)到最好。wk是第k 個尺度在進(jìn)行加權(quán)的時候的權(quán)重系數(shù),它需要滿足公式:
當(dāng)取平均時,能適用于大量的低照度圖像,比如去霧處理,F(xiàn)k(x,y)是在第k 個尺度上的高斯濾波函數(shù),即:
本文分別列舉了4 種在不同場景下原始圖像與增強(qiáng)圖像的對比結(jié)果。如圖14(a)~(d)所示,分別表示在低分辨率(霧天)、有干擾物(污損)、夜晚強(qiáng)光和雪天時的車牌增強(qiáng)圖像。對比原始圖像可以看出,由MSR 增強(qiáng)后的圖像比原始圖像的紋理更加清晰,并且減少了噪聲的影響,可以更好的適應(yīng)網(wǎng)絡(luò)的訓(xùn)練。
3.1.2 數(shù)據(jù)集標(biāo)簽格式轉(zhuǎn)換
由于本文的數(shù)據(jù)集不能適應(yīng)于YOLOv3 網(wǎng)絡(luò)的訓(xùn)練格式,所以需要將數(shù)據(jù)集轉(zhuǎn)化為Pascal VOC格式,對于仿照Pascal VOC格式自制的車牌數(shù)據(jù)集需要對標(biāo)注信息進(jìn)行歸一化處理,便于訓(xùn)練樣本數(shù)據(jù)的快速讀取。歸一化公式為:
圖14 不同場景下的原始數(shù)據(jù)和增強(qiáng)對比圖
式(13)~(16)中,(xmin,xmax,ymin,ymax)為原始樣本邊界框的標(biāo)注信息,(x,y,w,h)為歸一化后的標(biāo)注信息,其中x、y為邊界框中心點(diǎn)坐標(biāo)。由于車牌只有一類,所以class_id值可以忽略,那么每張圖片的每個目標(biāo)具有4類(x,y,w,h),這樣就可以對制作好的數(shù)據(jù)集用于YOLOv3的訓(xùn)練。
本文采用基于pytorch的深度學(xué)習(xí)框架進(jìn)行訓(xùn)練和測試,選擇改進(jìn)后的YOLOv3 方法對車牌進(jìn)行定位檢測,在GPU 方面選用NVIDIA GeForce GTX 1060Ti,CUDA9.2,內(nèi)存為16 GB;使用的編程語言為Python。在進(jìn)行訓(xùn)練之前,需要修改YOLOv3網(wǎng)絡(luò)的配置文件的相關(guān)參數(shù),以符合本文數(shù)據(jù)集的訓(xùn)練要求,而修改后的部分參數(shù)如表2 所示。本文訓(xùn)練的初始學(xué)習(xí)率設(shè)置為0.001,并且在epoch 數(shù)達(dá)到90 時,學(xué)習(xí)率變?yōu)?.000 1,直到epoch 數(shù)達(dá)到130 時結(jié)束訓(xùn)練。此外,在相同的實(shí)驗(yàn)環(huán)境下,本文訓(xùn)練了一個原始的YOLOv3 網(wǎng)絡(luò)模型,用于分析比較。
表2 部分實(shí)驗(yàn)參數(shù)
本文根據(jù)表2的參數(shù)對數(shù)據(jù)進(jìn)行訓(xùn)練,如圖15為訓(xùn)練過程中YOLOv3和本文算法的loss變化對比曲線,其中橙色線條代表的是原始算法曲線,藍(lán)色線條代表的是改進(jìn)算法曲線,橫坐標(biāo)代表訓(xùn)練輪數(shù)(epoch),縱坐標(biāo)代表訓(xùn)練過程中的loss值。
圖15 訓(xùn)練損失對比曲線
由圖15可以看出,YOLOv3算法的初始損失值大約在3.7 左右,而改進(jìn)后的算法初始損失值大約在2.8 左右,在最開始時二者的損失值均為下降狀態(tài),隨著epoch數(shù)量的增加,原始算法的損失值較大,并且出現(xiàn)波動情況,在輪數(shù)達(dá)到90 時,兩者的損失值相近,之后原始算法的損失值穩(wěn)定為0.45左右,而改進(jìn)后的算法為0.28左右。相比于原算法,在采用CIoU 作為模型的邊界框回歸損失后,模型的損失有所降低,模型的檢測效果也更好。訓(xùn)練過程中精度和召回率曲線如圖16所示。
圖16 Precision與Recall變化曲線
圖17 預(yù)測結(jié)果對比
本文根據(jù)表1 分配的測試數(shù)據(jù)分別在YOLOv3 和本文算法的預(yù)測結(jié)果如圖17 所示,橫坐標(biāo)代表類別的數(shù)量,縱坐標(biāo)代表場景種類。由圖17 可知,在預(yù)測方面,本文算法的檢測正確率比原始算法的檢測正確率有所提高。
為了驗(yàn)證IoU和CIoU對YOLOv3算法的影響,本文將YOLOv3 的損失函數(shù)MSE 分別替換為IoU 和CIoU。3種損失函數(shù)對YOLOv3算法影響,如表3所示。
表3 損失函數(shù)性能分析
由表3 可得,采用IoU 作為邊界框損失與MSE 相比,mAP 提升了0.56%,可知將IoU 作為邊界框損失對網(wǎng)絡(luò)性能的提升有重要作用。而采用CIoU作為邊界框損失與IoU相比,mAP提升0.41%,因此在考慮IoU的同時,引入預(yù)測框與真實(shí)框之間的中心點(diǎn)距離和長寬比可以更好地優(yōu)化YOLOv3算法。
表4 為采用不同尺度的YOLOv3 算法在復(fù)雜場景下的檢測對比結(jié)果,表中YOLOv3 代表原始算法,采用IoU 回歸損失。YOLOv3-3scale 和YOLOv3-4scale 分別代表本文算法的3 尺度和4 尺度檢測,采用CIoU 回歸損失。不同場景的數(shù)據(jù)種類用英文單詞表示。由表4可得,YOLOv3 模型在所有種類下的mAP 達(dá)到了97.31%,F(xiàn)PS 為33.2 幀/s。其中在正常車牌的檢測中效果最佳,mAP 為99.37%,F(xiàn)PS 為32 幀/s。對于其他應(yīng)用場景的車牌檢測效果也表現(xiàn)良好。而YOLOv3-3scale和YOLOv3-4scale在所有種類下的mAP值為98.59%和98.84%,F(xiàn)PS 分別為36.59 幀/s 和36.4 幀/s,比YOLOv3模型的mAP 值分別提升了1.28%和1.53%,F(xiàn)PS 分別提升了3.39 幀/s 和3.2 幀/s。且在其他不同應(yīng)用場景下檢測的精度和速度均有提升,表明改進(jìn)后的YOLOv3算法可以更好的適應(yīng)于車牌的定位檢測。對比改進(jìn)后的YOLOv3 算法,采用4 尺度檢測比3 尺度檢測在所有種類下的mAP 提升了0.25%,在速度方面,4 尺度檢測的FPS僅比3尺度檢測少0.19幀/s。特別地,采用4尺度檢測主要提升了多車輛和遠(yuǎn)距離有干擾物場景下的檢測精度,分別比3 尺度檢測時的mAP 值提升0.41%和0.22%,同時也保證了速度的實(shí)時性。綜合分析表明,增加至4 尺度檢測以及選取更為匹配的錨框尺寸有利于增強(qiáng)網(wǎng)絡(luò)識別能力,可以更有效地提高不同場景下車牌的定位精度。
為了進(jìn)一步分析本文所提出的方法對YOLOv3 模型的影響,進(jìn)行了消融實(shí)驗(yàn),將本文算法裁剪成7 組分別進(jìn)行訓(xùn)練,其中第一組為YOLOv3 算法,最后一組為本文算法,7組實(shí)驗(yàn)結(jié)果如表5所示。
由表5中實(shí)驗(yàn)A 和B可知,本文提出的精簡特征網(wǎng)絡(luò)(DarkNet-41)降低了模型復(fù)雜度,F(xiàn)PS增加了3.8幀/s,但準(zhǔn)確率有一定程度的降低;對比實(shí)驗(yàn)B 和C 可知,改進(jìn)多尺度特征融合抵消了精簡特征提取網(wǎng)絡(luò)帶來的不利影響,mAP值提高了0.42%,表明將3尺度增加至4個尺度有利于增強(qiáng)網(wǎng)絡(luò)識別能力;對比實(shí)驗(yàn)C 和D 可知,增加改進(jìn)后的Inception-SE模塊分別給檢測的精度和速度帶來了0.65%和0.22幀/s的提升;而對比實(shí)驗(yàn)D和E可知,優(yōu)化錨框尺寸使得識別準(zhǔn)確率提高0.41%,最后與本文算法相比,在采用MSR數(shù)據(jù)增強(qiáng)算法后,mAP提升了0.43%,F(xiàn)PS提升了0.4幀/s??傊疚膶τ赮OLOv3提出的改進(jìn)策略對提取復(fù)雜場景下的車牌定位檢測效果均是有意義的。
表4 不同尺度的YOLOv3算法檢測結(jié)果
表5 消融實(shí)驗(yàn)結(jié)果對比
圖18 至圖20 為算法改進(jìn)前后的效果對比,本文對于復(fù)雜場景下的6 種情況進(jìn)行了具體檢測效果示例展示,包括正常、強(qiáng)光或夜晚、雨雪天、有干擾物、傾斜和多車輛檢測。每一種場景都采用同一組相同的測試圖像。其中圖18(a)和圖18(b)分別代表正常和強(qiáng)光、低分辨率的檢測對比結(jié)果;圖19(a)和圖19(b)分別代表雨雪天氣和具有干擾物檢測對比結(jié)果;圖20(a)和圖20(b)分別代表傾斜和多車輛檢測對比結(jié)果。
圖18 正常、強(qiáng)光和低分辨率檢測結(jié)果
圖19 雨雪和有干擾物檢測結(jié)果
圖20 傾斜和多車輛檢測結(jié)果
由圖18(a)看出,對于正常車牌的定位檢測,本文算法和YOLOv3均取得了不錯的檢測效果,兩者都可以正確的檢測出車牌的位置,但是在準(zhǔn)確率上,本文算法稍優(yōu)于YOLOv3 算法;圖18(b)在強(qiáng)光和低分辨率的環(huán)境下,YOLOv3的精度分別為0.95%和0.91%,本文算法的精度都為0.97%。由圖19(a)可以看出,在雨雪環(huán)境下,相比于本文算法,YOLOv3存在錯檢情況且在預(yù)測精度方面,本文算法稍優(yōu)于YOLOv3;圖19(b)在具有顏色相近干擾和有遮擋干擾的環(huán)境下,定位方面本文算法優(yōu)于YOLOv3,且YOLOv3存在多檢和錯檢的情況。由圖20(a)可知在具有傾斜的環(huán)境下,本文算法定位正確率高于YOLOv3;而由圖20(b)可以看出,在多車輛的環(huán)境下,YOLOv3 只檢測出2 輛車,而本文算法檢查出來多輛,同時預(yù)測準(zhǔn)確率也有一定程度的上升。綜上所述,本文算法對于復(fù)雜場景下車牌的定位檢測效果與YOLOv3相比有著顯著的提升。
使用SSD、Faster R-CNN、YOLOv3 以及其他算法和本文改進(jìn)算法的對比結(jié)果,如表6 所示。由表可見,本文算法與原YOLOv3算法相比,平均檢測時間減少了8 ms,mAP提高了1.53%,其次,F(xiàn)aster R-CNN的準(zhǔn)確率比YOLOv3稍差,但是檢測速度比YOLOv3慢大約4.29倍,而SSD在檢測速度和精度上都較差。相比于其他算法綜合來看,本文改進(jìn)的YOLOv3模型具有一定的泛化性和魯棒性。
表6 不同算法檢測對比結(jié)果
本文將YOLOv3 算法應(yīng)用到車牌圖像的目標(biāo)檢測中,針對各種復(fù)雜場景下的車牌定位困難等問題,首先使用K-means++對錨框進(jìn)行聚類分析,并且通過精簡網(wǎng)絡(luò)結(jié)構(gòu)來優(yōu)化計算參數(shù)問題,此外,改進(jìn)了多尺度融合以及添加Inception-SE 模塊來提高檢測精度,最后使用CIoU評價指標(biāo)來提高定位能力。在本文的數(shù)據(jù)集上進(jìn)行訓(xùn)練和測試,實(shí)驗(yàn)結(jié)果表明,本文方法可以有效提升復(fù)雜場景下車牌定位檢測任務(wù)的精度和速度,其平均精度值達(dá)到了98.84%,幀率達(dá)到了36.4幀/s。
由于其他顏色類型的牌照(如:黃色、綠色、白色)等都是特殊牌照,數(shù)據(jù)很難收集,下一步將收集數(shù)據(jù)并考慮將Res2Net 或shufflenetv2 加入作為主干網(wǎng)絡(luò)。在數(shù)據(jù)處理方面,針對不同類型的數(shù)據(jù)進(jìn)行分類標(biāo)注然后實(shí)驗(yàn),并且會將車牌的字符識別模塊添加進(jìn)去,可以更好地應(yīng)用于交通場景。