多尺度学习框架被认为是促进语义分割的一类模型。然而,这个问题并不想象的那么轻描淡写,特别是对于现实应用的部署,这通常需要高效率的推理延迟。
在本文中,作者从轻量级语义分割的角度彻底分析了卷积块的设计(卷积类型和卷积中的通道数)以及跨多个尺度的交互方式。通过如此深入的比较,作者总结出3个原则,并相应地设计了轻量级和渐进式可扩展网络(
LPSNet
),它以贪婪的方式扩展了网络的复杂性。从技术上讲,LPSNet
首先利用这些原理来构建一个微型网络。然后,LPSNet
通过一次扩展单个维度(卷积块的数量、通道的数量或输入分辨率)逐步将微型网络扩展到更大的网络,以满足最佳速度/准确性权衡。在3个数据集上进行的大量实验一致地证明了
LPSNet
优于几种有效的语义分割方法。更值得注意的是,LPSNet
在Cityscapes
测试集上实现了 73.4% mIoU,在 NVIDIA GTX 1080Ti 上的速度为 413.5FPS,相对于STDC
性能提升 1.5%。
1、简介
语义分割是将语义标签分配给图像或视频帧的每个像素。随着深度神经网络的发展,最先进的网络已经成功地突破了语义分割的极限,并带来了显著的性能提升。例如,DeepLabV3+ 和 Hierarchical Multi-Scale Attention 在 Cityscapes 测试集上达到 82.1% 和 85.4% mIoU,在该数据集上几乎饱和。这些成功背后的秘诀源于多尺度学习。
在文献中,最近的进展涉及利用多尺度学习沿3个不同维度进行语义分割:U-shape
、Pyramid Pooling
和Multi-Path Framework
。
U-shape
结构分层融合特征,逐步提高空间分辨率,自然产生多尺度特征。Pyramid Pooling
方法通过在多个尺度上执行空间或空洞空间金字塔池化来深入研究多尺度信息。Multi-Path Framework
将输入图像的大小调整为多个分辨率或尺度,并将每个尺度输入到深度网络的单独路径中。通过这样做,Multi-Path
设计将输入分辨率从高到低并行放置,并明确维护高分辨率信息,而不是从低尺度特征图恢复。因此,学习到的特征可能更有能力对每个像素进行分类和定位。
本文宜久采用优雅的Multi-Path Framework
方法,并进一步发展这种类型的架构,并在语义分割方面具有良好的准确性/速度折衷。本文的设计理念来自2个方面:
- 用于语义分割的轻量化计算单元
- 在平衡准确性和推理延迟的同时逐步扩大网络
作者建议通过探索卷积块的基本单元来探索第1个问题,包括卷积的类型和卷积中的通道数,基于有效语义分割中的几个唯一性(例如,大特征图、细通道宽度)。
此外,作者进一步详细阐述了在精度/速度权衡方面跨多条路径的不同交互方式。基于这些轻量级的实践,作者构建了一个微小的模型,然后沿着多个可能的维度逐步扩展微小模型,并在每一步中选择一个实现最佳权衡的单一维度,以缓解精度/速度平衡问题。
为了实现这个想法,作者提出了用于高效语义分割的轻量级和渐进式可扩展网络 (LPSNet
)。具体来说,作者基于低延迟机制设计了新的Multi-Path
机制并应用到LPSNet
。每条路径都将调整大小的图像作为单个网络的输入,该网络由堆叠的卷积块组成。跨路径的网络共享相同的结构,但具有独立的可学习权重。所有路径的输出被聚合以生成分数图,通过双线性上采样对像素级预测进行上采样。
为了实现轻量级和高效的架构,作者还研究了卷积块的基本单元,并根据经验建议纯粹使用具有 -通道宽度的 3×3 卷积。此外,利用一种简单而有效的双线性插值方法来促进路径之间的相互交换和交互。有了这些实用的策略,LPSNet
首先构建了一个微型网络,然后以渐进的方式将微型网络扩展到一个更大的网络。
从技术上讲,LPSNet
通过一次扩展卷积块数、通道数或输入分辨率的单个维度来执行网络复杂性的增长,如图 1 所示。在案例中,LPSNet
确保在扩展过程中准确度和推理速度之间取得了很好的平衡,并显示出优于其他手动/自动设计的模型,如图 2 所示。
总之,本文做出了以下贡献:
- 卷积块的轻量化设计和
Multi-Path Framework
中的路径交互方式被证明能够作为高效语义分割的实用原则; - 精心设计的
LPSNet
被证明能够逐步扩展网络复杂性,同时实现正确的准确性-效率折衷; LPSNet
已经通过对3个数据集的广泛实验得到了适当的验证,在实验中,在 NVIDIA GPU 和嵌入式设备上都观察到了卓越的性能。
2、LPSNet
具体来说,首先介绍 LPSNet
中采用Multi-Path Framework
的宏架构。然后,提出了3个设计原则来从轻量级的角度升级这个架构,包括卷积的类型
、卷积中的通道数
以及多路径的交互方式
。基于这些实用指南,通过一次扩展单个维度以寻求最佳速度/准确性权衡,以渐进方式设计了一系列可扩展 LPSNet
。
2.1、宏观架构
图 3 描绘了 LPSNet
中宏架构的概述。宏架构基本上是在Multi-Path Framework
设计中构建的,它将输入图像的大小调整为多个尺度,并将每个尺度馈送到一个单独的路径中。
形式上,给定分辨率为 的输入图像,具有 个路径的 LPSNet
(例如,图 3 中的 )将图像大小调整为 ,作为第 个路径的输入。这里 表示缩放比例。每条路径都实现为5个阶段的卷积块堆栈,第 个阶段包含 个块。通道数(即通道宽度)在每个阶段内保持不变。Stage 1∼4 中的第1个卷积块将空间维度减少了2倍。通过这样做,最后阶段的输出特征图的分辨率为 。
此外,将交互模块放置在阶段 3∼5 的末尾,旨在促进路径之间的相互交互。所有路径的输出被聚合并输入到分割头中,以生成具有 num 类通道的分数图。
最后,对分数图执行双线性上采样,产生分辨率为 的输出,与输入分辨率完全匹配。请注意,路径的缩放比例 ,卷积块的重复数 ,并且可以灵活设置该宏架构中的通道数,以使网络结构适合目标推理时间,并调整LPSNet
的可扩展性。
2.2、卷积块
卷积块是卷积神经网络中的基本计算单元。卷积块的堆栈自然会在整个网络中消耗很大比例的推理时间。因此,轻量化卷积块对于高效的网络至关重要。在本节中从2个维度深入研究 LPSNet
中基本计算块的设计:
- 卷积块的类型
- 通道数
1、卷积块的类型
为了追求更少的计算复杂度,已经提出了一系列创新来改造卷积块。在这些工作中,浮点运算(FLOPs
)的数量经常被用作计算复杂度的度量,它指导着用于图像识别的轻量级网络的设计。然而,FLOPs
忽略了显着影响网络推理延迟的内存访问成本 (MAC) 和并行度,从而导致 FLOPs
和实际延迟之间的差异。
更重要的是,由于高效语义分割的几个独特性(例如,更大的特征图和细通道宽度),轻量级设计从图像识别到语义分割的扩展并非易事。为此,在图 4 中对标准卷积和广泛采用的深度可分离卷积 (SepConv
) 进行了比较。这里将输入特征图的Shape
设置为 32 × 128 × 128,这是最常见的形状用于语义分割的轻量级网络。
通过在具有 1070Ti GPU 的 PC (i7-8700K/16GB RAM) 上执行块来评估延迟。FLOPs-efficiency
表示每单位运行时间处理的浮点运算的数量,用作效率度量。如图 4 所示,标准卷积的 FLOPs
效率(3987 MFLOPs/ms)是 SepConv
(357 MFLOPs/ms)的 10 倍。因此,本文选择用标准卷积作为 LPSNet
中的构建块。
2、通道数
通道宽度是影响卷积 FLOPs 效率的另一个重要因素。从理论上讲,计算复杂度需要随着通道宽度的增加而二次级数。然而,由于现代库/设备中高度优化的软件(例如,BLAS、cuDNN)和硬件(例如,CUDA Core、Tensor Core),实际上推理时间和通道宽度之间的关系变得模糊。
为了分析这种关系,在图 5 中比较了具有不同通道宽度的 3×3 卷积的 FLOP 和延迟。正如预期的那样,当通道宽度从 1 增加到 17 时,FLOP
呈二次增长(参见图 5(a) 中的蓝色曲线);同时,延迟仅线性增长并在大约 8 和 16 通道宽度处达到平台期(参见图 5(a) 中的红色曲线)。这种具有高 FLOPs
效率的通道宽度设置被视为卷积的“sweet spots”。类似地,在图 5(b) 中,在 32 和 64 通道宽度处获得了高 FLOPs
效率。这些优点主要归功于具有 -divisible 通道宽度的卷积的可并行化实现。因此,将 LPSNet
中卷积的通道宽度设为-divisible,其中 n
尽可能大。
2.3、 Multi-Path交互
为了在多个尺度上优雅地传播互补信息,作者设计了Multi-Path
交互模块,鼓励 LPSNet
中路径之间的相互交换和交互。具体来说:
将交互模块 I
定义为 ,其中和 分别表示输入对和输出对。输入对由高分辨率特征图 和低分辨率特征图 组成,其中 且 。每条路径的分辨率在交互过程中保持不变。
在这里研究了6种交互模块的变体,它们可以分为3类(图 6)。对于第1类(Direct-A/B
),转换后的低分辨率特征通过元素求和或通道连接直接集成到高分辨率特征中。
对于第2类不是简单地组合来自两条路径的特征,而是采用注意力机制来促进多路径交互,即 Attention-A/B
。
具体来说,在 Attention-A
中,首先从 计算出注意力图 ,然后在特征聚合之前将其应用于变换后的 和 :
其中 F 和 U 分别表示卷积变换和空间上采样。Attention-B
通过将每条路径与来自另一条路径的注意力相结合,进一步以双向方式升级了简单的注意力。
在实践中,由于大量的转换和注意力,上述4种类型的交互模块在计算上是昂贵的。因此,技术通常将它们放置在多路径网络的末端,而使早期阶段的路径交互未被利用。
为了缓解这个问题,设计了2个有效的交互模块来实现早期阶段的交互,即 Bilateral-A/B
。Bilateral-A
转换低分辨率特征并将其注入高分辨率特征,反之亦然。这种对称设计平等地对待每条网络路径,简单的转换以有效的方式在早期阶段触发交互。Bilateral-B
进一步消除了 Bilateral-A
中的卷积变换,通过仅在输入特征图上应用空间调整大小和元素求和来实现最简单的交互:
其中 U 和 D 表示特征图的上采样和下采样。所有6种交互变体之间的比较将在实验中进行详细说明,凭经验验证 Bilateral-B
实现了最佳速度/准确性权衡。因此,采用 Bilateral-B
作为 LPSNet
中的默认交互模块。
2.4、可伸缩架构
给定选定的卷积块和交互模块,特定的 LPSNet
架构可以定义为 N = {B, C, R},其中 B, C, R 是第 3.1 节中描述的可调参数。因此,网络复杂度由这些参数从3个维度决定。深度维度(B)是决定网络捕获高级语义信息能力的块数。宽度维度(C),即每个阶段的通道数,会影响每个卷积的学习能力。分辨率维度 (R) 表示每条路径的空间粒度。在设计 LPSNet
架构时,为了平衡这3个维度,首先构建一个微型网络,然后以渐进的方式一次扩展一个维度。
从技术上讲,将小网络 的参数设置为 , , 。请注意,不包括 r = 0 的路径,因此微型网络仅包含单个路径。通过这种方式,微型网络非常高效,在单个 GPU 上只有 0.38 毫秒的延迟,通过多步扩展进一步将其扩展到更重的网络。展开操作的所有候选 Δ = ΔB ∪ ΔC ∪ ΔR 定义在表 1 中。当 N = {B, C, R} 扩展 δ 时,δ 将沿其对应维度添加到 N 并产生扩展网络(例如,当 δ ∈ ∆B 时,{B + δ, C, R})。对于每一步,通过比较每个操作 δ ∈ Δ 的速度和准确性之间的权衡来贪婪地确定执行的扩展操作。具体来说,对于第 i 步,扩展后的目标延迟首先由不同扩展操作之间的最大延迟确定:
其中 表示最后一步的架构,Lat(·) 测量网络的延迟。然后,每个操作的步长计算如下:
目标是在扩展不同的操作后更好地将产生的延迟与 LT 对齐。然而,由于扩展只产生离散步骤的网络,扩展网络的延迟可能会超过 LT。如果操作的选择仅取决于扩展网络的性能,则可能会偏向于导致较大延迟增加的操作。为了解决这个问题,最终通过最大化每一步扩展后的性能增长和延迟增长的比率来选择最优扩展操作δ∗:
其中 Perf(·) 评估语义分割的性能。因此,从微小的网络 开始迭代地执行网络扩展 I 次,最终推导出一个具有不同复杂度的 LPSNet
族。算法 1 总结了 LPSNet
的扩展算法。