鄭學(xué)遠(yuǎn)
(吉安職業(yè)技術(shù)學(xué)院,江西 吉安)
研究自動駕駛背景下的行人檢測是一個熱點問題。傳統(tǒng)的行人檢測方法大都是基于一些傳統(tǒng)的通用目標(biāo)檢測方法來實現(xiàn)的,如VJ 檢測器[1]、HOG 特征[2]、DPM 模型[3]等。本文針對城市道路中的行人檢測問題,充分利用YOLOv3 算法的實時目標(biāo)檢測性能,從三個方面對YOLOv3 算法進(jìn)行了改進(jìn),一是改進(jìn)YOLOv3的網(wǎng)絡(luò)結(jié)構(gòu),增加尺度特征;二是對坐標(biāo)回歸損失函數(shù)進(jìn)行改進(jìn);三是改進(jìn)設(shè)計激活函數(shù)。通過在自制的行人數(shù)據(jù)庫上實現(xiàn)改進(jìn)后的行人檢測方法,與YOLOv3 方法進(jìn)行比較,實驗結(jié)果表明該改進(jìn)后的方法具有更好的行人檢測性能。
YOLOv3 網(wǎng)絡(luò)真實學(xué)習(xí)目標(biāo)是得到錨框和真實框(Ground Truth)的坐標(biāo)誤差、置信度誤差和分類誤差。通過網(wǎng)絡(luò)訓(xùn)練實現(xiàn)損失函數(shù)的最優(yōu)化,然后由最優(yōu)化的誤差量計算出預(yù)測框的預(yù)測坐標(biāo),進(jìn)而完成目標(biāo)檢測任務(wù),示意圖如圖1 所示。

圖1 OLOv3 預(yù)測框預(yù)測示意圖
圖1 所示的特征圖中,一個單元格的寬高為Cx和Cy,最外層的為真實框,其中心點坐標(biāo)為Gx和Gy,寬高為Gw和Gh。中間的虛線框為錨框,其寬高為pw和ph,最內(nèi)層的為預(yù)測框,其中心點坐標(biāo)為bx和by,寬高為bw和bh。首先計算出錨框與真實框的坐標(biāo)偏移tx、ty、tw、th。如公式(1)所示。
然后可以由這4 個偏移量計算出預(yù)測框的坐標(biāo)位置,計算公式如公式(2)所示。公式中的δ 是Sigmoid函數(shù)。
隨著網(wǎng)絡(luò)深度加深,訓(xùn)練的收斂速度會變慢,性能變差,為了解決這一問題,本文YOLOv3 網(wǎng)絡(luò)結(jié)構(gòu)中的Resnet 殘差單元都替換為ResneXt 殘差單元。ResneXT 借鑒了Inception 的“分割-變換-聚合”策略,通過引入基數(shù)(Cardinality)來控制分組的數(shù)量。ResneXt 的一個基礎(chǔ)單元結(jié)構(gòu)如圖2 所示。輸入部分是一個256 通道的特征圖,將其分成32個分支,每個分支的第一個參數(shù)是輸入通道數(shù),第二個參數(shù)是卷積核大小,第三個參數(shù)是輸出通道數(shù),將這32 個分支的輸出特征圖進(jìn)行逐點相加,最后通過短連接將相加的結(jié)果與輸入部分在進(jìn)行相加。

圖2 ResneXt 的單元結(jié)構(gòu)圖
此外,針對城市道路場景中行人目標(biāo)容易被遮擋的情況,為了能夠提升網(wǎng)絡(luò)的對遮擋行人目標(biāo)檢測能力,增強(qiáng)網(wǎng)絡(luò)對小目標(biāo)的特征提取能力,本文增加第4 個尺度特征,即在經(jīng)過2倍上采樣后,輸出的特征尺度由52x52 提升至104x104,然后將特征進(jìn)行融合后輸出。改進(jìn)后的完整網(wǎng)絡(luò)結(jié)構(gòu)如圖3 所示,基礎(chǔ)單元CBL 是由線性卷積Conv、批歸一化處理(Batch Normalization)和LeakyReLU 激活函數(shù)等三部分組成。Resn 是由CBL 構(gòu)成的殘差結(jié)構(gòu)模塊。C-Sets 是由5 個CBL模塊構(gòu)成。Ups 是CBL 后完成2 倍上采樣操作,C 完成特征圖的拼接操作。

圖3 改進(jìn)后的YOLOv3 網(wǎng)絡(luò)結(jié)構(gòu)圖
在城市道路場景中,針對行人存在遮擋導(dǎo)致YOLOv3 模型容易出現(xiàn)漏檢和誤檢的情況。本文提出優(yōu)化YOLOv3 的損失函數(shù)。本文借鑒參考文獻(xiàn)[5]中的做法,對坐標(biāo)損失函數(shù)改進(jìn)為采用CIOU 損失的方法,該方法綜合考慮了重疊區(qū)域、中心點距離和邊框的縱橫比等三個因素。具體的計算公式如下所示:
公式中,D 是預(yù)測框與真實框中心坐標(biāo)的歐式距離,c是包含預(yù)測框和真實框的最小閉包矩形的對角線長度,а 是大于0 的權(quán)重系數(shù),v 是度量預(yù)測框與真實框?qū)捀弑鹊囊恢滦詤?shù)。
YOLOv3 的激活函數(shù)是Leaky ReLU 函數(shù),其表達(dá)式如下:
該激活函數(shù)存在的問題是當(dāng)目標(biāo)函數(shù)的局部梯度值變化較大時,在x=0 左右兩側(cè)會產(chǎn)生不連續(xù)的梯度變化。本文采用Mish 函數(shù)代替Relu 函數(shù)[6]。該函數(shù)避免了導(dǎo)致訓(xùn)練速度急劇下降的梯度飽和,加快了訓(xùn)練過程。Mish 函數(shù)的表達(dá)式如下:
本實驗的城市道路環(huán)境行人檢測是基于python 3.7 和TensorFlow 2.0 框架完成的,實驗相關(guān)的操作系統(tǒng)是64 位Windows 10,處理器是Inter Core i5-9300H, 內(nèi)存容量為8GB,GPU 為NviDIA GeForce GTX1650。
本文實驗使用的數(shù)據(jù)集是自制城市道路環(huán)境數(shù)據(jù)集,從真實城市道路中拍攝1 000 張圖片,圖片中包含小行人目標(biāo)、部分遮擋行人目標(biāo)等多種情形。通過Labelling 標(biāo)注工具得到訓(xùn)練所需要的XML 文件,每一個圖片名對應(yīng)一個Label.xml,為了簡化實驗,數(shù)據(jù)集中只標(biāo)注了行人和汽車2 種目標(biāo)。將1 000 張圖片按7:2:1 的比例劃分成訓(xùn)練集、驗證集和測試集三部分?jǐn)?shù)據(jù)集。
本文采用平均精度mAP,丟失率mMR,召回率Recall 等三個指標(biāo)來評估改進(jìn)后的YOLO 模型的性能優(yōu)劣。平均精度反映了模型的整體檢測精度,越大代表性能越好;丟失率反映了模型漏檢的大小,越小越好;召回率反映的是模型正確檢測到的目標(biāo)數(shù)占總目標(biāo)數(shù)的比例,越大越好。訓(xùn)練的初始學(xué)習(xí)率設(shè)為0.000 1,訓(xùn)練的批次大小設(shè)為7,得到的最優(yōu)參數(shù)作為整個網(wǎng)絡(luò)的訓(xùn)練結(jié)果。
為了驗證改進(jìn)后的YOLOv3 算法的行人檢測性能,將改進(jìn)后的算法與原YOLOv3 算法進(jìn)行比較。2 種算法使用同一個數(shù)據(jù)集進(jìn)行訓(xùn)練,訓(xùn)練后使用mAP,mMR 和Recall 來對比分析其性能。實驗結(jié)果如表1所示。

表1 改進(jìn)YOLOv3 與原算法檢測性能對比
由表1 可知,改進(jìn)后的YOLOv 算法相比原來的算法在平均精度和召回率上都提高了1 個百分點以上,說明本文提出的改進(jìn)算法在城市道路環(huán)境下的行人檢測效果更好。
對原YOLOv3 算法和改進(jìn)后的YOLOv3 進(jìn)行檢測效果對比,實驗結(jié)果顯示改進(jìn)后的YOLOv3 算法對部分遮擋行人目標(biāo)和小行人目標(biāo)可以有效的檢測出來。圖4 中間的部分遮擋行人和右邊小孩未能檢測出來。圖5 中間的部分遮擋行人和右邊小孩能檢測出來,說明改進(jìn)后的算法的性能有了提升,能夠解決部分遮擋目標(biāo)和小目標(biāo)檢測的問題。

圖4 YOLOv3 檢測效果圖

圖5 改進(jìn)YOLOv3 檢測效果圖
本文改進(jìn)的YOLOv3 算法在自制的城市道路數(shù)據(jù)集中進(jìn)行了實驗驗證,并與YOLOv3 算法進(jìn)行對比實驗,結(jié)果表明改進(jìn)后的算法在平均精度、召回率上提升了超1 個百分點,丟失率有所下降。改進(jìn)后的算法對遮擋目標(biāo)和小目標(biāo)的檢測精度提高了。下一步工作,筆者將研究如何提升改進(jìn)算法的實時檢測速率問題,使得檢測算法更適合城市復(fù)雜道路的實時行人檢測。