王 祥,柯福陽,朱節(jié)中,夏德鑄
(1. 南京信息工程大學自動化學院,江蘇 南京210000;2. 南京信息工程大學遙感與測繪學院,江蘇 南京 210000;3. 南京信息工程大學無錫研究院,江蘇 無錫 214000;4. 無錫學院,江蘇 無錫 214000)
隨著城鎮(zhèn)化的加快和汽車保有量的增加,城市交通負擔日益加重,交通事故頻發(fā),人們駕駛車輛的壓力倍增[1]。為了避免車輛道路事故,保障駕駛的安全性,近年來在世界范圍內針對為駕駛員提供幫助的車輛駕駛輔助系統的研發(fā)蓬勃展開[2-7]。這些系統通過從車輛載有的傳感器獲取輸入,利用系統輸出的某種形式的反饋信號指導駕駛員安全駕駛。車道偏離預警(lane departure warning,LDW)和車道保持(lane keeping,LK)、車道變換(lane changing,LC)和前向碰撞預警(forward collision warning,FCW)、自適應巡航控制(adaptive cruise control,ACC)及盲點檢測(blind spot monitoring, BSM)系統等都屬于駕駛輔助系統的范疇[8]。車道標線檢測則是組成這些系統的核心部分。所以研究車道線檢測有重大理論價值和現實意義。
更為精確有效地從圖像中檢測出車道線是近些年來相關研究人員廣泛關注的問題,人們針對車道線檢測方法進行了大量研究。目前,對于車道檢測有兩種主流的方法,即傳統的圖像檢測處理方法[9-11]和深度分割方法[12-14]。傳統的車道檢測方法通常是基于視覺信息來解決車道檢測問題,這些方法主要思想是通過圖像處理利用視覺線索,如HSI(HueSaturationIntensity)顏色模型[15]和邊緣提取算法[16,17]。而傳統方法針對視覺信息不夠強的時候,表現效果較差。最近,深度分割方法在這一領域取得了巨大的成功,它具有很強的代表性和學習能力。為了更有效地使用視覺信息,SCNN(Spatial CNN)[14]在分割模塊中使用了一種特殊的卷積運算,通過對切片特征的處理,將不同維度的信息進行聚合,并將其逐一相加,但該方法檢測速度較慢,限制了進一步地發(fā)展;文獻[18]提出了自蒸餾的方法來解決檢測速度慢這一問題,但由于分割SAD(self attention distillation)算法稠密的預測特性,該方法計算量大;文獻[13]提出了將車道線檢測看作實例分割問題,采用實例分割得到每條車道線的像素點,通過學習路面的透視投影矩陣,并將前視圖轉換到鳥瞰圖視角,擬合每條車道線的曲線方程,最后逆變換回原視圖。該方法可以有效地解決傳統的車道檢測方法計算成本高等問題,但容易因道路場景變化而不具有可擴展性;文獻[19]針對采用像素分割的傳統車道線檢測方法,存在速度慢、感受野有限和未充分利用全局特征等缺點,提出了UFSA(UltraFast Structure-aware)算法。該算法檢測過程使用全局特征,在全局特征上使用大感受野,此外還提出了一種結構損失來模擬車道結構。利用全局特征在圖像中篩選提前預定行的車道線位置而不是基于局部特征的車道線,這樣不僅減少了計算量,還可以解決速度和無視覺線索(車道線被遮擋,需要通過車的位置和環(huán)境語義信息去猜測研究)的問題。
針對解決UFSA算法網絡卷積和池化提取車道特征可能會丟失重要信息、大感受野時,不能獲取更豐富、捕獲長距離的上下文信息等問題的存在,故在輔助語義分割網絡層采用空洞空間金字塔池化ASPP(Atrous Spatial Pyramid Pooling)[20]和FCANet(Frequency Channel Attention)[21]注意力機制融合機制,定義為FCASPP(Frequency Channel Attention Spatial Pyramid Pooling),該機制可以有效地獲取豐富信息、提取更有用和緊致的特征而抑制噪聲信息;車道線檢測對于邊界信息敏感,不僅只關注對象的幾何形狀,更需要關注邊緣信息,如顏色、紋理和照明等,L-Dice (Lane Dice Loss)函數[22]比Softmax函數更加關注車道邊界的信息。通過消融實驗驗證了上述改進的有效性,此外,加入的FCASPP機制和L-Dice函數時,未添加任何計算量。檢測速度和精度與原文相比,均有進一步地提升。與原文相當,本文算法較具競爭力。
網絡的總體框架如1圖所示,上分支為輔助分割分支模塊,用于語義分割,且僅在訓練階段工作;下分支左側為網絡層Resnet模塊用于特征提取;緊接著右分支是分類預測模塊。
圖1 UFSA原始網絡結構
Ltotal=Lcls+αLstr+βLseg
(1)
Lseg對應于分割損失,Lstr對應結構損失,Lcls對應分類損失,α和β是為損失系數。
2.2.1 ASPP網絡層
ASPP(Atrous Spatial Pyramid Pooling)主要是對所給定的輸入圖片,以不同采樣率的空洞卷積并行采樣,相當于以多個比例捕捉圖像的上下文,捕捉上下文信息。為了解決已有車道線檢測算法無法有效捕捉輸入圖像多尺度長距離上下文信息,而導致的分割準確率較低的問題。本文提出基于空洞空間金字塔池化的車道線語義分割網絡,構建多尺度長距離上下文特征提取層。通過在車道線檢測場景特征提取引入空洞空間金字塔池化層來對多尺度長距離上下文信息進行有效提取,更好地學習車道線圖片的特征。改進的模塊如圖2所示,圖2左側為ASPP原始模塊,膨脹率不同,可以提取不同感受野的特征,以便于更加豐富的信息;將ASPP卷積層與FCANet注意力機制相連接,將融合后的模塊定義為FCASPP,基于空洞空間金字塔池化,對于特征信息具有更強的學習能力。特征提取模塊中的空洞卷積如式所示
圖2 FCASPP機制
圖3 L-Dice示意圖
(2)
其中,y[i]是輸出特征圖上第i個位置的輸出信號,x是輸入信號,w是卷積濾波器,k是卷積核大小,r是濾波器擴張率。
2.2.2 FCANet
卷積層和池化層類似于通道注意力機制,通過網絡學習的方式來獲得權重函數。但存在一些潛在的問題:卷積層和池化層無法很好地捕獲豐富的輸入模式信息、提取特征會丟失重要信息等,因此在處理不同的輸入時缺乏特征多樣性。而FCANet注意力機制,可以有效解決上述問題。
為了引入更多的有效信息,使用二維的DCT(discrete cosine transform)來融合多個頻率分量。具體操作流程為:將輸入的X按通道維度劃分為n部分,其中n必須能被通道數整除。每個部分分配相應的二維DCT頻率分量,其結果可作為通道注意力的預處理結果,數學推導過程為
(3)
H為輸入特征圖的高,W為輸入特征圖的寬,X為輸入的圖像特征張量,h∈{1,2,…,H-1},w∈{1,2,…,W-1},ui,vi是對應于Xi二維頻率分量的索引,Freqi是壓縮后的C′維向量。
將各部分的頻率分量合并起來為
Freq=compress(X)
=cat([Freq0,Freq1,…,Freqn-1])
(4)
其中,Freq為多光譜向量,整個多光譜通道注意力框架可以寫為
ms_att=sigmoid(fc(Freq))
(5)
其中,att∈RC是注意力向量,sigmoid是Sigmoid函數,fc為全連接層或一維卷積的映射函數。可以看出,該通道注意力將原有的方法推廣到一個具有多個頻率分量的通道,壓縮后的通道信息可以豐富有效地用于表征。
2.2.3 Lane Dice Loss損失函數
邊界檢測的一個直接解決方案是將其視為語義分割問題。在標注中簡單地將邊界記為1和其它區(qū)域記為0,即將其表示為一個二分類語義分割問題,以二值交叉熵為損失函數。然而,交叉熵具有兩個局限性:標簽分布高度不平衡和邊界相鄰像素點的交叉熵損失難確定問題。交叉熵損失值只考慮微觀意義上的損失,而不是考慮全局。
Dice Loss損失可以很好地解決上述存在的問題,該損失起源于20世紀40年代,是用來測量兩個樣本之間的相似性,示意圖如3所示。它是由米勒塔里等人應用到計算機視覺中,并在2016年[23]進行三維醫(yī)學圖像分割。其數學表達式為
(6)
上式顯示的骰子系數方程,其中pi和gi分別表示的是像素預測值和真實值,值為0或1。在車道線檢測場景中,表示像素是否為邊界,是值為1,不是值為0。分母是預測值和真實值的總邊界像素和,分子是正確預測的總邊界像素和,只有當pi和gi值(兩值為1)匹配時,損失函數才遞增。在該文中,將Dice Loss定義為L-Dice(Lane Dice Loss),并將此時的分割損失定義為LL-Dice。
那么,總體的損失函數重新定義為
Ltotal=Lcls+αLstr+β(μLseg+γLL-Dice)
(7)
其中,分割損失Lseg的系數μ設置為0.7,分割損失LL-Dice的系數γ設置為0.3。
UFSA網絡結構的改進如圖4所示,主要改進基于輔助分割分支,加入ASPP與FCANet融合模塊FCASPP,且損失引進L-Dice,在原有基礎上并未增加任何計算量。
圖4 UFSA改進網絡結構
實驗運用深度學習相關理論方法與傳統算法優(yōu)化方法完成了算法構建,實驗階段,采用opencv庫函數與pytorch框架,所用GPU(Graphics Processing Unit)為NVIDIA 1080Ti,通過CUDA10.0與CUDNN V5.0采用Python語言實現了算法內容。
3.1.1 訓練數據集
針對車道線檢測選用圖森未來發(fā)布的TuSimple數據集和香港中文大學發(fā)布的CULane數據集進行相關實驗和研究,大部分車道線明顯且清晰,車道線彎曲程度小。
TuSimple數據集采用的是結構化道路圖像,包含72520個訓練集和55640個測試集。該數據集將視頻數據通過分幀轉換成多張圖片形成,并僅對未位圖片進行標注。數據集標注采用中心打點式以json文件儲存,一張道路圖片的標注為一個元組。
CULane數據集用于行車道檢測學術研究的大規(guī)模挑戰(zhàn)性數據集,一共包含133235張圖像。其中數據集分為88880個訓練集,9675個驗證集和34680個測試集,道路中的車道線用粗實線進行了標注。如表1所示,對兩個基準數據集詳細地介紹。
表1 數據集描述
3.1.2 模型訓練
模型訓練過程中將數據集主要分為兩個部分:訓練集和測試集。在TuSimple數據集時,訓練迭代次數設置為100,在CULane數據集時,訓練迭代次數設置為50;批處量大小為32,基礎學習率初始為4e-4,其中動量和權重衰減分別配置0.9和0.00055。訓練誤差和驗證誤差使用均方誤差,訓練結束時訓練誤差收斂為0.0044,驗證誤差收斂為0.0045。
準確率和召回率是評價目標檢測識別算法時最常用的兩項評估指標。準確率用來衡量輸出的預測結果中為正確檢測為真實值的比例,而召回率是用來衡量輸出的預測結果之中所包含的應該被正確檢測數量的比例。
其中,準確率和召回率的計算公式為
(8)
(9)
TP為真正例,指模型將正類別樣本正確預測為正類別;TN為真負例,指模型將負類別樣本正確預測為負類別;FP為假正例,指將負類別樣本錯誤的預測為正類別;FN為真負例,將負類別樣本錯誤的預測為負類別。
使用的車道線檢測算的是基于深度學習分割算法與傳統方法進行優(yōu)化的融合算法,因此使用圖像分割的評價指標對檢測結果進行像素級的分類評價。F值(F-measure)又稱為F1分數(F-score),是準確率(Precision)和召回率(Recall)的加權調和平均,用于判斷分類模型的優(yōu)劣,精準率和回歸率兩個因素決定,計算公式為
(10)
將β參數設置為1時,即F值函數設為常見的F1,它綜合了準確率和召回率的結果,F1越高這說明分割模型越優(yōu)秀。
原文的方法是基于兩個基礎網絡模型進行,分別為Resnet-18和Resnet-34;本文基于Resnet-18網絡模型進行修改,分別添加FCASPP模塊和L-Dice損失,實驗總共分為四個對個實驗,如表2所示。
表2 UFSA算法改進不同模塊對模型性能影響對比
表2所示是本文實驗改進的內容,其中實驗1是UFSA原文的方法,對應的F1分數為68.4%;實驗2是基于UFSA原文方法,只添加FCASPP融合模塊的檢測結果,對應的F1分數為69.4%,比原UFSA的精度提高了1.2%,此實驗證明了此融合模塊FCASPP的有效性;實驗3是基于UFSA原文方法,只添加L-Dice損失的檢測結果,對應的F1分數為69.3%,比原UFSA的精度提高了0.9%,此實驗證明了分類損失L-Dice的有效性;實驗4是基于UFSA原文方法,添加FCASPP模塊和L-Dice損失的檢測結果,即本文改進的方法,對應的F1分數為70.1%,比原文的檢測精度提高了1.7%,FCASPP模塊和L-Dice損失緩解了網絡卷積和池化提取車道特征丟失重要信息、大感受野時,不能獲取更豐富、捕獲長距離的上下文信息等問題的存在。
該改進部分實驗是基于兩個公開數據集進行,分別為TuSimple基準數據集和CULane數據集,進行了大量的實驗驗證。表3展示了7種傳統分割算法,在TuSimple數據集上檢測精度的對比。由表中數據可知,該改進的UFSA算法在TuSimple數據集上表現勝于改進前該算法的表現,精度有所提升,原文在Tusimple上的檢測精度為95.87%,改進后的檢測精度為96.08%,提高了0.21%,說明了改進的有效性。
表3 TuSimple基準數據集的檢測精度對比
表4為CULane數據集基于不同算法下,9個場景的識別精度。本文基于Resnet-18改進的檢測精度,如表所示。9種場景分別為:Normal、Crowded、Night、No-line、Shadow、Arrow、Dazzlelight、Curve、Crossroad,原文在Resnet-18對應的精度分別為:87.7%,66.0%,62.1%,40.2%,62.8%,81.0%,58.4%,57.9%,1743;本文實驗對應的精度分別為:89.2%,68.2%,64.5%,42.9%,64.2%,83.8%,59.7%,59.5%,‘2336’。改進后比改進前,前8個場景精度分別提高為:1.5%,2.2%,2.4%,2.7%,1.4%,2.8%,1.3%,1.6%,而第9個場景的檢測識別精度較低,誤檢的車道線與改進前相比較多,但總體檢測效果良好。原Resnet-18綜合檢測精度為68.4%,而改進后為70.1%,提高了1.7%;同時,檢測速度也較之前明顯變快,由322.5FPS變?yōu)?98.4FPS。
表4 在CULane數據集下9個場景的識別精度
表4中,測試閾值設為0.5,圖片分辨率設為1640×590,“-”表示結果不可得。
圖5(a)(b)(c)(d)主要以場景豐富的Culane數據集為例,四幅圖橫坐標表示迭代次數,縱坐標表示損失函數值。
圖5 損失曲線
圖5(a)對應的是輔助分支分割的損失,隨著網絡迭代的不斷增加,損失逐漸降低。圖中曲線表明本文提出的混合損失在迭代80k次后逐漸收斂。
圖5(b)對應的是主分支的分類損失,隨著網絡迭代的不斷增加,損失逐漸降低。從圖中可知,分類網絡在75k完全收斂。
圖5(c)對應的是結構化損失,隨著網絡的迭代,損失增加。車道線理想狀態(tài)下是筆直的,但是現實中相鄰車道線像素之間并非在一條直線,從圖中說明網絡已經能夠清楚的識別公路上的車道線,損失逐漸遞增原因,但是迭代80k后,損失曲線呈現水平狀表示已經完全收斂。
圖5(d)對應的是本篇論文的多階段學習率策略,有利于網絡的學習。
從圖6可知,本文采用的FCASSP和L-Dice loss對車道線檢測的取得較好的效果起到關鍵作用。
圖6 車道線效果圖
首先是介紹了UFSA算法網絡模型的基本結構,然后對其進行精簡和改進,主要針對的是輔助分割分支的改進。其一是ASPP網絡層與FCANet注意力機制融合,并將融合模塊FCASPP添加到UFSA算法網絡的輔助分割分支中,這樣可保證UFSA算法在大感受野時,能獲取更豐富、捕獲長距離的上下文信息,同時可以有效地提取更有用和緊致的特征而抑制噪聲信息;其二是由于車道線檢測對于邊界信息敏感這一特殊性,不僅只關注對象的幾何形狀,更需要關注邊緣信息,如顏色、紋理和照明等,故進行損失函數的修改,L-Dice損失比Softmax函數更加關注車道邊界的信息。通過消融實驗驗證了上述改進的有效性,在兩個公開數據集TuSimple和CULane測試,性能和精度都有進一步地提升。此外,加入的FCASPP模塊和L-Dice損失時,未在原有的基礎上添加任何計算量,且檢測速度也與改進前相當。