这是CVPR 2015拿到best paper候选的论文。
论文下载地址:Fully Convolutional Networks for Semantic Segmentation
尊重原创,转载请注明:http://blog.csdn.net/tangwei2014
提出了一种end-to-end的做semantic segmentation的方法,简称FCN。
如下图所示,直接拿segmentation 的 ground truth作为监督信息,训练一个端到端的网络,让网络做pixelwise的prediction,直接预测label map。
传统的网络是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的前传和反传过程对调一下即可。
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。可以看出效果还是很明显的。
用AlexNet,VGG16或者GoogleNet训练好的模型做初始化,在这个基础上做fine-tuning,全部都fine-tuning。
采用whole image做训练,不进行patchwise sampling。实验证明直接用全图已经很effective and efficient。
对class score的卷积层做全零初始化。随机初始化在性能和收敛上没有优势。
当然是state-of-the-art的了。感受一下: