1. 程式人生 > >《18.Context Encoding for Semantic Segmentation》

《18.Context Encoding for Semantic Segmentation》

動機

  • 擴張卷積存在的問題

    • 先進的語義分割系統通常是基於FCN架構,採用的深度卷積神經網路受益於從不同圖片中學習到的豐富的物件類別資訊和場景語義。
    • CNN通過堆疊帶非線性啟用和下采樣的卷積層能夠捕獲帶全域性接受野的資訊表示,為了克服下采樣帶來的空間解析度損失,最近的工作使用擴張卷積策略從預訓練模型上產生密集預測。
    • 然而,此策略依然會將畫素從全域性場景上下文相隔開,這會導致畫素錯誤分類。 如錯誤的將窗格分為門。
  • 金字塔結構存在的問題

    • 近期的工作使用基於金字塔多解析度表示擴大接受野。例如,PSPNet採用的PSP模組將特徵圖池化為不同尺寸,再做聯接上取樣;

    • DeepLab採用ASPP模組並行的使用大擴張率卷積擴大接受野。這些方法都有提升,但是這對上下文表示都不夠明確,這出現了一個問題: 捕獲上下文資訊是否等同於增加接受野大小?

    • 如果我們能夠先捕獲到影象上下文資訊(例如這是臥室),然後,這可以提供許多相關小型目標的資訊(例如臥室裡面有床、椅子等)。這可以動態的減少搜尋區域可能。說白了,這就是加入一個場景的先驗知識進去,這樣對圖片中畫素分類更有目的性。依照這個思路,可以設計一種方法,充分利用場景上下文和存在類別概率的之間的強相關性,這樣語義分割會就容易很多。

  • 通過傳統影象方法引入影象全域性上下文資訊

    • 經典的計算機視覺方法具有捕獲場景上下文語義的優點。例如SIFT提取密集特徵或濾波器組響應密集提取影象特徵。學習一個視覺字典,
    • BoW,VLAD和Fish Vector通過類別編碼描述特徵統計資訊。
    • 經典表示通過捕獲特徵統計資訊編碼全域性資訊,雖然手工提取特徵通過CNN方法得到了很大的改進,但傳統方法的總體編碼過程更為方便和強大。
  • 最近有工作在CNN框架中推廣傳統編碼器方法獲得了極大的進步,Zhao等人引入了一個編碼層將整個字典學習和殘差編碼管道整合到CNN層中用於捕獲無序表示(orderless)。這在紋理分類任務上達到了state-of-the-art,在本文中,使用擴充套件編碼層用於捕獲全域性特徵的統計資訊用於理解上下文語義。

  • Featuremap Attention and Scaling

    • 逐通道式的特徵attention是受到其他工作啟發。 Spatial Transformer Network在沒有額外監督的條件下在網路內部學習了空間變換。Batch Normalization 是的小批量資料的均值和方差作為網路的一部分做標準化,成功的允許使用更大的學習率,並使得網路對初始方法不是那麼敏感。

    • 最近在風格轉換方面的工作處理特徵圖均值和方差或二階統計資訊用於啟動網路內部風格變換。SE-Net探究了跨通道資訊以學習逐通道attention。

    • 受這些方法啟發,論文使用以編碼語義預測特徵圖通道的放縮因子,這提供了在給定場景上下文的情況下強調個別特徵圖的機制。

創新

  1. 引入了上下文編碼模組,該單元用於捕獲全域性場景上下文資訊和選擇性的突出於類別相關的特徵圖。

    • 集成了語義編碼損失(Semantic Encoding Loss,SE-loss)。 舉例來講,我們不考慮車輛出現在臥室的可能性,在現有標準的訓練過程使用的是畫素分割損失,這不強調場景的全域性資訊。
    • 我們引入語義編碼損失(SE-loss)可進一步規範網路訓練,讓網路預測能夠預測場景中物件類別的存在,強化網路學習上下文語義。
    • 與逐畫素的損失不同,SE-Loss對於大小不同的物體有相同的貢獻,在實踐中這能夠改善識別小物體的表現,這裡提出的上下文編碼模組和語義編碼損失在概念上是直接的並且和現存的FCN方法是相容的。
  2. 設計了一個新的語義分割架構Context Encoding Network (EncNet),EncNet通過上下文編碼模組增強了預訓練的ResNet。

  3. 論文采用了擴張卷積策略,在PASCAL VOC 2012 上達到了85.9% mIoU,PASCAL-Context上達到了51.7%;單模型的EncNet-101在ADE20K上達到了0.5567,這超過了2017年冠軍。

    • 此外,論文還CIFAR-10上測試了上下文編碼模組的功能,使用上下文編碼模組能夠顯著的提升淺層網路的效能,在只有3.5M引數的條件下達到了3.96%的錯誤率。 同時論文釋出了完整的系統實現,包括多GPU同步BN和記憶體高效編碼層。

方法

Context Encoding Module

  • 結構:

這裡寫圖片描述

  • Context Encoding:

    • 對於預訓練網路,使用編碼層捕獲特徵圖的統計資訊作為全域性上下文語義,將編碼層的輸出作為編碼語義(encoded semantics),為了使用上下文,預測了一組放縮因子(scaling factors)用於突出和類別相關的特徵圖。編碼層學習帶有上下文語義的固有字典,輸出豐富上下文資訊的殘差編碼。 這裡簡單描述一下編碼層工作。

1541748401604

  • Featuremap Attention:

    • 為了使用編碼層捕獲的編碼語義,我們預測一組特徵圖的放縮因子作為迴圈用於突出需要強調的類別。
    • 在編碼層端上使用FC層,使用sigmoid作為啟用函式,預測特徵圖的放縮因子γ=δ(We),其中W表示層的權重,δ表示sigmoid啟用函式。模組通過Y=X⊗γ得到輸出,每個通道在特徵圖XX和放縮因子γ之間做逐畫素相乘。
    • 這樣的方法受SE-Net等工作的啟發,即考慮強調天空出現飛機,不強調出現車輛的可能性。
  • Semantic Encoding Loss:

    • 標準的語義分割訓練過程,使用的是逐畫素的交叉熵,這將畫素獨立開學習。這樣網路在沒有全域性上下文情況下可能會難以理解上下文,為了規範上下文編碼模組的訓練過程,使用Semantic Encoding Loss (SE-loss)在新增少量額外計算消耗的情況下強制網路理解全域性語義資訊。
    • 在編碼層之上添加了一個帶Sigmoid啟用的FC層用於單獨預測場景中出現的目標類別,並學習二進位制交叉熵損失。不同於逐畫素損失,SE loss 對於大小不同的目標有相同的貢獻,這能夠提升小目標的檢測效能。

Context Encoding Network (EncNet):

  • 在提出的上下文編碼模組基礎上,基於使用了擴張策略的預訓練ResNet構建了Context Encoding Network (EncNet)。 細節如下圖所示

在這裡插入圖片描述

  • 擴張卷積策略: 在stage3使用了擴張率為2,stage4擴張率為4。
  • 為了進一步的提升和規範上下文編碼模組的訓練,使用了單獨的分離分支用於最小化SE-loss,該Loss採用已編碼的語義作為輸入並預測物件類別的存在。
  • 因為上下文模組和SE-loss是輕量級的,論文在stage3上端新增另一個上下文編碼模組用於最小化SE-loss作為額外的正則化,這類比於PSPNet的輔助分支但比那個輕量了許多。
  • SE-loss的ground truth是從真實的ground-truth分割mask上直接生成的。
  • 上下文編碼模組插入到現存的CNN模型上是不需要額外的修正和監督的。

資料集

  • voc: 85.9% mIoU

實驗

  • 在voc上的表現,結果對比

1541750524840

  • 實驗效果

1541750611699