(上海工程技術大學機械與汽車工程學院 上海 201620)
自動駕駛包括環境感知、決策規劃和執行三大任務[1]。在各類引起交通事故的因素中,人類因素占90%,駕駛員違法占74%,對車輛進行實時準確的識別,是自動駕駛中環境感知的重要任務。傳統目標檢測的過程包括區域選擇、特征提取和分類器三個過程[2~3]。它采用不同尺寸不同長寬比例的滑動窗口對整幅圖進行遍歷。顯然,這種方法的缺點是時間復雜度太高,且對更多的目標的適應性較差。前方車輛識別中之前的深度學習的檢測方法是提取圖像的候選區域的特征信息,在利用機器學習的分類器進行候選驗證。比如說,RCNN[4~5]系列目標檢測大致分為獲取候選區域和對候選區域進行分類判斷以及邊框回歸兩部分,它的精度比較高,但是帶來的問題就是運行速度慢。YOLO是目前最快的識別算法[6~8],它是一種深度學習的端對端的物體檢測方法,與RCNN不同的是,YOLO將物體檢測任務當做一個regression問題來處理。車輛能夠實現實時性的幀率是30fps,YOLO能夠同時保證準確率和檢測速度,YOLO的標準模型能夠達到45fps,而tiny-YOLO能夠達到155fps。多數研究者對 YOLOv2 進行了研究,SEO[9]運用 YOLOv2 算法和無人機對高速公路上的車輛進行了實時檢測研究,魏湧明等[10]運用YOLOv2算法對航拍圖像進行了目標定位研究,HANG等[11]運用YOLOv2算法進行了中文交通標志的實時檢測研究,JO等[12]運用YOLOv2算法進行了多目標的實時跟蹤研究。
YOLO和基本的神經網絡結構一樣,由卷積層、池化層和全連接層組成,YOLO的輸出層是Tensor。YOLO網絡架構借鑒了GoogLeNet圖像分類模型,YOLO識別網絡由24個卷積層和兩個全連接層組成。實驗中,利用pascal voc數據集圖像作為YOLO的訓練樣本,因為YOLO是端對端的網絡,可以直接將整張圖像用于訓練。整張圖像分為SxS個網格,每個網格中有物體中心落入時,會再預測出B個檢測邊界框以及每個框的置信度。每個檢測邊界框包含邊界框的寬和高,邊界框的中心相對其母網絡的位置,C個類別概率,最終輸出層輸出S×S(B×5+C)維的張量。YOLO對于輸出層數據同等對待是不合理的,同時大部分網格中沒有物體中心落入,在訓練時的梯度會待遇包含物體中心的網格的梯度,導致訓練發散,所以YOLO給定位誤差更大的權重,給不包含物體中心的網格的置信度誤差更小的權重,其他置信度誤差將不變。
YOLO算法和其他的神經網絡[13~15]一樣,也需要通過標注大量的圖像后,送入到神經網絡模型當中,訓練出神經網絡的參數,以便能夠更好地利用訓練好的神經網絡模型去檢測該目標。
將數據集分類放在不用的文件夾中,利用標注工具LabelImg標注工具對車輛進行標注。標注時矩形框應該僅僅貼住車輛的邊緣,以防止訓練時無法收斂。

圖1 車輛數據集標注界面
下載pascal voc數據集,利用Labelimg表框工具對圖像進行手工標注,數據集分割比例為5:3:2,訓練集比例是50%,測試集比例是30%,驗證集比例是20%。根據自己電腦來配置yolov3.cfg中的參數,將classes改成1,將每個yolo上面第一個con?volutional下的filters改成18,打開voc.names文件,內容改成car,同時修改voc.data等,打開win系統終端,輸入訓練命令進行訓練,訓練時,每訓練100輪,都會生成一個權重文件在backup下,得到的權重復制到相應的文件夾中,打開終端,輸入要測試的圖片路徑,就可以看到效果。
計算檢測邊界框和參考標準狂的IOU值,以此判斷結果中假正例和真正例,當IOU≥0.5時,為真正例;當IOU<0.5時,為假正例;其值為0時,則為假反例。查全率=TP/(TP+FN),差準率=TP/(TP+FP),TP,FP和FN分別為真正例、假正例和假反例的數量[16]。
對不用姿態的車輛的檢測效果如圖2~5,從圖中可以看出,YOLO算法對車輛之間遮擋時的檢測效果、陰影干擾等環境下的檢測效果也很好。

圖2 車輛正面檢測效果

圖3 車輛背面檢測效果

圖4 多車輛檢測效果

圖5 陰影環境下車輛檢測效果
本文應用YOLO檢測算法實現視頻中的車輛檢測,滿足了自動駕駛中實時性的要求,也說明了YOLO對于處理其他視覺任務的能力。