DFANet: 實時語義分割的深度特徵聚集

DFANet: 實時語義分割的深度特徵聚集

DFANet: Deep feature aggrgation for real-time semantic segmention

摘要

【本文工作】本文針對資源限制的語義分割介紹了一個極其高高效的CNN結構,名字叫DFANet。我們提出的網絡從一個單個的輕量骨架開始,通過子網絡和子層級聚集了鑑別性的特徵。基於這些多尺度的特徵傳播,DFANet顯著減少了參數數量,但是仍然獲得了足夠的感受野,以並提升了模型的學習能力,在速度和分割性能上達到了平衡。

【結果】在Cityscapes和CamVid數據集上的實驗展示了DFANet比現存的最先進的實時語義分割,少了8倍的浮點運算次數,速度變成原來的兩倍,同時提供了可以比較的準確率。特別的,在Cityscaps測試數據集上取得了70.3%的平均交併比,僅僅使用了1.7GFLOPS,在一臺NVIDIA Titan X上速度爲160fps。當預測一個更高的分辨率圖像時,取得了71.3%的平均交併比,算力是3。4GFLOPs。

引言

背景、之前工作的缺點

1、語義分割重要,應用很多,速度和準確率是需要解決的問題。

2、之前的實時分割取得了好結果,但是U型結構在高分辨率上花費時間很多。減少時間的工作:限制輸入圖像的大小、修建網絡的冗餘特徵圖),但是損失了空間細節和邊界、小物體。另外, 多分支網絡結合空間細節和上下文信息,但是同時也限制了速度,分值之間的相互獨立性限制了模型的學習能力。

3、空間金字塔池化獲取高層上下文,計算消耗很多,可以考慮特徵重用。

本文工作

兩個跨特徵級別的特徵聚集策略:

  1. 重用backbone提取的高層特恆
  2. 組合不同階段的特徵,提升特徵的表現能力。

細節上:

  1. 復現輕量級的backbone驗證方法的有效性。

提出的Deek Feature Aggregation Network, DFANet有三個部分:

  1. 輕量級的骨架 —> 修改的Xception+全連接的注意力機制
  2. 子網絡聚集單元 —> 上採樣高層特恆,精校預測結果。coarse-to-fine
  3. 子階段聚集單元

最後一個輕量級的解碼器和上線性插值生成分割結果。

網絡結構:

image-20190918102437109

圖中:

Cconcatenation連接,×N\times N代表N個上採樣操作。

貢獻

  1. 實時、低算量語義分割的新紀錄
  2. 新的網絡結構:內部連接的編碼流,結合了高層上下文。
  3. 一個最大化感受野更好的方法、多次精校高層特徵但是計算量增加很少。
  4. 修改了Xception,給它增加了一個FC,增大感受野,但是計算量增加不大。

相關工作

實時分割

  • SegNet:小結構和池化索引技術減少網絡參數
  • ENet:減少下采樣次數,但是感受野太少。
  • ESPNet:新的空間金字塔單元
  • ICNet:多尺度圖片作爲輸入
  • BiSeNet:引入空間路徑、語義路徑

深度可分離卷積(Depthwise Separable Convolution)

深度卷積後加一個point卷積,具體可看 這裏

高層特徵

在通常的編碼器-解碼器結構中,編碼器輸出的高層特徵描繪了輸入圖片的語義信息。

使用更多上下文信息:

  • PSPNet
  • DeepLab
  • PAN

特徵金字塔結果很有用,對多尺度的不同尺寸的物體很有用,但是計算資源消耗很大。

上下文編碼

  • SE-Net:特徵級別的注意力機制。
  • EncNet:上下文編碼

特徵聚集

  • RefineNet:複雜的精校單元
  • DLA:實現密集連接。

深度特徵聚集網絡

觀察

image-20190918104023745

比較了常見的網絡,作者的做法:

  1. 用上採樣替換高層操作,用另一個子網絡替換精校特徵圖。

深度特徵聚集

1、子網絡聚集

就是不停地輸入到骨架中。

骨架定義爲y=Φ(x)y=\Phi(x)Φn\Phi_n的輸出馬上作爲Φn+1\Phi_{n+1}的輸入,子網絡聚集可以公式化爲:
Y=Φn(Φn1(Φ1(X))) Y = \Phi_n(\Phi_{n-1}(\cdots \Phi_1(X)))
2、子階段聚集

關注於在多個網絡之間的階段級別上融合語義和空間信息。

U型結構中的skip-connection可以緩輕由於深度增加導致的準確率降低。

作者的做法:在編碼時組合特徵,在相同深度的子網絡中融合不同階段。就是說,一個階段的輸出,作爲下一個階段子網絡的輸入(這不是很顯而易見的嗎?你特徵出來之後,不輸入到下一個層級,還能放哪去?還需要偏偏搞出一個"子階段"聚集。。)

階段處理定義爲Φni\Phi_n^i,子網絡聚集就可以公式化爲:
xni={xni1+ϕni(xni1) if n=1[xni1,xn1i]+ϕni([xni1,xn1i]) otherwise  x_{n}^{i}=\left\{\begin{array}{ll}{x_{n}^{i-1}+\phi_{n}^{i}\left(x_{n}^{i-1}\right)} & {\text { if } n=1} \\ {\left[x_{n}^{i-1}, x_{n-1}^{i}\right]+\phi_{n}^{i}\left(\left[x_{n}^{i-1}, x_{n-1}^{i}\right]\right)} & {\text { otherwise }}\end{array}\right.
ii代表階段的索引。大概意思就是,第一層可以直接用上一個階段的輸入,加上階段處理後的輸出。

其它層則是用了殘差連接,concatenation

網絡結構

編碼器:Xception(骨架)

解碼器:上採樣單元(骨架+雙線性插值)

結論

本文中,我們提出深度特徵聚集以處理高分辨率圖上的實時語義分割問題。我們的聚集策略李娜接了一系列的卷積層,以高效地精校高層和低層特徵,而不需要任何特殊設計的操作。分析和在cityscapes、camvid上的定量實驗結果表明了我們方法的有效性。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章