阜遠遠,王建平*,張太盛,周晉偉,方祥建,王嘉鑫,王天陽
(1.安徽工程大學 機械工程學院,安徽 蕪湖 241000;2.中車浦鎮阿爾斯通運輸系統有限公司 工程部,安徽 蕪湖 241000)
在深度學習之前,物體檢測主要依賴于具有特征提取和分類器兩個階段的傳統方法,其操作實質是用滑動窗遍歷整張圖片,提取窗內的圖像特征,然后再進行分類器檢測[1-3]。但是傳統方法的特征與分類器之間的聯系比較弱,深度學習的發展改變了這種狀況,使得二者的聯系更加緊密,卷積神經網絡本身就具有特征提取的能力,同時也具備分類能力。因此深度學習很好地將特征與分類器整合到一起使其發揮出更大的價值。
隨著人工智能的快速崛起,機器視覺、機器學習不斷推進,物體檢測的需求越來越強烈。計算機技術的發展使得物體檢測、目標跟蹤等人工智能技術不斷迭代更新[4-6],也越來越貼近人們的實際生活。基于深度學習的物體檢測算法可以分為兩類,一類是Two-stage,代表算法有Fast Rcnn、Faster Rcnn、Mask Rcnn等,這種方式將檢測問題劃分為兩個階段,首先產生候選區,然后對候選區進行分類,這類算法誤識別率和漏識別率低,但是識別速度較慢,很難滿足實時檢測的場景;另一類檢測算法被稱為One-stage檢測算法,代表算法有SSD、YOLO 算法等,這類算法直接產生物體的類別概率和位置坐標值,經過一次檢測就可以得到最終的檢測結果。與其他的算法相比,YOL Ov5最快每秒可檢測140幀,速度更快,更適合于視頻流的物體實時檢測。
文中基于YOLOv5s開展道路前方車輛實時檢測與跟蹤研究,通過對YOLOv5s檢測層的改進[7-8],把車輛行駛視頻輸入檢測網絡,車輛檢測的準確率有明顯的提升。此外,通過增加目標跟蹤模塊,進一步擴展了該算法在車輛環境感知方面的應用。
機器視覺主要解決圖像分類、目標檢測、圖像分割三類問題。對于目標檢測來說,已經涌現了很多不同的算法,并且算法逐漸完善。YOL O 算法與Faster RCNN、Res Net等算法相比,將候選區和對象識別這兩個階段融合為一個階段,將圖片劃分成網格(Grid),每一個網格可以檢測網格中的目標,并且將全部格子含有的目標邊界框、定位的置信度以及全部類別的概率向量一次性預測出來,這樣就粗略地覆蓋了圖片的整個區域。YOLOv5是YOLO 系列物體識別中最先進的對象檢測技術,并且推理速度更快,YOLOv5按模型大小分為4個模型YOLOv5s、YOLOv5 m、YOLOv5l、YOLOv5x。YOLOv5s在YOLOv5的系列中不但深度最小而且特征圖的寬度也最小,因此其識別檢測的速度相對較快。后面的3種通過不斷加深、不斷加寬特征層來提高圖像識別的準確率。在YOLOv5中有多種因素能影響圖像識別準確率,損失函數對最終結果的影響不可忽略。
損失函數的作用為度量神經網絡預測信息與期望信息(標簽)的距離,預測信息越接近期望信息,損失函數值越小。YOLOv5s包含了3種損失函數[9-10]:(1)分類損失(Classification Loss)。在YOLOv5s中考慮到一個目標可能同時屬于多個類別,如“行人”“兒童”兩個結果,此時概率之和可能大于1,故采用二元交叉熵損失作為其分類失:
式中,N表示類別總個數;xi為當前類別預測值;yi為經過激活函數后得到的當前類別的概率;y*i為當前類別的真實值(0或1);Lclass為分類損失。
(2)定位損失(Localization Loss)。目標檢測想要框出檢測到的目標,就需要通過對邊界框所在的位置數據進行預測,YOLOv5s采用GIo U 作為定位損失:橙色2部分(包括藍色1和綠色3)即為最小方框C。C的面積減去預測框與真實框的面積,再比上C的面積,即可反映出真實框與預測框距離。
GIo U 損失計算公式如下:

圖1 損失函數示意圖
在GIo U 中,真實框與預測框距離越遠時,C的值也越大,C減去預測框與真實框面積的值也越大,最后趨近于1。那么真實框與預測框當越遠時,損失也越接近2。
文中把原模型的GIo U 改為CIo U 作為Y OL Ov5s的損失函數,即在Io U 損失后面添加預測框和目標框的懲罰項與一個影響因子,這個影響因子把預測框長寬比擬合目標框的長寬比考慮進去。
CIo U 具體的損失函數定義為:
式中,v是預測框和真實框長寬比例差值的歸一化:
α是權重系數:
CIo U 在考慮中心點距離和重疊面積的基礎上進一步考慮了長寬比,使得預測框更加符合真實框。
為了體現CIo U 對本文研究的影響,采用EIo U 作為損失函數與CIo U 作對比。EIo U 的損失函數為:
EIo U 在CIo U 的基礎上將縱橫比的損失項拆分成預測的寬高分別與最小外接框寬高的差值,優化了邊界框回歸任務中的樣本不平衡問題,減少了與目標框重疊較少的大量錨框對邊界框回歸的優化貢獻,使回歸過程專注于高質量錨框。
(3)置信度損失(Confidence Loss)。每個預測框的置信度表示這個框的可信度,置信度越大,表示預測框越靠譜,反之,則預測框越不接近真實框。用Sig moid函數代替Soft max來計算概率分布,損失函數采用BCEl oss。
YOLOv5s注意力機制是模仿人在觀察事物時,會將注意力集中在感興趣的區域,目前應用的比較多的是CBA M、SE、CA、ECA,本文把位置注意力(Coordinate Attention,CA)引入到YOLOv5s網絡中。位置注意力將通道注意力分解為兩個一維特征編碼過程,分別沿2個空間方向聚合特征。這樣可以沿一個空間方向保留精確的位置信息。將生成的特征圖分別編碼為一對方向感知和位置敏感的注意力特征圖,將其互補地應用于輸入特征圖,以增強關注對象的表示。

表1 引入注意力機制的部分網絡結構層
本次實驗主要是檢測路面上的車輛,YOLOv5s原模型用的是Coco數據集,其中車輛目標并不多,訓練出來的權重參數在車輛檢測的準確性方面不高,針對這種問題,研究建立新的數據集。對生活中常見的車輛拍照獲取原始數據集2 025張,如今生活中常見的車輛大小和樣式越來越多,大致可以分為出行代步的小型車(Tinycar)、短途載人車輛(Midcar)、中長途載人車輛(Bigcar)、小型運輸車輛(Smalltr uck)、大型運輸車輛(Bigtr uck)、油罐車(Oiltr uck)和一些社會中的特殊車輛(Specialcar),將車輛分為這7類可以在實際車輛檢測跟蹤過程中對不同車型在不同的距離設置不同的提示語,如果前方是社會中的特殊車輛(如警車、救護車),駕駛系統持續向駕駛員預警保持車距,注意避讓,給駕駛員更加舒適更加文明的駕駛體驗。
采用makesense在線標注工具對原始數據集中的圖片進行框選標注,接著導出yol o格式的文件。在YOLOv5s項目中新建數據集Mydata,劃分訓練集、驗證集以及測試集,在YOLOv5s框架內復制Coco.yaml文件并且修改其中的類別個數以及具體的類別,保存為Mydata.ya ml,數據集建立完成后開始對模型進行訓練。
本次的模型訓練機器選用的CPU 為Intel(R)Core(T M)i5-7300 HQ CPU@2.50 GHz,4 GB顯存,512 GB固態硬盤。使用Windows版本的Pytorch框架,將基于Pytorch深度學習框架的YOLOv5s模型嵌入到文中的項目中,由于設備配置無法用GPU 完成訓練,故采用CPU 對模型進行訓練。
在模型訓練前要進行超參數優化,良好的初始參數值能得到更好的最終結果,YOLOv5利用遺傳算法進行超參數的優化,文中的超參數設置如表2所示。

表2 超參數設置
對原模型YOLOv5s訓練300 輪,損失函數為EIo U 和損失函數為CIo U 且引入注意力機制的YOLOv5s訓練300輪分別得到圖3和圖4的PR 曲線,P表示精度(Precision),R 表示召回率(Recall),PR 曲線與坐標軸圍成的面積越大,表示該模型對該數據集效果越好。圖4與圖3相比,PR 曲線結果更好,說明YOLOv5損失函數CIo U 與EIo U 均優于GIo U。由圖4可見,當損失函數為CIo U 時,訓練的結果稍微優于EIo U。

圖2 數據集車輛類別

圖3 GIo U 作為損失函數的PR 曲線

圖4 CIo U 與EIo U 作為損失函數的PR 曲線
由圖4及表3、4可以看出,YOLOv5s使用CIo U 作為邊界框損失函數,訓練300輪后損失已經降低到0.01以下,精度可以達到0.98,召回率可以達到0.98。當Io U 閾值為0.5 時mAP值為0.99,當Io U 閾值為0.95 時mAP也能達到0.87。訓練結果與原模型相比得到了較大提升,可以將其用于車輛的檢測與跟蹤。

表3 CIo U 作為損失函數的訓練結果對比

表4 EIo U 作為損失函數的訓練結果對比
文中基于訓練完成的YOLOv5s 檢測模型,開展了目標跟蹤研究。在視頻檢測的過程中,增加幀數計數功能,將前一幀圖片上的物體打上標注,得到物體的中心點坐標,然后比較當前幀圖像與上一幀圖像中物體的坐標。當前后兩幀的同一目標的中心點移動距離小于規定值,認為是同一物體,對其進行追蹤[11]。遍歷當前幀與前一幀物體的中心點坐標,計算距離。如果距離小于20像素,認為是同一目標,記錄當前目標的索引以及當前幀中物體的中心目標。在后續的比較當中,比較當前幀物體的中心點與被追蹤目標物體的中心點之間的距離。如果當前幀中,上一幀跟蹤的對象不存在了,則刪除該對象的標記,如果當前幀中出現新的目標,則給新出現的目標打上標記,然后遍歷每一幀需要跟蹤的目標,在跟蹤目標的中心點畫圈,并且顯示出該目標的id。本文的目標跟蹤流程如圖5所示。

圖5 目標跟蹤流程圖
將車載攝像頭安裝在車輛前部,將車輛檢測視頻輸入網絡,在經過非極大值抑制之后,得到車輛預測框,在輸出圖像對預測框中心畫圈計數,存儲當前幀預測框像素中心點和預測框大小,若下一幀圖片中同一目標的車輛預測框變大且超過某一閾值,在輸出端輸出“靠近前車,注意安全!”的警示語,提醒駕駛員及時調整車輛行駛速度,保證行車安全。
(1)速度比較。YOLOv5s改進前后檢測速度對比如表5所示。由表5可知,在實際檢測時,同一設備上改進檢測模型前與改進模型后的檢測速度沒有區別,改進之前213層,改進(損失函數,引入注意力機制)之后270層,每秒10億次的浮點運算數數均為15.9 GFLOPs。所以本文對YOLOv5s模型的改進對車輛檢測速度沒有影響,即保證了車輛的檢測速度。

表5 YOLOv5s改進前后檢測速度對比
(2)精度比較。對于視頻流的物體檢測識別是將視頻中的圖片逐幀檢測,由于YOLOv5s檢測算法速度較快,在輸出端仍然能以視頻的方式輸出。把訓練好的最優模型權重參數應用于detect部分,把一段車輛行駛視頻輸入到YOLOv5 檢測端,視頻中某一幀如圖6 所示。由圖6 可見,改進損失函數后的YOLOv5檢測精度有所提高。前方車輛1、2、3均已不在實驗車輛的視野中,已經刪除了它們的標記,保留仍然存在車輛的標記id。在當前幀圖片發現距離前方車輛較近,此時系統向駕駛員發出預警。

圖6 實驗檢測結果對比圖
文中基于YOLOv5s檢測算法開展了目標車輛檢測和實時跟蹤的研究,研究結果表明:
(1)改進損失函數,對模型訓練得到最優權重參數,對比損失函數EIo U 與CIo U 對檢測模型的影響,發現本文應用CIo U 作為YOLOv5s在檢測車輛模型的損失函數更好,在實際檢測車輛時,所得到的檢測結果比在原有模型下得到的結果更好,在保證檢測速度的前提下,檢測的準確率有所提高。
(2)目標跟蹤模塊可以對前方車輛目標打上數字標簽,記錄車輛在像素中的實時坐標,一旦兩幀之間車輛的像素坐標發生較大變化,駕駛員可以通過對預測框的變化判斷前方車輛的行駛情況,及時調整車輛的跟蹤行為。