邢鎮(zhèn)委, 伋 淼, 張夢龍
(安徽理工大學(xué) 電氣與信息工程學(xué)院, 安徽 淮南 232001)
隨著自動駕駛、實時監(jiān)控系統(tǒng)和智能交通系統(tǒng)等技術(shù)的快速發(fā)展,對于道路車輛檢測的研究也越來越廣泛。現(xiàn)有的車輛檢測算法主要分為基于運動模型的算法、基于特征模型的算法和基于卷積神經(jīng)網(wǎng)絡(luò)的算法3種,其中基于卷積神經(jīng)網(wǎng)絡(luò)的道路車輛檢測算法實用性最強[1]?;诰矸e神經(jīng)網(wǎng)絡(luò)的車輛檢測算法可以分為兩類:一類檢測精度高,但計算量大,導(dǎo)致檢測速度慢,典型的有RCNN、Fast RCNN、Faster RCNN等;另一類通過對邊界框進行回歸,將圖像中目標(biāo)所在的位置進行框選,這類算法復(fù)雜性低,能夠在更短的時間內(nèi)檢測出目標(biāo),但檢測準(zhǔn)確率會有所下降,典型的有YOLO系列、SSD等[2]。
目前,對于車輛檢測效果的影響主要是光照條件和視頻質(zhì)量。在白天,車輛的邊緣和角落等特征很容易被檢測到,但是在光照條件差的環(huán)境下,這些特征是不容易被檢測到的。此外,一些距離很遠的車輛在圖像中占據(jù)的區(qū)域很小,檢測過程中經(jīng)常容易被漏檢[3]。針對以上問題,提出了一種改進YOLOv3-tiny的道路車輛檢測算法,設(shè)計一種魯棒性強更加輕量化的車輛檢測模型。同時,使用k-means++聚類算法選取錨點預(yù)測邊界框,可以有效地解決道路車輛檢測過程中檢測速率和檢測精度不能同時滿足的問題。
YOLOv3-tiny是YOLOv3目標(biāo)檢測網(wǎng)絡(luò)的簡化版本,網(wǎng)絡(luò)復(fù)雜性更低,檢測速度更快。YOLOv3和YOLOv3-tiny都能夠同時檢測多個類別的物體,并且在MS COCO數(shù)據(jù)集上進行測試都取得較好的效果[4]。原始YOLOv3-tiny通過卷積層對車輛特征進行提取,在每一個卷積層后都會有一個最大池化層,由此構(gòu)成了該網(wǎng)絡(luò)的特征提取部分。最大池化層中,前5個層中的步長為2,最后一個層的步長為1。輸入不同尺寸的圖像,經(jīng)過7個不同卷積層的處理之后輸出的大小也不一樣[5],模型中特征提取網(wǎng)絡(luò)最后輸出的特征圖尺寸為13×13。YOLOv3-tiny網(wǎng)絡(luò)結(jié)構(gòu)如圖1所示。
目標(biāo)檢測技術(shù)在實際應(yīng)用中,容易受復(fù)雜環(huán)境影響,導(dǎo)致各種檢測算法的性能都不一樣。因此,需要相關(guān)的參數(shù)來評價檢測算法的性能。本文主要選用檢測速率和均值平均精度(mAP)這兩種指標(biāo)來評價算法性能。
圖1 YOLOv3-tiny網(wǎng)絡(luò)結(jié)構(gòu)
檢測速率計算公式:
均值平均精度計算公式:
其中:Pclass是對每張圖像進行檢測,檢測出來圖像所屬類別的精度;Ntotal為全部測試集圖像里面含有車輛圖像的張數(shù);PclassAve代表對于不同車輛類型檢測的平均精度;Nclasses代表車輛類型個數(shù);mAP大小在[0,1]區(qū)間內(nèi),數(shù)值越大,分類器性能越好,檢測算法精度越高[6]。
YOLOv3-tiny算法在目標(biāo)檢測方面有較好的性能,但對于復(fù)雜道路環(huán)境的車輛檢測并不完全適用,需要對YOLOv3-tiny網(wǎng)絡(luò)的特征提取部分進行改進,以建立更加精確的車輛檢測模型。改進后的的YOLOv3-tiny算法由13個卷積層和4個shortcut層組成,特征圖每經(jīng)過一次shortcut層相當(dāng)于經(jīng)歷了一次下采樣,shortcut層在網(wǎng)絡(luò)中起到殘差連接的作用。將最大池化層從原始的YOLOv3-tiny網(wǎng)絡(luò)中移除,在特征提取網(wǎng)絡(luò)部分后面加入空間金字塔池化(SPP)。改進后的網(wǎng)絡(luò)在保持檢測速度的同時,能夠提取豐富的特征進行檢測;SPP不用反復(fù)處理卷積層的特征,可以在整張圖片的單個通道內(nèi)提取特征,能夠降低計算的復(fù)雜程度,因此在使用SPP之后特征提取速度能夠改善。改進后的網(wǎng)絡(luò)結(jié)構(gòu)如圖2所示。
k-means聚類算法通過對檢測對象的距離屬性進行劃分聚類,算法簡單易懂,被許多網(wǎng)絡(luò)模型廣泛采用。YOLOv3-tiny使用k-means算法來選擇錨點框(anchor boxes),必須提前指定k個聚類,在有噪聲的圖像中表現(xiàn)效果差。本文采用k-means++算法來計算anchor[7],算法步驟如下:
(1)打亂數(shù)據(jù)選擇聚類中心;
(2)計算最近聚類中心與每個樣本的距離;
(3)選擇距離較大的樣本作為新的聚類中心;
(4)重復(fù)步驟(2)和步驟(3),直到選出k個聚類中心;
(5)根據(jù)這k個中心進行標(biāo)準(zhǔn)k-means聚類。
本文輸入圖像的尺寸大小為416×416,用k-means++算法計算出來的6個錨點分別(16×15)、(42×40)、(95×73)、(115×165)、(256×168)、(329×14)。圖像中的每個單元格通過3個錨點框預(yù)測邊界框,前3個錨點用于最后的YOLO層檢測較小的車輛,后3個錨點用于在第一個YOLO檢測層檢測較大的車輛。
圖2 改進后的網(wǎng)絡(luò)結(jié)構(gòu)
車輛檢測的準(zhǔn)確性主要依賴于邊界框回歸,選擇一種合適的損失函數(shù)用于邊界框回歸是一項十分重要的任務(wù)。本文使用目標(biāo)定位損失、目標(biāo)類別損失以及目標(biāo)置信度損失來構(gòu)成改進后網(wǎng)絡(luò)總體損失函數(shù)[8]。其中,目標(biāo)定位損失Lloc采用DIoU損失代替原有的均方差損失,能夠優(yōu)化總損失,改善回歸精度。改進后網(wǎng)絡(luò)總體損失函數(shù)公式:
其中:ρ2(b,bgt)是真實框和預(yù)測框中心點之間的歐氏距離;IoU是真實框和預(yù)測框面積的交并比;c是覆蓋真實框和預(yù)測框的最小封閉區(qū)域的對角線長度。
實驗中制作的數(shù)據(jù)集是從3個公開數(shù)據(jù)集PASCAL VOC2007、PASCAL VOC2012、MS COCO2014中抽取出來的,主要包括3類car、bus和truck,包含訓(xùn)練樣本4 000張、測試樣本1 000張。實驗計算機配置如表1所示。
表1 實驗計算機配置
模型訓(xùn)練時的網(wǎng)絡(luò)配置參數(shù)如表2所示。模型訓(xùn)練過程中總共迭代50 200次,損失函數(shù)的變化曲線如圖3所示。從圖3可以看出,網(wǎng)絡(luò)迭代在2 500次之前,Loss值下降迅速;網(wǎng)絡(luò)迭代到4 500次左右時收斂曲線慢慢變平緩[9]。
表2 實驗網(wǎng)絡(luò)配置
圖3 損失函數(shù)收斂曲線
為了驗證改進后算法的檢測性能,將改進后的YOLOv3-tiny算法與改進前的算法、SSD算法、Faster-RCNN算法進行比較。4種算法模型使用同一個數(shù)據(jù)集進行訓(xùn)練,訓(xùn)練完成之后使用檢測速率和均值平均精度(mAP)來對比分析其檢測性能。實驗結(jié)果如表3所示。
表3 4種算法的性能對比
由表3可以看出:改進后YOLOv3-tiny算法的mAP為89.57%,相比于原YOLOv3-tiny算法的mAP提升了6.32%,網(wǎng)絡(luò)對車輛識別的精度有所提升;當(dāng)模型的檢測速率保持在25幀/s以上時,能夠滿足目標(biāo)檢測實時性的要求。改進后YOLOv3-tiny網(wǎng)絡(luò)在檢測速率上相比于原網(wǎng)絡(luò)稍微有所下降,這是由于改進后算法網(wǎng)絡(luò)層數(shù)增加所導(dǎo)致的,但改進后的算法對車輛的檢測速度可以保持在29.7幀/s,能夠滿足需求。綜合各方面來看,改進后YOLOv3-tiny算法可以在保證檢測速率的基礎(chǔ)上,提高識別的精度,所以本文提出改進后YOLOv3-tiny算法適用于道路車輛檢測的場景中[10]。
為了更直觀的展示改進后算法的檢測性能并驗證其在實際場景中的應(yīng)用效果,選取包含小目標(biāo)、目標(biāo)相互遮擋、霧天環(huán)境等情況的圖像,不同檢測算法得到的檢測結(jié)果如圖4和圖5所示。從圖4和圖5可以看出,原始YOLOv3-tiny和SSD算法對于小目標(biāo)車輛、車輛相互遮擋以及霧天環(huán)境下車輛特征不突出這幾種情況下的檢測效果不太理想,很容易產(chǎn)生漏檢,甚至還會出現(xiàn)誤檢現(xiàn)象,如圖4(c)中SSD算法誤將卡車檢測為公交車。改進后的YOLOv3-tiny算法對于以上幾種情況的車輛檢測效果可以與Faster-RCNN算法相媲美,由于Faster-RCNN算法對車輛的檢測速率過于低下,根本無法滿足對于車輛實時性檢測的需求。因此,在道路車輛檢測的任務(wù)中綜合各方面情況來看,改進后的YOLOv3-tiny算法的整體性能高于Faster-RCNN、原始YOLOv3-tiny以及SSD算法。
(a)改進后的YOLOv3-tiny (b)YOLOv3-tiny
(c)SSD (d)Faster-RCNN
(a)改進后的YOLOv3-tiny (b)YOLOv3-tiny
(c)SSD (d)Faster-RCNN
在YOLOv3-tiny目標(biāo)檢測算法的基礎(chǔ)上,筆者提出了一種改進YOLOv3-tiny車輛檢測算法。將空間金字塔池化添加到網(wǎng)絡(luò)結(jié)構(gòu)中的特征提取部分,使網(wǎng)絡(luò)能夠提取更加完善的圖像特征;使用k-means++聚類算法實現(xiàn)錨點預(yù)測車輛的邊界框,能夠大大提升網(wǎng)絡(luò)檢測速率;在損失函數(shù)中,用DIoU損失和均方差損失,減少邊界框回歸的誤差,增強網(wǎng)絡(luò)模型的性能。實驗結(jié)果表明,本文提出的改進YOLOv3-tiny車輛檢測算法平均精度均值達到89.57%,在一些復(fù)雜道路環(huán)境下能取得不錯的檢測效果。