鄭河榮,程思思,王文華,張夢蝶
(1.浙江工業大學 計算機科學與技術學院,浙江 杭州 310023;2.浙江廣播電視集團 浙江衛視頻道,浙江 杭州 310005;3.浙江中控技術股份有限公司 研發中心,浙江 杭州 310052)
近年來,越來越多的研究者對基于卷積網絡的語義分割產生了濃烈的興趣。卷積語義網絡會給每個像素點一個標簽,圖像中的同一個標簽用同一種顏色表示,實現像素級別的分類。目前的語義分割算法主要存在兩個挑戰:1) 小物體分割的挑戰,主要是在提取目標的特征向量上存在對特征學習不徹底的問題;2) 分割邊緣處理的挑戰,很多檢測結果因分割邊緣過于不清晰導致檢測準確率低。
本研究待檢測的車道線同時存在以上兩個問題,車道屬于細長型目標,在整張圖像中占比不高,屬于小物體,并且由于圖像從近到遠,車道線的寬度也會由寬到窄,因此車道線的檢測對于分割邊緣要求很高,微小的檢測誤差也會導致整條車道線檢測失誤。特別是在夜晚等光線昏暗的場景下,對車道線的檢測難度更大。雖然有學者已經提出了很多方法來解決該問題,比如基于多任務學習和基于上下文信息等方法,但是這些方法要么需要大量的人工進行數據標注,要么需要分別引入額外的推理公式進行計算。因此,筆者在訓練該車道線檢測網絡前使用了一種基于場景類型轉移的數據增強方法。該方法使用生成對抗網絡生成弱光條件下的圖像,以增加夜晚的場景數據圖像,讓車道線檢測網絡能更好地學習夜晚場景下的車道線特征,從而提高車道檢測網絡的環境適應度。筆者所提方法在進行場景轉換數據增強時不需要額外的手動標簽或額外的推理公式計算。筆者提出結合殘差網絡的編碼-解碼器結構的分割網絡算法對圖像進行車道線的分割。編碼器使用不同尺寸大小的卷積核來改變感受野的大小,從而獲得更多的圖像上下文信息和檢測物體的特征向量。解碼器恢復還原到輸入圖片大小,輸出分割概率圖。從分割概率圖中找到每行最亮的點,用霍夫線連接起來,得到可視化分割圖。筆者首先在CULane標準數據集上進行分析和討論,以驗證算法的有效性;然后構建一個包含5 500多張圖像的夜晚交通道路場景的數據集用于夜晚類別下的算法評價和分析。
圖像分割技術[1]是將圖像按照不同種類進行區分,圖像被分成很多個有具體特征的區域,每一區域代表一個種類。圖像分割是圖像處理的基礎,可以用來進行圖像識別和圖像搜索。傳統的車道線圖像分割技術主要依賴人類專業化的手工制作特征來識別車道線,主要基于顏色、條紋等特征,或者使用邊緣檢測算子[2-6]和條形濾波器進行制作,它們可以與霍夫變換結合或者通過卡爾曼濾波器[7]識別出車道線,然后采用后處理方法將錯誤分割目標過濾,形成最終車道線檢測結果。這些傳統方法雖然速度很快,但會因為道路場景的復雜變化而產生魯棒性問題,對一些彎道道路和遮擋道路的分割效果不佳,而且計算成本昂貴,不易擴展使用。
為了改進傳統分割方法的不足,減少錯誤分割和缺少分割情況的發生,近年來神經網絡已被越來越多的研究人員使用,并取得了極大的發展。相較于目標檢測算法,分割算法能對圖像進行更精確的識別,在自動駕駛、無人機等領域有很大的優勢。2016年,Paszke等[8]提出了高效神經網絡(Efficient neural network,ENet),該網絡在分割時使用了一種殘差結構塊,該殘差結構塊由1×1,3×3,1×1尺寸大小的卷積層組成,在保證分割精度的前提下,大大降低了計算成本。2017年,Romera等[9]在ENet網絡的基礎上提出了高效殘差分解卷積網絡(Efficient residual factorized ConvNet,ERFNet),該網絡在保證準確率的前提下,提高了網絡計算的速度,達到了精度和速度的平衡。該網絡使用的殘差結構塊由尺寸為3×1,1×3,3×1,1×3的卷積層組成,這種殘差塊比ENet網絡參數更少、速度更快。2017年,Pan等[10]為了更好地檢測到細長型目標,提出了優化后的空間卷積神經網絡(Spatial convolutional neural networks,SCNN),該網絡采用切片式設計,將特征圖的行和列也看成網絡層,使用卷積和非線性激活,從而增大感受野,保存更多像素的空間位置信息。Lee等[11]提出了消失點引導網絡(Vanishing point guided network,VPGNet),這是一個端到端的多任務網絡,可以實現對車道線和道路標記的分割和檢測,該方法先檢測出車道線的消失點,再回歸該消失點來指導分割車道線,從而提升車道線的分割精度。2018年,Wang等[12]提出了車道檢測網絡(Lane detection networks,LaneNet),該網絡將車道線分割分為車道線邊緣提取和車道線定位兩個階段:車道線邊緣階段使用基于編碼器-解碼器結構的車道線邊緣提取網絡,并將圖像的每個像素點進行車道線邊緣分類;車道線定位階段的網絡根據前一階段得到的邊緣分類檢測出車道線。2018年,Ghafoorian等[13]提出嵌入損失生成對抗網絡(Embedding loss-generative adversarial networks,EL-GAN),該網絡將車道線標簽也作為輸入,并將生成對抗網絡添加到網絡結構中,從而使分割生成的圖像越來越像標簽圖像。這種增加GAN網絡的方法雖然具有良好的分割精度,避免了計算量大、訓練時間過長的問題,但存在GAN網絡模型的優化過程不太穩定、延展性不足等問題。2019年,Hou等[14]提出基于自我注意力蒸餾算法的車道檢測方法(Lane detection CNNs by self attention distillation,SAD),該方法不僅不需要額外的標簽數據,還能加強網絡的特征學習,在車道線分割網絡中成功分割車道線,是一種弱監督學習。SAD算法是將深層次的注意力地圖作為低層次的精餾目標。
筆者采用的語義分割網絡結構由編碼器和解碼器組成,如圖1所示,在筆者提出的目標語義分割網絡結構中,從三維色彩圖像(編碼器的輸入)到像素類別概率(解碼器的輸出)。該算法1~20層構成了編碼器,由殘差塊和下采樣塊組成。相比ERFNet網絡,該算法在每個卷積塊中增加了2層殘差層,增加的殘差層的空洞[15]尺寸為32和64。下采樣層的存在雖然降低了像素分辨率,但可以讓更深的卷積層學習收集更多的上下文信息,有助于減少計算量。因此,為了保持良好的平衡,采用了3個2步長的3×3卷積層作為下采樣層,分別存在第1,2,8層。第3~7層采用5對殘差網絡Non-bt-1D層。從第9層開始,該目標分割網絡結構在殘差網絡Non-bt-1D層中交織了一些空洞卷積以收集更多上下文信息,從而提高分割的準確性。一個卷積塊的空洞尺寸分別為2,4,8,16,32,64。

圖1 車道線分割算法流程框架Fig.1 Lane segmentation algorithm flow framework
解碼器部分由21~27層組成,其主要任務是對編碼器的特征圖進行上采樣以匹配輸入分辨率。該部分由兩個網絡塊組成:第1個網絡塊包含一個通道數為128、步長為2、卷積核尺寸為3的反卷積層,兩對殘差網絡Non-bt-1D層;第2個網絡塊由一個通道數為64、步長為2、卷積核尺寸為3的反卷積層,兩對殘差網絡Non-bt-1D層組成。之后特征圖再經過一個通道數為16、步長為2、卷積核尺寸為2的反卷積層,得到一個三維的向量,恢復圖片的信息。
隨著深度神經卷積網絡的網絡深度增加,網絡的分割或者檢測精度逐漸增加至飽和,過了飽和點后會迅速下降。為了解決該問題,引入了殘差網絡的應用。殘差網絡構造了一種映射,即
y=F(x,{Wi})+Wsx
(1)
式中:WS是一個身份特征映射;F(x,{Wi})是需要學習的殘差映射。
筆者使用的殘差網絡為一維的非瓶頸模式網絡(Non-bottleneck-1D,Non-bt-1D),該網絡是對非瓶頸模式網絡(Non-bottleneck,Non-bt)和瓶頸模式網絡(bottleneck,bt)的改進。瓶頸模式下的輸入和輸出維度差距較大,網絡像一個瓶頸。非瓶頸模式的輸入和輸出維度差距不大。非瓶頸模式殘差網絡結構如圖2(a)所示,它由兩個3×3卷積的非瓶頸設計組成。瓶頸模式殘差網絡結構如圖2(b)所示,它由一個1×1卷積、一個3×3卷積和一個1×1卷積的瓶頸設計組成。實驗證明:通過增加網絡深度,非瓶頸模式網絡下的殘差網絡精度高于瓶頸模式下的殘差網絡精度,且瓶頸模式依舊存在網絡降級問題。另外,因為非對稱性的殘差結構能夠降低參數量,提高訓練速度,所以筆者算法使用了非瓶頸模式網絡的殘差網絡。

圖2 殘差網絡結構Fig.2 Residual network structure
筆者算法使用帶一維濾波器的非瓶頸殘差網絡,如圖2(c)所示。1D濾波器可以通過公式表示二維濾波器卷積層的權重,即
W∈RC×dh×dv×F
(2)
式中:C表示輸入通道的數量;F表示輸出特征圖通道的數量;dh×dv表示每個特征圖的卷積核尺寸大小。令b∈RF表示每個濾波器偏置項的向量,fi∈Rdh×dv表示該網絡層中第i個卷積核。由于二維濾波器在從數據中學習這些濾波器之后還需要微調,故使用一維濾波器,其線性表示為
(3)

將二維卷積記為W2D∈RC×d×d×F,將一維卷積記為WD∈RC×d×F,每個一維卷積在2×(C×d×F)的維度中。一維濾波器的功效與二維濾波器相比大致相同,卻比二維濾波器減少了33%的參數,減少了計算量,提升了計算效率。
殘差層利用一維分解進行計算,并稱其為一維的非瓶頸模式網絡。與瓶頸模式相比,非瓶頸模式具有速度更快、計算量和參數更少的優勢,同時能保證具有和瓶頸模式差不多的精確度和學習能力。
利用圖像語義分割技術將原圖轉化為n張(n≤4)區分前景、背景的二值概率圖,n為n條車道線。該方法規定在每張高度為208的二值概率圖像中找特定高度的18行:0,12,24,48,60,70,82,94,106,118,130,142,154,166,178,190,202,207,并找到每行的像素最大值。這些點位置的坐標即檢測到車道線的位置坐標,使用三次樣條插值算法使直線量化。最終由坐標點確定車道線的位置信息,用霍夫線連接起來,組成一條合適的可視化車道線。
筆者使用了通過強/弱光照條件下場景轉換方法生成的弱光照場景下的車道線數據集和公共數據集CULane。通過強/弱光照條件下場景轉換方法生成的弱光照場景下的車道線數據集約5 500張,由公共數據集CULane中選取的4 560張強光照場景數據和4 560張弱光照場景數據作為訓練集訓練模型生成,強光照場景轉變為弱光照場景的圖片如圖3所示。CULane共分為9類,分別為正常、擁擠、高亮光線、陰影、沒有車道線的情況下、指示箭頭、曲線、十字路口和夜晚。該數據集共有88 880張訓練集圖片、9 675張驗證集圖片和34 680張測試集圖片。

圖3 強光照場景轉變為弱光照場景的圖片Fig.3 Pictures of a strong-light scene transformed into a low-light scene
系統環境為安裝了CUDA 10.0的Ubuntu 16.04,硬件環境為內存為32 G的Intel Xeon E5處理器和4張Titan XP顯卡,使用CycleGan和ERFNet框架搭建網絡。
為了提升在夜晚、傍晚等弱光環境下的檢測精確度,筆者提出使用基于生成對抗網絡的數據增強方法。通過該方法可以在同一場景下將白天環境轉換成夜晚環境,從而增加夜晚環境的數據。
基于生成對抗網絡的數據增強方法網絡如圖4所示。基于生成對抗網絡的數據增強方法包括兩個步驟:1) 循環生成對抗網絡[16];2) 強/弱光照條件下場景轉換。循環生成對抗網絡有兩個鏡像對稱的生成對抗網絡,其由兩個生成器和兩個鑒別器組成。每個生成器帶有一個鑒別器,當生成器在生成圖像的時候,對應的鑒別器用來鑒別該生成器生成的圖像是否真實。使用循環生成對抗網絡[17]可實現從合適的光照條件到低光照條件的場景轉換。在同一個場景下,自動實現白天到夜晚的轉換,無需額外人工收集標記數據即可實現數據增強。后續的車道線檢測方法在訓練前先通過該強/弱光照條件下場景轉換對數據集進行數據增強訓練。

圖4 數據增強網絡流程框架Fig.4 Data enhanced network process framework
使用的循環生成對抗網絡的生成器包括2個步長為2的卷積層、9個resnet殘差塊和2個步長為1的卷積層。為了讓編碼器能適用于不同分辨率的輸入圖像,編碼時自動記錄比例的變化情況,并在解碼時將其映射到相應的卷積層中。
使用5層卷積層作為鑒別器網絡,包括3個步長為2的卷積層和2個步長為1的卷積層,它的初始通道數為3個通道。鑒別器用來判斷生成器生成的圖像是否真實,把結果反饋給生成器。在筆者算法中,用循環生成對抗網絡完成強/弱光照條件下的場景轉換。在訓練時,生成器根據鑒別器的反饋生成更真實的圖像,其主要目的是欺騙鑒別器,讓鑒別器可以更準確地判斷出生成的圖像是否真實,最終實現真假的動態平衡。
實驗用到的數據集尺寸為1 640×590,由于車道線屬于細長型目標,占全圖比例較小,且圖片上面部分一般為天空,車道線目標一般位于圖片的下端,為了讓模型有更好的檢測能力,需要對原圖的尺寸進行裁剪,剪去圖片上端的1 640×200,即留下高度為200~590的圖片數據,這樣能減少無效信息對車道線分割算法的干擾,增加車道線分割的準確度。
筆者使用開源的深度學習框架PyTorch訓練模型。在ERFNet提供的預訓練模型基礎上,針對弱光照場景增加數據,并對車道線分割網絡進行加深。其中初始學習率為0.001,動量為0.9,圖片裁剪大小為1 640×390,空洞卷積率分別設置為[2,4,8,16,32,64],訓練次數為16次,批次大小為24,網絡訓練采用SGD作為優化器。
使用公開數據集CULane進行模型訓練,模型訓練完成耗時約12 h,其損失值達到收斂。將筆者算法得到的準確率和其他算法得到的準確率進行比較,實驗準確率結果如表1所示,實驗錯誤正樣本結果如表2所示。顯然,增加了提取特征向量的編碼器層數后,未進行數據增強的算法在各類場景中的準確率已有較大提升。而采用數據增強方法后,因為增強了弱光照場景下的數據,夜晚(Night)和昏暗(Shadow)這兩類的準確率進一步得到了提高。

表1 筆者實驗準確率結果與其他算法對比Table 1 Comparison between the author’s experimental accuracy results and other algorithms

表2 筆者實驗錯誤正樣本數據與其他算法對比Table 2 Comparion between author’s experimental error positive sample data and other algorithms 單位:個
為使精度達到最優,增加對比實驗,筆者使用的車道線分割算法在編碼器部分的第20層下面再增加5層Non-bt-1D殘差層,即增加了1個殘差塊網絡,由原來的2個殘差塊變為對比實驗的3個殘差塊。這部分的空洞尺寸依舊為2,4,8,16,32,64。該對比實驗的實驗數據為表1,2的“有3個殘差塊網絡的筆者算法”列。實驗數據表明:一味增加網絡深度,并不一定能提高分割算法的精度,反而會出現網絡梯度爆炸現象,從而降低準確度。
為了驗證算法的有效性,利用該算法對實際生活中的圖片進行車道線分割。筆者算法分割概率圖結果與原ERFNet算法分割概率圖結果對比如圖5所示,矩形框內為筆者算法與ERFNet算法相比的進步之處。分割可視化結果如圖6所示。

圖5 分割概率圖結果Fig.5 Segmentation probability map

圖6 分割可視化結果Fig.6 Segmentation visualization results
筆者提出的車道線語義分割算法通過編碼器和解碼器提取了車道線的特征,即使在遮擋、弱光照情況下,檢測到的車道線位置準確率也較高。基于生成對抗網絡的數據增強方法以及基于ERFNet和車道線特征的語義分割算法解決了對車道線的分割檢測問題。然而,筆者算法還存在一定的局限性,如因車道線這類目標過于細長,有些邊緣部分仍然會出現不夠光滑的問題;當檢測時被一些無關像素干擾時,一些車道線檢測結果會出現彎曲現象,影響車道線分割的效果。接下來可以進一步優化分割網絡,提高車道線分割算法的精確率。