倪新帥,李勝
(610100 四川省 成都市 一汽-大眾汽車有限公司)
乘用車尾部燈光種類多且不容易觀測,尾部燈光失效后用戶難以發現,對行駛安全構成風險。因此,出廠時保障尾部燈光100%被檢測具有重要意義。目前整車制造廠主要采用人工目測檢查尾部燈光,由于尾部燈光類型復雜且不易觀測,需要耗費大量人力資源和時間成本,存在一定漏檢風險。
車輛尾部燈光檢測要測試所有尾部信號燈的功能完整性、能否正常關閉和開啟。利用視覺識別技術檢測汽車燈光的方法日趨多樣,田強[1]提出了、一種基于圖像的車輛尾燈檢測識別方法,使用參數優化的最小二乘支持向量機對得到的車尾燈光狀態進行判別;聶美玲[2]提出將方位角模糊技術與凹點檢測技術相結合,對車輛燈光進行檢測和分割,提高了復雜環境下車燈提取的準確率,并將車燈的運動特征和幾何特征相結合,應用到車燈配對的環節,降低了車燈配對的漏配率和誤配率;李龍等[3]對YOLOv3 網絡進行優化,舍去Darknet53 的最后一個殘差單元,同時增加小尺度特征提取殘差單元的重復次數,提升了尾燈檢測的準確率和檢測速度;劉京凱[4]采用優化的YOLOv3 目標檢測網絡訓練和識別尾燈區域是否點亮,并結合尾燈閃爍頻率,完成對前方車輛尾部燈光燈語的研究。
本文以某車型尾部燈光為研究對象,首先采集該車型不同狀態下的尾部燈光圖片,篩選出有效圖片后,對圖片進行人工標注制作數據集,并對Rear-Light 數據集進行數據增強。基于YOLOv7 對數據集進行學習,建立尾部燈光識別模型,利用傳感器、轉換器、攝像頭和PC 等硬件搭建尾部燈光自動檢測系統,實現尾部燈光檢測的自動化和智能化,對提高生產效率和產品質量有重要現實意義。
目前基于深度學習的目標檢測算法主要分為2大類:(1)兩階段法(two-stage approach),如基于候選區域(region proposals)R-CNN 系列的算法[5];(2)一階段法(one-stage approach)[6],如現在熱門的YOLO 和SSD 算法。兩階段法主要是先通過啟發式方法等操作得到一系列稀疏的候選框,然后再對候選框進行分類及回歸操作。通過這2 步操作,two-stage 法能夠達到最好的準確率[7]。而一階段法是均勻地在圖像不同位置進行不同尺度和比例的密集采樣,然后再利用CNN 提取特征并進行分類。這種方法的優點在于其計算效率高、分類速度快;不足之處是均勻密集采樣會因為正負樣本的不均衡分布(class imbalance problem)導致模型的訓練擬合存在困難。目標檢測算法的主要性能指標是檢測的準確度和效率(即速度)。由于目標檢測不僅要對圖像進行分類,還要對不同物體進行定位,因此對于準確度不僅要考慮分類的準確度,還涉及物體定位的準確度。two-stage 和one-stage分別在準確度和速度上占有優勢,但是準確度和速度往往是矛盾的,提升模型一個指標的性能往往導致另一個指標性能下降,如何更好地平衡目標檢測模型的這2 個指標一直是該研究領域的重要方向。
YOLO 即You Only Look Once[8],屬于一階段法,它將目標檢測重新定義為一個回歸問題,將單個卷積神經網絡(CNN)應用于整個圖像,將圖像分成網格,并預測每個網格的類概率和邊界框。由于檢測是一個回歸問題,所以不需復雜管道。它比“R-CNN”快1 000 倍,比“Fast R-CNN”快100 倍;能夠處理實時視頻流,延遲小于25 ms;其精度是以前實時系統的2 倍多[9]。同樣重要的是,YOLO 遵循的是“端到端深度學習”的實踐。YOLOv7 是YOLO 的最新版本,其在 5~160 fps 范圍內,速度和精度都超過了所有已知的目標檢測器,并在 GPU V100 上,30 fps 的情況下達到實時目標檢測器的最高精度 56.8% AP。YOLOv7 在速度和精度上的表現也優于 YOLOR、YOLOX、Scaled-YOLOv4、YOLOv5、DETR 等目標檢測器[10]。
基于 YOLO 算法的車輛尾部燈光檢測系統包括輸入模塊、數據采集及處理模塊、輸出模塊3 部分。其中,輸入模塊由位置傳感器和轉化器組成,負責檢測車輛是否到達檢測位置;數據采集及處理模塊由電腦和高清攝像頭組成,負責在檢測車輛尾部圖像采集,數據處理模塊位于PC 端,主要功能包括:圖像預處理(圖像增強、圖像壓縮和灰度轉換)、圖像檢測與識別。輸出模塊指示燈模組,主要向員工輸出車輛合格與不合格指示。
(1)利用位置傳感器不斷探測是否有車輛到達工位;(2)在車輛到達后,通過車標識別確認為要檢測車輛;(3)開啟視覺檢測程序,對一個標準檢測時間內的車輛視頻進行判斷,將識別出的合格燈光數與理論數進行對比;(4)如檢測出合格燈光數有缺失則進行記錄并報警。
(1)基礎數據集
車輛尾部共有10 個燈光,為便于訓練將其劃分為5 部分燈光,分別是:高位剎車燈,左主尾燈(含左主尾燈與左轉向燈),左副尾燈(含左副尾燈、左倒車燈和霧燈),右副尾燈(含右副尾燈與右倒車燈)和右主尾燈(含右主尾燈和右轉向燈)。采用高清攝像頭拍攝不同燈光點亮和失效的視頻。人工篩選出有效圖像,剔除模糊、重復的無效樣本。經篩選得到車輛尾部燈光有效樣本 2 534 例,利用Labelimg 對樣本進行標注,樣本標注后如圖1 所示。

圖1 部分數據集樣本示例Fig.1 Sample of partial dataset
(2)數據增強
由于實際采集的樣本較為單一,同一個樣本出現的次數很多,訓練容易出現過擬合,系統泛化性較差會導致識別準確率下降。在數據集數量一定的情況下,為進一步增加訓練數據的多樣性,獲得更加平衡的數據集,YOLOv7 采用了許多有效的數據處理方法增加訓練模型的精度和減少訓練時間,數據增強的方法包括Mosaic、Cutout、圖像擾動,改變亮度、對比度、飽和度、色調,加噪聲,隨機縮放,隨機裁剪,翻轉,旋轉,隨機擦除等。這里主要介紹Cutout、Mosaic 方法。
Cutout 指在樣本上隨機選擇一個固定大小的正方形mask 區域進行遮擋,即設置mask 區域像素值為0,Cutout 不僅能夠讓模型學習如何辨別它們,同時讓神經網絡更好地利用整幅圖像的全局信息,而不是一些小特征組成的局部信息。Mosaic 是將4張訓練圖片縮放拼成一張圖片(如圖2),Mosaic有利于提升小目標的檢測。使用Mosaic 數據增強后,每張圖片包含小目標的可能性相應增大,同時,每張圖都有不同程度的縮小,即使不包含小目標,通過縮小,原來的目標尺寸也更接近小目標的大小,這對模型學習小目標很有利。

圖2 數據增強樣本樣本示例Fig.2 Sample of data enhancement
本文采用 Pytorch 1.1.0 深度學習框架搭建YOLOv7 卷積神經網絡,在共享GPU 平臺featurize上進行訓練。綜合考慮準確度和實時性,模型訓練所用模型為YOLOv7-tiny。基于上述數據整理階段獲得的數據,按照9∶1 的比例劃分為訓練集和驗證集,從隨機初始化開始訓練,batch 大小為 64,迭代次數設為 300,在每一輪訓練中通過設置hyp.scratch.tiny.yaml 進行數據增強。
經過300 輪迭代優化,訓練結果如圖3 所示,定位損失box_loss 從0.075 降至0.008 9,置信度損失obj_loss 從0.046 降至0.014,分類損失cls_loss 從0.062 降至0.001 1。精度Precision 和召回率Recall 分別達到0.995 7 和0.995 6。

圖3 訓練結果Fig.3 Training results
平均精度均值(mAP,mean Average Precision)即 AP(Average Precision) 的平均值,它是目標檢測的主要評估指標,mAP 值越高表示在所選數據集檢測效果越好。訓練后,map@0.5 和map@0.5:0.95達到了0.995 4 和0.922 4。
使用訓練好的模型對現場不同場景不同燈光下的車輛進行驗證,檢測準確率100%,漏檢率為0。將訓練好的模型部署在現場,采用高清攝像頭輸入,實時識別速度達到31 ms,滿足現場實時檢測要求。現場測試圖片如圖4 所示。

圖4 現場測試圖片Fig.4 Test photo
針對車輛尾部燈光自動檢測問題,本文研究了一種基于 YOLO 算法的尾部燈光檢測系統。采用YOLOv7 算法建立神經網絡模型,利用現場采集數據集進行模型訓練,驗證后將模型現場部署,識別準確率高、漏檢率低,減少了人工檢測的工作量,且滿足現場檢測實時性要求,具有一定的現實意義。