天天看點

車道線檢測網絡-LaneNet(論文簡述)摘要一介紹二方法三結果四總結

摘要

無論是輔助駕駛還是自動駕駛,車道線識别都是非常重要的。以前的算法需要很多人工的操作或者無法很好的适應不同的車道線場景。本文主要是使用semantic segmentation的方式來對車道線進行劃分,可以适應變化的車道環境,并且速度可以達到50FPS。

一介紹

現在的自動駕駛主要集中在計算機視覺和機器人領域的研究,還處于學術和工業水準,并沒有大衆化使用。研究的目的就是希望通過各種sensor和控制子產品來完全明白汽車周圍的環境。基于攝像頭的車道線檢測就是很重要的一步,能夠知道汽車所在的車道位置。對車道偏移檢測和軌迹規劃都很重要。是以基于攝像頭的車道線事實檢測是實作自動駕駛中很重要的一個點。傳統的車道線識别方法需要使用精心設計的特征來識别車道,然後結合霍夫變換和卡爾曼過濾器。識别出車道後還需要使用後處理的技術過濾識别錯誤的部分,将分割的組合并起來做為最後的車道。事實上這些傳統不能很好的适應多樣變化的道路情況。

最近的一些算法開始擯棄手工設計feature的檢測器而使用上了深度學習的算法去預測車道,比如基于像素的車道分割。但是論文[11]和[19]的算法中隻有路面狀況複雜的時候才會使用CNN做圖檔增強。而論文[16][13][22][21]尤其是[16]可以估計出車道哪怕沒有車道标記,但是在識别出車道的基礎上,我們還需要将不同車道劃分為不同執行個體。

為了解決這個問題,有些算法比如[19][12]依據幾何性質進行後處理,但是這種處理比較消耗計算量并且對路面變化不太魯棒。另外一種方法[20]直接将車道分成不同的執行個體分割問題,這種算法可以端到端訓練,把不同車道分成不同執行個體,但是必須預先确定車道數量,不同适應不同車道數量的情況。

在這篇文章裡面,超越了上面提到的限制,把車道檢測問題轉化成了執行個體分割問題,每一條車道都屬于自己的車道類别。作者設計了一個多任務的網絡,一個車道分割分支和一個車道嵌入分支,可以進行端到端的訓練。車道分割分支的輸出是兩類,背景或者車道,車道嵌入分支進一步将分割出來的車道像素劃分為不同的車道執行個體。通過把車道識别的問題轉化為兩個任務,我們可以完全利用車道分割分支的強大能力,而不用将不同的類直接配置設定給不同的車道,取而代之的是使用車道嵌入分支,通過聚類的損失函數為每個pixel配置設定一個車道id并且可以忽略屬于背景的pixel,是以可以處理不同車道數量的問題。

知道每個pixel屬于哪個車道後,最後一個步驟,将每一個車道執行個體轉化為參數化描述,最後使用在論文中廣泛使用的曲線拟合算法。常見的曲線拟合算法有cubic polynomials [32], [25], splines [1] or clothoids [10]。為了在保證計算效率的情況下提升拟合品質,一般會把圖檔轉換為鳥瞰圖的形式并且在它的基礎上進行曲線拟合。在鳥瞰圖的模式下拟合的曲線可以通過矩陣轉換到原始圖檔上。轉換矩陣基于一張圖檔計算并且保持固定,但是如果地平面發生變化這個轉換矩陣就不再有效。車道靠近地平線的點可以投射到無限遠,以負面方式影響線條拟合。

為了解決這個問題,我們還是在曲線拟合之前進行圖像視野轉換,但是與以前固定的轉換矩陣不一樣,我們使用神經網絡訓練輸出轉換系數。這個神經網絡以圖檔作為輸入,使用loss函數進行優化車道拟合問題。這樣可以根據路面平面的變化進行自動适應,可以更好的拟合車道。下圖是一個示意圖

車道線檢測網絡-LaneNet(論文簡述)摘要一介紹二方法三結果四總結

從上圖可以看出LaneNet這邊有兩個分支,一個是車道分割,一個是車道嵌入,另一邊還有一個Hnet用來預測轉換視圖的矩陣。

總結這篇文章的貢獻有兩點:

  1. 使用分支的多任務架構,車道分割分支+車道嵌入分支
  2. 使用網絡預測圖檔和視圖的變換參數,可以更好的适應路面變化,比如上下坡

二方法

本文是針對車道分割問題而設計的可以端到端訓練的神經網絡,主要為了解決之前的算法不能自動适應車道數量的變化的情況。實作的方法就是把車道檢測問題看成執行個體分割問題來解決。這部分的網絡叫做LaneNet,結合了車道執行個體二分割和聚類方法進行一次性執行個體分割,LaneNet的輸出是每個車道pixel配置設定了車道ID。第II-A節會詳細介紹。

在LaneNet輸出每個車道的像素集合後,我們還需要通過這些像素拟合曲線才能獲得最終資訊。 通常,車道像素會投射到“鳥瞰圖”使用固定變換矩陣。 但是,由于這一事實對于所有圖像,轉換參數是固定的,這引起了遇到非平坦地平面時的問題,例如 在

連續下坡。 為了緩解這個問題,作者訓練了一個網絡叫做H-Net,估計“理想”的參數變換,以輸入圖像為條件。這種轉變不一定是典型的“鳥瞰”視圖”。 相反,它是車道可以進行的轉換最佳拟合低階多項式。 第II-B節會詳細介紹。

A.LANENET

車道線檢測網絡-LaneNet(論文簡述)摘要一介紹二方法三結果四總結

上圖是lanenet的網絡模型,可以看到是兩個分支加一個聚類。

二分分割

是上圖的分割分支,訓練後輸出是一個二分分割圖,表明pixel是背景還是車道。将标記的gt中每個車道的點連接配接起來形成每條車道線,需要注意在标記這些車道線的時候如果遇到了汽車等物體遮擋也應該通過遮擋物,這樣訓練出來的網絡可以學會對這當初進行車道線預測。分割網絡使用标準的crossentropy,但是正負樣本非常不平衡,是以需要增權重重。

執行個體分割

執行個體分割就是要區分車道像素分别屬于哪個車道,訓練了LaneNet中的第二個分支嵌入分支來實作。最流行的檢測分割算法都不适用于車道執行個體分割,因為邊界框檢測更适合緊湊物體,車道不是。是以我們使用一次性方法,使用距離測量學習,可以很容易地與之內建為标準的前饋網絡,并且能夠滿足實時處理的要求。

通過使用他們的聚類損失函數,執行個體嵌入分支訓練後輸出是每個車道的嵌入像素,是以同一個車道的嵌入像素之間的距離很小,同時不同車道的嵌入像素之間的距離很大。通過這樣做,同一個車道的嵌入像素就會聚類在一起,為每個車道形成獨一無二的聚類。是通過兩個方面的限制來實作的,一個是方差

車道線檢測網絡-LaneNet(論文簡述)摘要一介紹二方法三結果四總結

,這個代表每個車道的平均嵌入像素對其他像素之間的一個拉力。另外還有一個是

車道線檢測網絡-LaneNet(論文簡述)摘要一介紹二方法三結果四總結

,将每個聚類的中心都推離彼此。這兩部分是折線:拉力隻有當嵌入像素跟它的中心的距離大于

車道線檢測網絡-LaneNet(論文簡述)摘要一介紹二方法三結果四總結

才會被激活,不同中心之間的推力隻有當他們的距離小于

車道線檢測網絡-LaneNet(論文簡述)摘要一介紹二方法三結果四總結

才會被激活。

車道線檢測網絡-LaneNet(論文簡述)摘要一介紹二方法三結果四總結

代表聚類的個數

車道線檢測網絡-LaneNet(論文簡述)摘要一介紹二方法三結果四總結

代表每個聚類

車道線檢測網絡-LaneNet(論文簡述)摘要一介紹二方法三結果四總結

裡面元素的個數

車道線檢測網絡-LaneNet(論文簡述)摘要一介紹二方法三結果四總結

是嵌入像素

車道線檢測網絡-LaneNet(論文簡述)摘要一介紹二方法三結果四總結

是聚類

車道線檢測網絡-LaneNet(論文簡述)摘要一介紹二方法三結果四總結

的嵌入像素的平均值

車道線檢測網絡-LaneNet(論文簡述)摘要一介紹二方法三結果四總結

是L2距離,

車道線檢測網絡-LaneNet(論文簡述)摘要一介紹二方法三結果四總結

總的Loss是兩個loss之和

車道線檢測網絡-LaneNet(論文簡述)摘要一介紹二方法三結果四總結
車道線檢測網絡-LaneNet(論文簡述)摘要一介紹二方法三結果四總結

一旦網絡開始起作用,車道嵌入的像素就會聚類在一起,每個聚類和彼此之間的距離會大于

車道線檢測網絡-LaneNet(論文簡述)摘要一介紹二方法三結果四總結

,而每個聚類的半徑會小于

車道線檢測網絡-LaneNet(論文簡述)摘要一介紹二方法三結果四總結

聚類

對上面的loss設定

車道線檢測網絡-LaneNet(論文簡述)摘要一介紹二方法三結果四總結

>6

車道線檢測網絡-LaneNet(論文簡述)摘要一介紹二方法三結果四總結

,在進行聚類時,首先使用mean shift聚類,防止将離群點選入相同的簇中;之後對像素進行劃分:以簇中心為圓心,以2

車道線檢測網絡-LaneNet(論文簡述)摘要一介紹二方法三結果四總結

為半徑,選取圓中所有的像素歸為同一車道線。重複該步驟,直到将所有的車道線像素配置設定給對應的車道。關于mean shift聚類方法的了解可以參考mean shift clustering

網絡結構

LaneNet的網絡架構是基于encoder-decoder的網絡ENet,隻是後面将網絡改成了兩個分支。ENet的encoder比decoder包含更多的參數,這兩個分支如果完全共享encoder的所有網絡,結果不會太讓人滿意。是以,原始的ENet的encoder包含三個stage,LaneNet隻會對這兩個分支共享前兩個stage,把第三個stage和decoder對這兩個分支單獨訓練。分割分支最後輸出的是一個channel的圖檔(二分分割),嵌入分支輸出的是Nchannel的圖檔,N是嵌入尺寸。每個分支的loss是相等的權重,然後通過網絡進行反向傳播。

B.使用HNet曲線拟合

正如前面提到的,LaneNet的輸出是每條車道的像素集合,在原始的圖檔空間中對這些像素進行多項式拟合不是太理想,因為我們必須使用高階多項式才能夠應付曲線車道。關于這個問題的一個常用解決方法是将圖檔轉成鳥瞰圖視圖,這樣車道之間是彼此平行的,曲線的車道就可以通過2階或者3階的多項式進行拟合。

然而在這種方法中,轉換矩陣

車道線檢測網絡-LaneNet(論文簡述)摘要一介紹二方法三結果四總結

計算一次,并且所有的圖檔都使用同一個轉換矩陣。這樣水準面發生變化的時候會導緻錯誤,那些消失的點會投射到無窮遠,上下移動。

車道線檢測網絡-LaneNet(論文簡述)摘要一介紹二方法三結果四總結

從上圖可以看出,當使用固定的轉換矩陣

車道線檢測網絡-LaneNet(論文簡述)摘要一介紹二方法三結果四總結

的時候(第二行),綠色的點是曲線拟合的就不太準确。

為了解決這個問題,作者訓練了一個神經網絡叫做HNet,這個網絡可以進行端到端的訓練,預測出來的是轉換矩陣

車道線檢測網絡-LaneNet(論文簡述)摘要一介紹二方法三結果四總結

的參數,通過這個轉換矩陣,車道的點可以使用二階或者三階多項式進行拟合。輸入是圖檔,網絡會調整轉換矩陣中的參數以适應水準面的變化,這樣做後車道拟合就會是正确的,參考上圖第三行。

車道線檢測網絡-LaneNet(論文簡述)摘要一介紹二方法三結果四總結

有6個參數,矩陣形式如下

車道線檢測網絡-LaneNet(論文簡述)摘要一介紹二方法三結果四總結

矩陣中的0就是為了限制水準線在轉換後仍然是水準線。

曲線拟合

在對車道的像素

車道線檢測網絡-LaneNet(論文簡述)摘要一介紹二方法三結果四總結

進行曲線拟合之前,需要先用HNet生成的轉換矩陣進行轉換。

給定:

車道線檢測網絡-LaneNet(論文簡述)摘要一介紹二方法三結果四總結

,通過矩陣轉換後得到:

車道線檢測網絡-LaneNet(論文簡述)摘要一介紹二方法三結果四總結

就是

車道線檢測網絡-LaneNet(論文簡述)摘要一介紹二方法三結果四總結

,然後使用最小二乘法進行n階的多項式拟合,得到

車道線檢測網絡-LaneNet(論文簡述)摘要一介紹二方法三結果四總結

,是根據

車道線檢測網絡-LaneNet(論文簡述)摘要一介紹二方法三結果四總結

拟合出的。

我們最終的目标是希望在原圖上的車道點

車道線檢測網絡-LaneNet(論文簡述)摘要一介紹二方法三結果四總結

作為輸入,希望輸出基于原圖的

車道線檢測網絡-LaneNet(論文簡述)摘要一介紹二方法三結果四總結

,那麼可以這樣計算,

車道線檢測網絡-LaneNet(論文簡述)摘要一介紹二方法三結果四總結

然後轉換得到

車道線檢測網絡-LaneNet(論文簡述)摘要一介紹二方法三結果四總結

,然後可以計算

車道線檢測網絡-LaneNet(論文簡述)摘要一介紹二方法三結果四總結

,其中

車道線檢測網絡-LaneNet(論文簡述)摘要一介紹二方法三結果四總結

表示我們不關系這個值。那麼可以得到了

車道線檢測網絡-LaneNet(論文簡述)摘要一介紹二方法三結果四總結

,最後使用逆計算得到基于原圖的

車道線檢測網絡-LaneNet(論文簡述)摘要一介紹二方法三結果四總結

車道線檢測網絡-LaneNet(論文簡述)摘要一介紹二方法三結果四總結

就可以得到

車道線檢測網絡-LaneNet(論文簡述)摘要一介紹二方法三結果四總結

。這個過程也可以從下圖看出來,總的來說就是矩陣計算後曲線拟合,然後矩陣逆計算。

車道線檢測網絡-LaneNet(論文簡述)摘要一介紹二方法三結果四總結

損失函數

給定N個車道的真值點,

車道線檢測網絡-LaneNet(論文簡述)摘要一介紹二方法三結果四總結

,可以通過轉換矩陣計算出

車道線檢測網絡-LaneNet(論文簡述)摘要一介紹二方法三結果四總結

得到

車道線檢測網絡-LaneNet(論文簡述)摘要一介紹二方法三結果四總結

。拟合

車道線檢測網絡-LaneNet(論文簡述)摘要一介紹二方法三結果四總結

這個方程式,使用近似最小二乘法的解決方法可以得到:

車道線檢測網絡-LaneNet(論文簡述)摘要一介紹二方法三結果四總結

這是一個2階拟合的例子。拟合好的多項式可以給出

車道線檢測網絡-LaneNet(論文簡述)摘要一介紹二方法三結果四總結

後得到預測出來的

車道線檢測網絡-LaneNet(論文簡述)摘要一介紹二方法三結果四總結

,同樣通過

車道線檢測網絡-LaneNet(論文簡述)摘要一介紹二方法三結果四總結

可以計算出

車道線檢測網絡-LaneNet(論文簡述)摘要一介紹二方法三結果四總結

,是以loss就是MSE

車道線檢測網絡-LaneNet(論文簡述)摘要一介紹二方法三結果四總結

網絡模型

HNet的網絡模型很簡單,主要是3x3的卷積加上BN加上ReLU,使用maxpooling降維,最後連接配接兩層FC,下圖可以清晰的看到網絡結構

車道線檢測網絡-LaneNet(論文簡述)摘要一介紹二方法三結果四總結

三結果

A.資料

使用tuSimple資料集,3626訓練樣本,2782測試圖檔,拍攝的圖檔中有好的天氣和一般的天氣。圖檔集中有2車道/3車道/4車道和高速公路,拍攝時間也是在一天中的不同時刻。每張圖檔提供了19張前面幀沒有标記的圖檔。标記的資訊是json格式,指明了x坐标和離散化的y坐标。也标記除了目前車道和左右車道,并且希望驗證的時候也可以預測出這個資訊。

精确度衡量:

車道線檢測網絡-LaneNet(論文簡述)摘要一介紹二方法三結果四總結

其中

車道線檢測網絡-LaneNet(論文簡述)摘要一介紹二方法三結果四總結

是标記正确的點,

車道線檢測網絡-LaneNet(論文簡述)摘要一介紹二方法三結果四總結

是真實的點。标記的點和真實的點之間的距離小于一個閥值就認為标記正确。

也可以用FP和FN來衡量精度

車道線檢測網絡-LaneNet(論文簡述)摘要一介紹二方法三結果四總結
車道線檢測網絡-LaneNet(論文簡述)摘要一介紹二方法三結果四總結

是識别錯誤的點,

車道線檢測網絡-LaneNet(論文簡述)摘要一介紹二方法三結果四總結

是識别出來的點,

車道線檢測網絡-LaneNet(論文簡述)摘要一介紹二方法三結果四總結

是漏識别的點,

車道線檢測網絡-LaneNet(論文簡述)摘要一介紹二方法三結果四總結

是gt的所有點。

B.配置

LaneNet

嵌入分支的次元N是4,

車道線檢測網絡-LaneNet(論文簡述)摘要一介紹二方法三結果四總結

,輸入圖檔的尺寸為512x256,使用Adam優化,batchsize為8,學習率為5e-5.

H-Net

使用3階多項式拟合,輸入圖檔尺寸為128x64。使用Adam優化,batchsize為10,學習率為5e-5。

速度

輸入為512x256,嵌入分支的次元N是4,使用3階多項式拟合的條件下檢測算法速度可以達到50FPS,每個階段的時間耗費可以看下表,使用的是NVIDIA 1080Ti的顯示卡

車道線檢測網絡-LaneNet(論文簡述)摘要一介紹二方法三結果四總結

C.實驗

比較

不使用矩陣轉換,使用固定的矩陣轉換和使用HNet學習的矩陣進行轉換之間的誤差比較如下

車道線檢測網絡-LaneNet(論文簡述)摘要一介紹二方法三結果四總結

可以看到使用Hnet學習的矩陣進行轉換後使用三階拟合誤差最小。

tuSimple結果

通過使用LaneNet和3階拟合加上HNet學習轉換矩陣,在tuSimple的比較中可以拿到第四名的位置,與第一名隻相差0.5%,但是并不知道其他成績的預測速度如何。

車道線檢測網絡-LaneNet(論文簡述)摘要一介紹二方法三結果四總結

四總結

這篇文章做作者展示了一種端到端的車道檢測的方法,可以達到50FPS的速度。這個方法有最近的執行個體分割的例子而激發,可以檢測車道數量變化的情況。

為了讓分割出來的車道像素可以用低階多項式進行拟合,訓練了一個以來不同圖檔生成轉換矩陣的網絡,使用這種方式曲線拟合是最優的。能夠很好的适應道路的坡度變化,而達到不錯的精确度。

繼續閱讀