EncNet:
Context Encoding for Semantic Segmentation (CVPR2018)
https://arxiv.org/pdf/1803.08904.pdf
PyTorch: https://github.com/zhanghang1989/PyTorch-Encoding
EncNet通過引入了上下文編碼模塊(Context Encoding Module)來捕獲全局上下文信息和突出與場景相關聯的類別信息,這相當於加入場景的先驗知識,類似於attention機制。
特點:
1)利用編碼層捕獲特徵數據作爲全局語義信息;
Encoding Layer:對前面網絡提取出的豐富的特徵使用全連接層FC進行編碼,其中一個編碼分支直接送給SE-loss,進行場景中出現類別的預測;另一個分支對每個類別預測加權的尺度因子,然後這個加權的尺度因子對前面提出的每個通道的類別進行加權,然後再進行後面的上採樣,最終計算loss。
- 在encoder-decoder結構最深層處加入context encoding module;
Featuremap Attention:dense feature map經過一個encoding layer得到context embedding,然後通過FC得到一個classwise的score,作爲權重。
- SE-loss計算全圖分類誤差;
Semantic Encoding loss:在編碼層之上添加了一個帶Sigmoid激活的FC層用於單獨預測場景中出現的目標類別,並學習二進制交叉熵損失。不同於逐像素損失,SE loss 對於大小不同的目標有相同的貢獻,這能夠提升小目標的檢測性能。
Context Encoding Network (EncNet)
- 由於語義編碼模塊與語義編碼損失函數非常的輕量,所以在本文的網絡的第三階段與第四階段分別加了兩個圖 3 的模塊;
2)爲了進一步的提升和規範上下文編碼模塊的訓練,使用了單獨的分離分支用於最小化SE-loss; - 在第3階段的基礎上構建另一個上下文編碼模塊,將SE-Loss最小化作爲額外的正則化;