鄒慧海,侯 進
(1.西南交通大學(xué) 唐山研究生院,河北 唐山 063000;2.西南交通大學(xué) 信息科學(xué)與技術(shù)學(xué)院,成都 611756)
隨著深度學(xué)習(xí)技術(shù)的發(fā)展,語義分割、目標(biāo)跟蹤、目標(biāo)檢測、車道線檢測在計算機視覺領(lǐng)域得到廣泛關(guān)注,尤其是無人駕駛汽車。目標(biāo)檢測任務(wù)是對車輛前方道路環(huán)境的目標(biāo)進行識別檢測及定位,因?qū)嶋H道路環(huán)境的復(fù)雜多變性,使得該任務(wù)面臨諸多挑戰(zhàn)。
傳統(tǒng)的目標(biāo)檢測方法通常分為區(qū)域選擇、特征手工提取、分類回歸3 個步驟。文獻[1]提出一種差異訓(xùn)練、多尺度的目標(biāo)檢測方法DPM。該方法通過計算模型梯度方向直方圖(Histogram of Οriented Gradients,HΟG),利用支持向量機(Support Vector Machine,SVM)對模型進行分類訓(xùn)練,從而得到物體的梯度信息。但是,在網(wǎng)絡(luò)選擇區(qū)域時因耗費大量時間,導(dǎo)致檢測速度慢,而且手工提取的特征語義信息比較少,導(dǎo)致檢測精度差。
近年來,將深度學(xué)習(xí)與目標(biāo)檢測相結(jié)合的方法成為研究熱點。相比傳統(tǒng)目標(biāo)檢測方法,深度學(xué)習(xí)方法的模型網(wǎng)絡(luò)層數(shù)深、參數(shù)多。在目標(biāo)檢測領(lǐng)域中,該方法具有較高的檢測精度和較優(yōu)的實時性?;诖?,研究人員將深度學(xué)習(xí)理論融入到目標(biāo)檢測工作中。深度學(xué)習(xí)目標(biāo)檢測方法分為[2]單階段(one-stage)檢測方法和雙階段(two-stage)檢測方法。基于區(qū)域候選框的two-stage檢測方法提取輸入圖像的候選區(qū)域,并對其進行候選區(qū)域的分類與修正,從而實現(xiàn)目標(biāo)檢測。代表模型有R-CNN系列,包括R-CNN[3]、Fast R-CNN[4]、Faster R-CNN[5],以及Mask R-CNN[6]等,都具有較優(yōu)的檢測精度,但是檢測速度較慢,從而無法滿足實時性要求。與此相反,one-stage檢測方法是一種端到端的目標(biāo)檢測方法,基于回歸分析的原理,利用卷積神經(jīng)網(wǎng)絡(luò)提取圖像的特征信息,以識別檢測目標(biāo)的位置和類別,能夠有效加快檢測速度。代表模型有YΟLΟ 系列,包括YΟLΟv1[7]、YΟLΟ9000[8]、YΟLΟv3[9]及YΟLΟv4[10]算法、SSD[11]和EfficientDet[12]等。YΟLΟv4[10]檢測模型作為單目標(biāo)檢測模型類別中的最優(yōu)模型,在主干部分引入跨階段局部網(wǎng)絡(luò)(CSPNet)[13]和特征融合金字塔網(wǎng)絡(luò)(PAN)[14],以解決梯度信息重復(fù)問題,從而提高同一物體在不同尺度上的識別精度,還可以通過數(shù)據(jù)增強等訓(xùn)練方式,提高檢測精度和實時性。
在汽車行駛過程中,目標(biāo)檢測方法不僅對近距離的大目標(biāo)進行精準(zhǔn)實時檢測,而且還要對遠距離的小目標(biāo)進行位置檢測。針對道路前方行人和車輛類別的小目標(biāo)檢測問題,本文提出一種基于改進SSD 的道路小目標(biāo)檢測算法。通過引入改進特征金字塔網(wǎng)絡(luò),融合不同層感受野特征信息,利用深層特征網(wǎng)絡(luò)ResNet50代替VGGNet16,同時在殘差結(jié)構(gòu)中引入批量歸一化,從而提高檢測精度并加快收斂速度。
SSD 是單階段多類別的目標(biāo)檢測算法,具有較優(yōu)的檢測精度和較快的檢測速度,但是小目標(biāo)檢測效果并不理想。SSD[11]網(wǎng)絡(luò)結(jié)構(gòu)如圖1 所示。SSD 網(wǎng)絡(luò)結(jié)構(gòu)主要分為2 個部分:1)VGGNet16 特征提取網(wǎng)絡(luò),通過提取圖片目標(biāo)的特征信息,得到特征圖;2)分類回歸層,對每個候選框進行分類與回歸,從而識別檢測出圖片目標(biāo)。
圖1 SSD 網(wǎng)絡(luò)結(jié)構(gòu)Fig.1 Structure of SSD network
SSD 算 法分別在尺度為38×38、19×19、10×10、5×5、3×3、1×1的特征圖上產(chǎn)生候選框,以檢測不同尺度的目標(biāo)大小。本文是在這些尺度特征圖后通過連接特征金字塔融合結(jié)構(gòu)進行消融實驗,提高小目標(biāo)的檢測性能。SSD 算法候選框的數(shù)量為38×38×4+19×19×6+10×10×6+5×5×6+3×3×4+1×1×4=8 732。先驗框尺度的計算如式(1)所示,位置計算如式(2)所示:
其中:h、w為先驗框的長、寬;sk為面積;αr為系數(shù)因素;d為距離;cx、cy為距離x、y軸系數(shù)。
邊界框位置的計算如式(3)所示:
研究表明,匹配先驗框與邊界框遵循的原理是:首先計算邊界框與先驗框的所有IoU 值,當(dāng)IoU 值大于等于設(shè)定的閾值時,說明匹配成功,即為正樣本;反之為負(fù)樣本。若存在一個先驗框與多個邊界框的IoU 值超過設(shè)定閾值時,此時匹配其中最大的邊界框為正樣本,剩余的邊界框為負(fù)樣本。
SSD 的損失函數(shù)采用多任務(wù)損失函數(shù),由分類損失值和邊框回歸損失值2 個部分相加得到。其中分類損失采用交叉熵函數(shù),回歸損失采用SmoothL1loss 函數(shù),整體損失函數(shù)如式(4)所示:
其中:Lconf為分類損 失;Lloc為回歸損 失;α為權(quán)重系數(shù),系數(shù)越大,表明回歸損失在整體損失中占比越大,在訓(xùn)練過程中正樣本的邊框坐標(biāo)優(yōu)化效率越高。
ResNet(Residual Network)[15-16]是一種用于深度學(xué)習(xí)目標(biāo)檢測的卷積神經(jīng)網(wǎng)絡(luò)主干特征提取網(wǎng)絡(luò),因其高效性和實用性,廣泛應(yīng)用于計算機視覺檢測、分割、識別等領(lǐng)域。層數(shù)越深的網(wǎng)絡(luò)可以提取到更加復(fù)雜的特征信息,效果也越好,但是網(wǎng)絡(luò)層數(shù)的增加導(dǎo)致深層梯度在反向傳播過程中越來越小甚至消失,從而阻礙網(wǎng)絡(luò)的收斂,即網(wǎng)絡(luò)退化問題。網(wǎng)絡(luò)退化問題不僅增大了訓(xùn)練誤差和測試誤差,也降低了網(wǎng)絡(luò)精度。
ResNet網(wǎng)絡(luò)中的殘差結(jié)構(gòu)(Residual Block)可以解決網(wǎng)絡(luò)退化問題,殘差網(wǎng)絡(luò)結(jié)構(gòu)對比如圖2 所示。
圖2 不同的殘差網(wǎng)絡(luò)結(jié)構(gòu)對比Fig.2 Comparison of different residual networks structure
在殘差網(wǎng)絡(luò)結(jié)構(gòu)中,當(dāng)輸入為x時,殘差學(xué)習(xí)特征為H(x),網(wǎng)絡(luò)層的原始學(xué)習(xí)特征為F(x)。則殘差結(jié)構(gòu)的學(xué)習(xí)特征H(x)如式(5)所示:
相比原始學(xué)習(xí)特征F(x),殘差網(wǎng)絡(luò)能夠?qū)W習(xí)殘差特征H(x),其原因是當(dāng)卷積網(wǎng)絡(luò)層數(shù)加深時,特征隨網(wǎng)絡(luò)層向下傳遞,而梯度隨網(wǎng)絡(luò)層向上回傳。在此過程中,因網(wǎng)絡(luò)層數(shù)太深導(dǎo)致梯度消失。然而,本文的殘差網(wǎng)絡(luò)可以解決此類問題,即使左邊深層網(wǎng)絡(luò)向上回傳的梯度值過小甚至消失,但是右邊原始梯度值向上回傳,整體梯度值等于兩邊梯度值相加,從而解決梯度消失的問題。
本文使用的改進殘差結(jié)構(gòu)如圖2(b)所示,在原殘差結(jié)構(gòu)的基礎(chǔ)上,將relu[17]激活函數(shù)替換為Leaky-relu[18]激活函數(shù),并加入批量歸一化(Batch Normalization,BN)[19]。在網(wǎng)絡(luò)訓(xùn)練過程中,當(dāng)relu函數(shù)在部分輸入小于0 的情況下,輸出恒為0,導(dǎo)致對應(yīng)權(quán)重難以更新,從而無法訓(xùn)練學(xué)習(xí)特征。Leaky-relu 函數(shù)在輸入小于0 的情況時,輸出持續(xù)變化,以更新權(quán)重并繼續(xù)學(xué)習(xí)。BN 是對特征圖進行歸一化處理,加快收斂速度。同樣在訓(xùn)練時,部分輸入只通過直線連接前向傳播,導(dǎo)致整體結(jié)構(gòu)變成一條直線結(jié)構(gòu)。因此,在殘差結(jié)構(gòu)右側(cè)加入1×1 卷積核操作,可以解決上述整體直線結(jié)構(gòu)問題。
隨著網(wǎng)絡(luò)層數(shù)的加深,主干特征網(wǎng)絡(luò)提取特征圖的感受野逐漸增大,導(dǎo)致小目標(biāo)的有效信息缺失,從而無法檢測出小目標(biāo)。由于不同深度對應(yīng)不同層次分辨率的語義特征信息,因此通過學(xué)習(xí)不同層之間相同的特征信息,提高網(wǎng)絡(luò)識別目標(biāo)的精確度。特征金字塔融合結(jié)構(gòu)如圖3 所示。增加雙向融合的特征金字塔網(wǎng)絡(luò)(Path Aggregation Network,PAN)[14]結(jié)構(gòu)能夠有效解決小目標(biāo)檢測的問題,PAN 結(jié)構(gòu)如圖3(a)所示。通過自底向上和自頂向下融合不同網(wǎng)絡(luò)層提取的特征圖,整合不同感受野大小和語義強度的特征信息,以得到目標(biāo)信息更加豐富的特征圖,從而提高檢測精度。
圖3 特征金字塔融合結(jié)構(gòu)Fig.3 Structure of fusion feature pyramid
PAN 的提出驗證了雙向融合的有效性,但是其結(jié)構(gòu)較簡單。因此,針對實際小目標(biāo)檢測場景,本文提出更復(fù)雜的SFPN 特征融合結(jié)構(gòu),如圖3(b)所示。首先進行第1 次自底向上的特征融合,將每層特征網(wǎng)絡(luò)提取的特征圖進行相應(yīng)倍數(shù)的上采樣,并分別與第1 層、上一層特征圖級聯(lián)相加融合得到特征圖Pi(i表示層數(shù)),然后再進行第2 次自頂向下特征融合,在此過程中,將第1 層特征圖P1分別與每層特征圖Pi級聯(lián)相加融合得到2 次融合特征圖Ni,其他結(jié)構(gòu)保持不變。SFPN 特征融合結(jié)構(gòu)的目的是為了融合淺層特征圖感受野?。ò啃∧繕?biāo))的有效信息,得到小目標(biāo)語義特征信息更豐富的特征圖,從而提高小目標(biāo)檢測性能。
為提高小目標(biāo)檢測性能,改進的SSD 網(wǎng)絡(luò)是通過引入特征融合金字塔SFPN 網(wǎng)絡(luò),并加載在原SSD特征提取網(wǎng)絡(luò)之后,對不同尺度分辨率的特征圖進行融合,利用融合淺層和深層的特征圖感受野,以提高小目標(biāo)檢測性能,進而分類回歸預(yù)測目標(biāo)。同時為提升整體RFG_SSD 網(wǎng)絡(luò)性能,改進RFG_SSD 網(wǎng)絡(luò)結(jié)構(gòu)選用ResNet50 替換VGGNet16,并將其作為改進模型的主干特征提取網(wǎng)絡(luò),通過加深網(wǎng)絡(luò)層數(shù)提升性能。改進RFG_SSD 網(wǎng)絡(luò)結(jié)構(gòu)分為主干特征提取結(jié)構(gòu)、SFPN 特征融合結(jié)構(gòu)、分類回歸檢測層結(jié)構(gòu)3 個部分,如圖4 所示。
圖4 RFG_SSD 網(wǎng)絡(luò)結(jié)構(gòu)Fig.4 Structure of RFG_SSD network
在主干網(wǎng)絡(luò)中,輸入圖片尺寸為300×300×3,首先通過ResNet50 網(wǎng)絡(luò)對輸入圖片進行特征提取,每經(jīng)過一個殘差塊將提取的特征圖送入SFPN網(wǎng)絡(luò)中并進行特征金字塔融合操作,尺度分別為56×56、28×28、14×14 和7×7。在ResNet50 網(wǎng)絡(luò)結(jié)構(gòu)中主要使用改進殘差結(jié)構(gòu)(ResBlock),引入批量歸一化(BN)和Leaky-relu 激活函數(shù)。BN 操作是在特征圖的批量大小、長、高3 個維度上進行歸一化處理,目的是通過規(guī)范化方法將偏離的分布拉回到標(biāo)準(zhǔn)化,使梯度變大,以加快學(xué)習(xí)收斂速度,從而解決梯度消失的問題。Leaky-relu 激活函數(shù)操作是向上回傳梯度,以避免網(wǎng)絡(luò)退化現(xiàn)象的出現(xiàn),從而為網(wǎng)絡(luò)增加了非線性表達能力且提高了網(wǎng)絡(luò)檢測性能。
在2 次縱向融合過程中,SFPN 特征融合結(jié)構(gòu)將下一層特征圖進行2 倍上采樣、上一層特征圖進行1×1 卷積,進而將兩者級聯(lián)相加連接,得到融合不同層語義信息的特征圖,使得網(wǎng)絡(luò)學(xué)習(xí)特征更加精準(zhǔn),如圖4中SFPN模塊實線連接。為提取更多的小目標(biāo)特征信息,在第1 次融合過程中,將各層不同感受野大小的特征圖Ci做2 倍、4 倍、6 倍上采樣后,并與C1特征圖融合得到P1,在第2 次融合過程中,將P1進行核為3×3 大小、步長分別為2、4、6 的3 種最大池化方式降采樣后,并與各層Pi融合得到Ni,如圖4 中SFPN 模塊虛線連接。最后分別將各層融合得到的高語義信息特征圖Ni傳入到檢測層進行分類回歸,以預(yù)測目標(biāo)。
在檢測層結(jié)構(gòu)中,依次經(jīng)過批量歸一化BN 和Leaky-relu 激活函數(shù)操作層、全局平均池化層(Global Average Pooling,GAP)[20]、softmax 層[21],最終得到目標(biāo)檢測結(jié)果。標(biāo)準(zhǔn)目標(biāo)檢測網(wǎng)絡(luò)模型在特征提取后連接全連接層(Full Connected,F(xiàn)C),其目的是將前面學(xué)習(xí)得到的特征語義表示映射到樣本空間,降維得到一維向量組,并將其輸入到softmax 層進行分類,以得到相應(yīng)類別目標(biāo)。由于FC 層參數(shù)冗余,占據(jù)整個網(wǎng)絡(luò)參數(shù)量的80%以上,導(dǎo)致運算量過大,且容易過擬合,因此使用代替FC 層,如圖4 中檢測層結(jié)構(gòu)。全局平均池化方式不僅能夠降維得到與FC 相同的結(jié)果,而且可以降低50%以上的參數(shù)量,同時去除了對輸入圖片大小的限制,以提高網(wǎng)絡(luò)運算速度。
本文選用pytorch 開源框架進行訓(xùn)練、測試,基于ubuntu16.04 操作系 統(tǒng),CPU 為Inter Core i7-9700K,3.60 GHz,顯卡為NVIDIIA GTX2080。編譯環(huán)境為torch-1.2、torchvision-0.40,cuda10.0、cudnn10.0,python 3.7語言編程。
針對道路行駛過程中車輛前方的行人和車輛目標(biāo),本文選用的數(shù)據(jù)集必須滿足車輛行駛過程中有足夠多的行人和車輛,并且是真實的路況環(huán)境。因此,本文使用BDD100K 數(shù)據(jù)集[22],該數(shù)據(jù)集是2018 年伯克利大學(xué)發(fā)布的大規(guī)模、內(nèi)容多樣性的公開駕駛數(shù)據(jù)集。其中道路目標(biāo)數(shù)據(jù)有1×105張圖片,包括城市街道、高速公路等路況場景,包含晴天、陰天、雨天等天氣環(huán)境。這些因素使得數(shù)據(jù)集具備豐富多樣性的行人、車輛路況場景,網(wǎng)絡(luò)能夠?qū)W習(xí)更豐富的特征,從而適用于道路上各種復(fù)雜場景,保障無人駕駛汽車的安全出行。
該數(shù)據(jù)集的道路目標(biāo)數(shù)據(jù)包含訓(xùn)練集7×104張圖片、測試集2×104張圖片、驗證集1×104張圖片,包括多種目標(biāo)類別標(biāo)簽數(shù)據(jù)。編寫代碼提取兩個數(shù)據(jù)集的行人、車輛類別標(biāo)簽,并保存得到訓(xùn)練集、測試集、驗證集txt 格式。同時使用式(1)計算每個類別標(biāo)簽框尺度大小,設(shè)定尺度小于或等于19×19 的標(biāo)簽框為小目標(biāo),統(tǒng)計類別標(biāo)簽個數(shù)和小目標(biāo)標(biāo)簽個數(shù),以得到小目標(biāo)框個數(shù)約占所有框個數(shù)的40%,各標(biāo)簽框數(shù)目統(tǒng)計如表1 所示。
表1 標(biāo)簽框數(shù)目Table 1 The number of label boxes
本文通過控制變量法(不同模塊組合)進行消融實驗,以對比各模塊作用程度。各網(wǎng)絡(luò)的結(jié)構(gòu)模塊如表2所示。本文使用BDD100K 訓(xùn)練集對4 種網(wǎng)絡(luò)進行模型訓(xùn)練實驗。訓(xùn)練過程中批次大小為8,迭代次數(shù)為500,初始學(xué)習(xí)率為0.000 1,權(quán)值衰減為0.000 5。其中學(xué)習(xí)率決定得到最優(yōu)值參數(shù)的速度,如果學(xué)習(xí)率過大,參數(shù)可能會跳過最優(yōu)值,從而導(dǎo)致網(wǎng)絡(luò)無法收斂甚至發(fā)散;如果學(xué)習(xí)率過小,則優(yōu)化效率過低,網(wǎng)絡(luò)長時間無法收斂,可能得到局部最優(yōu)。因此,在訓(xùn)練中權(quán)值衰減系數(shù)的設(shè)置是根據(jù)模型訓(xùn)練情況來動態(tài)改變學(xué)習(xí)率大小,使得網(wǎng)絡(luò)在訓(xùn)練迭代中得到最優(yōu)值參數(shù)。
表2 不同網(wǎng)絡(luò)的模塊結(jié)構(gòu)Table 2 Module structure of different networks
訓(xùn)練時調(diào)用原SSD 在VΟC2007 數(shù)據(jù)集上訓(xùn)練得到的權(quán)重并進行初始化,并且在訓(xùn)練中將訓(xùn)練損失值變化繪制成曲線,如圖5 所示。損失值越小表示模型預(yù)測目標(biāo)越接近真實目標(biāo),模型的性能越好。
圖5 不同算法的損失值對比Fig.5 Loss values comparison among different algorithms
從圖5 可以看出,各算法經(jīng)過迭代100 次后損失變化趨于穩(wěn)定,曲線波動不大。SSD 算法使用VGGNet16 特征提取網(wǎng)絡(luò),損失值最大;只將原SSD結(jié)構(gòu)中特征提取網(wǎng)絡(luò)替換為ResNet50,損失值排在第2;在原SSD 結(jié)構(gòu)中只增加SFPN 特征融合網(wǎng)絡(luò),損失值排在第3;同時替換ResNet50 網(wǎng)絡(luò)和增加SFPN 網(wǎng)絡(luò)設(shè)計得到RFG_SSD 網(wǎng)絡(luò),損失值最小,相對應(yīng)的性能最優(yōu)。
3.4.1 消融實驗精度評估
在目標(biāo)檢測領(lǐng)域中,本文選用準(zhǔn)確率和召回率來評估系統(tǒng)的性能。準(zhǔn)確率是指在所有正樣本中,正確目標(biāo)所占的比例,衡量查準(zhǔn)率;召回率是指在所有真實的目標(biāo)中,被模型正確檢測出來的目標(biāo)所占的比例,衡量查全率。精確率和召回率如式(6)和式(7)所示:
其中:P為準(zhǔn)確率;R為召回率;TTP為模型正確檢測的目標(biāo)個數(shù);FFP表示模型錯誤檢測的目標(biāo)個數(shù);FFN為模型漏檢的正確目標(biāo)個數(shù)。
在實際過程中,準(zhǔn)確率和召回率相互關(guān)聯(lián),因此將計算得到的P、R值繪制成P-R 曲線,綜合考慮P-R 曲線下的面積AAP值來評估各類別檢測性能,AAP值越大,表示模型檢測精度越高,即性能越好,如式(8)所示:
針對多個類別N,本文使用平均值mmAP評估模型整體性能,如式(9)所示:
本文分別使用原SSD 算法、ResNet50 算法、VGG16+SFPN 算法和RFG_SSD 算法對BDD100K測試集測試檢測精度。編寫代碼利用各個算法訓(xùn)練得到的權(quán)重模型計算P、R值,并繪制成P-R 曲線,得到各個算法類別AP 值,如圖6 所示。
圖6 不同算法的P-R 曲線對比Fig.6 P-R curves comparison among different algorithms
不同算法的檢測精度對比如表3所示。從表3可以看出,ResNet50算法相對于SSD算法mmAP提高了6.42個百分點,表明深層特征提取模塊ResNet50能夠有效提高模型的檢測精度。VGG16+SFPN算法相對于SSD算法mmAP提高8.6個百分點,表明SFPN結(jié)構(gòu)有效提高模型的檢測精度。最終改進算法RFG_SSD 是將ResNet50模塊和SFPN 模塊相結(jié)合得到,與SSD 相比,其mmAP提高12.69個百分點,與單獨使用ResNet50模塊或SFPN 模塊相比,其mmAP分別提高6.72和4.09個百分點,表明2個模塊結(jié)合使用能夠有效提高模型的檢測精度。
表3 不同算法的檢測精度對比Table 3 Detection accuracy comparison among different algorithms %
3.4.2 不同算法的性能對比
算法性能的評估不僅要考慮平均檢測精度mmAP值,同時也需要評估檢測速度,即實時性(FFPS)的快慢情況。實時性表示目標(biāo)檢測網(wǎng)絡(luò)檢測一張圖片需要的時間,假設(shè)網(wǎng)絡(luò)檢測一張圖片需要s,F(xiàn)FPS值越大,表示檢測時間越少,速度越快。FFPS如式(10)所示:
本文分別使用SSD 算法、YΟLΟv4 算法及改進SSD 算法對VΟC2007+2012 測 試集 與BDD100K 測試集進行測試評估,并對比各類算法的檢測精度和速度。其中文獻[23]算法在原SSD 淺層網(wǎng)絡(luò)結(jié)構(gòu)上設(shè)計淺層特征增強模塊,以提高淺層小目標(biāo)的特征提取能力,文獻[24]算法在檢測識別時利用小目標(biāo)強化檢測模塊與原SSD 級聯(lián)方式,提高小目標(biāo)的檢測效果。這2 種改進算法都只是針對小目標(biāo)部分結(jié)構(gòu),雖然小目標(biāo)檢測效果有所提高,但是整體檢測性能并沒有顯著提高。本文改進算法RFG_SSD不僅能夠提高小目標(biāo)檢測性能,還提高了整體性能。
本文利用編寫代碼計算各類算法在兩個數(shù)據(jù)集上的平均精度和實時性表現(xiàn),同時使用式(1)計算模型檢測的目標(biāo)框尺度大小,并統(tǒng)計尺度小于19×19 的小目標(biāo)框檢測個數(shù)。在VΟC2007+2012 和BDD100K 測試集上不同方法的檢測結(jié)果及適用場景對比如表4所示。從表4 可以看出,在VΟC2007+2012 和BDD100K 測試集上,VGG16+SFPN 算法相對文獻[22]、文獻[23]及SSD 算法的檢測精度和速度都有所提高,并且小目標(biāo)檢測個數(shù)增多,驗證了SFPN 模塊結(jié)構(gòu)提升小目標(biāo)檢測性能的有效性,但是與YΟLΟv4 算法相比,VGG16+SFPN 算法的性能優(yōu)勢并不明顯。在BDD 100K 數(shù)據(jù)集上,本文提出的改進算法RFG_SSD 在檢測精度和速度上相對于其他算法都具有明顯優(yōu)勢,與目前性能最優(yōu)的檢測算法YΟLΟv4 相比,其整體性能相差不大,精度降低了0.97 個百分點,檢測速度加快1.8 frame/s,小目標(biāo)檢測數(shù)目相差約600 個。與原SSD 算法相比,RFG_SSD 算法精度提高了12.69 個百分點,檢測速度提高34.33 frame/s,小目標(biāo)框檢測數(shù)高出3 倍以上。與文獻[23]、文獻[24]算法相比,RFG_SSD 算法的檢測效果得到明顯提高,表明ResNet50+SFPN 模塊能夠有效提高檢測準(zhǔn)確度。
表4 不同算法的目標(biāo)檢測結(jié)果與適用場景對比Table 4 Target detection results and applicable scenarios comparison among different algorithms
本文RFG_SSD 算法和SSD 算法對數(shù)據(jù)集圖片進行目標(biāo)檢測對比,如圖7 所示。
圖7 不同算法的目標(biāo)檢測結(jié)果Fig.7 Target detection results of different algorithms
從圖7可以看出,對于圖片中行人和汽車目標(biāo),SSD算法未識別檢測出小目標(biāo),只檢測出部分大目標(biāo),RFG_SSD 算法能夠精準(zhǔn)檢測出大、小目標(biāo)。結(jié)果表明,RFG_SSD 算法能夠精準(zhǔn)檢測出圖片中任意尺度的目標(biāo),并且速度更快,性能得到顯著提升,以達到預(yù)期行人、汽車多尺度檢測的效果。
本文提出一種改進SSD 算法的道路小目標(biāo)檢測算法。在SSD 網(wǎng)絡(luò)結(jié)構(gòu)基礎(chǔ)上,通過引入改進特征金字塔結(jié)構(gòu)SFPN 融合不同層特征的語義信息,將特征網(wǎng)絡(luò)VGGNet16 替換為網(wǎng)絡(luò)層數(shù)較多的ResNet50,以提高整體網(wǎng)絡(luò)性能,并通過增加批量歸一化、全局平均池化等結(jié)構(gòu),從而降低參數(shù)量。實驗結(jié)果表明,相比SSD、VGG16+SFPN 算法,該算法能夠顯著提高檢測精度,并加快檢測速度,實現(xiàn)多尺度目標(biāo)檢測,其在BDD100K 數(shù)據(jù)集上的精確度達到98.05%。由于本文算法僅對道路行人、車輛進行檢測,因此后續(xù)將改進檢測模型,使其適用于道路多類別、多尺度的檢測。