论文阅读笔记: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的了。感受一下: