https://www.bilibili.com/video/BV16K411W782
https://github.com/shelhamer/fcn.berkeleyvision.org
语义分割简介
概念区分
图像分割是一个大的概念,现在来区别一下语义分割,实力分割和全景分割。

b图是语义分割,把不同的目标涂成不同的颜色。c图是实例分割,实力分割只关注它关心的内容,所以图中只分割出来了汽车和行人,其他目标作为背景,涂为黑色。语义分割中汽车都是蓝色的,行人都是红色的,而实例分割中会分为汽车1,汽车2,汽车3······,也会把行人分为甲乙丙丁。
d图是全景分割,是语义分割和实例分割的结合,不仅有背景,也会把相同种类目标区分出来。
存在的问题
传统方法的图像分割

深度学习方法的图像分割

不匹配关系:

从左到右的图片分别为:原始图像,标签,算法1分割结果,算法2分割结果。
可见两个算法对于黄色框中的船分割不准确。对于全局信息的分析有利于分割的准确性。
解决他的方法:SPP,ASPP,PSPNet,用金字塔模块做局部信息和全局信息的融合。
不寻常类:

可见两个算法一个把枕头融合到了床上,另一个算法分割出了枕头。
RGB-D(通过深度)解决这个问题。
实现流程

分割术语

常用数据集,指标,研究成果
数据集

CamVid是道路场景小规模数据集,适合初次尝试。很多算法使用CityScapes数据集比较完善完整。PASCAL VOC是综合场景。SUNRGBD和NYUDv2是RGB-D是数据集,D指的是Depth深度。使用深度相机+普通相机拍摄可得出这样的数据集。

指标

研究成果
- 将分类网络改编为全卷积神经网络,具体包括全连接层转化为卷积层以及通过反卷积进行上采样。
(上采样是指将特征图的空间分辨率从较低的分辨率恢复到较高的分辨率,使得输出的特征图尺寸与输入图像的尺寸相匹配)
- 使用迁移学习的方法进行微调。(将已经在一个领域或任务上训练好的模型(或网络)应用到另一个领域或任务上,以提高新任务的学习效率和效果)
- 使用跳跃结构使得语义信息可以和表征信息相结合,产生准确而精细的分割。
- FCN证明了端到端、像素到像素训练方式下的卷积神经网络超过了现有(传统的技术)语义分割方向最先进的技术。所以FCN是深度学习语义分割方向的开山之作。
- FCN成为了PASCALVOC最出色的分割方法,较2011和2012分割算法的MIoU提高了将近20%。

研究意义

深度学习语义分割领域的开山之作。

论文精读

作者团队
均来自加州大学伯克利分校
Jonathan Long是一名计算机视觉研究者,主要研究方向包括深度学习、图像分割和计算机视觉。他在加州大学伯克利分校期间,参与了多个关于语义分割和深度学习的研究项目。
Evan Shelhamer同样是加州大学伯克利分校的研究人员,专注于深度学习和计算机视觉。他在语义分割、目标检测和卷积神经网络等领域有深入研究,并在多篇高影响力的论文中有贡献。
Trevor Darrell是加州大学伯克利分校计算机科学系的教授,也是伯克利人工智能研究实验室(BAIR)的资深成员。他在计算机视觉和机器学习领域具有丰富的研究经验,尤其是在目标检测、图像分割和人机交互等方面。他是多个高影响力项目的领导者和参与者。
论文概况
论文于2015年发表在CVPR(IEEE Conference on Computer Vision and Pattern Recognition)上,这是计算机视觉领域最顶级的会议之一。目前谷歌学术论文引用量49934。
Abstract
①概述:
卷积网络是强大的视觉模型产生特征层次结构。
②证明了什么:
论文证明了经过端到端(输入原始图像,输出预测图像,尺寸不变),像素到像素训练的卷积网络超过了(传统的)语义分割中最先进的技术。
③核心思想是什么:
核心思想是构建全卷积的网络(输入任意尺寸,经过有效的推理学习,产生相应尺寸的输出)。论文定义描述了FCN的空间细节,解释了FCN网络在密集预测任务(像素级预测任务)上的应用,与先前模型(经典分类算法:AlexNet,VGGnet,GoogLeNet)的联系。
④具体方法:
我们改编了AlexNet,VGGnet,GoogLeNet,从全连接的方式改为了全卷积的方式,通过微调的手段,将它们的学习表现传递到分割任务中(迁移学习:预训练权重和整体模型的引用)。我们定义了跳跃连接,结合来自深层的语义信息和浅层的表征信息,来更准确且精细的进行分割。
⑤数据集上的成果:
我们的FCN网络在PASCAL VOC,NYUDv2和SIFT Flow数据集上达到了非常优秀(state-of-the-art)的结果。对一个典型的图像推理,只需要花费不到0.2s的时间。
1.Introduction
CNN发展现状:
卷积神经网络在识别领域势头很猛。不仅在全图片分类(AlexNet,VGGnet,GoogLeNet)任务取得很好效果,且在结构化输出(目标检测方面)领域有一定的贡献。
粗糙检测,精细检测,像素级检测:
从粗糙到细致,最后到像素级预测的发展历程是很自然的(是必然的)。先前,有些网络也是把CNN应用到了分割这个方向,但是没有实现端到端,而FCN做到了。
引出本文贡献:
我们证明了FCN这个网络使用端到端,像素到像素训练的卷积网络取得了非常优秀(state-of-the-art)的结果。我们认为FCN是第一个通过端到端训练的全卷积网络,面对像素级的预测任务,且用到了有监督的预训练(迁移学习)。全卷积网络是在现有网络基础上进行改进改变,它可以接收任意尺寸输出,产生相应尺寸的预测输出。这个学习和推理过程是从前向传播和反向传播中得到的。

在这个网络当中,通过上采样的方式进行预测(前向传播),通过下采样的方式进行学习(反向传播)。
FCN优势:
我们的方法解决了之前算法的难题(缺少全卷积的过程,分块训练不合适)。我们的方法没有用到预处理(对图像的数据预处理)和后处理(对算法的改动,条件随机场,HHA),这里包含超像素,随机预分类等,也能取得很好的成功,说明算法本身nb。我们的实现方法是把成功的分类网络迁移到语义分割中来。并且进行微调、改编。
语义分割大方向存在的问题和相应解决方法:
语义分割面临一个全局信息和局部信息的矛盾冲突(全局信息解决了“是什么”,而局部信息解决了“在哪里”)问题。深度特征层次结构在局部到全局金字塔中共同编码了位置和语义信息。我们定义了一种新颖的“跳跃”架构,结合了深度、粗略的语义信息和浅层、精细的外观信息。


文章整体结构:
在下一节中,我们回顾了深度分类网络、全卷积网络和使用卷积网络进行语义分割的最新方法。接下来的章节解释了全卷积网络设计和密集预测的权衡,介绍了我们具有网络内上采样和多层组合的架构,并描述了我们的实验框架。最后,我们在PASCAL VOC 2011-2、NYUDv2和SIFT Flow上展示了最先进的结果。
2.Related work
迁移学习:
我们的方法借鉴了深度网络在图像分类和迁移学习方面的最新成功。迁移学习最初在各种视觉识别任务上得到验证,然后在检测以及混合提议-分类器模型中的实例和语义分割上得到应用。我们现在重新设计并微调分类网络,以直接进行语义分割的密集预测。我们在全卷积网络(FCN)的框架中绘制了FCN的空间,并将之前的模型,无论是历史的还是最近的,都置于此框架中。
全卷积网络
FCN之前的卷积网络,介绍之前算法,交代作者思想由来:
据我们所知,将卷积网络扩展到任意大小的输入的想法最早出现在Matan等人的工作中,该工作将经典的LeNet扩展用于识别数字串。由于他们的网络仅限于一维输入字符串,Matan等人使用维特比解码来获得他们的输出。Wolf和Platt将卷积网络的输出扩展为二维检测分数图,用于邮政地址块的四个角。这两项历史工作都完全卷积地进行检测的推理和学习。Ning等人定义了一个用于C. elegans组织的多类粗略分割的卷积网络,并完全卷积地进行推理。
在当前许多层的网络时代,完全卷积计算也被广泛应用。Sermanet等人的滑窗检测,Pinheiro和Collobert的语义分割,以及Eigen等人的图像修复都进行了完全卷积推理。完全卷积训练虽然罕见,但被Tompson等人有效地用于学习端到端的部件检测器和空间模型,用于姿态估计,尽管他们并没有详细阐述或分析这种方法。
另一种方法是,He等人舍弃了分类网络的非卷积部分,以构建特征提取器。他们结合提议和空间金字塔池化来生成用于分类的局部固定长度特征。虽然这种混合模型快速且有效,但无法端到端地学习。
卷积网络的密集预测
基于CNN的密集预测任务,共同缺点
最近的一些工作将卷积网络应用于密集预测问题,包括Ning等人,Farabet等人,以及Pinheiro和Collobert的语义分割;Ciresan等人的电子显微镜边界预测,以及Ganin和Lempitsky的自然图像的混合神经网络/最近邻模型的边界预测;以及Eigen等人的图像修复和深度估计。这些方法的共同元素包括:
- 小模型限制了容量和感受野;
- 分块训练;
- 超像素投影、随机场正则化、过滤或局部分类的后处理;
- 输入平移和输出交错以实现密集输出,如OverFeat所介绍的;
- 多尺度金字塔处理;
- 饱和的tanh非线性;
- 集成方法。
引出本文研究内容:
而我们的方法无需这些机制。然而,我们确实从FCN的角度研究了分块训练3.4和“平移拼接”密集输出3.2。我们还讨论了网络内上采样3.3,其中Eigen等人的全连接预测是一个特例。
分类模型做预训练
与这些现有方法不同,我们调整并扩展了深度分类架构,使用图像分类作为有监督预训练,并通过完全卷积的方式微调,从整个图像输入和整体图像真实标签中简单高效地学习。
比较实验结果:
Hariharan等人和Gupta等人同样调整了深度分类网络用于语义分割,但在混合提议-分类器模型中进行。这些方法通过对R-CNN系统进行微调,通过采样边界框和/或区域提议来进行检测、语义分割和实例分割。这两种方法都不是端到端学习的。
他们分别在PASCAL VOC分割和NYUDv2分割上取得了最先进成果,因此我们在第5节中将我们独立的端到端FCN与他们的语义分割结果直接进行比较。

3.Fully convolutional networks
卷积网络的每一层都是h * w * d的一个三位数组。h和w是空间维度,而d是通道数。第一层的是带有像素大小为h * w,d为3(RGB)的彩色图像。在网络的较高层(深层)中,每个神经元(或特征图上的位置)对应于输入图像中的一个特定区域,这个区域就是所谓的“感受野”(receptive field)。感受野可以理解为神经元能够“看到”或响应的图像区域。
![图片[19] - Python AI C++笔记 - 【人工智能】FCN——语义分割的开山之作(重磅) - Python AI C++笔记 - 小竹の笔记本](https://img.smallbamboo.cn/i/2024/07/16/6695e524b22ec.png)
![图片[20] - Python AI C++笔记 - 【人工智能】FCN——语义分割的开山之作(重磅) - Python AI C++笔记 - 小竹の笔记本](https://img.smallbamboo.cn/i/2024/07/16/6695e56ebc0b2.png)
第一层(输入图片)感受野约定俗成为1,在上图中,第二层的感受野为3,因为上一层的3x3区域对应本层的一个像素。在后面的模型中有使用到空洞卷积使得stride减小,但是感受野大。
卷积网络建立在平移不变性的基础上。卷积网络的基本组成作用在局部输入空间时,只依赖于空间坐标。
![图片[21] - Python AI C++笔记 - 【人工智能】FCN——语义分割的开山之作(重磅) - Python AI C++笔记 - 小竹の笔记本](https://img.smallbamboo.cn/i/2024/07/16/6695e58408c47.png)
其实平移不变性在CNN中是不适用的。平移不变性忽略了采样定律。下采样中的步长为1时,遵循平移不变性,但是当步长不为1时,会破坏平移不变性。
在特定层中,写作位置(i, j)的数据向量为xij,下一层为yij,这些函数通过以下公式计算输出yij:

其中,k称为核大小,s是步幅或下采样因子,fks决定层类型:卷积或平均池化的矩阵乘法,最大池化的空间最大值,或者激活函数的元素非线性,等等。
这种函数形式在组合下保持不变,核大小和步幅遵循以下变换规则:

虽然一般的深度网络计算一般的非线性函数,但仅包含这种形式层的网络计算非线性滤波器,我们称之为深度滤波器或全卷积网络(FCN)。FCN可以自然地在任意大小的输入上操作,并产生对应的(可能重采样的)空间维度的输出。
与FCN组合的实值损失函数定义了一个任务。如果损失函数是最终层空间维度的和,例如:

其梯度将是每个空间组件梯度的和。因此,在整个图像上计算的随机梯度下降(SGD)将与在最终层感受野的所有部分作为小批量的随机梯度下降相同。
当这些感受野显著重叠时,逐层计算整个图像的前向传播和反向传播比逐块独立计算要高效得多。
接下来,我们解释如何将分类网络转换为生成粗略输出图的全卷积网络。对于像素级预测,我们需要将这些粗略输出对应到每一个像素上。第3.2节描述了OverFeat为此目的引入的技巧。通过将其重新解释为等效的网络修改,我们获得了对此技巧的洞察。作为高效、有效的替代方案,我们在第3.3节中引入了解卷积层用于上采样。在第3.4节中,我们考虑通过分块采样进行训练,并在第4.3节中提供证据表明我们的整图训练更快且同样有效。
3.1 Adapting classifiers for dense prediction(调整分类器以进行密集预测)
典型的识别网络,都是在表面上采取固定输入的方式,产生非空间输出。全连接层需要固定尺寸(维度)(根据前面的尺寸和维度计算最后的尺寸和维度),并且丢弃空间坐标(只输出一维向量,不能变成二维,丢失了二维信息)。然而,这些全连接层也可以被视为覆盖其整个输入区域的卷积。这样做可以将它们转换为全卷积网络,使其可以接受任意大小的输入并输出分类图。这一转变在图2中有所说明。(相比之下,非卷积网络,如Le等人的网络[20],则不具备这种能力。)

此外,虽然生成的图等效于原始网络在特定输入块上的评估,但计算在这些块的重叠区域高度摊销。例如,AlexNet在典型GPU上需要1.2毫秒生成一个227 × 227图像的分类分数,而全卷积版本需要22毫秒从一个500 × 500图像生成一个10 × 10的输出网格,比原始方法快了超过5倍。
这些卷积化模型的空间输出图使其成为处理密集问题(如语义分割)的自然选择。由于每个输出单元都有对应的地面真值,因此前向传递和反向传递都很简单,并且都能利用卷积固有的计算效率(以及激进的优化)。
对于AlexNet的反向传递时间,单个图像为2.4毫秒,而全卷积10 × 10输出图为37毫秒,其加速效果与前向传递相似。这种密集反向传播如图1所示。
虽然我们将分类网络重新解释为全卷积网络,可以为任意大小的输入生成输出图,但输出尺寸通常会被下采样减少。分类网络通过下采样保持滤波器小并使计算需求合理。这使得这些网络的全卷积版本的输出变得粗略,输出尺寸相较于输入尺寸缩小了一个与输出单元感受野像素步幅相等的比例。

3.2 Shift-and-stitch is filter rarefaction(Shift-and-Stitch是卷积核稀疏化)
![图片[27] - Python AI C++笔记 - 【人工智能】FCN——语义分割的开山之作(重磅) - Python AI C++笔记 - 小竹の笔记本](https://img.smallbamboo.cn/i/2024/07/16/6695e5e6aee1b.png)
输入移位和输出交错是一种无需插值即可从粗略输出生成密集预测的技巧,由OverFeat[29]引入。如果输出被下采样了一个因子f,则输入向右移位x像素并向下移位y像素,(通过左边和顶部填充),每个(x, y) ∈ {0, . . . , f - 1} × {0, . . . , f - 1}的值都要进行一次移位。这些f^2个输入分别通过卷积网络运行,输出交错排列,使得预测对应于其感受野中心的像素。(下采样因子f,通过平移像素,产生f^2个版本的输入,从而产生了f^2个版本的输出)
仅改变卷积网络的滤波器和层的步幅就可以生成与这种shift-and-stitch技巧相同的输出。考虑一个具有输入步幅s的层(卷积或池化),以及其后的具有滤波器权重f_ij的卷积层(省略了特征维度,这里无关紧要)。将下层的输入步幅设置为1可以将其输出上采样一个因子s,就像shift-and-stitch一样。然而,使用原始滤波器对上采样的输出进行卷积不会产生与技巧相同的结果,因为原始滤波器只能看到其(现在已上采样)输入的一部分。为了重现这个技巧,可以通过如下公式将滤波器稀疏化:

(i和j从零开始)。重现整个网络输出的技巧涉及逐层重复这种滤波器放大,直到所有的下采样都被移除。 在网络中简单地减少下采样是一种权衡:滤波器可以看到更细粒度的信息,但其感受野变小且计算时间更长。我们发现shift-and-stitch技巧是另一种权衡:输出变得更密集而无需减小滤波器的感受野,但滤波器无法访问比其原始设计更细粒度的信息。 尽管我们进行了shift-and-stitch的初步实验,但在我们的模型中并未使用。我们发现通过上采样进行学习(如下一节所述)更加有效,特别是与后面描述的跳层融合结合使用时。
3.3 Upsampling is backwards strided convolution(上采样是反向步幅卷积)
插值法:
将粗略输出连接到密集像素的另一种方法是插值。例如,简单的双线性插值通过一个仅依赖于输入和输出单元相对位置的线性映射,从最近的四个输入计算每个输出y_ij。
从某种意义上说,因子f的上采样相当于以1/f的分数输入步幅进行卷积。因此,只要f是整数,一种自然的上采样方法就是使用输出步幅为f的反向卷积(有时称为反卷积)。这种操作很容易实现,因为它只是卷积的前向和反向传递的逆过程。因此,上采样在网络内部通过像素级损失的反向传播进行端到端学习。
![图片[29] - Python AI C++笔记 - 【人工智能】FCN——语义分割的开山之作(重磅) - Python AI C++笔记 - 小竹の笔记本](https://img.smallbamboo.cn/i/2024/07/16/6695e60e1e57e.png)
需要注意的是,这一层中的反卷积卷积核不必固定(例如,固定为双线性上采样),而是可以通过学习来确定。一堆反卷积层和激活函数甚至可以学习非线性上采样。
在我们的实验中,我们发现网络内部的上采样在学习密集预测时既快速又有效。我们最好的分割架构使用这些层来学习上采样,以在第4.2节中进行更精细的预测。
3.4 Patchwise training is loss sampling(Patchwise训练是损失采样)
在随机优化中,梯度计算由训练分布驱动。尽管Patchwise训练和全卷积训练都可以生成任何分布,但它们的相对计算效率取决于重叠和小批量大小。整个图像的全卷积训练与Patchwise训练相同,只不过每个批次包含图像(或图像集)中损失下所有单元的感受野。虽然这比均匀采样Patch更有效率,但它减少了可能批次的数量。然而,可以简单地通过在图像中随机选择Patch来恢复随机采样。将损失限制在其空间项的随机采样子集上(或者等效地,在输出和损失之间应用DropConnect掩码[36]),将Patch排除在梯度计算之外。
如果保留的Patch仍然有显著的重叠,全卷积计算仍将加速训练。如果梯度在多次反向传递中累积,批次可以包括来自多个图像的Patch。
Patchwise训练中的采样可以纠正类不平衡[27, 8, 2]并减轻密集Patch的空间相关性[28, 16]。在全卷积训练中,可以通过加权损失实现类平衡,并且可以使用损失采样来解决空间相关性问题。在第4.3节中,我们探讨了使用采样进行训练,并发现它并没有在密集预测中带来更快或更好的收敛。整体图像训练既有效又高效。
4.Segmentation Architecture(分割架构)
我们将ILSVRC分类器(AlexNet,VGGnet,GoogLeNet)转换为FCN,并通过网络内部的上采样和像素级损失进行密集预测增强。我们通过微调进行分割训练。接下来,我们构建了一种新颖的跳跃结构,将粗糙的语义信息与局部的外观信息结合起来,以精细化预测。
在本研究中,我们在PASCAL VOC 2011分割挑战赛上进行训练和验证。我们使用每像素多项逻辑损失进行训练,并使用平均像素交集与并集的标准度量进行验证,平均值包括所有类别,包括背景。训练过程中忽略了在地面真实值中被屏蔽(视为模糊或困难)的像素。
4.1 From classifier to dense FCN(从分类器到密集FCN)
我们首先将已经证明有效的分类架构进行卷积化处理,如第3节所述。我们考虑了在ILSVRC12中获胜的AlexNet架构[19],以及在ILSVRC14中表现异常出色的VGG网络[31]和GoogLeNet[32]。我们选择了VGG 16层网络,在这个任务上发现它与19层网络表现相当。对于GoogLeNet,我们仅使用最终的损失层,通过去掉最终的平均池化层来提高性能。我们将每个网络的最终分类层移除,将所有全连接层转换为卷积层。我们添加了一个通道维度为21的1×1卷积层,用于预测每个粗糙输出位置的PASCAL类别(包括背景)得分,然后通过反卷积层将粗糙输出双线性上采样到像素密集的输出,如第3.3节所述。表1比较了初步验证结果以及每个网络的基本特征。我们报告了在固定学习率下收敛后(至少175个epoch)所取得的最佳结果。(技巧3)

从分类微调到分割,为每个网络提供了合理的预测。即使是最差的模型也达到了当前最先进性能的约75%。装备了分割功能的VGG网络(FCN-VGG16)已经显示出在验证集上的56.0平均交并比,超过了测试集上的52.6[16]。在额外数据上训练将性能提升到验证子集上的59.4平均交并比。训练细节在第4.3节中给出。
尽管分类准确性相似,我们实现的GoogLeNet并未达到这种分割结果。
4.2 Combining what and where(结合“是什么”和“在哪里”)
我们定义了一种新的全卷积网络(FCN)用于分割,该网络结合了特征层次结构的层,并细化了输出的空间精度。参见图3。

![图片[32] - Python AI C++笔记 - 【人工智能】FCN——语义分割的开山之作(重磅) - Python AI C++笔记 - 小竹の笔记本](https://img.smallbamboo.cn/i/2024/07/16/6695e6429f214.png)
其跳跃连接就是图中两根箭头,右上角这个箭头是将pool4(1/16)和2x conv7(被还原2倍的conv7,也是1/16)进行融合,再进行上采样,最终得到FCN-16s。
同理,左下角这个箭头是将pool3(1/8),2x pool4(1/8)和4x conv7(1/8)进行融合,再上采样得到FCN-8s
这里的FCN-32s的意思是从conv7结果的1/32的图片直接上采样扩到最初的图片大小。同理FCN-16s和FCN-8s也是这个意思。
更详细的图:
![图片[33] - Python AI C++笔记 - 【人工智能】FCN——语义分割的开山之作(重磅) - Python AI C++笔记 - 小竹の笔记本](https://img.smallbamboo.cn/i/2024/07/16/6695e6645b885.png)
尽管如4.1所示,全卷积化的分类器可以微调以进行分割,并且在标准指标上得分很高,但其输出精度令人不满意(见图4)。最终预测层的32像素步幅限制了上采样输出的细节尺度(也就是说直接从1/32扩大到1效果不好)。

我们通过增加跳跃连接来解决这个问题,这些链接将最终预测层与具有更细步幅的低层结合在一起。这将线性拓扑(从头到尾的模型结构是线性拓扑结构)转换为DAG(有向无环图,加上跳跃连接之后就是DAG),边缘从低层跳跃到高层(见图3)。由于它们观察的像素较少,较细尺度的预测需要较少的层数,因此从较浅的网络输出中进行预测是合理的。结合细层和粗层使模型能够在遵循全局结构的同时进行局部预测。通过类比Florack等人的多尺度局部喷射[10],我们将我们的非线性局部特征层次结构称为深喷射(deep jet)。
我们首先通过从一个16像素步幅层进行预测,将输出步幅减半。在pool4后添加一个1×1卷积层以产生额外的类别预测。我们通过添加一个2倍上采样层并将两者的预测相加,将此输出与在conv7(卷积化的fc7)上计算的32步幅预测融合在一起(见图3)。我们将2倍上采样初始化为双线性插值,但允许参数学习,如第3.3节所述。最后,16步幅的预测被上采样回图像。我们称这个网络为FCN-16s。FCN-16s是端到端学习的,以最后一个较粗网络的参数初始化,我们现在称之为FCN-32s。作用于pool4的1x1卷积的卷积核参数初始化为零,使网络从未修改的预测开始。学习率降低了100倍。(技巧4)
学习这个跳跃网络将验证集上的性能提高了3.0平均交并比,达到62.4。图4显示了输出细节的改进。我们将这种融合与仅从pool4层学习进行比较(结果表现较差),以及仅降低学习率而不添加额外链接进行比较(这仅带来微不足道的性能提升,并且没有提高输出质量)。
我们继续以这种方式进行,将来自pool3的预测与来自pool4和conv7的预测进行2倍上采样融合,构建了网络FCN-8s。我们获得了微小的额外改进,平均交并比为62.7,并发现输出的平滑度和细节有轻微的改进。在这一点上,我们的融合改进已经达到了收益递减(也就是为什么不使用FCN-4s或者2s),无论是对于强调大规模正确性的交并比指标,还是在图4中看到的改进方面,因此我们不再继续融合更低层次。(技巧5)
通过其他方式进行细化
减少池化层的步幅是获得更细预测的最直接方法。然而,对于我们的基于VGG16的网络,这样做存在问题。将pool5层的步幅设置为1需要我们的卷积化fc6具有14×14的核尺寸,以维持其感受野大小。除了计算成本外,我们在学习如此大的卷积核时遇到了困难。我们尝试重新设计pool5以上的层,使用更小的滤波器,但未能取得可比的性能;一个可能的解释是,来自ImageNet训练权重的上层初始化是重要的。
另一种获得更细预测的方法是使用第3.2节中描述的移位和拼接技巧。在有限的实验中,我们发现这种方法的改进成本比层融合更差。
4.3. Experimental framework(实验框架)
优化(优化器) 我们通过带动量的SGD进行训练。我们使用的minibatch大小为20张图像,并通过线搜索选择了固定的学习率,分别为10^-3、10^-4和5^-5,适用于FCN-AlexNet、FCN-VGG16和FCN-GoogLeNet。我们使用动量0.9,权重衰减为5^-4或2^-4,并将偏置的学习率加倍,尽管我们发现训练对这些参数不敏感(但对学习率敏感)。我们将类得分卷积层初始化为零,发现随机初始化既不会带来更好的性能,也不会加快收敛速度。Dropout在原始分类网络中使用的地方也包含在内。(Dropout沿用之前的分类模型)
微调 我们通过反向传播对整个网络的所有层进行微调。单独微调输出分类器仅能达到完全微调性能的70%,如表2所示。考虑到学习基础分类网络所需的时间,从头开始训练是不现实的。(注意,VGG网络是分阶段训练的,而我们从完整的16层版本开始初始化。)微调粗略的FCN-32s版本需要在单个GPU上三天时间,而升级到FCN-16s和FCN-8s版本各需要一天时间。

补丁采样 如第3.4节所述,我们的全图像训练有效地将每个图像分批处理为规则网格的大型重叠补丁。相比之下,之前的工作在整个数据集上随机采样补丁[27, 2, 8, 28, 11],可能会导致更高方差的批次,从而加速收敛[22]。我们通过空间采样损失来研究这一权衡,如前所述,以某个概率1−p独立选择忽略每个最终层单元。为了避免改变有效批次大小,我们同时将每批图像的数量增加一个因子1/p。请注意,由于卷积的效率,这种拒绝采样形式比补丁训练在p足够大的情况下仍然更快(例如,根据第3.1节中的数据,至少对于p > 0.2)。图5显示了这种采样形式对收敛的影响。我们发现,与全图像训练相比,采样对收敛速度没有显著影响,但由于每批需要考虑的图像数量较多,耗时显著增加。因此,我们在其他实验中选择未采样的全图像训练。
类别平衡 全卷积训练可以通过加权或采样损失来平衡类别。尽管我们的标签有轻微的不平衡(约3/4是背景),我们发现不需要类别平衡。
密集预测 得分通过网络内的反卷积层上采样到输入尺寸。最终层反卷积滤波器固定为双线性插值,而中间上采样层初始化为双线性上采样,然后进行学习。移位和拼接(第3.2节)或等效的滤波稀疏化未被使用。
数据增强 我们尝试通过随机镜像和“抖动”图像来增强训练数据,将图像在每个方向上最多平移32像素(最粗略的预测尺度)。这并没有带来显著的改进。(技巧2)
更多训练数据 我们用于表1的PASCAL VOC 2011分割挑战赛训练集标注了1112张图像。Hariharan等人[15]为一个更大规模的8498张PASCAL训练图像集收集了标签,这些数据用于训练之前的最先进系统SDS[16]。这组训练数据将FCN-VGG16验证得分提高了3.4点,达到59.4平均交并比。
实现 所有模型都使用Caffe[18]在单个NVIDIA Tesla K40c上进行训练和测试。模型和代码将在发布时开源。
![图片[36] - Python AI C++笔记 - 【人工智能】FCN——语义分割的开山之作(重磅) - Python AI C++笔记 - 小竹の笔记本](https://img.smallbamboo.cn/i/2024/07/16/6695e69c5bc44.png)
![图片[37] - Python AI C++笔记 - 【人工智能】FCN——语义分割的开山之作(重磅) - Python AI C++笔记 - 小竹の笔记本](https://img.smallbamboo.cn/i/2024/07/16/6695e6ad57eb9.png)
5. Results
我们在语义分割和场景解析上测试我们的FCN,探索PASCAL VOC、NYUDv2和SIFT Flow。尽管这些任务在历史上区分了对象和区域,我们将两者统一视为像素预测。我们在这些数据集上评估我们的FCN跳跃架构,然后将其扩展到NYUDv2的多模态输入和SIFT Flow的语义和几何标签的多任务预测。
指标 我们报告了四个常见的语义分割和场景解析评估指标,这些指标是像素准确率和区域交并比(IU)的变体。令 nijn{ij}nij 为类 iii 的像素被预测为属于类 jjj 的像素数,其中有 ncln{cl}ncl 个不同的类别,令 ti=∑jnijt_i = \sum_j n_{ij}ti=∑jnij 为类 iii 的像素总数。我们计算如下指标:

PASCAL VOC 表3展示了我们的FCN-8s在PASCAL VOC 2011和2012测试集上的表现,并将其与之前的最先进技术SDS [16]和著名的R-CNN [12]进行了比较。我们的平均交并比(mean IU)结果比前者高出20%。推理时间减少了114倍(仅卷积网络,忽略提议和细化)或286倍(整体)。

NYUDv2 [30] 是一个使用微软Kinect收集的RGB-D数据集。它有1449张RGB-D图像,像素级标签被Gupta等人[13]整合为一个40类的语义分割任务。我们报告了在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. Conclusion
全卷积网络(FCN)是一类丰富的模型,其中现代分类卷积网络是一个特殊的案例。认识到这一点,将这些分类网络扩展到分割,并通过多分辨率层组合改进架构,大大提高了当前最先进的水平,同时简化并加快了学习和推理过程。
致谢 这项工作部分得到了DARPA的MSEE和SMISC项目、NSF奖项IIS-1427425、IIS-1212798、IIS-1116411和NSF GRFP、丰田公司以及伯克利视觉与学习中心的支持。我们感谢NVIDIA公司捐赠的GPU。感谢Bharath Hariharan和Saurabh Gupta提供的建议和数据集工具。感谢Sergio Guadarrama在Caffe中重现GoogLeNet。感谢Jitendra Malik的有益评论。感谢Wei Liu指出我们在SIFT Flow平均交并比计算中的问题和我们的频率加权平均交并比公式中的错误。
A. 交并比的上限 在本文中,即使是粗略的语义预测,我们也在平均交并比分割指标上取得了良好的表现。为了更好地理解这个指标及其方法的极限,我们计算了在不同尺度上预测性能的近似上限。我们通过对真值图像进行下采样,然后再次上采样,来模拟使用特定下采样因子可以获得的最佳结果。下表给出了不同下采样因子在PASCAL 2011验证集子集上的平均交并比。 显然,要实现远高于当前最先进水平的平均交并比,不需要像素级的精确预测。反之,平均交并比并不是衡量细尺度精度的好指标。
B. 更多结果 我们进一步评估了我们的FCN在语义分割上的表现。 PASCAL-Context [26] 提供了PASCAL VOC 2010的整个场景注释。虽然有超过400个不同的类别,我们遵循了[26]定义的59类任务,选择了最频繁的类别。我们在训练集和验证集上分别进行训练和评估。在表6中,我们将结果与卷积特征掩码[3]的联合对象+物体变体进行了比较,该方法在此任务上是之前的最先进方法。FCN-8s的平均交并比得分为35.1,相对提高了11%。
暂无评论内容