江漢大學(xué)智能制造學(xué)院 楊英彬 郭子彧 蔡利民
隨著城市的發(fā)展,城市交通流和人流密度成為城市道路交通擁擠的重要原因。隨著人工智能技術(shù)和計算機視覺技術(shù)的飛速發(fā)展,可以用來目標(biāo)檢測的模型越來也多。在目標(biāo)檢測中車輛檢測是非常重要的檢測目標(biāo)之一?;谏疃葘W(xué)習(xí)的目標(biāo)檢測其檢測率非常之高并且有很強特征的提取能力。近幾年深度學(xué)習(xí)網(wǎng)絡(luò)在計算機視覺上因為AlexNet在ImageNet大賽上大放異彩而飛速發(fā)展。2014年VGGNet為了追求深層網(wǎng)絡(luò)的性能發(fā)現(xiàn)梯度會消失,但增加網(wǎng)絡(luò)的深度會提高性能。2015年ResNet網(wǎng)絡(luò)解決了梯度消失的問題,其模型收斂時間大大減少但尺度大的卷積核增加的網(wǎng)絡(luò)模型的計算量,使模型的檢測速度和訓(xùn)練速度降低。在計算機視覺目標(biāo)檢測中現(xiàn)有的方法分為兩種分別為two-stage和one-stage兩類。One-stage方法是單段檢測算法,其在檢測時單個激活映射來的邊框和預(yù)測的類,極大的提高了檢測的速度。SSD系列、YOLO系列、RetinaNet等是典型的代表。Two-stage方法生成的邊框會映射到feature map的區(qū)域,然后將該區(qū)域重新輸入到全連接層進行分類和回歸其檢測速度較慢,以faster-rcnn為代表。文本采用的YOLOv4方法進行車輛檢測。YOLOv4在COCO數(shù)據(jù)集上可以達到43.5%AP,速度高達65FPS??梢酝瓿绍囕v實時檢測的任務(wù)。
YOLO(You Only Look Once)算法是基于深度學(xué)習(xí)的回歸方法由REDMOND J在2016年提出,將圖片分成S×S的網(wǎng)格,如果某個物體的中心落在網(wǎng)格當(dāng)中,那么這個網(wǎng)格就負責(zé)預(yù)測這個物體。它對非自然圖像物體的檢測率遠遠高于DPM和RCNN系列檢測方法。如果圖像中每個格子包含多個物體例如鳥類卻只能檢測出其中一個。
YOLOV2對預(yù)測準(zhǔn)確率、識別更多對象、速度這三個方面做了改進,提出聯(lián)合訓(xùn)練法使用一種分層的觀點對物體進行分類用巨量的分類數(shù)據(jù)集數(shù)據(jù)來擴充檢測數(shù)據(jù)集。YOLO2也嘗試采用先驗框微調(diào)邊框的位置和檢測神經(jīng)網(wǎng)絡(luò)中是否存在對象。
圖1 YOLOv4網(wǎng)絡(luò)結(jié)構(gòu)
YOLOV3的模型相對于之前的模型復(fù)雜了很多,通過改變模型結(jié)構(gòu)的大小來權(quán)衡速度和精度。采用darknet53網(wǎng)絡(luò)作為主干結(jié)構(gòu),使用殘差結(jié)構(gòu)加強了主干提取特征的能力。YOLOv4算法主要通過CSPDarknet53網(wǎng)絡(luò)提取特征將圖片分成S×S的網(wǎng)格,目標(biāo)檢測通過目標(biāo)中心所在的網(wǎng)格完成,利用殘差網(wǎng)絡(luò)上采樣和下采樣對特征進行特征融合,使用SPP結(jié)構(gòu)對不同尺度的最大池化后進行堆疊,最終經(jīng)過度尺寸的特征提取得到目標(biāo)的類別和位置。我們所熟知一般的卷積神經(jīng)網(wǎng)絡(luò),經(jīng)過若干次池化和卷積,在全連接層后利用softmax分類或者sigmoid判斷物體是否存在。而對于yolo,它將一個圖片分成19×19的網(wǎng)格,在每個網(wǎng)格里尋找物體。物體的表現(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網(wǎng)絡(luò)結(jié)構(gòu)如圖1所示。
本文利用深度學(xué)習(xí)對車輛進行檢測,主要分為兩個階段分別為車輛模型訓(xùn)練階段和車輛模型檢測階段。在訓(xùn)練之前需要首先制作相應(yīng)的VOC數(shù)據(jù)集,生成訓(xùn)練的樣本。將VOC的數(shù)據(jù)集輸送到神經(jīng)網(wǎng)絡(luò)進行訓(xùn)練,提取三個網(wǎng)絡(luò)特征層并進行5次卷積操作之后下采樣加強特征融合獲得有效特征,最后將車輛檢測的結(jié)果輸出出來。
為了對圖片中設(shè)定類別進行檢測,每個網(wǎng)格都需要預(yù)測B個邊界框和分別屬于設(shè)定類別的條件概率并且在邊界框中輸出目標(biāo)類別和邊界框準(zhǔn)確度的置度信息Conf(Object)。當(dāng)出現(xiàn)一個物體被多次框的時候,就需要用到交并比(Intersection over Union)簡稱IoU,IoU 計算的是預(yù)測的邊框和真實的邊框的交集和并集的比值。
其中,box(pred)為真實邊界框,box(Truth)為預(yù)測邊界框。
Pc(Object)表示目標(biāo)物是否落入候選的網(wǎng)格中,如果有就是1,沒有就是0。
損失函數(shù)的設(shè)計是為了提高精度而不增加推斷時間。傳統(tǒng)的目標(biāo)檢測器一般采用均方誤差直接對邊界框的中心點坐標(biāo)和寬度和高度進行回歸并沒有考慮對象的完整性。原模型損失函數(shù)將邊界框坐標(biāo)預(yù)測誤差、物體識別類別誤差、邊界框置信誤差已經(jīng)考慮在內(nèi)。本設(shè)計對損失函數(shù)進行了改進,給交叉熵函數(shù)添加調(diào)制系數(shù)α解決數(shù)據(jù)集樣本不均勻的問題。
Iijobj為第i個網(wǎng)格區(qū)域出現(xiàn)了感興趣目標(biāo),為第i個區(qū)域預(yù)測的類別是實際目標(biāo)類別的概率,為第i個區(qū)域為實際目標(biāo)類別的概率。
與此同時根據(jù) YOLOv3 的啟發(fā),為了提高車輛檢測的精準(zhǔn)度,其 YOLOv4 的損失函數(shù)利用高斯函數(shù)來進行改進,增加對車輛邊界框可靠性判斷。用對邊界框x坐標(biāo)預(yù)測值進行修改來增加可靠性判斷計算公式如下:
圖2 數(shù)據(jù)標(biāo)注
上式中tx:邊界框的中心坐標(biāo)相對于網(wǎng)格左上角x坐標(biāo)的偏移量;utx:邊框的坐標(biāo)。
本文采用的VOC數(shù)據(jù)集,對車輛進行識別訓(xùn)練,該數(shù)據(jù)集有1890張照片,按照9:1的比例分為訓(xùn)練集和測試集,通過labelImg標(biāo)注工具對其進行標(biāo)注信息。標(biāo)注過程為將圖片放入標(biāo)注工具中手動選框?qū)D片中的車輛進行框取如圖2綠色選框所示。
本實驗平臺配置為:顯卡860,顯存4G,CPU為Inter Core i5-5800,內(nèi)存16G,Windows10操作系統(tǒng),環(huán)境為tensorflow和keras。本實驗設(shè)定的最大學(xué)習(xí)效率為0.001,衰減系數(shù)是0.005,在中途中斷訓(xùn)練后可以解凍訓(xùn)練。
本次實驗數(shù)據(jù)集有些圖片比較難分辨因為在圖片中占比比較小,所以將送入網(wǎng)絡(luò)的圖片分辨率設(shè)置為608×608以此來提高檢測的精準(zhǔn)度可以檢測多個小物體。在訓(xùn)練過程中還使用不同尺寸大小的圖片進行訓(xùn)練,來提高訓(xùn)練模型的魯棒性。
針對采集數(shù)據(jù)集數(shù)量有限的問題,先用制作的目標(biāo)檢測數(shù)據(jù)集在同等環(huán)境下分別對 YOLOv4 網(wǎng)絡(luò)和本文改進的 YOLOv4 網(wǎng)絡(luò)預(yù)訓(xùn)練,將預(yù)訓(xùn)練參數(shù)作為模型初始參數(shù)。實驗發(fā)現(xiàn),模型在經(jīng)過7000迭代次數(shù)之后,訓(xùn)練損失值快速下降并且最終達到一個較低值水平。本文改進的 YOLOv4 模型和原始 YOLOv4 網(wǎng)絡(luò)在車輛識別中的檢測結(jié)果對比如表 1 所示。
圖3 檢測效果1
本文通過對損失函數(shù)改進給交叉熵函數(shù)添加調(diào)制系數(shù)α,用對邊界框x坐標(biāo)預(yù)測值進行修改來增加可靠性判斷,通過實驗對比發(fā)現(xiàn)本文算法相較于原來的YOLOv4算法在檢測時間和速度上都有了提升,檢測的平均精度也比原來的算法高出2%。
表1 YOLOv4與改進算法對比
圖4 檢測效果2
本次實驗訓(xùn)練出的模型因為數(shù)據(jù)集不夠多在測試集中平均檢測精度為93%,能夠較好的識別車輛,在測試視頻中對視頻中的車輛進行檢測。
檢測的效果如圖3、4所示,其分別對檢測視頻中不同時間段的檢測效果進行截圖。
通過對攝像頭采集的視頻進行檢測發(fā)現(xiàn)該訓(xùn)練好的模型能夠較好的識別車輛,并且可以對車輛進行實時的檢測能夠滿足實時性的要求。
總結(jié):本文運用YOLOv4算法并對其進行損失函數(shù)進行改進給交叉熵函數(shù)添加調(diào)制系數(shù)α,用對邊界框x坐標(biāo)預(yù)測值進行修改并進行訓(xùn)練,利用訓(xùn)練好的模型對車輛進行識別,通過與原來算法的對比發(fā)現(xiàn)檢測的時間、速度和平均精準(zhǔn)度有了提升并且能夠?qū)σ曨l中的車輛進行實時性檢測,由于數(shù)據(jù)集不夠多訓(xùn)練的精準(zhǔn)度還比較低,接下來講制作大量的數(shù)據(jù)集進行訓(xùn)練。