网站首页 > 技术文章 正文
导读
来自中科院,高效利用空洞卷积提升语义分割性能的新方法。
摘要
空洞卷积作为一种方法被用于增加语义分割任务中的感受野。然而,在先前的语义分割工作中,很少在模型的浅层中使用空洞卷积。我们重新审视了现代卷积神经网络 (CNN) 中空洞卷积的设计,并证明了使用大内核来应用空洞卷积的概念可能是一个更强大的范式。我们提出了三条指导原则来更高效地应用空洞卷积。遵循这些指导原则,我们提出了 DSNet,这是一种双分支 CNN 架构,它在模型架构的浅层中集成了空洞卷积,并且通过在 ImageNet 上预训练几乎整个编码器来获得更好的性能。为了展示我们方法的有效性,我们的模型在 ADE20K、Cityscapes 和 BDD 数据集上实现了新的准确性与速度之间的最佳权衡。具体来说,DSNet 在 ADE20K 上实现了 40.0% 的 mIOU 和 179.2 FPS 的推理速度,在 Cityscapes 上实现了 80.4% 的 mIOU 和 81.9 FPS 的速度。源代码和模型可在 Github 上获取:https://github.com/takaniwa/DSNet。
1、介绍
语义分割是计算机视觉中的一个基础任务,要求预测输入图像中的每个像素对应的具体类别。它在自动驾驶、机器人导航和医学图像分析等多个领域有着广泛的应用。
近年来,卷积神经网络 (CNNs) 在分割任务中面临着来自视觉Transformer (ViTs)的重大挑战。无论是在高精度分割任务还是实时语义分割任务中,ViTs 都展现出了卓越的性能。RepLKNet重新审视了导致 ViTs 在计算机视觉领域取得显著成功的因素。
RepLKNet 提出,在 ViTs 的架构中,感受野的有效范围比注意力的形式更为关键。因此,他们提出了一种新颖的方法,使用大内核来使模型获得大的有效感受野,从而使得浅层和深层获取的表示之间具有更高的相似性。RepLKNet 实现了与 ViTs 相当甚至更好的性能。
RepLKNet启发我们将其设计理念扩展到空洞卷积。理论上,卷积可以达到接近大内核的感受野,使其成为一种轻量级的替代方案。类似于RepLKNet,将空洞卷积堆叠在网络的浅层可能会产生有希望的结果。然而,在RepLKNet 论文的补充实验中,空洞卷积并没有达到理论预期的效果。尽管许多先前的研究都关注了空洞卷积,但它们要么没有在网络的浅层使用空洞卷积,要么未能充分利用 ImageNet 预训练来进一步提高性能。是什么因素导致了这种现象?从网络的浅层开始堆叠空洞卷积会产生什么效果?
为了回答这些问题,我们重新思考了 CNN 中空洞卷积的设计。通过一系列实验,从单分支网络到双分支网络,以及从空洞率2到空洞率15,我们总结出了三条关于空洞卷积的经验性指导原则:
- 不要仅使用空洞卷积。结合使用空洞卷积和密集卷积可能是更好的选择。
- 避免“空洞灾难”。为了实现更高的准确性,选择适当的空洞率至关重要。
- 适当的融合机制。使用适当的融合机制来整合不同层次的信息可以提升模型的性能。
基于上述原则,我们手动设计了一种新型的双分支网络用于语义分割,称为同分辨率双分支网络 (DSNet)。该网络在实时语义分割和高精度语义分割方面均表现出优越性。我们还提供了消融实验来验证每个模块的功能。本文的主要贡献如下:
- 我们重新审视了 CNN 中空洞卷积的设计,并探索了三条关于空洞卷积的经验性指导原则。基于这些指导原则,我们提出了一种新型的双分支网络。
- DSNet 在 ADE20K、Cityscapes 和 BDD 数据集上实现了新的准确性与速度之间的最佳权衡。DSNet 同时在不同数据集上超越了基于实时Transformer和卷积神经网络的模型。
2、相关工作
2.1. 高精度语义分割
早期阶段,语义分割方法主要采用编码器-解码器模型,例如 FCN、UNet、SegNet 等。这些模型通过连续下采样获取高级特征表示,然后通过上采样或反卷积恢复分辨率。然而,常规编码器的最后一层输出缺乏空间细节,无法直接用于预测分割掩膜。如果仅去除分类骨干网络中的下采样步骤,有效感受野会变得太小,无法学习到高级语义信息。随着对准确性的需求不断增加,许多学者开始专注于设计模型的编码器部分。DeeplabV3从分类骨干网络中去除了最后两个下采样阶段,并使用空洞卷积来建立像素间的长距离连接。HRNet在骨干网络中保留了具有不同分辨率的并行分支。RepLKNet使用大卷积核来获得有效感受野,并通过结构重新参数化 解决了大卷积核过于平滑的问题,以平衡细节。
2.2. 实时语义分割
BiseNet 系列在骨干网络中使用两条路径(空间路径和上下文路径),并在最后将它们合并以实现速度和准确性的平衡。SFNet引入了流对齐模块 (FAM) 来对相邻级别的特征图进行对齐,以便更好地融合。遵循了 BiseNet 系列的设计理念,DDRNet采用双分支融合,并在末尾添加了一个上下文模块。PIDNet提出了将两条分支扩展为三条分支:空间路径 (P 路径)、上下文路径 (I 路径) 和边界路径 (D 路径),借鉴了 PID 控制器的概念。DDRNet 和 PIDNet 目前是在 Cityscapes数据集上表现最好的实时语义分割模型。
最近,许多基于Transformer的轻量级分割方法被提出。TopFormer 提出了一种结合 CNNs 和 ViTs 的新架构。RTFormer引入了一种全新的网络架构,该架构充分利用了全局上下文,并通过深度注意力改进了语义分割,同时不牺牲效率。SeaFormer引入了一种利用squeeze-enhanced轴向和细节增强特征的注意力机制,从而构建了一种称为squeeze-enhanced Axial Transformer(SeaFormer) 的新框架,专门针对移动计算领域的语义分割。TopFormer、RTFormer 和 SeaFormer 目前是 ADE20K 数据集上最先进的实时方法。
3、方法
3.1. 网络设计
为了回答第 1 节中的问题,我们重新审视了 CNN 中空洞卷积的设计,并总结出了三条经验性指导原则。
不要仅使用空洞卷积。许多先前的工作,如 DeepLab 系列和 Auto-DeepLab,都不愿意在编码器的浅层使用空洞卷积。一方面,这可能导致“网格效应”。另一方面,就像大内核一样,空洞卷积难以在上下文信息和细节信息之间找到平衡,这可能会影响模型的性能。受到 BiseNet 和 DDRNet的启发,我们建议同时使用空洞卷积和密集卷积以保持细节信息,从而消除上述缺点。从表 1 中可以看出,当仅使用空洞卷积时,网络在分类和分割任务上的准确性相对较低。然而,一旦采用了这种方法,网络的准确性有了显著提高。
避免“空洞灾难”,尽管在分割任务中展现出良好的性能,RegSeg高度依赖在其网络骨干中使用空洞率为14的空洞卷积。这一限制阻碍了其在ImageNet预训练过程中实现更好的初始化效果的能力,进而影响了其在分割任务中的进一步改进。在 ImageNet 分类任务中,典型的输入图像尺寸为 224 × 224。较大的空洞率会导致空洞卷积覆盖的范围超出未填充的特征图,并导致过大的填充区域,这会限制模型从 ImageNet 学习更好特征表示的能力。从表 1 中可以看出,对于空洞率为较大的空洞卷积(例如 d = 15),虽然在没有 ImageNet 预训练的情况下,它们在分割任务中表现出轻微的优势,但在 ImageNet 预训练后,它们的分割性能明显落后于使用较小空洞率的模型。我们将这种现象称为“空洞灾难”。令人惊讶的是,即使空洞率为12的空洞卷积可以与 ImageNet 下采样 8 倍后的特征图像素一对一对应,但“空洞灾难”依然会发生。我们认为这一现象是由过大的填充区域导致的,这减少了空洞卷积的实际有效范围,从而影响了模型在 ImageNet 上的预训练效果。
因此,如果希望通过在 ImageNet 上预训练来实现语义分割中的更高精度,选择适当的空洞率至关重要。为了进一步扩大语义分割中的感受野,可以考虑在网络骨干之外集成一个上下文模块,这样可以提供更大的灵活性。
适当的融合机制,仅仅通过逐元素加法或拼接等操作简单地合并不同层级的信息是不够的。这些操作仅提供了特征图的固定线性聚合,并没有明确判断这种组合是否适合特定的对象。一个适当的融合机制可以有效地引导两个分支的融合,增强不同层级特征之间的信息传递,并提高模型的表示能力。
许多先前的研究已经表明,相比于简单的逐元素加法和拼接,使用适当的融合机制可以获得更好的结果。我们在第 4.3 节的实验中进一步证实了这一结论。
3.2. DSNet:一种新型的双分支网络
遵循第 3.1 节中的三条指导原则,我们手动设计了一种双分支模型,模型架构图如图 2 所示。
- 我们将网络分为两个分支:空间分支和上下文分支。上下文分支主要由空洞卷积组成,具体实现为第 3.3 节中的 MFACB;而空间分支则由 3 × 3 的密集卷积构成。
- 为了充分融合两个分支的信息,我们在空间分支和上下文分支之间使用第 3.4 节中的 MSAF 创建了三个横向连接。
- 网络的骨干主要使用空洞率为较小值的空洞卷积,如 2、3 和 5,以减轻“空洞灾难”的影响。此外,骨干网络在 ImageNet 上进行了预训练,以增强特征表示能力。
- 我们在第 3.5 节中提出了一种名为 SPASPP 的上下文模块,可以在分割任务中插入到骨干网络之外,以迅速扩大感受野。
由于两个分支具有相同的分辨率,我们称其为同分辨率双分支网络 (DSNet)。我们简单设计了两个版本:DSNet 是具有快速推理能力的轻量级版本,而 DSNet-Base 则是具有较高精度的版本。DSNet-Base 相比 DSNet 有更深的架构和更多的通道。
3.3. MFACB:不同尺度的学习
为了在不同的尺度上获得更好的感知能力,受 STDC的启发,我们为语义分割引入了一种新型的编码器模块,名为多尺度融合空洞卷积块 (MFACB)。如图 3 所示,MFACB 由三个空洞卷积层组成,每个层使用不同的空洞率来扩展感受野。经过三次卷积操作后,中间的特征图被拼接,并通过 1 × 1 卷积进行通道压缩。最后,压缩后的特征图与输入特征图进行残差连接。
通过观察表 2,我们可以更深入地理解这个模块的作用。在第一个 MFACB 模块中,使用空洞率为 [2, 2, 2] 时,三个中间特征图的感受野分别为 5 × 5、9 × 9 和 13 × 13。随后,通过拼接和 1 × 1 卷积,输出特征图同时聚合了这三个不同尺度的感受野。在第二个 MFACB 模块的拼接和融合操作之后,同样地,当前层的感受野规模开始增大。在骨干网络中使用 MFACB 使模型能够有效地学习不同尺度的语义信息。
3.4. MSAF:平衡细节和上下文
跳过连接增强了不同层或尺度特征图间的信息传输,从而提高了模型的表现力。遵循第 3.1 节中的第三条建议,我们引入了一种新型的多尺度注意力融合模块 (MSAF),旨在使两个不同层级的分支能够在不互相压倒的情况下进行选择性学习。主要思想是让网络根据损失学习特征权重,从而使模型能够选择性地融合不同尺度的信息。这个模块主要可以分为两部分:多尺度注意力 (MSA) 和多尺度注意力融合模块 (MSAF)。
多尺度注意力 (MSA),如图 4 所示,MSA 的主要目的是学习权重 α 作为不同层级分支融合的基础。MSA 模块主要分为两部分:区域注意力和像素注意力。为了更详细地解释 MSA,我们将通道数、特征图宽度和高度分别表示为 C、W 和 H。
1): 区域注意力:区域注意力衡量特征图中不同区域的重要性。我们提出,在使用注意力机制时考虑感受野是必要的。为了方便起见,我们将特征图划分为相同大小的块,例如 1 × 1 表示通道,2 × 2 表示 4 个块,4 × 4 表示 16 个块。在 DSNet 中,我们将特征图划分为 1×1、4×4、8×8 和 16×16 的等大小区域。以 4 × 4 为例,我们首先对特征图进行平均池化得到,然后进行通道压缩与扩展得到。为了与像素注意力兼容,我们将其重塑回。区域注意力的数学公式可描述为公式 2。类似于 SE 注意力,通道压缩与扩展的目的在于降低计算复杂度并增强非线性。GONV 表示通道扩展与压缩的操作。
2): 像素注意力:像素注意力衡量每个像素的重要性。这个模块不需要池化和重塑。如公式 3 所示,我们直接对进行通道压缩与扩展以得到 。基于同样的原因,可以衡量每个像素的重要性。
多尺度注意力融合模块。我们通过叠加像素注意力和区域注意力来获取特征图中不同位置的权重,推导这些权重的公式可以用公式 4 表示。如图 4 所示,我们最终通过逐元素乘法融合两个分支。区域注意力的数学公式可以用公式 5 描述。
3.5. SPASPP:进一步提取上下文信息
我们提出一个新的模块来从特征图中进一步提取上下文信息。图示了串并联空洞空间金字塔池化 (SPASPP) 的内部结构。与 ASPP完全并行的结构不同,我们堆叠了几层 3×3 空洞卷积。随后,我们将通过堆叠空洞卷积获得的中间特征图与全局池化后的上采样特征图进行拼接。堆叠空洞卷积和拼接的目的是在预训练的 ImageNet 主干网络之外使用此上下文模块快速扩大感受野,同时也能获得不同尺度的上下文信息。然后,我们使用 1×1 卷积压缩通道,并与输入进行残差连接。图 5 显示了具有不同空洞率的卷积核的融合形成了多尺度特性。使用加法模式而非完全并行模式的目的是为了让模型获得更丰富的上下文信息,并进一步扩大感受野,从而在需要大感受野的任务中表现更好。表 3 显示,与未添加额外卷积层的 ASPP 相比,SPASPP 可以提供更丰富的上下文信息,同时保持与 ASPP 基本相当的速度。
4、实验
4.1. 数据集
我们在 ADE20K、Cityscapes 和 BDD 上进行了分割实验。
4.2. 实现细节
在 ImageNet上预训练后,我们在语义分割任务上的训练协议几乎与之前的工作相同。我们使用动量为 0.9 的 SGD 优化器。采用“多项式”学习率策略来衰减初始学习率。数据增强包括随机水平翻转、随机缩放(比例范围为 [0.4, 1.6])以及随机裁剪。对于DSNet,在 Cityscapes、ADE20K 和 BDD 上的迭代次数、初始学习率、权重衰减、裁剪尺寸和批量大小分别为 [120k, 0.01, 0.0005, 1024 × 1024, 24]、[150k, 0.02, 0.0001, 512 × 512, 32] 和 [87k, 0.01, 0.0005, 512 × 512, 24]。对于 DSNet-Base,在 Cityscapes、ADE20K 和 BDD 上的迭代次数、初始学习率、权重衰减、裁剪尺寸和批量大小分别为 [120k, 0.01, 0.0005, 1024 × 1024, 32]、[160k, 0.02, 0.0001, 512 × 512, 32] 和 [108k, 0.01, 0.0005, 512 × 512, 16]。
我们在一个平台进行推理速度测量,该平台包括单个 RTX 4090、PyTorch 1.10、CUDA 11.3、cuDNN 8.0 和 Ubuntu 环境。我们将批量归一化集成到卷积层中,并将批量大小设置为 1 以测量推理速度。
特别是,为了便于与一些基于 mmcv 框架开发的模型进行速度比较,我们还使用了 RTX 3090 来推断速度,因为无论是将我们的模型移植到 mmcv 框架还是将基于 mmcv 框架的模型移植到我们的环境中都需要大量的时间开销。基于 mmcv 的模型的速度可以在 SCTNet 中找到。
4.3. 消融研究
多尺度注意力融合模块 (MSAF) 对于双分支网络的应用。我们将不同的融合方法应用于模型的三个侧向连接。实验结果如表 4 所示。与逐元素加法 (Add) 相比,所有三种注意力融合方法都在分割任务中显示出优势,提高了准确性的同时几乎没有损失速度。特别是,我们提出的多尺度融合模块在分类和分割任务中均表现出优越性能,在 Imagenet1k 分类任务上提高了 0.9%,在 Cityscapes 上提高了 0.7%。与 AFF 和 iAFF相比,它仍然实现了接近 0.4% 的准确率提升。这个实验评估了第 3.1 节中关于使用空洞卷积的第三个建议。
MFACB 的有效性。为了证明 MFACB 的有效性,我们进行了一项简单的对比实验。我们采用了两种不同的策略,分别称为实验 1 (EXP 1) 和实验 2 (EXP 2),如表 5 所示。为了保证实验的公平性,我们采用了相同的训练策略,使用两块 RTX 4090 GPU,批量大小为 12,两个实验各进行了 50,000 次迭代。从表格中可以看出,在相同的空洞率和相同数量的空洞卷积的情况下,MFACB 相比于 BasicBlock 达到了更好的性能。这进一步加强了我们在上下文分支中使用 MFACB 的决心。
SPASPP 的有效性。我们将 SPASPP 与其他上下文提取模块进行了比较,包括空洞空间金字塔池化 (ASPP)和深度聚合金字塔池化模块 (DAPPM)。为了达到更高的基线,我们没有减少 DAPPM 的中间通道数。从表 6 可以看出,本文提出的 SPASPP 将准确性从 77.3% 提高到了 80.4%,而推理时间仅增加了 1-2 毫秒。此外,与 ASPP 相比,SPASPP 几乎没有速度损失的情况下提高了 0.7% 的准确性。
4.4. 和其他方法的对比
5、结论
本文重新审视了空洞卷积的应用,并基于几个简单的指导原则提出了一个新的基于相同分辨率的双分支网络。DSNet 在三个大型数据集上取得了有前景的结果。由于我们的方法是实时的,因此在实际应用中应用它可以带来显著的好处。此外,为了进一步提高准确性,可以考虑在上下文分支中用 5×5 或更大的空洞卷积替换现有的大小,这可能会导致更大的感受野。
—END—
论文链接:https://arxiv.org/pdf/2406.03702v1
猜你喜欢
- 2024-09-24 2019年的语义分割指南
- 2024-09-24 夜间场景缺数据,如何进行语义分割?浙大提出基于GAN的高鲁棒夜间语义分割框架
- 2024-09-24 汇总|实时性语义分割算法
- 2024-09-24 论文笔记:用于语义分割的全卷积网络(FCN)
- 2024-09-24 资源推荐:语义分割江湖三剑客
- 2024-09-24 另辟蹊径,中科院自动化所等首次用图卷积网络解决语义分割难题
- 2024-09-24 PP-LiteSeg: 来自baidu的实时语义分割模型
- 2024-09-24 PIDNet: 受PID控制器启发的实时语义分割网络
- 2024-09-24 金字塔注意力网络:一种利用底层像素与高级特征的语义分割网络
- 2024-09-24 一文带你读懂 SegNet(语义分割)
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- oraclesql优化 (66)
- 类的加载机制 (75)
- feignclient (62)
- 一致性hash算法 (71)
- dockfile (66)
- 锁机制 (57)
- javaresponse (60)
- 查看hive版本 (59)
- phpworkerman (57)
- spark算子 (58)
- vue双向绑定的原理 (68)
- springbootget请求 (58)
- docker网络三种模式 (67)
- spring控制反转 (71)
- data:image/jpeg (69)
- base64 (69)
- java分页 (64)
- kibanadocker (60)
- qabstracttablemodel (62)
- java生成pdf文件 (69)
- deletelater (62)
- com.aspose.words (58)
- android.mk (62)
- qopengl (73)
- epoch_millis (61)
本文暂时没有评论,来添加一个吧(●'◡'●)