【Papers】Robust Lane Detection via Expanded Self Attention 論文解讀

論文題目:Robust Lane Detection via Expanded Self Attention網絡

連接地址:https://arxiv.org/abs/2102.07037ide

文章核心想要解決的是車道線遮擋、缺失、模糊等狀況下的識別精度問題。主要經過一個自注意力模塊,加強網絡對於這部分車道線的關注程度,從而提高效果。函數

1. 概述

1.1 問題定義

這裏的 Lane Detection,檢測的目標是抽象意義上的車道分隔線,更關注全局的幾何特徵;設計

而不是路面上印刷的 Lane Mark,若是目標是 Lane Mark,則不存在遮擋的問題,能看到什麼就識別什麼,目標很是明確,且更關注局部特徵。code

至於爲何把識別目標設定爲 Lane 而非 Lane Mark,我想很重要的一個緣由是,像素級的 Lane Mark 標註成本遠高於用折線段標註的 Lane。目前可用的公開集,也大部分都是 Lane 的形式。orm

1.2 問題分析

相比於其餘更通常化的待識別對象,車道線有不少明顯的特色:對象

  • 細長的外觀形態
  • 很強的透視關係
  • 不一樣目標之間有明顯的相互約束

這些都指向了一個結論,Lane Detection 很是依賴全局信息(global contextual information)。圖片

說到加強全局信息,有如下幾個思路:element

  1. 增大每個輸出像素的感覺野(儘可能覆蓋到全圖尺度),而增大感覺野的方法,好比:get

    • 增長卷積層數,卷積核大小(很影響效率)
    • 使用池化層(近期的網絡設計,不少都經過Conv層的Stride設置來實現降採樣,不多用Pooling)
    • 使用空洞卷積

    但單純增大感覺野的效果實際上是存疑的,由於感覺野是相似一個向外擴散的圓形高斯核,既與圖片的矩形不符,也與車道線的線形不符,效率可能比較低。

  2. 作更充分的多尺度特徵融合,以FPN、PANet、BiFPN這些方法爲主。

  3. 加入直接利用全局信息的模塊,如:

    這些方法通常計算量都不低,實際可以提高的效果與付出的代價之間,須要結合使用場景來考量。

  4. 摒棄CNN的套路,考慮從Transformer/DETR這一路線來解決 Lane Detection, 而問題的關鍵可能在於如何定義要識別的目標。可能的路線包括但不限於:

    • 直接回歸方程參數(與相機內外參強綁定)
    • 將車道線打散成小的線段,檢測線段(相對摺中的方案,與DETR有可比性)
    • 像素級分割(後處理更復雜)

1.3 本文方法

本文中加強全局信息的方法爲,給網絡增長一個 Expanded Self Attention (ESA) 模塊。這個 ESA 模塊利用車道線預測結果的 Confidence, 來指示車道線的清晰程度。

這個模塊不須要對車道線被遮擋部分進行額外的標註,所以稱之爲 Self Attention

2. 具體方法

2.1 ESA模塊

2.1.1 模塊結構

原文關於 ESA 的結構和解釋以下:

image-20210407145821028

一個簡單的理解,分爲 HESAVESA,分別對應水平和垂直方向,輸出特徵尺度分別爲C*H*1C*1*W,並統一擴展成C*H*W,稱之爲 ESA matrix

ESA matrix 做爲一個注意力圖,與主幹網絡輸出的特徵圖進行點乘( element-wise product),獲得注意力加權後的特徵圖。

原文中提到 ESA 爲一個不影響網絡推理速度的方法,所以該模塊應該只存在於訓練過程當中。在執行推理預測的使用環節是不須要的,它的影響已經在訓練環節中做用到了車道線檢測結果的輸出中。

2.1.2 模塊輸出

對於 ESA 的輸出,做者也給出了一個示例:

image-20210407152402548

能夠看到,當線比較清晰時,ESA 的輸出值較高(基本在0.5以上);而車道線被遮擋的部分,對應的 ESA 的輸出值比較低(大體在0~0.25之間)。而不存在車道線的部分(天空),輸出爲0。

2.2 總體模型

2.2.1 模型結果

原文關於網絡模型的結構和解釋以下:

image-20210407150429512

2.2.2 輸出形式

一個簡單的理解,模型爲典型的 Encoder-Decoder 結構,輸出有三個分支:

  • Segment Branch:輸出車道線檢測的分割結果

  • Existence Branch:輸出每一條車道線是否存在的二分類結果

    這裏須要根據車道線位置預設每一條線的編號,這種方式只適合用來刷公開集,沒法解決車輛壓線/換道過程當中的跳變問題,且可識別的車道線數量有上限。

  • ESA Branch:輸出每一條線在水平或者垂直方向上的Confidence,生成 ESA matrix

2.2.3 Loss函數

**ESA matrix ** 分別與 Segment Branch 輸出的特徵圖,以及做爲 Ground-Truth 的特徵圖,進行點乘,生成加權後的特徵圖(weighted probability map / weighted gt map)。

對加權後的 Probability-mapGT-map 計算 ESA loss,再疊加常規的 Segmentation lossExistence loss

ESA loss 形式以下,包括兩項:

image-20210407151630643

  • 第一項爲對兩個特徵圖使用標準的 MSE-loss。
  • 第二項是一個正則項,主要含義是使得 ESA 的輸出均值趨向於 GT-map 均值的一個百分比。根據原文所述,若是不加這個正則項,則 ESA 的輸出永遠是0(由於加權權重爲0,則輸出爲0,loss也就爲0,是最小的)。

2.3 推理效果

原文做者對比了幾種典型的 Lane Detection 方法。從給出的例子來看,對於車道線模糊不清的場景,確實效果有所提高。

image-20210407152113399

具體的量化對比能夠看原文。

3. 問題和思考

3.1 可借鑑處

對於本文提出的方法,我以爲思路上能夠借鑑的地方爲:

常規的路況下,其實各類已有的車道線檢測網絡效果都已經作得比較接近,實際使用中的差異主要體如今各類 Corner Case 上, 而車道線被遮擋/模糊不清,多是最主要得解決的場景。

在模型容量受限的狀況下,應該讓模型的識別能力更多關注到這些比較難處理的場景和部分,天然而然的想法就是引入注意力機制。

Self Attention 做爲一種不須要額外監督信息的 End-to-End 方法,理論上很適合應用在這個場景。

3.2 疑惑之處

截至目前,原做者尚未發佈源碼,只能從文章的描述中去推測一些實現細節。

有一個很關鍵的點,我尚未想通,也沒有在原文中找到解答。

根據原文所述,ESA module 輸出的是車道線識別的 Confidence,即越肯定的地方,輸出越高,這一點也能夠從文中 Figure 4 獲得印證。

將這個輸出做爲注意力通道,對提取的特徵圖進行加權,直覺上感受應該是增強了網絡對於車道線清晰部分的注意力,而非增強了被遮擋區域的注意力。結合文中 Figure 5 的解釋,畫面中部車道線清晰的地方,獲得的 MSE loss 低;而畫面下部車道線模糊的地方,獲得的 MSE loss 高。

那麼,隨着訓練收斂程度的增長,是否會產生這樣的狀況: ESA 的輸出對於車道線清晰的部分,響應愈來愈強烈,致使 ESA loss 愈來愈關注車道線清晰的部分,車道線模糊的部分更加沒有獲得充分的關注和訓練。

image-20210407154335908

個人一種猜想是:

是否在加權過程當中,實際上對 ESA 的輸出進行了取反,即 Confidence 越低的地方,加權的權重越高,從而讓模型更加關注車道線模糊的地方。

但這裏又存在一個問題,即畫面上部天空的位置,是不存在車道線的,ESA 輸出理論上爲0,這樣的話,加權的權重最大,網絡又會關注到天空中不存在車道線的位置。

多是我讀得不夠仔細,沒看到這個關鍵點,也多是我對 Self Attention 這種機制的理解有誤。也許只能等做者放出源碼後,看看實際的實現方式是怎樣的。

相關文章
相關標籤/搜索