楊紫輝,江 磊,任洪娟
(上海工程技術(shù)大學(xué) 機(jī)械與汽車(chē)工程學(xué)院,上海 201620)
近年來(lái),自動(dòng)駕駛技術(shù)和機(jī)動(dòng)車(chē)駕駛輔助技術(shù)不斷突破與升級(jí),智能駕駛系統(tǒng)發(fā)展勢(shì)頭迅猛。在此基礎(chǔ)上,路況信息的獲取、識(shí)別便顯得尤為重要,逐漸成為了智能駕駛系統(tǒng)研究應(yīng)用的基礎(chǔ)與關(guān)鍵,而非機(jī)動(dòng)車(chē)的精準(zhǔn)檢測(cè)識(shí)別便是智能駕駛系統(tǒng)的重要組成部分[1-2]。
傳統(tǒng)的目標(biāo)檢測(cè)方法是使用人工設(shè)計(jì)的圖像特征來(lái)進(jìn)行檢測(cè),如HOG 算子、SIFT 算子等,但由于真實(shí)場(chǎng)景復(fù)雜多樣性,難以提取非機(jī)動(dòng)車(chē)等目標(biāo)特征,傳統(tǒng)方法難以滿足實(shí)際使用的需求。同時(shí)隨著深度學(xué)習(xí)技術(shù)的不斷發(fā)展,基于深度卷積神經(jīng)網(wǎng)絡(luò)的目標(biāo)檢測(cè)和目標(biāo)跟蹤算法被不斷提出,如R-CNN(Region Convolutional Neural Network)、Fast-RCNN等,目標(biāo)檢測(cè)率得到了大大提升,基于深度卷積網(wǎng)絡(luò)的目標(biāo)檢測(cè)已經(jīng)成為了主流檢測(cè)方法。在2015 年,Joseph Redmon 提出了YOLO(You Only Look Once)系列算法,極大地提升了算法檢測(cè)的速度。
在駕駛場(chǎng)景中執(zhí)行目標(biāo)檢測(cè)背景復(fù)雜,要測(cè)量的目標(biāo)密集分布或重疊,攝像機(jī)的觀看距離不固定,導(dǎo)致目標(biāo)大小不同。特別是較小的目標(biāo),如非機(jī)動(dòng)車(chē)、行人和交通標(biāo)志,具有像素少、分辨率低、特征不明顯的特點(diǎn),YOLO 算法對(duì)該類(lèi)目標(biāo)的檢測(cè)性能并不理想[3-4]。由此,本文基于改進(jìn)優(yōu)化的YOLOv3網(wǎng)絡(luò)對(duì)非機(jī)動(dòng)車(chē)進(jìn)行檢測(cè),通過(guò)復(fù)制增加骨干網(wǎng)絡(luò)得到特征提取輔助網(wǎng)絡(luò),由此提高整個(gè)特征提取網(wǎng)絡(luò)的性能,并在輔助網(wǎng)絡(luò)與骨干網(wǎng)絡(luò)的特征信息融合時(shí)采用注意機(jī)制,重點(diǎn)對(duì)有效特征通道進(jìn)行處理,抑制無(wú)效信息通道,提高網(wǎng)絡(luò)的處理效率,經(jīng)測(cè)試整個(gè)優(yōu)化網(wǎng)絡(luò)的性能和功能滿足實(shí)際應(yīng)用。
YOLO 系列是一種典型的網(wǎng)絡(luò)結(jié)構(gòu)為端到端的算法[5],相較于R-CNN 系列的兩階段網(wǎng)絡(luò)算法,YOLO 算法的網(wǎng)絡(luò)結(jié)構(gòu)更加簡(jiǎn)潔。YOLO 算法的網(wǎng)絡(luò)是首先生成候選推薦區(qū)域,然后執(zhí)行檢測(cè)與判斷。其檢測(cè)速度更加迅捷,原因在于其將候選區(qū)域機(jī)制和檢測(cè)集成到了同一網(wǎng)絡(luò)中。
YOLOv3 的網(wǎng)絡(luò)結(jié)構(gòu)通過(guò)使用預(yù)定義的候選區(qū)域來(lái)取代R-CNN 網(wǎng)絡(luò)中的RPN。其將特征映射分成s × s網(wǎng)格,為了預(yù)測(cè)目標(biāo)會(huì)在每個(gè)網(wǎng)格生成b個(gè)邊界框,最后在特征地圖上生成可以覆蓋整個(gè)特征地圖區(qū)域的預(yù)測(cè)邊界框,其數(shù)量為s × s × b,同時(shí)直接對(duì)生成的預(yù)測(cè)邊界框進(jìn)行邊界回歸。為了防止預(yù)測(cè)邊界框是冗余的,需要對(duì)每個(gè)預(yù)測(cè)邊界框進(jìn)行置信度計(jì)算,然后為置信度設(shè)置閾值,閾值以上的預(yù)測(cè)邊界框保留用于回歸,低于閾值的邊界框直接刪除。其中,每個(gè)邊界框的置信度由兩部分組成:預(yù)測(cè)目標(biāo)類(lèi)別概率和預(yù)測(cè)邊界框與實(shí)際幀的重合度。
置信度計(jì)算公式(1)為:
為了減少工作量,可以通過(guò)對(duì)預(yù)測(cè)邊界框設(shè)置閾值的方式消除多數(shù)無(wú)用邊界框,但某些單體對(duì)象可能同時(shí)持有多個(gè)邊界框來(lái)預(yù)測(cè)對(duì)象,從而在特征映射上產(chǎn)生冗余的預(yù)測(cè)邊界框。因此,YOLOv3 使用非極性非最大抑制算法去除冗余檢測(cè)框,從而得到一個(gè)對(duì)目標(biāo)精確檢測(cè)的目標(biāo)框。
由于網(wǎng)絡(luò)的不斷深化,梯度消失和梯度爆炸等問(wèn)題會(huì)在訓(xùn)練過(guò)程中凸顯出來(lái),這類(lèi)問(wèn)題可以通過(guò)引入殘差網(wǎng)絡(luò)來(lái)解決。通常為了提取更深層次的特征信息,會(huì)使用將進(jìn)入殘差模塊前的特征與殘差模塊輸出的特征相結(jié)合的方法。YOLOv3 采用了新的網(wǎng)絡(luò)結(jié)構(gòu)darknet-53。darknet-53 主要由53 個(gè)卷積層組成,包含大量的3×3,1×1 卷積核。YOLOv3與v1 和v2 的網(wǎng)絡(luò)結(jié)構(gòu)相比,其利用剩余網(wǎng)絡(luò)設(shè)計(jì)了快捷連接模塊,如圖1 所示。
圖1 剩余結(jié)構(gòu)網(wǎng)絡(luò)圖Fig.1 Residual structure network diagram
快捷連接模塊的使用一方面有利于解決網(wǎng)絡(luò)層過(guò)多造成的梯度消失問(wèn)題,另一方面使整個(gè)網(wǎng)絡(luò)的總層數(shù)達(dá)到106 層,更適合于特征提取。同時(shí),YOLOv3 采用多尺度檢測(cè)機(jī)制,分別檢測(cè)13×13,26×26 和52×52 的特征映射,增強(qiáng)了提取小目標(biāo)的能力,其網(wǎng)絡(luò)結(jié)構(gòu)如圖2 所示。
圖2 YOLOv3 網(wǎng)絡(luò)結(jié)構(gòu)圖Fig.2 YOLO v3 network structure
YOLOv3 使用3 個(gè)不同比列的特征映射來(lái)預(yù)測(cè)檢測(cè)結(jié)果。當(dāng)輸入圖像的分辨率確定時(shí),基本尺度特征圖的大小為原始分辨率的1/32,其余2 個(gè)尺度分別為1/16 和1/8。例如,當(dāng)輸入圖像的分辨率為416×416 時(shí),其基本尺度特征映射的大小為13×13× n,通過(guò)上采樣獲得26×26×n的特征映圖;將其與上一個(gè)卷積層的輸出融合,從而獲得26×26× m的第二尺度特征圖;基于第二尺度特征圖,用同樣的方法得到52×52× w的第三尺度特征圖;通過(guò)對(duì)每個(gè)尺度特征圖的類(lèi)別預(yù)測(cè)、邊界框和目標(biāo)分?jǐn)?shù)來(lái)預(yù)測(cè)三維張量編碼。在此過(guò)程中,檢測(cè)幀共4 個(gè)參數(shù),目標(biāo)評(píng)價(jià)1 個(gè)參數(shù),類(lèi)別數(shù)為80 個(gè)。每個(gè)尺度特征映射單元預(yù)測(cè)3 組上述信息,即3×(4+1+80)=255 維信息。最后3 個(gè)尺度的輸出張量維分別為y1=13×13×255,y2=26×26×255,y3=52×52×255。
本文的設(shè)計(jì)旨在研究非機(jī)動(dòng)車(chē)的檢測(cè)問(wèn)題,其檢測(cè)內(nèi)容為道路中行駛的非機(jī)動(dòng)車(chē),包括自行車(chē)、電動(dòng)助力車(chē)等,需要測(cè)試的目標(biāo)具有多樣性特征。針對(duì)該情況,本文將YOLOv3 的特征提取網(wǎng)絡(luò)分為兩部分進(jìn)行優(yōu)化。第一部分是通過(guò)增添骨干網(wǎng)絡(luò)來(lái)獲得特征提取輔助網(wǎng)絡(luò),提高整個(gè)特征提取網(wǎng)絡(luò)的性能;第二部分是對(duì)骨干網(wǎng)絡(luò)和輔助網(wǎng)絡(luò)的特征信息融合采用注意機(jī)制,提高對(duì)有效特征通道的關(guān)注度,抑制無(wú)效信息通道,提高網(wǎng)絡(luò)處理效率。
YOLOv3 的特征提取網(wǎng)絡(luò)采用darknet-53,以殘差結(jié)構(gòu)形式加深采樣深度。其中剩余模塊內(nèi)部結(jié)構(gòu)相對(duì)簡(jiǎn)單,使得整個(gè)網(wǎng)絡(luò)簡(jiǎn)單易用,但特征提取能力無(wú)法優(yōu)化。本文優(yōu)化骨干網(wǎng)絡(luò)的主要方式是通過(guò)增加復(fù)制剩余模塊來(lái)拓寬整個(gè)網(wǎng)絡(luò),并對(duì)增加復(fù)制所得到的剩余模塊結(jié)構(gòu)進(jìn)行微調(diào),優(yōu)化后的網(wǎng)絡(luò)如圖3 所示。
圖3 YOLOv3 優(yōu)化網(wǎng)絡(luò)結(jié)構(gòu)圖Fig.3 Optimized YOLO v3 network structure
與單一結(jié)構(gòu)的原始網(wǎng)絡(luò)相比,本文增加了一個(gè)比骨干網(wǎng)絡(luò)規(guī)模更小的特征提取輔助網(wǎng)絡(luò),骨干網(wǎng)絡(luò)的旁路由多個(gè)剩余模塊組成。與YOLO 殘差模塊相比,本文對(duì)輔助網(wǎng)絡(luò)殘差模塊進(jìn)行了改進(jìn),其具體實(shí)現(xiàn)方式為將原來(lái)的殘差模塊使用3×3 卷積核進(jìn)行特征提取,而輔助網(wǎng)絡(luò)中的殘差模塊使用兩個(gè)連續(xù)的3×3 卷積核獲得5×5 的接受域,最后將提取的特征合并到骨干網(wǎng)絡(luò)中。
二級(jí)網(wǎng)絡(luò)與骨干網(wǎng)絡(luò)的連接有兩種不同的方式。第一種方式是輔助模塊的輸出首先由1×1 卷積核集成,然后傳輸?shù)焦歉删W(wǎng)絡(luò);第二種方式是將注意機(jī)制增添到深度輔助網(wǎng)絡(luò)的兩個(gè)網(wǎng)絡(luò)之間。當(dāng)網(wǎng)絡(luò)達(dá)到一定深度時(shí),其中的語(yǔ)義信息也變得更高級(jí),輔助模塊將發(fā)揮對(duì)有效特征進(jìn)行處理和傳輸,對(duì)無(wú)效特征進(jìn)行信道抑制的作用。
由于SE 模塊具有結(jié)構(gòu)簡(jiǎn)單,易于操作的優(yōu)點(diǎn),本文采用SE 模塊實(shí)現(xiàn)兩個(gè)網(wǎng)絡(luò)之間的注意機(jī)制。通過(guò)SE 模塊的增加,達(dá)到對(duì)輔助模塊輸出特性的重新校準(zhǔn)。工作流程大致可分為擠壓和激勵(lì)。擠壓是為了更好地現(xiàn)實(shí)每層中各信道的特征值分布,將二維特征映射通過(guò)平均池轉(zhuǎn)化為一維特征映射,此時(shí)特征映射大小轉(zhuǎn)換為1×1×c;激勵(lì)是使用一個(gè)全連接神經(jīng)網(wǎng)絡(luò),對(duì)壓縮之后的結(jié)果做一個(gè)非線性變換,該過(guò)程由兩個(gè)全連接層組成,其中會(huì)加入一個(gè)縮放參數(shù)SERadio 來(lái)減少通道個(gè)數(shù),從而降低計(jì)算量。
本文使用的數(shù)據(jù)集來(lái)自BDD100K。2018 年5月加州大學(xué)伯克利分校AI 實(shí)驗(yàn)室對(duì)外發(fā)布了BDD100K,該數(shù)據(jù)集是目前規(guī)模最大、內(nèi)容最具多樣性的公開(kāi)駕駛數(shù)據(jù)集,主要內(nèi)容由10 萬(wàn)段高清視頻組成,其中每段視頻內(nèi)容約40 s,分辨率為720 p,幀數(shù)為30 fps。BDD100K 發(fā)布時(shí),該實(shí)驗(yàn)室同時(shí)設(shè)計(jì)了一個(gè)圖片標(biāo)注系統(tǒng),該系統(tǒng)通過(guò)對(duì)數(shù)據(jù)集中每個(gè)視頻的第10 s 關(guān)鍵幀進(jìn)行采樣,從而得到了10萬(wàn)張圖片,并對(duì)其進(jìn)行標(biāo)注。
本文在通過(guò)多次調(diào)整參數(shù)后,對(duì)模型進(jìn)行了12 000次的迭代訓(xùn)練。通過(guò)損失曲線的實(shí)時(shí)繪制,可以直觀地觀察到訓(xùn)練過(guò)程中的實(shí)時(shí)動(dòng)態(tài),如圖4所示。圖4 中藍(lán)色折線為本文模型訓(xùn)練工程中對(duì)應(yīng)的平均損失曲線。其中,橫坐標(biāo)表示訓(xùn)練迭代次數(shù),縱坐標(biāo)表示訓(xùn)練過(guò)程中的損失值。
圖4 訓(xùn)練函數(shù)損失圖Fig.4 Training loss function graph
使用測(cè)試集對(duì)訓(xùn)練好的模型進(jìn)行測(cè)試,測(cè)試指標(biāo)主要為對(duì)目標(biāo)的召回率和檢測(cè)的準(zhǔn)確率。其中,目標(biāo)召回率R(Recall)和檢測(cè)準(zhǔn)確率P(Precision)計(jì)算公式如下:
其中,XTP表示算法中正確分類(lèi)的正樣本,即被正確檢測(cè)出的目標(biāo)數(shù);XFN表示錯(cuò)誤分類(lèi)的負(fù)樣本,即沒(méi)有被檢測(cè)出的目標(biāo)數(shù);XFP表示錯(cuò)誤分類(lèi)的正樣本,即被錯(cuò)誤檢出的目標(biāo)數(shù)。
AP代表某一分類(lèi)的精度,通過(guò)找到在不同查全率下最高的查準(zhǔn)率得到。mAP代表多分類(lèi)檢測(cè)模型中所有類(lèi)別的AP均值,mAP的值越大表示該模型的定位與識(shí)別的準(zhǔn)確率越高。
測(cè)試所使用的200 幅圖像中共有482 個(gè)目標(biāo),使用YOLOv3 算法和改進(jìn)后的新YOLOv3 算法在數(shù)據(jù)集上進(jìn)行測(cè)試,分別計(jì)算R和P,結(jié)果見(jiàn)表1。
表1 優(yōu)化模型與原網(wǎng)絡(luò)模型試驗(yàn)結(jié)果對(duì)比表Tab.1 Comparison between optimized model and original network model test result
本文模型與YOLOv3 模型檢測(cè)對(duì)比結(jié)果如圖5所示。
圖5 檢測(cè)結(jié)果對(duì)比圖Fig.5 Comparison of test results
本文主要介紹了一種基于YOLOv3 網(wǎng)絡(luò)優(yōu)化的可用于非機(jī)動(dòng)車(chē)檢測(cè)的新YOLO 網(wǎng)絡(luò)模型。本文的主要工作:
(1)新YOLO 網(wǎng)絡(luò)模型在原有YOLOv3 模型的基礎(chǔ)上,采用了雙重特征提取網(wǎng)絡(luò)結(jié)構(gòu)。采用規(guī)模為13×13,26×26,52×52的骨干網(wǎng)絡(luò),配置不同特征提取的接收域輔助網(wǎng)絡(luò);
(2)輔助網(wǎng)絡(luò)和骨干網(wǎng)絡(luò)的特征信息融合采用注意機(jī)制,重點(diǎn)對(duì)有效特征通道進(jìn)行處理,抑制無(wú)效信息通道,提高網(wǎng)絡(luò)處理效率。
與YOLOv3 相比,優(yōu)化后的網(wǎng)絡(luò)檢測(cè)能力得到了提升,但由于輔助網(wǎng)絡(luò)的增加,計(jì)算量也會(huì)增加,影響了檢測(cè)時(shí)間,但仍可滿足實(shí)際應(yīng)用的條件。為了進(jìn)一步提升網(wǎng)絡(luò)的檢測(cè)應(yīng)用能力,可以使用邊緣計(jì)算,將模型用于嵌入式設(shè)備,推動(dòng)無(wú)人車(chē)智能駕駛技術(shù)發(fā)展。