本文先对FCN的会议论文进行了粗略的翻译,使读者能够对论文的结构有个大概的了解(包括解决的问题是什么,提出了哪些方案,得到了什么结果)。然后,给出了几篇博文的连接,对文中未铺开解释的或不易理解的内容作了详尽的说明。最后给出了FCN代码的详解(待更新)。

Fully Convolutional Networks for Semantic Segmentation

 用于语义分割的全卷积网络

摘要

  卷积网络是可以产生具有层次结构的特征的强大的视觉模型。我们展示了只通过由端到端,像素像素训练的卷积网络进行语义分割,就超过了当前最新的技术水平。我们的主要见解是构建“完全卷积”网络,该网络接受任意大小的输入并通过有效的推理和学习产生相应大小的输出。我们定义并详细说明完全卷积网络的空间,解释它们在空间密集预测任务中的应用,并阐述与先前模型的联系。我们将现代分类网络(AlexNet [19],VGG网络[31]和GoogLeNet [32])调整为完全卷积网络,并通过微调[4]将其学习的表示转移到分割任务。然后,我们定义了一种新颖的架构,它将来自深层粗糙层的语义信息与来自浅层精细层的外观信息相结合,以生成准确而详细的分割。我们的完全卷积网络实现了对PASCAL VOC(相对2012年62.2%的平均IU改进率为20%),NYUDv2和SIFT Flow的最先进分割,而典型图像的推断时间不到五分之一秒。

1. 绪论

  卷积网络正在推动识别的进步。Convnet不仅改善了整体图像分类[19,31,32],而且还在结构化输出的本地任务上取得了进展。这些进展包括边界框对象检测[29,12,17],部分和关键点预测[39,24]以及局部对应[24,9]。从粗略推断到精细推理,很自然下一步是对每个像素进行预测。先前的方法已经使用了用于语义分割的卷积网络[27,2,8,28,16,14,11],其中每个像素用其封闭对象或区域的类来标记,但是具有该工作所解决的缺点。我们证明了一个没有进一步的机制的由端对端,像素到像素训练的完全卷积网络(FCN)超过了现有的最先进的语义分割技术。据我们所知,这是第一个从(2)有监督的预训练,端对端地训练FCN(1)用于像素预测的工作。现有网络的完全卷积版本预测来自任意大小输入的密集输出。学习和推理都是通过密集的前馈计算和反向传播在整个图像上进行的。网内上采样层通过子采样池化来实现网络中的像素预测和学习。这种方法无论是渐近还是绝对都是有效的,并且排除了对其他工作中的复杂性的需要。Patchwise训练很常见[27,2,8,28,11],但缺乏完全卷积训练的效率。我们的方法没有利用预处理和后处理的复杂性,包括超像素[8,16],建议[16,14],或随机字段或局部分类器的事后细化[8,16]。我们的模型通过将分类网络重新解释为完全卷积并从其学习的表示中进行微调,将最近在分类任务[19,31,32]中取得的成果转移到密集预测任务。相比之下,以前的工作是在没有经过有监督的预训练的情况下应用了小型网络。语义分割面临语义和位置之间的内在张力:全局信息解决是什么的问题,而本地信息解决在何处的问题。深度特征层次结构共同编码了 局部到全局金字塔中的位置和语义信息。我们在4.2节定义了一个新颖的“skip”架构,将深的,粗略的语义信息和浅的,精细的外观信息相结合(见图3)。在下一节中,我们将回顾有关深度分类网络,FCN以及使用convnet进行语义分割的最新方法的相关工作。接下来的章节介绍了FCN设计和密集预测权衡,介绍了我们的网络上采样和多层组合的架构,并描述了我们的实验框架。最后,我们展示了在PASCAL VOC 2011-2,NYUDv2和SIFT Flow上取得的最新成果。

2. 相关工作

  我们的方法借鉴了最近成功的用于图像分类深度网络[19,31,32]和迁移学习[4,38]。迁移首先在各种视觉识别任务[4,38],然后是检测,以及混合提议分类器模型中的实例和语义分割任务[12,16,14]上进行了演示。我们现在重新构建和微调分类网络,以直接,密集地预测语义分割。我们绘制了FCN的空间,并在此框架中定位了历史和近期的先前模型。

  全卷积网络 据我们所知,Matan等人首先提出了将一个卷积网络扩展到任意大小的输入的想法。 [25],它扩展了classicLeNet [21]以识别数字串。因为他们的网络仅限于一维输入字符串,Matan等人。 使用Viterbi解码来获得它们的输出。Wolf和Platt [37]将信号输出扩展为邮政地址块四个角的二维检测分数图。这两个历史工作都通过全卷积进行了推理和学习,以便进行检测。 宁等人 [27通过]完全卷积推理,定义了一个用于秀丽隐杆线虫组织的粗多类分割的预测网。

  在当前的多层网络时代,也充分利用了卷积计算。Sermanet等人的滑动窗口检测 [29],Pinheiro和Collobert [28]的语义分割,以及Eigen等人的图像恢复 [5]都做了全卷积推理。全卷积训练很少见,但Tompson等人有效地使用了它 [35]来学习一个端到端的部分探测器和姿势估计的空间模型,但是他们没有对这个方法进行解释或分析。

  或者,He等人 [17]丢弃分类网的非卷积部分以制作特征提取器。它们结合了提议和空间金字塔池,以产生用于分类的本地化固定长度特征。虽然快速有效,但这种混合模式无法端到端地学习。

  用卷积网络进行密集预测 最近的一些研究已经将卷积网络应用于密集预测问题,包括Ning等[27],Farabet等[8],Pinheiro和Collobert [28]等人的语义分割 ;Ciresan等人的电子显微镜边界预测, [2]和Ganin和Lempitsky的混合神经网络/最近邻模型的自然图像边界预测[11];和Eigen等人的图像恢复和深度估计 [5,6]。这些方法的共同要素包括:

  • 限制容量和感受野的小模型;
  • patchwise训练[27,2,8,28,11];
  • 有超像素投影,随机场正则化,滤波或局部分类[8,2,11]的后处理过程;
  • 对于密集输出存在由过拟合 [29]引入的输入移位和输出交织问题[28,11];
  • 多尺度金字塔处理[8,28,11];
  • 饱和tanh非线性[8,5,28];
  • 集成[2,11]

  而我们的方法没有这种机制。然而,我们从FCN的角度研究了补丁训练3.4节和“移位 - 缝合”密集输出3.2节。我们还讨论了网内上采样3.3节,其中Eigen等人的全连接预测 [6]是一个特例。

  与现有方法不同,我们采用深度分类架构,使用图像分类作为有监督的预训练,并通过全卷积微调,从整个图像输入和整个图像的Ground Truths中简单有效地学习。

  Hariharan等人 [16]和Gupta等人 [14]同样使深度分类网适应语义分割,但只在混合提议 - 分类器模型中这样做。这些方法通过对边界框和/或区域提议进行采样来微调R-CNN系统[12],以进行检测,语义分割和实例分割。这两种方法都不是端到端学习的。

  他们分别在PASCAL VOC分割和NYUDv2分割方面取得了最新成果,因此我们直接在第5节中将我们的独立端到端FCN与他们的语义分割结果进行比较。

3. 全卷积网络

  卷积网络中的每个数据层是大小为h×w×d的三维阵列,其中h和w是空间维度,d是特征或信道维度。第一层是有着像素大小为h×w,以及d个颜色通道的图像,较高层中的位置对应于它们路径连接的图像中的位置,这些位置称为其感知域。

  Convnet建立在平移不变性的基础之上。它们的基本组件(卷积,池化和激活函数)在局部输入区域上运行,并且仅依赖于相对空间坐标。用xij表示某一层位置(x,j)处的数据向量,yij是下一层的数据向量,则通过下式计算yij:

  其中k称为内核大小,s是步幅或子采样因子,fks决定层的类型:用于卷积或平均池化的矩阵乘法,用于最大池化的空间最大值,或用于激活函数的元素非线性,等等用于其他类型的层。

  这种函数形式在组合下维护,内核大小和步幅遵守转换规则:

  虽然一般的深度网络计算一般的非线性函数,但只有这种形式的层的网络计算非线性滤波器,我们称之为深度滤波器或完全卷积网络。FCN自然地对任何大小的输入进行操作,并产生相应(可能重新采样的)空间维度的输出。

  由FCN组成的实值损失函数定义了任务。如果损失函数是最终图层的空间维度的总和,它的梯度将是每个空间分量的梯度之和。因此,对整个图像计算的l的随机梯度下降将与将所有最终层感受域视为小批量的l'上的随机梯度下降相同。

  当这些感受野显着重叠时,前馈计算和反向传播在整个图像上逐层计算时效率更高,而不是单独patch-by-patch地计算。接下来我们将解释如何将分类网转换为产生粗略输出映射的完全卷积网。对于逐像素预测,我们需要将这些粗略输出连接回像素。3.2节描述了OverFeat [29]为此目的引入的一个技巧。我们通过将其重新解释为等效的网络修改来深入了解这一技巧。作为一种高效,有效的替代方案,我们在第3.3节中引入了用于上采样的反卷积层。在3.4节中,我们考虑通过patchwise采样进行训练,并在4.3节中证明我们的整个图像训练更快,同样有效。

3.1 调整分类器以进行密集预测

  典型的识别网络,包括LeNet [21],AlexNet [19]及其更深层次的后继[31,32],表面上采用固定大小的输入并产生非空间输出。这些网络的全连接层具有固定的尺寸并且丢弃了空间坐标。然而,这些完全连接的层也可以被视为具有覆盖其整个输入区域的内核的卷积。这样做会将它们转换为完全卷积网络,可以接收任何大小的输入并输出分类图。这种转换如图2所示。(相比之下,非卷积网,例如Le等人[20]的网络,缺乏这种能力。)此外,虽然生成的映射等同于原始网络对特定输入patches的评估,但计算在这些patches的重叠区域上高度摊销。例如,虽然AlexNet需要1.2毫秒(在典型的GPU上)来产生227×227图像的分类分数,但完全卷积版本需要22毫秒才能从500×500图像产生10×10网格输出, 比现在的方法快5倍以上。这些卷积模型的空间输出图使它们成为语义分割等密集问题的自然选择。由于每个输出单元都有可用的Ground Truth,前向和后向通道都很简单,并且都利用了卷积的固有计算效率(和积极优化)。AlexNet示例的相应后向时间对于单个图像是2.4ms,对于完全卷积10×10输出映射是37ms,导致类似于前向传递的加速。这种密集的反向传播如图1所示。

  虽然我们将分类网络重新解释为完全卷积产生任何大小的输入的输出映射,但输出维度通常通过二次取样来减少。分类网络子采样以保持过滤器小并且计算要求合理。这会粗略化这些网络的完全卷积版本的输出,将其从输入的大小减去等于输出单元的感受域的像素跨度的因子

3.2 Shift-and-stitch 是过滤稀疏

  输入移位和输出交错是一种技巧,可以在没有插值的情况下从粗输出产生密集预测,由OverFeat [29]引入。如果输出被 f 因子下采样,输入向右移x个像素,向下移y个像素(左上填充),对于每个取值为{0,...,f-1}×{0,...,f-1}的(x,y)的值,将这f2个输入全部通过卷积网络,得到的输出交错排列,使得预测与他们感受野的中心像素相对应(详解见博文https://www.jianshu.com/p/e534e2be5d7d)。

  仅更改一个convnet的过滤器和层步幅可以产生与此移位和拼接技巧相同的输出。考虑具有输入步幅s的层(卷积或池化),以及具有滤波器权重fij的下一层卷积层(消除特征维度,这里不相关)。将下层的输入步幅设置为1可将其输出上采样s倍,就像shift-and-stitch一样。但是,使用上采样输出对原始滤波器进行卷积不会产生与技巧相同的结果,因为原始滤波器仅看到其(现在上采样)输入的减少部分。为了重现这个技巧,通过将其放大为稀疏过滤器:

(i和j从零开始)。再现该技巧的全网络输出包括逐层重复该滤波器放大,直到去除所有子采样。

  简单地减少网络中的子采样是一种权衡:过滤器看到更精细的信息,但是具有更小的感知域并且需要更长的时间来计算。我们已经看到移位和拼接技巧是另一种权衡:在不降低滤波器的感受野大小的情况下使输出变得更密集,但禁止过滤器以比其原始设计更精细的规模访问信息。

  虽然我们已经使用移位和拼接进行了初步实验,但我们并未在模型中使用它。我们发现通过上采样学习,如下一节所述,更加有效和高效,特别是当与稍后描述的跳过层融合结合时。

3.3 上采样是向后步进的卷积

  将粗略输出连接到密集像素的另一种方法是插值。例如,简单的双线性插值通过线性映射计算来自最近的四个输入的每个输出yij,该线性映射仅取决于输入和输出单元的相对位置。在某种意义上,使用因子f的上采样等同于有着分数输入步幅 1 / f 的卷积。只要f是整数,因此上采样的自然方式是向后卷积(有时称为反卷积),其输出步幅为f。这样的操作很难实现,因为它简单地反转了卷积的前向和后向通道。因此,上采样通过在网内对像素损失进行反向传播来端对端的学习。

  注意,这种层中的反卷积滤波器不需要固定(例如,双线性上采样),而是可以学习的。一堆反卷积层和激活函数甚至可以学习非线性上采样。在我们的实验中,我们发现网内上采样对于学习密集预测是快速有效的。我们最好的分割体系结构使用这些层来学习在4.2节中进行精确预测的上采样。

3.4Patchwise训练是损失抽样

  在随机优化中,梯度计算由训练分布驱动的。patchwise训练和完全卷积训练都可以产生任何分布,尽管它们的相对计算效率取决于重叠和mini-batch大小。整个图像完全卷积训练与patchwise训练相同,其中每个batch包含低于图像(或图像集合)损失的单位的所有感受野。虽然这比patches的均匀采样更有效,但它减少了可能的batches数量。然而一幅图片中patches的随机选择可以简单地复现。将损失限制为其空间项的随机采样子集(或者,等效地在输出和损失之间应用DropConnect掩码[36])从梯度计算中排除patches。

  如果保留的patches仍然具有显着重叠,则完全卷积计算仍将加速训练。如果梯度在多个后向传递上累积,则batches可以包括来自多个图像的patches。patchwise训练中的采样可以纠正类不平衡[27,8,2]并减轻密集patches的空间相关性[28,16]。在完全卷积训练中,也可以通过加权损失来实现类平衡,并且可以使用损失采样来解决空间相关性。

  我们在第4.3节中使用采样来探索训练,并且没有发现它为密集预测产生更快或更好的收敛。 整体图像培训是有效和高效的。

4. 分割架构

  我们将ILSVRC的分类器使用到FCN中,并通过补充网内上采样和像素损失来进行密集预测。我们通过微调来训练分割。 接下来,我们构建了一个新颖的skip架构,它结合了粗略的语义信息和局部的外观信息来优化预测。在本次调研中,我们在PASCAL VOC 2011分割挑战上进行了训练和验证[7]。我们使用每像素多项logistic损失进行训练,并使用联合上的平均像素交点的标准度量进行验证,其中包括所有类的平均值,包括背景。训练忽略了在ground truth中被掩盖掉(如模糊或困难)的像素。

4.1 从分类器到密集的FCN

  我们首先将已证实的分类体系结构卷积化,如第3节所述。我们考量了赢得了ILSVRC12的AlexNet3架构[19],以及VGG网络[31]和在ILSVRC14中表现出色的GoogLeNet4 [32]。我们选择了VGG 16层网络,我们发现它在这项任务中的效果与19层网络相当。对于GoogLeNet,我们仅使用最终损失层,并通过丢弃最终平均池层来提高性能。我们通过丢弃最终的分类器层来截取每个网络,并将所有完全连接的层转换为卷积层。我们附加一个带有通道尺寸21的1×1卷积来预测每个粗略输出位置的每个PASCAL类(包括背景)的分数,然后是反卷积层,以粗略地将粗略输出上采样到像素密集输出,如上在第3.3节中所述。表1比较了初步验证结果以及每个网的基本特征。我们报告以固定学习率(至少175个epochs)收敛后获得的最佳结果。

  从分类到分割的微调为每个网络提供了合理的预测。即使是最糟糕的模型也能达到最先进性能的75%。分割匹配的VGG网络(FCN-VGG16)已经看起来是最先进的,在val上为56.0平均IU,而在测试中为52.6 [16]。对额外数据的训练能将val的子集上的平均IU提高到59.4。训练详情见第4.3节。

  尽管分类准确性相似,但我们对GoogLeNet的实现没有达到此分割结果。

4.2. 结合是什么和在何处

  我们为分割定义了一个新的完全卷积网络(FCN),它结合了特征层次结构的各层,并细化了输出的空间精度。 见图3。

  虽然完全卷积分类器可以按照4.1中的说明进行细调,甚至在标准度量上得分很高,但它们的输出却不尽如人意(见图4)。最终预测层的32像素步幅限制了上采样输出中的细节尺度。

  我们通过添加链接来解决这个问题,这些链接将最终预测层与有着更精细步幅的较低层相结合。这会将线拓扑变为DAG,其边缘从较低层跳到较高层(图3)。因为他们看到的像素更少,更精细的尺度预测应该需要更少的层,因此从较浅的网络输出中制作它们是有意义的。精细图层和粗糙图层的组合使模型可以进行符合全局结构的局部预测。类似于Florack等人的多尺度local jet。 [10],我们将非线性局部特征层次称为deep jet。我们首先通过从16像素步幅层预测将输出步幅分成两半。我们在pool4的顶部添加1×1卷积层以产生附加的类预测。我们将此输出与在步幅32处在conv7(卷积化fc7)之上计算的预测融合,方法是添加2x上采样层并对两个预测求和。 (见图3)。我们将2x上采样初始化为双线性插值,但允许按照第3.3节中的描述学习参数。最后,将步幅16预测上采样回到图像。我们称之为FCN-16网。 FCN-16s是端到端学习的,用最后一个较粗网络的参数初始化,我们现在称之为FCN -32s。作用于pool4的新参数是零初始化的,因此网络以未修改的预测开始。学习率以100的倍率下降。

  学习这个skip网络可以将验证集上的性能提高3.0平均IU到62.4。图4显示了输出精细结构的改进。我们将这种融合仅与来自pool4层的学习(导致性能差)进行了比较,并且简单地降低了学习速率而没有添加额外的链接(这导致不显着的性能改进,而没有提高输出的质量)。我们继续以这种方式将pool3的预测与融合了pool4和conv7的2x上采样预测相融合,建立网络FCN-8s。我们获得了一个小的额外改进,达到62.7平均IU,并且我们的输出的平滑度和细节略有改善。至此,我们的融合改进已经满足了收益递减,无论是在强调大规模正确性的IU度量方面,还是在可见的改进方面,例如,所以在图4中,我们不会继续融合更低层。

  通过其他方式进行细化  减少池化层的步幅是获得更精细预测的最直接方法。但是,这样做对我们基于VGG16的网络来说是个问题。将pool5层设置为具有步幅1要求我们的卷积化fc6具有14×14的内核大小以便维持其感受野大小。除了计算成本之外,我们还难以学习如此大的过滤器。我们尝试用较小的过滤器重新构建pool5之上的层,但是没有成功实现相当的性能;一种可能的解释是,从上层的ImageNet训练的权重初始化很重要。获得更好预测的另一种方法是使用3.2节中描述的shift-and-stitch技巧。在有限的实验中,我们发现这种方法的改进成本比层融合更差。

4.3. 实验框架

  优化  我们用带有动量的随机梯度下降算法(SGD)进行训练。我们使用的mini-batch大小为20张图片,对于FCN-AlexNet, FCN-VGG16和FCN-GoogleNet使用由线性搜索得到的固定的学习率,分别为10-3, 10-4和5-5 。我们使用动量为0.9,权重衰减为5-4或2-4,并且将对偏差的学习率增加了一倍,虽然我们发现训练对这些参数不敏感(但对学习速度敏感)。我们对类评分卷积层进行零初始化,发现随机初始化,既不会产生更好的性能,也不会产生更快的收敛。Droupout包含在原始分类器网络中使用的位置。

  微调  我们通过整个网络的反向传播来微调所有层。如表2所示,单独微调输出分类器仅是完全微调性能的70%。考虑到学习基础分类网所需的时间,从头开始训练是不可行的。 (请注意,VGG网络是分阶段训练的,而我们是从完整的16层版本初始化的。)对于粗FCN-32s版本,单个GPU上的微调需要三天,而每个版本大约需要一天时间才能升级到FCN-16s和FCN-8s版本。

  patch sampling  如第3.4节所述,我们的完整图像训练可以有效地将每个图像batches为大型重叠patches的规则网格。相比之下,先前的工作在整个数据集[27,2,8,28,11]上随机采样patches,可能导致更高方差的batches,这可能加速收敛[22]。我们通过以前面描述的方式对损失进行空间采样来研究这种权衡,做出一个独立的选择,以一些概率1-p忽略每个最终的层单元。为避免更改有效batch大小,我们同时将每batch图像数量增加1 / p。请注意,由于卷积的效率,对于足够大的p值,这种形式的拒绝采样仍然比patchwise训练更快(例如,根据3.1节中的数字,至少p> 0.2)。图5显示了这种采样形式对收敛的影响。我们发现,与整个图像训练相比,采样对收敛速度没有显着影响,但由于每批需要考虑的图像数量较多,因此采用的时间要长得多。因此,我们在其他实验中选择非抽样,全图像训练。

  类别均衡  完全卷积训练可以通过对损失进行加权或抽样来平衡类别。虽然我们的标签是轻度不均衡的(大约3/4是背景),但我们发现不需要类别均衡。

  密集预测  通过网内的反卷积层将分数上采样到输入维度。最终层反卷积滤波器固定为双线性插值,而中间上采样层初始化为双线性上采样,然后学习。不使用Shift-andstitch(第3.2节)或过滤器稀疏等效。

  数据扩增  我们尝试通过随机镜像和在每个方向上将它们平移到32像素(最粗略的预测)来“抖动”图像以增加训练数据。这没有产生明显的改善。

  更多的训练数据  我们用于表1的PASCAL VOC 2011分割挑战训练集标记了1112个图像。Hariharan等人 [15]收集了大量8498 PASCAL训练图像的标签,用于训练以前最先进的系统SDS [16]。该训练数据将FCNVGG16验证得分提高3.4点至59.4平均IU。

  实现  所有模型都使用Caffe [18]在单个NVIDIA Tesla K40c上进行训练和测试。模型和代码将在发布时公开发布。

5. 结果

  我们在语义分割和场景解析上测试我们的FCN,探索PASCAL VOC,NYUDv2和SIFT Flow。尽管这些任务在历史上区分了对象和区域,但我们将它们统一地视为像素预测。我们在每个数据集上评估我们的FCN skip架构,然后将其扩展到NYUDv2的多模态输入和SIFT Flow的语义和几何标签的多任务预测。

  度量  我们报告了来自常见语义分割和场景解析评估的四个度量,这些度量是像素精度和区域交集(IU)的变化。设$n_{ij}$为类别为$i$却被预测为类别$j$的像素的个数。其中有$n_{cl}$个不同的类别。设${t_i} = \sum\nolimits_j {{n_{ij}}} $为类别为$i$的像素的总数。则:

  • 像素精度:$\sum\nolimits_i {{n_{ii}}} /\sum\nolimits_i {{t_i}} $
  • 平均精度:${1 \over {{n_{cl}}}}\sum\nolimits_i {{n_{ii}}} /{t_i}$
  • 平均IU:${1 \over {{n_{cl}}}}\sum\nolimits_i {{n_{ii}}} /({t_i} + \sum\nolimits_j {{n_{ji}} - {n_{ii}})} $
  • 频率加权IU:${(\sum\nolimits_k {{t_k}} )^{ - 1}}\sum\nolimits_i {{t_i}{n_{ii}}} /({t_i} + \sum\nolimits_j {{n_{ji}} - {n_{ii}})} $

  PASCAL VOC  表3给出了我们的FCN-8s在PASCAL VOC 2011和2012测试集上的性能,并将其与先前的最新技术SDS [16]和着名的R-CNN [12]进行了比较。我们以相对边际为20%的平均IU获得了最佳结果。推理时间减少了114×(仅限卷积,忽略了提议和细化)或286×(整体)。

  NYUDv2   [30]是使用Microsoft Kinect收集的RGB-D数据集。它有1449个RGB-D图像,像素标签已被Gupta等人合并为有40个类别的语义分割任务[13]。我们报告了795个训练图像和654个测试图像的标准分割结果。 (注意:所有选择的模型均在PASCAL 2011上执行过。)表4给出了我们的模型在几个变体中的性能。首先,我们在RGB图像上训练未修改的粗糙模型(FCN-32s)。为了增加深度信息,我们在升级的模型上训练以采用四通道RGB-D输入(早期融合)。这提供了很少的好处,可能是由于难以在模型中传播有意义的梯度。继Gupta等人的成功之后 [14],我们尝试深度的三维HHA编码,仅对此信息进行训练网络,以及RGB和HHA的“后期融合”,其中两个网络的预测在最后一层求和,得到的双流网络是端到端学习的。最后,我们将这个后期融合的网络升级为16步长版。

  SIFT Flow  是2,688个图像的数据集,具有33个语义类别(“桥”,“山”,“太阳”)的像素标签,以及三个几何类别(“水平”,“垂直”和“天空”)。FCN可以自然地学习同时预测两种类型标签的联合表示。我们学习了具有语义和几何预测层和损失的双头版本的FCN-16s。习得的模型与两个独立训练的模型在两个任务上的表现一样好,而学习和推理基本上与每个独立模型本身一样快。表5中的结果在标准上计算,分为2,488次训练和200次测试图像,显示了两项任务的最新性能。

6. 结论

  完全卷积网络是一类丰富的模型,其中现代分类网络是一种特殊情况。认识到这一点,将这些分类网络扩展到分割,并通过多分辨率层组合改进架构,大大提高了现有技术水平,同时简化并加速了学习和推理。

  致谢  略。

有关FCN的详解参见博文:

http://www.cnblogs.com/gujianhan/p/6030639.html卷积细节描述到位。

https://blog.csdn.net/qq_36269513/article/details/80420363整体架构描述到位。

论文中的上采样包含双线性差值和反卷积两种方法,其具体操作如下博文所示。

https://buptldy.github.io/2016/10/29/2016-10-29-deconv/关于反卷积的理解到位。

https://blog.csdn.net/u011771047/article/details/72872742关于上采样和双线性差值的理解到位。

关于FCN的代码解析,静待更新。。。

---恢复内容结束---

---恢复内容开始---

Fully Convolutional Networks for Semantic Segmentation

 用于语义分割的全卷积网络

摘要

  卷积网络是可以产生具有层次结构的特征的强大的视觉模型。我们展示了只通过由端到端,像素像素训练的卷积网络进行语义分割,就超过了当前最新的技术水平。我们的主要见解是构建“完全卷积”网络,该网络接受任意大小的输入并通过有效的推理和学习产生相应大小的输出。我们定义并详细说明完全卷积网络的空间,解释它们在空间密集预测任务中的应用,并阐述与先前模型的联系。我们将现代分类网络(AlexNet [19],VGG网络[31]和GoogLeNet [32])调整为完全卷积网络,并通过微调[4]将其学习的表示转移到分割任务。什么是微调?怎么微调?然后,我们定义了一种新颖的架构,它将来自深层粗糙层的语义信息与来自浅层精细层的外观信息相结合,以生成准确而详细的分割。我们的完全卷积网络实现了对PASCAL VOC(相对2012年62.2%的平均IU改进率为20%),NYUDv2和SIFT Flow的最先进分割,而典型图像的推断时间不到五分之一秒。

1. 绪论

  卷积网络正在推动识别的进步。Convnet不仅改善了整体图像分类[19,31,32],而且还在结构化输出的本地任务上取得了进展。这些进展包括边界框对象检测[29,12,17],部分和关键点预测[39,24]以及局部对应[24,9]。从粗略推断到精细推理,很自然下一步是对每个像素进行预测。先前的方法已经使用了用于语义分割的卷积网络[27,2,8,28,16,14,11],其中每个像素用其封闭对象或区域的类来标记,但是具有该工作所解决的缺点。我们证明了一个没有进一步的机制的由端对端,像素到像素训练的完全卷积网络(FCN)超过了现有的最先进的语义分割技术。据我们所知,这是第一个从(2)有监督的预训练,端对端地训练FCN(1)用于像素预测的工作。现有网络的完全卷积版本预测来自任意大小输入的密集输出。学习和推理都是通过密集的前馈计算和反向传播在整个图像上进行的。网内上采样层通过子采样池化来实现网络中的像素预测和学习。这种方法无论是渐近还是绝对都是有效的,并且排除了对其他工作中的复杂性的需要。Patchwise训练很常见[27,2,8,28,11],但缺乏完全卷积训练的效率。我们的方法没有利用预处理和后处理的复杂性,包括超像素[8,16],建议[16,14],或随机字段或局部分类器的事后细化[8,16]。我们的模型通过将分类网络重新解释为完全卷积并从其学习的表示中进行微调,将最近在分类任务[19,31,32]中取得的成果转移到密集预测任务。相比之下,以前的工作是在没有经过有监督的预训练的情况下应用了小型网络。语义分割面临语义和位置之间的内在张力:全局信息解决是什么的问题,而本地信息解决在何处的问题。深度特征层次结构共同编码了 局部到全局金字塔中的位置和语义信息。我们在4.2节定义了一个新颖的“skip”架构,将深的,粗略的语义信息和浅的,精细的外观信息相结合(见图3)。在下一节中,我们将回顾有关深度分类网络,FCN以及使用convnet进行语义分割的最新方法的相关工作。接下来的章节介绍了FCN设计和密集预测权衡,介绍了我们的网络上采样和多层组合的架构,并描述了我们的实验框架。最后,我们展示了在PASCAL VOC 2011-2,NYUDv2和SIFT Flow上取得的最新成果。

2. 相关工作

  我们的方法借鉴了最近成功的用于图像分类深度网络[19,31,32]和迁移学习[4,38]。迁移首先在各种视觉识别任务[4,38],然后是检测,以及混合提议分类器模型中的实例和语义分割任务[12,16,14]上进行了演示。我们现在重新构建和微调分类网络,以直接,密集地预测语义分割。我们绘制了FCN的空间,并在此框架中定位了历史和近期的先前模型。

  全卷积网络 据我们所知,Matan等人首先提出了将一个卷积网络扩展到任意大小的输入的想法。 [25],它扩展了classicLeNet [21]以识别数字串。因为他们的网络仅限于一维输入字符串,Matan等人。 使用Viterbi解码来获得它们的输出。Wolf和Platt [37]将信号输出扩展为邮政地址块四个角的二维检测分数图。这两个历史工作都通过全卷积进行了推理和学习,以便进行检测。 宁等人 [27通过]完全卷积推理,定义了一个用于秀丽隐杆线虫组织的粗多类分割的预测网。

  在当前的多层网络时代,也充分利用了卷积计算。Sermanet等人的滑动窗口检测 [29],Pinheiro和Collobert [28]的语义分割,以及Eigen等人的图像恢复 [5]都做了全卷积推理。全卷积训练很少见,但Tompson等人有效地使用了它 [35]来学习一个端到端的部分探测器和姿势估计的空间模型,但是他们没有对这个方法进行解释或分析。

  或者,He等人 [17]丢弃分类网的非卷积部分以制作特征提取器。它们结合了提议和空间金字塔池,以产生用于分类的本地化固定长度特征。虽然快速有效,但这种混合模式无法端到端地学习。

  用卷积网络进行密集预测 最近的一些研究已经将卷积网络应用于密集预测问题,包括Ning等[27],Farabet等[8],Pinheiro和Collobert [28]等人的语义分割 ;Ciresan等人的电子显微镜边界预测, [2]和Ganin和Lempitsky的混合神经网络/最近邻模型的自然图像边界预测[11];和Eigen等人的图像恢复和深度估计 [5,6]。这些方法的共同要素包括:

  • 限制容量和感受野的小模型;
  • patchwise训练[27,2,8,28,11];
  • 有超像素投影,随机场正则化,滤波或局部分类[8,2,11]的后处理过程;
  • 对于密集输出存在由过拟合 [29]引入的输入移位和输出交织问题[28,11];
  • 多尺度金字塔处理[8,28,11];
  • 饱和tanh非线性[8,5,28];
  • 集成[2,11]

  而我们的方法没有这种机制。然而,我们从FCN的角度研究了补丁训练3.4节和“移位 - 缝合”密集输出3.2节。我们还讨论了网内上采样3.3节,其中Eigen等人的全连接预测 [6]是一个特例。

  与现有方法不同,我们采用深度分类架构,使用图像分类作为有监督的预训练,并通过全卷积微调,从整个图像输入和整个图像的Ground Truths中简单有效地学习。

  Hariharan等人 [16]和Gupta等人 [14]同样使深度分类网适应语义分割,但只在混合提议 - 分类器模型中这样做。这些方法通过对边界框和/或区域提议进行采样来微调R-CNN系统[12],以进行检测,语义分割和实例分割。这两种方法都不是端到端学习的。

  他们分别在PASCAL VOC分割和NYUDv2分割方面取得了最新成果,因此我们直接在第5节中将我们的独立端到端FCN与他们的语义分割结果进行比较。

3. 全卷积网络

  卷积网络中的每个数据层是大小为h×w×d的三维阵列,其中h和w是空间维度,d是特征或信道维度。第一层是有着像素大小为h×w,以及d个颜色通道的图像,较高层中的位置对应于它们路径连接的图像中的位置,这些位置称为其感知域。

  Convnet建立在平移不变性的基础之上。它们的基本组件(卷积,池化和激活函数)在局部输入区域上运行,并且仅依赖于相对空间坐标。用xij表示某一层位置(x,j)处的数据向量,yij是下一层的数据向量,则通过下式计算yij:

  其中k称为内核大小,s是步幅或子采样因子,fks决定层的类型:用于卷积或平均池化的矩阵乘法,用于最大池化的空间最大值,或用于激活函数的元素非线性,等等用于其他类型的层。

  这种函数形式在组合下维护,内核大小和步幅遵守转换规则:

  虽然一般的深度网络计算一般的非线性函数,但只有这种形式的层的网络计算非线性滤波器,我们称之为深度滤波器或完全卷积网络。FCN自然地对任何大小的输入进行操作,并产生相应(可能重新采样的)空间维度的输出。

  由FCN组成的实值损失函数定义了任务。如果损失函数是最终图层的空间维度的总和如果损失函数是最终图层的空间维度的总和如果损失函数是最终图层的空间维度的总和

\(l(x;\theta ) = \sum\nolimits_{ij} {{l^'}({x_{ij}};\theta )} \)

---恢复内容结束---

论文阅读笔记(一)FCN的更多相关文章

  1. 论文阅读笔记 - YARN : Architecture of Next Generation Apache Hadoop MapReduceFramework

    作者:刘旭晖 Raymond 转载请注明出处 Email:colorant at 163.com BLOG:http://blog.csdn.net/colorant/ 更多论文阅读笔记 http:/ ...

  2. 论文阅读笔记 - Mesos: A Platform for Fine-Grained ResourceSharing in the Data Center

    作者:刘旭晖 Raymond 转载请注明出处 Email:colorant at 163.com BLOG:http://blog.csdn.net/colorant/ 更多论文阅读笔记 http:/ ...

  3. 论文阅读笔记 Word Embeddings A Survey

    论文阅读笔记 Word Embeddings A Survey 收获 Word Embedding 的定义 dense, distributed, fixed-length word vectors, ...

  4. 论文阅读笔记 Improved Word Representation Learning with Sememes

    论文阅读笔记 Improved Word Representation Learning with Sememes 一句话概括本文工作 使用词汇资源--知网--来提升词嵌入的表征能力,并提出了三种基于 ...

  5. [置顶] 人工智能(深度学习)加速芯片论文阅读笔记 (已添加ISSCC17,FPGA17...ISCA17...)

    这是一个导读,可以快速找到我记录的关于人工智能(深度学习)加速芯片论文阅读笔记. ISSCC 2017 Session14 Deep Learning Processors: ISSCC 2017关于 ...

  6. Nature/Science 论文阅读笔记

    Nature/Science 论文阅读笔记 Unsupervised word embeddings capture latent knowledge from materials science l ...

  7. 论文阅读笔记(二十一)【CVPR2017】:Deep Spatial-Temporal Fusion Network for Video-Based Person Re-Identification

    Introduction (1)Motivation: 当前CNN无法提取图像序列的关系特征:RNN较为忽视视频序列前期的帧信息,也缺乏对于步态等具体信息的提取:Siamese损失和Triplet损失 ...

  8. 论文阅读笔记(十八)【ITIP2019】:Dynamic Graph Co-Matching for Unsupervised Video-Based Person Re-Identification

    论文阅读笔记(十七)ICCV2017的扩刊(会议论文[传送门]) 改进部分: (1)惩罚函数:原本由两部分组成的惩罚函数,改为只包含 Sequence Cost 函数: (2)对重新权重改进: ① P ...

  9. [论文阅读笔记] GEMSEC,Graph Embedding with Self Clustering

    [论文阅读笔记] GEMSEC: Graph Embedding with Self Clustering 本文结构 解决问题 主要贡献 算法原理 参考文献 (1) 解决问题 已经有一些工作在使用学习 ...

  10. [论文阅读笔记] metapath2vec: Scalable Representation Learning for Heterogeneous Networks

    [论文阅读笔记] metapath2vec: Scalable Representation Learning for Heterogeneous Networks 本文结构 解决问题 主要贡献 算法 ...

随机推荐

  1. Eclipse中快捷键Ctrl + Alt + 向上箭头 或者 Ctrl + Alt + 向下箭头与Windows冲突

    原文地址:https://blog.csdn.net/buaaroid/article/details/50804608 clipse中按ctrl + alt + 向上箭头没有任何反应,按ctrl + ...

  2. Linux如何在一个文件中写入内容

    Linux中,在一个文件中写入内容,可以vim打开编辑模式,输入我们想要的内容,此次我们使用echo命令 来在一个文件夹中写入内容. echo命令: 第一种: echo 'i love u' > ...

  3. Python scrapy爬虫数据保存到MySQL数据库

    除将爬取到的信息写入文件中之外,程序也可通过修改 Pipeline 文件将数据保存到数据库中.为了使用数据库来保存爬取到的信息,在 MySQL 的 python 数据库中执行如下 SQL 语句来创建 ...

  4. SpringMVC的各种注解

    @RequestMapping 这个注解标注在方法名上,如 /** * 拦截所有请求: * @RequestMapping(value="/*", method = {Reques ...

  5. centos7之zabbix监控mysql(mariadb)数据库

    一.Zabbix3.2.6使用自带模板监控MySQL 添加zabbix_agent客户端方法:http://www.cnblogs.com/lei0213/p/8858269.html mysql服务 ...

  6. MySQL——合并查询结果

    利用  UNION 关键字,可以给出多条  SELECT  语句,并将它们的结果组合成一个结果集.合并时,两个表对应的列数和数据类型必须相同.SELECT 语句之间使用  UNION  或  UNIO ...

  7. Nginx 常见问题

    1. CreateFile() "C:\Users\zhang\Desktop\K\My Project\SSL-数字证书\Nginx配置\nginx-1.12.2/conf/nginx.c ...

  8. IIC时序操作24C02芯片

    1.心血来潮看自己能不能参考时序图重新写一个IIC驱动,加强一下时序图的理解.记录下来,以后遇到此类的IIC时序的芯片可以直接操作. 先说说自己参照手册来写AT24c02的IIC低层驱动,从写完到最后 ...

  9. Python实现FTP文件的上传和下载

    # coding: utf-8 import os from ftplib import FTP def ftp_connect(host, username, password): ftp = FT ...

  10. What Kind of Friends Are You? ZOJ 3960

    比赛的时候用vector交集做的...情况考虑的不全面  wrong到疯 赛后考虑全了情况....T了 果然 set_intersection  不能相信 嗯 不好意思 交集a了  第二个代码 求出来 ...