張 琰,舒暢,王 晶
(1.武昌工學院 信息工程學院,湖北 武漢 430065;2.法國貢比涅技術大學(UTC),皮卡第大區瓦茲省 貢比涅 60200)
隨著智能汽車概念的提出,以及輔助駕駛和無人駕駛等級的追求,車道線檢測成為智能駕駛范疇內的重點技術[1]。依靠車道線檢測,可以實現無人駕駛、偏離預警、自主泊車等智能功能。針對不同的功能,車道線檢測的精準度等指標有著不同的要求,為了滿足最嚴苛的條件要求,即復雜環境的無人駕駛,必須提出更為有效的車道線檢測算法[2]。以往的算法往往普適性較差[3,4],需要做大量的測試來驗證不同場景下的實際情況,即便如此,也無法保證實際的使用場景安全。
文獻[5]對車道圖像映射至HSL坐標,利用S通道與Gooch的融合來獲取車道線特征。由于該方法是基于灰度圖的,對于灰度相近的圖像區域沒有采取網絡學習進行訓練區分。文獻[6]先找出圖像中的ROI部分,采取灰度和平滑濾波處理,再根據OTSU分割出車道線,并結合Hough變換實現車道線準確識別。該算法注重不同光照情況下的適用性,缺乏對擁堵等車道情況的考慮。文獻[7]引入Retinex對車道圖像做RGB增強,通過灰度化與OTSU完成車道線區域的分割,最后利用邊緣檢測與Hough提取出車道線。該算法主要針對弱光環境下的車道線檢測,對于其它場景,存在一定的局限性。文獻[8]根據R、G通道與車道線顏色的關系,對RGB采取閾值限定,用于約束圖像的灰度與二值。該算法在光照差異和擁堵等情況下都能獲得較好的適用性,但是會由于高亮出現漏檢狀況。
針對現有研究存在的問題,提出了基于知識蒸餾和超分辨率的快速車道線檢測算法。超分辨率是指把已有的細節不清晰的LR圖像變換成細節清晰的HR圖像,本文利用退化模型對不同場景不同設備的圖像退化進行處理,濾除掉其中的噪聲,并結合重構完成圖像的超分辨率處理。對于不同場景下的車道線檢測,利用知識蒸餾與網絡學習的結合,完成車道空間與邊緣的構建,通過Teacher與Student間的知識遷移,快速實現車道線特征提取。
在進行車道線檢測的時候,利用網絡學習需要解決車道分割所面臨的特殊性。首先,車道存在空間特性,車道雖然靜止不動,但是其上運動著不同類型的車輛,甚至是人或其它事物,而且隨著車道方向的改變,車道的空間特性也將隨之改變,給車道線的檢測帶來困難。其次,在不同道路情況下,車道線和車道邊緣并不明顯。網絡學習是一個根據神經網絡,通過卷積與池化操作對樣本采取的訓練過程。由于樣本訓練是從無至有的,為了加速訓練的收斂速度和收斂精度,在網絡學習中,對空間和邊緣采取先驗知識分割。
通常來說,用于檢測車道線的車載攝像頭位置相對固定,而車道又可視為靜止,于是攝像頭拍攝到的車道圖像具有一定的空間特征。即圖像上方一般為天空,車道位于圖像中下方,兩側為車道邊緣及物體。以往的學習網絡在引進先驗知識時,通常只關注圖像局部關系,這就導致很難對整個空間關系進行準確劃分,從而出現模型或者先驗知識出現不匹配的情況。于是這里利用像素信息作為先驗依據,來引導網絡學習。根據車道圖像的橫縱坐標,將位置索引描述為(x,y)。對應的像素索引可以通過像素位置特征來描述。假定車道圖像的高與寬依次是h、w,則特征圖大小是(h,w,2),包含2個通道,依次用于記錄行、列索引。
車道邊緣由于物體復雜,且很多車道邊緣線并不清晰,可能是非鋪裝路面。此外,對于轉彎場景,車道的邊緣還會被賦予方向。于是,這里對車道圖像的邊緣采取八向梯度處理計算。不同方向的卷積核分別表示如下



(1)
如果將車道線檢測視為車道圖像分割問題,那么在采用超分辨率處理后,可以通過像素進行分類。由于只需要判斷車道或非車道兩種情況,因此可以引入損失函數來判斷分類結果。將所有像素作為樣本,一幅車道圖像在輸入網絡時的樣本數量記為N。當像素i為車道線時,對應的標簽li=1,否則li=0。此外,假設像素i被判斷成車道線的概率是pi,那么Sigmoid損失函數可以表示為
(2)
由于式(2)對于全部樣本的處理是無差別的,而車道線具有空間特性,這就導致在像素分類時缺乏約束。因此這里結合空間信息對Sigmoid進行優化。如果訓練集中包含的樣本數量為M,那么通過對坐標(xi,yi)處的像素計數,可以得到處于車道上的像素量nxi,yi。進而能夠確定坐標(xi,yi)處像素先驗概率為pi,0=nxi,yi/M。將所有位置都統計完成之后,便形成一個概率圖,表示為C={pi,0|ii}。在大部分情況下,車道圖像的劃分都比較相似,因此,先驗概率具有普適性。利用概率圖C來估計像素是否為車道線,將任意像素分為兩種情況分析。引入估計閾值H,當像素位于車道線上時,即有pi>H,此時先驗損失函數為
Si,0=eαpi,0(H-pi)log(pi)
(3)
其中,α為常量系數。當像素不位于車道線上時,先驗損失函數描述如下
Si,0=eα(1-pi,0)(pi-H)log(1-pi)
(4)
綜合上述兩種情況,得出最終交叉熵損失函數如下
(1-yi)eα(1-pi,0)(pi-H)log(1-pi)]
(5)
知識蒸餾是在模型壓縮基礎上提出的[9],它的引入能夠把原來規模很大的網絡學習遷移至規模很小的網絡內。此過程不僅沒有損失原來網絡的性能,還能夠顯著減少網絡參數[10]。在蒸餾網絡中,擁有知識的一方是Teacher,學習知識的一方是Student。本文將網絡分為兩個過程與兩個模型。兩個過程依次代表訓練和測試;兩個模型依次代表退化和重構。在樣本訓練時,輸入的I0先經過退化處理,得到的I0L再進行重構處理,繼而得到超分辨率圖像[11]。在進行測試時,I0利用訓練完成的重構模塊內得到I0R。
在使用光學拍照時,都會由于抖動而形成SR退化。即便是在同樣設備和同樣場景下,一次得到的圖像退化核都是不一樣的。而且根據研究結果,退化核對圖像分割的干擾超過先驗知識。因此準確得到退化核至關重要。退化模型設計為兩級,第一級負責把I0轉化為I0L;第二級負責確定圖像分布情況。在第一級中,采取五隱藏Conv設計,為了保證退化核內部功能,卷積核尺寸分別是7×7、5×5、3×3、1×1、1×1。在第二級中,采取六層設計,卷積核尺寸分別是7×7、1×1、1×1、1×1、1×1、1×1、1×1。歸一處理與損失函數計算均部署在該級。對于任意像素的輸入圖像,經過第二級處理后得到相應的Heatmap。Heatmap中的位置即代表輸入塊,像素即代表塊間的學習概率。退化目標函數表示如下

(6)
其中,Sadv(·)表示損失;t1表示第一級;t2表示第二級;R表示退化核正則。退化過程中,應該符合如下正則條件

(7)

重構的主要任務是實現知識蒸餾。但在這之前,需要對退化輸入圖像進行放大處理,放大處理后的圖像標記為IE,通過單次卷積得到IE的粗略特征
f0=Cmonolayer(IE)
(8)
Cmonolayer表示單層卷積。基于粗略特征f0,通過多次卷積迭代計算,得到精確特征
fn=Cn(fn-1)
(9)
Cn表示第n層卷積計算;fn-1表示第n-1層卷積后得到的特征。將該圖像輸入Teacher網絡,原始圖像輸入Student網絡。為了能夠滿足圖像的映射關系,需要構造Teacher與Student間的關系,進而完成知識遷移。知識蒸餾架構設計如圖1所示。其中,Teacher與Student依次包含nt與ns個殘差組(nt>ns)。這些殘差組各自又具有若干通道,可以增加特征信息的搜索,增強學習精度。
Student想要盡可能完整地得到Teacher知識,需要Student在特征處理的過程中,最大程度的接近Teacher親和矩陣。為此,這里以特征構建三維張量T∈Re×c×s×h。e、c、s依次表示對象、通道、空間三個維度。親和矩陣是用來描述各種維度間特征聯系程度的,對應的蒸餾損失描述如下

圖1 知識蒸餾框架

(10)


(11)

為了有效增強知識蒸餾網絡的學習效果,采用Teacher監督,對Student模型退化結果與輸入圖像做對比;采用數據監督,對Teacher模型結果與輸入圖像做對比。最終實現對Student模型的監督,損失函數描述為:

(12)
其中,λ1、λ2、λ3、λ4代表監督權重;IT(i)代表Teacher模型圖像結果;IS(i)代表Student模型圖像結果;ILR(i)代表原始輸入的粗糙圖像。通過(12)式,Student模型能夠更好的獲取Teacher模型知識。
仿真過程采用Culane數據集對所提算法進行驗證。Culane由多輛道路采集車完成,包含55個小時道路視頻,總計133235幀。Culane規模龐大,場景復雜,基本涵蓋了當前所有的道路情況,圖2列舉了Culane的8種場景實例。
基于Python與OpenCV實現本文算法,從Culane中隨機選擇各個場景的300幅圖像用于測試。通過不同場景下的實驗結果,驗證所提方法的魯棒性。引入F1-Measure指標對車道線檢測性能采取量化分析,其計算公式表示為

圖2 Culane場景實例

(13)
系數r一般設定成1;P為準確率,根據真正例對真假正例和的比值計算得到;R為召回率,根據真正例對真正例與假負例和的比值計算得到。
針對不同場景的車道線識別結果如圖3所示。從圖中結果可以看出,無論是擁堵或者夜間,所提算法都能準確檢測到當前車道線,幾乎不存在漏缺和重復情況。即使是不連續,或者無明顯車道的情況,也能夠進行合理有效的像素級處理。
為了驗證所提方法的性能優勢,采用文獻[6]、文獻[7]和文獻[8]方法的作為比較,得到各算法的F1-Measure結果。圖4描述了四種算法的平均F1-Measure指標,表1描述了四種算法對于不同場景下的車道線檢測F1-Measure指標。根據圖4可明顯得出,本文算法對于車道線檢測的準確性更高,蒸餾網絡的錯誤學習能力更好,有效改善學習效率和精度。根據表1數據比較得出,無論是何種場景下,本文算法都具有良好的通用性,及時在很惡劣的情況下,也能夠利用蒸餾網絡獲得較好的推理能力,從而提高車道線檢測的效果。

圖3 車道線檢測結果

圖4 不同算法的F1-Measure對比

表1 不同場景下的F1-Measure對比
針對車道線和車道邊緣不明顯的情況,在網絡學習中,對空間和邊緣采取先驗知識分割,結合空間信息對Sigmoid損失函數進行優化。采取知識蒸餾完成網絡學習遷移,減少網絡參數,利用退化和重構實現車道圖像的超分辨率特征處理和學習,最終根據網絡學習識別出車道線。基于Culane數據集對算法性能進行仿真分析,通過不同場景的車道線識別結果,證明了所設計的知識蒸餾網絡具有良好的學習能力,能夠利用先驗知識推測出盡可能接近真實情況的特征。結合不同算法的量化對比,進一步證明所提算法在車道線檢測方面的準確性和魯棒性。