论文阅读:《Fully Convolutional Networks for Semantic Segmentation》CVPR 2015

论文地址:https://arxiv.org/abs/1411.4038

概述

论文最大的贡献是提出了一种端到端(end-to-end)的,像素对像素(pixel-to-pixel)的,基于全卷积神经网络的语义分割方法。输入图片的大小可以是任意的,输出相应大小的结果,这不同于以往的需要对输入神经网络中的图像进行reshape 操作至固定大小的图片。实现全卷积神经网络的关键点在将原来卷积神经网络的最后全连接层改为更大的卷积层,这样得出的直接就是像素级的预测(pixel wise prediction),即每个像素所属的类别。论文拿到CVPR 2015 best paper 候选。

亮点

  • 全连接层变卷积层

论文阅读:《Fully Convolutional Networks for Semantic Segmentation》CVPR 2015_第1张图片

提出了全卷积神经网络的概念,将AlexNet, VGGnet, GoogleNet 等网络最后的全连接层转换为卷积层,好处就是可以输入任意大小的图片。当然,不同的输入大小,对应输出的feature map 的大小也不同。但是这里是对像素级别进行语义分割,因此图片大小并不重要。

将全连接层转换成卷积层,卷积模板的大小就是feature map 的大小,即把全连接网络看做是对整张输入feature map 做卷积。因此最后三层全连接层就是4096 个6*6 的卷积核,4096 个1*1 的卷积核,1000 个1*1 的卷积核。接下来对这1000 个1*1 的卷积核的输出做上采样(upsampling),得到1000 张原图大小的输出,这些输出合并之后得到热图(heat map)。

  • 反卷积做上采样

论文中通过上采样的方法得到dense prediction 有3 种方法:

  • shift-and-stitch:设原图与FCN 所得输出图之间的降采样因子是f,那么对于原图的每个f*f 的区域(不重叠),将输入的像素的x 坐标向右移,y 坐标向下移, 把这个f*f 区域对应的输出作为此时区域中心点像素对应的输出,这样就对每个f*f 的区域得到了f*f 个输出,也就是每个像素都能对应一个输出,所以成为了dense prediction。
  • filter rarefaction:这种方法是方法CNN 网络中的下采样(subsampling)的滤波器尺寸,得到新的滤波器。
    这里写图片描述
    这里s 是下采样的滑动步长,新的滤波器的滑动步长要设置为1,保证下采样没有缩小图片,可以得到dense prediction。
    以上两种方法都没有采用,因为他们是此消彼长的(trade-off),即优势和不足是共存的, 并不能兼顾拥有两种优点。因此, 论文提出用反卷积(deconvolutional)做上采样。
  • 反卷积:反卷积的参数和CNN 的参数一样是在训练FCN 的过程中通过backpropagation 算法学习得到。对中间的feature map 做双线性插值的上采样,得到和原图一样的大小的输出,输出结果为每个像素的分类。

  • 优化方法(refine)
    上采样出来的结果在边缘上的效果不是很好,论文提到采用skip layer 的方法,即在底层减小上采样的步长,得到fine layer(细致的信息)和高层得到的coarse layer(粗糙的信息)做融合,之后再上采样得到输出。这种做法可以兼顾全局(global)和局部(local)的信息,全局信息识别是什么(what),而局部信息识别在哪里(where),这样的做法取得了不错的效果。
    论文阅读:《Fully Convolutional Networks for Semantic Segmentation》CVPR 2015_第2张图片

实现细节

  • 实现流程是在经典的AlexNet 的网络结构conv+pooling+fc+softmax,把fc 全连接层都改为fc-conv 层,在conv+pooling 层使用下采样,在最后一层再增加上采样,本质上通过插值算法补上缺失的部分,得到pixelwise prediction,像素分类的预测结果。
  • 最后一层的channel=4096,经过1*1 的卷积层,变为channel=21 的feature map,然后经过上采样和crop,变为与输入图像相等大小的channel=21 的feature map,也就是上面提到的pixel prediction。
  • 修改网络后训练不是从头开始训练,而是对已有的模型进行fine-tuning(规律性调整),从分类模型中学习到参数,使之应用到语义分割上面。
  • 训练时采用whole image,不进行patchwise sampling,因为采样并没有太大的提升。
  • 对卷积层做全零初始化,随机初始化在性能和收敛上没有太大优势。

实验设计

  • 对比了三种经典的网络,AlexNet,VGG16,GoogleNet,在他们的基础上进行调整,发现VGG16 的效果最好。
    论文阅读:《Fully Convolutional Networks for Semantic Segmentation》CVPR 2015_第3张图片
  • 使用skip layer 方法,设计了不同的步长,对比FCN-32s-fixed, FCN-32s,FCN-16s, FCN-8s,证明最好的dense prediction 组合是8s。
    论文阅读:《Fully Convolutional Networks for Semantic Segmentation》CVPR 2015_第4张图片
  • FCN-8s 和state-of-the-art 的R-CNN,SDS 对比是最优的。
    论文阅读:《Fully Convolutional Networks for Semantic Segmentation》CVPR 2015_第5张图片

总结

优点

  • 训练一个端到端的FCN 模型,利用卷积神经网络,得到较准确的结果,之前基于CNN 的方法都要对输入或者输出进行预处理。
  • 直接使用现有的CNN 网络,如AlexNet, VGG16, GoogleNet,只需在末尾加上up sampling,反卷积参数的学习还是利用CNN 本身的反向传播原理,整张图像进行训练,效率比较高。
  • 不限制输入图片的尺寸,不要求图片集中所有图片都是同样尺寸,只需在最后up sampling 时按原图被sub sampling 的比例缩放回来,最后都会输出一张与原图大小一致的dense prediction map。

不足

如果图片中的主题过大,会得到inconsistent 的效果,当图片比较小的时候,不能检测,容易丢失。

你可能感兴趣的:(语义分割,深度学习与计算机视觉,论文)