【語義分割】Decoders Matter for Semantic Segmentation:Data-Dependent Decoding Enables Flexible Feature Agg

Decoders Matter for Semantic Segmentation:Data-Dependent Decoding Enables Flexible Feature Aggregation

https://www.yuque.com/lart/papersgit

image.png

動機

image.png

語義分割領域最經常使用的編解碼方案中, 上採樣是一個重要的環節, 用來恢復分辨率. 經常使用的是, 雙線性插值和卷積的配合. 相較於具備必定的棋盤效應的轉置卷積, 雙線性插值簡單快捷, 並且配合後續卷積, 也能夠實現和轉置卷積相似的效果, 而其餘的方法, 如外圍補零, 則是會引入過多的冗餘無用信息(我的理解, 這個操做在UNet中使用了).github

還有一種方案是擴張卷積爲主的方案, 早期的deeplab設計中使用的. Deeplab: Semantic image segmentation with deep convolutional nets, atrous convolution, and fully connected crfs.
常見的上採樣方式: https://github.com/lartpang/Machine-Deep-Learning/issues/25#issuecomment-448911117算法

以當前最優秀的語義分割網絡deeplabv3+的結構爲例(結合擴張卷積與編解碼結構的方案). 能夠看見, 爲了恢復通過下采樣以後特徵圖, 使用了不少的雙線性插值.安全

爲了進一步提高當前研究的效果水平, 人們的研究通常是兩個方向, 一個是創新, 一個是改進, 固然後者居多. 當前的進步更可能是使用了第二個思路, 可是"改進"的思路卻也是最讓後來的研究者人找到方向的, 也是通常研究者更願意作的事情. 這篇文章, 就作的是改進的工做.網絡

他們把目光放在了這個最多見的上採樣過程上. 文章重點考慮了雙線性插值所帶來的問題: 過簡單的雙線性上採樣的一個缺點是, 其在準確恢復像素預測方面的能力有限. 雙線性上採樣不考慮每一個像素的預測之間的相關性,由於它是數據獨立的.框架

所以,卷積解碼器被須要來產生相對較高分辨率的特徵圖, 以便得到良好的最終預測. 可是這個須要也會致使兩個問題:ide

  1. 編碼的總體步長必須經過使用多個擴張卷積來進行很是大的下降. 代價是更高的計算複雜性和內存佔用,阻礙了大量數據的訓練過程和實時應用的部署. 例如deeplabv3+就很慢. (擴張卷積的主要缺點是計算複雜度和更大的內存需求, 由於這些卷積核的大小以及結果的特徵映射變得更大.)
  2. 解碼器須要融合來自更低層級的特徵. 因爲雙線性上採樣能力的不足, 致使最終預測的精細程度, 主要由更低層級的特徵的分辨率佔據主導地位. 結果, 爲了產生高分辨率預測, 解碼器必須將高分辨率特徵置於低級層次上, 這樣的約束限制縮小了特徵聚合的設計空間, 所以可能致使次優的特徵組合在解碼器中被聚合.

實驗代表,在不考慮特徵映射分辨率約束的狀況下,能夠設計出更好的特徵聚合策略。
雖然當前不少工做已經花費了不少精力來設計更好的解碼器, 但到目前爲止, 它們幾乎都不能繞過對融合特徵的分辨率的限制以及很難更好地進行特徵聚合.函數

貢獻

爲了處理這些問題, 文章提出了一個可學習的"上採樣"模塊: DUpsamling. 來替換被普遍使用的雙線性插值上採樣方法, 恢復特徵圖的分辨率. 來利用分割標籤空間的冗餘, 以及準確的恢復像素級預測. 減小了對卷積解碼器的精確響應的須要. 所以, 編碼器再也不須要過分減小其總體步幅, 從而大大減小整個分割框架的計算時間和內存佔用.性能

image.png

同時, 因爲 DUpsampling 的有效性, 它容許解碼器在合併以前將融合的特徵降採樣到特徵映射的最低分辨率. 這種下行採樣不只減小了解碼器的計算量, 更重要的是它將融合特徵的分辨率和最終預測的分辨率解耦. 這種解耦使解碼器可以利用任意特徵聚合, 從而能夠利用更好的特徵聚合, 從而儘量提升分割性能.學習

最後, DUpsampling能夠經過標準的 1x1 卷積無縫地合併到網絡中, 所以不須要ad-hoc編碼. (也就是不須要專門爲了使用它而設計網絡)

Ad-Hoc,wiki的定義是: 是拉丁文經常使用短語中的一個短語. 意思是「特設的、特定目的的、即席的、臨時的、將就的、專案的」. 一般用來形容一些特殊的、不能用於其它方面的的,爲一個特定的問題、任務而專門設定的解決方案。
https://zhuanlan.zhihu.com/p/24268597

整體而言, 貢獻爲提出了一種新的解碼器方案:

  1. 提出了一種簡單而有效的數據依賴上採樣 (DUpsampling) 方法, 從卷積解碼器的粗略輸出中恢復像素級分割預測, 替換之前方法中普遍使用的效果較差的雙線性.
  2. 利用提出的 DUpsampling, 能夠避免過分減小編碼器的總體步幅, 顯著減小了語義分割方法的計算時間和內存佔用 3 倍左右.
  3. DUpsampling 還容許解碼器將融合的特徵在融合它們以前, 降採樣到特徵圖的最低分辨率.下采樣不只減小了解碼器的計算量, 大大擴大了特徵聚合的設計空間, 使得解碼器可以利用更好的特徵聚合.

重建偏差

image.png

一個重要的觀察是, 圖片的語義分割標籤Y並非獨立同分布的(i.i.d, 也就是互相有依賴), 其中包含着結構信息, 以致於Y能夠被壓縮而不會形成太大的損失. 所以, 這裏不像以前的文章上採樣編碼器卷積輸出F到標籤真值F大小, 文章中選擇壓縮標籤真值Y(HxWxC, 已經通過one-hot編碼處理, 一個像素只有一個通道對應的類別位置標記爲1)到Ywide, 其size和F(Hwide x Wwide x Cwide)一致. 爲了更好的進行這個轉換, 保證轉換中損失更少的信息, 這裏設定一個重建偏差. 壓縮的方法是:

  1. 對於原始的F(HxWxC)使用大小爲rxr的滑窗處理(這有些相似於pooling操做, 可能還會須要padding操做), 提取數據, 得到一個個的(rxrxC)大小的數據塊.
  2. 以後各自reshape爲大小爲1xN(N=rxrxC)的張量
  3. 再進行緯度的壓縮, 從1xN變爲1xCwide, 能夠認爲是一個1x1的卷積操做. 全部的H/r x W/r 個數據塊對應的張量組合獲得最終的壓縮數據Ywide.

感受能夠直接使用kernel_size=stride的卷積操做來實現. 不知道有沒有差別.

關於這個重建偏差(重建偏差也就是要保證變換以後在進行一次反變換後, 與原始信息的差別程度)的計算, 文中給出計算方法:

對於壓縮後的數據(1xCwide的那個張量)的反變換(正變換矩陣與反變換矩陣(又稱爲重建矩陣))後的結果(1xN大小張量)與原始數據(1xN大小的那個張量)使用平方偏差累和進行偏差計算. 優化目標函數:

image.png

這個優化問題, 能夠利用迭代的標準SGD算法優化. 同時, 這裏提到, 使用正交約束, 能夠簡單的使用PCA來獲得這個目標的閉式解.(確實這裏很像PCA降維)

損失函數

在網絡訓練的時候, 要計算損失, 這裏考慮了兩種計算方法, 後者更爲直接:

  1. 使用壓縮後的Ywide做爲真值來監督生成的F, 使用L2損失計算.
    1. image.png
  2. 使用未壓縮的Y來做爲真值來監督恢復分辨率的(softmax(DUpsample(F)))的特徵圖.
    1. image.png

數據依賴上採樣

對於前面的方法2, 使用了 DUpsample(數據依賴上採樣)替換了原始的雙線性上採樣.

這裏提出的方法相同於在空間維度上應用1x1卷積(可使用空間上的1x1卷積實現), 卷積核存儲在W裏, 也就是前面優化目標函數中的反變換矩陣.

因此這裏實際上就沒有用到前面那些, 直接就是使用了提出的這個DUpsample操做, 計算最後的損失便可, 前面的公式都沒用. 沒有體會到做者的意思, 這裏的上採樣濾波器是前面計算好的.
因此說, 主要用到的公式是這裏的第二個損失和前面的目標函數.

除了上面提出的線性上採樣, 文章還使用非線性自編碼器進行了上採樣實驗. 對自編碼器的訓練也是爲了最大限度地減小重建損失, 而且比線性狀況下更通用. 經驗上觀察到最終的**語義預測精度幾乎與使用更簡單的線性重建手段是相同的. 所以文章主要關注與線性重建方法.

image.png

這裏提出的上採樣操做有點相似於超分辨率重建任務中的亞像素卷積的操做. 最簡單的線性形式的 DUpsample 能夠被視爲一個使用了預計算上採樣濾波器的改進 Depth-to-SpaceSub-pixel.

  • Depth-to-Space和Sub-pixel一般爲了不產生太多的可訓練參數致使優化困難, 會使用適度的上採樣比例(例如4)來提高輸入分辨率.
  • 相反, 文中方法中的上採樣濾波器是預先計算的. 若是須要, 上採樣的比例能夠很是大(例如16 或 32).

image.png
亞像素卷積層, 圖片來自: https://blog.csdn.net/antkillerfarm/article/details/79956241

自適應溫度Softmax

雖然能夠經過1x1卷積操做實現DUpsampling, 但直接將其合併到框架中會遇到優化困難, 文章認爲, 由於W是利用one-hot編碼後的Y來計算的, 原始softmax和提出的DUpsample的計算, 很難產生較爲銳利的激活.結果致使交叉熵損失在訓練中被卡住, 使得訓練過程收斂很慢.

image.png

爲了解決這個問題, 這裏使用了Hinton著名論文 Distilling the knowledge in a neural network 裏提到的"溫度"的概念. 對softmax添加了一個"溫度"T的參數, 來銳利/軟化softmax的激活.這個參數T能夠再反向傳播中自動學習, 無需調整.
image.png

靈活的集成策略

image.png

對比以往的結構使用的集成策略:

image.png

這裏的F是最終的雙線性上採樣/DUpsample以前的卷積輸出(此時經過這些上採樣能夠獲得最終像素級預測)

先對生成的特徵圖進行上採樣, 再結合較低層級的高分辨率特徵信息. 這樣的設計主要有兩個問題:

  1. f(CNN計算)在上採樣以後計算, 因爲f的計算量依賴於輸入的空間大小, 這樣的安排會致使解碼器計算上的抵效, 此外,計算開銷阻礙瞭解碼器利用低層級的特徵.
  2. 融合的低級特徵的分辨率與F的分辨率相等, 因爲沒法使用雙線性產生最終像素預測, 所以一般約爲最終預測的1/4分辨率. 爲了得到高分辨率預測, 解碼器只能選擇具備高分辨率低級特徵的特徵聚合。

相反, 在提出的框架中, 恢復全分辨率預測的責任在很大程度上已經轉移到DUpsampling.所以, 能夠安全地下采樣要使用的任何級別的低層特徵到最後一個特徵圖Flast的分辨率(特徵圖的最低分辨率), 而後融合這些特性以產生最終的預測. 表示爲:

image.png

文章中使用雙線性下采樣.

這種重排不只使特徵始終以最低分辨率高效計算,並且還使底層特徵 Fi 和最終分割預測的分辨率分離, 容許任何級別的功能進行融合.

在實驗中展現了靈活的特徵融合使機制可以利用更好的特徵融合, 以儘量提升分割性能.

只有在與上述 DUpsampling 合做時, 下采樣低級特徵的方案才能工做. 不然, 性能是由解碼器的incapable上採樣方法的上界所限定的. 這就是爲何之前的方法須要上採樣 低分辨率的高級特徵圖 到融合的低層特徵映射的空間大小.

以前的上採樣後解碼主要是由於上採樣方法會限制住最終的性能, 因此更不能使用下采樣低級特徵的方案, 會使得性能更加被限制.

效果

image.png

image.png

image.png

In order to understand how the fusion works, we visualize the segmentation results with and without low-level features in Fig. 4. Intuitively, the one fusing low-level features yields more consistent segmentation, which suggests the downsampled low-level features are still able to refine the segmentation prediction substantially.

image.png

image.png

image.png

總結

提出了一種靈活、輕便的語義圖像分割方案. 這種新型解碼器採用提出的數據依賴上採樣產生像素預測.

  • 這消除了從底層 CNNs 計算效率低下的高分辨率特徵圖的須要, 並將融合的低級特徵和最終預測的分辨率分離.
  • 這種解耦擴展瞭解碼器特徵彙集的設計空間, 使得幾乎任意的特徵彙集被利用來儘量提升分割性能.
  • 同時, 本文提出的解碼器避免了將低分辨率高級特徵圖向上採樣回高分辨率低層特徵映射的空間大小, 大大下降了解碼器的計算量.

實驗代表, 與以往語義分割方法中普遍使用的普通解碼器相比, 提出的解碼器具備有效性和高效性。最後, 與提出的解碼器的框架達到了最早進的性能, 同時須要比之前的最早進的方法更少的計算.

相關文章
相關標籤/搜索