蒲虹林 田懷文 樂思顯
(西南交通大學(xué)機(jī)械工程學(xué)院 成都 610000)
隨著人工智能的發(fā)展,智能化的無人駕駛技術(shù)得到了各行各業(yè)的廣泛關(guān)注,將汽車智能化使其能夠自動感知道路環(huán)境并實(shí)現(xiàn)自動駕駛,已經(jīng)成為了未來汽車以及萬物互聯(lián)的大趨勢[1]。目前有較多的深度學(xué)習(xí)算法對常規(guī)天氣下的道路目標(biāo)進(jìn)行檢測,取得了較好的效果,使用較為廣泛的有以SSD[2]、YOLO[3]為代表的單階段目標(biāo)檢測網(wǎng)絡(luò)和以Faster R-CNN[4]為代表的雙階段目標(biāo)檢測網(wǎng)絡(luò)等。在霧天情況下,因空氣中存在大量的懸浮顆粒物,造成采集設(shè)備采集到的圖像數(shù)據(jù)細(xì)節(jié)信息丟失,嚴(yán)重影響了交通道路上的車輛和行人檢測。
針對霧天道路下的目標(biāo)檢測問題,目前解決方法多為同時使用去霧算法和檢測算法,根據(jù)其實(shí)現(xiàn)方式主要分為去霧-檢測無關(guān)聯(lián)檢測方法和去霧-檢測有關(guān)聯(lián)檢測方法。其中陳瓊紅[5]提出了一種基于AOD-Net 和SSD 的霧天車輛檢測方法,主要利用深度學(xué)習(xí)算法SSD 對經(jīng)過去霧后的數(shù)據(jù)集進(jìn)行特征學(xué)習(xí)和驗(yàn)證,其有較好的去霧檢測效果。Jin[6]等對帶霧圖像先利用暗通道先驗(yàn)算法去霧,再利用卷積神經(jīng)網(wǎng)絡(luò)算法進(jìn)一步實(shí)現(xiàn)去霧操作并完成檢測任務(wù),實(shí)現(xiàn)霧天場景下的車牌檢測。黃開啟[7]等提出一種基于改進(jìn)YOLOv3 的目標(biāo)檢測算法,其先利用去霧算法對帶霧圖像進(jìn)行去霧處理,再結(jié)合改進(jìn)的目標(biāo)檢測算法實(shí)現(xiàn)了霧天場景下的道路目標(biāo)檢測,李軒[8]等提出一種復(fù)雜氣象條件下的交通場景目標(biāo)檢測算法,引入DenseNet和膨脹卷積結(jié)構(gòu)改進(jìn)YOLOv3 結(jié)構(gòu),對復(fù)雜氣象下拍攝的圖片有較好的檢測效果,但因其采用暗通道去霧算法對圖片增強(qiáng),對于含有天空區(qū)域圖片處理效果較差。上述方法為去霧和檢測無關(guān)聯(lián)算法,受去霧算法影響,直接對經(jīng)過去霧算法去霧后的圖像檢測,可能導(dǎo)致圖像細(xì)節(jié)信息丟失,檢測精度下降,且去霧和檢測二者分開獨(dú)立運(yùn)行,內(nèi)存容量花費(fèi)較高。一些學(xué)者也提出了將去霧和檢測算法相互結(jié)合的檢測算法,例如Li[9]等將AOD-Net 網(wǎng)絡(luò)與Faster RCNN 網(wǎng)絡(luò)進(jìn)行聯(lián)合訓(xùn)練,實(shí)現(xiàn)去霧檢測。解宇虹[10]等也提出一種將Faster RCNN和多種去霧算法相結(jié)合的聯(lián)合去霧檢測算法,有較高的檢測精度但上述方法檢測主干網(wǎng)絡(luò)多為雙階段檢測網(wǎng)絡(luò),檢測速度受到一定限制,若將其直接用于交通目標(biāo)檢測,難以滿足實(shí)時要求。
通過實(shí)驗(yàn)證明若對帶霧圖像進(jìn)行去霧處理,其相似度等評價指標(biāo)值和視覺效果能夠有一定的提升,但是受去霧算法影響可能會導(dǎo)致圖像失真和部分細(xì)節(jié)信息丟失,不利于后續(xù)執(zhí)行檢測任務(wù)。因此本文通過結(jié)合去霧和檢測網(wǎng)絡(luò),構(gòu)建一個端到端的去霧檢測聯(lián)合優(yōu)化的網(wǎng)絡(luò)模型A-YOLOv3。主要貢獻(xiàn)如下:通過大氣散射模型制作了適用于霧天道路目標(biāo)檢測數(shù)據(jù)集S-KITTI;基于改進(jìn)的空間池化結(jié)構(gòu)提出了一種端到端去霧模塊;引入通道注意力機(jī)制,提出SE-ResNet 模塊,改進(jìn)DarkNet53 結(jié)構(gòu),提高特征提取性能;改進(jìn)原FPN 結(jié)構(gòu),實(shí)現(xiàn)多尺度預(yù)測,提高目標(biāo)檢測率。
A-YOLOv3 網(wǎng)絡(luò)模型的設(shè)計(jì)主要由去霧、檢測兩個部分組成,其網(wǎng)絡(luò)結(jié)構(gòu)如圖1 所示。網(wǎng)絡(luò)中的DBL 是指卷積層、Batch Normolization 和Leaky relu激活函數(shù);SE-Resn 表示引入注意力機(jī)制的殘差塊,Conv 表示卷積操作,SPP 為改進(jìn)的空間金字塔池化結(jié)構(gòu)。
圖1 霧天道路檢測網(wǎng)絡(luò)
在去霧模塊中,主要由五個卷積層構(gòu)成,使用連接層補(bǔ)償特征信息提取過程中造成的信息缺失,另外通過引入改進(jìn)的SPP 模塊加深對圖像中霾結(jié)構(gòu)的感知,使得網(wǎng)絡(luò)能夠更加準(zhǔn)確地感知物體的邊界信息,通過估算大氣亮度值A(chǔ)和介質(zhì)傳輸透射率t(x)實(shí)現(xiàn)網(wǎng)絡(luò)的去霧操作。目標(biāo)檢測部分借鑒YOLOv3 思想,采用DarkNet53 網(wǎng)絡(luò)實(shí)現(xiàn)特征信息提取,并通過在殘差層中引入SE 通道注意力機(jī)制,使模型關(guān)注重點(diǎn)信息,避免了梯度擴(kuò)散和梯度爆炸的問題,提高了模型的訓(xùn)練速度。在與DarkNet53 下采樣提取的特征交互中,引入第四個特征層,實(shí)現(xiàn)多尺度的輸出,其中最小比例尺大小為13*13,最大比例尺大小為104*104。
2.1.1 大氣散射模型及其變形
大氣散射模型[11]主要由入射光衰減模型和大氣光成像模型兩個部分組成,如式(1)所示:
其中,I(x)為霧天場景下拍攝的原始圖像;J(x)為無霧的清晰圖像;A為大氣亮度;t(x)為介質(zhì)傳輸透射率,當(dāng)光線在均勻介質(zhì)中傳輸時,表達(dá)式如式(2)所示:
其中,β為大氣散射系數(shù),當(dāng)霧的濃度較均勻時,其值可以視作一個常數(shù);d(x)為景物深度,反映景物與圖像采集設(shè)備之間的距離信息,整理后可得去霧后的清晰圖像表達(dá)式如式(3)所示:
從大氣散射模型中恢復(fù)出無霧圖像的關(guān)鍵是估計(jì)霧圖的透射率和相應(yīng)的大氣光值,本文借鑒Li等人提出的思想,將大氣亮度A和介質(zhì)傳輸透射率t(x)兩個變量參數(shù)統(tǒng)一為一個新的式子K(x),使神經(jīng)網(wǎng)絡(luò)模型直接估算透射率和大氣光的聯(lián)合值,完成圖像的去霧任務(wù),變形后的表達(dá)式如式(4)所示,
其中K(x)是A和t(x)整合的新變量,其表達(dá)式如式(5)所示,b為常數(shù)偏差,通常取值為1。
2.1.2 SPP結(jié)構(gòu)
為分離上下文特征,增加感受野信息,便于后續(xù)融合全局特征信息,引入改進(jìn)的空間金字塔池化結(jié)構(gòu)[12],其結(jié)構(gòu)如圖2所示。
圖2 改進(jìn)后的空間金字塔池化結(jié)構(gòu)
首先對輸入的特征信息進(jìn)行卷積操作,減少通道數(shù);然后分別進(jìn)行不同大小的最大池化操作,池化核分別為5,9,13,步長設(shè)置為1;最后將3個池化層和上一層的輸出特征合并,輸入到下一個卷積操作中實(shí)現(xiàn)特征學(xué)習(xí),得到更加豐富的局部特征信息,SPP 網(wǎng)絡(luò)結(jié)構(gòu)的加入,可以極大地增加特征層的感受野,使全局和局部多尺度特征融合,獲得更準(zhǔn)確的信息。
YOLOv3 采用去除全連接層的DarkNet53 作為特征提取網(wǎng)絡(luò),其融合殘差網(wǎng)絡(luò)思想,在網(wǎng)絡(luò)中使用了大量的跳躍結(jié)構(gòu),該設(shè)計(jì)能夠保證網(wǎng)絡(luò)在訓(xùn)練的過程中收斂,并且能夠改善隨著網(wǎng)絡(luò)深度增加而造成的梯度彌散問題,本文通過引入空間注意力機(jī)制和新增第四層檢測層,提高模型識別精度。
2.2.1 融合注意力機(jī)制的殘差網(wǎng)絡(luò)
殘差連接使得正向傳播的特征保留,每一層的結(jié)果都是在之前的基礎(chǔ)上得到的,這樣的連接方式不僅能夠防止網(wǎng)絡(luò)梯度消失,還有利于網(wǎng)絡(luò)的收斂。注意力機(jī)制能夠使深度學(xué)習(xí)網(wǎng)絡(luò)關(guān)注不同通道之間的特征關(guān)系,聚焦于重要信息,本文在殘差密集塊的基礎(chǔ)上增添SE-Net(Sequeze and Excitation Network block,SE-block)通道注意力機(jī)制[13]。提高特征信息提取能力,融合通道注意力機(jī)制的殘差結(jié)構(gòu)如圖3所示。
圖3 引入注意力機(jī)制的殘差塊
2.2.2 多尺度檢測
YOLOv3 借鑒了特征金字塔網(wǎng)絡(luò)FPN 的檢測框架,在三個尺度上實(shí)現(xiàn)目標(biāo)檢測,在檢測過程中,三個輸出分別用來檢測小物體、中物體和大物體,對于檢測大物體較為準(zhǔn)確,但是在小物體方面,受到過多的卷積限制導(dǎo)致小物體特征信息丟失,存在漏檢或位置信息不明確等現(xiàn)象。因此針對于特征金字塔FPN 結(jié)構(gòu)進(jìn)行改進(jìn),在模型中添加104*104這一尺度大小的特征圖,將淺層特征上采樣后與深層語義進(jìn)行融合,作為第四層輸出,實(shí)現(xiàn)了淺層特征和深層特征的融合,提高了定位精度。
聯(lián)合優(yōu)化模型時,訓(xùn)練輸入的學(xué)習(xí)樣本分為三個部分:無霧圖像、帶霧圖像和圖像標(biāo)注信息。通過輸入無霧圖像和帶霧圖像的輸入對霧結(jié)構(gòu)的特征進(jìn)行學(xué)習(xí),帶霧圖像和圖像標(biāo)注信息的輸入實(shí)現(xiàn)對檢測網(wǎng)絡(luò)的訓(xùn)練。聯(lián)合優(yōu)化網(wǎng)絡(luò)的損失函數(shù)由檢測網(wǎng)絡(luò)的損失函數(shù)和去霧網(wǎng)絡(luò)的損失函數(shù)同時定義。本文采用均方誤差函數(shù)作為去霧模塊的損失函數(shù),如式(6)所示:
原YOLOv3 檢測網(wǎng)絡(luò)的損失函數(shù)主要由三個部分組成:位置誤差、分類誤差、置信度誤差,如式(7)所示:
對于去霧和檢測網(wǎng)絡(luò)聯(lián)合優(yōu)化的深度學(xué)習(xí)網(wǎng)絡(luò),訓(xùn)練時輸入為無霧圖像、帶霧圖像和圖像標(biāo)注信息三個參數(shù),由聯(lián)合模型統(tǒng)一實(shí)現(xiàn)去霧和檢測學(xué)習(xí),整體網(wǎng)絡(luò)結(jié)構(gòu)損失函數(shù)定義如式(8)所示。
真實(shí)場景下的霧天道路目標(biāo)數(shù)據(jù)集較少,制作霧天場景下的道路目標(biāo)數(shù)據(jù)集成本較高,考慮到本文訓(xùn)練過程中需要同時利用原圖和霧圖信息,故采用合成霧圖方式生成霧天道路下的目標(biāo)檢測數(shù)據(jù)集。
KITTI 數(shù)據(jù)集[14]是道路目標(biāo)檢測常用的數(shù)據(jù)集,共7481 張,包括“Car”、“Van”、“Truck”、“Pedestrian”、“Cyclist”、“Tram”、“Misc”、“DontCare”、“Person_sitting”九類。對數(shù)據(jù)集進(jìn)行初步處理,將“Person_sitting”、“Pedestrian”合并為“person”類,將“Car”、“van”合并為“car”類,去掉“DontCare”、“Misc”兩類。處理后的數(shù)據(jù)集分類為“car”、“person”、“Cyclist”、“Tram”四類。monodepth2[15]是一個單目深度估計(jì)自監(jiān)督深度學(xué)習(xí)算法,通過其能夠獲得輸入圖像的深度信息圖。本文結(jié)合大氣散射公式,制作合成帶霧數(shù)據(jù)集,制作流程見圖4。
圖4 數(shù)據(jù)集制作流程
其中大氣散射光A值的每一個通道值在[0.7,1.0]中隨機(jī)取值,t(x)計(jì)算式中的β值在[0.6,1.8]中隨機(jī)取值。通過上述處理方式,在KITTI 數(shù)據(jù)集基礎(chǔ)上合成霧天道路目標(biāo)檢測數(shù)據(jù)集,在后續(xù)實(shí)驗(yàn)中將經(jīng)過上述方法處理的KITTI 數(shù)據(jù)集簡稱為S-KITTI,各步驟圖見圖5。
圖5 數(shù)據(jù)集示例
在訓(xùn)練過程中,設(shè)置初始學(xué)習(xí)率為0.001,并在后續(xù)的訓(xùn)練過程中不斷優(yōu)化減少學(xué)習(xí)率,每次訓(xùn)練的選取的樣本數(shù)設(shè)置為8,Momentum設(shè)置為0.9,使用Adam算法對模型進(jìn)行優(yōu)化,實(shí)驗(yàn)環(huán)境見表1。
表1 實(shí)驗(yàn)環(huán)境參數(shù)表
本文采用均值平均精度mAP 和每秒傳輸幀數(shù)fps作為模型評價指標(biāo)。其計(jì)算式如下:
其中AP為檢測類別的平均精度值,n為類別數(shù)量;Npic表示檢測圖片數(shù)量,Ttime表示檢測耗費(fèi)時長。
將自制數(shù)據(jù)集S-KITTI按照7∶1∶2的方式劃分為訓(xùn)練集、驗(yàn)證集、測試集三個部分,通過對訓(xùn)練集和測試集采用不同處理方式,驗(yàn)證本文算法的有效性,部分實(shí)驗(yàn)測試結(jié)果圖如圖6所示。
圖6 檢測結(jié)果對比圖
圖6(a)是合成后的霧圖,圖6(b)為采用Darknet53 作為backbone 的YOLOv3 算法檢測結(jié)果,其mAP 值為65.22%,從圖示樣例可見存在部分目標(biāo)漏檢,其檢測性能一般;圖6(c)為先進(jìn)行AOD-Net去霧算法去霧處理后,再利用YOLOv3 算法測試,其測試結(jié)果為58.09%,經(jīng)過去霧處理后不僅圖像質(zhì)量降低,檢測性能甚至不如直接使用檢測網(wǎng)絡(luò);圖6(d)為文獻(xiàn)[10]提出的算法,相比于前兩種方式,其檢測性能有較大提升,但仍存在部分目標(biāo)漏檢,其mAP 值為71.25%;圖6(e)為文獻(xiàn)[9]提出的算法,檢測目標(biāo)較為完整,但檢測框與真實(shí)框重疊比較低,mAP 值為70.2%;圖6(f)為本文提出的算法,相比于其余幾種去霧檢測方式,檢測精度最高,能夠基本實(shí)現(xiàn)霧天道路下的目標(biāo)檢測任務(wù),其mAP值為72.5%;從檢測精度,可以得出相比于其它訓(xùn)練方式,其精度有較大提升,驗(yàn)證了本文提出的聯(lián)合優(yōu)化算法的有效性,實(shí)驗(yàn)數(shù)據(jù)詳見表2。
表2 實(shí)驗(yàn)數(shù)據(jù)表
實(shí)驗(yàn)證明單獨(dú)的對圖像去霧,雖然從視覺效果上有較好的去霧效果,但由于去霧環(huán)節(jié)照成的失真等問題,將會大大影響后續(xù)檢測效果,同時也證明了本文提出的去霧檢測聯(lián)合優(yōu)化網(wǎng)絡(luò)對霧天場景圖片檢測的有效性。
另外,為充分驗(yàn)證本文算法的優(yōu)越性,采用真實(shí)場景下數(shù)據(jù)集RTTS 作為測試集。圖7 為評估結(jié)果,圖7(a)為YOLOv3 測試結(jié)果圖,對于真實(shí)道路下的霧天圖片其檢測效果較差,存在大量漏檢;圖7(b)為文獻(xiàn)[11]提出的去霧方法,其去霧效果較好,但仍存在漏或誤檢;圖7(c)為本文算法檢測方法,其檢測效果最好,能基本實(shí)現(xiàn)霧天道路目標(biāo)檢測。
圖7 真實(shí)場景下的去霧檢測效果對比
本文提出了一種去霧和檢測聯(lián)合優(yōu)化的道路目標(biāo)檢測算法,利用改進(jìn)的空間金字塔池化結(jié)構(gòu)構(gòu)建去霧模塊,并將其嵌入至引入通道注意力機(jī)制的YOLOv3 目標(biāo)檢測網(wǎng)絡(luò)中,并通過新添一層檢測層,提高網(wǎng)絡(luò)小目標(biāo)檢測能力。對自制合成霧氣數(shù)據(jù)集和真實(shí)霧天道路目標(biāo)數(shù)據(jù)集測試,其有較好的檢測效果,相比于YOLOv3 算法,檢測精度提升了7%。本文還有進(jìn)一步研究的方向:輕量化模型,便于后續(xù)移植至嵌入式設(shè)備中。