卷积网络是一种能够产生特征层次结构的功能强大的视觉模型。我们表明,卷积网络本身,训练端到端,像素到像素,超过了最先进的语义分割。我们的关键见解是建立“fully convolutional”网络,该网络接受任意大小的输入,并通过有效的推理和学习产生相应大小的输出。我们定义并详细描述了全卷积网络的空间,解释了它们在空间密集的预测任务中的应用,并与之前的模型建立了联系。我们将当代分类网络(AlexNet[19],VGGnet[31]和GoogLeNet[32])调整为完全卷积网络,并通过微调[4]将其学习到的表示转移到分割任务中。然后,我们改进了一种新的架构,它将深层、粗层的语义信息与浅层的外观信息结合起来,以产生准确和详细的分割。我们的全卷积网络实现了最先进的PASCAL VOC(2012年比62.2%提高20%)和SIFT流的分割,而对于典型图像的推断需要不到五分之一的秒。
卷积网络正在推动识别技术的进步。卷积机不仅在全图像分类[19,31,32]方面得到了改进,而且在具有结构化输出的本地任务上也取得了进展。这些包括边界框目标检测[29,12,17]、部分和关键点预测[39,24]以及局部对应[24,9]方面的进展。
在从粗推理到精细推理的发展过程中,最自然的下一步是对每个像素进行预测。先前的方法使用对网进行语义分割[27,2,8,28,16,14,11],其中每个像素都标记其封闭对象或区域的类,但这项工作解决的缺点。
我们证明了一个完全卷积网络(FCN),训练端到端,像素到像素的语义分割超过了最先进的,没有进一步的机制。据我们所知,这是第一个训练FCN端到端(1)进行像素级预测和来自监督预训练的(2)的工作。现有网络的完全卷积版本可以预测来自任意大小的输入的密集输出。通过密集前馈计算和反向传播对全图像时间进行学习和推理。网络内的上采样层能够在具有下采样池的网络中进行像素级预测和学习。
这种方法是有效的,渐近和绝对,并排除了其他工作的需要。分段训练是一种常见的[27,2,8,28,11],但缺乏完全卷积训练的效率。我们的方法没有利用预处理和后处理的复杂性,包括超像素[8,16]、建议[16,14],或随机域或局部分类器[8,16]的事后细化。我们的模型通过将分类网重新解释为完全卷积和微调的表示,将分类[19,31,32]最近的成功转移到密集预测中。相比之下,以前的工作应用了小卷积神经网络网,没有监督的预训练[8,28,27]。
语义分割面临着语义和位置之间的内在紧张关系:全局信息解决了什么,而局部信息解决了哪里。深度特征层次结构在一个局部-全局金字塔中联合编码位置和语义。在第4.2节中,我们定义了一种新的“跳过”体系结构,将深、粗、语义信息和浅、细、外观信息结合起来(见图3)。
在下一节中,我们将回顾关于深度分类网、FCN和最近使用对流网的语义分割方法的相关工作。下面的部分解释了FCN的设计和密集的预测的权衡,介绍了我们的网络内上采样和多层组合的体系结构,并描述了我们的实验框架。最后,我们演示了关于pascal VOC2011-2、NYUDv2和SIFTFlow的最新结果。
我们的方法利用了最近成功的深度网的图像分类[19,31,32]和迁移学习[4,38]。转移首先在各种视觉识别任务[4,38]上,然后在检测上,以及在混合分类器模型[12,16,14]的实例和语义分割上。我们现在重新设计和微调分类网,以指导、密集的预测语义分割。我们绘制了fcn的空间,并在这个框架中定位了先前的历史模型和最近的模型。
Fully convolutional networks 据我们所知,将卷积神经网络扩展到任意大小的输入的想法最早出现在Matan等人的[25]中,它扩展了经典的LeNet[21]来识别数字字符串。由于他们的网络仅限于一维输入字符串,Matan等人使用Viterbi decoding来获取他们的输出。Wolf和Platt[37]将卷积神经网络输出扩展到邮政地址块的四个角的检测分数的二维地图。这两部历史著作都可以完全卷积学习检测。Ning等人[27]定义了一个具有完全卷积推理粗糙的多类分割的卷积神经网络。
全卷积计算也在当今的多层网络时代得到了利用。Sermanet等人[29]的滑动窗口检测,Pinheiro和Collobert[28]的语义分割,以及Eigen等人[5]的图像恢复,都进行了完全卷积推理。完全卷积训练很少,但Tompson等人[35]有效地用来学习端到端部分检测器和空间模型,尽管它们没有阐述或分析这种方法。
另外,He等人[17]丢弃分类网的非卷积部分,制作特征提取器。它们结合了建议和空间金字塔池,产生一个局部的、固定长度的特征进行分类。这种混合模型虽然快速而有效,但却不能从端到端进行学习。
而我们的方法却没有这种机器。然而,我们从FCN的角度研究了分段训练3.4和“shift-and-stitch”密集输出3.2。我们还讨论了网络内上采样3.3,其中Eigen等人[6]的全连接预测是一种特例。与这些现有的方法不同,我们采用和扩展了深度分类架构,使用图像分类作为有监督的预训练,并进行完全卷积微调,以简单有效地从整个图像输入和整个图像地面插入中学习。
Hariharan等人[16]和Gupta等人[14]同样采用深度分类网进行语义分割,但在混合建议分类器模型中这样做。这些方法通过采样边界框和/或区域建议来微调R-CNN系统的[12]。这两种方法都不是端到端学习的。
它们分别在pascalVOC分割和NYUDv2分割上取得了最先进的结果,因此我们直接将我们独立的端到端FCN与第5节中的语义分割结果进行了比较。
convnet网中的每一层数据都是一个大小为h×w×d的三维数组,其中h和w是空间维度,d是特征或信道维度。第一层是图像,像素大小为h×w和d颜色通道。较高层次的位置对应于图像中它们被路径连接的位置,这被称为它们的接受域。
卷积神经是建立在平移不变性之上的。它们的基本组件(卷积、池化和激活函数)作用于局部输入区域,并且只依赖于相对的空间坐标。
将表示特定层中位置(i,j)的数据向量,表示后面的层,这些函数计算输出通过:
k被称为内核大小,s步幅或子采样因子,和决定层类型:矩阵乘法卷积或平均池,最大空间最大池,或一个基本的非线性激活函数,等等其他类型的层。该函数形式在组合下保持,内核大小和步幅服从转换规则
一个一般的深度网络计算一个一般的非线性函数,而一个只有这种形式的层的网络计算一个非线性滤波器,我们称之为深度滤波器或完全卷积网络。FCN自然地对任何大小的输入进行操作,并产生相应的(可能是重新采样的)空间维度的输出。
一个由FCN组成的实值损失函数,它可以去定义一个任务。如果损失函数是最后一层的空间维数的和,它的梯度将是其每个空间分量的梯度的和。因此,在整个图像上计算的上的随机梯度下降将与上的随机梯度下降相同,将所有最后一层的接受域作为一个小批。
当这些接受域显著重叠时,在整个图像上,前馈计算和反向传播在分层计算时都比逐个独立计算时更有效。接下来,我们将解释如何将分类网转换为生成粗输出映射的完全卷积网。对于像素级预测,我们需要将这些粗输出连接回像素。
第3.2节描述了OverFeat[29]为此目的引入的一个技巧。我们通过将其重新解释为一个等效的网络修改来深入了解这个技巧。作为一种有效的、有效的替代方法,我们在第3.3节中引入了反褶积层来进行上采样。在第3.4节中,我们考虑了通过分段抽样进行的训练,并在第4.3节中给出了证据,证明我们的整个图像训练更快,同样有效。
典型的识别网络,包括LeNet[21]、AlexNet[19]及其更深层次的后继者[31,32],表面上接受固定大小的输入并产生非空间输出。这些网络的全连接层具有固定的尺寸,并丢弃了空间坐标。然而,这些完全连接的层也可以被视为与覆盖其整个输入区域的内核的卷积。这样做可以将它们转换成完全卷积的网络,以接受任何大小的输入和输出分类图。 这个转换如图2所示。(相比之下,非卷积网,如Le等人[20]的网,缺乏这种能力。)
此外,虽然得到的地图相当于对特定输入补丁的评估,但计算在这些补丁的重叠区域上高度平摊。例如,当AlexNet需要1.2 ms(在一个典型的GPU)产生227×227图像的分类分数,完全卷积版本需要22 ms产生10×10网格输出的500×500图像,超过5倍比na¨ıve方法。
这些卷积化模型的空间输出图使它们成为诸如语义分割等密集问题的自然选择。在每个输出单元上都有地面真相,前向和向后传递都是简单的,并且两者都利用了卷积固有的计算效率(和积极的优化)。
AlexNet示例对应的反向时间为单个图像为2.4 ms,完全卷积10×10输出映射为37 ms,导致了类似于向前传递的加速。这种密集的反向传播如图1所示。
虽然我们将分类网重新解释为完全卷积,从而为任何大小的输入生成输出映射,但输出维度通常通过子采样来减少。分类网的子样本,以保持滤波器的小和计算要求合理。这使得这些网络的完全卷积版本的输出更加粗糙,使它从输入的大小减少了一个因素,等于输出单位的接受域的像素步幅。
输入移位和输出交错是一个技巧,它可以从由OverFeat[29]引入的没有插值的粗输出中产生密集的预测。如果输出被降采样f因子,输入被移动(由左和上填充)x像素向右,y像素向下,每一个值(x,y)∈{0,…,f−1}×{0,……,f−1}。这些f2输入每个都通过对流网运行,输出被交错,因此预测对应于其接受域中心的像素。
只改变滤波器和层步长可以产生相同的输出,这种移动和缝合的技巧。考虑一个具有输入步幅s的层(卷积或池化),以及下面一个具有滤波器权重的卷积层(省略了特征维度,在这里无关)。将较低层的输入步幅设置为1,使其输出上升s倍,就像Shift-and-stitch一样。然而,将原始滤波器与上采样输出进行卷积不会产生与技巧相同的结果,因为原始滤波器只看到其输入(现在上采样)减少的一部分。要重现这个技巧,通过放大过滤器。
(其中i和j是基于零的)。复制该技巧的完整净输出包括逐层重复这个过滤器放大,直到所有的子采样被删除。简单地减少网络内的子采样是一种权衡:过滤器可以看到更细的信息,但有更小的接受域,需要更长的计算时间。我们已经看到,Shift-and-stitch是另一种权衡:在不减小过滤器的接受场大小的情况下,输出更密集,但禁止过滤器以比原始设计更精细的规模访问信息。虽然我们已经用Shift-and-stitch做了初步的实验,但我们没有在我们的模型中使用它。我们发现,通过上采样进行学习,如下一节所述,会更有效,特别是当与后面描述的跳跃层融合相结合时。
另一种连接粗输出到密集像素的方法是插值。例如,简单的双线性插值通过一个仅依赖于输入和输出单元的相对位置的线性映射来计算每个输出,该映射只依赖于输入和输出单元的相对位置。
在某种意义上,具有因子f的上采样是与分数输入步幅为1/f的卷积。只要f是积分的,那么上采样的一种自然方法是向后卷积(有时称为反褶积),输出步幅为f。这样的操作实现起来很简单,因为它只是简单地反转卷积的正向和反向传递。
因此,在网络内进行反向传播,以实现端到端学习。请注意,这一层中的转置卷积滤波器不需要是固定的(例如,双线性上采样),但可以学习。一堆转置卷积层和激活函数甚至可以学习一个非线性的上采样。在我们的实验中,我们发现网络内上采样对于学习密集预测是快速和有效的。我们最好的分割体系结构使用这些层来学习在第4.2节中进行上采样以进行细化预测。
在随机优化中,梯度计算是由训练分布驱动的。补丁训练和全卷积训练都可以产生任何分布,尽管它们的相对计算效率取决于重叠和小批处理的大小。整个图像完全卷积训练与分段训练是相同的,在分段训练中,每批处理由图像(或图像集合)损失以下的单元的所有接受域组成。虽然这比统一的补丁采样更有效,但它减少了可能的批次的数量。然而,在图像中随机选择的补丁可以被简单地恢复。将损失限制在其空间项的随机抽样子集(或者,等价地在输出和损失之间应用Drop连接掩模[36])将补丁排除在梯度计算之外。
如果保留的补丁仍然有显著的重叠,那么完全卷积计算仍然会加快训练速度。如果梯度在多个反向上累积,批可以包含来自多个图像的补丁。在斑块训练中进行采样可以纠正类不平衡[27,8,2],降低密集斑块[28,16]的空间相关性。在全卷积训练中,类平衡也可以通过加权损失来实现,损失采样可以用于解决空间相关性问题。我们在第4.3节中探索了抽样训练,并没有发现它对密集预测产生更快或更好的收敛性。全图像训练是非常有效的。
我们将ILSVRC分类器转换到FCN中,并通过网络上采样和像素级损失进行密集预测。我们通过微调来训练分割。接下来,我们构建了一个新的跳过架构,它结合了粗糙的、语义的和局部的外观信息来重新细化预测。
对于本研究,我们训练并验证了PASCAL VOC2011分割挑战[7]。我们使用每像素的多项式逻辑损失进行训练,并使用平均像素交集与并集的标准度量进行验证,用平均值接管所有类,包括背景。训练忽略了在地面真相中被掩盖(模糊或困难)的像素。
如第3节所述,我们首先卷积化已证明的分类架构。我们考虑了赢得ILSVRC12的AlexNet架构[19],以及VGG网[31]和在ILSVRC14中表现非常出色的GoogLeNet[32]。我们选择了VGG的16层网5,我们发现它相当于在这个任务上的19层网。对于GoogLeNet,我们只使用最终的损失层,并通过dropout最终的平均池化层来提高性能。我们通过丢弃最终的分类器层来去除每个网络,并将所有的全连接的层转换为卷积。我们附加了一个1×1卷积来预测每个粗输出位置的每个PASCAL类(包括背景)的分数,然后是一个反褶积层,对粗输出到像素密集输出进行双向上采样,如第3.3节所述。表1比较了初步验证结果和每个网络的基本特征。我们报告了在固定学习速率(至少175个ch)收敛后取得的最佳结果。
从分类到分割的微调为每个网络给出了合理的预测。即使是最差的型号也达到了∼的75%。分段设备的VGG网络(FCN-VGG16)已经是最先进的,平均IU为56.0,而测试[16]为52.6。对额外数据进行训练将val7的子集的性能提高到59.4。培训细节见第4.3节。尽管有相似的分类精度,但我们的GoogLeNet的实现与这个分割结果并不匹配。
我们定义了一个新的全卷积网络(FCN),它结合了特征层次,并改进了输出的空间精度。详见图3。虽然完全卷积化的分类器可以按照4.1所示进行精细的分割,甚至在标准度量上得分很高,但它们的输出粗糙得令人不满意(见图4)。最终预测层的32像素步幅限制了上采样输出中的细节尺度。我们通过添加链接来解决这个问题,将最终的预测层与更低的层结合起来。
这将线拓扑转换为DAG,边缘从较低的层跳到较高的层(图3)。由于他们看到的像素更少,更精细的规模预测应该需要更少的层,所以从较浅的净输出中制作它们是有意义的。结合细层和粗层,可以让模型做出尊重全局结构的局部预测。通过类似于Florack等人[10]的多尺度局部射流,我们将我们的非线性局部特征层次称为深射流。
我们首先通过16像素步幅层预测将输出步幅一分为二。我们在池4上添加了一个1×1的卷积层,以产生额外的类预测。我们通过添加一个2×的上采样层,将conv7(卷积化的fc7)在第32步上计算的预测进行融合。(见图3)。我们将2×上采样初始化为双线性插值,但允许学习如第3.3节所述的参数。最后,步幅16个预测被上采样回图像。我们称之为网络FCN-16s。FCN-16s是端到端学习的,用最后一个较粗的网的参数进行初始化,我们现在称之为FCN-32s。作用于池4的新参数被零初始化,因此网络从未修改的预测开始。学习率降低了100倍。
学习这个跳过网络可以将验证集的性能提高3.0,平均IU提高到62.4。图4显示了输出的精细结构的改进。我们将这种融合与仅从pool4层进行的学习进行了比较(这导致了性能不佳),并且简单地降低了学习速率而不增加额外的链接(这导致了不显著的性能提高,而没有提高输出的质量)。
我们继续以这种方式,将池3的预测与池4和conv7的预测的2×上采样融合,构建净FCN-8s。我们得到了对62.7平均IU的一个微小的额外改进,并发现我们的输出的平滑度和细节略有改善。在这一点上,我们的融合改进已经达到了递减的回报,无论是在强调大规模正确性的IU度量方面,还是在可见的改进方面,如在图4中,所以我们不继续融合更低的层。
Refifinement by other means 减少池化层的步幅是获得更精细的预测的最直接的方法。然而,这样做对于我们基于vgg16的网络来说是有问题的。将池5层设置为步幅1需要我们的卷积化的fc6的内核大小为14×14,以保持其接受域的大小。除了它们的计算成本外,我们还很难学习如此大的滤波器。我们尝试用更小的滤波器重新构建池5上面的层,但没有成功实现类似的性能;一种可能的解释是,从上层的imagenet训练的权重初始化是重要的。获得更精细的预测的另一种方法是使用第3.2节中描述的Shift-and-stitch技巧。在有限的实验中,我们发现该方法的成本改进比比层融合更差。
Optimization 我们用带有动量的SGD进行训练。我们使用FCN-20张图像和FCN-VGG16和FCN-GooGLeNet的固定学习率为10**−3、10**−4和5**−5。我们使用动量0.9,权重衰减为5**−4或2**−4,并将偏差的学习率增加了一倍,尽管我们发现训练对这些参数不敏感(但对学习率敏感)。我们对类评分卷积层进行零初始化,发现随机初始化既不能产生更好的性能,也不能产生更快的收敛速度。在原始分类器网中使用了dropout率。
Fine-tuning 我们通过在整个网络中的反向传播来微调所有的层。与表2相比,仅对输出分类器进行微调只能得到完整微调性能的70%。考虑到学习基本分类网所需的时间,从头开始进行训练是不可行的。(请注意,VGG网是分阶段进行训练的,而我们则从完整的16层版本中进行初始化。)对于粗糙的FCN-32s版本,在一个GPU上进行微调需要三天的时间,每个版本升级到FCN-16s和FCN-8s版本大约需要一天的时间。
Patch Sampling 正如第3.4节所述,我们的全图像训练有效地将每幅图像批量处理成一个由大的、重叠的斑块组成的规则网格中。相比之下,之前的工作是在一个完整的数据集[27,2,8,28,11]上随机采样补丁,这可能会导致更高的方差批次,这可能会加速收敛[22]。我们通过以前面描述的方式对损失进行空间采样来研究这种权衡,做出一个独立的选择,忽略每个最后的层细胞,概率为1−p。为了避免改变有效批的大小,我们同时将每批图像的数量增加1/p。注意,由于卷积的有效性,这种形式的拒绝抽样仍然比对于足够大的p值(例如,根据第3.1节中的数字,至少对于p>0.2)要快。图5显示了这种形式的抽样对收敛性的影响。我们发现,与整个图像训练相比,采样对收敛速度没有显著影响,但由于每批需要考虑的图像数量更多,需要花费的时间明显更多。因此,我们在其他实验中选择了未采样的全图像训练。
Class Balancing 完全卷积训练可以通过加权或抽样的损失来平衡类。虽然我们的标签略有不平衡(大约3/4是背景的),但我们发现阶级平衡是不必要的。
Dense Prediction 通过网络内的转置卷积层,将分数上采样到输入维度。最后一层的反卷积滤波器固定为双线性插值,中间上采样层初始化为双线性上采样,然后进行学习。不使用移位和缝合(第3.2节)或过滤器稀薄等效物。
Augmentation 我们尝试通过随机镜像和“jittering”图像来增强训练数据,并将图像转换到每个方向上的32个像素(最粗糙的预测尺度)。这并没有产生明显的改善。
More Training Data 我们用于表1的pascalVOC2011分割挑战训练集,标签为1112张图像。
哈里哈兰等人[15]收集了一套更大的8498帕斯卡训练图像的标签,用于训练之前最先进的系统,SDS[16]。该训练数据将FCN VGG16验证分数提高了3.4分,平均59.4IU。
Implementation 所有模型都在一个NVIDIA TeslaK40c上使用Caffe[18]进行训练和测试。模型和代码将在发布时以开源发布。
我们在语义分割和场景解析上测试了我们的FCN,探索了pascalVOC、NYUDv2和SIFT FCN。虽然这些任务在历史上区分了对象和区域,但我们将两者统一地视为像素预测。我们在这些数据集上评估了我们的FCN跳过架构8,然后将其扩展到NYUDv2的多模态输入和SIFT流的语义和几何标签的多任务预测。
Metrics 我们报告了来自常见语义分割和场景解析评估的四个指标,它们是像素精度和联合(IU)上的区域交叉的变化。设为第i类预测属于第j类的像素数,其中存在不同的类,设为第i类的像素总数。我们计算:
PASCAL VOC 表3给出了我们的FCN-8s在pascalVOC2011和2012的测试集上的性能,并将其与之前的最先进的SDS[16]和著名的R-CNN[12]进行了比较。我们在平均IU9上取得了20%的最佳结果。推理时间减少了114×(仅卷积,忽略建议和细化)或286×(overall)。
NYUDv2[30]是一个使用微软Kinect收集的RGB-D数据集。它有1449张RGB-D图像,像素标签被Guptata等[13]合并成40类语义分割任务。我们报告了795张训练图像和654张测试图像的标准分割结果。(注:所有模型选择均在pascal2011val上进行。)表4给出了我们的模型在几种变化中的性能。首先,我们在RGB图像上训练未修改的粗糙模型(FCN-32s)。为了增加深度信息,我们训练一个升级的模型,采用四通道RGB-D输入(早期融合)。这几乎没有提供什么好处,这可能是因为很难在整个模型中传播有意义的梯度。Guptaetal.[14]成功后,我们尝试的三维HHA编码深度,训练网这些信息,以及“late fusion”RGB和HHA网的预测是总结在最后一层,由此产生的双流网学习端到端。最后,我们将这个晚期的核聚变网升级到一个16步的版本。
SIFTFlow是一个由2688张图像组成的数据集,其中包含33个语义类别(“桥”、“山”、“太阳”),以及3个几何类别(“水平”、“垂直”、“天空”)的像素标签。FCN可以自然地学习一种同时预测两种类型标签的联合表示。我们学习了一个具有语义和几何预测层和损失的FCN-16s的双头版本。学习到的模型在两个任务上的表现与两个独立训练的模型一样好,而学习和推理本质上和每个独立的模型本身一样快。表5中的结果是根据标准分成2488张训练图像和200张测试图像计算的,10显示了在两个任务上最先进的性能。
全卷积网络是一类丰富的模型,其中现代分类对流网络是一种特例。认识到这一点,将这些分类网扩展到分割,并使用多分辨率层组合改进体系结构,极大地提高了最先进的水平,同时简化和加快了学习和推理。
A. Upper Bounds on IU
在本文中,即使使用粗语义预测,我们在平均IU分割度量上也取得了良好的性能。为了更好地理解这个度量和这种方法的极限,我们计算了在不同尺度下的预测性能的近似上界。我们通过对地面真实图像进行降采样,然后再次对它们进行上采样,以模拟使用特定的降采样因子可获得的最佳结果。下表给出了各种降采样因素的pascal2011val的一个子集上的平均IU。
B. More Results
我们进一步评估了我们的FCN的语义分割。PASCAL-Context[26]提供了帕斯卡VOC2010的整个场景注释。虽然有超过400个不同的类,但我们遵循由[26]定义的59个类任务来选择最常见的类。我们分别对训练集和val集进行训练和评估。在表6中,我们比较了卷积特征掩蔽[3]的联合对象+材料的变化,这是该任务之前的最新技术。FCN-8s得分为35.1,平均IU相对改善11%。