王靖逸,劉樹惠
(武漢郵電科學研究院,湖北 武漢 430074)
隨著我國經濟的高速發展和社會的不斷進步,人均收入大幅增長,機動車的保有量也年年攀升。但是人們的道路安全意識卻沒有隨之提升,國內重大交通事故頻頻發生,道路交通安全已經成為當今社會的一個重要問題。而十幾年來GPU 等硬件性能的不斷提升以及近年來大數據技術和互聯網技術的快速發展,使得車載智能駕駛輔助系統甚至無人駕駛成為可能,進而可以使用這些新興技術來解決因駕駛時人為因素而導致的交通事故問題。交通標志識別是車載智能駕駛輔助系統與無人駕駛技術環境感知環節的必要部分,道路交通標志能夠被準確識別出來,并且能將識別出來的交通標志反饋至駕駛員、智能駕駛輔助系統和無人駕駛車輛決策端,對提升道路交通安全具有非常重要的意義[1]。
針對上述問題,該文提出了一種基于改進YOLOv4的交通標志識別方法,通過對YOLOv4 的主干CSPD arknet53 修改使其在速度與準確率方面達到平衡。通過實驗表明,其識別率與速度較原版均有一定提升,具有一定的應用價值。
YOLOv4 算法是基于YOLOv3 算法的改進算法,對原型YOLOv3 算法在諸多方面進行了改進,使其相對于原版算法在檢測速度和檢測精度兩方面均有較大提升。YOLO 系列算法(YOLOv1[2]、YOLOv3[3]、YOLO9000[4]等)最早是由Redmon 等人提出的,該算法主要思想是通過將整張圖片作為神經網絡的輸入,中間不進行通道信息交互,使其最終能直接在輸出層輸出所需的回歸后卷積、目標框位置信息和類別信息。不同于以Faster R-CNN[5]為代表的兩階段算法需要在中間層生成候選區域,單階段的YOLO算法采用直接回歸的思路,實現了端到端的結構,這使得算法在輸入的圖片大小為448×448 時,每秒幀數(Frames Per Second,FPS)能夠達到45,經過改進后的精簡版本Fast YOLO 的FPS 甚至可以達到155,其檢測速度遠遠快于Faster R-CNN。在這之后又陸續提出了YOLOv2 和YOLOv3 兩種升級版本算法,用于解決YOLO 算法存在的對小目標和密集目標檢測效果差以及泛化能力較弱這兩個主要問題。之后Alexey[6]繼續改進,誕生了YOLOv4。
YOLOv4 算法使用引入了CSP 模塊[7]的CSPD arknet53 替代了原本的Darknet53 作為特征提取層,換用Mish 激活函數[8]和Dropblock[9]。之后插入了SPP(Spatial Pyramid Pooling)模塊[10],并將FPN(Feature Pyramid Network)結構改為FPN+PAN(Path Aggregation Network)的結構[11]。最后將預測框由原先的nms 變為DIOU_nms。
在輸入端方面使用Mosaic 數據增強等方式對輸入進行改進。
為在目標檢測項目中實現高精度與實時性,模型縮放技術應運而生。初始的模型放縮技術主要更改卷積神經網絡骨干網絡的深度或寬度,隨后經由Huang[12]、Xie[13]、Tan[14]、Tian[15]等人對模型縮放技術在目標檢測領域的不斷研究,統合深度、寬度的復合縮放版本,新算法陸續出現。
為評估模型縮放的效果,需要對其進行定量分析。一般來說,當縮放比例增大時,要增加的定量成本越低,模型的效果越好;相對應地,當縮放比例減小時,要減少的定量成本越高,模型的效果越好。例如對于YOLOv3 的骨干網絡Darknet53 的Darknet 層進行評估,設其基本通道數為b,層數為k,那么其計算量為k×{conv1*1,b/2-conv3*3,b}。設其調整圖像大小、層數和通道數的縮放因子為α、β和γ,可得其原始計算成本如式(1)所示:

改變縮放因子α得到的計算成本為dα=α2d,改變縮放因子β得到的計算成本為dβ=β2d,改變縮放因子γ得到的計算成本為dγ=γ2d。分別縮放尺寸、深度和寬度會導致計算成本分別呈現出平方增加、線性增加和平方增加。
若此時將CSP 引入Darknet 層,可得其計算成本如式(2)所示:

可見相較于原始Darknet,減少了50%的計算成本。因此,將模型CSP 化能有效減少計算量,提升算法運行速度。
由上文的思路,將YOLOv4 CSP 化能獲得更平衡的速度與精度。
殘差模塊中的跨階段處理下采樣卷積計算過程在YOLOv4算法的原始主干框架CSPDarknet53的設計中并沒有包含進去,因此可以得到每個CSPDarknet 的計算成本,如式(3)所示:

對比式(3)及式(1)可知,主干框架CSPDarknet僅在k大于1 時才能獲得相較于YOLOv3 的主干框架Darknet 更佳的計算成本。而CSPDarknet53 中每個階段的剩余層數為1-2-8-8-4。為降低計算成本,將第一個CSPDarknet 階段轉化為Darknet 殘留層。
為進一步減少計算量以加快算法速度,接著對YOLOv4 頸部的PAN 結構進行CSP 化。原始PAN 體系結構主要是由不同特征金字塔的特征集成得到的,之后兩組反向的Darknet 殘差層被穿過而沒有建立快捷連接。將如圖1 所示的原始PAN 體系結構CSP 化,轉變成如圖2 所示的結構。新結構較原先結構,減少了40%的計算量[16]。

圖1 原始PAN體系結構

圖2 CSP化PAN體系結構
YOLOv4 的SPP 模塊位于頸部的第一個計算列表組的中間。因此,也將SPP 模塊放置到CSPPAN 體系結構的第一個計算列表組的中間。
為了提高算法精度,將原先CSPDarknet53 中每階段層數1-2-8-8-4 拓寬至1-3-15-15-7。
經過以上改進的完整結構圖如圖3 所示。

圖3 YOLOv4 改進版完整結構圖
采用清華大學與騰訊公司聯合開發的TT100K數據集來評估該文算法對于真實道路環境下交通標志的檢測性能。TT100K 數據集是進行了人工標注的騰訊街景地圖截取圖片的街道交通標志圖像數據集。其中,數據集的圖像分辨率為2 048 px×2 048 px,數據集標注類別數為221 類,數據集分為訓練集(6 107張)和測試集(3 073張)。為了增加數據集數據的多樣性,數據集覆蓋了多種天氣條件下和多種光照狀況下的交通標志圖像。
由于自身電腦硬件條件限制,無法使用原始圖像進行訓練、測試等,故先將圖像尺寸處理修改為608×608。同時由于數據集中各個交通標志數量并不均衡,因此實驗僅選取數據集中的45 類數量較多的交通標志圖片進行識別測試實驗。經過對45 類交通標志圖片進行隨機選取后的訓練集包括7 200張圖片,測試集包括1 972 張圖片,其中45 類交通標志如下:i2、i4、i5、il100、il60、il80、io、ip、p10、p11、p12、p19、p23、p26、p27、p3、p5、p6、pg、ph4、ph4.5、ph5、pl100、pl120、pl20、pl30、pl40、pl5、pl50、pl60、pl70、pl80、pm20、pm30、pm55、pn、pne、po、pr40、w13、w32、w55、w57、w59、wo。
該文實驗的硬件配置如表1 所示,搭配環境為Windows10、CUDAv11.1、cudnnv8.0.4.30、Tensorflow 2.4.0、OpenCV3.5.0。

表1 硬件配置
該文對算法模型進行性能評估的兩個指標分別為平均精度均值(mean Average Precision,mAP)和FPS。
平均精度均值(mAP)通過首先計算數據集中的每個類別的平均精度值(Average Precision,AP),接著再對數據集中所有類別的平均精度求取均值而得到[17-18],計算如式(4)所示:

其中,TP(True Positive)為真正例,表示預測為真實際也為真;FP(False Positive)為假正例,表示預測為真實際為假;FN(False Negative)為假負例,表示預測為假實際為真;Nc表示第c類劃分精確率P(Precision)和召回率R(Recall)的數量,p(rc)表示在c類召回率為rc時的p值。
另一個在實時檢測任務中極其重要的指標是FPS值,FPS值的大小與檢測速度快慢直接相關聯,某些任務應用場景對應用算法的FPS值有硬性要求。
在對原版YOLOv4 進行CSP 處理和層數縮放后,將改進版算法和原版YOLOv4 算法及YOLOv3 算法進行對比,對比結果如表2 所示。

表2 改進算法與其他算法對比
其中,IOU=0.5,在對YOLOv4 改進后,其mAP 值達到了86.52%,相較于原版和YOLOv3高出了2.6%和11.89%。輸入圖像數據(1 024×768)后其平均FPS 值達到了42.4,相較于原版和YOLOv3高出了4.1和5.0。
再對細化到每類交通標志的AP 值進行對比,具體結果如表3 所示。可見在每個類別上的檢測效果絕大部分優于原版YOLOv4 算法。

表3 與原版算法的AP值對比
該文提出一種基于YOLOv4 的改進算法,旨在解決交通標志識別任務中存在的檢測精度低和實時性較差的問題。改進算法通過將卷積網絡CSP 化降低了模型計算量,提升了檢測速度;通過擴展網絡主干寬度,提升檢測精度。實驗結果表明,該文改進方法真實有效,相比通常的交通標志識別算法在檢測精度和速度方面均有提高,具有一定的實用性。但是現實場景相較數據集圖像更為復雜多變,未來可以進一步加入更多復雜情形下的交通標志圖片拓展數據集,并在算法精度方面進一步優化提升。