陳正斌,葉東毅
(福州大學(xué) 數(shù)學(xué)與計算機(jī)科學(xué)學(xué)院,福州 350108)
隨著高精度光學(xué)傳感器和電子傳感器,以及計算機(jī)視覺和深度學(xué)習(xí)算法的迅猛發(fā)展,對實時駕駛場景的設(shè)想也逐步成為現(xiàn)實.來自學(xué)術(shù)界和工業(yè)界的諸多研究團(tuán)隊針對無人駕駛系統(tǒng)或高級輔助駕駛系統(tǒng)(ADAS)的算法研究已經(jīng)投入了大量資源[1].為了擺脫復(fù)雜駕駛環(huán)境對于汽車駕駛安全的問題,智能駕駛系統(tǒng)基于實時交通信息協(xié)助駕駛員進(jìn)行決策[2].其中,在環(huán)境感知的各種研究主題中,實時高效的車道線檢測技術(shù)對于車道線偏離預(yù)警系統(tǒng)(LDWS)和車道保持系統(tǒng)(LKS)都至關(guān)重要,能夠顯著提高汽車行駛的安全性[3,4].
傳統(tǒng)的車道線檢測方法[5-9]依賴于高度專業(yè)化的特征選擇和啟發(fā)式方法組合.其中,常用的特征包括:顏色[10]、結(jié)構(gòu)張量[11]、邊緣檢測[12]等,這些特征可以與霍夫變換[13]、粒子或卡爾曼濾波器[14,15]結(jié)合,在確定車道線后,采用后處理的技術(shù)篩選出誤檢的部分,并將車道線特征點進(jìn)行分組確定最后的車道.這類基于特征和啟發(fā)式的方法具有較快的運(yùn)行速度,可以運(yùn)行在計算資源有限的嵌入式設(shè)備中[16],但是由于道路場景變化,該類方法的魯棒性較差,遇到光照變化、外界遮擋或者車道線破損的情況,易出現(xiàn)誤識別或無法識別的問題.
近些年來,越來越多的研究者采用深度學(xué)習(xí)算法替代傳統(tǒng)手工制作的特征檢測器實現(xiàn)精度更高的車道線檢測.Kim和Lee[17]將卷積神經(jīng)網(wǎng)絡(luò)(CNN)與RANSAC[18]算法結(jié)合起來,以檢測從圖像邊緣開始的車道線,但該方法中的CNN主要是用于復(fù)雜道路場景中的圖像增強(qiáng)而非直接用于車道線檢測.文獻(xiàn)[19]展示了在高速公路場景中如何成功將現(xiàn)有的CNN模型用于車道線檢測和分類任務(wù)中.Li等人[20]展示了多任務(wù)網(wǎng)絡(luò)如何在惡劣天氣和低照度條件下同時處理車道線和道路目標(biāo)的檢測和識別.Neven等人[21]提出了一種端到端的車道線檢測算法,簡化算法的處理復(fù)雜度.
通過以上分析,盡管深度學(xué)習(xí)車道線檢測算法在魯棒性上要高于傳統(tǒng)圖像處理算法,但是由于算法的參數(shù)規(guī)模較大,導(dǎo)致檢測算法存在實時性不足的問題,尤其是在計算資源有限的車載嵌入式設(shè)備中.所以在本文的車道線檢測算法評估中將計算成本作為總體性能的關(guān)鍵指標(biāo)之一[22].
基于上述分析,本文研究的車道線檢測問題是輔助駕駛系統(tǒng)乃至自動駕駛中環(huán)境感知的一個重要組成部分,對于自動駕駛系統(tǒng)的行車安全具有重要的意義.為了滿足在計算資源有限的車載嵌入式設(shè)備中對復(fù)雜駕駛場景中的車道線進(jìn)行實時、精確檢測的需求,本文提出了一種帶語義分割的輕量化車道線檢測算法(簡稱SegLaneNet).該算法充分利用語義分割過程中提取的大量的中間特征信息[23],通過簡化并聯(lián)的空洞卷積支路,增加跳躍連接結(jié)構(gòu),提出新的空洞空間金字塔池化模塊(ASPP-tiny);定義模型的多尺度輸入、融合跳躍連接中的淺層特征與深層特征、融合并聯(lián)的不同采樣率的空洞卷積特征;對自編碼器中的上采樣與下采樣卷積進(jìn)行剪枝操作.最后在TuSimple數(shù)據(jù)上進(jìn)行實驗驗證本文提出的算法在實時性和準(zhǔn)確性的優(yōu)勢.
圖像語義分割是計算機(jī)視覺任務(wù)中圖像理解的重要環(huán)節(jié)之一,再學(xué)術(shù)界的影響日益凸顯,現(xiàn)已成為學(xué)術(shù)界的重要研究課題之一,在自動駕駛、醫(yī)學(xué)圖像診斷等領(lǐng)域均有應(yīng)用[24].隨著深度學(xué)習(xí)的發(fā)展,越來越多的研究者致力于在提高算法精度的同時提高算法的運(yùn)行速度.首先,He等人[25]提出的殘差網(wǎng)絡(luò)結(jié)構(gòu)(ResNet)解決了深度神經(jīng)網(wǎng)絡(luò)難以訓(xùn)練的問題,在圖像處理領(lǐng)域取得突破性的進(jìn)展;其次,Long等人[26]提出的基于全卷積神經(jīng)網(wǎng)絡(luò)(Fully Convolutional Networks for semantic segmentation,F(xiàn)CN)的圖像分割技術(shù),在像素級的圖像語義分割領(lǐng)域為研究人員提供了一種全新的思路和探索的方向,使得語義分割的精度得到提高;再有,為了解決深度神經(jīng)網(wǎng)絡(luò)在特征提取階段為增大感受野而減小特征圖尺寸時存在信息丟失的問題,Yu等人[27]提出了空洞卷積的結(jié)構(gòu)能夠在保證感受野不變的前提下,同時又能夠提高對于圖像語義分割的辨識度以及運(yùn)算速度.
池化層作為卷積神經(jīng)網(wǎng)絡(luò)的基礎(chǔ)結(jié)構(gòu),主要用于減少網(wǎng)絡(luò)計算參數(shù),保持特征圖的尺度不變性,并增加特征圖的感受野大小[28].通常情況在中等規(guī)模的網(wǎng)絡(luò)中,使用最大或者平均池化的方式,例如VGG[29]和GoogLeNet[30]等網(wǎng)絡(luò).而在大規(guī)模的網(wǎng)絡(luò)中常使用帶步長的卷積方式增大特征圖的感受野,例如ResNet和DenseNet[31]等網(wǎng)絡(luò).由于以上兩種方法都是對特征圖進(jìn)行下采樣操作,會造成特征圖的上下文語義信息丟失,從而降低算法的準(zhǔn)確率,所以He等人[32]提出將空間金字塔池化(Spatial Pyramid Pooling,SPP)應(yīng)用到卷積神經(jīng)網(wǎng)絡(luò)中,通過獲取特征圖的多層金字塔信息,再將這些信息拼接用于全連接層的計算.實驗結(jié)果證明SPP-Net 能夠提高1%-2%的準(zhǔn)確率,且算法總開銷與未采用SPP算法相差無幾.在SPP的基礎(chǔ)上Chen等人[33]引入空洞卷積,提出了空洞空間金字塔池化(Atrous Spatial Pyramid Pooling,ASPP)模塊使特征映射更精確,能捕獲長跨度的上下文語義信息,同時還能夠?qū)崿F(xiàn)不同采樣率的空洞卷積并行處理加快運(yùn)算速度.如圖1所示為并行的ASPP模塊在圖像特征提取網(wǎng)絡(luò)的應(yīng)用.
圖1 圖像特征提取網(wǎng)絡(luò)中的ASPP模塊示意圖
U-Net是 Ronneberger 等人[34]在2015年參加ISBI(IEEE International Symposium on Biomedical Imaging)競賽時提出的一種圖像分割網(wǎng)絡(luò).該網(wǎng)絡(luò)是基于FCN圖像分割技術(shù),類U型的結(jié)構(gòu)實現(xiàn)自編碼的過程,在上采樣過程中采用了融合多尺度特征的方式,能夠較好地保留圖像的細(xì)節(jié)特征,同時其網(wǎng)絡(luò)結(jié)構(gòu)小,不但可以適應(yīng)訓(xùn)練集規(guī)模小的應(yīng)用(例如:醫(yī)學(xué)領(lǐng)域),而且網(wǎng)絡(luò)訓(xùn)練和預(yù)測的速度都比較快.
如圖2所示,U-Net語義分割網(wǎng)絡(luò)具有以下特點:
圖2 U-Net圖像語義分割網(wǎng)絡(luò)結(jié)構(gòu)
1)基于全卷積神經(jīng)網(wǎng)絡(luò)(FCN)的圖像分割技術(shù),類U型的結(jié)構(gòu)實現(xiàn)自編碼的過程,實現(xiàn)像素級的圖像語義分割;
2)采用跳躍連接結(jié)構(gòu)將淺層的圖像特征與深層的語義特征進(jìn)行拼接,獲得更加豐富的多尺度特性信息.
針對現(xiàn)有的車道線檢測算法在計算資源有限的車載嵌入式設(shè)備中存在實時性差、精度不高的問題,本文在像素級語義分割網(wǎng)絡(luò)U-Net的基礎(chǔ)上,提出了一種帶語義分割的輕量化車道線檢測算法(簡稱SegLaneNet),該算法采用輕量化的全卷積語義分割網(wǎng)絡(luò)結(jié)構(gòu)實現(xiàn)像素級的車道線檢測,引入改進(jìn)后的空洞空間金字塔池化(簡稱ASPP-tiny)模塊減少上下文語義信息的丟失,同時采用多種多尺度特征融合的方法提高輕量化模型的算法準(zhǔn)確率.
計算資源有限的車載嵌入式設(shè)備中對算法的實時性要求極高.為了在提高算法準(zhǔn)確性的同時加快算法的運(yùn)行速度,本文在空洞空間金字塔池化(ASPP)模塊的基礎(chǔ)上對該結(jié)構(gòu)進(jìn)行輕量化處理提出了ASPP-tiny模塊.將此模塊引入到全卷積語義分割網(wǎng)絡(luò)中減少上下文語義信息的丟失,以提高輕量化檢測算法的性能.
如圖3所示,ASPP-tiny模塊引入殘差模塊的跳躍連接結(jié)構(gòu),移除圖像特征池化分支,簡化空洞卷積操作,選用空洞卷積采樣率分別為2、4和8的卷積層,其對應(yīng)的感受野尺寸為7×7、15×15和31×31.輕量化后的ASPP-tiny模塊能夠減少網(wǎng)絡(luò)的計算參數(shù)從而達(dá)到算法加速的目的,同時空洞空間金字塔池化減少上下文語義信息的丟失,并且引入殘差模塊的跳層連接還能有效提高算法的收斂速度和準(zhǔn)確率.
圖3 ASPP-tiny模塊網(wǎng)絡(luò)結(jié)構(gòu)圖
本文在像素級語義分割網(wǎng)絡(luò)U-Net的基礎(chǔ)上,簡化特征提取的下采樣與特征解碼的上采樣卷積操作,充分利用語義分割過程中提取的大量的中間特征信息,提出了一種帶語義分割的輕量化車道線檢測算法(簡稱SegLaneNet).SegLaneNet 算法基于FCN技術(shù)實現(xiàn)像素級的語義分割,以ResNet Block作為特征提取的基礎(chǔ)模塊提高模型的收斂速度,采用多種多尺度特征融合的方法提高輕量化算法的準(zhǔn)確率,并在跳層連接上增加ASPP-tiny模塊減少上下文語義信息的丟失、提高算法的運(yùn)行速度.算法簡化了U-Net的結(jié)構(gòu),以輕量化的結(jié)構(gòu)滿足在車載嵌入式平臺實時檢測的需求.具體的SegLaneNet算法結(jié)構(gòu)如圖4所示.
圖4 SegLaneNet網(wǎng)絡(luò)結(jié)構(gòu)圖
作為輕量化的算法,SegLaneNet采用多尺度特征融合的方法提高算法的檢測準(zhǔn)確率,其中的多尺度特征融合的操作包括:
1)采用多尺度的圖像輸入:采用3個分辨率的圖像作為網(wǎng)絡(luò)的輸入;
2)串行多尺度特征融合:采用跳躍連接結(jié)構(gòu),將淺層特性與深層特征進(jìn)行融合;
3)并行多尺度特征融合:在改進(jìn)后的空洞空間金字塔池化(ASPP-tiny)中,融合3個并行分支的特征信息.
其中,多尺度輸入的圖像尺寸分別為256×512像素、128×256像素和64×128像素,輸出尺寸為256×512像素.算法的操作流程為:首先在多尺度輸入上使用3×3的卷積核進(jìn)行特征預(yù)提取,接著通過ResNet Block進(jìn)行深度編碼,使用大小為3×3,步長為2的卷積核進(jìn)行下采樣卷積操作,隨后對多尺度的特性信息進(jìn)行融合,對融合后的特征圖使用ASPP-tiny模塊擴(kuò)大其感受野并進(jìn)行深度特征提取,最后使用反卷積操作進(jìn)行特征解碼,恢復(fù)特征圖并輸出像素級語義分割后的結(jié)果.
本文采用圖森(TuSimple)(1)https://github.com/TuSimple/tusimple-benchmark/tree/master/doc/lane_detection#tusimple-lane-detection-challenge/車道線檢測挑戰(zhàn)數(shù)據(jù)集訓(xùn)練SegLaneNet算法并測試算法的實時性和準(zhǔn)確率,其中TuSimple數(shù)據(jù)集由自動駕駛公司圖森發(fā)布,是第一個提供針對車道線檢測基準(zhǔn)的數(shù)據(jù)集,其主要包括:直線道路、曲線道路、光線良好道路、破損道路、外部設(shè)施干擾道路以及陰影遮擋道路等情況的3626張訓(xùn)練圖像和2782張測試圖像,包括在白天不同時間采集的公路圖像數(shù)據(jù).
為了進(jìn)一步驗證算法在復(fù)雜的城市街景道路中的檢測性能,通過增加實驗室采集數(shù)據(jù)并采用數(shù)據(jù)擴(kuò)增技術(shù)進(jìn)行擴(kuò)大數(shù)據(jù)規(guī)模,包括:水平鏡像、對比度增強(qiáng)方法,最后生成一個擁有10904張訓(xùn)練圖像,4737張測試圖像的車道線檢測數(shù)據(jù)集用于算法實驗評估.
實驗采用的準(zhǔn)確率指標(biāo)為計算預(yù)測圖像中正確車道線像素點數(shù)在標(biāo)簽圖像中的占比,具體公式如下:
(1)
其中,Cim是預(yù)測圖像中正確車道線的像素點數(shù),Sim是標(biāo)簽圖像中真正車道線的像素點數(shù).需要通過以下步驟獲得:首先計算預(yù)測圖像中車道線像素點與標(biāo)簽圖像中在同Y軸高度的所有車道線像素點在X軸方向上的差值;然后若預(yù)測圖像上某像素點存在差值小于閾值的情況則認(rèn)為該點預(yù)測正確的,否則預(yù)測錯誤;最后遍歷所有預(yù)測像素點即可確定預(yù)測正確的像素點數(shù).本文還進(jìn)行假陽性(FP)、假陰性(FN)分析,F(xiàn)P表示預(yù)測圖像中預(yù)測錯誤的車道線像素點占所有預(yù)測像素點的比例;FN為標(biāo)簽圖像中未被預(yù)測的像素點占標(biāo)簽圖像中所有像素點的比例.公式如下:
(2)
(3)
其中,F(xiàn)pred是預(yù)測圖像中預(yù)測錯誤的車道線像素點數(shù),Npred為預(yù)測圖像中所有預(yù)測的車道線像素點數(shù),Mpred為標(biāo)簽圖像中未被預(yù)測的車道線像素點數(shù),Ngt為標(biāo)簽圖像中所有的車道線像素點數(shù).
本文的SegLaneNet算法使用Tensorflow[35]架構(gòu)實現(xiàn),實驗采用交叉熵?fù)p失函數(shù),訓(xùn)練選用動量為0.9的動量優(yōu)化器,設(shè)置初始學(xué)習(xí)率為0.005,每100個epochs后衰減2次,并且權(quán)重衰減為0.0005.設(shè)置實驗輸入圖像大小為512×256像素,并采用雙線性插值進(jìn)行下采樣獲得其余兩個尺度的圖像數(shù)據(jù).實驗服務(wù)器的配置參數(shù)如下:Intel(R)Xeon(R)Gold 6132 CPU @ 2.60GHz處理器、128 GB內(nèi)存、16 GB NVIDIA RTS-2080 GPU、Ubuntu 16.04.3操作系統(tǒng),測試嵌入式設(shè)備為帶有NVIDIA Pascal架構(gòu)GPU的NVIDIA Jetson TX2(2)https://www.nvidia.com/en-us/autonomous-machines/embedded-systems/jetson-tx2/.
網(wǎng)絡(luò)訓(xùn)練Sim設(shè)置迭代次數(shù)為80000次,每一個批次輸入8張圖像進(jìn)行訓(xùn)練.按照設(shè)置好的實驗參數(shù),將預(yù)處理好的訓(xùn)練集輸入網(wǎng)絡(luò)中進(jìn)行模型的訓(xùn)練,通過對模型參數(shù)的80000次迭代更新,最后保存訓(xùn)練好的網(wǎng)絡(luò)模型用于測試.如圖5所示,網(wǎng)絡(luò)訓(xùn)練過程中記錄模型的準(zhǔn)確率與損失值的變化趨勢圖,分別見圖5(a)、圖5(b).由圖5所示,模型訓(xùn)練在迭代10000次左右開始收斂,用時約30分鐘.此后準(zhǔn)確率在0.96左右變動,損失值在0.1左右變動.最終完成80000次訓(xùn)練,總時間約為4個小時.
圖5 網(wǎng)絡(luò)訓(xùn)練準(zhǔn)確率與損失值變化趨勢圖
首先,對本文提出的ASPP-tiny模塊進(jìn)行實驗評估,本文設(shè)置帶有ASPP-tiny模塊和無ASPP-tiny模塊的對比實驗,實驗結(jié)果如表1所示.通過表1的實驗結(jié)果表明,本文提出的ASPP-tiny模塊能夠很好的保留特征圖的上下文信息,在輕量型網(wǎng)絡(luò)結(jié)構(gòu)中有利于提高算法的準(zhǔn)確率.
表1 ASPP-tiny模塊測試結(jié)果
更進(jìn)一步,如圖6所示ASPP-tiny模塊對算法的性能有所提高.圖6(a)為輸入圖像;圖6(b)為無ASPP-tiny模塊的車道線輸出圖像,盡管輸出結(jié)果能夠區(qū)分車道線輪廓,但存在分割不連續(xù)以及存在誤識別的問題;圖6(c)為帶有ASPP-tiny模塊的車道線輸出圖像,輸出的車道線連續(xù)且存在的干擾較少,檢測準(zhǔn)確率較高.特別在輸入圖像中車道線位置存在嚴(yán)重干擾時也能夠精準(zhǔn)的分割;圖6(d)為帶有ASPP-tiny模塊的SegLaneNet算法在輸入圖像上擬合的車道線示意圖;圖6(e)為輸入圖像對應(yīng)的標(biāo)簽圖,由圖6對比可知SegLaneNet檢測的車道線與原圖車道線基本重合.
圖6 ASPP-tiny實驗對比圖
接著,在TuSimple 測試數(shù)據(jù)集上將本文提出的SegLaneNet算法與現(xiàn)有車道線檢測算法及Baseline算法進(jìn)行對比,實驗結(jié)果如表2所示,其中文獻(xiàn)[37]與Baseline未提供算法運(yùn)行幀率.與Baseline相比,本文算法在測試集上的準(zhǔn)確率提高了約2%,F(xiàn)P減少了3%以上,F(xiàn)N減少了約2%.與現(xiàn)有的算法對比,SegLaneNet在檢測準(zhǔn)確率、FP和FN指標(biāo)上較為接近,但是算法運(yùn)行幀率上要遠(yuǎn)高于其他算法,達(dá)到165FPS.
表2 TuSimple測試數(shù)據(jù)集對比實驗結(jié)果
如圖7為SegLaneNet與文獻(xiàn)[21]在TuSimple數(shù)據(jù)集上的實驗對比,其中圖7(a)為輸入圖像,圖7(b)為文獻(xiàn)[21]的輸出結(jié)果,圖7(c)為SegLaneNet的輸出結(jié)果,圖7(d)為SegLaneNet在輸入圖像上擬合的車道線示意圖,圖7(e)為輸入圖像對應(yīng)的標(biāo)簽圖.對比圖7(b)與圖7(c)可知,在車道線存在明顯干擾時,圖7(b)中存在誤識別的情況,而本文算法可以準(zhǔn)確識別出正確的車道線,如圖7(c)所示.因此,本文的SegLaneNet檢測準(zhǔn)確率要高于文獻(xiàn)[21]而誤檢率(FP)指標(biāo)低于文獻(xiàn)[21].
圖7 SegLaneNet實驗對比圖
然后,將本文提出的SegLaneNet在實驗室采集的道路圖像上進(jìn)行效果測試.通過安裝在車輛上的行車記錄儀采集的圖像數(shù)據(jù),該數(shù)據(jù)為國內(nèi)城市街景道路,具有場景復(fù)雜、非車道線干擾多(車輛、陰影、護(hù)欄、積水等)、車道線不明顯等特點.如圖8所示為實驗結(jié)果展示圖,圖8(a)為原始輸入圖像,圖8(b)為SegLaneNet分割輸出圖像,圖8(c)為分割輸出擬合車道線輸出圖像.由圖8可知,SegLaneNet算法在復(fù)雜的城市街景道路也具有較好的效果,達(dá)到車道線檢測的目的.
圖8 國內(nèi)城市街景道路測試效果圖
更進(jìn)一步,如表3所示為算法權(quán)重文件大小的數(shù)據(jù)對比,本文的SegLaneNet相較于其他算法擁有更加輕量化的模型,其權(quán)重大小約為文獻(xiàn)[21]的1/4,而各項性能指標(biāo)都要優(yōu)于文獻(xiàn)[21].
表3 不同算法的權(quán)重文件大小
最后,將本文提出的SegLaneNet算法分別在不同設(shè)備上進(jìn)行運(yùn)算速度測試,測試設(shè)備包括:NVIDIA RTX 2080 GPU服務(wù)器、Intel(R)Core(TM)i5-8400 CPU臺式機(jī)、NVIDIA Jetson TX2嵌入式設(shè)備,實驗結(jié)果如表4所示.由實驗結(jié)果可知,本文的算法在GPU服務(wù)器上運(yùn)行幀率達(dá)到165FPS,在嵌入式設(shè)備中運(yùn)行幀率達(dá)到16FPS,能夠滿足嵌入式設(shè)備實時檢測的要求.
表4 不同設(shè)備實驗對比圖
本文研究的車道線檢測問題是輔助駕駛系統(tǒng)乃至自動駕駛中環(huán)境感知的一個重要組成部分,對于自動駕駛系統(tǒng)的行車安全具有重要的意義.提出的一種帶語義分割的輕量化車道線檢測算法SegLaneNet,首先通過簡化并聯(lián)的空洞卷積支路,增加跳躍連接結(jié)構(gòu),提出新的空洞空間金字塔池化模塊(ASPP-tiny),該模塊采用并行的不同采樣率的空洞卷積進(jìn)行特征提取與融合以減少上下文語義信息的丟失;接著定義模型的多尺度輸入、融合跳躍連接中的淺層特征與深層特征、融合并聯(lián)的不同采樣率的空洞卷積特征;再有對自編碼器中的上采樣與下采樣卷積進(jìn)行剪枝操作;最后由圖森(TuSimple)數(shù)據(jù)集上的對比實驗可知,與Baseline相比本文的SegLaneNet算法在測試集上的準(zhǔn)確率提高了約2%,假正例(FP)減少了3%以上,假負(fù)例(FN)減少了約2%,在GPU服務(wù)器上運(yùn)行速度達(dá)165幀/秒(FPS),同時在嵌入式設(shè)備中運(yùn)算速度達(dá)到16幀/秒(FPS).測試結(jié)果表明帶語義分割的輕量化車道線檢測算法能夠滿足車載嵌入式設(shè)備實時、準(zhǔn)確的車道線檢測工作.同時,本文提出的基于嵌入式平臺的輕量化深度學(xué)習(xí)算法模型對于深度學(xué)習(xí)算法在車道線檢測的應(yīng)用落地提供一種新的可行的技術(shù)解決方案.