◆萬泗鑫 李丹
基于YOLOV4的車輛檢測系統(tǒng)
◆萬泗鑫 李丹
(四川大學錦城學院 四川 611731)
本文針對多場景下的道路檢測算法系統(tǒng)識別類型偏少和識別數(shù)量不精準等問題,提出了一種基于YOLOv4算法的輕量級的目標檢測方法,模型包含了大部分常見車輛類型。本文方法MAP為90.0%。采用7:3的分配方法,數(shù)據(jù)集共2512張圖片。擁有較高的車輛識別精度和視頻流暢度,同時有效解決了大型道路交通場景下的車輛遮擋位置問題和小距離目標車輛檢測時的問題,具有非常好的實際技術應用研究價值。
深度學習;目標檢測;交通檢測;YOLOv4
隨著計算機硬件性能的不斷提高,對GUP性能要求較高的人工智能(Artificial Intelligence)也在快速發(fā)展,其中一些人工智能的算法也被廣泛應用于眾多場景。城市化不斷向前推進,許多地圖應用也紛紛到來,大部分應用為了計算車流量或判斷當前道路是否擁堵時,采用的基本上都是通過GPS對當前道路的用戶使用量作為判別標準,但如果一輛車上有多人同時使用,就會造成判別不準確等情況。所以提出基于YOLOV4的檢測系統(tǒng),可以很精確地檢測到車輛用于統(tǒng)計其數(shù)量,也可以對整個道路的交通進行優(yōu)良性的評估,同時可以輔助進行交通違法事件的判別。
目標檢測很多計算機視覺基礎任務,它能為識別精細類別提供可靠的信息?,F(xiàn)在的目標檢測算法分為一步(one-stage)和兩步(two-stage)兩種,two-stage的兩步目標檢測算法一般都需要兩個步驟相互結(jié)合才能進行計算和完成,需要先分別找出目標候選區(qū)域,然后再通過對齊目標進行劃分,如R-CNN[1]、Fast R-CNN[2]等R-CNN系列的算法;與之相對的是one-stage檢測,其不需要單獨尋找候選區(qū)域,典型的有算法有SSD和YOLO。YOLOV4目標檢測算法是在YOLO目標檢測架構(gòu)的基礎上,采用了近些年CNN領域中最優(yōu)秀的優(yōu)化策略,從數(shù)據(jù)處理、主干網(wǎng)絡、網(wǎng)絡訓練、激活函數(shù)、損失函數(shù)等各個方面都有著不同程度的優(yōu)化。YOLO非???,能夠流暢地處理各種實時視頻,且處理精度幾乎是以前實時系統(tǒng)的兩倍多。
YOLOv4算法是 Alexey Bochkovskiy等人在2020年4月所提出,整個框架可以分為四個部分,第一個部分Input主要用于輸入圖片以用于訓練,第二部分Backbones中使用了CSPDarknet53網(wǎng)絡來進行特征的提取,激活函數(shù)選擇了Mish激活函數(shù),大大提高了整個網(wǎng)絡的性能。在Neck部分則由最大池化方法的空間池化(SPP)和實例分割框架下的路徑聚合網(wǎng)絡(PANet)結(jié)構(gòu)組成,對特征進行增強和加工。第四部分Head用于對生成的三個特征圖進行預測。
YOLO(You Only Look Once)算法是一種基于深度學習的目標檢測算法,不再需要預先提取。它將一張?zhí)囟ù笮〉膱D片分成m×m個正方形網(wǎng)格,圖片中如果有一個物體的中心處于一個劃分出的網(wǎng)格中,那么這個方形網(wǎng)格就負責對中心點的物體進行預測,通過一個網(wǎng)格就可以輸出它的信息,它對非自然圖像物體的檢測效果遠遠高于DPM和RCNN系列檢測方法。YOLOV2是在YOLO的基礎上又一次進行了修改,主要是為了減少和解決YOLO的定位精度和召回率上的誤差。YOLOv2是基于darknet19分類模型,使用全局數(shù)據(jù)平均池化,同時使用Batch Normilazation可以讓訓練變得更穩(wěn)定,使模型更加規(guī)范化。YOLOV3采用darknet53網(wǎng)絡作為主干,使用殘差結(jié)構(gòu)加強主干提取特征的能力。而YOLOV4算法主要通過CSPDarknet53網(wǎng)絡作為主干來提取圖片的特征信息,利用殘差網(wǎng)絡分別進行兩次上采樣和兩次下采樣,對特征信息進行各種融合,使用SPP結(jié)構(gòu)對不同尺度的最大池化后進行堆疊,最終得到特征目標的類別和位置。YOLOV4網(wǎng)絡結(jié)構(gòu)框圖如圖1所示。由圖可知,YOLOV4的頸部采用了路徑聚合網(wǎng)絡(PAN)[3]以及特征金字塔(FAN)[4]的結(jié)構(gòu),改善了FPN網(wǎng)絡在傳遞過程中導致的特征丟失問題。而其頭部,則繼續(xù)使用了YOLOV3中的YOLO-head。同時為了降低訓練的硬件要求,YOLOV4引入了馬賽克增強和對抗的訓練方法。
自對抗訓練(Self-Adversarial Training)主要是指在一張圖片上,神經(jīng)網(wǎng)絡可以反向地對其進行更新,對圖片的改變進行擾動,反向更新后再來進行圖像的風格化,這也是圖像風格化的主要方法和手段。
Mosaic(馬賽克)法則是一種將多張隨機訓練數(shù)據(jù)圖片組合成一張訓練圖片的圖片鑲嵌的隨機數(shù)據(jù)圖片增強遮擋方法,使用該增強方法不僅可以直接進行隨機圖片遮擋,同時可以豐富訓練圖片的內(nèi)部信息。其主要好處之一是可以允許目標檢測器找到除了上下文以外的其他目標,增強了該模型的魯棒性。此外,在每一層從多個不同層的圖像節(jié)點進行批計算處理時對標準化后的計算均無損失,這也減少了對大的mini-batch進行size處理的計算需求。
圖1 YOLOv4網(wǎng)絡結(jié)構(gòu)
在很多關于機器學習等新技術的專題研究中,往往都會把大家的所有注意力都全部集中到如何快速去正確尋找一個優(yōu)秀的激活函數(shù)上。選擇一個適合的激活函數(shù)既可以更有效、更精準地進行梯度的傳播,但也不會因此而造成太多的不必要的計算。2010年,Nair和Hinton兩人共同提出的ReLU從根本上解決一些傳統(tǒng)激活函數(shù)(tanh和sigmoid)中經(jīng)常遇到的關于梯度消失的問題。隨后,提出了LReLU、PReLU、縮放指數(shù)線性單元(SELU)和Mish[5]等函數(shù),這些函數(shù)經(jīng)常也被廣泛用于解決和梯度消失的相關問題[9]。其中,Mish激活函數(shù)可以讓進入神經(jīng)網(wǎng)絡的信息更好,在負值時也可以讓比較小的負梯度進入,保證信息不會中斷,從而得一個比較好的泛華能力和準確性。
在對于模塊集成方面,以前主要是通過跳過連接(skip connection)或超列(hyper-column)來將低級別的物理功能直接集成到高級語義功能。而隨著FPN等多尺度預測方法已經(jīng)得到廣泛普及,許多集成不同功能金字塔的輕量級模塊也已經(jīng)被提出,類模塊包括SFAM[6]、ASFF[7]和BiFPN[8]。SFAM的主要理念是在多尺度連接功能上使用SE模塊執(zhí)行通道級權(quán)重。至于ASFF,它使用soft-max作為點位重配,添加不同比例的功能地圖。在BIFPN中,建議采用多投入加權(quán)剩余連接,執(zhí)行比例分級重新加權(quán),然后添加不同比例的特征地圖[9]。
在對圖片進行預測時,會對每一個網(wǎng)格進行條件概率的計算,并會在邊界框中輸出它的類別信息和置信度,但當一個物體被多個預測框框住時,就要求我們進行計算預測的邊框與它真實邊框之間的一個交集和其并集的綜合比值,也就是計算交并比IoU(Intersection over Union)。由于MSE損失函數(shù)將檢測框中心點坐標和寬高等信息作為獨立的變量對待,但實際上它們之間是有關系的,所以使用IOU損失代替MSE損失。
在YOLOv4中,對Darknet53進行了一些改進。這些改進借鑒了CSPNet,CSPNet解決了Backbone中梯度信息重復的問題,它將梯度的變化集成到特征圖中,從而大大降低了計算量,在充分保證運行速度和計算準確率的同時,也大大縮小了傳統(tǒng)模型梯度尺寸圖的大小。
本文利用YOLOV4算法來對車輛類型進行檢測,主要根據(jù)檢測類型將車輛大致分為四類:car(汽車)、bus(公交車)、bicycle(自行車)和motorbike(摩托車/電動車)。在訓練之前收集提取了需要的圖片并且通過labelImg工具對沒有標簽的圖片進行標注,制作成了相應的數(shù)據(jù)集,并送入網(wǎng)絡進行訓練。數(shù)據(jù)集共有2512張圖片,且訓練集有1884張圖片,測試集628張圖片,分配比例約為7:3。
本實驗使用的操作系統(tǒng)為Windows10,在Google Colab平臺上進行,硬件加速器選擇GPU,運行規(guī)格設置為高RAM,CUDA版本11.0,并且將最大學習效率設為0.001,衰減系數(shù)設為0.005,并且可以在中途終端訓練后繼續(xù)進行訓練。
實驗檢測圖如圖2和圖3所示,基本上能很好地檢測出道路上的車輛情況,并且被遮擋也能很好地檢測出來,效果很好并且準確率高。且本模型對于道路較遠處的小目標進行檢測也能得到一個較好的結(jié)果,說明本模型能夠很好地解決道路下車輛相互遮擋的問題和對小目標的檢測問題。
圖2 汽車
圖3 摩托
模型訓練Loss函數(shù)收斂情況如圖4所示,圖中展示了Loss函數(shù)的收斂情況隨著迭代次數(shù)的不斷增加而不斷變化的情況。由圖片可以清楚地看出,模型在迭代2400次時趨于收斂,同時MAP也達到了90.0%,速度可達到53FPS,對于實時檢測也能夠很好地進行。
車輛檢測算法可以很好地對交通道路上的交通工具進行檢測,是對某個路口或景點進行流量檢測的一個非常好的工具。同時也可以對機動和非機動車的行駛進行一個很好的識別,可以用來判斷是否違反了其行駛的交通規(guī)則。
優(yōu)秀的交通目標檢測更是智能交通管理和安全檢測中的關鍵技術,同時也是實現(xiàn)多樣化智能交通管理和智能駕駛的一個基礎。隨著電動汽車的不斷推廣和普及,智能駕駛的研究也一直在進行,優(yōu)秀的交通道路目標檢測無疑是自動駕駛技術的一個良好的基礎,所以車輛檢測算法具有非常重要的研究價值。
本文針對多場景下的道路檢測算法系統(tǒng)識別類型偏少和識別數(shù)量不精準等問題,提出了一種基于YOLOv4算法的輕量級的目標檢測方法,模型包含了大部分常見車輛類型,能夠很好地解決道路下車輛被遮擋和對遠處車輛的檢測問題。使用YOLOV4網(wǎng)絡來進行目標檢測,采用多樣化的數(shù)據(jù)集,收集了許多質(zhì)量較高的圖片,很好地提高了模型的精準度,但如果能夠增加數(shù)據(jù)集的數(shù)量,筆者相信經(jīng)過一定的訓練,模型的各個方面都會有提升,接下來也會繼續(xù)收集數(shù)據(jù)集,對模型進行優(yōu)化。
圖4 損失函數(shù)圖像
[1]胡習之,魏征,周文超.融合Camshift與YOLOv4車輛檢測算法[J].機床與液壓,2021,49(11):70-74.
[2]王瀅暄,宋煥生,梁浩翔,等.基于改進的YOLOv4高速公路車輛目標檢測研究[J].計算機工程與應用,2021,57(13):218-226.
[3]楊英彬,郭子彧,蔡利民.YOLOv4的車輛檢測方法研究[J].電子世界,2021(05):80-81+87.
[4]徐子睿,劉猛,談雅婷.基于YOLOv4的車輛檢測與流量統(tǒng)計研究[J].現(xiàn)代信息科技,2020,4(15):98-100+103.
[5]張杰,向勇,李寶志,等.車輛檢修工業(yè)4.0基礎初探[J].鐵道車輛,2021,59(03):110-113.