鄭河榮,程思思,王文華,張夢蝶
(1.浙江工業(yè)大學(xué) 計算機(jī)科學(xué)與技術(shù)學(xué)院,浙江 杭州 310023;2.浙江廣播電視集團(tuán) 浙江衛(wèi)視頻道,浙江 杭州 310005;3.浙江中控技術(shù)股份有限公司 研發(fā)中心,浙江 杭州 310052)
近年來,越來越多的研究者對基于卷積網(wǎng)絡(luò)的語義分割產(chǎn)生了濃烈的興趣。卷積語義網(wǎng)絡(luò)會給每個像素點一個標(biāo)簽,圖像中的同一個標(biāo)簽用同一種顏色表示,實現(xiàn)像素級別的分類。目前的語義分割算法主要存在兩個挑戰(zhàn):1) 小物體分割的挑戰(zhàn),主要是在提取目標(biāo)的特征向量上存在對特征學(xué)習(xí)不徹底的問題;2) 分割邊緣處理的挑戰(zhàn),很多檢測結(jié)果因分割邊緣過于不清晰導(dǎo)致檢測準(zhǔn)確率低。
本研究待檢測的車道線同時存在以上兩個問題,車道屬于細(xì)長型目標(biāo),在整張圖像中占比不高,屬于小物體,并且由于圖像從近到遠(yuǎn),車道線的寬度也會由寬到窄,因此車道線的檢測對于分割邊緣要求很高,微小的檢測誤差也會導(dǎo)致整條車道線檢測失誤。特別是在夜晚等光線昏暗的場景下,對車道線的檢測難度更大。雖然有學(xué)者已經(jīng)提出了很多方法來解決該問題,比如基于多任務(wù)學(xué)習(xí)和基于上下文信息等方法,但是這些方法要么需要大量的人工進(jìn)行數(shù)據(jù)標(biāo)注,要么需要分別引入額外的推理公式進(jìn)行計算。因此,筆者在訓(xùn)練該車道線檢測網(wǎng)絡(luò)前使用了一種基于場景類型轉(zhuǎn)移的數(shù)據(jù)增強(qiáng)方法。該方法使用生成對抗網(wǎng)絡(luò)生成弱光條件下的圖像,以增加夜晚的場景數(shù)據(jù)圖像,讓車道線檢測網(wǎng)絡(luò)能更好地學(xué)習(xí)夜晚場景下的車道線特征,從而提高車道檢測網(wǎng)絡(luò)的環(huán)境適應(yīng)度。筆者所提方法在進(jìn)行場景轉(zhuǎn)換數(shù)據(jù)增強(qiáng)時不需要額外的手動標(biāo)簽或額外的推理公式計算。筆者提出結(jié)合殘差網(wǎng)絡(luò)的編碼-解碼器結(jié)構(gòu)的分割網(wǎng)絡(luò)算法對圖像進(jìn)行車道線的分割。編碼器使用不同尺寸大小的卷積核來改變感受野的大小,從而獲得更多的圖像上下文信息和檢測物體的特征向量。解碼器恢復(fù)還原到輸入圖片大小,輸出分割概率圖。從分割概率圖中找到每行最亮的點,用霍夫線連接起來,得到可視化分割圖。筆者首先在CULane標(biāo)準(zhǔn)數(shù)據(jù)集上進(jìn)行分析和討論,以驗證算法的有效性;然后構(gòu)建一個包含5 500多張圖像的夜晚交通道路場景的數(shù)據(jù)集用于夜晚類別下的算法評價和分析。
圖像分割技術(shù)[1]是將圖像按照不同種類進(jìn)行區(qū)分,圖像被分成很多個有具體特征的區(qū)域,每一區(qū)域代表一個種類。圖像分割是圖像處理的基礎(chǔ),可以用來進(jìn)行圖像識別和圖像搜索。傳統(tǒng)的車道線圖像分割技術(shù)主要依賴人類專業(yè)化的手工制作特征來識別車道線,主要基于顏色、條紋等特征,或者使用邊緣檢測算子[2-6]和條形濾波器進(jìn)行制作,它們可以與霍夫變換結(jié)合或者通過卡爾曼濾波器[7]識別出車道線,然后采用后處理方法將錯誤分割目標(biāo)過濾,形成最終車道線檢測結(jié)果。這些傳統(tǒng)方法雖然速度很快,但會因為道路場景的復(fù)雜變化而產(chǎn)生魯棒性問題,對一些彎道道路和遮擋道路的分割效果不佳,而且計算成本昂貴,不易擴(kuò)展使用。
為了改進(jìn)傳統(tǒng)分割方法的不足,減少錯誤分割和缺少分割情況的發(fā)生,近年來神經(jīng)網(wǎng)絡(luò)已被越來越多的研究人員使用,并取得了極大的發(fā)展。相較于目標(biāo)檢測算法,分割算法能對圖像進(jìn)行更精確的識別,在自動駕駛、無人機(jī)等領(lǐng)域有很大的優(yōu)勢。2016年,Paszke等[8]提出了高效神經(jīng)網(wǎng)絡(luò)(Efficient neural network,ENet),該網(wǎng)絡(luò)在分割時使用了一種殘差結(jié)構(gòu)塊,該殘差結(jié)構(gòu)塊由1×1,3×3,1×1尺寸大小的卷積層組成,在保證分割精度的前提下,大大降低了計算成本。2017年,Romera等[9]在ENet網(wǎng)絡(luò)的基礎(chǔ)上提出了高效殘差分解卷積網(wǎng)絡(luò)(Efficient residual factorized ConvNet,ERFNet),該網(wǎng)絡(luò)在保證準(zhǔn)確率的前提下,提高了網(wǎng)絡(luò)計算的速度,達(dá)到了精度和速度的平衡。該網(wǎng)絡(luò)使用的殘差結(jié)構(gòu)塊由尺寸為3×1,1×3,3×1,1×3的卷積層組成,這種殘差塊比ENet網(wǎng)絡(luò)參數(shù)更少、速度更快。2017年,Pan等[10]為了更好地檢測到細(xì)長型目標(biāo),提出了優(yōu)化后的空間卷積神經(jīng)網(wǎng)絡(luò)(Spatial convolutional neural networks,SCNN),該網(wǎng)絡(luò)采用切片式設(shè)計,將特征圖的行和列也看成網(wǎng)絡(luò)層,使用卷積和非線性激活,從而增大感受野,保存更多像素的空間位置信息。Lee等[11]提出了消失點引導(dǎo)網(wǎng)絡(luò)(Vanishing point guided network,VPGNet),這是一個端到端的多任務(wù)網(wǎng)絡(luò),可以實現(xiàn)對車道線和道路標(biāo)記的分割和檢測,該方法先檢測出車道線的消失點,再回歸該消失點來指導(dǎo)分割車道線,從而提升車道線的分割精度。2018年,Wang等[12]提出了車道檢測網(wǎng)絡(luò)(Lane detection networks,LaneNet),該網(wǎng)絡(luò)將車道線分割分為車道線邊緣提取和車道線定位兩個階段:車道線邊緣階段使用基于編碼器-解碼器結(jié)構(gòu)的車道線邊緣提取網(wǎng)絡(luò),并將圖像的每個像素點進(jìn)行車道線邊緣分類;車道線定位階段的網(wǎng)絡(luò)根據(jù)前一階段得到的邊緣分類檢測出車道線。2018年,Ghafoorian等[13]提出嵌入損失生成對抗網(wǎng)絡(luò)(Embedding loss-generative adversarial networks,EL-GAN),該網(wǎng)絡(luò)將車道線標(biāo)簽也作為輸入,并將生成對抗網(wǎng)絡(luò)添加到網(wǎng)絡(luò)結(jié)構(gòu)中,從而使分割生成的圖像越來越像標(biāo)簽圖像。這種增加GAN網(wǎng)絡(luò)的方法雖然具有良好的分割精度,避免了計算量大、訓(xùn)練時間過長的問題,但存在GAN網(wǎng)絡(luò)模型的優(yōu)化過程不太穩(wěn)定、延展性不足等問題。2019年,Hou等[14]提出基于自我注意力蒸餾算法的車道檢測方法(Lane detection CNNs by self attention distillation,SAD),該方法不僅不需要額外的標(biāo)簽數(shù)據(jù),還能加強(qiáng)網(wǎng)絡(luò)的特征學(xué)習(xí),在車道線分割網(wǎng)絡(luò)中成功分割車道線,是一種弱監(jiān)督學(xué)習(xí)。SAD算法是將深層次的注意力地圖作為低層次的精餾目標(biāo)。
筆者采用的語義分割網(wǎng)絡(luò)結(jié)構(gòu)由編碼器和解碼器組成,如圖1所示,在筆者提出的目標(biāo)語義分割網(wǎng)絡(luò)結(jié)構(gòu)中,從三維色彩圖像(編碼器的輸入)到像素類別概率(解碼器的輸出)。該算法1~20層構(gòu)成了編碼器,由殘差塊和下采樣塊組成。相比ERFNet網(wǎng)絡(luò),該算法在每個卷積塊中增加了2層殘差層,增加的殘差層的空洞[15]尺寸為32和64。下采樣層的存在雖然降低了像素分辨率,但可以讓更深的卷積層學(xué)習(xí)收集更多的上下文信息,有助于減少計算量。因此,為了保持良好的平衡,采用了3個2步長的3×3卷積層作為下采樣層,分別存在第1,2,8層。第3~7層采用5對殘差網(wǎng)絡(luò)Non-bt-1D層。從第9層開始,該目標(biāo)分割網(wǎng)絡(luò)結(jié)構(gòu)在殘差網(wǎng)絡(luò)Non-bt-1D層中交織了一些空洞卷積以收集更多上下文信息,從而提高分割的準(zhǔn)確性。一個卷積塊的空洞尺寸分別為2,4,8,16,32,64。
圖1 車道線分割算法流程框架Fig.1 Lane segmentation algorithm flow framework
解碼器部分由21~27層組成,其主要任務(wù)是對編碼器的特征圖進(jìn)行上采樣以匹配輸入分辨率。該部分由兩個網(wǎng)絡(luò)塊組成:第1個網(wǎng)絡(luò)塊包含一個通道數(shù)為128、步長為2、卷積核尺寸為3的反卷積層,兩對殘差網(wǎng)絡(luò)Non-bt-1D層;第2個網(wǎng)絡(luò)塊由一個通道數(shù)為64、步長為2、卷積核尺寸為3的反卷積層,兩對殘差網(wǎng)絡(luò)Non-bt-1D層組成。之后特征圖再經(jīng)過一個通道數(shù)為16、步長為2、卷積核尺寸為2的反卷積層,得到一個三維的向量,恢復(fù)圖片的信息。
隨著深度神經(jīng)卷積網(wǎng)絡(luò)的網(wǎng)絡(luò)深度增加,網(wǎng)絡(luò)的分割或者檢測精度逐漸增加至飽和,過了飽和點后會迅速下降。為了解決該問題,引入了殘差網(wǎng)絡(luò)的應(yīng)用。殘差網(wǎng)絡(luò)構(gòu)造了一種映射,即
y=F(x,{Wi})+Wsx
(1)
式中:WS是一個身份特征映射;F(x,{Wi})是需要學(xué)習(xí)的殘差映射。
筆者使用的殘差網(wǎng)絡(luò)為一維的非瓶頸模式網(wǎng)絡(luò)(Non-bottleneck-1D,Non-bt-1D),該網(wǎng)絡(luò)是對非瓶頸模式網(wǎng)絡(luò)(Non-bottleneck,Non-bt)和瓶頸模式網(wǎng)絡(luò)(bottleneck,bt)的改進(jìn)。瓶頸模式下的輸入和輸出維度差距較大,網(wǎng)絡(luò)像一個瓶頸。非瓶頸模式的輸入和輸出維度差距不大。非瓶頸模式殘差網(wǎng)絡(luò)結(jié)構(gòu)如圖2(a)所示,它由兩個3×3卷積的非瓶頸設(shè)計組成。瓶頸模式殘差網(wǎng)絡(luò)結(jié)構(gòu)如圖2(b)所示,它由一個1×1卷積、一個3×3卷積和一個1×1卷積的瓶頸設(shè)計組成。實驗證明:通過增加網(wǎng)絡(luò)深度,非瓶頸模式網(wǎng)絡(luò)下的殘差網(wǎng)絡(luò)精度高于瓶頸模式下的殘差網(wǎng)絡(luò)精度,且瓶頸模式依舊存在網(wǎng)絡(luò)降級問題。另外,因為非對稱性的殘差結(jié)構(gòu)能夠降低參數(shù)量,提高訓(xùn)練速度,所以筆者算法使用了非瓶頸模式網(wǎng)絡(luò)的殘差網(wǎng)絡(luò)。
圖2 殘差網(wǎng)絡(luò)結(jié)構(gòu)Fig.2 Residual network structure
筆者算法使用帶一維濾波器的非瓶頸殘差網(wǎng)絡(luò),如圖2(c)所示。1D濾波器可以通過公式表示二維濾波器卷積層的權(quán)重,即
W∈RC×dh×dv×F
(2)
式中:C表示輸入通道的數(shù)量;F表示輸出特征圖通道的數(shù)量;dh×dv表示每個特征圖的卷積核尺寸大小。令b∈RF表示每個濾波器偏置項的向量,fi∈Rdh×dv表示該網(wǎng)絡(luò)層中第i個卷積核。由于二維濾波器在從數(shù)據(jù)中學(xué)習(xí)這些濾波器之后還需要微調(diào),故使用一維濾波器,其線性表示為
(3)
將二維卷積記為W2D∈RC×d×d×F,將一維卷積記為WD∈RC×d×F,每個一維卷積在2×(C×d×F)的維度中。一維濾波器的功效與二維濾波器相比大致相同,卻比二維濾波器減少了33%的參數(shù),減少了計算量,提升了計算效率。
殘差層利用一維分解進(jìn)行計算,并稱其為一維的非瓶頸模式網(wǎng)絡(luò)。與瓶頸模式相比,非瓶頸模式具有速度更快、計算量和參數(shù)更少的優(yōu)勢,同時能保證具有和瓶頸模式差不多的精確度和學(xué)習(xí)能力。
利用圖像語義分割技術(shù)將原圖轉(zhuǎn)化為n張(n≤4)區(qū)分前景、背景的二值概率圖,n為n條車道線。該方法規(guī)定在每張高度為208的二值概率圖像中找特定高度的18行:0,12,24,48,60,70,82,94,106,118,130,142,154,166,178,190,202,207,并找到每行的像素最大值。這些點位置的坐標(biāo)即檢測到車道線的位置坐標(biāo),使用三次樣條插值算法使直線量化。最終由坐標(biāo)點確定車道線的位置信息,用霍夫線連接起來,組成一條合適的可視化車道線。
筆者使用了通過強(qiáng)/弱光照條件下場景轉(zhuǎn)換方法生成的弱光照場景下的車道線數(shù)據(jù)集和公共數(shù)據(jù)集CULane。通過強(qiáng)/弱光照條件下場景轉(zhuǎn)換方法生成的弱光照場景下的車道線數(shù)據(jù)集約5 500張,由公共數(shù)據(jù)集CULane中選取的4 560張強(qiáng)光照場景數(shù)據(jù)和4 560張弱光照場景數(shù)據(jù)作為訓(xùn)練集訓(xùn)練模型生成,強(qiáng)光照場景轉(zhuǎn)變?yōu)槿豕庹請鼍暗膱D片如圖3所示。CULane共分為9類,分別為正常、擁擠、高亮光線、陰影、沒有車道線的情況下、指示箭頭、曲線、十字路口和夜晚。該數(shù)據(jù)集共有88 880張訓(xùn)練集圖片、9 675張驗證集圖片和34 680張測試集圖片。
圖3 強(qiáng)光照場景轉(zhuǎn)變?yōu)槿豕庹請鼍暗膱D片F(xiàn)ig.3 Pictures of a strong-light scene transformed into a low-light scene
系統(tǒng)環(huán)境為安裝了CUDA 10.0的Ubuntu 16.04,硬件環(huán)境為內(nèi)存為32 G的Intel Xeon E5處理器和4張Titan XP顯卡,使用CycleGan和ERFNet框架搭建網(wǎng)絡(luò)。
為了提升在夜晚、傍晚等弱光環(huán)境下的檢測精確度,筆者提出使用基于生成對抗網(wǎng)絡(luò)的數(shù)據(jù)增強(qiáng)方法。通過該方法可以在同一場景下將白天環(huán)境轉(zhuǎn)換成夜晚環(huán)境,從而增加夜晚環(huán)境的數(shù)據(jù)。
基于生成對抗網(wǎng)絡(luò)的數(shù)據(jù)增強(qiáng)方法網(wǎng)絡(luò)如圖4所示?;谏蓪咕W(wǎng)絡(luò)的數(shù)據(jù)增強(qiáng)方法包括兩個步驟:1) 循環(huán)生成對抗網(wǎng)絡(luò)[16];2) 強(qiáng)/弱光照條件下場景轉(zhuǎn)換。循環(huán)生成對抗網(wǎng)絡(luò)有兩個鏡像對稱的生成對抗網(wǎng)絡(luò),其由兩個生成器和兩個鑒別器組成。每個生成器帶有一個鑒別器,當(dāng)生成器在生成圖像的時候,對應(yīng)的鑒別器用來鑒別該生成器生成的圖像是否真實。使用循環(huán)生成對抗網(wǎng)絡(luò)[17]可實現(xiàn)從合適的光照條件到低光照條件的場景轉(zhuǎn)換。在同一個場景下,自動實現(xiàn)白天到夜晚的轉(zhuǎn)換,無需額外人工收集標(biāo)記數(shù)據(jù)即可實現(xiàn)數(shù)據(jù)增強(qiáng)。后續(xù)的車道線檢測方法在訓(xùn)練前先通過該強(qiáng)/弱光照條件下場景轉(zhuǎn)換對數(shù)據(jù)集進(jìn)行數(shù)據(jù)增強(qiáng)訓(xùn)練。
圖4 數(shù)據(jù)增強(qiáng)網(wǎng)絡(luò)流程框架Fig.4 Data enhanced network process framework
使用的循環(huán)生成對抗網(wǎng)絡(luò)的生成器包括2個步長為2的卷積層、9個resnet殘差塊和2個步長為1的卷積層。為了讓編碼器能適用于不同分辨率的輸入圖像,編碼時自動記錄比例的變化情況,并在解碼時將其映射到相應(yīng)的卷積層中。
使用5層卷積層作為鑒別器網(wǎng)絡(luò),包括3個步長為2的卷積層和2個步長為1的卷積層,它的初始通道數(shù)為3個通道。鑒別器用來判斷生成器生成的圖像是否真實,把結(jié)果反饋給生成器。在筆者算法中,用循環(huán)生成對抗網(wǎng)絡(luò)完成強(qiáng)/弱光照條件下的場景轉(zhuǎn)換。在訓(xùn)練時,生成器根據(jù)鑒別器的反饋生成更真實的圖像,其主要目的是欺騙鑒別器,讓鑒別器可以更準(zhǔn)確地判斷出生成的圖像是否真實,最終實現(xiàn)真假的動態(tài)平衡。
實驗用到的數(shù)據(jù)集尺寸為1 640×590,由于車道線屬于細(xì)長型目標(biāo),占全圖比例較小,且圖片上面部分一般為天空,車道線目標(biāo)一般位于圖片的下端,為了讓模型有更好的檢測能力,需要對原圖的尺寸進(jìn)行裁剪,剪去圖片上端的1 640×200,即留下高度為200~590的圖片數(shù)據(jù),這樣能減少無效信息對車道線分割算法的干擾,增加車道線分割的準(zhǔn)確度。
筆者使用開源的深度學(xué)習(xí)框架PyTorch訓(xùn)練模型。在ERFNet提供的預(yù)訓(xùn)練模型基礎(chǔ)上,針對弱光照場景增加數(shù)據(jù),并對車道線分割網(wǎng)絡(luò)進(jìn)行加深。其中初始學(xué)習(xí)率為0.001,動量為0.9,圖片裁剪大小為1 640×390,空洞卷積率分別設(shè)置為[2,4,8,16,32,64],訓(xùn)練次數(shù)為16次,批次大小為24,網(wǎng)絡(luò)訓(xùn)練采用SGD作為優(yōu)化器。
使用公開數(shù)據(jù)集CULane進(jìn)行模型訓(xùn)練,模型訓(xùn)練完成耗時約12 h,其損失值達(dá)到收斂。將筆者算法得到的準(zhǔn)確率和其他算法得到的準(zhǔn)確率進(jìn)行比較,實驗準(zhǔn)確率結(jié)果如表1所示,實驗錯誤正樣本結(jié)果如表2所示。顯然,增加了提取特征向量的編碼器層數(shù)后,未進(jìn)行數(shù)據(jù)增強(qiáng)的算法在各類場景中的準(zhǔn)確率已有較大提升。而采用數(shù)據(jù)增強(qiáng)方法后,因為增強(qiáng)了弱光照場景下的數(shù)據(jù),夜晚(Night)和昏暗(Shadow)這兩類的準(zhǔn)確率進(jìn)一步得到了提高。
表1 筆者實驗準(zhǔn)確率結(jié)果與其他算法對比Table 1 Comparison between the author’s experimental accuracy results and other algorithms
表2 筆者實驗錯誤正樣本數(shù)據(jù)與其他算法對比Table 2 Comparion between author’s experimental error positive sample data and other algorithms 單位:個
為使精度達(dá)到最優(yōu),增加對比實驗,筆者使用的車道線分割算法在編碼器部分的第20層下面再增加5層Non-bt-1D殘差層,即增加了1個殘差塊網(wǎng)絡(luò),由原來的2個殘差塊變?yōu)閷Ρ葘嶒灥?個殘差塊。這部分的空洞尺寸依舊為2,4,8,16,32,64。該對比實驗的實驗數(shù)據(jù)為表1,2的“有3個殘差塊網(wǎng)絡(luò)的筆者算法”列。實驗數(shù)據(jù)表明:一味增加網(wǎng)絡(luò)深度,并不一定能提高分割算法的精度,反而會出現(xiàn)網(wǎng)絡(luò)梯度爆炸現(xiàn)象,從而降低準(zhǔn)確度。
為了驗證算法的有效性,利用該算法對實際生活中的圖片進(jìn)行車道線分割。筆者算法分割概率圖結(jié)果與原ERFNet算法分割概率圖結(jié)果對比如圖5所示,矩形框內(nèi)為筆者算法與ERFNet算法相比的進(jìn)步之處。分割可視化結(jié)果如圖6所示。
圖5 分割概率圖結(jié)果Fig.5 Segmentation probability map
圖6 分割可視化結(jié)果Fig.6 Segmentation visualization results
筆者提出的車道線語義分割算法通過編碼器和解碼器提取了車道線的特征,即使在遮擋、弱光照情況下,檢測到的車道線位置準(zhǔn)確率也較高?;谏蓪咕W(wǎng)絡(luò)的數(shù)據(jù)增強(qiáng)方法以及基于ERFNet和車道線特征的語義分割算法解決了對車道線的分割檢測問題。然而,筆者算法還存在一定的局限性,如因車道線這類目標(biāo)過于細(xì)長,有些邊緣部分仍然會出現(xiàn)不夠光滑的問題;當(dāng)檢測時被一些無關(guān)像素干擾時,一些車道線檢測結(jié)果會出現(xiàn)彎曲現(xiàn)象,影響車道線分割的效果。接下來可以進(jìn)一步優(yōu)化分割網(wǎng)絡(luò),提高車道線分割算法的精確率。