论文阅读笔记:Fully Convolutional Networks for Semantic Segmentation

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



posted on 2017-07-05 21:18  ljbguanli  阅读(1188)  评论(0编辑  收藏  举报