王嘉璐,王 穎,錢立峰,施愷杰,謝劍鋒,楊昊天
(南昌工程學(xué)院 信息工程學(xué)院,江西 南昌 330022)
隨著經(jīng)濟(jì)的發(fā)展,交通擁堵問題凸顯,嚴(yán)重影響人民生活水平的提高,構(gòu)建智能化的交通監(jiān)測(cè)系統(tǒng)對(duì)減少交通擁堵、提高交通運(yùn)輸效率具有重要意義。對(duì)車輛目標(biāo)進(jìn)行準(zhǔn)確、實(shí)時(shí)的檢測(cè)是智能交通系統(tǒng)的核心,在現(xiàn)有車輛檢測(cè)算法研究中,基于深度學(xué)習(xí)的檢測(cè)算法成功引起了學(xué)者們的關(guān)注,特別是針對(duì)復(fù)雜場(chǎng)景中多個(gè)車輛的檢測(cè)更具挑戰(zhàn)性。
目前基于視頻圖像的車輛檢測(cè)研究領(lǐng)域算法眾多,大致可以分為2類,分別為目標(biāo)檢測(cè)算法和深度學(xué)習(xí)算法。傳統(tǒng)目標(biāo)檢測(cè)算法通過閾值處理、形態(tài)學(xué)處理等方法提取車輛信息,然后擬定閾值通過滑動(dòng)窗口對(duì)車輛進(jìn)行檢測(cè)。2001年,ViolaP和Jones M.Rapid通過對(duì)目標(biāo)特征增強(qiáng)級(jí)聯(lián)實(shí)現(xiàn)目標(biāo)檢測(cè);2002年,Lienhart R和 Maydt J.An對(duì)haar類特征擴(kuò)充實(shí)現(xiàn)快速目標(biāo)檢測(cè)。上述傳統(tǒng)目標(biāo)檢測(cè)算法存在特征泛化能力低以及運(yùn)算過于復(fù)雜等問題。隨著深度學(xué)習(xí)等人工智能技術(shù)的飛速發(fā)展,YOLO系列、SSD、Faster R-CNN以及Fast R-CNN等基于深度學(xué)習(xí)的目標(biāo)檢測(cè)算法出現(xiàn)。Lipikorn等提出了一種基于SIFT描述子和神經(jīng)網(wǎng)絡(luò)的車輛標(biāo)志識(shí)別方法。盡管該方法成功消除了照明強(qiáng)度和角度變化的影響,但該方法的準(zhǔn)確性較低且計(jì)算復(fù)雜,導(dǎo)致實(shí)時(shí)性較差;Xia等提出一種將CNN和多任務(wù)學(xué)習(xí)結(jié)合從而識(shí)別車輛的方法,該方法采用自適應(yīng)權(quán)重訓(xùn)練,提升了多任務(wù)模型的收斂。上文提到的深度學(xué)習(xí)方法能較好地提取車輛的相關(guān)特征,但對(duì)于目標(biāo)檢測(cè)的精度較低,速度較慢,不能滿足實(shí)際中實(shí)時(shí)檢測(cè)的需求。
針對(duì)上述現(xiàn)有的目標(biāo)檢測(cè)問題,本文采用基于YOLOv4的車輛檢測(cè)與識(shí)別算法,收集了來自2005 PASCAL視覺類挑戰(zhàn)賽(VOC2005)中相關(guān)的車輛數(shù)據(jù)集,通過Mosaic數(shù)據(jù)增強(qiáng)算法擴(kuò)充數(shù)據(jù)集,采用K-means++聚類算法得到適應(yīng)本數(shù)據(jù)集的錨框坐標(biāo),采用CIOU損失函數(shù)進(jìn)一步提升模型的識(shí)別精度,提升算法的魯棒性,提高車輛檢測(cè)識(shí)別精度。
YOLO模型的多尺度檢測(cè)算法相比其他算法能夠更加有效地檢測(cè)目標(biāo),其在許多目標(biāo)檢測(cè)任務(wù)中表現(xiàn)良好。通常將輸入網(wǎng)絡(luò)分為S×S網(wǎng)格,如果目標(biāo)的中心在網(wǎng)格上,則該網(wǎng)格負(fù)責(zé)目標(biāo)的檢測(cè)。
YOLOv4模型相比YOLOv3更加復(fù)雜,其在精度與速度方面均有極大提升。該模型采用Label Smoothing平滑和學(xué)習(xí)率余弦退火衰減等技巧提升訓(xùn)練精度。Mosaic數(shù)據(jù)增強(qiáng)算法每次隨機(jī)從數(shù)據(jù)集中抽取4張圖片,分別對(duì)圖片進(jìn)行旋轉(zhuǎn)與縮放等操作,將4張圖片組合在一張圖片上,以擴(kuò)充目標(biāo)檢測(cè)的背景。YOLOv4模型在YOLOv3的DarkNet53框架上進(jìn)行了改進(jìn),實(shí)現(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)圖。首先對(duì)輸入圖片進(jìn)行1次卷積操作,然后通過5次殘差網(wǎng)絡(luò)對(duì)其下采樣以獲取更高語義的特征信息。由于最后3種shape特征層具有更高的語義信息,故后續(xù)對(duì)這3種特征層進(jìn)行操作。選取13×13的特征層進(jìn)行3次卷積操作,分別使用4種不同尺度的最大池化進(jìn)行處理,其池化核為5×5、9×9、13×13以及1×1(即無處理)。SPP模塊可以通過增加感受野分離出圖片中較為顯著的特征信息。將池化后的圖片與池化前的圖片進(jìn)行融合,對(duì)融合后的特征層進(jìn)行2次上采樣,分別與主干特征提取網(wǎng)絡(luò)中26×26,52×52的特征層融合并進(jìn)行5次卷積,將處理后的52×52特征層進(jìn)行2次下采樣,分別融合對(duì)應(yīng)大小的特征層。通過YOLO Head對(duì)處理后的13×13、26×26、52×52結(jié)果特征進(jìn)行類別預(yù)測(cè)。
本文主要研究提升算法的精度問題,通過聚類算法找到適合該數(shù)據(jù)集Anchor Box(錨框)的坐標(biāo),可以較快定位目標(biāo)的位置,從而提升車輛檢測(cè)的精度與速度。采用K-means算法獲得Anchor Box存在2個(gè)問題:
(1)采用K-means聚類算法對(duì)本文車輛數(shù)據(jù)集進(jìn)行分類時(shí),從其中隨機(jī)選取K個(gè)數(shù)據(jù)點(diǎn)作為樣本。如果有2個(gè)點(diǎn)在1個(gè)簇當(dāng)中,這使得聚類后的結(jié)果不具有魯棒性。
(2)K-means聚類算法以樣本數(shù)據(jù)間的距離為指標(biāo),對(duì)車輛數(shù)據(jù)集中的K個(gè)簇進(jìn)行劃分,每個(gè)簇的質(zhì)心點(diǎn)根據(jù)所有數(shù)據(jù)點(diǎn)的均值得到。該聚類算法將距離公式中不同屬性的權(quán)重視為相同,并不考慮在不同屬性下會(huì)對(duì)聚類效果造成的影響。當(dāng)簇中存在噪聲點(diǎn)或者孤立點(diǎn)時(shí),它們會(huì)遠(yuǎn)離數(shù)據(jù)的質(zhì)心,從而使計(jì)算簇質(zhì)心時(shí)產(chǎn)生較大的誤差,對(duì)均值計(jì)算產(chǎn)生較大影響,甚至導(dǎo)致聚類質(zhì)心嚴(yán)重偏離數(shù)據(jù)集的密集區(qū)域,使聚類結(jié)果出現(xiàn)偏差。
對(duì)K-means算法中存在的2個(gè)問題進(jìn)行分析。本文采用K-means++算法對(duì)數(shù)據(jù)集的Anchor框進(jìn)行聚類分析,選取適合該數(shù)據(jù)集目標(biāo)檢測(cè)的Anchor框。K-means++算法會(huì)從車輛數(shù)據(jù)集中確定K個(gè)數(shù)據(jù)樣本,選取的聚類質(zhì)心間離得越遠(yuǎn)越好,互不干擾。
損失函數(shù)通常用來對(duì)訓(xùn)練模型的真實(shí)值與預(yù)測(cè)值間的差異程度進(jìn)行分析與評(píng)價(jià),損失函數(shù)與訓(xùn)練模型的性能呈正相關(guān)。由于目標(biāo)檢測(cè)過程中Anchor的回歸損失優(yōu)化與IOU(Intersection over Union,IOU)優(yōu)化并不等價(jià),并且對(duì)物體的比例較敏感,因此IOU無法優(yōu)化未重疊部分,故本文引入損失函數(shù)CIOU(Complete Intersection over Union,CIOU)。IOU以比值的形式存在,對(duì)檢測(cè)目標(biāo)的scale不敏感,相比IOU,CIOU更加符合Anchor Box回歸機(jī)制。由于考慮了檢測(cè)目標(biāo)與Anchor Box之間的距離、重疊率以及尺度等因素,使得目標(biāo)框的回歸更加穩(wěn)定,因此不會(huì)像IOU與GIOU(Generalized Intersection over Union,GIOU)等損失函數(shù)那樣在訓(xùn)練過程中出現(xiàn)發(fā)散的問題。相關(guān)公式如下所示:
式中:α表示權(quán)重函數(shù);v表示度量長(zhǎng)寬比的相似性;ρ(b,b)表示預(yù)測(cè)框與真實(shí)框中心點(diǎn)的歐式距離;C表示能同時(shí)包括預(yù)測(cè)框與真實(shí)框最小閉包區(qū)間對(duì)角線的距離;IOU為真實(shí)框與預(yù)測(cè)框的交并比,是目標(biāo)檢測(cè)中最常用的指標(biāo);CIOU損失函數(shù)在梯度方面類似于DIOU,在其基礎(chǔ)上還需考慮v的梯度。長(zhǎng)寬通過歸一化處理后處于區(qū)間[0,1]時(shí),w+h常常很小,導(dǎo)致梯度爆炸現(xiàn)象出現(xiàn),因此需將其替換為1。相比之下,CIOU作為度量時(shí)具有以下優(yōu)點(diǎn):
(1)CIOU具有對(duì)稱性、隨機(jī)性、尺度不變性;
(2)CIOU考慮了非重疊區(qū)域,能夠更好地反映出2個(gè)Anchor框重疊的方式;
(3)IOU的取值范圍為[0,1],而CIOU的范圍為[-1,1],具有對(duì)稱性。在得到的各Anchor框互相重合時(shí),取最大值1,而在Anchor框無交集且互相無限遠(yuǎn)離的情況下取值-1。因此相對(duì)于其他損失函數(shù)而言,CIOU又是一個(gè)非常好的距離度量指標(biāo)。
本實(shí)驗(yàn)在網(wǎng)上收集來自2005 PASCAL視覺類挑戰(zhàn)賽(VOC2005)中的車輛數(shù)據(jù)集,并通過旋轉(zhuǎn)、縮放及加入噪聲等數(shù)據(jù)增強(qiáng)算法,將樣本數(shù)據(jù)集擴(kuò)充至1 310張,本次實(shí)驗(yàn)測(cè)試集所占比重為0.3。圖2所示為部分?jǐn)?shù)據(jù)增強(qiáng)后的數(shù)據(jù)集。
圖2 部分?jǐn)?shù)據(jù)集
通過labelimg軟件在收集的圖片上標(biāo)注出機(jī)動(dòng)車的位置(如圖3所示),類別有出租車、面包車、吉普、SUV等,并將標(biāo)注好的結(jié)果以.txt文件保存。
圖3 標(biāo)注位置
本實(shí)驗(yàn)基于Windows環(huán)境,通過Python語言編寫實(shí)現(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。
本實(shí)驗(yàn)首先通過K-means++聚類算法得到適合該數(shù)據(jù)集的Anchor Box(見表1所列),修改train中的cfg等參數(shù)構(gòu)建網(wǎng)絡(luò)。實(shí)驗(yàn)參數(shù)設(shè)計(jì):batch(批數(shù))設(shè)置為1,初始學(xué)習(xí)率為10,最小學(xué)習(xí)率為10,動(dòng)量參數(shù)為0.9,采用隨機(jī)梯度下降法(Stochastic Gradient Descent,SGD)。本實(shí)驗(yàn)訓(xùn)練過程是在YOLOv4權(quán)重下進(jìn)行微調(diào),對(duì)其迭代5 000次完成該過程。IOU檢測(cè)結(jié)果見表2所列。
表1 聚類后的錨框坐標(biāo)
表2 IOU檢測(cè)結(jié)果
表1中的數(shù)據(jù)分別表示原始的Anchor Boxes坐標(biāo)點(diǎn),以及對(duì)本實(shí)驗(yàn)數(shù)據(jù)集使用K-means++聚類后得到的Anchor Boxes坐標(biāo)點(diǎn),得到的3行數(shù)據(jù)分別適用于本實(shí)驗(yàn)數(shù)據(jù)集中小型目標(biāo)、中型目標(biāo)以及大型目標(biāo)的坐標(biāo)。根據(jù)物體大小,選取有效的Anchor Boxes坐標(biāo),能提升算法速率與精度。從表2可以看出,經(jīng)本文設(shè)計(jì)的聚類后,得到的Anchor Boxes較好提升了車輛檢測(cè)的平均IOU,進(jìn)一步提升了車輛檢測(cè)與識(shí)別的精度。
在對(duì)目標(biāo)檢測(cè)訓(xùn)練后的模型進(jìn)行評(píng)估時(shí),衡量的指標(biāo)往往采用精準(zhǔn)率P(precision)和召回率R(recall),其公式如下:
式中:TP(True Positives)表示正樣本被正確識(shí)別為正樣本;FP(False Positives)表示負(fù)樣本被錯(cuò)誤識(shí)別為正樣本;FN(False Negatives)表示正樣本被錯(cuò)誤識(shí)別為負(fù)樣本。本文采用mAP指標(biāo)對(duì)訓(xùn)練結(jié)果進(jìn)行評(píng)估,其中AP是Precision和Recall為2個(gè)軸作圖所圍成的面積,m表示取平均值。圖4與圖5分別表示了優(yōu)化前后訓(xùn)練的結(jié)果。
圖4 優(yōu)化前訓(xùn)練結(jié)果
圖4、圖5分別表示為優(yōu)化前的實(shí)驗(yàn)訓(xùn)練結(jié)果,以及對(duì)其采用本文所述方法優(yōu)化后的實(shí)驗(yàn)訓(xùn)練結(jié)果。從訓(xùn)練結(jié)果的曲線圖中可以明顯看出,實(shí)驗(yàn)優(yōu)化前,訓(xùn)練時(shí)的損失值起伏較大,下降較慢。并且在訓(xùn)練結(jié)束時(shí),損失值始終在5左右大幅波動(dòng),損失值較大,精度較低。而在實(shí)驗(yàn)改進(jìn)后,可以明顯發(fā)現(xiàn)訓(xùn)練損失值收斂較快,起伏較小,在3 500次后逐漸平緩,損失值在2.5左右波動(dòng),較優(yōu)化前的Loss大幅減少。從數(shù)據(jù)可以得出結(jié)論,經(jīng)本文對(duì)實(shí)驗(yàn)Anchor Boxes和損失函數(shù)的改進(jìn),數(shù)據(jù)訓(xùn)練的效果最好,損失值較快達(dá)到飽和且降低至2.5左右,并且其他評(píng)價(jià)指標(biāo)也得到了良好的提升。
圖5 優(yōu)化后訓(xùn)練結(jié)果
對(duì)車輛進(jìn)行測(cè)試的結(jié)果見表3所列。
表3 測(cè)試結(jié)果
表3展示了本實(shí)驗(yàn)各類車輛mAP,可以看出,各類車輛都有較好的精度,整體驗(yàn)證集的mAP達(dá)到了97%,滿足實(shí)際應(yīng)用需要。
本文基于目標(biāo)檢測(cè)中的YOLOv4模型,通過研究K-means++算法的相關(guān)作用原理,對(duì)數(shù)據(jù)增強(qiáng)后的數(shù)據(jù)集進(jìn)行聚類分析,求取適應(yīng)于本文車輛數(shù)據(jù)集的Anchor Boxes坐標(biāo),并采用CIOU損失函數(shù)在收集并標(biāo)注好的數(shù)據(jù)集上進(jìn)行模型的訓(xùn)練與測(cè)試。實(shí)驗(yàn)數(shù)據(jù)表明,改良后的YOLOv4模型的性能得到了大幅提升,車輛檢測(cè)準(zhǔn)確性較高。