
文章目录
- Abstract
- Introduction
- [Related Work](#Related Work)
-
- [Use of Pre-Trained Nets](#Use of Pre-Trained Nets)
- [U-Nets Revisited](#U-Nets Revisited)
-
- [U-Net Module Implementation](#U-Net Module Implementation)
- [SUNets: Stacked U-Nets for Classification](#SUNets: Stacked U-Nets for Classification)
- [Dilated SUNets for Segmentation](#Dilated SUNets for Segmentation)
- Experiments
- [Discussion and Conclusion](#Discussion and Conclusion)
Abstract
许多成像任务需要有关图像中所有像素的全局信息。传统的自下而上的分类网络通过降低分辨率来全局化信息;特征被汇集和下采样为单个输出。但对于语义分割和对象检测任务,网络必须提供更高分辨率的像素级输出。为了在保持分辨率的同时全局化信息,许多研究人员提出加入复杂的辅助模块,但这会带来网络规模和计算成本的大幅增加。本文提出了堆叠 U-Net(SUNets),它在保持分辨率的同时迭代地结合不同分辨率尺度的特征。SUNets 在更深层的网络架构中利用了 U-Net 的信息全局化能力,能够处理自然图像的复杂性。SUNets 在使用少量参数的情况下在语义分割任务中表现出色。
Introduction
语义分割方法将图像分解为像素组,每组像素代表一个常见的对象类别。虽然分割的输出包含在局部(像素)级别分配的对象标签,但每个标签都必须具有全局视野;每个这样的标签都依赖于图像的全局信息,例如纹理、颜色和可能跨越图像大片区域的对象边界。简单的图像分类算法通过依次池化特征来整合全局信息,直到最终输出为包含整个图像信息的单个标签。相比之下,分割方法必须输出全分辨率的标记图像(而不是单个标签)。因此,成功的分割方法必须解决这个关键问题:如何在学习长距离上下文信息的同时,在输出端保持高空间分辨率以识别小对象和清晰的边界?
对于自然图像处理而言,大多数研究都是通过两种方法中的其中一种来回答这个问题的。一种方法是使用极少的池化层,从而保持分辨率(尽管某些方法可能仍需要少量的反卷积层[1,2,3,4,5])。通过使用扩张卷积来实现大视野,这种卷积能够覆盖较大的区域。通过在每一层上保持分辨率,这种方法能够保留大量关于较小且不那么显著对象的信号。然而,这一过程是以计算成本高昂和内存消耗巨大的训练/推理为代价实现的。第二种相关方法是生成辅助的上下文聚合块[6,7,8,9,10,11,12,13,14,15],这些块包含不同距离尺度的特征,然后将这些块合并以生成最终的分割结果。这一类别包括许多众所周知的技术,例如密集 CRF [6](条件随机字段)和空间金字塔池化 [7]。这些办法面临下列挑战:
- 反卷积(即编码器-解码器)架构在低分辨率下会进行大量的非线性计算,但对高分辨率特征的处理却很少。在卷积/编码阶段,池化层能够将信息传播到较远的距离,但关于小物体的信息往往会丢失 。在反卷积/解码阶段,高分辨率和低分辨率特征会被合并,以生成上采样的特征图。然而,反卷积层的高分辨率输入来自相对较浅的层,这些层并不能有效地编码语义信息。
- 图像分类网络的参数量非常庞大(ResNet-101 模型有 4450 万个参数),而基于这些分类网络构建的分割方法通常会更加复杂。例如,在 ResNet-101 架构的基础上,PSPNet [14] 使用了 2200 万个额外参数用于上下文聚合,而 Deeplab 网络的 ASPP 和级联版本分别使用了 1450 万和 4000 万个额外参数 [7] 和 [15] 。
一种常见的且简单的分割方法是"u-网络",它会先进行一系列的卷积/下采样操作,然后是另一系列的反卷积/上采样层,这些层能够获取来自低分辨率和高分辨率尺度的信息。这种 u-网络架构在医学图像分割方面处于领先地位[16],但在面对自然图像中复杂的色彩模式、光照效果、视角和遮挡等问题时,其表现并不理想。
我们通过将 u-net 块堆叠成深度架构来增强 u-net 的功能。这解决了上述讨论的两个难题:当数据通过多个 u-net 块时,高分辨率特征会与低分辨率背景信息混合,并通过多层处理以生成具有信息量的高分辨率特征。此外,堆叠的 U-net 模型每层所需的特征图数量比传统架构少,因此在参数数量少得多的情况下仍能实现更高的性能。我们最小的模型在 PASCAL VOC 2012 语义分割任务中的 mIoU 值比 ResNet-101 高出 4.5%,而参数数量却减少了约 7 倍。
Related Work
许多模型[15、14、17、7、18、5、1、3]提升了语义分割网络的性能。这些提升主要归功于预训练模型的使用、扩张卷积层[7、13]以及全卷积架构(DCNN)。这些研究采用了多种策略来获取背景信息,这些策略大致可分为三大类。
上下文聚合模块:这些架构会在预训练网络之上放置一个特殊的模块,该模块能够整合不同距离尺度下的上下文信息。针对密集条件随机场(Dense-CRF)开发的快速且高效的算法[6]促成了众多算法[7,8,9,10]的出现,这些算法将该模块整合到输出的信念图之上。此外,通过[11,12]实现了CRF和CNN参数的联合训练。在[13]中,通过使用一系列具有逐渐增加膨胀率的膨胀层来处理信念图,从而整合了上下文信息;[18]提出了一种混合膨胀卷积框架以减轻网格化伪影。ParseNet[20]利用每一层的图像级特征信息来学习全局上下文信息。相比之下,[14,15,7]通过采用空间金字塔池化并行层实现了显著的性能提升。工作[14]在不同尺度上对输出特征图进行空间池化,而[15,7]则主张在不同的膨胀率下应用膨胀卷积。
图像金字塔:[21,22]中提出的网络通过同时处理不同尺度的输入并合并所有尺度的输出来学习上下文信息。在[22]中,使用了注意力机制来对输出图进行融合,而[21]则将由并行层块生成的所有特征图进行拼接,每个层块专为不同尺度的输入而学习。最近,[23]开发了一种可变形网络,它能够自适应地确定对象的尺度,并相应地调整每个激活函数的感知域大小。另一方面,[24]提出了一种新的目标检测网络训练范式,仅使用最接近真实尺度的提议来训练每个目标实例。
编码器-解码器:这类模型由一个编码器网络和一个或多个解码器层组成。解码器会通过整合来自所有中间层所学习到的特征图中的上下文信息来微调像素级别的标签。通常,一种流行的自下而上的预训练分类网络,如 ResNet [25]、VGG [26] 或 DenseNet [27],会被用作编码器模型。U-net [16] 常常用编码器与其对应的解码层之间的跳过连接。同样地,Segnet [28] 中的解码器通过重复使用编码器的池化索引来放大较低分辨率的图。在 [2,3,4] 中,卷积层被堆叠起来,而 [5] 则使用拉普拉斯金字塔重建网络来有选择地细化低分辨率图。Refinenet [1] 在 ResNet 编码器的每一尺度上都使用复杂的解码模块,而 [29] 则利用 Xception 网络 [30] 的特征图的简单两级解码。简而言之,[29,5] 的结构是解码和上下文聚合模块的混合体。任何需要从输入中提取多尺度信息的任务都可以从编码器-解码器结构中受益。近期关于物体检测的研究[31,32]也采用了这种结构。
Use of Pre-Trained Nets
上述提到的许多网络都大量使用了先前为其他用途而训练好的图像分类网络。ResNet 采用了身份映射技术[33],再加上批量归一化层,有助于高效地学习非常深的模型。在 ResNet 出现之前,VGG 很受欢迎。尽管参数量较大,但基于 VGG 进行的许多关于分割的基础性工作(FCN [19]、扩张网络 [13]、u-网络 [16]和 CRF [11])都构建于此之上。所有这些架构在本质上都有共同的起源,即它们都是为 ImageNet 竞赛而设计的,并且特征是自下而上进行处理的。这种原型在网络只需识别单一对象而无需精确像素定位的情况下表现良好。然而,当扩展到定位任务(如分割和对象检测)时,这些网络的全部潜力是否已被充分挖掘尚不明确。关于对象检测的最新研究[24]也表达了类似的担忧。
U-Nets Revisited
原始的 u-net 架构是在[16]中提出的,它仅使用少量的训练数据就能对生物医学图像中的细胞进行近乎完美的分割。u-nets 的结构使其能够捕捉不同尺度下的上下文信息,并将其传递到更高分辨率的层。这些高阶特征使得 u-nets 在包括语义分割[34,35,4]、深度融合[36]、图像转换[37]和人体姿态估计[38]等的各种任务中都优于之前的深度模型[19]。此外,由于 u-nets 初始的成功,许多关于语义分割[1,5,28,2,3,4]和对象检测[31,32]的近期研究也提出了一个编码器-解码器的深度架构。
U-Net 架构将其处理能力均匀分配在编码器和解码器模块中。此外,整个网络可以在端到端的设置下进行训练。相比之下,第 2 节中所回顾的较新的架构并没有均匀分配上下文特征和底层特征的处理工作。由于这些架构是基于预训练的特征提取器构建的[26,25,30],所以解码器模块是分别训练的,有时甚至是在多个阶段进行训练的。为了克服这些缺陷,[4]提出了一种基于 Densenet [27]架构的等效 U-Net。然而,Densenet 需要大量内存,添加额外的解码器层会导致内存使用量进一步增加。鉴于这些缺陷,这些架构在不同数据集和应用中的有效性尚不清楚。
本文的目标是将 u-网络(体积小、易于训练、性能高)的优点应用于复杂的自然图像分割问题 。具体而言,我们提出了一种由多个 u-网络堆叠组成的新型架构。该网络对自上而下和自下而上的特征进行反复处理,并在多个分辨率下捕捉长距离的空间信息。该网络通过端到端的方式在图像分类任务中进行训练,并且可以无缝地应用于语义分割,无需在顶部添加任何额外的模块(除了替换最终的分类器)。
我们的堆叠式 U-Net(SUNet)架构与其他相关的堆叠式编码器-解码器结构([3,38])存在一定的相似之处。傅等人[3]在强大的编码器(DenseNet)之上使用了多个卷积解码器层级(最多三个层级),而[38]则应用了多个 U-Net 模块来进行人体姿态估计。然而,[38]中每个 U-Net 模块内部的特征处理方式与我们的有所不同。[38]将每个卷积块替换为残差模块,并使用最近邻上采样进行卷积解码。相比之下,SUNets 保留了[16]中的基本 U-Net 结构。此外,SUNet 在没有任何中间监督的情况下运行,并通过逐步下采样来处理特征,而[38]则在固定分辨率下运行。
U-Net Module Implementation

M 为输入特征的数量。在 U-网络模块中,每一层的输出特征图数量相同(除了最后的 1×1 滤波器),我们将其表示为N。为了更好地理解,该图还包含了每个卷积核的视场(FoV)(顶部)以及每个滤波器输出的特征图大小(底部),假设输入为 64×64 的 I。以彩色形式查看效果最佳。
图 1 展示了我们堆叠架构中所采用的 u-net 模块的设计。每个模块由 10 个预激活的卷积块组成,每个块之前都先经过批归一化和 ReLU 非线性处理 。由步长卷积/反卷积层处理的池化/反池化操作有助于低分辨率特征与高分辨率特征之间的信息交换。在第一个编码器块 E1 的输出处,会有一个跳过连接分支。随后,E2 和 D2 块使用较低分辨率的特征图来捕获长距离上下文信息,并在 D2 的输出处将这些信息与 E1 的高分辨率特征合并 。除了瓶颈层之外,每一层(除瓶颈层外)都使用 3×3 核,并输出固定数量的特征图 N。为了降低采样操作产生的高频噪声,每个步进卷积/反卷积层之后都接有一个卷积层。与传统的 u-网络不同,我们 u-网络模块中卷积层的设计有助于在输出处保留特征图的原始尺寸(不会进行裁剪操作)。因此,可以将多个 u-网络模块堆叠在一起而不会损失分辨率。
接下来,我们将简要概述该架构的一些设计选择。与传统的 UNet 相比,SUNet 中的最大池化操作被替换为步长卷积。使用步长卷积使得每个 UNet 模块中的不同滤波器能够在不同的分辨率下运行(请参阅第 5 节中的讨论)。此外,重复使用最大池化操作可能会在扩张网络中导致网格化伪影[39]。
与[16,38]中的 u-网络不同,我们的 u-网络模块仅包含两层深度。我们在选择深度时考虑了两个主要因素:最内层卷积滤波器的视野(FoV)以及单个 u-网络模块中的参数总数。参数数量会影响 SUNet 中的堆叠数量。在保持 SUNet 总参数数量大致不变的情况下,我们尝试了更深的三层和四层深度。我们发现,深度的增加确实导致图像分类任务的性能下降。这并不令人惊讶,因为深度为两层的 SUNet 能够堆叠更多的 u-网络模块。此外,更深的 u-网络模块由于梯度消失问题[40]而使得训练最内层卷积层变得更加困难。例如,在我们当前的设计中,梯度路径的最大长度为六。众所周知,流行的分类网络[25,27]主要在具有 282 和 142 分辨率的特征上运行。在这种规模下,19 的有效视野足以捕捉长距离的上下文信息。此外,将多个 U-Net 模块进行堆叠还将有助于提高更高层的有效视场范围。
SUNets 在梯度流向最底层的 u-net 层时训练效果最佳。为避免梯度消失,我们在每个 u-net 模块周围都加入了跳跃连接[25,27]。此外,受瓶颈块设计的启发[25],我们还加入了 1×1 卷积层。瓶颈层将输入特征的数量限制在一个较小的数值(N)内,从而避免参数的过度膨胀。
在将多个 u-网络进行堆叠时,每个 u-网络模块都应当利用所有之前 u-网络模块的原始特征图。因此,我们还探索了用密集连接来替代恒等连接[27]。这种新网络需要大量内存,从而导致批归一化参数无法得到正确学习。因此,我们选择仅在每个 u-网络内部使用密集连接,即在重复使用 E1at D1 的特征图时使用。因此,所提出的 u-网络模块利用了跳跃连接,而没有受到其负担。
SUNets: Stacked U-Nets for Classification
在讨论分割方法之前,我们先介绍一种适用于图像分类的堆叠式 U-网络(SUNet)架构。由于可用于分类的已标注数据量远多于用于分割的数据量,因此分类任务通常被用于预先训练特征提取网络,然后这些网络会被调整以用于分割任务。

N 表示每个卷积层的滤波器数量。请注意,括号内的构建模块指的是图 1 中所示的集成 U-Net 模块。
SUNets 在图像分类中的网络设计总结于表 1 中。请注意,表中所示的每个"卷积"层对应着一系列"批量归一化 - 激活函数 - 卷积"层。列出的三种配置主要在每个卷积层的输出特征图数量 N 以及块 2 和 3 中的堆叠总数方面有所不同。输入图像使用一个 7×7 的卷积滤波器,然后通过一个残差块进行处理。受到关于扩张残差网络 [39] 的研究的启发,此阶段传统的最大池化层被残差块内部的步进卷积层所取代。随后,特征图通过不同尺度和逐渐降低分辨率的多个 u-网络堆叠进行自下而上和自上而下的处理。块 4 的特征图输入尺寸为 7×7,并在 u-网络模块的编码器 E2 的输入处进一步减少到 2×2。在这个分辨率下,无法有 E2 和 D2 层,因此在块 4 中采用了修剪版的 u-网络(u-net+)。u-net+ 包括一个单一级别的编码器和解码器(E1,D1)处理。在第 4 块的末尾,会进行一次批量归一化处理,并应用一个 ReLU 非线性函数。接下来,会对特征进行全局平均池化操作,并将其传递给一个 softmax 分类器。
除了每个块中的第一个 u-net 外,其余所有块中的残差连接均采用身份映射的方式实现。在第一个 u-net 中,跳过连接是通过扩展层(即 1×1 卷积滤波器)来实现的。每个块产生的特征图数量大约与所有先前 u-net 模块生成的特征图总数相等。这种安排使网络能够保留所有前序模块的原始特征图。此外,在所有其他可能性中,上述架构之所以被选择,是因为它们在图像分类任务中的性能大致与 ResNet-18、50 和 101 网络架构(在第 5.3 节中讨论)相当,尽管参数更少。然而,与关于残差网络的工作[41]不同,我们对更宽的网络(即 N> 128)的实验在 ImageNet 上并未取得任何性能提升。
与 ResNet [25] 和 DenseNet [27] 一样,SUNet 中的大部分处理工作是在 14×14 的特征尺度上进行的(共 46 个卷积层)以及 7×7 的特征尺度上(共 44 个卷积层)。然而,局部信息处理的顺序可能会导致在将这些流行的架构扩展到对象定位、检测和图像分割任务时,ResNet 和 SUNet 的性能存在显著差距。所有这些任务都需要像素级别的定位,因此需要一个能够高效整合局部和全局线索的深度架构。SUNet 的开发是实现这一目标的第一步。直观地说,多个 u-网络堆栈可以被视为 CRF [11] 中消息传递操作的多次迭代。
Dilated SUNets for Segmentation
可以简单地将 SUNet 扩展用于分割任务,方法是移除全局平均池化层(以提高输出分辨率)并以全卷积模式运行网络 。与其他关于语义分割的研究工作[14,1,15]类似,输出特征图在传递到具有多类交叉熵损失的 softmax 层之前,会使用双线性插值调整为输入图像的大小。
Dilation
对于一个 512×512 的输入图像,在 softmax 层的输出图尺寸为 16×16,即经过了 32 倍的下采样。这不足以在输出中保留精确的像素级定位信息。通过增加网络的输出图尺寸可以提高精度。这可以通过在过渡层中取消池化步幅来实现。仅仅取消步幅会导致后续层的感知域缩小两倍。因此,这减少了远距离上下文信息对输出预测的影响。然而,通过在后续层中以 2 的膨胀因子操作每个卷积滤波器,可以恢复到原始网络的感知域[7,13]。
Multigrid

图 2 展示了用于语义分割任务的样本扩张型 SUNet 架构。与 [15] 中的做法类似,我们将输出步幅定义为输入图像分辨率与输出特征图分辨率的比值。对于输出步长为 8 的情况,位于块(3)和(4)之前的池化层将被丢弃。接下来,块 3 和 4 中每个 U-Net 模块的膨胀因子分别固定为 2 和 4。在每个后续的 U-Net 模块中,3×3 卷积层的操作步长为 1。为了保持这些模块中低分辨率层的感知域不变,会应用膨胀操作。这种安排有助于网络在保留从先前模块学习到的空间信息(因为最终的 U-Net 块中没有下采样)的同时,保持每个模块内特征的距离尺度。例如,图 2 中的插图显示了块 3 中每个层的有效膨胀率。同样,U-Net+ 模块中每个层(除了瓶颈层)的膨胀率将是块 3 中对应层的两倍。每个 U-Net 模块内部膨胀因子的稳定增加和减少类似于线性系统多网格求解器[42,43],后者使用不同尺度的网格来全局移动信息。近期许多关于深度网络的研究([23,18,15])都主张采用特殊的结构来实现信息的全面整合。在 SUNet 中,多重网格结构已被融入模型之中,无需再添加其他"装饰"来实现信息的全面整合。
De-gridding Filters
通过采用扩张型 SUNets,我们观察到分割性能有了显著提升。然而,对于输出步长为 8 的情况,分割图会出现网格状伪影[18,39]。这种混叠伪影是在扩张层的采样率低于输入特征图的高频成分时产生的。u-net+ 的最终 3×3 卷积滤波器的膨胀因子为 4。直接将 u-net+ 的特征图输出传递到分类层可能会导致网格化伪影。参考文献[39]中所述,u-net+ 模块之后接有两个逐层递减膨胀因子的去网格化滤波器层。每个滤波器都是一个 3×3 卷积层,并输出 512 个特征图。
SUNet 不需要任何额外的事后结构调整,这类调整是近期一些研究(如解码层[1,3]、附加上下文聚合模块[15,14,13,7]以及学习条件随机场[11,10])所普及的。因此,我们将 SUNet 视为一个"基础款"网络。
Experiments

†表示官方PyTorch实现的错误率。


在每个 U-Net 模块内,将多重网格扩张与步进卷积进行性能对比,所使用模型为 SUNet-7-128,并以平均 IoU 进行评估。OS表示训练期间的输出步长。

在不同输出步长和推理策略下的性能对比。MS:多尺度,DL:带有去网格化层



Discussion and Conclusion
传统自下而上的分类网络的基本结构限制了它们在涉及像素级定位或分类的次要任务中的有效性。为了克服这一缺陷,本文讨论了一种新的网络架构------堆叠式卷积网络(SUNets)。SUNets 利用卷积网络在更深的网络架构中的全局信息整合能力,能够处理自然图像的复杂性。SUNets 在语义分割任务中表现极为出色,同时在 ImageNet 分类任务中也能取得相当不错的成绩。
未来的研究方向可能有助于提升使用简单 SUNet 所能达到的性能。将每个卷积块替换为相应的深度可分离卷积(如在文献[52,29,53,54]中所做那样)可能会是有利的。在 SUNet 之上添加事后上下文[14,15]或解码器网络[29]也可能有所帮助 。鉴于与 ResNet 模型相比,在语义分割任务中存在巨大的性能提升空间,显然可以将 SUNet 应用于对象检测任务。最后,正如论文中所建议的,对 SUNet 进行严格的超参数搜索和数值分析[55]可能会产生更通用以及针对特定任务的更好的模型。