江漢大學智能制造學院 楊英彬 郭子彧 蔡利民
隨著城市的發(fā)展,城市交通流和人流密度成為城市道路交通擁擠的重要原因。隨著人工智能技術和計算機視覺技術的飛速發(fā)展,可以用來目標檢測的模型越來也多。在目標檢測中車輛檢測是非常重要的檢測目標之一。基于深度學習的目標檢測其檢測率非常之高并且有很強特征的提取能力。近幾年深度學習網絡在計算機視覺上因為AlexNet在ImageNet大賽上大放異彩而飛速發(fā)展。2014年VGGNet為了追求深層網絡的性能發(fā)現(xiàn)梯度會消失,但增加網絡的深度會提高性能。2015年ResNet網絡解決了梯度消失的問題,其模型收斂時間大大減少但尺度大的卷積核增加的網絡模型的計算量,使模型的檢測速度和訓練速度降低。在計算機視覺目標檢測中現(xiàn)有的方法分為兩種分別為two-stage和one-stage兩類。One-stage方法是單段檢測算法,其在檢測時單個激活映射來的邊框和預測的類,極大的提高了檢測的速度。SSD系列、YOLO系列、RetinaNet等是典型的代表。Two-stage方法生成的邊框會映射到feature map的區(qū)域,然后將該區(qū)域重新輸入到全連接層進行分類和回歸其檢測速度較慢,以faster-rcnn為代表。文本采用的YOLOv4方法進行車輛檢測。YOLOv4在COCO數(shù)據(jù)集上可以達到43.5%AP,速度高達65FPS。可以完成車輛實時檢測的任務。
YOLO(You Only Look Once)算法是基于深度學習的回歸方法由REDMOND J在2016年提出,將圖片分成S×S的網格,如果某個物體的中心落在網格當中,那么這個網格就負責預測這個物體。它對非自然圖像物體的檢測率遠遠高于DPM和RCNN系列檢測方法。如果圖像中每個格子包含多個物體例如鳥類卻只能檢測出其中一個。
YOLOV2對預測準確率、識別更多對象、速度這三個方面做了改進,提出聯(lián)合訓練法使用一種分層的觀點對物體進行分類用巨量的分類數(shù)據(jù)集數(shù)據(jù)來擴充檢測數(shù)據(jù)集。YOLO2也嘗試采用先驗框微調邊框的位置和檢測神經網絡中是否存在對象。

圖1 YOLOv4網絡結構
YOLOV3的模型相對于之前的模型復雜了很多,通過改變模型結構的大小來權衡速度和精度。采用darknet53網絡作為主干結構,使用殘差結構加強了主干提取特征的能力。YOLOv4算法主要通過CSPDarknet53網絡提取特征將圖片分成S×S的網格,目標檢測通過目標中心所在的網格完成,利用殘差網絡上采樣和下采樣對特征進行特征融合,使用SPP結構對不同尺度的最大池化后進行堆疊,最終經過度尺寸的特征提取得到目標的類別和位置。我們所熟知一般的卷積神經網絡,經過若干次池化和卷積,在全連接層后利用softmax分類或者sigmoid判斷物體是否存在。而對于yolo,它將一個圖片分成19×19的網格,在每個網格里尋找物體。物體的表現(xiàn)形式為(Pc,bx,by,bh,bw,c),Pc代表物體存在與否,x,y代表方框中心,h高度,w寬度,都是相對于整體1的數(shù)字,c代表類別。c為(c1,c2……)每個cn都是1或0。而針對一個19×19方格出現(xiàn)多個物體,用anchor boxes解決。假如有80類要探測,且每個方格至多可能出現(xiàn)5個個體。YOLOv4網絡結構如圖1所示。
本文利用深度學習對車輛進行檢測,主要分為兩個階段分別為車輛模型訓練階段和車輛模型檢測階段。在訓練之前需要首先制作相應的VOC數(shù)據(jù)集,生成訓練的樣本。將VOC的數(shù)據(jù)集輸送到神經網絡進行訓練,提取三個網絡特征層并進行5次卷積操作之后下采樣加強特征融合獲得有效特征,最后將車輛檢測的結果輸出出來。
為了對圖片中設定類別進行檢測,每個網格都需要預測B個邊界框和分別屬于設定類別的條件概率并且在邊界框中輸出目標類別和邊界框準確度的置度信息Conf(Object)。當出現(xiàn)一個物體被多次框的時候,就需要用到交并比(Intersection over Union)簡稱IoU,IoU 計算的是預測的邊框和真實的邊框的交集和并集的比值。

其中,box(pred)為真實邊界框,box(Truth)為預測邊界框。

Pc(Object)表示目標物是否落入候選的網格中,如果有就是1,沒有就是0。
損失函數(shù)的設計是為了提高精度而不增加推斷時間。傳統(tǒng)的目標檢測器一般采用均方誤差直接對邊界框的中心點坐標和寬度和高度進行回歸并沒有考慮對象的完整性。原模型損失函數(shù)將邊界框坐標預測誤差、物體識別類別誤差、邊界框置信誤差已經考慮在內。本設計對損失函數(shù)進行了改進,給交叉熵函數(shù)添加調制系數(shù)α解決數(shù)據(jù)集樣本不均勻的問題。

Iijobj為第i個網格區(qū)域出現(xiàn)了感興趣目標,為第i個區(qū)域預測的類別是實際目標類別的概率,為第i個區(qū)域為實際目標類別的概率。
與此同時根據(jù) YOLOv3 的啟發(fā),為了提高車輛檢測的精準度,其 YOLOv4 的損失函數(shù)利用高斯函數(shù)來進行改進,增加對車輛邊界框可靠性判斷。用對邊界框x坐標預測值進行修改來增加可靠性判斷計算公式如下:


圖2 數(shù)據(jù)標注
上式中tx:邊界框的中心坐標相對于網格左上角x坐標的偏移量;utx:邊框的坐標。
本文采用的VOC數(shù)據(jù)集,對車輛進行識別訓練,該數(shù)據(jù)集有1890張照片,按照9:1的比例分為訓練集和測試集,通過labelImg標注工具對其進行標注信息。標注過程為將圖片放入標注工具中手動選框對圖片中的車輛進行框取如圖2綠色選框所示。
本實驗平臺配置為:顯卡860,顯存4G,CPU為Inter Core i5-5800,內存16G,Windows10操作系統(tǒng),環(huán)境為tensorflow和keras。本實驗設定的最大學習效率為0.001,衰減系數(shù)是0.005,在中途中斷訓練后可以解凍訓練。
本次實驗數(shù)據(jù)集有些圖片比較難分辨因為在圖片中占比比較小,所以將送入網絡的圖片分辨率設置為608×608以此來提高檢測的精準度可以檢測多個小物體。在訓練過程中還使用不同尺寸大小的圖片進行訓練,來提高訓練模型的魯棒性。
針對采集數(shù)據(jù)集數(shù)量有限的問題,先用制作的目標檢測數(shù)據(jù)集在同等環(huán)境下分別對 YOLOv4 網絡和本文改進的 YOLOv4 網絡預訓練,將預訓練參數(shù)作為模型初始參數(shù)。實驗發(fā)現(xiàn),模型在經過7000迭代次數(shù)之后,訓練損失值快速下降并且最終達到一個較低值水平。本文改進的 YOLOv4 模型和原始 YOLOv4 網絡在車輛識別中的檢測結果對比如表 1 所示。

圖3 檢測效果1
本文通過對損失函數(shù)改進給交叉熵函數(shù)添加調制系數(shù)α,用對邊界框x坐標預測值進行修改來增加可靠性判斷,通過實驗對比發(fā)現(xiàn)本文算法相較于原來的YOLOv4算法在檢測時間和速度上都有了提升,檢測的平均精度也比原來的算法高出2%。

表1 YOLOv4與改進算法對比

圖4 檢測效果2
本次實驗訓練出的模型因為數(shù)據(jù)集不夠多在測試集中平均檢測精度為93%,能夠較好的識別車輛,在測試視頻中對視頻中的車輛進行檢測。
檢測的效果如圖3、4所示,其分別對檢測視頻中不同時間段的檢測效果進行截圖。
通過對攝像頭采集的視頻進行檢測發(fā)現(xiàn)該訓練好的模型能夠較好的識別車輛,并且可以對車輛進行實時的檢測能夠滿足實時性的要求。
總結:本文運用YOLOv4算法并對其進行損失函數(shù)進行改進給交叉熵函數(shù)添加調制系數(shù)α,用對邊界框x坐標預測值進行修改并進行訓練,利用訓練好的模型對車輛進行識別,通過與原來算法的對比發(fā)現(xiàn)檢測的時間、速度和平均精準度有了提升并且能夠對視頻中的車輛進行實時性檢測,由于數(shù)據(jù)集不夠多訓練的精準度還比較低,接下來講制作大量的數(shù)據(jù)集進行訓練。