姚雨含 劉慧舟
(海南大學信息與通信工程學院,海南 ???570100)
在無人駕駛中,對于交通燈交通標志的識別是智能環(huán)境中的重要一環(huán)。準確地識別出交通燈的信息,并且對傳輸信號進行及時處理,對于保障自動駕駛的安全性和可靠性具有極其重要的意義。為此,本文基于YOLOv5對交通燈的識別展開研究。通過圖像采集系統(tǒng)收集圖像,構建數(shù)據(jù)集,對交通燈的顏色進行識別并提高準確度[1]。
目前對于交通燈的識別可以分為傳統(tǒng)的圖像處理和基于視覺的目標檢測方法。圖像處理主要有模糊隸屬度函數(shù)、歸一化法、殘差法、k均值聚類法、高斯分布建模方法等,他們檢測圖像顏色的方法多為圖像處理的方法,主要有對圖像進行降噪預處理、顏色空間閾值分割、通過形狀特征過濾等步驟[2]?;谟嬎銠C視覺的目標檢測方法可以分為兩類:傳統(tǒng)的目標檢測算法和基于深度學習的目標檢測算法。傳統(tǒng)的目標檢測算法主要是通過逐步滑動窗口對整幅圖像進行遍歷,選取目標框,再利用方向梯度直方圖(Histogram of Oriented Gradient,HOG)、尺度不變特征變換(Scale Invariant Feature Transform,SIFT)等方式對目標框提取特征,最后結合SVM、Adaboost分類器等對目標進行分類。而基于深度學習技術的目標檢測算法,通過將整幅圖像作為神經網絡的輸入,直接在輸出層通過回歸得到目標框的位置和種類等信息,有著更高的檢測速度。與傳統(tǒng)的檢測方法相比,其檢測結果更好,泛化能力更強,更能夠滿足自動駕駛汽車對可靠性和實時性的要求。
基于這些特點,本文采用基于深度學習的方法,對路面交通燈進行檢測和識別,致力于構建一個更加智能化的路面信息系統(tǒng)[3]。
在系統(tǒng)中可采用光學裝置和非接觸的傳感器裝置,通過鏡頭對目標物體的圖像進行采集,然后將采集到的信號傳遞到系統(tǒng)處理器,由此處理器對傳遞過來的圖像進行識別與分類此時的交通燈情況,并針對這些情況發(fā)送控制指令至汽車的控制系統(tǒng)。汽車控制系統(tǒng)可以控制汽車啟動發(fā)動機運轉、制動等,使汽車根據(jù)交通燈情況進行行駛,從而保證無人駕駛的安全性。如圖1所示,根據(jù)實際應用設計出應用系統(tǒng)。
圖1 系統(tǒng)結構圖
為了準確檢測和識別交通燈,需要使用合適的數(shù)據(jù)集來進行訓練。常用數(shù)據(jù)集有Bosch Small Traffic Lights Dataset(BSTLD)和Lara數(shù)據(jù)集,Bosch數(shù)據(jù)集圖像采集自德國,是目前國內外公開的最大的有標注的交通燈數(shù)據(jù)集;而Lara數(shù)據(jù)集來自巴黎,只含單一的交通燈標簽且交通場景復雜,分辨率較低。本次設計中試驗的數(shù)據(jù)集也部分來自于自主制作的交通燈圖像數(shù)據(jù)集。
2020年YOLOv5算法出現(xiàn),其設計了馬賽克數(shù)據(jù)增強、Focus結構等,使模型結構變得更加輕量化,對試驗設備的資源要求非常友好,同時進一步平衡了檢測精度和速度。
YOLOv5模型根據(jù)其深度、寬度的差異可以分為四個不同規(guī)模的模型:YOLOv5nano、YOLOv5samll、YOLOv5middle以及YOLOv5large。本文以YOLOv5s為例進行說明,其他版本模型都是在YOLOv5s的基礎之上對網絡進行加深和擴展,其結構原理都與YOLOv5s類似。
YOLOv5s的網絡結構主要由三部分組成,即Backbone、Neck和Prediction部分。
第一,Backbone(骨干網絡)包含了Focus、CBL、CSP和SPP四種模塊。首先,輸入大小為640×640×3的圖片,通過Focus模塊進行切片處理,輸出大小為320×320×12的特征圖,以此來減少網絡的計算量,提升選擇區(qū)域的特征提取速度并通過Concat將切片圖像的高度和寬度整合,增加輸入圖像的通道數(shù)。其次,切片后的圖像通過CBL模塊來提取特征,在特征提取的過程中,使用CSP殘差結構來優(yōu)化網絡中的梯度信息,減少了推理計算量,加快網絡的計算速度。最后,由SPP模塊通過多次池化,完成對高層次語義特征的提取與融合。將不同尺寸的輸入轉變?yōu)橄嗤笮〉妮敵?,解決了輸入圖像尺寸不統(tǒng)一的問題,提升模型精度。
第二,Neck(頸部結構)主要是進行特征融合,Neck部分使用了ReLU激活函數(shù),采用路徑聚合網絡(Path Aggrega-tion Network,PANet)結構融合不同尺寸的特征圖。先通過從上到下對圖片進行上采樣,將提取到的特征與主干網絡中提取到的特征進行融合,添加一個自下向上的特征金字塔結構,對圖片進行降采樣,將提取到的所有特征進行融合。通過PANet網絡結構可以彌補并融合強定位信息,最終將輸出用于Head的檢測中。
第三,Prediction(輸出端)使用GIoU作為目框的損失函數(shù),通過非極大值抑制(NMS)來篩選目標框。YOLOv5s結構圖如圖2所示。
圖2 YOLOv5s結構圖
與YOLOv4系列相同,YOLOv5系列使用了Mosaic數(shù)據(jù)增強的方式。將1~4 張圖片進行隨機裁剪、縮放后,再隨機排列拼接形成一張圖片,在豐富了檢測數(shù)據(jù)集的同時,通過隨機縮放增加了很多小目標樣本,使網絡具有更好的魯棒性,增加了網絡訓練的速度,同時降低了GPU的占用。YOLOv5系列新增了自適應錨框,在之前的兩個版本中,訓練不同的數(shù)據(jù)集初始錨框的值是通過運行單獨的程序得到的;但YOLOv5中將此功能加入到了代碼中,每次訓練自適應地計算得到不同訓練集中的最佳錨框值,從而幫助網絡快速收斂。
與YOLOv3相同,YOLOv5仍然利用 K-means 方法進行預測框的預測,依據(jù)預測框中心位置、左上角的相對偏移進行邊界回歸,進行實際框的計算
式中,mx、my、mw、mh為預測框的中心點坐標、寬度、高度;nx、ny為卷積殘差操作所得特征圖單元格左上角坐標;、ty表示預測框中心點相對于網格最左上角坐標的偏移量;tw、th表示預測框的寬高相對于錨框寬高的相對比例;、ph為錨框的寬度和高度。
YOLOv5的損失函數(shù)由預測框位置損失函數(shù)、目標置信度損失函數(shù)和預測框目標分類函數(shù)組成
式中,Lbox——預測框位置損失函數(shù);
Lobj——目標置信度損失函數(shù);
Lcls——預測框目標分類函數(shù)。
通常情況下用PR曲線和AP值來評價一個該模型的性能。
試驗采集了不同時間、不同天氣情況、不同交通道路的交通燈圖片3 000張,選取其中2 500張進行訓練,剩余的500張作為預測集。使用Python語言進行程序的編寫。主要配置參數(shù):在最優(yōu)方法中動量因子(momentum)設置為 0.9,學習的效率設置為0.001,更新間隔(batch)為32,訓練樣本數(shù)(subdivisions)設置為 16,權重衰減因子(decay)設置為0.000 5。對每次學習后的參數(shù)按照比例進行降低,以防止過擬合(該參數(shù)越大,對過擬合的抑制作用越強),迭代終止條件(max_batches)設置為20 200。本次試驗采取了兩種學習的方案,分別對比它們的學習效果。
方案一:不使用steps策略,從0~30 000次迭代統(tǒng)一使用0.001的學習率。
方案二:使用steps策略,將整個過程分為三個階段,第一、二、三階段迭代次數(shù)分別為16 000次、8 000次和6 000次。在16 000次迭代和24 000次迭代將學習率調整為第一階段的0.5倍和第二階段的0.2倍,即調整為0.000 5和0.000 1。
經過訓練,比較方案一和方案二在不同迭代次數(shù)下的平均損失如表1所示,并繪制平均損耗曲線(Avg Loss Curve)和平均交并比曲線(Avg IOU Curve),同時對比加入目標跟蹤(DeepSort)和不加入的區(qū)別。分別如圖3、圖4和圖5所示。
表1 兩種方案迭代次數(shù)與平均損失
圖3 平均交并比曲線
圖4 平均損耗曲線
圖5 加入DeepSort后的Loss曲線
對比方案一與方案二訓練結果可知:
方案一的loss值在迭代24 000次以后的變化非常不明顯,24 000次迭代到30 000次迭代的Avg Loss只下降了15.40%,且逐漸趨于一個值不再下降,最后Avg Loss值為0.028也略大。且觀察其Avg Loss曲線發(fā)現(xiàn),在接近30 000次迭代時曲線斜率趨近于0,過于平緩幾乎不再變化。
方案二的loss值在迭代24 000次以后的變化較為明顯,24 000次迭代到30 000次迭代的Avg Loss下降了33.20%。最后Avg Loss值為0.019較方案一也明顯更理想。且觀察其Avg Loss曲線發(fā)現(xiàn),在接近30 000次迭代時曲線并未趨于平緩。
對比兩種方案發(fā)現(xiàn),發(fā)現(xiàn)采用steps策略可以更高效地降低Avg Loss值,避免Avg Loss過早地趨于平穩(wěn)不再下降。
將訓練模型得到的模型權重best.pt用來做測試,輸入測試所需的命令行,將待測試的圖片放入文件夾中并輸入在命令中進行測試,改進前和改進后對比結果如圖6、圖7所示。
圖6 改進前的檢測結果
圖7 改進后的檢測結果
由改進前后的檢測結果圖可以看出,采用了step學習的檢測,能夠更準確地區(qū)分方向和數(shù)字的區(qū)別,提高了交通燈識別的準確性。固定交并比(IoU)閾值=0.5,改變置信度閾值,計算得到不同的Precision-Recall點。連接所有的點,得到了PR曲線,求PR曲線下的面積就是該類別的平均精準度(mAP)。識別結果的PR曲線如圖8所示??梢缘贸鲈撃P偷男阅芰己?。
圖8 識別結果的PR曲線
為了提高自動駕駛技術的可靠性和準確性,設計了一套基于YOLOv5的交通燈識別系統(tǒng),該系統(tǒng)通過對數(shù)據(jù)集進行訓練。調試合適的參數(shù),對比了使用step學習和不使用step學習的兩種方案,得出使用step學習能夠提升識別的準確性。本文使用的YOLOv5算法相較于傳統(tǒng)的識別方法,實時性和準確性都有了很大的提高,有利于汽車無人駕駛技術和無人駕駛的發(fā)展。