楊紫輝,江 磊,任洪娟
(上海工程技術(shù)大學(xué) 機械與汽車工程學(xué)院,上海 201620)
近年來,自動駕駛技術(shù)和機動車駕駛輔助技術(shù)不斷突破與升級,智能駕駛系統(tǒng)發(fā)展勢頭迅猛。在此基礎(chǔ)上,路況信息的獲取、識別便顯得尤為重要,逐漸成為了智能駕駛系統(tǒng)研究應(yīng)用的基礎(chǔ)與關(guān)鍵,而非機動車的精準檢測識別便是智能駕駛系統(tǒng)的重要組成部分[1-2]。
傳統(tǒng)的目標(biāo)檢測方法是使用人工設(shè)計的圖像特征來進行檢測,如HOG 算子、SIFT 算子等,但由于真實場景復(fù)雜多樣性,難以提取非機動車等目標(biāo)特征,傳統(tǒng)方法難以滿足實際使用的需求。同時隨著深度學(xué)習(xí)技術(shù)的不斷發(fā)展,基于深度卷積神經(jīng)網(wǎng)絡(luò)的目標(biāo)檢測和目標(biāo)跟蹤算法被不斷提出,如R-CNN(Region Convolutional Neural Network)、Fast-RCNN等,目標(biāo)檢測率得到了大大提升,基于深度卷積網(wǎng)絡(luò)的目標(biāo)檢測已經(jīng)成為了主流檢測方法。在2015 年,Joseph Redmon 提出了YOLO(You Only Look Once)系列算法,極大地提升了算法檢測的速度。
在駕駛場景中執(zhí)行目標(biāo)檢測背景復(fù)雜,要測量的目標(biāo)密集分布或重疊,攝像機的觀看距離不固定,導(dǎo)致目標(biāo)大小不同。特別是較小的目標(biāo),如非機動車、行人和交通標(biāo)志,具有像素少、分辨率低、特征不明顯的特點,YOLO 算法對該類目標(biāo)的檢測性能并不理想[3-4]。由此,本文基于改進優(yōu)化的YOLOv3網(wǎng)絡(luò)對非機動車進行檢測,通過復(fù)制增加骨干網(wǎng)絡(luò)得到特征提取輔助網(wǎng)絡(luò),由此提高整個特征提取網(wǎng)絡(luò)的性能,并在輔助網(wǎng)絡(luò)與骨干網(wǎng)絡(luò)的特征信息融合時采用注意機制,重點對有效特征通道進行處理,抑制無效信息通道,提高網(wǎng)絡(luò)的處理效率,經(jīng)測試整個優(yōu)化網(wǎng)絡(luò)的性能和功能滿足實際應(yīng)用。
YOLO 系列是一種典型的網(wǎng)絡(luò)結(jié)構(gòu)為端到端的算法[5],相較于R-CNN 系列的兩階段網(wǎng)絡(luò)算法,YOLO 算法的網(wǎng)絡(luò)結(jié)構(gòu)更加簡潔。YOLO 算法的網(wǎng)絡(luò)是首先生成候選推薦區(qū)域,然后執(zhí)行檢測與判斷。其檢測速度更加迅捷,原因在于其將候選區(qū)域機制和檢測集成到了同一網(wǎng)絡(luò)中。
YOLOv3 的網(wǎng)絡(luò)結(jié)構(gòu)通過使用預(yù)定義的候選區(qū)域來取代R-CNN 網(wǎng)絡(luò)中的RPN。其將特征映射分成s × s網(wǎng)格,為了預(yù)測目標(biāo)會在每個網(wǎng)格生成b個邊界框,最后在特征地圖上生成可以覆蓋整個特征地圖區(qū)域的預(yù)測邊界框,其數(shù)量為s × s × b,同時直接對生成的預(yù)測邊界框進行邊界回歸。為了防止預(yù)測邊界框是冗余的,需要對每個預(yù)測邊界框進行置信度計算,然后為置信度設(shè)置閾值,閾值以上的預(yù)測邊界框保留用于回歸,低于閾值的邊界框直接刪除。其中,每個邊界框的置信度由兩部分組成:預(yù)測目標(biāo)類別概率和預(yù)測邊界框與實際幀的重合度。
置信度計算公式(1)為:

為了減少工作量,可以通過對預(yù)測邊界框設(shè)置閾值的方式消除多數(shù)無用邊界框,但某些單體對象可能同時持有多個邊界框來預(yù)測對象,從而在特征映射上產(chǎn)生冗余的預(yù)測邊界框。因此,YOLOv3 使用非極性非最大抑制算法去除冗余檢測框,從而得到一個對目標(biāo)精確檢測的目標(biāo)框。
由于網(wǎng)絡(luò)的不斷深化,梯度消失和梯度爆炸等問題會在訓(xùn)練過程中凸顯出來,這類問題可以通過引入殘差網(wǎng)絡(luò)來解決。通常為了提取更深層次的特征信息,會使用將進入殘差模塊前的特征與殘差模塊輸出的特征相結(jié)合的方法。YOLOv3 采用了新的網(wǎng)絡(luò)結(jié)構(gòu)darknet-53。darknet-53 主要由53 個卷積層組成,包含大量的3×3,1×1 卷積核。YOLOv3與v1 和v2 的網(wǎng)絡(luò)結(jié)構(gòu)相比,其利用剩余網(wǎng)絡(luò)設(shè)計了快捷連接模塊,如圖1 所示。

圖1 剩余結(jié)構(gòu)網(wǎng)絡(luò)圖Fig.1 Residual structure network diagram
快捷連接模塊的使用一方面有利于解決網(wǎng)絡(luò)層過多造成的梯度消失問題,另一方面使整個網(wǎng)絡(luò)的總層數(shù)達到106 層,更適合于特征提取。同時,YOLOv3 采用多尺度檢測機制,分別檢測13×13,26×26 和52×52 的特征映射,增強了提取小目標(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 個不同比列的特征映射來預(yù)測檢測結(jié)果。當(dāng)輸入圖像的分辨率確定時,基本尺度特征圖的大小為原始分辨率的1/32,其余2 個尺度分別為1/16 和1/8。例如,當(dāng)輸入圖像的分辨率為416×416 時,其基本尺度特征映射的大小為13×13× n,通過上采樣獲得26×26×n的特征映圖;將其與上一個卷積層的輸出融合,從而獲得26×26× m的第二尺度特征圖;基于第二尺度特征圖,用同樣的方法得到52×52× w的第三尺度特征圖;通過對每個尺度特征圖的類別預(yù)測、邊界框和目標(biāo)分數(shù)來預(yù)測三維張量編碼。在此過程中,檢測幀共4 個參數(shù),目標(biāo)評價1 個參數(shù),類別數(shù)為80 個。每個尺度特征映射單元預(yù)測3 組上述信息,即3×(4+1+80)=255 維信息。最后3 個尺度的輸出張量維分別為y1=13×13×255,y2=26×26×255,y3=52×52×255。
本文的設(shè)計旨在研究非機動車的檢測問題,其檢測內(nèi)容為道路中行駛的非機動車,包括自行車、電動助力車等,需要測試的目標(biāo)具有多樣性特征。針對該情況,本文將YOLOv3 的特征提取網(wǎng)絡(luò)分為兩部分進行優(yōu)化。第一部分是通過增添骨干網(wǎng)絡(luò)來獲得特征提取輔助網(wǎng)絡(luò),提高整個特征提取網(wǎng)絡(luò)的性能;第二部分是對骨干網(wǎng)絡(luò)和輔助網(wǎng)絡(luò)的特征信息融合采用注意機制,提高對有效特征通道的關(guān)注度,抑制無效信息通道,提高網(wǎng)絡(luò)處理效率。
YOLOv3 的特征提取網(wǎng)絡(luò)采用darknet-53,以殘差結(jié)構(gòu)形式加深采樣深度。其中剩余模塊內(nèi)部結(jié)構(gòu)相對簡單,使得整個網(wǎng)絡(luò)簡單易用,但特征提取能力無法優(yōu)化。本文優(yōu)化骨干網(wǎng)絡(luò)的主要方式是通過增加復(fù)制剩余模塊來拓寬整個網(wǎng)絡(luò),并對增加復(fù)制所得到的剩余模塊結(jié)構(gòu)進行微調(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ò)相比,本文增加了一個比骨干網(wǎng)絡(luò)規(guī)模更小的特征提取輔助網(wǎng)絡(luò),骨干網(wǎng)絡(luò)的旁路由多個剩余模塊組成。與YOLO 殘差模塊相比,本文對輔助網(wǎng)絡(luò)殘差模塊進行了改進,其具體實現(xiàn)方式為將原來的殘差模塊使用3×3 卷積核進行特征提取,而輔助網(wǎng)絡(luò)中的殘差模塊使用兩個連續(xù)的3×3 卷積核獲得5×5 的接受域,最后將提取的特征合并到骨干網(wǎng)絡(luò)中。
二級網(wǎng)絡(luò)與骨干網(wǎng)絡(luò)的連接有兩種不同的方式。第一種方式是輔助模塊的輸出首先由1×1 卷積核集成,然后傳輸?shù)焦歉删W(wǎng)絡(luò);第二種方式是將注意機制增添到深度輔助網(wǎng)絡(luò)的兩個網(wǎng)絡(luò)之間。當(dāng)網(wǎng)絡(luò)達到一定深度時,其中的語義信息也變得更高級,輔助模塊將發(fā)揮對有效特征進行處理和傳輸,對無效特征進行信道抑制的作用。
由于SE 模塊具有結(jié)構(gòu)簡單,易于操作的優(yōu)點,本文采用SE 模塊實現(xiàn)兩個網(wǎng)絡(luò)之間的注意機制。通過SE 模塊的增加,達到對輔助模塊輸出特性的重新校準。工作流程大致可分為擠壓和激勵。擠壓是為了更好地現(xiàn)實每層中各信道的特征值分布,將二維特征映射通過平均池轉(zhuǎn)化為一維特征映射,此時特征映射大小轉(zhuǎn)換為1×1×c;激勵是使用一個全連接神經(jīng)網(wǎng)絡(luò),對壓縮之后的結(jié)果做一個非線性變換,該過程由兩個全連接層組成,其中會加入一個縮放參數(shù)SERadio 來減少通道個數(shù),從而降低計算量。
本文使用的數(shù)據(jù)集來自BDD100K。2018 年5月加州大學(xué)伯克利分校AI 實驗室對外發(fā)布了BDD100K,該數(shù)據(jù)集是目前規(guī)模最大、內(nèi)容最具多樣性的公開駕駛數(shù)據(jù)集,主要內(nèi)容由10 萬段高清視頻組成,其中每段視頻內(nèi)容約40 s,分辨率為720 p,幀數(shù)為30 fps。BDD100K 發(fā)布時,該實驗室同時設(shè)計了一個圖片標(biāo)注系統(tǒng),該系統(tǒng)通過對數(shù)據(jù)集中每個視頻的第10 s 關(guān)鍵幀進行采樣,從而得到了10萬張圖片,并對其進行標(biāo)注。
本文在通過多次調(diào)整參數(shù)后,對模型進行了12 000次的迭代訓(xùn)練。通過損失曲線的實時繪制,可以直觀地觀察到訓(xùn)練過程中的實時動態(tài),如圖4所示。圖4 中藍色折線為本文模型訓(xùn)練工程中對應(yīng)的平均損失曲線。其中,橫坐標(biāo)表示訓(xùn)練迭代次數(shù),縱坐標(biāo)表示訓(xùn)練過程中的損失值。

圖4 訓(xùn)練函數(shù)損失圖Fig.4 Training loss function graph
使用測試集對訓(xùn)練好的模型進行測試,測試指標(biāo)主要為對目標(biāo)的召回率和檢測的準確率。其中,目標(biāo)召回率R(Recall)和檢測準確率P(Precision)計算公式如下:

其中,XTP表示算法中正確分類的正樣本,即被正確檢測出的目標(biāo)數(shù);XFN表示錯誤分類的負樣本,即沒有被檢測出的目標(biāo)數(shù);XFP表示錯誤分類的正樣本,即被錯誤檢出的目標(biāo)數(shù)。
AP代表某一分類的精度,通過找到在不同查全率下最高的查準率得到。mAP代表多分類檢測模型中所有類別的AP均值,mAP的值越大表示該模型的定位與識別的準確率越高。
測試所使用的200 幅圖像中共有482 個目標(biāo),使用YOLOv3 算法和改進后的新YOLOv3 算法在數(shù)據(jù)集上進行測試,分別計算R和P,結(jié)果見表1。

表1 優(yōu)化模型與原網(wǎng)絡(luò)模型試驗結(jié)果對比表Tab.1 Comparison between optimized model and original network model test result
本文模型與YOLOv3 模型檢測對比結(jié)果如圖5所示。

圖5 檢測結(jié)果對比圖Fig.5 Comparison of test results
本文主要介紹了一種基于YOLOv3 網(wǎng)絡(luò)優(yōu)化的可用于非機動車檢測的新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ò)的特征信息融合采用注意機制,重點對有效特征通道進行處理,抑制無效信息通道,提高網(wǎng)絡(luò)處理效率。
與YOLOv3 相比,優(yōu)化后的網(wǎng)絡(luò)檢測能力得到了提升,但由于輔助網(wǎng)絡(luò)的增加,計算量也會增加,影響了檢測時間,但仍可滿足實際應(yīng)用的條件。為了進一步提升網(wǎng)絡(luò)的檢測應(yīng)用能力,可以使用邊緣計算,將模型用于嵌入式設(shè)備,推動無人車智能駕駛技術(shù)發(fā)展。