Fully Convolutional Networks for Semantic Segmentation(FCN论文剖析)

Abstract

  • 使用“全卷积”网络,可以处理任何尺寸的输入,得到对应大小尺寸的输出。
  • 将之前的分类网络(AlexNet、VGGNet和GooLeNet)转化成全卷积神经网络(FCN),并通过模型微调将其学习表现能力转移到分割任务中。
  • 取得了当时PASCAL VOC最好的成绩,并且推理的速度较快。

1. Introduction

  • 卷积网络正在推动信息技术的进步。卷积神经网络不仅改进了全图分类,而且在结构化输出的local任务上也取得了进展。这些进展包括边界盒对象检测,局部的精细化划分。[存疑问]
  • 从粗推理到细推理的自然下一步是对每个像素进行预测。之前的方法使用卷积神经网络进行语义分割,其中每个像素都用类型框进行标记,但有一些不足之处。
    图一

$$图1:完全卷积网络(FCN)可以有效地学习对每个像素进行密集预测,比如语义分段$$

  • 我们证明了一个完全卷积网络(FCN)在语义分段上经过端到端、像素到像素的训练,在没有进一步加工的情况下超越了当前的水平。据我们所知,这是第一次对FCN进行端到端(1)像素预测训练和(2)超级视前训练。现有网络的全卷积版本可以预测任意大小输入的密集输出。学习和推理都是通过密集的前馈计算和反向传播来完成的。网络内的上采样层使像素级的预采样和学习成为可能。
  • 我们证明了一个完全卷积网络(FCN)在语义分段上经过端到端、像素到像素的训练,在没有进一步加工的情况下超越了当前的水平。据我们所知,这是第一次对FCN进行端到端(1)像素预测训练和(2)超级视前训练。现有网络的全卷积版本可以预测任意大小输入的密集输出。学习和推理都是通过密集的前馈计算和反向传播来完成的。网络内的上采样层使像素级的预采样和学习成为可能。
  • 这种方法是有效的,渐近地和大致地排除了在其他工作中复杂操作的需要。Patchwish训练很常见,但是不如FCN的训练效率有效率。我们的方案不使用预处理和后处理的复杂操作:superpixels,proposals等算法。我们的模型将最近在分类方面的成功转化为像素级别预测,方法是将分类使用的网络重新改变为完全卷积和并且对模型微调,从它们的习得表示形式转变为像素级别预测。相比之下,以前的工作都是在没有监督的情况下使用小型的卷积神经网络.
  • 语义分割面临着语义和位置之间的内在张力:全局信息解决什么,而局部信息解决什么。深层特性层次结构在一个从局部到全局的非线性金字塔形中对位置和语义进行编码。我们定义了一个skip架构来利用这个结合了深度、粗糙、语义信息和浅层、精细的外观信息的特征层.(In Section 4.2 see Figure 3)

    3. Fully convolutional networks

  • 卷积神经网络中的每一层数据都是一个大小为$h×w×d$的三维数组,其中$h$和$w$为空间维数,$d$为特征维数或信道维数。第一层为图像,像素大小为$h×w$,颜色通道为$d$。在更高层次的位置对应的是他们在图像中的路径连接的位置,这被称为他们的receptive fields(感受野)。
  • 卷积神经网络是建立在平移不变性上的。它们的基本组件(卷积、池化和激活函数,PS:convolution pooling,and activation function)作用于局部输入区域,并且只依赖于相对的空间坐标。记$X_{ij}$为特定layer中的$(i,j)$位置,记$Y_{ij}$为下一层中对应的位置,则$Y_{ij}$的计算表达式为:$$y_{ij}=f_{ks}({X_{si+\delta i,sj+\delta i}}0\leq \delta i,\delta j \leq k)$$
  • 这儿$k$被叫做kernel size(核尺寸),$s$被叫做stride(步长)或者是subsampling(采样因子),$f_{ks}$决定层类型:用于卷积或平均池化的矩阵乘法,用于最大池的空间最大值,或者是激活函数,等等用于其他类型的层。
  • 这种函数形式是在组合的情况下维护的,内核大小和步长遵循转换规则$$f_{ks}\circ g_{k's'}=(f\circ g)_{k'+(k-1)s',ss'}$$
  • 通常深程网络计算一个普通的非线性函数,而这种只有非线性filter层的,我们称之为deep filter 或 fully convolutional network。FCN可以对任何大小的输入进行操作,并产生相应的(可能重新采样的)空间维度的输出。
  • FCN的损失函数定义为:$\ell(x,\theta)=\sum_{ij}(X_{ij},\theta)$,它的梯度是它的每个空间分量的梯度的和。因此,对整幅图像的$\ell$的随机梯度下降与对$\ell'$的随机梯度下降是一样的,就是将最后一层所有receptive fields作为一个小批量。
  • 当这些receptive fields明显重叠时,前馈计算和反向传播在整个图像上layer-by-layer计算会比patch-by-patch更有效率。
  • 接下来,我们将解释如何将分类网络转换为生成粗输出映射的全卷积网络。对于像素级别的预测,我们需要将这些粗输出连接回像素。第3.2节介绍了一种快速扫描的技巧。通过将其重新解释为等效的网络修改,我们可以深入了解这个技巧。作为一种有效的替代方法,我们在3.3节中介绍了deconvolution layer(反卷积层)用于upsampling(上采样)。在第3.4节中,我们使用patchwise sampling进行训练,并在第4.3节中证明了我们的整体图像训练是更快更有效的。

3.1 Adapting classifiers for dense prediction

  • 典型的识别网络,包括LeNet、AlexNet及其更深层次的网络,表面上采用固定大小的输入并产生不确定输出。这些网络的全连通层具有固定的尺寸和丢弃了空间坐标信息。但是,这些全连接层也可以看作是内核覆盖整个输入区域的卷积。这样做就可以将它们投入到全卷积网络中,这些网络可以接受任意大小的输入并输出分类图。这种转换如图2所示。图二$$图二:将全连接层转换成卷积层,分类网络就可以输出heatmap。添加层和空间损失(如图1所示)将生成端到端Dense learing的高效机器。$$
  • 此外,虽然所得到的图相当于原始网络对特定输入patch的求值,但计算的结果在这些patch的重叠区域上是高度重叠的。例如,当AlexNet为了推断出一幅227×227的图像的分类分数,全卷积网络需要22 ms才能从一幅500×500的图像中产生一个10×10的输出网格,这比$na\ddot{ı}ve$的方法要快5倍数以上1
  • 这些卷积模型的输出使它们成为诸如语义分割之类的细粒度分类问题的自然选择。由于每个输出单元都有ground truth(标签)可用,因此前向和反向传播都很简单,并且都利用了卷积固有的计算效率(以及积极的优化)。AlexNet示例对应的反向时间是:单张图像为2.4ms,全卷积输出映射10×10耗时为37ms,产生类似于前向传播的加速效果。虽然我们将分类网络重新解释为针对任何大小的输入的全卷积的输出映射,但是输出维度通常通过子抽样来减少。分类网子样本保持过滤器小和计算要求合理。这使这些网的全卷积版本的输出变得粗糙,将其从输入的大小减少了一个因子,该因子等于输出单元的接受域的像素步长。
  • 虽然我们将分类网络重新构造为能针对任何大小的输入的全卷积的输出映射,但是输出维度通常通过subsample(下采样)来减少。分类网络使用下采样保持使得图像变小并使得计算要求的性能较为合理。这使得这些网络的全卷积版本的输出变得粗糙,将使得输出大小相较于输入大小减少了一个因子,该因子等于输出单元的感受野的大小和步长。

3.2. Shift-and-stitch is filter rarefaction
因为该方法较为复杂,且原文讲的省略颇多,因故专门写了一篇博客分析此算法
并且作者最后并没有采用本算法,原因有二第一原本效果就不太好,第二此算法不能和skip结构结合起来。

3.3. Upsampling is backwards strided convolution

  • 另一种连接粗输出和像素级别的预测方法是插值。例如:简单的bilinear(双线性插值)计算每个输出$y_{ij}$都是从最近的四个输入通过线性映射,这个线性映射只依赖于输入和输出单元的相对位置。
  • 从某种意义上说,因子$f$的上采样就是步长$s=\frac{1}{f}$的卷积。因此只要$f$是整数,一种自然的上采样方法就是采用步长为$f$的backwards convolution(有时候被叫做deconvolution).这样的操作实现起来很简单,因为它只是简单地反转了卷积的前向和反向传播。因此,上采样是一种应用在网络中的,通过像素方面的损失函数并通过反向传播进行端到端学习。
  • 注意,在这样一个反卷积层并不需要固定(例如,bilinear upsampling),但可以学习,堆叠起来的反卷积层和激活函数甚至能够学习到非线性上采样。
  • 在实验中,我们发现网络内上采样对于学习像素预测是快速而有效的。我们最好的分割架构中使用这些层来学习上采样以提高样本的精细化预测。

3.4. Patchwise training is loss sampling

  • 在随机优化中,梯度计算由训练分布支配。patchwise traing和全卷积训练都可以生成任何分布,尽管它们的计算效率取决于图像重叠域小和minibatch大小。在每一个由所有的单元感受野组成的batch并且只考虑图像的损失的前提下(或图像的集合)整张图像的全卷积训练等同于patchwise训练。当这种方式比patches的均匀取样更加高效的同时,它减少了可能的批次数量。然而在一张图片中随机选择patches可能更容易被重新找到。限制基于它的空间位置随机取样子集产生的损失(或者可以说应用输入和输出之间的DropConnect mask)排除来自梯度计算的patches。
  • 如果保留的patch仍然存在明显的重叠,那么全卷积运算仍然可以加快训练速度。如果梯度是在多个反向传播中累积的,则batches能包含几张图patches。
  • patcheswise训练中的采样能纠正分类失调并减轻密集空间相关性的影响[31,17]。在全卷积训练中,分类平衡也能通过给损失赋权重实现,对损失采样能被用来标识空间相关。
  • 我们在第4.3节中探讨了抽样训练,但没有发现稠密预测的收敛速度更快或更好。整体形象训练是有效和高效的。

  1. 假设对单个图像输入进行的批处理。单独一张图像的分类分数需要5.4ms,比全卷积版本慢了近25倍,原文写作$na\ddot{ı}ve$ approach
Last modification:March 3rd, 2020 at 10:52 pm
If you think my article is useful to you, please feel free to appreciate