王嘉璐,王 穎,錢立峰,施愷杰,謝劍鋒,楊昊天
(南昌工程學(xué)院 信息工程學(xué)院,江西 南昌 330022)
隨著經(jīng)濟的發(fā)展,交通擁堵問題凸顯,嚴重影響人民生活水平的提高,構(gòu)建智能化的交通監(jiān)測系統(tǒng)對減少交通擁堵、提高交通運輸效率具有重要意義。對車輛目標進行準確、實時的檢測是智能交通系統(tǒng)的核心,在現(xiàn)有車輛檢測算法研究中,基于深度學(xué)習(xí)的檢測算法成功引起了學(xué)者們的關(guān)注,特別是針對復(fù)雜場景中多個車輛的檢測更具挑戰(zhàn)性。
目前基于視頻圖像的車輛檢測研究領(lǐng)域算法眾多,大致可以分為2類,分別為目標檢測算法和深度學(xué)習(xí)算法。傳統(tǒng)目標檢測算法通過閾值處理、形態(tài)學(xué)處理等方法提取車輛信息,然后擬定閾值通過滑動窗口對車輛進行檢測。2001年,ViolaP和Jones M.Rapid通過對目標特征增強級聯(lián)實現(xiàn)目標檢測;2002年,Lienhart R和 Maydt J.An對haar類特征擴充實現(xiàn)快速目標檢測。上述傳統(tǒng)目標檢測算法存在特征泛化能力低以及運算過于復(fù)雜等問題。隨著深度學(xué)習(xí)等人工智能技術(shù)的飛速發(fā)展,YOLO系列、SSD、Faster R-CNN以及Fast R-CNN等基于深度學(xué)習(xí)的目標檢測算法出現(xiàn)。Lipikorn等提出了一種基于SIFT描述子和神經(jīng)網(wǎng)絡(luò)的車輛標志識別方法。盡管該方法成功消除了照明強度和角度變化的影響,但該方法的準確性較低且計算復(fù)雜,導(dǎo)致實時性較差;Xia等提出一種將CNN和多任務(wù)學(xué)習(xí)結(jié)合從而識別車輛的方法,該方法采用自適應(yīng)權(quán)重訓(xùn)練,提升了多任務(wù)模型的收斂。上文提到的深度學(xué)習(xí)方法能較好地提取車輛的相關(guān)特征,但對于目標檢測的精度較低,速度較慢,不能滿足實際中實時檢測的需求。
針對上述現(xiàn)有的目標檢測問題,本文采用基于YOLOv4的車輛檢測與識別算法,收集了來自2005 PASCAL視覺類挑戰(zhàn)賽(VOC2005)中相關(guān)的車輛數(shù)據(jù)集,通過Mosaic數(shù)據(jù)增強算法擴充數(shù)據(jù)集,采用K-means++聚類算法得到適應(yīng)本數(shù)據(jù)集的錨框坐標,采用CIOU損失函數(shù)進一步提升模型的識別精度,提升算法的魯棒性,提高車輛檢測識別精度。
YOLO模型的多尺度檢測算法相比其他算法能夠更加有效地檢測目標,其在許多目標檢測任務(wù)中表現(xiàn)良好。通常將輸入網(wǎng)絡(luò)分為S×S網(wǎng)格,如果目標的中心在網(wǎng)格上,則該網(wǎng)格負責目標的檢測。
YOLOv4模型相比YOLOv3更加復(fù)雜,其在精度與速度方面均有極大提升。該模型采用Label Smoothing平滑和學(xué)習(xí)率余弦退火衰減等技巧提升訓(xùn)練精度。Mosaic數(shù)據(jù)增強算法每次隨機從數(shù)據(jù)集中抽取4張圖片,分別對圖片進行旋轉(zhuǎn)與縮放等操作,將4張圖片組合在一張圖片上,以擴充目標檢測的背景。YOLOv4模型在YOLOv3的DarkNet53框架上進行了改進,實現(xiàn)了以CSPDarkNet53為主干的特征提取網(wǎng)絡(luò),SPP與PAN為特征金字塔的模型框架,其網(wǎng)絡(luò)結(jié)構(gòu)如圖1所示。

圖1 YOLOv4特征結(jié)構(gòu)
YOLOv4模型圖片輸入為416×416 px和608×608 px,本文采用416×416 px的輸入特征結(jié)構(gòu)圖。首先對輸入圖片進行1次卷積操作,然后通過5次殘差網(wǎng)絡(luò)對其下采樣以獲取更高語義的特征信息。由于最后3種shape特征層具有更高的語義信息,故后續(xù)對這3種特征層進行操作。選取13×13的特征層進行3次卷積操作,分別使用4種不同尺度的最大池化進行處理,其池化核為5×5、9×9、13×13以及1×1(即無處理)。SPP模塊可以通過增加感受野分離出圖片中較為顯著的特征信息。將池化后的圖片與池化前的圖片進行融合,對融合后的特征層進行2次上采樣,分別與主干特征提取網(wǎng)絡(luò)中26×26,52×52的特征層融合并進行5次卷積,將處理后的52×52特征層進行2次下采樣,分別融合對應(yīng)大小的特征層。通過YOLO Head對處理后的13×13、26×26、52×52結(jié)果特征進行類別預(yù)測。
本文主要研究提升算法的精度問題,通過聚類算法找到適合該數(shù)據(jù)集Anchor Box(錨框)的坐標,可以較快定位目標的位置,從而提升車輛檢測的精度與速度。采用K-means算法獲得Anchor Box存在2個問題:
(1)采用K-means聚類算法對本文車輛數(shù)據(jù)集進行分類時,從其中隨機選取K個數(shù)據(jù)點作為樣本。如果有2個點在1個簇當中,這使得聚類后的結(jié)果不具有魯棒性。
(2)K-means聚類算法以樣本數(shù)據(jù)間的距離為指標,對車輛數(shù)據(jù)集中的K個簇進行劃分,每個簇的質(zhì)心點根據(jù)所有數(shù)據(jù)點的均值得到。該聚類算法將距離公式中不同屬性的權(quán)重視為相同,并不考慮在不同屬性下會對聚類效果造成的影響。當簇中存在噪聲點或者孤立點時,它們會遠離數(shù)據(jù)的質(zhì)心,從而使計算簇質(zhì)心時產(chǎn)生較大的誤差,對均值計算產(chǎn)生較大影響,甚至導(dǎo)致聚類質(zhì)心嚴重偏離數(shù)據(jù)集的密集區(qū)域,使聚類結(jié)果出現(xiàn)偏差。
對K-means算法中存在的2個問題進行分析。本文采用K-means++算法對數(shù)據(jù)集的Anchor框進行聚類分析,選取適合該數(shù)據(jù)集目標檢測的Anchor框。K-means++算法會從車輛數(shù)據(jù)集中確定K個數(shù)據(jù)樣本,選取的聚類質(zhì)心間離得越遠越好,互不干擾。
損失函數(shù)通常用來對訓(xùn)練模型的真實值與預(yù)測值間的差異程度進行分析與評價,損失函數(shù)與訓(xùn)練模型的性能呈正相關(guān)。由于目標檢測過程中Anchor的回歸損失優(yōu)化與IOU(Intersection over Union,IOU)優(yōu)化并不等價,并且對物體的比例較敏感,因此IOU無法優(yōu)化未重疊部分,故本文引入損失函數(shù)CIOU(Complete Intersection over Union,CIOU)。IOU以比值的形式存在,對檢測目標的scale不敏感,相比IOU,CIOU更加符合Anchor Box回歸機制。由于考慮了檢測目標與Anchor Box之間的距離、重疊率以及尺度等因素,使得目標框的回歸更加穩(wěn)定,因此不會像IOU與GIOU(Generalized Intersection over Union,GIOU)等損失函數(shù)那樣在訓(xùn)練過程中出現(xiàn)發(fā)散的問題。相關(guān)公式如下所示:

式中:α表示權(quán)重函數(shù);v表示度量長寬比的相似性;ρ(b,b)表示預(yù)測框與真實框中心點的歐式距離;C表示能同時包括預(yù)測框與真實框最小閉包區(qū)間對角線的距離;IOU為真實框與預(yù)測框的交并比,是目標檢測中最常用的指標;CIOU損失函數(shù)在梯度方面類似于DIOU,在其基礎(chǔ)上還需考慮v的梯度。長寬通過歸一化處理后處于區(qū)間[0,1]時,w+h常常很小,導(dǎo)致梯度爆炸現(xiàn)象出現(xiàn),因此需將其替換為1。相比之下,CIOU作為度量時具有以下優(yōu)點:
(1)CIOU具有對稱性、隨機性、尺度不變性;
(2)CIOU考慮了非重疊區(qū)域,能夠更好地反映出2個Anchor框重疊的方式;
(3)IOU的取值范圍為[0,1],而CIOU的范圍為[-1,1],具有對稱性。在得到的各Anchor框互相重合時,取最大值1,而在Anchor框無交集且互相無限遠離的情況下取值-1。因此相對于其他損失函數(shù)而言,CIOU又是一個非常好的距離度量指標。
本實驗在網(wǎng)上收集來自2005 PASCAL視覺類挑戰(zhàn)賽(VOC2005)中的車輛數(shù)據(jù)集,并通過旋轉(zhuǎn)、縮放及加入噪聲等數(shù)據(jù)增強算法,將樣本數(shù)據(jù)集擴充至1 310張,本次實驗測試集所占比重為0.3。圖2所示為部分數(shù)據(jù)增強后的數(shù)據(jù)集。

圖2 部分數(shù)據(jù)集
通過labelimg軟件在收集的圖片上標注出機動車的位置(如圖3所示),類別有出租車、面包車、吉普、SUV等,并將標注好的結(jié)果以.txt文件保存。

圖3 標注位置
本實驗基于Windows環(huán)境,通過Python語言編寫實現(xiàn),利用深度學(xué)習(xí)框架Pytorch 1.6.0和OpenCV-Python 4.1.2,NumPY等庫搭建網(wǎng)絡(luò)模型,硬件環(huán)境為IntelCorei5-8300H CPU@2.30 GHz、16 GB內(nèi)存、NVIDIA GeForce GTX 1060。
本實驗首先通過K-means++聚類算法得到適合該數(shù)據(jù)集的Anchor Box(見表1所列),修改train中的cfg等參數(shù)構(gòu)建網(wǎng)絡(luò)。實驗參數(shù)設(shè)計:batch(批數(shù))設(shè)置為1,初始學(xué)習(xí)率為10,最小學(xué)習(xí)率為10,動量參數(shù)為0.9,采用隨機梯度下降法(Stochastic Gradient Descent,SGD)。本實驗訓(xùn)練過程是在YOLOv4權(quán)重下進行微調(diào),對其迭代5 000次完成該過程。IOU檢測結(jié)果見表2所列。

表1 聚類后的錨框坐標

表2 IOU檢測結(jié)果
表1中的數(shù)據(jù)分別表示原始的Anchor Boxes坐標點,以及對本實驗數(shù)據(jù)集使用K-means++聚類后得到的Anchor Boxes坐標點,得到的3行數(shù)據(jù)分別適用于本實驗數(shù)據(jù)集中小型目標、中型目標以及大型目標的坐標。根據(jù)物體大小,選取有效的Anchor Boxes坐標,能提升算法速率與精度。從表2可以看出,經(jīng)本文設(shè)計的聚類后,得到的Anchor Boxes較好提升了車輛檢測的平均IOU,進一步提升了車輛檢測與識別的精度。
在對目標檢測訓(xùn)練后的模型進行評估時,衡量的指標往往采用精準率P(precision)和召回率R(recall),其公式如下:

式中:TP(True Positives)表示正樣本被正確識別為正樣本;FP(False Positives)表示負樣本被錯誤識別為正樣本;FN(False Negatives)表示正樣本被錯誤識別為負樣本。本文采用mAP指標對訓(xùn)練結(jié)果進行評估,其中AP是Precision和Recall為2個軸作圖所圍成的面積,m表示取平均值。圖4與圖5分別表示了優(yōu)化前后訓(xùn)練的結(jié)果。

圖4 優(yōu)化前訓(xùn)練結(jié)果
圖4、圖5分別表示為優(yōu)化前的實驗訓(xùn)練結(jié)果,以及對其采用本文所述方法優(yōu)化后的實驗訓(xùn)練結(jié)果。從訓(xùn)練結(jié)果的曲線圖中可以明顯看出,實驗優(yōu)化前,訓(xùn)練時的損失值起伏較大,下降較慢。并且在訓(xùn)練結(jié)束時,損失值始終在5左右大幅波動,損失值較大,精度較低。而在實驗改進后,可以明顯發(fā)現(xiàn)訓(xùn)練損失值收斂較快,起伏較小,在3 500次后逐漸平緩,損失值在2.5左右波動,較優(yōu)化前的Loss大幅減少。從數(shù)據(jù)可以得出結(jié)論,經(jīng)本文對實驗Anchor Boxes和損失函數(shù)的改進,數(shù)據(jù)訓(xùn)練的效果最好,損失值較快達到飽和且降低至2.5左右,并且其他評價指標也得到了良好的提升。

圖5 優(yōu)化后訓(xùn)練結(jié)果
對車輛進行測試的結(jié)果見表3所列。

表3 測試結(jié)果
表3展示了本實驗各類車輛mAP,可以看出,各類車輛都有較好的精度,整體驗證集的mAP達到了97%,滿足實際應(yīng)用需要。
本文基于目標檢測中的YOLOv4模型,通過研究K-means++算法的相關(guān)作用原理,對數(shù)據(jù)增強后的數(shù)據(jù)集進行聚類分析,求取適應(yīng)于本文車輛數(shù)據(jù)集的Anchor Boxes坐標,并采用CIOU損失函數(shù)在收集并標注好的數(shù)據(jù)集上進行模型的訓(xùn)練與測試。實驗數(shù)據(jù)表明,改良后的YOLOv4模型的性能得到了大幅提升,車輛檢測準確性較高。