文章于2024年4月发表在 IEEE Transactions on Neural Networks and Learning Systems (TNNLS) 上: https://ieeexplore.ieee.org/document/10507032
近年来,计算机视觉中的多尺度问题逐渐引起人们的关注。本文聚焦于目标检测与识别任务的多尺度表示,全面介绍了多尺度深度学习的发展历程,构建了一个概括能力强且易于理解的分类体系。首先给出“尺度”的定义,阐述了人类视觉系统中的多尺度机理,进而引出计算机视觉中的多尺度问题。其次,介绍了得到充分发展的多尺度表示方法,包括金字塔表示、尺度空间表示和多尺度几何表示。然后,对多尺度深度学习方法进行分类和讨论。具体来说,将多尺度卷积神经网络(CNNs)抽象到经典的CNN框架中,形成自然的分类。此外,对视觉Transformers(ViTs)中的多尺度建模方法进行总结。对多种方法在不同任务上的性能进行了比较,评估了不同多尺度结构设计的有效性。最后,在深入了解现有方法的基础上,提出了多尺度深度学习中值得探索的一些问题,作为未来可能的研究方向。
下面,我们将多尺度 CNNs 放入 CNN 经典架构中,得到自然的分类结果。具体分为输入、卷积、池化、输出,以及层与层之间的连接,每种分类的代表性方法如图9所示。这可以涵盖绝大多数现有的多尺度方法。
5.1.1. 输入 多尺度输入也就是对输入网络的图像进行多尺度表示,通常采用传统方法中的金字塔表示法。Farabet 等人 [89] 在场景标记任务中对原始输入图像进行拉普拉斯金字塔表示,然后利用卷积网络进行特征提取。该方法充分利用了像素的上下文信息,实现了捕捉纹理、形状的强大表示。同年,Schulz 等人 [90] 对输入图像采用相似的金字塔表示方法,并且在输出中使用了一个成对的类过滤器来对预测图进行平滑。Papandreou 等人 [91] 将输入图像的金字塔表示展开为一个图像 “patchwork”,然后滑动固定大小的窗口,从而实现多位置和多尺度的搜索。 Girshick 等人 [92] 将传统的特征提取方法可变形部件模型 (DPM) 与 CNN 相结合,提出了 DeepPyramid DPM。该模型从输入图像中构建金字塔表示,将其输入到CNN中得到相应的特征金字塔,再将不同尺度的特征送入到 DPM-CNN 模块,得到一个DPM分数的金字塔。与 R-CNN 相比,该方法在 PASCAL VOC 数据集上的目标检测结果更好,并且运行速度更快。与 DeepPyramid DPM 密切相关的是 Wan 等人 [94] 的同期工作,他们同样使用 CNN 从图像金字塔中提取特征,然后将一组负责捕捉不同尺度视图的 DPM 应用于这些特征图,从而产生一个响应金字塔,经过非极大值抑制后得到最终的预测结果。 图像金字塔作为一种常见的多尺度表示方法,被广泛应用在图像分类、语义分割、目标检测、人脸检测等各种计算机视觉任务中。虽然图像金字塔简单有效、易于理解,但是多个尺度图像的输入会增大计算成本,增加算法的时间复杂度,因此其实际的应用价值十分有限。Hao 等人 [99] 针对金字塔方法的计算成本问题,提出尺度感知人脸检测。他们认为在大多数情况下,图像金字塔中只有少数的有效层,而在无效的尺度上进行搜索是对计算资源的浪费。SAFD 利用 CNN 对人脸尺度分布直方图进行预测,然后根据直方图对原始输入图像进行重采样,再将重采样后的图像送入检测网络中进行人脸检测。大量实验验证了 SAFD 算法的有效性。 Singh等人 [100] 提出了一种叫作图像金字塔尺度归一化 (SNIP) 的训练方案,该方法是图像金字塔方法的改进,对于金字塔中某个尺度图像中的目标,只提供适合于该尺度的标签用于训练。也就是说,在大尺度图像中,提供大目标的标签;在小尺度图像中,则提供小目标的标签。这样可以充分利用所有的训练样本,避免了不同尺度图像中不同大小的目标在训练过程中的相互影响。后来,Singh 等人 [101] 对 SNIP 进行了改进,提出了高效重采样图像金字塔尺度归一化 (SNIPER),该方法将图像金字塔的每一层裁剪为同样大小的低分辨率芯片用于训练,通过设计正负芯片采样,可以在提高训练速度的同时保证算法的性能。 除了金字塔表示,也有一部分工作将多尺度几何分析与 CNN 相结合,即首先使用多尺度几何工具对输入数据进行多尺度、多方向的特征表示,然后将得到的特征输入到 CNN 中进行进一步的特征提取。Liu 等人 [102] 实现了这样的结合,他们提出了 Contourlet CNN (C-CNN)。Gao 等人 [103] 提出了一种多尺度曲波散射网络 (MSCCN),该方法使用多尺度曲波散射模块实现图像的高效特征表示,将该模块嵌入到现有的网络中,取得了更好的分类精度。后来,他们将该方法进行改进,提出了一种更灵活的动态框架,称为多尺度动态曲波散射网络 (MSDCCN) [104],该方法通过动态多尺度重用结构实现训练过程中的特征表示改进。 在测试阶段,研究者们也经常对输入图像进行多尺度处理。通常,他们对数据进行平移、裁剪、翻转、缩放,以及多视图处理,然后将其输入到训练好的模型中,进行联合预测,得到不同尺度下的输出结果,再对多尺度输出结果进行相应的整合和处理。这样的多尺度测试的代表性方法称为测试时时间增强,多用在深度学习算法提交结果进行排名的时候。 5.1.2. 卷积 作为 CNN 的核心组件,卷积层主要用来提取局部特征,不同大小的卷积核对应的感受野不同。因此,对于不同尺度的特征,最直观的方法就是使用不同大小的卷积核来进行特征提取。Szegedy 等人 [106] 在 GoogLeNet 中就采用了这样的方法。他们提出了 Inception 结构。在该结构中,1×1、3×3、5×5 三种不同大小的滤波器被用来进行多尺度特征提取。特别地,他们还设置了 1×1 卷积用于降维。 另一种用于多尺度特征提取的卷积结构叫作扩张卷积,也叫空洞卷积。该概念最初出现在小波分解中 [107][108][109]。传统 CNN 用于语义分割任务时,重复的池化和下采样操作会导致特征图分辨率降低,造成细节信息损失。针对该问题,Chen 等人 [110] 提出 DeepLab 系统。该系统引入空洞卷积,在增大卷积核感受野的同时不增加参数数量,从而实现多尺度的密集特征提取。后来,他们提出了 DeepLabv2 [111],对空洞卷积进行了更加深入的探讨。不同于 DeepLab 中对 CNN 的某一层或某几层采用空洞卷积操作,Yu 等人 [112] 提出了一个系统的扩张卷积模块。该模块在连续的网络层中应用扩张卷积,对感受野进行指数级的扩张,从而实现多尺度的上下文信息聚合。
除了语义分割,扩张卷积在目标检测、显著性预测、光流、音频生成等任务上都得到了广泛的应用。受到人类视觉系统中感受野特性的启发,Liu 等人 [117] 提出了感受野模块 (RFB)。该模块结合 Inception 结构和空洞卷积,来模拟视觉神经细胞感受野的大小与偏心率之间的正相关关系。Li 等人 [118] 为了使网络在不同的尺度对不同大小的目标具有统一的特征表示能力,提出了 TridentNet,该网络使用具有不同扩张率的扩张卷积构建了多个分支,不同的分支具有不同的感受野,提取不同尺度的特征。作者还借鉴了 SNIP 中的尺度感知思想,为不同分支分配了对应尺度的目标标签。 尽管扩张卷积具有很多优点,但是在对其进行连续使用时,如果对扩张率选择不当,比如所有层使用相同的扩张率,那么某些像素便会始终无法参与运算,造成局部信息的缺失,Wang 等人 [119] 将其称为“网格化”。为此,他们提出混合扩张卷积 (HDC) 来作为该问题的解决方案。HDC 致力于让经过一系列卷积操作后的感受野完全覆盖正方形区域,不存在孔或者边缘的缺失。在 HDC中,扩张率设计为以组为单位的锯齿状的结构,然后对不同组进行重复,如 [1, 2, 5, 1, 2, 5]。除此之外,同一组的扩张率不应该有大于1的公约数,这一点与 [112] 具有关键的区别。 Dai 等人 [120] 对扩张卷积进行推广,提出了可变形卷积,通过引入额外的偏移量来增加网络中的空间采样位置。在输入特征图上应用额外的卷积层来获得这些偏移量,并在训练过程中对其进行学习。可变形卷积的感受野可以根据目标的尺度和形状进行自适应调整,从而实现多尺度的密集特征提取。与可变形卷积相似的一个工作是主动卷积 [121],该方法可以定义不同形式的卷积,并且通过反向传播来学习其形状。二者的主要区别在于,主动卷积中的偏移量是在每次训练时都要重新进行学习的静态模型参数,而可变形卷积中的偏移量是动态的模型输出。
5.1.3. 池化 为了解决 CNN 固定尺寸输入导致忽略尺度多样性的问题,He 等人 [122] 基于传统的空间金字塔特征提取方法提出了空间金字塔池化 (SPP)。通过将最后一个池化层替换为 SPP 层,不同尺度的特征得以聚合并生成固定长度的输出,然后将其输入到全连接层。在目标检测任务中,SPPNet 从特征图的候选区域中提取窗口级特征,而不像 RCNN 直接从图像区域中提取特征。后来,Zhao 等人 [125] 将 SPPNet 应用于语义分割中,提出了金字塔场景解析网络 (PSPNet)。该网络通过金字塔池化模块将不同尺度的上下文信息进行聚合,从而获得包含局部和全局信息的特征表示,为像素级预测提供了良好的框架。
在 DeepLabv2 中,作者将 SPP 和空洞卷积进行结合,提出了空洞空间金字塔池化 (ASPP) 来解决目标的多尺度问题。为了对位于特征图中心的像素进行分类,ASPP 使用多个具有不同空洞率的并行空洞卷积层对不同尺度的上下文特征进行提取,并在各自的分支中进行处理,最后进行融合来生成最终结果。虽然 ASPP 可以有效地利用多尺度信息,但是在空洞率过大时,卷积核上的有效权值会变得很少,此时卷积核退化为 1×1 的滤波器。为了克服这一问题,Chen 等人 [126] 采用了PSPNet 中的全局特征提取方法,对 ASPP 进行改进,在最后一个特征图上应用全局平均池化来获得图像级信息。此外,他们还将批量归一化加入到 ASPP 中。这些改进使得模型的性能有了显著的提升。
5.1.4. 连接 在 CNNs 中,层与层之间主要有两种连接:跳跃连接和并行连接。 A. 跳跃连接 全卷积网络 (FCN) [128]是采用跳跃连接的代表性网络,由 Long 等人在2015年提出。FCN 将 CNN 中用于分类的全连接层替换为卷积层,实现了端到端的像素级预测,是语义分割领域的里程碑之作。其中的跳跃连接结构可以将来自不同层次的多尺度特征进行有效的结合,包括深层的粗特征以及浅层的细特征,从而提高分割准确率。在FCN的网络结构中,最上层是常见的串联分层网络结构,对最后一个卷积层 conv7得到的特征图进行32倍的上采样,得到预测图,称为 FCN-32s。第二行是将 conv7 的特征图进行2倍上采样后与 pool4 的特征图进行融合,得到16倍上采样的预测结果 FCN-16s。此时网络既能保留大尺度的语义信息,又能保留小尺度的细节信息。最后一行则将来自 pool3 的预测结果与前面二者融合,经过上采样得到 FCN-8s,这进一步提供了细节信息。
尽管 FCN 中的跳跃连接可以充分利用网络不同层次的特征,但却没有考虑像素与像素之间的关系,也就是多尺度上下文,这在语义分割中是一个非常重要的考量因素。为了解决这一问题,Liu 等人 [129] 向 FCN 中添加全局上下文,提出了 ParseNet。具体来说,使用全局池化提取某一层的全局特征,经过反池化操作后再与原特征图进行组合,一起输入到下一层。ParseNet 上下文模块可以有选择地应用于不同的特征图,在提升性能的同时没有引入太多的计算开销。事实上,空洞卷积和ASPP 都是为了充分利用多尺度上下文特征而提出。 U-Net [130] 也是在 FCN 基础上的修改和扩展,具有更加优雅的“U”型结构。类似地,U-Net 也使用了跳跃连接,不过与 FCN 不同的是,U-Net 在融合不同尺度的特征图时采用的是拼接的方式,即不同通道直接进行叠加,而 FCN 则是对应位置进行求和。U-Net 的结构包括一个收缩路径和扩展路径,也被称为编码器-解码器。收缩路径是 CNN 的标准结构,由重复的卷积和池化层组成。扩展路径通过连续的上采样操作来逐步恢复特征图到原始图像大小。采用跳跃连接将收缩路径中的特征图叠加到扩展路径的对应层中,这样可以将不同尺度的上下文信息补充到上采样特征图中,并且传播到更高分辨率的层。U-Net 起初被应用在医学图像分割中,但其简洁和有效的网络结构使其迅速泛化到各种语义分割任务中,很多变体也接连被提出 [133][134][135]。
一些其他的 CNN 网络也应用了跳跃连接。在 DenseNet [136] 中,网络中的每一层和位于它的前馈位置的每一层都进行跳跃连接。这样一来,对于一个 L 层的网络,其总连接个数为 L(L+1)/2。该网络充分利用了网络中的多尺度特征,缓解了梯度消失问题,并大大减少了参数数量。Takahashi 等人 [137] 将 DenseNet 和多因子扩张卷积结合,提出多扩张 DenseNet。Pinheiro 等人 [138] 提出了一个自下而上/自上而下的架构 SharpMask 用于对象实例分割。与 U-Net 相似,该网络使用跳跃连接实现两条路径中的特征图的拼接。目标检测中的著名网络 FPN 也使用了类似的跳跃连接。 B. 并行连接 并行连接就是使用多个并行支路在不同尺度对特征进行处理后再组合在一起的一种方法,在很多网络中都有应用。如 PSPNet、SPPNet、DeepLab 系列,以及 Inception 系列。
5.1.5. 输出 对于那些在多个尺度的特征图上分别进行预测然后输出的网络,我们称为多尺度输出网络。有一部分多尺度输入网络,尤其在用于目标检测任务时,都是在图像金字塔的不同层上分别进行检测,形成一个多尺度输出金字塔,再将不同的结果组合成最终结果,如SNIP[100]、DeepPyramid DPM [92] 等。 还有一类网络直接在 CNN 不同层的特征图上进行预测,这利用了 CNN 固有的多尺度特性。在 CNN 中,随着层数越来越深,网络在越来越大的尺度上提取特征,实现由局部细节到全局语义信息的过渡,这也是 CNN 与人类视觉系统的分层机制类似的地方。这样的网络如用于目标检测的 SSD [148] 和用于人脸检测的 SSH [149]。SSD 在基础网络上添加了几个额外的卷积层,增加特征提取的多样性,最后在多个不同深度的特征图上进行多尺度预测。SSH 从网络的不同层上构建了三个检测模块,分别用来检测大、中、小三种尺寸的目标。
虽然 CNN 的不同层次可以形成天然的多尺度结构,但是浅层特征和深层特征对语义信息的捕捉能力是不同的,因此直接在不同层进行存在很大的局限性。针对这一问题,Lin 等人 [139] 提出了特征金字塔网络 (FPN),通过构建自上而下的路径和跳跃连接来在所有的尺度上提取强语义特征,然后分别进行预测。他们还对不同类型的网络内特征金字塔进行了分析,这与我们对多尺度输出的描述相一致。FPN 巧妙的多尺度特征预测方式使其在目标检测领域有着广泛的应用,许多工作也基于 FPN 展开研究 [150][151][152][153][154]。
5.2. 多尺度视觉Transformer Transformer 的本质是一个编码器-解码器结构,核心是自注意力机制。它最初用于自然语言处理,后来被推广到计算机视觉领域。在编码器和解码器中,主要的组成部分是多头注意力和全连接前馈网络。其中,多头注意力由若干个并行的可伸缩点乘注意力层组成,其好处在于可以让模型关注到位于不同子空间的特征。 在2020年,Carion 等人 [156] 将 CNN 的特征提取骨干和 Transformer 的编码器-解码器结构结合起来,提出了端到端的目标检测网络 DETR,并将其泛化到全景分割任务。DETR 在检测大目标时表现得很好,但在小目标上性能稍逊,这是因为 Transformer 的注意力模块在处理高分辨率特征图时具有很大的局限性。为了解决这一问题,Zhu 等人 [159] 受到可变形卷积的启发,提出了一种可变形注意力模块,对参考点周围的一小部分关键点进行采样,从而缓解特征空间分辨率的问题。作者将可变形注意力模块扩展到聚合多尺度特征,并用其来代替原始的注意力模块。 Fan 等人 [160] 将 CNN 结构中的多尺度特征思想与 Transformer 进行结合,提出了多尺度视觉Transformer (MViT),用于视频和图像识别。MViT 通过多个通道分辨率尺度阶段来实现多尺度特征提取,其浅层用来建模高分辨率低级视觉信息,深层用来处理低分辨率的高维特征。后来,Li 等人 [161] 提出分解相对位置嵌入和残差池化连接对 MViT 进行了改进。Wang 等人 [162] 提出了金字塔视觉 Transformer (PVT),该架构采用渐进收缩金字塔来减少大型特征图的计算,可以用来替代 CNN 骨干网络。Zhang 等人 [163] 对ViT进行优化,将其升级为高效 ViT (E-ViT),通过连续使用多个 E-ViT 模块来构建多尺度视觉 Transformer。 Chen 等人 [164] 提出了一个双分支 Transformer 来处理不同大小的图像块,从而产生不同尺度的图像特征。通过交叉注意力来学习这些多尺度特征。Yuan 等人 [166] 受到 HRNet 的多尺度并行设计思想的启发,提出了高分辨率 Transformer (HRFormer),学习用于密集预测任务的高分辨率表示。不同于 HRFormer 中使用 Swin Transformer 块来替代 HRNet 中的残差块,Gu 等人 [168] 提出了一个结合 HRNet 的纯 ViT 骨干网络,该网络具有新的异构分支设计,性能更好。 Zhang 等人 [169] 将 ResNet 的网络结构与 Transformer 结合,提出了 ResT,该网络使用四个阶段构建多尺度特征图,使用空间注意力构建位置编码,可以灵活处理任意大小的输入图像。在原始 ViT 模型的自注意力模块中,每个 token 特征具有相似的感受野,这会限制模型对多尺度特征的捕捉能力。为了解决这一问题,Ren 等人 [170] 提出了一种分流自注意力 (SSA),通过对多个注意头进行分组来实现多尺度注意力机制,从而有效建模多尺度对象。 6. 方法比较 首先,对前文中介绍的多尺度深度学习方法的 SOTA 结果进行总结,涉及到的计算机视觉任务有图像分类、目标检测、语义分割。然后,在最具有多尺度表示需求的目标检测和语义分割方法上进行更为细节的讨论。具体来说,对多尺度 CNNs 中不同多尺度组件和其性能提升展开研究。