賈淑滟
(山西旅游職業(yè)學(xué)院 山西太原 030031)
隨著計(jì)算機(jī)視覺(jué)和深度學(xué)習(xí)的迅速發(fā)展,道路車(chē)輛檢測(cè)技術(shù)逐漸成為自動(dòng)駕駛系統(tǒng)和智能交通系統(tǒng)的重要組成部分。它要求檢測(cè)器快速實(shí)時(shí)檢測(cè)車(chē)輛,以檢測(cè)交通監(jiān)控中的異常情況,如交通擁堵、違章停車(chē)等[1]。基于運(yùn)動(dòng)的模型包括背景差分、光流和幀減法。背景差分網(wǎng)絡(luò)是基于高斯混合模型[2]通過(guò)區(qū)分前景和背景來(lái)檢測(cè)車(chē)輛。而在光流方法中,特征向量的像素由模型進(jìn)行定位,然后對(duì)這些向量像素進(jìn)行跟蹤。顯然這很耗時(shí),存在復(fù)雜性問(wèn)題[3],無(wú)法大量應(yīng)用。而幀相減技術(shù)是通過(guò)計(jì)算兩個(gè)或多個(gè)幀之間的差分來(lái)檢測(cè)運(yùn)動(dòng)中的車(chē)輛,但這仍不適合用于檢測(cè)快速的運(yùn)動(dòng)。基于特征的模型有梯度方向直方圖、Haar特征和SURF特征等。梯度方向直方圖特征具有豐富的描述性,根據(jù)梯度對(duì)像素進(jìn)行分組。使用Haar特征可以指出感興趣的區(qū)域[4]。SURF為尺度不變特征變換的描述符,在目標(biāo)標(biāo)記、車(chē)輛零件識(shí)別和物體識(shí)別方面非常有效[5]。早期的基于可變形部件的模型[6]在使用HOG特征和分類(lèi)器進(jìn)行檢測(cè)時(shí)表現(xiàn)更好。卷積神經(jīng)網(wǎng)絡(luò)方法,如R-CNN,使用選擇性搜索來(lái)生成建議區(qū)域[7]。而后深度學(xué)習(xí)取得了一些進(jìn)展,出現(xiàn)了Fast-RCNN和Faster-RCNN,實(shí)現(xiàn)了最先進(jìn)的結(jié)果[8-10]。Mask-RCNN是Faster-RCNN的進(jìn)一步擴(kuò)展,旨在解決定位像素級(jí)別目標(biāo)實(shí)例分割的問(wèn)題,但檢測(cè)率低[11]。對(duì)檢測(cè)到的目標(biāo)進(jìn)行跟蹤對(duì)于分析和預(yù)測(cè)車(chē)輛的運(yùn)動(dòng)至關(guān)重要。跟蹤器主要分為基于CNN和基于RNN[12]?;贑NN的跟蹤器由于其卓越的特征提取能力和分類(lèi)技術(shù)而在跟蹤方面表現(xiàn)出色。此外,現(xiàn)有的工作主要集中在檢測(cè)通用物體,而不是車(chē)輛。因此,車(chē)輛檢測(cè)是一個(gè)特例,如果將物體檢測(cè)網(wǎng)絡(luò)直接用于檢測(cè)車(chē)輛,顯然會(huì)存在許多問(wèn)題。車(chē)輛檢測(cè)需要低級(jí)別的特征圖和小縱橫比的圖像,并且要求足夠快地進(jìn)行高精度的實(shí)時(shí)預(yù)測(cè)。當(dāng)具備了設(shè)計(jì)車(chē)輛檢測(cè)網(wǎng)絡(luò)的所有必要細(xì)節(jié)后,如何合適的基礎(chǔ)網(wǎng)絡(luò)作為構(gòu)建該車(chē)輛檢測(cè)器網(wǎng)絡(luò)模型也尤為重要。文章基于YOLOV3-tiny網(wǎng)絡(luò)結(jié)構(gòu),對(duì)其特征提取部分進(jìn)行改進(jìn),以提升其在車(chē)輛檢測(cè)上的速度和精度。具體來(lái)說(shuō),將空間金字塔結(jié)構(gòu)和不同規(guī)模的聚集層應(yīng)用在現(xiàn)有網(wǎng)絡(luò)中,用于連接不同層(感受野)之間的語(yǔ)義特征,并使用回歸損失和廣義交并比損失來(lái)增強(qiáng)模型的特征學(xué)習(xí)和車(chē)輛檢測(cè)能力。
YOLOv3-tiny網(wǎng)絡(luò)是YOLOv3物體檢測(cè)網(wǎng)絡(luò)的微型版本。這些網(wǎng)絡(luò)在MS COCO數(shù)據(jù)集上進(jìn)行訓(xùn)練,取得了較好的效果。文章在YOLOv3-tiny的基礎(chǔ)上,新增了了空間特征金字塔池化層[17]和廣義交并比損失(Intersection over Union,IoU)[18]作為回歸任務(wù)的監(jiān)督信號(hào),也用作最終的評(píng)測(cè)指標(biāo)。K-means++算法用于為預(yù)測(cè)目標(biāo)選擇合適的邊界框。文章針對(duì)道路車(chē)輛檢測(cè)任務(wù)進(jìn)行而設(shè)計(jì),因此僅使用車(chē)輛相關(guān)的類(lèi)別數(shù)據(jù)進(jìn)行訓(xùn)練。圖1展示了文章方法的網(wǎng)絡(luò)結(jié)構(gòu)示意圖。
圖1 框架結(jié)構(gòu)示意圖
1.1網(wǎng)絡(luò)結(jié)構(gòu)
YOLO網(wǎng)絡(luò)最早是由Redmon等人提出的[16],它在一個(gè)流程中處理圖像以快速檢測(cè)出目標(biāo)物體。為了實(shí)現(xiàn)這一目的,建立一個(gè)良好的特征提取網(wǎng)絡(luò)是非常重要的。如果網(wǎng)絡(luò)提取更多豐富的特征,那么就有更大概率能夠準(zhǔn)確地檢測(cè)對(duì)象。YOLO使用GoogleNet[19]作為特征提取網(wǎng)絡(luò)。YOLOv2和YOLOv3則分別使用Darknet19和Darknet53作為特征提取網(wǎng)絡(luò)[15,16]。YOLOv3-tiny網(wǎng)絡(luò)雖然速度很快,但檢測(cè)結(jié)果不夠準(zhǔn)確。因此,需要進(jìn)行一些改進(jìn)來(lái)構(gòu)建一個(gè)強(qiáng)大的車(chē)輛檢測(cè)網(wǎng)絡(luò),具體網(wǎng)絡(luò)結(jié)構(gòu)如表1所示。
表1 網(wǎng)絡(luò)結(jié)構(gòu)細(xì)節(jié)
1.2特征提取層
最初的YoLoV3-tiny網(wǎng)絡(luò)有10個(gè)卷積層和6個(gè)最大池層作為特征提取器。有關(guān)網(wǎng)絡(luò)的詳細(xì)信息參考[16]。雖然該網(wǎng)絡(luò)在目標(biāo)檢測(cè)方面表現(xiàn)較好,但其處理速度和計(jì)算復(fù)雜度較高。對(duì)于車(chē)輛檢測(cè)模型,應(yīng)當(dāng)對(duì)其進(jìn)行進(jìn)一步的簡(jiǎn)化,以構(gòu)建可靠的車(chē)輛檢測(cè)器。
文章方法主要由13個(gè)卷積層組成,它們之間通過(guò)跳層連接來(lái)實(shí)現(xiàn)特征聚合用作特征提取。同時(shí)移除了YOLOv3-tiny中卷積層后的最大池化層,然后在特征提取層之后并入空間金字塔池化網(wǎng)絡(luò)。該網(wǎng)絡(luò)旨在提取豐富的特征進(jìn)行檢測(cè),同時(shí)該過(guò)程不會(huì)很慢,空間金字塔結(jié)構(gòu)實(shí)現(xiàn)了計(jì)算復(fù)雜性的最小化。它在一次前向過(guò)程中從整個(gè)圖像輸入到輸出特征圖。當(dāng)使用空間金字塔時(shí),卷積層的特征不會(huì)被反復(fù)處理,因此網(wǎng)絡(luò)速度大大提高。
1.3錨點(diǎn)框聚類(lèi)
YOLOv3-tiny使用k-means聚類(lèi)來(lái)選擇錨框。k-means是一種基于距離的聚類(lèi)算法,它根據(jù)目標(biāo)對(duì)象的屬性對(duì)其進(jìn)行聚類(lèi),被很多網(wǎng)絡(luò)模型廣泛使用。聚類(lèi)的每個(gè)簇由簇的中心和這些簇的質(zhì)心的交點(diǎn)來(lái)定義。它是通過(guò)為每個(gè)目標(biāo)預(yù)測(cè)最接近聚類(lèi)的種子點(diǎn)并計(jì)算種子點(diǎn)作為聚類(lèi)的當(dāng)前平均點(diǎn)的質(zhì)心來(lái)進(jìn)行初始化。但該算法存在很多缺點(diǎn),例如k個(gè)數(shù)的簇必須提前指定,在有噪聲的圖像中表現(xiàn)不夠魯棒。因此,錨是從k-means++算法計(jì)算的,比k-means算法好。在k-means++中,質(zhì)心是隨機(jī)初始化的,然后計(jì)算初始數(shù)據(jù)點(diǎn)與所有其他數(shù)據(jù)點(diǎn)之間的距離,然后一個(gè)接一個(gè)地選擇所有其他數(shù)據(jù)點(diǎn),并像初始步驟一樣計(jì)算它們之間的距離。
11-means++算法用于PASCAL VOC和MS COCO數(shù)據(jù)集,以計(jì)算具有6個(gè)簇的錨點(diǎn)框。對(duì)于尺寸為640×640的輸入圖像,六個(gè)錨點(diǎn)框分別為(25×25),(60×60),(120×120),(320×160),(280×340),(520×460)。前三個(gè)錨點(diǎn)用于檢測(cè)最終YOLO層上的小型車(chē)輛,后三個(gè)錨點(diǎn)用于檢測(cè)第一個(gè)YOLO檢測(cè)層上的大型車(chē)輛。
1.4檢測(cè)網(wǎng)絡(luò)
文章點(diǎn)預(yù)測(cè)過(guò)程是由YOLO檢測(cè)網(wǎng)絡(luò)負(fù)責(zé)的。該網(wǎng)絡(luò)由幾個(gè)卷積層組成,上采樣因子為2。使用由k-means++算法定義的錨點(diǎn)框來(lái)預(yù)測(cè)車(chē)輛的邊界框。在YOLO層中,會(huì)分別進(jìn)行邊界框、分?jǐn)?shù)、錨點(diǎn)框坐標(biāo)和類(lèi)別的預(yù)測(cè)。對(duì)于每個(gè)邊界框,網(wǎng)絡(luò)預(yù)測(cè)四個(gè)坐標(biāo)值。YOLO層之前的卷積層的核大小通過(guò)1×1來(lái)計(jì)算[Bbox×(5 +類(lèi)數(shù))]。Bbox是錨點(diǎn)框數(shù)量(為3),分別預(yù)測(cè)4個(gè)邊界框偏移量和1個(gè)分?jǐn)?shù)。這里使用的類(lèi)別數(shù),在PASCAL VOC中是2,分別是汽車(chē)和公共汽車(chē),在MS COCO是3,分別是汽車(chē)、公共汽車(chē)和卡車(chē)。所以預(yù)測(cè)層的核大小分別是1×1×21和1×1×24,接著對(duì)特征圖進(jìn)行上采樣。利用空間金字塔提取細(xì)粒度特征,然后利用最終的特征圖通過(guò)YOLO層預(yù)測(cè)出車(chē)輛的位置。
1.5包圍框回歸損失函數(shù)
網(wǎng)絡(luò)中使用的損失函數(shù)有廣義IoU和均方誤差損失。包圍框回歸是車(chē)輛檢測(cè)中的一項(xiàng)重要任務(wù),車(chē)輛檢測(cè)和定位通常依賴(lài)于精確的包圍框回歸。IoU損失函數(shù)是目標(biāo)檢測(cè)算法中常用的手段,但是它對(duì)于非重疊的目標(biāo)存在問(wèn)題,另一個(gè)用于包圍框回歸的GIoU則解決了這個(gè)問(wèn)題。因此,在訓(xùn)練過(guò)程中使用了GIoU作為邊界回歸損失。
(1)
(2)
(3)
對(duì)于不重疊的錨點(diǎn)框,IoU損失的梯度為零,而GIoU在所有目標(biāo)中都能形成梯度。在大多數(shù)網(wǎng)絡(luò)中,均方誤差損失函數(shù)通常用于回歸。均方誤差是真實(shí)物體標(biāo)注和預(yù)測(cè)目標(biāo)值之間的平方距離之和:
(4)
2.1數(shù)據(jù)集
該工作中使用的數(shù)據(jù)集為PASCAL VOC 2007、PASCAL VOC2012、MS COCO 2014[11-12]。PASCAL VOC總共包含20個(gè)不同的類(lèi),而MS COCO有80個(gè)類(lèi),這些數(shù)據(jù)集通常用于目標(biāo)檢測(cè)模型。文章在訓(xùn)練過(guò)程中僅使用了PASCAL VOC中汽車(chē)、公共汽車(chē)等類(lèi)別和MS COCO中汽車(chē)、公共汽車(chē)、卡車(chē)等類(lèi)別組合的數(shù)據(jù)集。最終,車(chē)輛檢測(cè)的組合數(shù)據(jù)集包含總共27 983個(gè)訓(xùn)練圖像和10 497個(gè)驗(yàn)證圖像。表2為文章使用的數(shù)據(jù)集情況。
表2 訓(xùn)練和驗(yàn)證圖片數(shù)據(jù)集
對(duì)模型的評(píng)價(jià)指標(biāo)主要有:0.5閾值下的平均精度均值(mean average precision,MAP),輸入大小、平均運(yùn)算速度和基于浮點(diǎn)運(yùn)算的推理時(shí)間等指標(biāo),表3列出了實(shí)驗(yàn)平臺(tái)的配置。
表3 實(shí)驗(yàn)平臺(tái)設(shè)置
2.2模型訓(xùn)練與實(shí)驗(yàn)結(jié)果分析
文章訓(xùn)練過(guò)程是通過(guò)不同的方法在三個(gè)不同的數(shù)據(jù)集上進(jìn)行的。在第一種訓(xùn)練方法中,使用SGD在PASCAL VOC 2007、2012數(shù)據(jù)集上訓(xùn)練網(wǎng)絡(luò)。從數(shù)據(jù)集中移除不需要的類(lèi),然后使用基于車(chē)輛的類(lèi)汽車(chē)和公共汽車(chē)。網(wǎng)絡(luò)的輸入大小為416×416,批大小分別為64和8。數(shù)據(jù)集中的訓(xùn)練圖像總數(shù)為16,551,驗(yàn)證圖像集為4952。動(dòng)量為0.9,學(xué)習(xí)率為0.001,權(quán)重衰減為0.0005。網(wǎng)絡(luò)處理的迭代次數(shù)接近10萬(wàn)次。YOLO檢測(cè)層上使用了均方誤差損失,縮放和0.50的IOU閾值等超參。多尺度訓(xùn)練用于訓(xùn)練不同大小的圖像,而不考慮原始大小。如表4所示,這種訓(xùn)練方法獲得76.74%的mAP,比YOLOv2-tiny和YOLOv3-tiny高。該網(wǎng)絡(luò)對(duì)于177 FPS也達(dá)到了5ms左右的推理時(shí)間。
表4 不同方法在PASCAL VOC2007、2012數(shù)據(jù)集上的性能表現(xiàn)
在第二個(gè)訓(xùn)練模型中,使用了MS COCO 2017數(shù)據(jù)集,其中包含汽車(chē)、公共汽車(chē)和卡車(chē)類(lèi)別。輸入大小和使用的所有其他參數(shù)和函數(shù)與之前的訓(xùn)練方法相同。表5總結(jié)了五種模型的比較結(jié)果。這五個(gè)模型都是在相同配置設(shè)置下訓(xùn)練出來(lái)的。實(shí)驗(yàn)結(jié)果表明,所提方法在平均測(cè)試時(shí)間上取得了更好的結(jié)果。它還實(shí)現(xiàn)了53.75%的mAP,這比現(xiàn)有的網(wǎng)絡(luò)模型更好,如表5所示。與YOLOv3-tiny相比,文章方法的檢測(cè)準(zhǔn)確率提高了7.63%。
表5 不同方法在MS COCO 2014數(shù)據(jù)集上的性能對(duì)比上的表現(xiàn)
在最后一種訓(xùn)練方法中,將PASCAL VOC和MS COCO數(shù)據(jù)集進(jìn)行合并??偣灿?7983幅訓(xùn)練圖像是從汽車(chē)、公共汽車(chē)和卡車(chē)三個(gè)不同的類(lèi)別中選取的。該網(wǎng)絡(luò)以416×416和640×640的輸入規(guī)模進(jìn)行訓(xùn)練。在416 × 416模型中,批量為64,小批量為8,學(xué)習(xí)率為0.001,權(quán)值衰減為0.0005。訓(xùn)練網(wǎng)絡(luò)時(shí)分別使用MSE損失和GIoU損失函數(shù)。在640×640尺寸中,批量增加到90,小批量增加到32。然后遵循上一次訓(xùn)練網(wǎng)絡(luò)的所有其他默認(rèn)設(shè)置,并使用GIoU loss。網(wǎng)絡(luò)處理的迭代為10~15萬(wàn)次。該網(wǎng)絡(luò)在YOLO檢測(cè)層中使用的超參有GIoU損失、邊界框的比例因子為1.05、IoU閾值為0.23、IoU歸一化和類(lèi)歸一化。
為了優(yōu)化網(wǎng)絡(luò),所有卷積層上的批量歸一化保持不變,這也被證明在改進(jìn)mAP方面是有效的[13]。文章方法在640尺寸下實(shí)現(xiàn)了47.41%的mAP,如表6所示。與PASCAL VOC和MS COCO數(shù)據(jù)集相比,在合并數(shù)據(jù)集上獲得的mAP更低。
表6 在PASCAL VOC 2007, 2012 和MS COCO 2014合并數(shù)據(jù)集
用PASCAL VOC 2017、2012數(shù)據(jù)集訓(xùn)練的輸入尺寸為416 × 416的網(wǎng)絡(luò)預(yù)測(cè)結(jié)果如圖2所示??梢?jiàn)文章方法能夠快速檢測(cè)遠(yuǎn)程小尺寸的噪聲車(chē)輛。在表5為用MS COCO 2014數(shù)據(jù)集訓(xùn)練的輸入尺寸為416的模型預(yù)測(cè)結(jié)果,表明該網(wǎng)絡(luò)能夠準(zhǔn)確預(yù)測(cè)多輛重疊的車(chē)輛。而且文章方法比最初的YOLOv3-tiny網(wǎng)絡(luò)更加簡(jiǎn)單。
圖2 在PASCAL VOC 2007、2012數(shù)據(jù)集上訓(xùn)練后的檢測(cè)結(jié)果
相比而言,YOLOv3-tiny在近距離定位的基礎(chǔ)上產(chǎn)生了很多誤差。它也很難探測(cè)到遠(yuǎn)距離的車(chē)輛。因此,文章主要致力于改善這些問(wèn)題。在PASCAL VOC數(shù)據(jù)集上,所提方法在小型車(chē)輛上產(chǎn)生一些誤檢。在MS COCO中,誤檢主要出現(xiàn)在中型和大型車(chē)輛上,并且還會(huì)出現(xiàn)背景誤檢。這些誤檢大多在合并兩個(gè)數(shù)據(jù)集時(shí)得到糾正,但與MS COCO相比,總體來(lái)看mAP下降了。文章的網(wǎng)絡(luò)結(jié)構(gòu)也進(jìn)行了一系列改進(jìn),采用性能更好的殘差連接取代了最大池化層,空間金字塔模塊、均方誤差損失、GIoU損失、批量歸一化和非最大抑制等手段也都被用于優(yōu)化網(wǎng)絡(luò)。在評(píng)估用PASCAL VOC、MS COCO和組合數(shù)據(jù)集訓(xùn)練的這些模型時(shí),在MS COCO數(shù)據(jù)集上訓(xùn)練的網(wǎng)絡(luò)在準(zhǔn)確性方面更好,但是組合數(shù)據(jù)集上性能更高。
總的來(lái)說(shuō),現(xiàn)有許多目標(biāo)檢測(cè)網(wǎng)絡(luò)并不完全集中在車(chē)輛上。文章從數(shù)據(jù)集中刪除了車(chē)輛類(lèi)別之外的其他類(lèi)別。汽車(chē)、公共汽車(chē)和卡車(chē)等車(chē)輛類(lèi)別用于訓(xùn)練該網(wǎng)絡(luò)。因此,該方法的訓(xùn)練速度和基于車(chē)輛特征的學(xué)習(xí)都很好。許多基于YOLO的目標(biāo)檢測(cè)網(wǎng)絡(luò)具有高計(jì)算成本,并且由于其復(fù)雜性,其訓(xùn)練速度也很慢。在YOLOv3-tiny中, 特征提取卷積層通過(guò)最大池化分離,文章通過(guò)移除那些最大池化層并添加空間金字塔池來(lái)提高網(wǎng)絡(luò)的性能。
圖3顯示了一些錯(cuò)誤預(yù)測(cè)的結(jié)果,還錯(cuò)誤地將一輛油罐車(chē)標(biāo)注為公共汽車(chē)。加油機(jī)的前端有公共汽車(chē)的特征,但加油機(jī)的背面沒(méi)有參與訓(xùn)練。PASCAL和MS COCO數(shù)據(jù)集不包含加油機(jī)的圖像,因此網(wǎng)絡(luò)無(wú)法正確檢測(cè)到它。幀中漏檢的車(chē)輛是由于數(shù)據(jù)集中的圖像較少。為了提高網(wǎng)絡(luò)的檢測(cè)精度,在訓(xùn)練過(guò)程中需要更多的車(chē)載圖像來(lái)豐富數(shù)據(jù)集。
圖3 錯(cuò)誤檢測(cè)結(jié)果
文章提出了一種高效車(chē)輛檢測(cè)算法,由改進(jìn)的特征提取層、空間金字塔池和GIoU損失函數(shù)組成。K-means++聚類(lèi)算法用于初始化錨點(diǎn)框。該網(wǎng)絡(luò)在PASCAL VOC 2007、2012和MS COCO數(shù)據(jù)集上的mAP分別達(dá)到76.74%和53.75%。實(shí)驗(yàn)結(jié)果表明,該網(wǎng)絡(luò)速度很快,能夠以高精度從交通CCTV攝像機(jī)采集的視頻中實(shí)時(shí)檢測(cè)車(chē)輛。
九江學(xué)院學(xué)報(bào)(自然科學(xué)版)2022年1期