深度影象分割 — Fully Convolutional Networks for Semantic Segmentation

深度影象分割 — Fully Convolutional Networks for Semantic Segmentation

CVPR2015
PAMI 2016
Fully Convolutional Networks for Semantic Segmentation
Code: https://github.com/shelhamer/fcn.berkeleyvision.org

本文是將深度學習用於影象分割的經典之作。
實現影象端對端訓練,畫素到畫素的分割。

核心思想就是逐層利用不同尺寸的卷積特徵圖資訊獲得更好的分割效果。

看圖說話吧
這裡寫圖片描述
上圖上半部分是傳統的卷積網路對影象塊進行的分類,會對每個類別給出一個概率。上面最後一個數字是 1000, 說明有 1000 類物體。

上圖下半部分是對整個影象進行卷積,得到整幅影象貓的概率圖。

本文首先將全連結層用卷積層代替,得到全卷積網路,這樣可以實現任意尺寸影象的輸入,輸出對應大小的尺寸。
具體可以參考以前的博文 CNN網路中的 1 x 1 卷積是什麼?

我們知道卷積網路的輸出是 coarse outputs,因為經過了降取樣,導致尺寸減小了很多倍。對於影象分割問題,我們需要進行畫素級別的分類 dense predictions,一個很直接的方法就是通過上取樣 Upsampling 得到和輸入影象尺寸一樣大小的輸出。這個上取樣我們可以通過卷積來實現,類似於文獻【19】的 deconvolution networks。尺寸問題是解決了,但是直接放大影象肯定導致影象模糊,所以需要在每放大一次時,就應該進行分割微調一次。分割微調的依據是什麼了,考慮到卷積網路中提取出的不同尺度的特徵圖,我們可以在輸出結果 Upsampling 某一尺寸時,根據對應尺寸卷積特徵圖對outputs 進行分割微調。

這裡寫圖片描述

如上圖所示,經過一系列的卷積和池化,我們得到一個coarse outputs,對應的是 conv7的輸出,我們將這個 outputs 通過上取樣放大兩倍,這個時候 outputs 的尺寸是和 pool4 conv5 尺寸是一樣的,我們可以參考這個尺寸特徵圖的資訊對這個放大的 outputs 進行微調,獲得更多細節資訊,在這個尺寸的分割效果就會更好些。類似我們可以在這個基礎上在放大兩倍,重複上面的工作,引入更好的特徵圖資訊,得到更好的分割結果。
將上述思想用實現就是本文提出的 Skip Architectures

不同的放大倍數,決定了引入多少特徵圖,其結果也有所不同
這裡寫圖片描述

這裡寫圖片描述

特徵融合細節參考:
http://blog.csdn.net/zhangjunhit/article/details/75635476