楊 瑩,何志琴
(貴州大學電氣工程學院,貴陽550025)
近年來,隨著無人駕駛技術的深入發(fā)展,無人車輛等新興的智能交通工具都處在實驗落跑進程中。如何有效地檢測出道路標識線、保障車輛的安全行駛,目前仍是人工智能方向的研究熱點[1]。車道線是車輛行駛路面的重要交通標志,能否準確識別出車道線決定著車輛的行駛安全性能。傳統的車道線檢測方法主要包括特征法[2]與模型法[3]等。隨著深度神經網絡在圖像處理領域受到廣泛應用,一些經典的分割網絡也被應用到車道線的檢測中,例如MASK[4]、R-CNN[5]、FCN[6]、Unet[7]等,皆在車道線檢測中均表現出不俗的檢測性能。深度學習的方法不僅大大提高了檢測的準確率,也加快了檢測速率。
在現有研究成果的基礎上,在此提出一種基于改進FCN網絡的車道線分割算法。對FCN的特征提取網絡做出改進,包括加深網絡層數和修改卷積核個數;引入Unet網絡并聯跳躍結構,將編碼層的特征圖與解碼層的特征圖進行連接,實現輸出結果與多層語義信息的結合;以Conv2DTranspose代替網絡層中的UpSampling2D來實現上采樣。由于存在學習的過程,可實現更好的分割效果。
FCN是深度學習網絡,作為圖像分割應用的基礎,它是一種“端到端”的圖像分割方法,其網絡中所有的層都是卷積層[8]。
FCN網絡從像素級別上實現了對圖像特征的分類,從而實現圖像的語義分割。經典的卷積神經網絡通常是在卷積層之后添加全連接層,將輸出特征表示為一定長度的特征向量,然后再對其進行概率預測從而實現分類。相比之下,FCN與之不同之處在于逐層卷積層提取特征圖后,會采用逐個反卷積將最后一個卷積層輸出的特征圖進行逐層上采樣,最終的輸出圖像是與原圖像素數目相同的特征圖,從而實現在原圖上對每個像素點的語義預測,同時也保留了原圖上的空間信息。傳統的FCN網絡結構如圖1所示。
由于FCN網絡本身結構限制,上下文信息不足,可能存在梯度消失等問題;在上采樣過程中需要插值填補空白區(qū)域,需要更多的輔助信息,將該網絡應用到車道線檢測中,此類問題亟待解決。更深層的卷積操作能更有效地提取特征,適當地增加網絡層數并修改卷積核個數能獲得更多的語義信息,結合并聯跳躍結構就能融合不同維度的特征,逆卷積的替換也讓輸出層信息表達更加豐富。
卷積層、逆卷積層的適當增加能提取更高維度的特征信息并使輸出圖像信息更加豐富;增加卷積核個數即增加每個卷積層濾波器的數量,能獲得每個輸入特征上更多的語義信息。
單純的“編碼器-解碼器”架構在編碼過程中會壓縮或丟失大量細節(jié)信息,其中包括對于分割任務非常重要的空間域信息,這些信息的丟失會大大影響解碼過程中分割任務的好壞,不利于精確的分割掩膜的生成。
并聯跳躍結構將編碼器結構中卷積層得到的特征圖“接合”(concatenate)到對應的上采樣層,使得各卷積層輸出的特征圖能被有效地利用到后續(xù)計算中。它通過將淺層的卷積層連接到對應的上采樣層,從而結合低等級特征圖中的特征,使得最終所得到的特征圖中既包含高等級的特征,也包含了很多低等級的特征,實現不同規(guī)模下的特征融合,更有利于生成分割掩膜。
改進后的包含并聯跳躍結構的網絡模型如圖2所示。圖中橫向兩層的連接即為卷積層對應連接到上采樣層。

圖2 并聯跳躍結構網絡
Conv2DTranspose是正常卷積的反向操作,通過可學習的參數獲得更好的卷積效果。這一逆卷積過程如圖3所示。

圖3 逆卷積過程示意圖
UpSampling2D是Pooling的反向操作,通過采用最近鄰插值法來將輸入特征圖進行放大,主要通過復制行和列的數據來進行擴充。反向梯度傳播的時候,插值取每個單元格的梯度之和。
譬如,給定一個特征圖a,高和寬分別表示為Ha和Wa,相應的卷積核設置為:卷積核尺寸MH×MW,步長為S,零填充為P。逆卷積操作分為三步進行:
第一步:在特征圖a原先高度和寬度方向的每兩個相鄰像素間插上S-1列0,得到特征圖b;特征圖b的寬和高分別表示為Hb=Ha+(S-1)(Ha-1)、Wb=Wa+(S-1)(Wa-1)。
第二步:設置新的卷積核:S′=1,卷積核大小仍為MH×MW不變,P′=S-P-1。
第三步:用新的卷積核在特征圖b上做卷積運算,得到的結果就是逆卷積的結果,亦即要求的結果特征圖c的大小。
上述過程的簡單推導可概括為下式:

代入特征圖b及新卷積核設置,進一步化簡為:

特征圖c的寬度Wc同理可得。
實驗操作系統為Windows10;深度學習框架為T ensor F low2.0.0;Python版本為3.6.8;顯卡為NVIDIA V100。
深度神經網絡模型訓練需要大量優(yōu)良數據的支撐。車道線數據集中包含結構化路面及高速公路車道線圖片,給網絡提供了真實的標準數據,確保卷積神經網絡的數據得到更好的擬合。網絡訓練過程中,通過將網絡預測的結果與真實結果進行對比獲取損失值,同時自動地調整模型權重,使模型輸出預測值逐漸接近真實值,實現車道線的分割檢測任務。因此,需要有標簽Label記錄標注點的位置,并且將數據劃分為訓練集、驗證集,之后再對模型進行預訓練,并將預訓練模型在數據集上進行調優(yōu)與測試。
分別對改進前后的分割網絡進行訓練,共包含訓練集5400張、測試集720張。深度學習框架選用TensorFlow,優(yōu)化策略為Adam,初始學習率為0.001,batch_size為16,迭代次數(epoch)為200次。通過200次的迭代,改進前的網絡結構平均準確率為82%,改進后的網絡結構平均準確率為83%,比之前精度提升了1%,對模型的特征提取能力有一定的提升;改進前的網絡模型的損失函數值為0.0097,改進后的損失函數值為0.0053,改進后的網絡模型的loss收斂效果更佳。
獲取兩種FCN網絡模型后,分別在同一環(huán)境中對車道線進行測試,測試效果如圖4所示。改進后的FCN網絡模型的分割精度比原模型的分割網絡提高1%,進一步驗證了改進模型的有效性。

圖4 改進前后網絡測試效果對比
在FCN網絡的基礎上,增加網絡層數并修改卷積核個數,提取出更多的語義信息,采用并聯跳躍結構將encoding的feature map與decoding的feature map進行連接,可以在進行分類預測時利用多層信息,將UpSampling2D改為Conv2DTranspose實現上采樣的過程,獲得了更好的分割效果。改進后的網絡結構與原來的網絡結構在分類精度上有所提高,在分割精度上也有一定的提升。后續(xù)研究中,還應進一步提高訓練集數據的豐富度,增強模型的泛化能力。