[CR]厚云填补_Grid Network

Residual Conv-Deconv Grid Network for Semantic Segmentation


Grid Network详解

Abstract

        本文提出了一种新的卷积神经网络架构GridNet,用于语义分割(全场景标记)。经典神经网络实现为从输入到输出的一个流,并在流中应用子采样算子,以减少特征映射的大小并增加最终预测的接受场。然而,对于语义图像分割,其任务是为图像的每个像素提供语义类,特征映射减少是有害的,因为会导致输出预测中的分辨率损失。

        为了解决这个问题,GridNet遵循一种网格模式,允许多个相互连接的流以不同的分辨率工作。表明,网格网络推广了许多众所周知的网络,如Conv-deconv,残差网络或U-Net网络。

        GridNet从零开始训练,并在Cityscape数据集上获得了具有竞争力的结果。

1  Introduction 

        自2012年AlexNet的成功以来,卷积神经网络(CNN)在大量应用中变得非常流行。AlexNet, VGG16和ResNet是为图像分类而设计的一些著名的架构,并显示出令人难以置信的结果。虽然图像分类旨在预测每个图像的单个类别(图像中是否存在物体),但我们解决了全场景标记的问题。RGB图像的全场景标记或语义分割旨在将图像分割成语义上有意义的区域,即为图像的每个像素提供一个类标签。在经典CNN成功的基础上,专门为语义分割设计了新的网络,称为全卷积网络。这些网络的主要优点是它们产生2D矩阵作为输出,允许网络直接标记整个图像。因为它们是完全卷积的,所以可以输入各种大小的图像。

为了构建全卷积网络,已经开发了两种策略:

  • 卷积-反卷积网络
  • 基于扩展卷积的网络

反卷积-反卷积网络由两部分组成:

  • 第一部分是带有子采样操作的经典卷积网络,其减小了特征映射的大小;
  • 第二部分是带有上采样操作的反卷积网络,其将特征映射的大小增加到原始输入分辨率。

基于扩展卷积的网络不使用子采样操作,而是在扩展卷积上使用"\grave{a} trous"算法来增加网络的接受域。

        如果在许多数据丰富的应用程序中,增加网络的深度通常与提高性能密切相关,那么也可以观察到,由于在反向传播步骤中梯度问题的消失,网络越深,其训练就越困难。残差网络(ResNet)通过使用身份残差连接使梯度更容易反向传播来解决这个问题。因此,它们通常比经典神经网络训练得更快。因此,残差连接现在在所有新体系结构中普遍使用。

        大量预训练的ResNet(通常在Imagenet上)可供社区使用。他们可以适应新的任务。然而,预训练网络的结构不能从根本上改变,这是一个问题,当一个新的体系结构出现时,比如我们的。

        在本文中,我们提出了GridNet,一个专门为全场景标记设计的新架构。GridNet由从输入图像到输出预测的多条路径组成,我们称之为流,在不同的图像分辨率下工作。高分辨率流允许网络给出准确的预测,而低分辨率流由于有更大的接受域而携带了更多的上下文。这些流与卷积和反卷积单元相互连接,形成我们网格的列。通过这些连接,可以共享来自低分辨率和高分辨率的信息。

2  Related Work 

        在传统的CNN中,卷积和非线性计算单元与子采样操作交替进行。子采样的目的是在减小特征映射大小的同时增加网络的接受域。一个大的接受域对于网络获得更大的最终预测上下文是必要的,而特征映射大小的减少是一个有益的副作用,允许增加特征映射的数量而不会使(GPU)内存过载。在期望全分辨率预测的语义分割中,子采样算子是有害的,因为它们降低了最终输出分辨率。 

        为了获得与输入图像相同分辨率的预测,Long, Shelhamer等人最近提出了全卷积网络(Fully Convolutional Networks, FCN),在经典卷积神经网络之后加入反卷积部分。其思想是,在卷积网络中减小后,使用上采样算子和反卷积(或分数跨行卷积)的反卷积部分将特征映射的大小增加回输入分辨率。Noh等人通过在反卷积部分使用最大解池上采样算子扩展了这一思想。反卷积网络是卷积one的对称,卷积中的每个最大池化操作通过共享池化位置与反卷积中的最大解池化操作相关联。Ronneberger等人在他们的U-Net中走得更远,他们将卷积部分获得的特征映射与反卷积部分的特征映射连接起来,以便更好地重建分割后的图像。最后,Lin等人使用了与U-Net相同的思想,但他们没有直接连接特征图,而是使用了refineNet单元,其中包含残差单元、多分辨率融合和链式残差池,从而使网络能够更好地学习语义转换。

        所有这些网络都是基于这样的想法,即子采样对于增加接受野很重要,并试图用反卷积技术克服分辨率损失的副作用。在GridNet中,由不同特征图大小的多个流组成,我们使用子采样和上采样算子作为流之间的连接器,允许网络在任何分辨率下做出决策。上采样算子不是用来纠正这种副作用,而是用来允许网络中的多尺度决策。在最近的一项工作中,Newell等人堆叠了许多U-Net,表明连续的子采样和上采样步骤对提高网络性能很重要。这个想法在我们的GridNet中得到了改进,流之间有很强的连接。

        Yu等研究了另一种处理子抽样副作用的方法。他们表明,对于语义标记任务,池化操作是有害的。因此,他们去除子采样算子以保持相同输入分辨率的特征映射。如果没有子采样,接受野非常小,所以他们使用扩张卷积来增加它。与经典卷积相反,卷积掩码被应用到邻近像素上,扩展卷积有一个扩展参数,可以将掩码应用到越来越多的分开像素上。在他们的工作中,Wu等人采用了在ImageNet上预训练的流行的ResNet进行语义分割。ResNet是用残差连接训练的非常深度的网络,允许梯度容易地传播到网络的第一层,纠正梯度消失的问题。Wu等人只保留了ResNet的第一层,将经典卷积改为扩展卷积。对于内存问题,他们还保留了3个子采样算子,因此最终的输出预测是输入大小的1/8,然后使用线性插值来检索输入分辨率。在中,Zhao等人用金字塔池化(Pyramid Pooling)模块代替了线性插值。金字塔池化模块由多个不同因子的池化单元组成,然后通过卷积和上样本运算来检索原始大小。然后,在给出预测的最终卷积算子之前,用不同池化大小获得的所有特征映射被连接起来。当Zhao等人在网络的末端添加一个模块来增加特征映射的大小并允许多尺度决策时,我们将这种多尺度属性直接合并到我们的不同流的网络中。

        在他们的工作中,He等人研究了残差单元的重要性,并给出了使用残差连接的不同策略的详细结果(是否应该在卷积之前使用批归一化,是否应该在加法之后使用线性算子等)。GridNet也从这些剩余单元中受益。

        Pohlen等人通过他们的全分辨率残差网络(FRRN),将卷积反卷积网络和残差网络结合起来。它们也使用不同的流,但只有两个:一个用于与上采样和下采样操作相连的剩余网络,另一个用于没有任何剩余连接的反卷积网络。GridNet包含FRNN,可以看作是该网络的推广。

        多路径网络的概念并不新鲜。Zhou等人研究了一种基于互联卷积神经网络的人脸解析任务。一个输入图像被多个CNN以不同的分辨率使用,这些CNN的特征映射是相互关联的。Huand等人使用相同的架构,但使其在测试时动态适应计算资源限制。最近,Saxena等人提出了卷积神经织物,其形成网格的结构与我们的网格非常相似,并且也使用完整的多尺度网格进行预测。然而,为了更好地缩放到全分辨率图像和大尺寸数据集,我们利用残差单元并引入了一种新的dropout技术来更好地训练我们的网格。此外,我们约束我们的网络,类似于反卷积网络,具有下采样层,然后是上采样块,其中在所有网络层上使用上采样和下采样。

3  GridNet

        图1 GridNet:每个绿色单元是一个残差块,不改变输入图的分辨率和特征图的数量。红色块是具有分辨率损失(子采样)和两倍数量的特征映射的卷积单元。黄色单元是反卷积块,它增加了分辨率(上采样),并将特征映射的数量除以2。图2显示了红色方形部分的放大图,其中包含每个块的详细组成。

        图2  GridBlock的详细架构。绿色单元是保持输入和输出之间特征映射维度不变的残差单元。红色单元是卷积+子采样,增加特征维度。黄色单元是反卷积+上采样并减少特征维度(返回到原始维度以允许添加)。梯形说明了用跨行卷积获得的上采样/下采样操作。 

        网格网络的计算图被组织成二维网格模式,如图1所示。网格中的每个特征图x_{i,j}通过第 i 行和第 j 列进行索引。图之间通过计算层进行连接。信息作为第0行第一个块的输入进入模型,并作为第0行最后一个块的输出离开。在这两个点之间,信息可以通过几种路径流动,要么直接在这些直线的入口/出口点之间流动,要么在更长的路径上流动,其中也包括索引不为0(indexes\neq 0)的线。

        信息在连接块的层中进行处理。我们模型的主要动机是水平或垂直连接特征映射的层之间的差异:

  • 我们将水平连接称为“流”。流是完全卷积的,并保持特征映射大小不变。它们也是残差,即它们预测了与其输入的差异。流块在图1中是绿色的。
  • 垂直计算层也是卷积的,但它们改变了特征图的大小:根据网格中的位置,空间大小通过子采样减小或通过上采样增大,分别如图1中的红黄块所示。

        垂直连接不是残留的。这个概念背后的主要思想是一种自适应的方法来计算信息在计算图中的流动方式。子采样和上采样是分辨率保持网络中的重要操作,它们允许在不增加滤波器尺寸的情况下显着增加接收域的大小,这将需要更多的参数。另一方面,丢失的分辨率需要通过学习的上采样层重新生成。在我们的网络中,信息可以在几个并行路径上流动,其中一些路径保留了原始分辨率(仅水平路径),另一些路径通过向下+向上采样操作。在U-Net的跳跃连接中,我们推测前者更适合细节,而高级语义信息将需要涉及垂直连接的路径。 

        按照普遍的做法,每个子采样单元将特征映射的大小减少1倍,并将特征映射的数量乘以2。更正式地说,如果流X_{i}将维度为(F_{i}\times W_{i}\times H_{i})的张量作为输入,其中F_{i}为特征映射的数量,W_{i}H_{i}分别为地图的宽度和高度,则流X_{i+1}的维度为(F_{i+1}\times W_{i+1\times}\times H_{i+1})=(2F_{i}\times W_{i}/2\times H_{i}/2)

        除了边界块之外,网格中的每个特征映射X_{i,j}是两个不同计算的结果:一个水平残差计算处理来自X_{i,j-1}的数据,一个垂直计算处理来自X_{i-1,j}X_{i+1,j}的数据,这取决于该列是子采样还是上采样。这里可以采取几种选择,包括连接特征、求和或学习融合。我们选择了求和,这样可以保持模型容量较低,并与网格流的剩余性质很好地融合。具体如下:设\Theta ^{Res}(.)\Theta ^{Sub}(.)\Theta ^{Up}(.)分别为残差单元(图1中绿色块)、子采样单元(红色块)和上采样单元(黄色块)的映射操作。每个映射以一个特征张量X和一些可训练的参数\theta作为输入。 

        如果列 j 是子采样列,则:

        否则,如果列 j 是上采样列,则:

        边界块以自然的方式简化。求和的另一种选择是特征映射连接,它增加了网络的容量和表达能力。我们在这个版本上的实验表明,训练它要困难得多,特别是因为它是从头开始训练的。 

        GridNet的容量由三个超参数N_{S}N_{Cs}N_{Cu}来定义,分别是剩余流的数量、子采样列的数量和上采样列的数量。受对称的convo-deconv网络的启发,我们在实验中设置了N_{Cs}=N_{Cu},但这个约束可以解除。 

        图3  GridNets概括了几种经典的分辨率保持神经模型,如convo -deconv网络(蓝色连接)、U-Net网络(绿色连接)和全分辨率残差网络(FRRN)(黄色连接)。

        GridNet概括了几种经典的分辨率保持神经模型,如图3所示。通过去除网格中特征映射之间的连接,可以得到标准模型。如果我们保留图3中蓝色所示的连接,我们得到的是convo -deconv网络(一条直接路径)。U-Net网络(绿色连接所示)在下采样和相应的上采样部分之间添加了跳跃连接,而全分辨率残差网络(FRRN)(黄色连接所示)添加了更复杂的结构。

3.1  GridNets的逐块Dropout 

        图4  仅使用高分辨率流的蓝色路径比同样使用低分辨率流的橙色路径短。为了迫使网络使用所有的流,我们在训练期间随机丢弃流,用红叉表示。 

        输入和输出都位于第0行的二维网格拓扑的一个副作用是,从输入到输出的路径在高分辨率流中(图4中的蓝色路径)比在低分辨率流中(例如图4中的橙色路径)更短。深度网络中的较长路径可能会陷入众所周知的梯度消失问题。因此,涉及低分辨率流的路径需要更多的时间来收敛,并且通常更难以训练。为了迫使网络使用所有可用的流,我们采用了一种受辍学启发的技术,我们称之为完全辍学。它包括随机丢弃剩余流并将相应的剩余映射设置为零。 

        更正式地说,设r_{i,j}=Bernoulli(P) 是伯努利分布中的一个随机变量,它等于1,概率为p,否则为0。则特征映射计算为:

3.2  GridNets的参数计数和内存占用 

        在神经网络中,内存占用取决于激活的数量和可训练参数的数量。在许多体系结构中,这两个数字是高度相关的。虽然在GridNet中仍然是这样,但网格结构提供了对这些数字的更好控制。让我们考虑一个按照第3节的原则构建的GridNet:

        具有N_{S}流,N_{Cs}子采样列和N_{Cu}上采样列,其中第一个流具有分辨率为W_{0}\times H_{0}F_{0}特征图,其他流通过[2x2]下采样获得,并将特征图增加2。通过对参数个数nb_{param}和激活值个数nb_{act}的精确计算,我们可以得到有意义的近似:

        这个近似说明参数的数量受流N_{S}的数量影响最大,其次是特征映射的数量(由F_{0}控制),然后才是列的数量。 

        这表明,激活的数量主要取决于第一个流的大小(宽度、高度和特征映射的数量),并随着列的数量线性增长。在实践中,网络在训练时的总内存占用不仅取决于参数的数量和激活的数量,还取决于优化器的选择和mini-batch大小。由优化器计算的梯度需要与参数本身相同的内存空间,并且优化器也可能保留参数和梯度的统计信息(Adam也是如此)。由于需要并行计算和存储多个输入的激活,小批处理的大小会增加内存占用。 

  • 12
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

IAz-

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值