王源宇,曾翊晨,李飛揚(yáng),閻 辰,張 順
(1.武漢理工大學(xué) 信息工程學(xué)院通信工程,湖北 武漢430070;2.武漢理工大學(xué) 信息工程學(xué)院電子科學(xué)與技術(shù),湖北 武漢430070)
中國《道路交通安全法》第48 條已經(jīng)明確規(guī)定遠(yuǎn)光燈、近光燈的操作使用要求,但根據(jù)對(duì)路面交通狀況實(shí)際觀察發(fā)現(xiàn),仍有不少駕駛員在汽車行駛過程中沒有切換遠(yuǎn)光燈、近光燈的習(xí)慣。在會(huì)車時(shí),遠(yuǎn)光燈強(qiáng)烈的燈光會(huì)對(duì)駕駛員造成眩目,極易造成交通事故[1-2]。目前,國內(nèi)外解決夜間會(huì)車眩目問題大多采用偏振光防眩目技術(shù)[3]和液晶變光裝置[4]等。偏振光防眩目技術(shù)是在汽車的擋風(fēng)玻璃以及前照燈燈罩玻璃上安裝偏振片,兩車會(huì)車時(shí)車燈光線經(jīng)前照燈燈罩玻璃和對(duì)向擋風(fēng)玻璃的透射率幾乎為0,而偏振片透光率不理想,單片透光率僅有36%左右,且成本及精度要求高,難以實(shí)現(xiàn)市場(chǎng)化生產(chǎn)[5]。液晶變光裝置是利用光傳感器把強(qiáng)光信號(hào)轉(zhuǎn)變成電信號(hào),使位于駕駛員眼睛和前擋風(fēng)玻璃之間的液晶板變色,這樣駕駛員感覺不到強(qiáng)光的刺眼,但是該裝置對(duì)各種路況的適用性差,容易造成視覺疲勞[6]。由于夜間道路情況復(fù)雜,以上方法均不能有效解決防眩目的問題。因此,研發(fā)一款智能夜間防眩目車燈十分必要。
YOLO(You Only Look Once)[7]算法屬于one-stagedetection 方法,首先需要產(chǎn)生大量可能包含待檢測(cè)物體的先驗(yàn)框,然后用分類器判斷每個(gè)先驗(yàn)框?qū)?yīng)的邊界框里是否包含待檢測(cè)物體,以及物體所述類別的概論或者置信度,同時(shí),需要后處理修正邊界框,最后基于一些準(zhǔn)則過濾掉置信度不高和重疊度較高的邊界框,進(jìn)而得到檢測(cè)結(jié)果。這種基于先產(chǎn)生候選區(qū)再檢測(cè)的方法雖然有較高的檢測(cè)準(zhǔn)確率,但運(yùn)行速度較慢。YOLOv2 可以很好地權(quán)衡速度和精度,在不需要較快運(yùn)行速度時(shí),它可以把精度提高;在不需較高準(zhǔn)確度時(shí),它可以提升運(yùn)行速遞。而經(jīng)過YOLOv3 的改進(jìn),算法在擁有較快運(yùn)行速度的同時(shí)有較高的準(zhǔn)確率,這更適用于夜間復(fù)雜環(huán)境下行駛時(shí)對(duì)于檢測(cè)速度和精度的要求。因此,本文采用YOLOv3 算法作為核心處理算法。
本文設(shè)計(jì)的夜間防眩目LED 車燈通過攝像頭采集前方車輛行人信息,PC 機(jī)采用YOLOv3 算法處理后,由飛思卡爾單片機(jī)將控制信號(hào)傳至LED 車燈,從而實(shí)現(xiàn)自動(dòng)調(diào)節(jié)遠(yuǎn)近光燈,增加了行駛的安全性,同時(shí),類比市面上的其他產(chǎn)品,此產(chǎn)品具有可編程性,可以根據(jù)實(shí)際情況進(jìn)行后續(xù)優(yōu)化升級(jí),為未來的無人駕駛做準(zhǔn)備。
本系統(tǒng)主要由攝像頭、PC 機(jī)、控制模塊及LED 車燈構(gòu)成,其硬件組成如圖1 所示。其中,控制模塊為飛思卡爾單片機(jī)MC9S12P128,單片機(jī)通過串口通信接受PC 機(jī)傳遞的信號(hào),單片機(jī)內(nèi)部的程序?qū)π盘?hào)正確處理,控制車燈的遠(yuǎn)近光燈切換。LED 車燈內(nèi)部有5 顆燈珠,當(dāng)汽車使用近光燈時(shí),開啟其中3 顆燈珠;當(dāng)汽車使用遠(yuǎn)光燈時(shí),開啟全部5 顆燈珠??刂颇K控制車燈內(nèi)部5 顆燈珠的開關(guān)狀態(tài),實(shí)現(xiàn)遠(yuǎn)近光燈的切換。
整體工作流程如下:攝像頭采集駕駛車輛前的路況信息后,將圖像信息傳遞給PC 機(jī),PC 機(jī)對(duì)攝像頭傳送過來的圖像信息用YOLOv3 算法進(jìn)行處理,將檢測(cè)到的車輛和行人信息傳送到飛思卡爾單片機(jī),再由單片機(jī)發(fā)送控制指令來控制車燈遠(yuǎn)近光燈的亮滅。
YOLOv3 在YOLO 系列算法的基礎(chǔ)上進(jìn)行了一些改進(jìn),包括多尺度預(yù)測(cè)(類FPN)、基礎(chǔ)分類網(wǎng)絡(luò)(類ResNet 殘差塊結(jié)構(gòu))和更好的特征提取網(wǎng)絡(luò)(Darknet-53)等,很好地改善了YOLO 系列算法對(duì)小物體檢測(cè)效果較差的問題。
由于夜間道路環(huán)境較為復(fù)雜,對(duì)于目標(biāo)檢測(cè)的實(shí)時(shí)性要求較高,同時(shí),為了保證準(zhǔn)確性,本文采用YOLOv3 算法對(duì)夜間車輛和行人進(jìn)行檢測(cè)。
YOLOv3 整體網(wǎng)絡(luò)結(jié)構(gòu)如圖2 所示。其中,DBL 為網(wǎng)絡(luò)的基本組件,即卷積層+歸一化層+激活層;resn 為殘差網(wǎng)絡(luò)Resnet,n 代表數(shù)字,表示有n 個(gè)殘差塊;concat 為張量拼接,即連接darknet 中間層與后面的某一層的上采樣。
圖2 YOLOv3 整體網(wǎng)絡(luò)結(jié)構(gòu)
YOLOv3使用基于殘差神經(jīng)網(wǎng)絡(luò)改進(jìn)的Darknet-53網(wǎng)絡(luò)作為特征提取器,整個(gè)網(wǎng)絡(luò)中沒有池化層和全連接層,采用大量的3×3 和1×1 卷積層,共有53 個(gè)卷積層。YOLOv3 采用416×416 的圖像輸入到前向傳播過程中,通過改變卷積核的步長來實(shí)現(xiàn)張量的尺寸變換。不同于YOLOv2 采用的Darknet-19 網(wǎng)絡(luò)結(jié)構(gòu),Darknet-53 引入Resnet 的殘差塊結(jié)構(gòu),如圖3 所示。
圖3 Resnet 殘差塊結(jié)構(gòu)
其相應(yīng)的公式定義如下:
式(1)中:xt+1和xt分別為第t 個(gè)殘差塊的輸出與輸入向量;Ft(xt)為轉(zhuǎn)換函數(shù),對(duì)應(yīng)于由堆疊層組成的殘差分支。
這樣組成的殘差網(wǎng)絡(luò)有效解決了隨著網(wǎng)絡(luò)層數(shù)的加深而產(chǎn)生的梯度爆炸問題,使得Darknet-53 提取的特征效果更好,更好地提升了分類和檢測(cè)的準(zhǔn)確度。
YOLOv3 借鑒了FPN(feature pyramid networks)的思想,在3 種不同的尺度上進(jìn)行預(yù)測(cè),分別為13×13、26×26、52×52,每種尺度預(yù)測(cè)3 個(gè)box,anchor 的設(shè)計(jì)方式仍然使用聚類,得到9 個(gè)聚類中心,將其按照大小均分給3 個(gè)尺度。對(duì)于輸入為416×416 的圖像,按照特征圖的尺度大小劃分為S×S 個(gè)等大的網(wǎng)格,本文對(duì)應(yīng)預(yù)測(cè)車輛和行人2 個(gè)類別,則最終得到的張量大小為S×S×[3×(4+1)+2],其中,包括目標(biāo)邊框的4 個(gè)坐標(biāo)值以及置信度得分(tx,ty,tw,th,confidence)。這種方式將不同分辨率的特征圖融合之后單獨(dú)輸出,對(duì)應(yīng)圖2 中的Y1、Y2、Y3 熱圖,可以精確針對(duì)不同尺寸的目標(biāo)進(jìn)行分別檢測(cè),極大地提升了YOLOv3 在小目標(biāo)檢測(cè)方面的性能。
YOLOv3 不使用Softmax 對(duì)每個(gè)框進(jìn)行分類,主要原因?yàn)镾oftmax 使得每個(gè)框分配一個(gè)類別,即得分最高的類別,而實(shí)際中的一個(gè)目標(biāo)或一張圖片基本上不會(huì)只有一個(gè)類別,例如對(duì)于Open Images 數(shù)據(jù)集,目標(biāo)可能有重疊的類別標(biāo)簽,因此Softmax 不適用于多標(biāo)簽分類,且Softmax 可被獨(dú)立的多個(gè)logistic 分類器替代,準(zhǔn)確率也不會(huì)下降。
所以,YOLOv3 使用了多個(gè)獨(dú)立的邏輯回歸分類器進(jìn)行分類,邏輯回歸層(logistic)主要使用sigmoid 函數(shù),每個(gè)分類器使用簡單的二分類對(duì)目標(biāo)邊框中出現(xiàn)的物體進(jìn)行判斷,即實(shí)現(xiàn)了多標(biāo)簽分類。
YOLO 系列算法均是端到端的訓(xùn)練過程,預(yù)測(cè)框的坐標(biāo)、大小、種類、置信度等信息的預(yù)測(cè)由4 部分的損失函數(shù)組成,其公式為:
防眩目系統(tǒng)軟件設(shè)計(jì)如圖4 所示。
圖4 軟件流程圖
在夜間行駛時(shí),駕駛員自動(dòng)選擇遠(yuǎn)近光燈狀態(tài),同時(shí),開啟防眩目系統(tǒng),系統(tǒng)進(jìn)入初始化。進(jìn)入程序后,首先由攝像頭采集前方道路信息直到采集完成,然后將圖像信息送入目標(biāo)檢測(cè)模塊,此模塊由YOLOv3 算法進(jìn)行目標(biāo)檢測(cè),如果未檢測(cè)到車輛及行人信息,則繼續(xù)進(jìn)行數(shù)據(jù)采集;如果檢測(cè)到車輛及行人信息,則立即判斷車燈開啟狀態(tài)。如果同時(shí)開啟遠(yuǎn)近光燈時(shí),轉(zhuǎn)入車燈控制模塊,關(guān)閉遠(yuǎn)光燈,只開啟近光燈;如果只開啟近光燈,則保持近光燈開啟狀態(tài),最后回到主控制模塊,循環(huán)進(jìn)行該算法流程。
本文算法使用tensorflow 框架,實(shí)驗(yàn)的軟硬件配置如表1 所示。
表1 實(shí)驗(yàn)配置
本實(shí)驗(yàn)圖像由載有OV7725攝像頭模塊的車輛在夜間拍攝得到,包括高速公路、城市道路等150 000 萬張圖片,精選6 000 張清晰圖片,使用labelImg 軟件對(duì)上述圖片進(jìn)行標(biāo)注,只設(shè)置車輛、行人以及背景三個(gè)類別,最后從中隨機(jī)選取4 200 張圖片作為訓(xùn)練集,1 800 張圖片作為測(cè)試集。
使用上述數(shù)據(jù)集,對(duì)目標(biāo)檢測(cè)模型進(jìn)行訓(xùn)練與測(cè)試,相比于目前存在的數(shù)據(jù)集,本數(shù)據(jù)集更適合于夜間對(duì)車輛及行人的檢測(cè)。
實(shí)驗(yàn)過程中,設(shè)置初始學(xué)習(xí)率為0.000 1,迭代次數(shù)為1 000,耗時(shí)約14 h。
將測(cè)試集輸入到訓(xùn)練好的模型中,得到車輛與行人識(shí)別率的結(jié)果,其中車輛檢測(cè)的mAP 為97.31%,行人檢測(cè)的mAP 為91.67%??梢钥闯霰疚挠?xùn)練的YOLOv3 算法能夠準(zhǔn)確檢測(cè)出夜間車輛和行人。同時(shí),將檢測(cè)到的信息處理之后發(fā)出的車燈控制信號(hào),可以準(zhǔn)確地切換遠(yuǎn)近光燈。實(shí)際場(chǎng)景如圖5 所示。
圖5 實(shí)際場(chǎng)景圖
本文將YOLOv3 網(wǎng)絡(luò)應(yīng)用于汽車防眩目領(lǐng)域,通過訓(xùn)練自制的夜間數(shù)據(jù)集,對(duì)車輛前方的道路信息做出判斷,實(shí)現(xiàn)對(duì)車輛遠(yuǎn)近光燈的自適應(yīng)切換,以解決夜間車輛行駛過程中濫用遠(yuǎn)光燈的現(xiàn)象。
實(shí)驗(yàn)結(jié)果表明,對(duì)于本文提出的方法,輸入一張圖像直接預(yù)測(cè)出目標(biāo)信息耗時(shí)0.04 s,整體mAP 達(dá)到94.49%,能夠保證控制車燈的準(zhǔn)確性和實(shí)時(shí)性。