SegFast-V2:轻量语义分割

SegFast-V2:轻量语义分割
部署运行你感兴趣的模型镜像

SegFast-V2:面向自动驾驶的深度学习中参数更少的语义图像分割

1 引言

在过去几十年中,人工智能(AI)在各个行业中取得了巨大进展。深度学习推动的主要领域之一是自动驾驶。许多顶级汽车企业已经开始部署配备各种人工智能模块的车辆,从高级驾驶辅助系统(如泊车辅助、异常检测和紧急制动)到完全自主系统(如无人驾驶交通和自动泊车)。虽然昂贵的品牌和型号正致力于实现完全自主的模型,但其他品牌却在努力开发更便宜的人工智能辅助模块/技术。这些技术必须在受限的硬件配置下运行,且性能不能显著下降。因此,有可能将人工智能辅助工具集成到所有汽车中,从而对全球产生影响。在许多国家,由于缺乏意识以及街道上存在各种车辆和其他物体,交通系统可能变得极其复杂。在这种情况下,廉价的辅助人工智能可以产生更大的影响,不仅改善交通质量,还能普及良好的驾驶习惯。

场景中,系统的可靠性与成本同样重要。因此,必须确保构建更低成本系统的同时不损害系统的鲁棒性。在本文提出的方法中,我们展示了在驾驶场景中的语义图像分割。与最先进的工具相比,该方法具有更少的参数数量,并且可以在CPU环境中处理。我们观察到,通常已经实现了多种思路来减少卷积神经网络的参数数量。然而,在基于语义值的图像分割中,这种情况并未发生。本工作是对“SegFast”初始实现的扩展[18]。“SegFast”的主要贡献是在特征提取器中引入了“spark”模块,并在解码器中使用了转置深度可分离卷积。在本工作中,我们进一步与UNet和PSPNet等最先进的方法进行了比较分析。此外,核分解可以进一步减少参数数量[22]。另外,本文采用了基于MobileNet的编码器替代基于SqueezeNet的编码器,以探讨该网络的优缺点。

2 相关工作

以往的神经网络主要依赖于手工设计特征的质量[7]。然而,使用这些方法时,自然场景图像的语义图像分割问题并不简单。随着深度学习的出现,语义图像分割方法不断发展,并采用多种方法(甚至进行融合)以实现最佳性能。全卷积网络[15]将VGG-Net的卷积特征提取器[21]与像素级分类器相结合,可视为其中一个例子。这实现了端到端且高效的算法,但由于下采样层的存在,生成的分割图非常粗糙。后续的算法[1, 19]采用编码器-解码器模型,通过从网络的不同层传递特征来获得更好的分割结果。编码器由一系列卷积层以及下采样操作(如平均池化和/或最大池化)组成。而解码器则由上采样层构成:转置卷积或非池化。我们发现,这种架构在很大程度上提高了分割结果的清晰度。其他一些算法在其分类器中采用了空洞卷积[3],空间池化金字塔[24]和多级精炼[14]等方法,以扩大网络的感受野并提升分割清晰度。此外,网络中使用的不同类型的特征提取器或编码器在分割性能中也起着重要作用。

算法。在这些问题中,通常使用的编码器通常基于 VGGNet [21]和ResNet [8]。ResNet最重要的组件是使用跳跃连接,这改善了梯度流动,同时使网络能够更好地训练。少数其他研究还使用基于152层DenseNet架构的编码器 [10, 12]。尽管它提供了更高的准确率,但由于计算复杂性而受到影响。所提出的网络受到编码器-解码器架构(如UNet)的启发[19] ,并且可以将深度可分离卷积的概念应用于基于SqueezeNet [4, 13]架构的特征提取器模块。多年来,已经实施了各种策略来减少参数数量,因为参数的微调并不简单。其中最突出的可能是XceptionNet [4]和MobileNet [9] ,它们展示了深度可分离卷积的使用。MobileNet架构已被用作 U-Net模型中的编码器以执行图像分割1。然而,在该方法中,解码器仍然基于普通的转置卷积,而不是深度可分离卷积。其他方法,例如核分解,有助于减少参数数量。解决此问题的最重要工作之一是SqueezeNet [11]架构,其性能(准确率)与AlexNet相同,但模型大小更小,参数更少。

3 提出的方法

所提出的架构借鉴了SqueezeNet[11],深度可分离卷积 [4, 13]以及UNet中报道的编码器-解码器技术[19]。SqueezeNet架构提出了使用火模块。火模块通过将空间核替换为空间和像素级核的组合来减少参数数量。在我们提出的方法中,火模块被替换为一个更小的版本,我们称之为“火花”模块。注意,火花模块(详见第3.1节)采用深度可分离卷积而非传统卷积。深度可分离卷积将在第3.2节中详细描述。这种带有火花模块的改进型SqueezeNet被用作所提出架构中的编码器,如图1所示。该编码器由四个编码块组成,其中第一个包含一个卷积层,其后是ReLU激活和平均池化层。其余两个块结构相似,均使用两个火花模块(详见第3.1节),每个火花模块之后都跟随一个平均池化层。

示意图0

最后一个块包含四个火花模块。像SegNet这样的架构在编码器中通过传递相应池化层的池化索引来使用最大非池化。尽管这降低了计算成本,但会导致准确率下降。因此,在当前方法中,我们提出使用转置深度可分离卷积。通常情况下,深度可分离卷积仅用于普通卷积 [4, 13]。然而,转置卷积有助于减少参数数量。在解码器中,第一个解码块在最后一个编码器输出之后采用转置深度可分离卷积(详见第3.2节以获取更详细信息)。然后将解码器和对应编码器中尺寸相同的特征图进行拼接,并再次使用3× 3深度可分离卷积对结果进行卷积。这种来自对应编码层的特征拼接技术最初在U-Net中提出[19]。这些操作重复三次。输出层由通过1× 1卷积和softmax操作获得的像素级概率分布组成。在输出的分割掩码中,每个像素由其概率值最大的特定类别表示。最终输出被上采样以匹配原始输入尺寸。在[1],我们观察到,传递索引而非整个特征有助于减少网络的内存需求。但这也会导致准确率性能下降。在我们的网络中,编码后的特征图被传递给解码器:U-Net[19] ,并且所提网络的参数数量少于SegNet,同时在多个数据集上的准确率具有可比性。此外,除了所提出的方案外,还探索了进一步的扩展。使用分解卷积核代替传统空间核也有助于减少参数数量。这使得使用更大的5× 5卷积核以实现性能提升。所提出的模型在准确率和计算复杂度之间实现了权衡。所提出的模块将在下文的不同小节中详细说明。

3.1 spark模块:一种更小的火模块

SqueezeNet 的一个关键贡献是火模块。火模块采用了一些策略,例如用组合的空间核和逐像素核替代空间核。这种集成背后的主要思想是减少参数数量。例如,用 3× 3滤波器替代1× 1滤波器可将参数数量减少为原来的九分之一。火模块由两层组成,即挤压层和扩展层。挤压层的主要目标是减少扩展层中3× 3滤波器的输入通道数量。扩展层由1× 1滤波器和3× 3滤波器的组合构成。火模块中的三个超参数分别是挤压层中的核数量(S)、扩展层中1× 1核的数量(E1) 以及扩展层中3× 3核的数量(E3) 。这三个超参数之间的关系是:挤压层中的核数量少于扩展层中核的总数。在火模块中,输入首先经过批归一化层,然后进行卷积操作。接着应用逐元素的线性整流非线性函数(ReLU)[6, 16] 。由于具有快速可微性、对梯度消失的鲁棒性(不同于 sigmoid 和 TanH)以及没有额外参数(如 Leaky ReLU、 PReLU 等),ReLU 已被证实是最高效的激活函数之一。这些操作是

示意图1

挤压层。挤压层后接扩展层,在扩展层中通过1× 1卷积核和3× 3卷积核进行两个并行的卷积操作。与挤压层类似,每个卷积操作之前都有一个批归一化层,之后均跟随一个ReLU操作。在我们题为“SegFast”的工作中,通过在扩展层E3中使用深度可分离卷积替代3× 3卷积,进一步压缩了SqueezeNet的火模块。有关深度可分离卷积的更多信息,请参见第3.2节。该改进后的更小火模块在下文中称为“火花”模块。火花模型如图 2所示。“SegFast-V2”是其扩展版本,进一步压缩了火花模块:将深度可分离卷积层中的空间卷积核替换为其因式分解形式。卷积核的因式分解在第3.4节中讨论。

3.2 深度可分离卷积

深度可分离卷积[4, 13]降低了网络中的计算复杂度和参数数量。因此,它提升了整体效率。在深度可分离卷积中,执行两个独立的操作。首先,在输入张量的每个通道上分别进行空间卷积操作,并在所有通道上共享同一个深度卷积核。此后,输入通道的数量应等于输出通道的数量。接着是使用1× 1卷积核的逐点卷积,将前一步计算出的特征投影到新的特征空间。一个大小为K h × K w ×C的卷积核需要K h ∗ K w ∗ C个参数,其中K h 和K w 分别是滤波器的高度和宽度,C是输入张量的通道数量。一个等效的深度可分离卷积将只需要K h ∗ K w +C个参数,这更少比前者的(Kh,Kw,C)> 1要小。随着后面层的通道尺寸增加,参数数量方面的优势更加明显。深度可分离卷积的输出尺寸与普通卷积相同,可以表示为

$$
H’ = \frac{H - K_h + 2P_h}{S_h} + 1 \
W’ = \frac{W - K_w + 2P_w}{S_w} + 1
$$

其中 H′和 W′是输出的高度和宽度,Kh和 Kw是卷积核的高度和宽度。Ph和 Pw分别表示输入的垂直和水平填充,Sh和 Sw分别为垂直和水平步幅。可通过调整步幅的选择,将输入的尺度按所需因子进行缩减。

3.3 转置深度可分离卷积

转置深度可分离卷积可以以类似于深度可分离卷积的方式表示。同样地,这里也执行两个独立的操作。第一个操作是对输入的每个通道分别进行空间转置卷积,同时在所有输入通道上共享同一个深度卷积核。随后,对第一个操作得到的输出的所有通道进行逐点卷积,卷积核为1× 1 。参数数量的减少与深度可分离卷积相同。输出张量的大小也与传统转置卷积相同,可表示为

$$
H’ = S_h(H - 1) + K_h - 2P_h \
W’ = S_w(W - 1) + K_w - 2P_w
$$

其中变量的约定与公式 1 类似。可以选择合适的步幅以按所需倍数增大输入尺寸。转置卷积主要用于解码器中,需要增大激活值的尺寸以获得最优特征(图 3)。

示意图2

3.4 卷积分解

深度可分离卷积也可以视作在通道维度上的核分解。此外,还可以在空间维度上对卷积核进行分解,以进一步减少参数。这不仅能够减少参数数量,还能在不显著增加参数数量的情况下实现更大的卷积核尺寸。与标准空间卷积核(如3× 3和5× 5 )不同,分解卷积核将其分解为一系列较小卷积核的级联。例如,一个5× 5卷积核可以分解为两个连续的3× 3卷积核,而这两个卷积核又可进一步分解为一个1× 3卷积核后接一个3× 3 。将一个3× 3卷积核进行分解可使参数数量从9减少到6,而将一个5× 5卷积核分解则可使参数数量从25减少到12。我们提出的基本网络“SegFast”主要由3× 3卷积核构成。通过使用核分解,我们可以模拟更大尺寸卷积核(如 5× 5 )的效果,以提升性能,同时有效控制参数数量。在我们提出的模型中,spark模块内的所有空间卷积均采用深度可分离卷积和转置卷积。扩展的变体称为 “SegFast-V2_3”和“SegFast-V2_5”,它们分别使用3× 3和5× 5分解卷积核。

3.5 MobileNet编码器

在另一种高效的分割模型方法中,我们受到 MobileNet分类器的启发[9]。MobileNet架构旨在为移动和嵌入式应用提供在速度、尺寸和准确率方面高效的分类器。目前存在一种基于标准MobileNet的分割方法,该方法采用类似U-Net的架构。然而,我们在解码阶段引入了深度可分离转置卷积。在实验中,我们使用MobileNet作为编码器,而解码器则基于转置深度可分离卷积的概念进行设计。解码器由4个模块组成,其最后一层是一个卷积层,输出通道数等于到数据集中类别的数量。每个解码块对上一个编码器的输出应用转置深度可分离卷积(详见第3.2节以获取更详细信息)。将解码器的特征图与相应尺寸相同的编码器特征图进行拼接,然后使用深度可分离卷积进行卷积操作。在对最后一个解码块的输出执行1× 1卷积得到最终输出后,将其上采样以匹配原始图像大小。在输出的特征图中,每个像素值对应于该像素具有最高概率值的类别编号。此模型称为“ SegFast-Mobile”。需要注意的是,存在一种类似 U-Net的实现方式,其中使用MobileNet作为编码器,2但在我们的方法中,我们采用了更加高效的解码器,该解码器使用转置深度可分离卷积。

4 实验

4.1 数据集

我们的主要目标是创建一个紧凑型模型,用于高级驾驶辅助系统领域的语义图像分割。我们已在多种与驾驶相关的数据集上训练了模型,并对结果进行了分析。训练和测试图像被调整为360× 480以模拟480p分辨率摄像头的效果,并确保不同实验之间的一致性。未对数据集进行任何形式的数据增强。我们使用了五个不同的数据集,分别是BDD [23], CamVid[2], CityScape [5], Synthia[20],和Mapillary [17]。所选数据集在类别数量和可用训练样本数量方面保持多样性。数据集描述汇总于表 1。

数据集 类别 训练样本 测试样本
BDD [23] 20 7000 1000
CamVid [2] 12 367 101
CityScape [5] 30 2975 500
Mapillary [17] 66 18,000 2000
Synthia [20] 13 10,786 2621

4.2 结果与讨论

我们进行了全面的实验,将所提出的模型组与各种最先进的模型进行性能比较。在对比中,我们计算了全卷积架构(如FCN)、编码器-解码器模型(如 SegNet和UNet)以及具有多尺度池化结构的网络 (如PSPNet)的性能。尽管像DeepLab这样采用大感受野和条件随机场等技术的方法在类似问题上表现良好,但这些方法往往因包含大量计算开销大的模块而带来巨大开销,因此未被纳入本次对比研究。深度可分离卷积在MobileNet分类器中得到了有效实现[9]。我们实现了一种所提出网络的变体,该变体使用 MobileNet架构作为编码器。这可以突出我们提出的基于SqueezeNet的模型与另一种同样旨在减少参数的常见架构相比的优缺点。这项工作是我们先前工作的延伸,在之前的工作中我们实现了“SegFast”的第一版[18]。作为一项消融研究,我们将深度可分离卷积和转置卷积替换为标准卷积,并在结果部分以“ SegFast-Basic”名称列出了网络的性能。当前方法的独特贡献在于卷积分解,它使我们能够在不显著增加参数的情况下使用更大的卷积核。我们提出了该方法的两种变体,分别命名为“SegFast-V2_3”和“ SegFast-V2_5”,其具有3× 3和5× 5分解卷积核。我们提供了像素级精度和平均交并比分数作为性能衡量指标。像素级精度的计算方式如下:

$$
Accuracy = \frac{\text{Number of pixels correctly predicted}}{\text{Total number of pixels}}
$$

由于本工作的主要目标是创建一种紧凑型架构,使其在计算资源受限的环境中以较快速度运行的同时,性能与其他现代方法相当,因此我们计算了在16线程中央处理器(英特尔至强E5-2623 V4)上对单张图像进行网络前向和后向传播所需的时间。我们还展示了网络在单个样本输入下的内存占用情况。图4展示了一些所提出的SegFast方法相对于其他常用于语义图像分割的方法的样本输出。

本工作的主要目标是提出一种参数数量更少但可与各种最先进的技术相媲美的模型。较少的参数能够降低内存消耗并加快前向和后向传播速度,从而为在低端硬件上构建实时系统提供了可能。因此,在我们的实验中,我们考虑了以下几项指标:(a) 参数数量; (b) 处理时间;以及 (c) 性能。

1. 参数数量

在参数数量方面(见表2),所提出的 SegFast网络系列使用了约60万个参数。“ SegFast-V2_3”模型采用核分解后,其参数数量相比普通的SegFast网络(使用3× 3卷积核)更少。这使得我们可以在不增加参数数量的情况下增大卷积核大小至5× 5 。然而,由于激活图数量增加,它们相对消耗了更多的内存。SegFast 实现消耗的内存最少,因此如果内存是首要考虑因素,则它是首选网络。

2. 处理时间

为了在硬件受限的环境中测试网络的速度,我们选择在仅CPU模式下运行网络。表3中提供的数据展示了前向传播和反向传播所需的时间。总训练时间由反向传播表示评估时间乘以数据集中的样本数量和训练轮数。而前向传播时间表示每个样本的评估时间。采用核分解的版本实现了最快的速度,这主要归因于浮点运算次数的减少。实验中我们使用了配备16线程的 Intel Xeon E5-2623 V4 CPU。该网络明显快于许多常用的网络以及基于MobileNet的实现。由于高性能GPU具有极强的并行处理能力,因此在这些设备上各网络之间的时间差异显著缩小,但这同时也违背了该网络的设计初衷,即在低端硬件上实现良好的性能。“SegFast-V2_3”是速度为首要考虑时的首选网络。

3. 性能

在性能方面(见表4和5),所提出的网络可能无法优于大多数前沿网络。然而,考虑到速度和内存利用率的提升,这种权衡在某些低风险场景中可能是可接受的。SegFast系列网络的表现优于全卷积网络,并且与其他大型网络(如SegNet、UNet 和PSP-Net)相当接近。在消融研究中,当用标准卷积替换深度可分离卷积时,性能有所下降。在不能牺牲性能的场景中,可以使用“ SegFast-Mobile”实现,因为它在参数数量显著减少的情况下仍能提供最佳性能。最初使用了最小尺寸卷积核(3× 3 )以限制参数数量。在扩展版本中,为了适应更大尺寸的卷积核(5× 5 ),采用了空间卷积核分解来限制总体参数数量。然而,这并未显著提升结果,因此可以说,在参数数量大幅减少的前提下,最小分辨率已具备足够的性能表现。
| 架构 | 参数 | 内存消耗 (MB) |
| :— | :— | :— |
| FCN | 134,507,010 | 3447 |
| SegNet | 29,455,702 | 1515 |
| UNet | 31,033,110 | 1471 |
| PSPNet | 65,606,764 | 2357 |
| SegFast-Mobile | 4,637,526 | 829 |
| SegFast-Basic | 2,965,976 | 1232 |
| SegFast | 603,288 | 703 |
| SegFast-V2_3 | 599,380 | 1101 |
| SegFast-V2_5 | 606,676 | 1199 |

表2 提出的网络与其他流行网络的参数数量和内存消耗比较

架构 前向传播 反向传播
FCN 3.39 5.23
SegNet 1.98 3.25
UNet 2.27 3.42
PSPNet 2.06 3.25
SegFast-Mobile 0.66 1.87
SegFast-Basic 0.419 1.336
SegFast 0.389 0.929
SegFast-V2_3 0.360 0.858
SegFast-V2_5 0.409 0.992

表3 在中央处理器上运行不同网络时的前向传播和反向传播时间 (单位:秒)

示意图3

架构 BDD CamVid CityScape Synthia Mapillary 平均值 (± SD)
FCN 75.31 74.22 84.28 91.81 79.62 81.05 (± 7.21)
SegNet 82.79 88.70 86.08 92.05 82.46 86.42 (± 4.06)
UNet 81.77 87.70 87.39 95.43 84.11 87.28 (± 5.17)
PSPNet 85.17 90.79 87.84 93.64 85.98 88.68 (± 3.51)
SegFast-Mobile 85.12 89.24 86.51 93.48 83.81 87.63 (± 3.84)
SegFast-Basic 80.45 86.31 82.69 91.65 82.10 84.64 (± 4.46)
SegFast 83.48 85.08 83.71 93.58 81.63 85.50 (± 4.68)
SegFast-V2_3 81.46 85.95 84.13 93.48 82.10 85.42 (± 4.84)
SegFast-V2_5 80.92 86.70 83.86 93.63 82.70 85.56 (± 4.97)

表4 像素级准确率(%)

架构 BDD CamVid CityScape Synthia Mapillary 平均值 (± SD)
FCN 0.3076 0.3342 0.3503 0.5346 0.1910 0.3435 (± 0.1237)
SegNet 0.3475 0.5174 0.3702 0.5430 0.2234 0.4003 (± 0.1314)
UNet 0.3473 0.5003 0.3970 0.6767 0.2527 0.4348 (± 0.1621)
PSPNet 0.4099 0.5632 0.4190 0.6040 0.2739 0.4540 (± 0.1323)
SegFast-Mobile 0.3773 0.5030 0.3810 0.5810 0.2420 0.4169 (± 0.1302)
SegFast-Basic 0.3434 0.4431 0.3210 0.5317 0.2206 0.3720 (± 0.1193)
SegFast 0.3576 0.5000 0.3400 0.5910 0.2108 0.3999 (± 0.1481)
SegFast-V2_3 0.3360 0.4236 0.3500 0.5730 0.2160 0.3797 (± 0.1312)
SegFast-V2_5 0.3390 0.5012 0.3471 0.5919 0.2218 0.4002 (± 0.1461)

表5 平均交并比

5 结论

所提出的模型组可与最先进的模型(如FCN、 SegNet、UNet和PSP-Net)进行比较。与基于 SqueezeNet的传统编码器或基于MobileNet的编码器相比,我们改进的基于SqueezeNet的实现使用了更少的参数数量。这导致FLOPs大幅降低,从而提高了执行速度。尽管核分解减少了参数数量,但由于需要存储额外的激活图,因而增加了内存占用。在考虑准确率的情况下,SegFast-Mobile似乎是最优的“SegFast-V2_3”速度更快。此外,在内存消耗至关重要的场景中,“SegFast”实现是首选网络。即使使用最低端的GPU,也能实现实时性能,因为最小模型的内存占用仅约为700 MB。这种网络压缩的思想也可应用于其他最先进的网络,例如SegNet、UNet和 PSPNet。

您可能感兴趣的与本文相关的镜像

Stable-Diffusion-3.5

Stable-Diffusion-3.5

图片生成
Stable-Diffusion

Stable Diffusion 3.5 (SD 3.5) 是由 Stability AI 推出的新一代文本到图像生成模型,相比 3.0 版本,它提升了图像质量、运行速度和硬件效率

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值