FCN:Fully Convolutional Networks for Semantic Segmentation


前言

本篇用来记录学习语义分割看的第一篇文章FCN的翻译,综合其他大佬的博客做一个学习笔记,便于后续复习
刚接触图像分类分割,目标检测这一块,感谢许多大佬的博文让我学习
分类:预测一张图片所属的类别,如猫,狗,1,2,3等。
分割:对每一个像素都进行分类


一、文章翻译

摘要
卷积网络在特征分层领域是非常强大的可视化模型。我们证明了经过端到端、像素到像素训练的卷积网络超过语义分割中最先进的技术。我们的核心观点是建立“全卷积”网络,输入任意尺寸,经过有效的推理和学习产生相应尺寸的输出。我们定义并详细描述了全卷积网络的空间,解释它们在空间空间密集预测任务(预测每个像素所属的类别)中的应用,并将其与先前的模型联系起来。我们改编当前的分类网络(AlexNet ,the VGG net , and GoogLeNet )到完全卷积网络和通过微调传递它们的学习表现到分割任务中。然后我们定义了一个新的架构,结合来自深、粗层的语义信息和来自浅、细层的表征信息来产生准确和精细的分割。我们的完全卷积网络实现了对PASCAL VOC(相对2012年62.2%的平均IU改进率为20%),NYUDv2和SIFT Flow的最先进分割,而典型图像的推断时间不到五分之一秒,对一个典型图像推理只需要花费不到0.2秒的时间。

1. 引言

  卷积网络正在推动识别技术的进步。卷积网不仅整体图像的分类上有所提高,也在结构化输出的局部任务上取得了进步。包括在目标检测边界框 、部分和关键点预测和局部对应的进步。
  在从粗糙到精细推理的进展中下一步自然是对每一个像素进行预测。早前的方法已经将卷积网络用于语义分割,其中每个像素被标记为其封闭对象或区域的类别,但是有个缺点就是这项工作解决的。

在这里插入图片描述

  我们证明了完全卷积网络FCN经过端到端、像素到像素训练的的语义分割超过了最先进的技术,没有更先进的。我们认为,这是第一次端对端地训练FCN用于像素预测的工作,而且有监督的预训练(2)。现有网络的全卷积版本从任意尺寸的输入预测密集输出。学习和推理都是通过密集的前馈计算和反向传播一次整幅图像执行的。网内上采样层通过子采样池化来实现网络中的像素预测和学习。
  这种方法非常有效,无论是渐进地还是完全地,消除了在其他方法中的并发问题。Patchwise训练是常见的,但是缺少了全卷积训练的有效性。我们的方法不是利用预处理或者后期处理解决并发问题,包括超像素,proposals,或者对通过随机域事后细化或者局部分类。我们的模型通过重新解释分类网到全卷积网络和微调它们的学习表现将最近在分类上的成功移植到密集预测。与此相反,先前的工作应用的是小规模、没有监督预训练的卷积网。
  语义分割面临在语义和位置的固有的紧张问题:全局信息解决的“是什么”,而局部信息解决的是“在哪里”。深层特征通过非线性的局部到全局金字塔编码了位置和语义信息。我们在4.2节(见图3)定义了一种利用集合了深、粗层的语义信息和浅、细层的表征信息的特征谱的跨层架构。
  在下一节,我们回顾深层分类网、FCNs和最近一些利用卷积网解决语义分割的相关工作。接下来的章节将解释FCN设计和密集预测权衡,介绍我们的网内上采样和多层结合架构,描述我们的实验框架。最后,我们展示了最先进技术在PASCAL VOC 2011-2, NYUDv2, 和SIFT Flow上的实验结果。

2. 相关工作

  我们的方法是基于最近深层网络在图像分类上的成功和迁移学习。转移首先被演示在各种视觉识别任务,然后是检测,以及混合建议分类器模型的实例和语义分割。我们现在重新构建和微调分类网络以直接、密集检测语义分割。在这个框架里我们绘制FCNs的空间并将过去的或是最近的先验模型置于其中。
  全卷积网络据我们所知,第一次将卷积网扩展到任意尺寸的输入的是Matan等人,它将经典的LeNet扩展到识别字符串。因为他们的网络结构限制在一维的输入串,Matan等人利用维特比解码获得输出。Wolf和Platt将卷积网输出扩展到来检测邮政地址块的四角得分的二维图。这些先前工作做的是推理和用于检测的全卷积式学习。Ning等人定义了一种卷积网络用于秀丽线虫组织的粗糙的、多分类分割,基于全卷积推理。
  全卷积计算也被用在现在的一些多层次的网络结构中。Sermanet等人的滑动窗口检测,Pinherio 和Collobert的语义分割,Eigen等人的图像修复都做了全卷积式推理。全卷积训练很少,但是被Tompson等人用来学习一种端到端的局部检测和姿态估计的空间模型非常有效,尽管他们没有解释或者分析这种方法。
  此外,He等人丢弃了分类网的无卷积部分,做了一个特征提取器。他们结合proposals和空间金字塔池来产生一个局部的、固定长度的特征用于分类。尽管快速且有效,但是这种混合模型不能进行端到端的学习。
  近期的一些工作已经将卷积网应用于密集预测问题,包括Ning等人的语义分割,Farabet等人以及Pinheiro和Collobert;Ciresan等人的电子显微镜边界预测以及Ganin和Lempitsky的通过混合神经网络和最邻近模型的处理自然场景图像边界预测;还有Eigen等人的图像修复和深度估计。这些方法的相同点包括如下:
●限制容量和接收域的小模型
●patchwise训练
●超像素投影,随机场正则化、滤波或局部分类的后处理
●对于密集输出存在由过拟合 [29]引入的输入移位和输出交织问题[28,11];
●多尺度金字塔处理
●饱和双曲线正切非线性
●集成
  然而我们的方法确实没有这种机制。但是我们研究了patchwise训练 (3.4节)和从FCNs的角度出发的“shift-and-stitch”dense输出(3.2节)。我们也讨论了网内上采样(3.3节),其中Eigen等人的全连接预测是一个特例。
  和这些现有的方法不同的是,我们改编和扩展了深度分类架构,使用图像分类作为监督预处理,和从全部图像的输入和ground truths(用于有监督训练的训练集的分类准确性)通过全卷积微调进行简单且高效的学习。
  Hariharan等人和Gupta等人也改编深度分类网到语义分割,但是通过在混合proposal-classifier模型。这些方法通过采样边界框和region proposal进行微调了R-CNN系统 ,用于检测、语义分割和实例分割。这两种办法都不能进行端到端的学习。
  他们分别在PASCAL VOC和NYUDv2实现了最好的分割效果,所以在第5节中我们直接将我们的独立的、端到端的FCN和他们的语义分割结果进行比较。

3. 全卷积网络

  卷积网的每层数据是一个hwd的三维数组,其中h和w是空间维度,d是特征或通道维数。第一层是像素尺寸为h*w、颜色通道数为d的图像。高层中的locations和图像中它们连通的locations相对应,被称为接收域。
  卷积网是以平移不变形作为基础的。其基本组成部分(卷积,池化和激励函数)作用在局部输入域,只依赖相对空间坐标。在特定层记X_ij为在坐标(i,j)的数据向量,在following layer有Y_ij,Y_ij的计算公式如下:
在这里插入图片描述
  其中k为卷积核尺寸,s是步长或下采样因素,f_ks决定了层的类型:一个卷积的矩阵乘或者是平均池化,用于最大池的最大空间值或者是一个激励函数的一个非线性elementwise,亦或是层的其他种类等等。当卷积核尺寸和步长遵从转换规则,这个函数形式被表述为如下形式:
在这里插入图片描述
  当一个普通深度的网络计算一个普通的非线性函数,一个网络只有这种形式的层计算非线性滤波,我们称之为深度滤波或全卷积网络。FCN理应可以计算任意尺寸的输入并产生相应(或许重采样)空间维度的输出。
  由FCN组成的实值损失函数定义了任务。如果损失函数是一个最后一层的空间维度总和, 它的梯度将是它的每层空间组成梯度总和。所以在全部图像上的基于l的随机梯度下降计算将和基于l’的梯度下降结果一样,将最后一层的所有接收域作为minibatch(分批处理)。
在这些接收域重叠很大的情况下,前反馈计算和反向传播计算整图的叠层都比独立的patch-by-patch有效的多。
  我们接下来将解释怎么将分类网络转换到能产生粗输出图的全卷积网络。对于像素级预测,我们需要连接这些粗略的输出结果到像素。3.2节描述了一种技巧,OverFeat 因此被引入。我们通过将它解释为一个等价网络修正而获得了关于这个技巧的一些领悟。作为一个高效的替换,我们引入了用于上采样的反卷积层见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)的值(x,y),将这f2个输入全部通过卷积网络,得到的输出交错排列,使得预测与他们感受野的中心像素相对应。
  仅更改一个convnet的过滤器和层步幅可以产生与Shift-and-stitch技巧相同的输出。考虑具有输入步幅s的层(卷积或池化),以及具有滤波器权重fij的下一层卷积层(消除特征维度,这里不相关)。将下层的输入步幅设置为1可将其输出上采样s倍,就像shift-and-stitch一样。但是,使用上采样输出对原始滤波器进行卷积不会产生与技巧相同的结果,因为原始滤波器仅看到其(现在上采样)输入的减少部分。为了重现这个技巧,通过将其放大为稀疏过滤器:
在这里插入图片描述
  (i和j从零开始)。再现该技巧的全网络输出包括逐层重复该滤波器放大,直到去除所有子采样。
  简单地减少网络中的子采样是一种权衡:过滤器看到更精细的信息,但是具有更小的感知域并且需要更长的时间来计算。我们已经看到移位和拼接技巧是另一种权衡:在不降低滤波器的感受野大小的情况下使输出变得更密集,但禁止过滤器以比其原始设计更精细的规模访问信息。
  虽然我们已经使用移位和拼接进行了初步实验,但我们并未在模型中使用它。我们发现通过上采样学习,如下一节所述,更加有效和高效,特别是当与稍后描述的跳过层融合结合时。

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

  将粗略输出连接到密集像素的另一种方法是插值。例如,简单的双线性插值通过线性映射计算来自最近的四个输入的每个输出yij,该线性映射仅取决于输入和输出单元的相对位置。
  在某种意义上,使用因子f的上采样等同于有着分数输入步幅 1 / f 的卷积。只要f是整数,因此上采样的自然方式是向后卷积(有时称为反卷积),其输出步幅为f。这样的操作很难实现,因为它简单地反转了卷积的前向和后向通道。因此,上采样通过在网内对像素损失进行反向传播来端对端的学习。
  注意,这种层中的反卷积滤波器不需要固定(例如,双线性上采样),而是可以学习的。一堆反卷积层和激活函数甚至可以学习非线性上采样。在我们的实验中,我们发现网内上采样对于学习密集预测是快速有效的。我们最好的分割体系结构使用这些层来学习在4.2节中进行精确预测的上采样。

3.4 Patchwise训练是损失抽样

  在随机优化中,梯度计算由训练分布驱动的。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的AlexNet架构[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节。

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)的变化。设nij为类别为i却被预测为类别j的像素的个数。其中有ncl个不同的类别。设ti=∑jnij为类别为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. 结论

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

二、知识点

1.分类&分割

分类是把一张图预测成一类,如猫、狗…
分割是把一张图每个像素都预测
语义信息(全局信息):提取网络的深层特征;特点是物体的空间信息比较丰富,对应的感受野较大;有助于分割尺寸较大的目标,有利于提高分割的精确度。
外观信息(局部信息):提取位置是网络的浅层;特点是物体的几何信息比较丰富,对应的感受野较小;有利于分割尺寸较小的目标,有利于提高分割的精确度。
语义分割是对每个像素进行分类,把物体的边界能标出来

2.CNN&FCN

分类网络输出是一维信息即标签,会将原来二维的矩阵(图片)压缩成一维的,从而丢失了空间信息。一般分类网络最后由全连接层经过一次softmax组成,softmax可以得到该图片是各个类别的概率,由此判定是什么类别。
FCN把CNN的全连接层替换为卷积层(卷积化),从而得到2维的输出feature map。再通过softmax可以得到每个点分类概率信息。
FCN可以对任何大小的输入进行操作,并产生相应空间维度的输出。
在这里插入图片描述
FCN先下采样即卷积和池化,再上采样即反卷积。

3.反卷积

上采样通常有两种方法:插值和反卷积。
反卷积的输出图像大于输入图像,这个是通过补零来实现的。运用这个就是进行上采样。采用反卷积层对最后一个卷积层的feature map进行上采样, 使它恢复到输入图像相同的尺寸,从而可以对每个像素都产生了一个预测, 同时保留了原始输入图像中的空间信息, 最后在上采样的特征图上进行逐像素分类。
相当于填充一些0再进行卷积

4.训练

全卷积训练:是指用卷积层替换全连接层,以便整个网络仅包含卷积层(和池化层)。
patchwise训练:既“分批训练”,旨在避免完整图像训练的冗余。
在语义分割中通过使用整个图像对图像中的每个像素进行分类,那么将在输入中添加很多冗余。在训练分割网络期间避免这种情况的一种标准方法是向网络输入一批来自训练集的随机补丁(围绕目标对象的小图像区域),而不是整个图像。patchwise训练是指对每一个感兴趣的像素,以它为中心取一个patch,然后输入网络,输出则为该像素的标签,训练时就将一个个patch组成一个batch作为网络输入。

5.Skip

原始全卷积网络用于分割任务,效果不好。添加skip结构后的新的全卷积网络用于分割,结合深层语义信息和浅层外观信息,细化了输出的空间精度,达到很好效果。直接将全卷积后的结果上采样后得到的结果通常是很粗糙的。所以这一结构主要是用来优化最终结果的,思路就是将不同池化层的结果进行上采样,然后结合这些结果来优化输出.

6.分割的精度标准

共有k+1个类(从L0到Lk,其中包含一个空类或背景),pij表示本属于类i但被预测为类j的像素数量。即,pii表示真正的数量,而pij pji则分别被解释为假正和假负。
PA,像素精度:为标记正确的像素占总像素的比例。
在这里插入图片描述
MPA,均像素精度:PA的一种简单提升,计算每个类内被正确分类像素数的比例,之后求所有类的平均。
在这里插入图片描述
MIoU,均交并比:为语义分割的标准度量。其计算两个集合的交集和并集之比,在语义分割的问题中,这两个集合为真实值(ground truth)和预测值(predicted segmentation),理想情况下两个集合重合。在每个类上计算IoU,之后平均。
在这里插入图片描述

参考博客

FCN论文概括理解
官方源码
全连接转为卷积层
论文笔记

猜你喜欢

转载自blog.csdn.net/qq_43173239/article/details/112633821