(上海工程技術(shù)大學(xué)機械與汽車工程學(xué)院 上海 201620)
自動駕駛包括環(huán)境感知、決策規(guī)劃和執(zhí)行三大任務(wù)[1]。在各類引起交通事故的因素中,人類因素占90%,駕駛員違法占74%,對車輛進(jìn)行實時準(zhǔn)確的識別,是自動駕駛中環(huán)境感知的重要任務(wù)。傳統(tǒng)目標(biāo)檢測的過程包括區(qū)域選擇、特征提取和分類器三個過程[2~3]。它采用不同尺寸不同長寬比例的滑動窗口對整幅圖進(jìn)行遍歷。顯然,這種方法的缺點是時間復(fù)雜度太高,且對更多的目標(biāo)的適應(yīng)性較差。前方車輛識別中之前的深度學(xué)習(xí)的檢測方法是提取圖像的候選區(qū)域的特征信息,在利用機器學(xué)習(xí)的分類器進(jìn)行候選驗證。比如說,RCNN[4~5]系列目標(biāo)檢測大致分為獲取候選區(qū)域和對候選區(qū)域進(jìn)行分類判斷以及邊框回歸兩部分,它的精度比較高,但是帶來的問題就是運行速度慢。YOLO是目前最快的識別算法[6~8],它是一種深度學(xué)習(xí)的端對端的物體檢測方法,與RCNN不同的是,YOLO將物體檢測任務(wù)當(dāng)做一個regression問題來處理。車輛能夠?qū)崿F(xiàn)實時性的幀率是30fps,YOLO能夠同時保證準(zhǔn)確率和檢測速度,YOLO的標(biāo)準(zhǔn)模型能夠達(dá)到45fps,而tiny-YOLO能夠達(dá)到155fps。多數(shù)研究者對 YOLOv2 進(jìn)行了研究,SEO[9]運用 YOLOv2 算法和無人機對高速公路上的車輛進(jìn)行了實時檢測研究,魏湧明等[10]運用YOLOv2算法對航拍圖像進(jìn)行了目標(biāo)定位研究,HANG等[11]運用YOLOv2算法進(jìn)行了中文交通標(biāo)志的實時檢測研究,JO等[12]運用YOLOv2算法進(jìn)行了多目標(biāo)的實時跟蹤研究。
YOLO和基本的神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)一樣,由卷積層、池化層和全連接層組成,YOLO的輸出層是Tensor。YOLO網(wǎng)絡(luò)架構(gòu)借鑒了GoogLeNet圖像分類模型,YOLO識別網(wǎng)絡(luò)由24個卷積層和兩個全連接層組成。實驗中,利用pascal voc數(shù)據(jù)集圖像作為YOLO的訓(xùn)練樣本,因為YOLO是端對端的網(wǎng)絡(luò),可以直接將整張圖像用于訓(xùn)練。整張圖像分為SxS個網(wǎng)格,每個網(wǎng)格中有物體中心落入時,會再預(yù)測出B個檢測邊界框以及每個框的置信度。每個檢測邊界框包含邊界框的寬和高,邊界框的中心相對其母網(wǎng)絡(luò)的位置,C個類別概率,最終輸出層輸出S×S(B×5+C)維的張量。YOLO對于輸出層數(shù)據(jù)同等對待是不合理的,同時大部分網(wǎng)格中沒有物體中心落入,在訓(xùn)練時的梯度會待遇包含物體中心的網(wǎng)格的梯度,導(dǎo)致訓(xùn)練發(fā)散,所以YOLO給定位誤差更大的權(quán)重,給不包含物體中心的網(wǎng)格的置信度誤差更小的權(quán)重,其他置信度誤差將不變。
YOLO算法和其他的神經(jīng)網(wǎng)絡(luò)[13~15]一樣,也需要通過標(biāo)注大量的圖像后,送入到神經(jīng)網(wǎng)絡(luò)模型當(dāng)中,訓(xùn)練出神經(jīng)網(wǎng)絡(luò)的參數(shù),以便能夠更好地利用訓(xùn)練好的神經(jīng)網(wǎng)絡(luò)模型去檢測該目標(biāo)。
將數(shù)據(jù)集分類放在不用的文件夾中,利用標(biāo)注工具LabelImg標(biāo)注工具對車輛進(jìn)行標(biāo)注。標(biāo)注時矩形框應(yīng)該僅僅貼住車輛的邊緣,以防止訓(xùn)練時無法收斂。
圖1 車輛數(shù)據(jù)集標(biāo)注界面
下載pascal voc數(shù)據(jù)集,利用Labelimg表框工具對圖像進(jìn)行手工標(biāo)注,數(shù)據(jù)集分割比例為5:3:2,訓(xùn)練集比例是50%,測試集比例是30%,驗證集比例是20%。根據(jù)自己電腦來配置yolov3.cfg中的參數(shù),將classes改成1,將每個yolo上面第一個con?volutional下的filters改成18,打開voc.names文件,內(nèi)容改成car,同時修改voc.data等,打開win系統(tǒng)終端,輸入訓(xùn)練命令進(jìn)行訓(xùn)練,訓(xùn)練時,每訓(xùn)練100輪,都會生成一個權(quán)重文件在backup下,得到的權(quán)重復(fù)制到相應(yīng)的文件夾中,打開終端,輸入要測試的圖片路徑,就可以看到效果。
計算檢測邊界框和參考標(biāo)準(zhǔn)狂的IOU值,以此判斷結(jié)果中假正例和真正例,當(dāng)IOU≥0.5時,為真正例;當(dāng)IOU<0.5時,為假正例;其值為0時,則為假反例。查全率=TP/(TP+FN),差準(zhǔn)率=TP/(TP+FP),TP,F(xiàn)P和FN分別為真正例、假正例和假反例的數(shù)量[16]。
對不用姿態(tài)的車輛的檢測效果如圖2~5,從圖中可以看出,YOLO算法對車輛之間遮擋時的檢測效果、陰影干擾等環(huán)境下的檢測效果也很好。
圖2 車輛正面檢測效果
圖3 車輛背面檢測效果
圖4 多車輛檢測效果
圖5 陰影環(huán)境下車輛檢測效果
本文應(yīng)用YOLO檢測算法實現(xiàn)視頻中的車輛檢測,滿足了自動駕駛中實時性的要求,也說明了YOLO對于處理其他視覺任務(wù)的能力。