論文閱讀筆記:Fully Convolutional Networks for Semantic Segmentation

This is bill發表於2019-01-20

這是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的了。感受一下:

相關文章