今天為大家推薦一篇 CVPR2019 關于語義分割的文章 Decoders Matter for Semantic Segmentation: Data-Dependent Decoding Enables Flexible Feature Aggregation,該文章提出了一種不同于雙線性插值的上采樣方法,能夠更好的建立每個像素之間預測的相關性。得益于這個強大的上采樣方法,模型能夠減少對特征圖分辨率的依賴,能極大的減少運算量。該工作在 PASCAL VOC 數據集上達到了 88.1% 的 mIOU,超過了 DeeplabV3 + 的同時只有其 30% 的計算量。
論文傳送門:https://arxiv.org/abs/1903.02120
1. Introduction
在之前的語義分割方法中,雙線性插值通常作為其最后一步來還原特征圖的分辨率,由于非線性差值不能建立起每個像素的預測之間的關系,因此為了得到精細的結果,對特征圖的分辨率要求較高,同時帶來了巨額的計算量。
為了解決這個問題,本工作提出了Data-dependent Up-sampling (DUpsample),能夠減少上采樣操作對特征圖分辨率的依賴,大量的減少計算量。同時得益于 DUpsample, Encoder 中的 low-level feature 能夠以更小的運算量與 Decoder 中的 high-level feature 進行融合,模型結構如下所示:
我們可以看到,該網絡將傳統的非線性插值替換成 DUpsample,同時在 feature fuse 方面,不同于之前方法將 Decoder 中的特征上采樣與 Encoder 特征融合,本工作將 Encoder 中的特征下采樣與 Decoder 融合,大大減少了計算量 ,這都得益于 DUpsample。
2. Our Approach
之前的語義分割方法使用下列公式來得到最終的損失:
其中 Loss 通常為交叉熵損失,F 為特征圖,Y 為 ground truth,由于雙線性插值過于簡單,對特征圖 F 的分辨率較高,因此引入了大量的計算。一個重要的發現是語義分割輸入圖像的 label Y 并不是 i.i.d 的,所以 Y 可以被壓縮成 Y′,我們令, 并將 Y 劃分成的子窗口,每個子窗口的大小為 r×r,接著我們將每個子窗口拉伸成向量,其中,隨即我們將向量 v 壓縮成低維向量 x,我們使用線性投影來完成,最后,我們有:其中,用來將 v 壓縮成 x,為 reconstruction matrix, v′為重建后的 v,我們可以用壓縮后的向量 x 組合成 Y′.
矩陣 P 和矩陣 W 可以通過最小化下列式子得到:
我們可以使用梯度下降,或者在正交約束的條件下使用 PCA 求解。
使用壓縮后的 Y′為目標,我們可以使用下列損失函數來預訓練網絡:
另一種直接的方法是在 Y 空間計算 loss,也就是并非將 Y 壓縮到 Y′, 我們可以將 F 使用 W(上面預訓練得到的)上采樣然后計算損失,公式如下:
其中以兩倍為例,DUpsample 的操作如下圖所示:
我們可以用 1X1 卷積來完成上述的權重與特征相乘的過程。但是當我們將這個模塊嵌入到網絡時會遇到優化問題。因此我們使用 softmax with temperature 函數來解決這個問題:
。
我們發現 T 可以使用梯度下降學習得到,這樣減少了調試的麻煩。
有大量的工作說明,與 low-level features 結合可以顯著的提升分割的精度,其做法如下:
f 是在上采樣之后的卷積操作,其計算量依賴于特征圖的空間大小,這樣做會顯著增加計算量。得益于 DUpsample,我們可以使用下列操作來減少計算量:
這樣做不僅保證了在低分辨率下的有效性,而且減少了計算量,同時允許任意 level feature 的融合。
只有使用了 DUpsample,上述操作才變得可行,否則語義分割的精度會被雙線性插值限制。
3. Experiments
本次實驗使用以下兩種數據集:PASCAL VOC 2012 和 PASCAL Context benchmark。我們使用 ResNet-50 或 Xception-50 作為我們的 backbone,具體訓練細節詳見論文。
首先我們設計實驗說明雙線性插值的上限遠遠低于 DUpsample。首先我們搭建一個簡易網絡實現 auto-encoder,其中上采樣方式分別使用雙線性插值與 DUpsample, 輸入分別為 ground_truth,得到下表中的 mIOU*,這個指標代表上采樣方法的上限。同時我們使用 ResNet50 作為主干網絡,輸入為 raw image 去實現語義分割,得到下表中的 mIOU:
通過上表我們可以發現:
1) 在相同條件下,DUpsampling 效果優于 bilinear。
2)DUpsampling 在 output_stride=32 的情況下效果與 bilinear 在 output_stride=16 的情況下結果相當。
接下來我們設計實驗說明融合不同的 low-level 特征對結果的影響,如下表所示:
值得說明的是,并不是所有與 low-level feature 的融合都會提升結果,例如 conv1_3,因為其結果不夠魯棒。因此和什么 low-level feature 相結合對語義分割的結果有很大的影響。
接下來我們設計實驗與雙線性插值進行比較:
可以看到我們的方法優于傳統的雙線性插值上采樣方法。同時我們驗證了不同的 softmax 對結果的影響,在沒有使用 softmax with tenperature 的情況下只有 69.81 的 mIOU(這里沒設置消融實驗有些疑惑,感覺不同的 softmax 對實驗結果影響挺大的)。
最后將我們的方法與最新的模型進行比較,結果如下(分別為 PASCAL VOC 與 PASCAL context):
我們的方法在只用 deeplabv3+ 30% 的計算量的情況下,超越了當前所有的方法。
總的來說,我覺得這個論文提出的想法很有趣,是一篇很有 insight 的論文。
由于論文現在還沒有開源,筆者嘗試實現了一下 DUpsample 的操作和網絡:
https://github.com/LinZhuoChen/DUpsampling。
-
函數
+關注
關注
3文章
4304瀏覽量
62428 -
梯度
+關注
關注
0文章
30瀏覽量
10309 -
數據集
+關注
關注
4文章
1205瀏覽量
24641
原文標題:Decoders對于語義分割的重要性 | CVPR 2019
文章出處:【微信號:rgznai100,微信公眾號:rgznai100】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論