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

LyleChen 發表於 2021-04-07

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

連結地址:https://arxiv.org/abs/2102.07037

文章核心想要解決的是車道線遮擋、缺失、模糊等情況下的識別精度問題。主要通過一個自注意力模組,增強網路對於這部分車道線的關注程度,從而提升效果。

1. 概述

1.1 問題定義

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

而不是路面上印刷的 Lane Mark,如果目標是 Lane Mark,則不存在遮擋的問題,能看到什麼就識別什麼,目標非常明確,且更關注區域性特徵。

至於為什麼把識別目標設定為 Lane 而非 Lane Mark,我想很重要的一個原因是,畫素級的 Lane Mark 標註成本遠高於用折線段標註的 Lane。目前可用的公開集,也大部分都是 Lane 的形式。

1.2 問題分析

相比於其他更一般化的待識別物件,車道線有很多明顯的特點:

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

這些都指向了一個結論,Lane Detection 非常依賴全域性資訊(global contextual information)。

說到增強全域性資訊,有以下幾個思路:

  1. 增大每一個輸出畫素的感受野(儘量覆蓋到全圖尺度),而增大感受野的方法,比如:

    • 增加摺積層數,卷積核大小(很影響效率)
    • 使用池化層(近期的網路設計,很多都通過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 這種機制的理解有誤。也許只能等作者放出原始碼後,看看實際的實現方式是怎樣的。