南京理工大學電子工程與光電技術學院 劉 磊
交通信號燈的在線檢測與識別是無人駕駛領域中的重要研究內(nèi)容,文章給出了一種基于YOLOv4的信號燈檢測與識別方法,該方法以YOLOv4目標檢測算法為基礎,結(jié)合MoblieNetV3的特征提取網(wǎng)絡,對算法進行輕量化處理。采用自制的信號燈數(shù)據(jù)集對該網(wǎng)絡進行訓練和測試,結(jié)果表明,文章提出的算法識別效果較好,平均準確率為89.9%,高于原YOLOv4網(wǎng)絡的平均準確率85.6%,檢測速度達到37FPS,高于原YOLOv4網(wǎng)絡的29FPS,滿足實時檢測的要求。實驗表明,改進后的網(wǎng)絡模型能在保證檢測準確率的同時提高檢測速度,有效降低模型參數(shù)量,具有一定的應用價值。
近年來,交通信號燈的檢測技術被逐步應用于無人駕駛領域,國內(nèi)外很多研究人員對信號燈的檢測與識別方法進行了相關研究。目前,隨著深度學習技術在各行各業(yè)的廣泛應用,基于深度學習的目標檢測算法漸漸代替了傳統(tǒng)的目標檢測方法,已成為目前的主要檢測方法。He等人設計出了SPP-net,通過區(qū)域共享卷積計算解決了R-CNN中重復計算卷積特征引起的檢測速度較慢的問題。Ren等人提出了RPN網(wǎng)絡,利用CNN來生成多種類型的候選區(qū)域,減少了網(wǎng)絡模型的計算量。Ross Girshick參考RPN的思想,進一步提出了Faster R-CNN網(wǎng)絡模型。Dai等人提出了R-FCN網(wǎng)絡。R-FCN模型改進了Faster R-CNN的特征提取網(wǎng)絡,并將ROI Pooling的位置放在了卷積層的后邊。
為了進一步提高算法的檢測速度,Redmon等人提出YOLO。YOLO網(wǎng)絡能夠在一次預測中得到多個目標的位置和類型,使檢測速度大大提升。為了提高YOLO的精度,YOLOv2被提出。YOLOv2對卷積層進行批處理歸一化,并加入錨框、多尺度訓練和細粒度特征等技術,使檢測精度得到提升。然而YOLOv2對于一些小尺度目標,比如交通信號燈,其檢測準確率依然有較大的提升空間。為克服這一問題,在YOLOv2的基礎上,YOLOv3被提出。YOLOv3使用了一種快速連接結(jié)構(gòu)來提升檢測準確率,并且采用了多尺度預測方法以提高對于小目標的檢測效率。YOLOv4是基于YOLOv3的改進算法,對檢測的速度與準確度進行了很好的平衡。
文章利用YOLOv4網(wǎng)絡框架速度快,精度高的優(yōu)點,將輕量級神經(jīng)網(wǎng)絡MobileNetV3與YOLOv4算法結(jié)合,提出一種改進的MobileNetV3-YOLO-V4交通信號燈檢測算法,通過實驗與YOLOv4算法經(jīng)過比較,結(jié)果說明文章提出的網(wǎng)絡結(jié)構(gòu)能夠在保證檢測速度的同時提高識別準確度。
YOLOv4網(wǎng)絡主要由三個部分構(gòu)成,分別是主干網(wǎng)絡、頸部網(wǎng)絡和頭部網(wǎng)絡。其中,主干網(wǎng)絡采用CSP與Darknet53的結(jié)合網(wǎng)絡CSPDarknet53,CSP是一種新型主干網(wǎng)絡,具有輕量化、精度高的優(yōu)點,可以減少所需的計算成本。Darknet53是YOLOv3的主干網(wǎng)絡,YOLOv4將CSP網(wǎng)絡與其結(jié)合形成CSPDarknet網(wǎng)絡。并且改進了激活函數(shù),使用Mish激活函數(shù)最終形成了CSPDarknet53網(wǎng)絡。頸部網(wǎng)絡為SPP和PANet網(wǎng)絡。SPP網(wǎng)絡主要是負責將CSPDarknet53卷積后的特征歸到同一大小。PANet網(wǎng)絡有助于提高小目標檢測的準確度。頭部網(wǎng)絡則負責最終的結(jié)果預測。
在YOLOv4網(wǎng)絡中,為了對數(shù)據(jù)進行增強,采用了mosaic方法,首先將4張訓練圖像進行縮小,然后將這些圖像隨機組合成一張新的圖像,極大地豐富了訓練的數(shù)據(jù)集,與此同時在縮放的過程中為圖片新增了許多小目標,提高了模型的魯棒性。此外,YOLOv4改進了YOLOv3的損失函數(shù),使用CIOU Loss損失函數(shù)替換原來的IOU損失函數(shù),提高了預測框的回歸速度和準確度。
原YOLOv4模型采用CSPDarknet53網(wǎng)絡作為特征提取網(wǎng)絡,會使得模型整體較大,檢測速度較慢,對硬件的要求較高。本文基于輕量化網(wǎng)絡思想,采用MobilenetV3作為特征提取網(wǎng)絡,對YOLOv4算法模型進行改進,降低網(wǎng)絡的參數(shù)數(shù)量,提高檢測效率。
MobileNetV3是在MobileNetV1和MobileNetV2基礎上的改進網(wǎng)絡。MobileNetV3結(jié)合了深度可分離卷積思想以及具有線性瓶頸的逆殘差結(jié)構(gòu)。此外,MobileNetV3增加了部分深度可分離卷積和SENet網(wǎng)絡。并且使用hswish作為激活函數(shù),減少了計算量,提高了網(wǎng)絡整體性能。
為了將MobileNetV3網(wǎng)絡與YOLOV4網(wǎng)絡框架相結(jié)合,首先需要將MobileNetV3結(jié)構(gòu)中最后的四層刪掉,以滿足尺寸銜接的要求,再與YOLOV4網(wǎng)絡框架相結(jié)合并替換掉原來的特征提取網(wǎng)絡,最終得到基于MobileNetV3-YOLOV4算法的目標檢測模型,其結(jié)構(gòu)如圖1所示。

圖1 MobileNetV3-YOLOV4結(jié)構(gòu)
本實驗用到GPU顯卡型號為RTX2080Ti,顯存為11GB,使用的編譯語言和框架分別為python3.8和pytorch。操作系統(tǒng)為Ubuntu16.04。
目前,國內(nèi)外有關信號燈的數(shù)據(jù)集比較少,各個數(shù)據(jù)集的圖片和標注差異較大。國內(nèi)的信號燈數(shù)據(jù)集太少,不足以用于模型訓練,國外的數(shù)據(jù)集由于地域差異,也不能直接使用。因此,本文決定采用自制的信號燈數(shù)據(jù)集。圖片數(shù)據(jù)來源為通過標注采集的交通場景圖像獲取。數(shù)據(jù)集圖片總計9800張,采集的地點城市包括:北京、上海、蘇州、南京、深圳等地,包含不同場景,不同時間的交通場景數(shù)據(jù)。將采集得到的數(shù)據(jù)使用labelme軟件進行標注,標注的類別為箭頭和圓形交通信號燈其中圓形信號燈三類,左轉(zhuǎn)箭頭信號燈兩類,直行箭頭信號燈兩類,右轉(zhuǎn)箭頭信號燈兩類,共9類。標注完成后按照PASCALVOC數(shù)據(jù)集的格式進行存儲,具體類別和數(shù)量如表1所示。

表1 自制交通信號燈數(shù)據(jù)集分布表
采用9:1的比例劃分訓練集和測試集,隨機抽取8820張圖像作為訓練集,980張圖像作為測試集。
評估指標采用精度(Precision)、召回率(Recall)、平均準確率(mAP)和FPS(Frame Per Second)作為不同目標檢測算法在信號燈檢測任務上的評價指標。精度P=TP/(TP+FP),召回率R=TP/(TP+FN),其中TP表示真正例的樣本數(shù),F(xiàn)P表示假正例的樣本數(shù),F(xiàn)N表示假反例的樣本數(shù)。準確率(AP)為PR曲線下的面積值,平均準確率(mAP)為所有目標的準確率取平均值。FPS即模型每秒內(nèi)能夠處理的圖片數(shù)目。
實驗過程中隨機選取90%的數(shù)據(jù)集作為訓練集進行訓練,剩下的作為測試集。訓練過程中設置初始學習率為0.0001,batch size設為16,總訓練次數(shù)設置為100。
實驗過程中選取了YOLOv4與MoblienetV3-YOLOV4網(wǎng)絡進行效果對比。圖2是在當前數(shù)據(jù)集下用相同方式訓練相同周期的YOLOv4算法、和本文的MoblienetV3-YOLOV4算法的最終效果對比。

圖2 算法效果對比圖
通過比較兩種算法的測試結(jié)果,原YOLOv4算法相比于MoblienetV3-YOLOV4算法對于交通信號燈的檢測能力稍弱,對部分交通信號燈存在著檢測錯誤或者檢測遺漏問題,與此同時檢測框?qū)π盘枱舻亩ㄎ幌鄬碚f不是很精確。而MoblienetV3-YOLOV4算法的檢測精度則稍高一些。
MoblienetV3-YOLOV4算法在自制的交通信號燈數(shù)據(jù)集上的Map達到89.9%,各個型號交通信號燈的mp值見圖3。可以看出,MoblienetV3-YOLOV4算法對交通信號燈數(shù)據(jù)集的9種信號燈檢測精度都高于YOLOv4模型。其中對紅色直行箭頭(red straight)類的檢測準確度最高,達到96.1%,對綠色直行箭頭(green straight)檢測準確度稍低。

圖3 具體準確率對比
表2所示為YOLOv4算法與本文的MoblienetV3-YOLOV4算法在同一訓練條件下對交通信號燈數(shù)據(jù)集進行訓練的結(jié)果對比。兩種算法均利用了ImageNet數(shù)據(jù)集下的預訓練權(quán)重作為權(quán)重初始化方式。由表2可見,本文的MoblienetV3-YOLOV4檢測算法在自制的交通信號燈數(shù)據(jù)集上的mAP達到89.90%,高于YOLOv4的85.60%。檢測速度也快于YOLOv4。

表2 不同模型信號燈檢測結(jié)果對比
結(jié)語:文章在YOLOv4算法基礎上提出的MoblienetV3-YOLOV4交通信號燈檢測算法,能夠有效地對信號燈目標進行檢測與識別,并通過相關實驗驗證了所設計網(wǎng)絡模型的可行性及有效性,最終檢測的平均準確率達到89.9%,在GPU下速度達到37fps。后續(xù)將考慮通過構(gòu)建神經(jīng)網(wǎng)絡直接預測信號燈狀態(tài)模塊來進一步提升交通信號燈識別的準確率。