于琪佳
(北方工業大學,北京 100144)
隨著我國經濟和社會的高速發展,我國民用汽車擁有量連年增長。截至2021年6月,全國機動車達到2.92億輛,容易引起道路交通堵塞,不利于交通指揮。為了便于分析道路交通情況,促進道路交通的發展,需要識別出車輛的類型等進行合理規劃和判斷。車輛檢測可應用于車輛識別、車輛追蹤等,可以在一定程度為道路交通規劃提供數據支撐,且可以為車輛廠商提供車輛銷售數據參考等。本文將基于回歸的檢測方法中的YOLOv5算法對多種場景下的社會車輛進行物體識別,以研究其可行性。
目標檢測是計算機視覺領域的基本且重要的問題之一,在人工智能和信息技術的許多領域都有廣泛的應用,隨著人工智能發展得越來越火熱,越來越多的研究者開始關注基于深度學習的車輛檢測算法。
2015年,Redmon J[1]提出了YOLO檢測算法。YOLO簡化了檢測流程,提出了將物體分類和物體定位在一個步驟中完成的One-stage方法。2019年劉肯等人[2]對YOLO算法進行改進,提出一種YOLO?D算法,把目標檢測算法問題變成二分類問題,在不影響檢測速度的情況下提高了檢測準確率,從而實現對目標車輛的檢測。2020年林豪等人[3]提出了一種基于YOLOv3的裁剪檢測算法,該算法通過裁剪刪去汽車行駛過程中實時拍攝的圖片的部分對行駛決策不重要的內容,從而達到節約計算資源和提高檢測效率的目的。2021年周雄峰[4]提出一種基于深度學習的自動采集方法,利用YOLOv5檢測器在連續幀中的感興趣區域進行車輛檢測,通過DeepSOR跟蹤器進行穩健而快速的車輛跟蹤,該追蹤器可以有效減少目標ID的跳變,提升跟蹤穩定性,通過透視變換得到車輛的真實世界坐標并使用局部加權回歸算法進行軌跡平滑。
基于深度學習的目標檢測方法主要分為Twostage方法和One-stage方法。基于Region-proposal的 Two-stage 方 法 主 要 有 R-CNN[5], Fast RCNN[6],Faster R-CNN[7],這些算法普遍存在著檢測速度慢的缺點。基于回歸的One-stage方法主要有YOLO、SSD等。其中YOLO的特點是實現快速檢測的同時還能達到較高的準確率,它憑借著優秀的性能引起了廣大研究員的興趣。
YOLO在一定程度上避免了CNN算法速度慢的問題,但它存在著召回率低,對小目標檢測效果差,定位不夠精確等問題。為了解決速度慢的問 題 , YOLOv2, YOLOv3, TinyYOLO, YO?LOv4,YOLOv5等模型陸續被提出,隨著版本的迭代,模型性能也越來越好。本文主要選擇YO?LOv5算法對多種場景下的社會車輛進行物體識別,其特點是速度快,有非常輕量級的模型大小,在準確度方面與YOLOv4基準相當。
YOLOv5設計了4種目標檢測網絡結構,分別是Yolov5s、Yolov5m、Yolov5l和Yolov5x。四種網絡結構原理基本一樣,不同之處在于通過depth_mulitple、width_multipl兩個參數分別控制的網絡深度和網絡寬度。YOLOv5s網絡結構最小、速度最快、AP精度最低。其他三種網絡通過不斷加深加寬網絡,AP精度不斷提高,相應的速度在不斷地降低。
以YOLOv5s的網絡結構為例,如圖1所示。

圖1 YOLOv5s的網絡結構
整個網絡結構分為4個部分:輸入端,Back?bone主干網絡,Neck網絡和Prediction輸出端,分析如下:
(1)輸入端。該網絡的輸入圖像大小為608×608,在圖像預處理階段將輸入圖像縮放到網絡的輸入大小,進行歸一化等操作;在網絡訓練階段,YOLOv5采用Mosaic數據增強操作提升模型的訓練速度和網絡的精度,并提出自適應錨框計算和自適應圖片縮放的方法。
(2)Backbone主干網絡。該模塊通常是一些性能優異的分類器的網絡,用來提取通用的特征表示。YOLOv5采用具有切片操作的Focus結構和CSP結構。
(3)Neck網絡。該模塊用來進一步提升特征的多樣性與魯棒性。YOLOv5采用FPN+PAN結構和可以加強網絡特征融合能力的CSP2結構。
(4)Prediction輸出端。該模塊用來完成目標檢測結果的輸出。YOLOv5采用損失函數GIOU_Loss以及預測框篩選的DIOU_nms。
Yolov5s、Yolov5m、Yolov5l和Yolov5x四種網絡結構依次加深加寬網絡,AP精度不斷提高,相應的速度在不斷地降低,對硬件配置要求也越來越高。根據硬件配置條件,本文使用YOLOv5系列中最輕量化、深度最小和特征圖寬度最小的YOLOv5s網絡結構,對多種場景下的社會車輛進行物體識別,通過對處理過后的數據集進行訓練得到檢測模型,對檢測結果進行分析。本文主要是使用YoLOv5s來進行實驗分析,其對應的流程如圖2所示。

圖2 實現流程
本文采用的車輛檢測數據集為MS COCO數據集,該數據集有80個對象類別、12個大類、123287張圖片。該數據集平均每張圖片的物體數量多且滿足多種場景的需求,因此可用于車輛檢測的神經網絡模型。MS COCO 2017數據集預處理主要流程如下:
(1)通過COCO-PythonAPI從COCO數據集的Instances_valtrain2017.json標簽中提取出包含car,motorcycle,bus,truck 4個類別的相應數據,并將其轉化為VOC(.xml)的標簽,其中16977張圖作為訓練集,707張為驗證集;
(2)分別得到訓練集和訓練過程中的測試集的xml后,我們進一步使用腳本將xml轉化為txt;
(3)將提取的圖片和擬生成的txt標簽放到相應文件位置。
實驗平臺配置為Windows 10操作系統,Inter Core i7-10875H處理器和16 GB內存,搭載NVIDIA GeForce RTX 2060顯卡,配置英偉達CUDA11.0和GPU加速庫CUDNN 8.0.5,配置OpenCV2擴展庫,深度學習框架為Pytorch。
搭建好YOLOv5的運行環境后,根據硬件配置設置訓練參數,我們設置batch-size為2,numworker為0,epoch次數為100,然后對處理過后的COCO2017數據集進行訓練。

圖3 實驗結果

圖4 實驗結果
訓練過程中隨著迭代次數的增加,各種數值的變化如圖5所示,圖中各個數值的含義如表1所示。

圖5 訓練參數變化圖

表1 results參數變化
從圖5可以看出,隨著訓練迭代次數的增加,各項越來越準確,次數到達100次后,各項數值變化趨于平穩。
我們使用56張圖片進行推斷測試,這些圖片均沒有在訓練集和驗證集中出現過,以此來測試識別的準確性。使用使用訓練后自動生成的best.pt權重文件進行推斷測試,部分測試結果如圖6所示。

圖6 測試結果
本文通過YOLOv5目標檢測算法對多種場景下的車輛進行批量檢測,結果表明其優勢有識別車輛的精度和速度較高且適應性強。但YOLOv5車輛檢測依然存在對于距離較遠的車輛可能會出現檢測不到或者檢測準確度較低,車輛類型識別錯誤的問題。現有模型的局限性可以通過增大調整數據集和使用性能更好的計算機得到解決。因此YOLOv5目標檢測算法基本滿足多種場景下的車輛檢測需求,可應用于車輛識別、車輛追蹤以及借助大數據可以為車輛廠商提供車輛銷售數據參考。