楊晨
(太原師范學院,山西 晉中030619)
十字路口是交通事故高發(fā)區(qū),一旦發(fā)生事故,出警處理不及時會造成路口擁堵,從而降低通行效率。交通事故識別主要依賴于車輛異常行為的檢測與判定。車輛異常行為可以通過物體檢測和目標跟蹤算法,對畫面中存在的每個物體的運動軌跡進行檢測,從而實現(xiàn)細化到目標和具體行為的檢測。以往的目標檢測主要依賴人工手段,如車輛巡邏、目擊者報警或人為觀測。這些方法雖然簡單直接,但需要占用大量的時間、人力和物力。此外,霧天環(huán)境下,空氣中懸浮粒子對光線的散射,會導致監(jiān)控視頻畫面模糊,色彩失真以及影像后期處理難的問題。因此,在霧天環(huán)境下,對車輛實現(xiàn)準確且快速檢測具有重要的實踐意義。
2012年,AlexNet[1]在ImageNet視覺挑戰(zhàn)賽中一舉奪冠,卷積神經(jīng)網(wǎng)絡重回大眾視野。在大量的車輛檢測算法中,基于深度學習的方法被廣泛使用。深度卷積神經(jīng)網(wǎng)絡能自主完成對目標特征的學習,提取關鍵信息,從而具有更強的判別能力和泛化能力。深度卷積神經(jīng)網(wǎng)絡目前主要存在兩類主流算法:一類是將region proposal與CNN網(wǎng)絡結合起來所構建的基于分類的R-CNN[2]系列目標檢測框架(two stage);另一類是將目標檢測轉換為回歸問題的算法(one stage),如YOLO(You Only Look Once)[3]系列和SSD(Single Shot Multibox Detector)[4]算法。文獻[13]提出一種基于YOLOv3的深度學習目標檢測算法YOLOv3-fass,該方法相較于YOLOv3更高效,更準確。文獻[14]引入soft-NMS,提出一種解決車輛重疊導致識別精度低的改進YOLOv3算法,能夠比較好的解決霧天車輛識別精度低的問題,但檢測網(wǎng)絡速度較慢;文獻[15]對有30層卷積神經(jīng)網(wǎng)絡的Darknet53骨架網(wǎng)絡構架進行改進,在減少網(wǎng)絡成本的同時提高了檢測精度,但該網(wǎng)絡現(xiàn)階段的速度還不能滿足需求;文獻[16]構建了一種輕量級的YOLOv3-Mobilenetv2檢測網(wǎng)絡,不僅減少了模型參數(shù)量,而且速度也得到明顯提升,但檢測精度相較于YOLOv4依舊偏低。
因此,為提高對霧天環(huán)境下車輛識別的檢測性能,本文對YOLOv4算法進行改進,并基于改進算法對霧天環(huán)境下的車輛檢測進行研究。首先,運用圖像去霧算法對采集到的視頻畫面進行去霧預處理;其次,在原始YOLOv4基礎上,減少模型卷積層數(shù)使模型輕量化,加快模型預測速度。最后,通過實驗驗證改進后的YOLOv4算法的檢測效果,并將不同圖像去霧算法與YOLOv4和本文改進的YOLOv4進行組合,并對其性能進行對比。
圖2 SSR去霧算法效果圖
圖3 MSR去霧算法效果圖
圖4 MSRCR去霧算法效果圖
圖像去霧一直是計算機視覺的熱點問題,現(xiàn)有的去霧算法主要分為兩類,一類是以Kaiming He[5]在2009年CVPR提出的基于暗通道處理的方法為代表的物理模型復原方法;另一類是基于圖像處理的增強方法。物理模型復原方法比圖像增強方法處理的時間要長,所以本文選擇使用圖像增強方法進行去霧處理。
在圖像增強算法中,常用的去霧算法包括:SSR(單尺度Retinex)算法、MSR(多尺度Retinex)算法以及MSRCR(彩色恢復多尺度)算法。利用SSR算法、MSR算法以及MSRCR算法分別對RESIDE數(shù)據(jù)集中包含交通場景的300張圖片進行去霧處理的實驗效果如圖1~4所示,結果顯示,去霧效果MSRCR算法最佳。
圖1 數(shù)據(jù)集原圖
YOLOv4算法原理:
YOLOv4屬于目標檢測one stage算法。它由俄羅斯獨立研究員Alexey Bochkovskiy[6]在YOLO[3]、YOLOv2[7]、YOLOv3[8]的 基礎上,通過對數(shù)據(jù)處理、主干網(wǎng)絡、激活函數(shù)以及損失函數(shù)改進優(yōu)化而來。其基本思想是把圖片劃分成S*S的網(wǎng)格,每個網(wǎng)格針對不同的區(qū)域獨立進行檢測。如果待檢測目標中心落入某個網(wǎng)格,則由該網(wǎng)格負責檢測該目標。
YOLOv4網(wǎng)絡結構主要由四部分組成,分別是Input(輸入端)、BackBone(主干網(wǎng)絡)、Neck以及Prediction(預測部分)。YOLOv4網(wǎng)絡結構如圖5所示。
圖5顯示,YOLOv4算法的主干網(wǎng)絡由CSPDarknet53、Mish激活函數(shù)以及Dropblock組成三部分組成。下采樣從R1-R5,一共經(jīng)歷5次。在目標檢測階段,為了更好的提取融合特征,在BackBone和預測部分之間通常需要插入一些結構,這些結構被稱為Neck。Neck包括SPP(空間金字塔池化)和FPN(特征金字塔)+PANet(路徑聚合網(wǎng)絡)兩種結構。SPP結構使用1*1、5*5、9*9以及13*13四種不同尺度大小的池化核對特征層R5進行三次卷積后的結果進行最大池化,可以有效增加主干特征的接收范圍,分離出顯著的上下文特征。FPN是特征金字塔,增加極小的計算量,處理好物體檢測中的多尺度變化問題。
圖5 YOLOv4網(wǎng)絡結構圖
PANet結構是源于2018年CVPR圖像分割領域PANet[9]的創(chuàng)新點,因為它能準確地保存空間信息,有助于正確定位像素點,形成mask。它通過保留空間信息來增強實例分割過程。經(jīng)過PANet結構后,YOLOv4網(wǎng)絡將進行大小為3*3和1*1的兩次卷積操作,判別三個特征層的先驗框,判斷框內(nèi)是否有目標和目標分類結果,之后進行非極大值抑制,對先驗框調(diào)整得出最終結果。
YOLOv4中提出了Bag of freebies的概念[10],用于構建只改變訓練策略或只增加訓練成本使檢測器并獲得更高精度但不增加推理成本的方法。YOLOv4的輸入端通常采用608*608尺寸,但在實際使用時,由于很多數(shù)據(jù)集中的圖片寬高不一,所以通常需要把原始圖片統(tǒng)一縮放到一個標準尺寸,然后再送入檢測網(wǎng)絡中。之前對圖片進行縮放時會填充部分黑邊,使之達到檢測網(wǎng)絡輸入尺寸。如果黑邊填充過多,會造成信息冗余,影響網(wǎng)絡推理速度。
為增強YOLOv4算法的魯棒性以及面對復雜數(shù)據(jù)集處理的能力,本文在YOLOv4算法基礎上,引入了自適應圖片縮放方法。
首先,用預計縮放尺寸分別除以原始圖片長寬得到兩個縮放比例系數(shù),如式(1)所示:
其中,n表示預計縮放尺寸的長和寬,L,W表示原始圖片的長度;ρL,ρW表示預計縮放長度除以原始長度、寬度得到的縮放比例系數(shù)。
其次,選擇較小的比例系數(shù)分別和原始圖片的長、寬相乘得到縮放后的尺寸,如式(2)所示:
其中ρ表示較小的比例系數(shù),L1,W1分別為縮放后的尺寸。
用圖片原始長寬同上一步得到的縮放尺寸作差,得出需要填充黑邊數(shù)值,如式(3)所示:
其中,X表示預計尺寸減去式(3)中得到縮放后尺寸,Y表示兩端需要填充的黑邊數(shù)量,32表示2的5次方,因為YOLOv4共有5次下采樣。
Alexey Bochkovskiy等人在YOLOv4中提出了CSPDarknet53結構,該結構是在YOLOv3主干網(wǎng)絡Darknet53的基礎上,借鑒2019年CSPNet[11]的經(jīng)驗產(chǎn)生的一種主干網(wǎng)絡結構。它能夠輸出三個不同大小的特征層,即,特征層R3和R4分別經(jīng)過一次1*1的卷積操作后進入PANet結構,然后進行特征融合;特征層R5則經(jīng)過1*1、3*3以及1*1三次卷積后進入SPP結構進行最大池化。這些操作可以提取到更豐富的特征,但是對于道路車輛檢測,CSPDarknet53網(wǎng)絡便顯得有些過于復雜,因為過多的參數(shù)會導致訓練時間變長,進而減慢檢測速度,甚至導致模型過擬合。
為了提高道路車輛目標檢測速度,從保持現(xiàn)有精度、簡化網(wǎng)絡結構角度出發(fā),本文借鑒CSPDarknet53,提出一種參數(shù)數(shù)量較少、運算復雜度較低的特征提取網(wǎng)絡。
首先,第一個卷積層用32個大小為3*3的濾波器對608*608的輸入圖像進行操作,其次將先前卷積層的輸出作為輸入使用64個1*1的濾波器對其進行操作,并實施下采樣;之后簡化網(wǎng)絡結構,將主干網(wǎng)絡中原有CSP結構中位于2,4,6,8,16下采樣后的殘差結構從原來的1,2,8,8,4個簡化為1,2,5,5,2個,并把所有卷積層通道數(shù)變?yōu)樵瓉淼囊话搿>W(wǎng)絡復雜度的降低,減少了模型的參數(shù)量,在提高檢測速度的同時,還可以避免算法過擬合問題。
CSPDarknet53網(wǎng)絡結構采用下采樣結構進行下采樣,這種采樣在特征圖向后傳播的途徑中會損失大量的特征信息。為此,本文在原有主干網(wǎng)絡基礎上添加了一條下采樣支路,該支路上的下采樣模塊和網(wǎng)絡中相同尺度模塊具有相同的通道數(shù)量。改進后的網(wǎng)絡如圖6所示。
圖6 改進后的網(wǎng)絡結構圖
實驗使用UA-DETRAC車輛識別數(shù)據(jù)集對YOLOv4改進算法的精度和速度進行評估。實驗基于CSPDarknet53神經(jīng)網(wǎng)絡框架實現(xiàn)。實驗平臺配置為:操作系統(tǒng):Windows 10;CPU:AMD Ryzen 7 3700X@3.59 GHz八核處理器;32G內(nèi)存;GPU:NVIDIA GeForce RTX 3080 11G顯存;深度學習框架:PyTorch;編程語言:Python。
UA-DETRAC車輛識別數(shù)據(jù)集[12]是一個具有挑戰(zhàn)性的現(xiàn)實世界多目標檢測和多目標跟蹤的基準數(shù)據(jù)集。UA-DETRAC數(shù)據(jù)集在北京和天津的24個不同地點拍攝,視頻內(nèi)容涵蓋各種交通模式和條件,包括城市公路、交通十字路口和t型路口。每段視頻以每秒25幀的速度錄制,分辨率為960*540像素。在UA-DETRAC數(shù)據(jù)集中,有超過14萬幀和8250輛車被人工標注,總記121萬物體的邊界框被標記。
實驗從UA-DETRAC數(shù)據(jù)集中挑出雨霧天場景圖片16000張,按照8:2比例劃分訓練集和驗證集。
訓練過程中,在選擇VOC預訓練權重的基礎上對YOLOv4算法進行超參數(shù)設定,并使用隨機梯度下降法對損失函數(shù)進行。實驗將初始學習率設定為0.001 ,動量參數(shù)為0.9 ,權重衰減因子為0.005 ,Batchsize設定為32,每個epoch迭代334次,總迭代次數(shù)16700次,并在每一輪epoch訓練開始時開啟Mosaic數(shù)據(jù)增強。整個訓練過程中的損失函數(shù)經(jīng)過50個epoch訓練后網(wǎng)絡已經(jīng)收斂,收斂時的訓練損失值為6.7144 。
5.4.1 評價指標
在目標檢測中,使用IoU的值衡量目標真實邊界框和預測邊界框的重合程度,計算方式為兩個區(qū)域的交并比。一般情況下,當IoU的值大于0.5 時認為成功預測到目標。平均精度(AP,Average Precision)通過精確度(P,Precision)和召回率(R,Recall)計算,并以平均精度AP(mAP)值作為算法檢測精度的綜合評價指標。一般來說,mAP值越高說明模型檢測精度越高,檢測效果越好。
P、R、AP、mAP計算公式如下:
式中,TP表示正確劃分為正樣本的個數(shù);FP表示錯誤劃分為正樣本的個數(shù);FN為錯誤劃分為負樣本的個數(shù)。
式中,∑APclasses表示所有類別AP值總和,Nclasses表示所有類別總數(shù)。
此外,算法檢測速度也是衡量算法性能好壞的重要指標。本文檢測速度計算公式如下:
5.4.2 實驗結果與分析
為驗證YOLOv4改進算法的性能,首先,將YOLOv4改進算法同原始YOLOv4算法在從UA-DETRAC數(shù)據(jù)集中挑出的由16000張雨霧天場景圖片組成的數(shù)據(jù)集上進行了實驗對比。其次,將不同的去霧算法,即SSR算法、MSR算法以及MSRCR算法同原始YOLOv4算法以及YOLOv4改進算法隨機組合之后,對各種算法的性能再次進行了對比。實驗結果如表1所示。
表1 不同算法檢測性能對比
實驗結果表明,相比于YOLOv4算法,YOLOv4改進算法在霧天車輛識別精度和速度上均有提升;但效果最好的是結合MSRCR的YOLOv4改進算法。其在所選數(shù)據(jù)集上,相較于直接使用YOLOv4,mAP提升了1.23 %,檢測速度提升到33.6 fps。
如圖7所示,7(a)為YOLOv4算法效果圖,7(b)為改進的YOLOv4+SSR算法效果圖,7(c)為改進的YOLOv4+MSR算法效果圖,7(d)為改進的YOLOv4+MSRCR算法效果圖。
圖7 各種算法實驗結果對比圖
本文結合去霧算法MSRCR對YOLOv4算法進行改進,在一定程度上能改善霧天車輛識別精度低、速度慢的問題。通過對輸入端圖片進行自適應縮放,加快網(wǎng)絡速度;其次,減少下采樣后的殘差結構減少網(wǎng)絡的參數(shù)量,在主干網(wǎng)絡上添加下采樣支路提升網(wǎng)絡表達能力。改進后的YOLOv4和去霧算法結合,使霧天車輛檢測精度依舊有不同程度提升,效果最好的去霧算法是MSRCR。但是,本文算法仍存在一定缺陷,在復雜場景下會出現(xiàn)少量漏檢,錯檢情況。在之后工作中,會繼續(xù)針對發(fā)現(xiàn)的問題研究改進本算法,進一步提高車輛的檢測性能。