这篇文章是关于将全卷积网络端到端(End-to-End)地训练,并将其用于语义分割。
作者提出了使用全卷积神经网络来接受任意大小的输入,并产生与之相匹配的输出,这样的一个网络在训练和推理的环节效率都很高。作者将这样的密集预测网络与之前的典型的卷积神经网络进行联系,将这些模型的优秀表征能力迁移到语义分割任务中来。进一步地,作者提出了一种用于语义分割的新架构,它可以将网络中提取的深层次的、粗略的语义信息与较浅层次的、较为精准的表征信息进行结合,提高了语义分割的准确性。此模型在多个标准数据集上都达到了SOTA。
卷积神经网络在图像分类,目标检测方面都有广泛的应用,进一步地就产生了需要为图像中的每一个像素进行分类——语义分割的需求。先前的基于卷积网络的语义分割方法都有着自己的局限性,这也是本文工作所要解决的。
作者提出的基于FCN进行端到端、像素到像素的训练可以在图像语义分割任务中达到SOTA,且不需要多余的约束机制。本文的工作是首次端到端地训练FCN网络用于逐像素预测。模型的训练和推理都是基于整个图像的,在网络中由于上采样层(upsampling)的存在,允许进行下采样的pooling操作。
在本文的工作之前,对图像逐Patch进行训练是主流,但是这样的方式相比于FCN效率大大降低。同时,本文的方法并没有使用预处理或者后处理,比如:超像素、候选区域等。本文的方法将近来主流的卷积神经网络转换为密集预测,在迁移它们的表征能力的同时进行fine-tuning.
语义分割任务具有它固有的内在矛盾:全局的信息决定了是图像中的目标什么,但是局部的信息表示了该目标在哪里。在本文中,作者定义了一种新的跨越连接(Skip connection)来整合深层次的、粗粒度的语义信息与浅层次的、细粒度的表征信息。
作者介绍了关于全卷积神经网络、密集预测的相关研究工作以及它们在图像语义分割中的应用,并总结出这些方法的相似之处:
模型较小,限制了模型能力及感受野;
使用patchwise进行训练
在模型中加入了后处理,例如:超像素投影、随机正则化、局部分类等;
输入移位和输出交错以实现密集输出
多尺度金字塔处理
使用了饱和的非线性函数tanh
模型集成
本文所提出的基于FCN的语义分割方法并没有使用上述的各种机制,但在文章中作者进行了patchwise训练的对比,同时进行了网络内部上采样的讨论。
典型的识别网络、包括LeNet、AlexNet以及更深的卷积模型都是接受固定大小的输入,得到非空间的输出。因为全连接层的存在使得这些网路丢弃了特征图的空间信息。然而,全连接层也可以看成是一种特殊的卷积层,相当于这些“卷积层”的卷积核覆盖整个特征空间。所以可以将FC层转化为Conv层使得它们可以接受任意尺寸的输入、并输出对每个像素的分类结果。这种转换如Fig02所示:
空间性的输出非常适合于进行语义分割任务,因为在语义分割中每一个输出单元的ground truth(标签)都是已知的,前向及后向处理都变得很简单,也能够利用卷积层固有的计算效率与优化。
在这一节当中作者阐释了Shitf-and-stitch这样一种上采样(upsampling)的方式。这个方法首先出现在Overfeat论文中,关于Shift-and-stitch的详细解析,可以参考文章:Shift and stitch理解 在本文的模型中,作者并没有使用这种方式,这种方式等同于使用了卷积进行上采样。
作者提到,另一种可以用于在粗粒度的深层次输出和密集像素之间构建联系的方法是插值,比如通过双线性插值。可以通过某个像素周边的四个像素来决定当前像素的值。另外,上采样的过程同样可以看成stride为上采样因子倒数的“微步长卷积”。一般就是对output进行填充,然后再卷积。反卷积的前向后向过程与卷积类似,从某种程度上可以看成“互逆”的过程。所以它很方便地在原有的卷积网络架构中进行拓展。
作者提到,全图像的训练与逐Patch训练在某些条件下是一致的,这要求对于每一个batch由当损失下的所有感知域组成。然而,在一幅图像中随机随着patch进行patch-wise训练损失限制为其空间项的随机抽样子集,这样做是有损失的。作者在后面做了逐patch训练,与FCN方式相比发现并没有促进收敛或者性能上的提升,这说明这说明全图像训练是有效且高效的。
作者将应用于大规模图像分类的卷积模型进行迁移,对它们进行了密集预测以及上采样方式的优化,同时基于之前的模型进行fine-tuning. 随后,作者提出了一种新的跨层次连接的架构。在PASCAL VOC2011数据集上训练了一个多项式回归模型用以做对比,同时以图像语义分割的标准指标mIoU进行评价。
作者首先选用了在大规模图像分类上被证明有较好性能的AlexNet、VGG-16以及GoogleNet作为改进目标,在GoogleNet中仅使用最后一个loss layer(去除辅助分类器),同时抛弃了最后的平均池化层以提高性能。对于所有的CNN模型,将最后的FC层都转换为Conv层。同时对所有的上采样输出进行通道数为21(classess + bacground)的1x1卷积进行密集预测。表1是三个改进模型在PASCAL VOC2011数据集上的表现:
可以看到在平均交并比上,VGG-16为Base的模型效果更好。
定义一种新的全卷积网络用作语义分割任务,通过调整用于分类的卷积分类器可以在语义分割任务上达到较好的性能。本文基于VGG-16模型提出了基础的FCN-32s、跨层信息融合的FCN-16s以及FCN-8s,模型原理如图3所示:
由图3可以看出,FCN-32s模型就是在VGG16模型的5次下采样之后得到的得分输出直接进行32x上采样,恢复到原图尺寸。而FCN-16s则是将pool5的得分输出进行2x上采样,恢复到原始图像的1/16,然后再与pool4的得分输出直接相加。(注:这里的得分输出是指经过1x1卷积进行通道拓展,n_channels = 21)。最后,FCN-8s是在FCN-16s的基础上将输出2x上采样,再直接加上pool3的得分输出得到1/8尺度的output,最后再进行8x采样恢复尺寸。本文提出的基于VGG-16模型的FCN-32s, FCN-16s,以及FCN-8在语义分割中的实际效果如图4所示:
Optimizeation 在优化过程中,作者对对所有的score-layer(即进行1x1卷积的层)进行0初始化,作者通过实验发现,随机初始化对于模型性能和训练没有益处。同时,本文提出的FCN系列的模型中都保留了VGG-16中的Dropout层。
Fine-tuning 训练时,每个模型都进行了端到端的fine-tuning,如果只是在原VGG-16分类器的层上进行fine-tuning只能达到最好性能的70%,各模型的实验结果如表2所示:
Patch Sampling 同时,作者还进行了patch-wise training的对比试验。之前的文献表明,patch-wise的训练中由于进行随机采样,数据的方差较大,这有利于加速模型收敛。(???)在研究这种trade-off的过程中,作者通过空间上的损失采样来进行,同时为每种训练方式(full image training VS patch-wise training)独立地选定一个概率p,以这个概率保留掉最后一层的神经元,同时为每个batch中的图像数量乘上一个因子1 / p(0
同时进行了全图像训练、50%采样训练、25%采样训练三种方式,通过实验结果可以看出,patch-wise的训练方式在促进模型收敛上并没有显著的优势(左图)。同时,右图显示了模型收敛的相对时间,可以发现由于patch-wise方式在每个batch中需要训练的图像数量更多,速度更慢。所以本文并没有采用这种训练方式。
Class Balancing 在面对类别不平衡的问题时,全卷积网络的训练可以对最后的损失进行类别的加权。
Dense Prediction 最后一个反卷积层的卷积核的参数被固定为双线性插值,但是中间各层的反卷积被初始化为双线性上采样,在训练的过程中不断学习。
Augmentation 通过镜像“mirror"和抖动“jittering"(在最粗略的预测尺度上,向每个方向拓展32个pixel)但这并没有实际的性能提升
评价指标:
下面的表3显示了FCN-8s模型与之前的SOTA模型SDS以及R-CNN在PASCAL VOC 2011 、2012数据集上的性能比较:
可以看到本文提出的FCN-8s模型在常用的mean IU指标上有着较大的提升,同时也大幅度降低了模型的推理时间。图6显示了FCN-8s模型与SDS语义分割的效果:
可以发现FCN-8s在精细的结构修复、区分相近且相邻的目标的能力以及对应于目标遮挡的鲁棒性上都更胜一筹。
将用于图像分类的卷积模型扩展到语义分割,并用多分辨率层组合改进体系结构,极大地提高了架构的能力,同时简化和加快了学习和推理。