論文題目:Robust Lane Detection via Expanded Self Attention網絡
連接地址:https://arxiv.org/abs/2102.07037ide
文章核心想要解決的是車道線遮擋、缺失、模糊等狀況下的識別精度問題。主要經過一個自注意力模塊,加強網絡對於這部分車道線的關注程度,從而提高效果。函數
這裏的 Lane Detection,檢測的目標是抽象意義上的車道分隔線,更關注全局的幾何特徵;設計
而不是路面上印刷的 Lane Mark,若是目標是 Lane Mark,則不存在遮擋的問題,能看到什麼就識別什麼,目標很是明確,且更關注局部特徵。code
至於爲何把識別目標設定爲 Lane 而非 Lane Mark,我想很重要的一個緣由是,像素級的 Lane Mark 標註成本遠高於用折線段標註的 Lane。目前可用的公開集,也大部分都是 Lane 的形式。orm
相比於其餘更通常化的待識別對象,車道線有不少明顯的特色:對象
這些都指向了一個結論,Lane Detection 很是依賴全局信息(global contextual information)。圖片
說到加強全局信息,有如下幾個思路:element
增大每個輸出像素的感覺野(儘可能覆蓋到全圖尺度),而增大感覺野的方法,好比:get
但單純增大感覺野的效果實際上是存疑的,由於感覺野是相似一個向外擴散的圓形高斯核,既與圖片的矩形不符,也與車道線的線形不符,效率可能比較低。
作更充分的多尺度特徵融合,以FPN、PANet、BiFPN這些方法爲主。
加入直接利用全局信息的模塊,如:
這些方法通常計算量都不低,實際可以提高的效果與付出的代價之間,須要結合使用場景來考量。
摒棄CNN的套路,考慮從Transformer/DETR這一路線來解決 Lane Detection, 而問題的關鍵可能在於如何定義要識別的目標。可能的路線包括但不限於:
本文中加強全局信息的方法爲,給網絡增長一個 Expanded Self Attention (ESA) 模塊。這個 ESA 模塊利用車道線預測結果的 Confidence, 來指示車道線的清晰程度。
這個模塊不須要對車道線被遮擋部分進行額外的標註,所以稱之爲 Self Attention。
原文關於 ESA 的結構和解釋以下:
一個簡單的理解,分爲 HESA 和 VESA,分別對應水平和垂直方向,輸出特徵尺度分別爲C*H*1
和C*1*W
,並統一擴展成C*H*W
,稱之爲 ESA matrix。
ESA matrix 做爲一個注意力圖,與主幹網絡輸出的特徵圖進行點乘( element-wise product),獲得注意力加權後的特徵圖。
原文中提到 ESA 爲一個不影響網絡推理速度的方法,所以該模塊應該只存在於訓練過程當中。在執行推理預測的使用環節是不須要的,它的影響已經在訓練環節中做用到了車道線檢測結果的輸出中。
對於 ESA 的輸出,做者也給出了一個示例:
能夠看到,當線比較清晰時,ESA 的輸出值較高(基本在0.5以上);而車道線被遮擋的部分,對應的 ESA 的輸出值比較低(大體在0~0.25之間)。而不存在車道線的部分(天空),輸出爲0。
原文關於網絡模型的結構和解釋以下:
一個簡單的理解,模型爲典型的 Encoder-Decoder 結構,輸出有三個分支:
Segment Branch:輸出車道線檢測的分割結果
Existence Branch:輸出每一條車道線是否存在的二分類結果
這裏須要根據車道線位置預設每一條線的編號,這種方式只適合用來刷公開集,沒法解決車輛壓線/換道過程當中的跳變問題,且可識別的車道線數量有上限。
ESA Branch:輸出每一條線在水平或者垂直方向上的Confidence,生成 ESA matrix。
**ESA matrix ** 分別與 Segment Branch 輸出的特徵圖,以及做爲 Ground-Truth 的特徵圖,進行點乘,生成加權後的特徵圖(weighted probability map / weighted gt map)。
對加權後的 Probability-map 和 GT-map 計算 ESA loss,再疊加常規的 Segmentation loss 和 Existence loss。
ESA loss 形式以下,包括兩項:
原文做者對比了幾種典型的 Lane Detection 方法。從給出的例子來看,對於車道線模糊不清的場景,確實效果有所提高。
具體的量化對比能夠看原文。
對於本文提出的方法,我以爲思路上能夠借鑑的地方爲:
常規的路況下,其實各類已有的車道線檢測網絡效果都已經作得比較接近,實際使用中的差異主要體如今各類 Corner Case 上, 而車道線被遮擋/模糊不清,多是最主要得解決的場景。
在模型容量受限的狀況下,應該讓模型的識別能力更多關注到這些比較難處理的場景和部分,天然而然的想法就是引入注意力機制。
而 Self Attention 做爲一種不須要額外監督信息的 End-to-End 方法,理論上很適合應用在這個場景。
截至目前,原做者尚未發佈源碼,只能從文章的描述中去推測一些實現細節。
有一個很關鍵的點,我尚未想通,也沒有在原文中找到解答。
根據原文所述,ESA module 輸出的是車道線識別的 Confidence,即越肯定的地方,輸出越高,這一點也能夠從文中 Figure 4 獲得印證。
將這個輸出做爲注意力通道,對提取的特徵圖進行加權,直覺上感受應該是增強了網絡對於車道線清晰部分的注意力,而非增強了被遮擋區域的注意力。結合文中 Figure 5 的解釋,畫面中部車道線清晰的地方,獲得的 MSE loss 低;而畫面下部車道線模糊的地方,獲得的 MSE loss 高。
那麼,隨着訓練收斂程度的增長,是否會產生這樣的狀況: ESA 的輸出對於車道線清晰的部分,響應愈來愈強烈,致使 ESA loss 愈來愈關注車道線清晰的部分,車道線模糊的部分更加沒有獲得充分的關注和訓練。
個人一種猜想是:
是否在加權過程當中,實際上對 ESA 的輸出進行了取反,即 Confidence 越低的地方,加權的權重越高,從而讓模型更加關注車道線模糊的地方。
但這裏又存在一個問題,即畫面上部天空的位置,是不存在車道線的,ESA 輸出理論上爲0,這樣的話,加權的權重最大,網絡又會關注到天空中不存在車道線的位置。
多是我讀得不夠仔細,沒看到這個關鍵點,也多是我對 Self Attention 這種機制的理解有誤。也許只能等做者放出源碼後,看看實際的實現方式是怎樣的。