深度學習之語義分割-SegNet
阿新 • • 發佈:2019-01-05
This core trainable segmentation engine consists of an encoder network, a corresponding decoder network followed by a pixel-wise classification layer.
模型
說明:
- 基礎模型採用VGG16
- 去掉fc層,使得encoder網路更小,更易訓練
- 134M –> 14.7M
- decoder網路將encoder網路中的低層畫素對映到整張影象尺寸
- decoder網路與encoder網路基本完全對成
- 最終,對每一個畫素進行multi-class soft-max分類
- decoder網路進行上取樣的採用pool indices
- 沒有增加引數:稀疏,且不需要參與訓練
- 降低記憶體:decoder不用儲存encoder中的輸出結果
- 提升了邊界的描繪能力
- 該網路結構可以拓展到任意的encoder-decoder網路結構
- 基礎模型採用VGG16
效果:
注意
- Max-pooling可以提高平移不變形:
- Max-pooling is used to achieve translation invariance over small spatial shifts in the input image.
- 降取樣是的feature層上的每一個點對應原圖上一塊很大的區域
- Sub-sampling results in a large input image context (spatial window) for each pixel in the feature map.
- 多次的max-pooling和降取樣雖然能夠提高模型的分類能力,但是缺丟失了影象中的空間邊界能力
- While several layers of max-pooling and sub-sampling can achieve more translation invariance for robust classification correspondingly there is loss of spatial resolution of the feature maps.
- 特徵層上的空間位置關係對於分割任務非常重要
- The increasingly lossy (boundary detail) image representation is not beneficial for segmentation where boundary delineation is vital
- Max-pooling可以提高平移不變形:
效果分析
實驗1:
對比不同的decoder模型
- 說明
- 採用雙線性插值進行上取樣,固定引數【不參與學習】
- 採用max-pooling indices進行上取樣【不參與學習】
- 採用雙線性插值進行上取樣,引數參與學習
- 雙線性插值進行初始化
- SegNet-Basic採用類似FCN的decoder方式
- 4個encoder,4個decoder
- upsample上取樣採用下采樣downsample的indices
- encoder/decoder上,每一個conv之後接一個BN操作。
- 對於decoder網路,conv中沒有采用ReLU非線性啟用函式和biases偏置
- 採用7x7卷積核,則VGG layer4的感受野為106x106
- decoder卷積的filter個數與對一個的encoder卷積filter個數相同
- SegNet-SingleChannelDecoder
- decoder卷積核個數位1
- FCN-Basic-NoDimReduction
- 最終的維度和對應的encoder相對應
- 結論還是FCN-Basic-NoDimReduction的效果最好
總結
該論文提出了一種encoder-decoder的分割方法,相比較FCN,該方法採用了max-pooling indices進行上取樣,有效的降低了upsample中的記憶體使用問題。