倪新帥,李勝
(610100 四川省 成都市 一汽-大眾汽車(chē)有限公司)
乘用車(chē)尾部燈光種類多且不容易觀測(cè),尾部燈光失效后用戶難以發(fā)現(xiàn),對(duì)行駛安全構(gòu)成風(fēng)險(xiǎn)。因此,出廠時(shí)保障尾部燈光100%被檢測(cè)具有重要意義。目前整車(chē)制造廠主要采用人工目測(cè)檢查尾部燈光,由于尾部燈光類型復(fù)雜且不易觀測(cè),需要耗費(fèi)大量人力資源和時(shí)間成本,存在一定漏檢風(fēng)險(xiǎn)。
車(chē)輛尾部燈光檢測(cè)要測(cè)試所有尾部信號(hào)燈的功能完整性、能否正常關(guān)閉和開(kāi)啟。利用視覺(jué)識(shí)別技術(shù)檢測(cè)汽車(chē)燈光的方法日趨多樣,田強(qiáng)[1]提出了、一種基于圖像的車(chē)輛尾燈檢測(cè)識(shí)別方法,使用參數(shù)優(yōu)化的最小二乘支持向量機(jī)對(duì)得到的車(chē)尾燈光狀態(tài)進(jìn)行判別;聶美玲[2]提出將方位角模糊技術(shù)與凹點(diǎn)檢測(cè)技術(shù)相結(jié)合,對(duì)車(chē)輛燈光進(jìn)行檢測(cè)和分割,提高了復(fù)雜環(huán)境下車(chē)燈提取的準(zhǔn)確率,并將車(chē)燈的運(yùn)動(dòng)特征和幾何特征相結(jié)合,應(yīng)用到車(chē)燈配對(duì)的環(huán)節(jié),降低了車(chē)燈配對(duì)的漏配率和誤配率;李龍等[3]對(duì)YOLOv3 網(wǎng)絡(luò)進(jìn)行優(yōu)化,舍去Darknet53 的最后一個(gè)殘差單元,同時(shí)增加小尺度特征提取殘差單元的重復(fù)次數(shù),提升了尾燈檢測(cè)的準(zhǔn)確率和檢測(cè)速度;劉京凱[4]采用優(yōu)化的YOLOv3 目標(biāo)檢測(cè)網(wǎng)絡(luò)訓(xùn)練和識(shí)別尾燈區(qū)域是否點(diǎn)亮,并結(jié)合尾燈閃爍頻率,完成對(duì)前方車(chē)輛尾部燈光燈語(yǔ)的研究。
本文以某車(chē)型尾部燈光為研究對(duì)象,首先采集該車(chē)型不同狀態(tài)下的尾部燈光圖片,篩選出有效圖片后,對(duì)圖片進(jìn)行人工標(biāo)注制作數(shù)據(jù)集,并對(duì)Rear-Light 數(shù)據(jù)集進(jìn)行數(shù)據(jù)增強(qiáng)?;赮OLOv7 對(duì)數(shù)據(jù)集進(jìn)行學(xué)習(xí),建立尾部燈光識(shí)別模型,利用傳感器、轉(zhuǎn)換器、攝像頭和PC 等硬件搭建尾部燈光自動(dòng)檢測(cè)系統(tǒng),實(shí)現(xiàn)尾部燈光檢測(cè)的自動(dòng)化和智能化,對(duì)提高生產(chǎn)效率和產(chǎn)品質(zhì)量有重要現(xiàn)實(shí)意義。
目前基于深度學(xué)習(xí)的目標(biāo)檢測(cè)算法主要分為2大類:(1)兩階段法(two-stage approach),如基于候選區(qū)域(region proposals)R-CNN 系列的算法[5];(2)一階段法(one-stage approach)[6],如現(xiàn)在熱門(mén)的YOLO 和SSD 算法。兩階段法主要是先通過(guò)啟發(fā)式方法等操作得到一系列稀疏的候選框,然后再對(duì)候選框進(jìn)行分類及回歸操作。通過(guò)這2 步操作,two-stage 法能夠達(dá)到最好的準(zhǔn)確率[7]。而一階段法是均勻地在圖像不同位置進(jìn)行不同尺度和比例的密集采樣,然后再利用CNN 提取特征并進(jìn)行分類。這種方法的優(yōu)點(diǎn)在于其計(jì)算效率高、分類速度快;不足之處是均勻密集采樣會(huì)因?yàn)檎?fù)樣本的不均衡分布(class imbalance problem)導(dǎo)致模型的訓(xùn)練擬合存在困難。目標(biāo)檢測(cè)算法的主要性能指標(biāo)是檢測(cè)的準(zhǔn)確度和效率(即速度)。由于目標(biāo)檢測(cè)不僅要對(duì)圖像進(jìn)行分類,還要對(duì)不同物體進(jìn)行定位,因此對(duì)于準(zhǔn)確度不僅要考慮分類的準(zhǔn)確度,還涉及物體定位的準(zhǔn)確度。two-stage 和one-stage分別在準(zhǔn)確度和速度上占有優(yōu)勢(shì),但是準(zhǔn)確度和速度往往是矛盾的,提升模型一個(gè)指標(biāo)的性能往往導(dǎo)致另一個(gè)指標(biāo)性能下降,如何更好地平衡目標(biāo)檢測(cè)模型的這2 個(gè)指標(biāo)一直是該研究領(lǐng)域的重要方向。
YOLO 即You Only Look Once[8],屬于一階段法,它將目標(biāo)檢測(cè)重新定義為一個(gè)回歸問(wèn)題,將單個(gè)卷積神經(jīng)網(wǎng)絡(luò)(CNN)應(yīng)用于整個(gè)圖像,將圖像分成網(wǎng)格,并預(yù)測(cè)每個(gè)網(wǎng)格的類概率和邊界框。由于檢測(cè)是一個(gè)回歸問(wèn)題,所以不需復(fù)雜管道。它比“R-CNN”快1 000 倍,比“Fast R-CNN”快100 倍;能夠處理實(shí)時(shí)視頻流,延遲小于25 ms;其精度是以前實(shí)時(shí)系統(tǒng)的2 倍多[9]。同樣重要的是,YOLO 遵循的是“端到端深度學(xué)習(xí)”的實(shí)踐。YOLOv7 是YOLO 的最新版本,其在 5~160 fps 范圍內(nèi),速度和精度都超過(guò)了所有已知的目標(biāo)檢測(cè)器,并在 GPU V100 上,30 fps 的情況下達(dá)到實(shí)時(shí)目標(biāo)檢測(cè)器的最高精度 56.8% AP。YOLOv7 在速度和精度上的表現(xiàn)也優(yōu)于 YOLOR、YOLOX、Scaled-YOLOv4、YOLOv5、DETR 等目標(biāo)檢測(cè)器[10]。
基于 YOLO 算法的車(chē)輛尾部燈光檢測(cè)系統(tǒng)包括輸入模塊、數(shù)據(jù)采集及處理模塊、輸出模塊3 部分。其中,輸入模塊由位置傳感器和轉(zhuǎn)化器組成,負(fù)責(zé)檢測(cè)車(chē)輛是否到達(dá)檢測(cè)位置;數(shù)據(jù)采集及處理模塊由電腦和高清攝像頭組成,負(fù)責(zé)在檢測(cè)車(chē)輛尾部圖像采集,數(shù)據(jù)處理模塊位于PC 端,主要功能包括:圖像預(yù)處理(圖像增強(qiáng)、圖像壓縮和灰度轉(zhuǎn)換)、圖像檢測(cè)與識(shí)別。輸出模塊指示燈模組,主要向員工輸出車(chē)輛合格與不合格指示。
(1)利用位置傳感器不斷探測(cè)是否有車(chē)輛到達(dá)工位;(2)在車(chē)輛到達(dá)后,通過(guò)車(chē)標(biāo)識(shí)別確認(rèn)為要檢測(cè)車(chē)輛;(3)開(kāi)啟視覺(jué)檢測(cè)程序,對(duì)一個(gè)標(biāo)準(zhǔn)檢測(cè)時(shí)間內(nèi)的車(chē)輛視頻進(jìn)行判斷,將識(shí)別出的合格燈光數(shù)與理論數(shù)進(jìn)行對(duì)比;(4)如檢測(cè)出合格燈光數(shù)有缺失則進(jìn)行記錄并報(bào)警。
(1)基礎(chǔ)數(shù)據(jù)集
車(chē)輛尾部共有10 個(gè)燈光,為便于訓(xùn)練將其劃分為5 部分燈光,分別是:高位剎車(chē)燈,左主尾燈(含左主尾燈與左轉(zhuǎn)向燈),左副尾燈(含左副尾燈、左倒車(chē)燈和霧燈),右副尾燈(含右副尾燈與右倒車(chē)燈)和右主尾燈(含右主尾燈和右轉(zhuǎn)向燈)。采用高清攝像頭拍攝不同燈光點(diǎn)亮和失效的視頻。人工篩選出有效圖像,剔除模糊、重復(fù)的無(wú)效樣本。經(jīng)篩選得到車(chē)輛尾部燈光有效樣本 2 534 例,利用Labelimg 對(duì)樣本進(jìn)行標(biāo)注,樣本標(biāo)注后如圖1 所示。
圖1 部分?jǐn)?shù)據(jù)集樣本示例Fig.1 Sample of partial dataset
(2)數(shù)據(jù)增強(qiáng)
由于實(shí)際采集的樣本較為單一,同一個(gè)樣本出現(xiàn)的次數(shù)很多,訓(xùn)練容易出現(xiàn)過(guò)擬合,系統(tǒng)泛化性較差會(huì)導(dǎo)致識(shí)別準(zhǔn)確率下降。在數(shù)據(jù)集數(shù)量一定的情況下,為進(jìn)一步增加訓(xùn)練數(shù)據(jù)的多樣性,獲得更加平衡的數(shù)據(jù)集,YOLOv7 采用了許多有效的數(shù)據(jù)處理方法增加訓(xùn)練模型的精度和減少訓(xùn)練時(shí)間,數(shù)據(jù)增強(qiáng)的方法包括Mosaic、Cutout、圖像擾動(dòng),改變亮度、對(duì)比度、飽和度、色調(diào),加噪聲,隨機(jī)縮放,隨機(jī)裁剪,翻轉(zhuǎn),旋轉(zhuǎn),隨機(jī)擦除等。這里主要介紹Cutout、Mosaic 方法。
Cutout 指在樣本上隨機(jī)選擇一個(gè)固定大小的正方形mask 區(qū)域進(jìn)行遮擋,即設(shè)置mask 區(qū)域像素值為0,Cutout 不僅能夠讓模型學(xué)習(xí)如何辨別它們,同時(shí)讓神經(jīng)網(wǎng)絡(luò)更好地利用整幅圖像的全局信息,而不是一些小特征組成的局部信息。Mosaic 是將4張訓(xùn)練圖片縮放拼成一張圖片(如圖2),Mosaic有利于提升小目標(biāo)的檢測(cè)。使用Mosaic 數(shù)據(jù)增強(qiáng)后,每張圖片包含小目標(biāo)的可能性相應(yīng)增大,同時(shí),每張圖都有不同程度的縮小,即使不包含小目標(biāo),通過(guò)縮小,原來(lái)的目標(biāo)尺寸也更接近小目標(biāo)的大小,這對(duì)模型學(xué)習(xí)小目標(biāo)很有利。
圖2 數(shù)據(jù)增強(qiáng)樣本樣本示例Fig.2 Sample of data enhancement
本文采用 Pytorch 1.1.0 深度學(xué)習(xí)框架搭建YOLOv7 卷積神經(jīng)網(wǎng)絡(luò),在共享GPU 平臺(tái)featurize上進(jìn)行訓(xùn)練。綜合考慮準(zhǔn)確度和實(shí)時(shí)性,模型訓(xùn)練所用模型為YOLOv7-tiny?;谏鲜鰯?shù)據(jù)整理階段獲得的數(shù)據(jù),按照9∶1 的比例劃分為訓(xùn)練集和驗(yàn)證集,從隨機(jī)初始化開(kāi)始訓(xùn)練,batch 大小為 64,迭代次數(shù)設(shè)為 300,在每一輪訓(xùn)練中通過(guò)設(shè)置hyp.scratch.tiny.yaml 進(jìn)行數(shù)據(jù)增強(qiáng)。
經(jīng)過(guò)300 輪迭代優(yōu)化,訓(xùn)練結(jié)果如圖3 所示,定位損失box_loss 從0.075 降至0.008 9,置信度損失obj_loss 從0.046 降至0.014,分類損失cls_loss 從0.062 降至0.001 1。精度Precision 和召回率Recall 分別達(dá)到0.995 7 和0.995 6。
圖3 訓(xùn)練結(jié)果Fig.3 Training results
平均精度均值(mAP,mean Average Precision)即 AP(Average Precision) 的平均值,它是目標(biāo)檢測(cè)的主要評(píng)估指標(biāo),mAP 值越高表示在所選數(shù)據(jù)集檢測(cè)效果越好。訓(xùn)練后,map@0.5 和map@0.5:0.95達(dá)到了0.995 4 和0.922 4。
使用訓(xùn)練好的模型對(duì)現(xiàn)場(chǎng)不同場(chǎng)景不同燈光下的車(chē)輛進(jìn)行驗(yàn)證,檢測(cè)準(zhǔn)確率100%,漏檢率為0。將訓(xùn)練好的模型部署在現(xiàn)場(chǎng),采用高清攝像頭輸入,實(shí)時(shí)識(shí)別速度達(dá)到31 ms,滿足現(xiàn)場(chǎng)實(shí)時(shí)檢測(cè)要求?,F(xiàn)場(chǎng)測(cè)試圖片如圖4 所示。
圖4 現(xiàn)場(chǎng)測(cè)試圖片F(xiàn)ig.4 Test photo
針對(duì)車(chē)輛尾部燈光自動(dòng)檢測(cè)問(wèn)題,本文研究了一種基于 YOLO 算法的尾部燈光檢測(cè)系統(tǒng)。采用YOLOv7 算法建立神經(jīng)網(wǎng)絡(luò)模型,利用現(xiàn)場(chǎng)采集數(shù)據(jù)集進(jìn)行模型訓(xùn)練,驗(yàn)證后將模型現(xiàn)場(chǎng)部署,識(shí)別準(zhǔn)確率高、漏檢率低,減少了人工檢測(cè)的工作量,且滿足現(xiàn)場(chǎng)檢測(cè)實(shí)時(shí)性要求,具有一定的現(xiàn)實(shí)意義。