這是CVPR 2015拿到best paper候選的論文。
論文下載地址:Fully Convolutional Networks for Semantic Segmentation
尊重原創,轉載請註明:http://blog.csdn.net/tangwei2014
1.概覽&主要貢獻
提出了一種end-to-end的做semantic segmentation的方法,簡稱FCN。
如下圖所示,直接拿segmentation 的 ground truth作爲監督信息,訓練一個端到端的網絡,讓網絡做pixelwise的prediction,直接預測label map。
2.問題&解決辦法
1)如何做pixelwise的prediction?
傳統的網絡是subsampling的,對應的輸出尺寸會降低,要想做pixelwise prediction,必須保證輸出尺寸。
解決辦法:
(1)對傳統網絡如AlexNet,VGG等的最後全連接層變成卷積層。
例如VGG16中第一個全連接層是25088x4096的,將之解釋爲512x7x7x4096的卷積核,則如果在一個更大的輸入圖像上進行卷積操作(上圖的下半部分),原來輸出4096維feature的節點處(上圖的上半部分),就會輸出一個coarse feature map。
這樣做的好處是,能夠很好的利用已經訓練好的supervised pre-training的網絡,不用像已有的方法那樣,從頭到尾訓練,只需要fine-tuning即可,訓練efficient。
(2)加 In-network upsampling layer。
對中間得到的feature map做bilinear上採樣,就是反捲積層。實現把conv的前傳和反傳過程對調一下即可。
2)如何refine,得到更好的結果?
upsampling中步長是32,輸入爲3x500x500的時候,輸出是544x544,邊緣很不好,並且limit the scale of detail of the upsampling output。
解決辦法:
採用skip layer的方法,在淺層處減小upsampling的步長,得到的fine layer 和 高層得到的coarse layer做融合,然後再upsampling得到輸出。這種做法兼顧local和global信息,即文中說的combining what and where,取得了不錯的效果提升。FCN-32s爲59.4,FCN-16s提升到了62.4,FCN-8s提升到62.7。可以看出效果還是很明顯的。
3.訓練細節
用AlexNet,VGG16或者GoogleNet訓練好的模型做初始化,在這個基礎上做fine-tuning,全部都fine-tuning。
採用whole image做訓練,不進行patchwise sampling。實驗證明直接用全圖已經很effective and efficient。
對class score的卷積層做全零初始化。隨機初始化在性能和收斂上沒有優勢。
4.結果
當然是state-of-the-art的了。感受一下: