新型实时形义分割网络ShuffleSeg:可用于嵌入式设备
表现优良的卷积神经网络往往需要大量计算,这在移动和嵌入式设备以及实时应用上是一个很不利的因素。近日,开罗大学和阿尔伯塔大学的研究者提出了一种能实现实时形义分割的框架 ShuffleSeg。这种方法能在保证分割准确度的同时显著降低对计算资源的需求。机器之心在本文中对该项目进行了简要编译介绍,相关研究的 TensorFlow 代码已发布在 GitHub 上。
论文地址:https://arxiv.org/abs/1803.03816
项目代码:https://github.com/MSiam/TFSegmentation
构建计算高效的卷积神经网络(CNN)仍然还是一个悬而未决的研究问题。在提升 CNN 的计算效率方面存在两种主要机制。第一种机制侧重于设计高效的模型,比如 GoogleNet、Xception、MobileNet 和近期的 ShuffleNet。另一种机制则是针对模型加速,具体方法包括对网络连接或通道进行剪枝或进行网络量化(network quantization)。之前在提升计算效率方面的研究主要侧重于图像分类和目标检测等最终任务。但以实时形义分割网络为目标的研究很少,尽管形义分割在机器人相关的应用中有许多益处。对计算高效的形义分割的需求是很显著的。
我们在本论文中提出了一种实时的形义分割网络,该网络基于 [4] 中提出的 ShuffleNet 单元。我们在本论文中将其称为 ShuffleSeg。ShuffleSeg 在其解码器中集成了 skip 连接来改善分割结果。我们的网络需要 2.03 GFLOPs,在计算效率上的表现优于之前最佳的需要 3.83 GFLOPs 的分割网络。尽管如此,ShuffleSeg 还是在 CityScapes 测试集基准上实现了可与最佳表现媲美的平均交并比(IoU)——58.2%。因此,我们的网络在速度和准确度之间实现了很好的平衡。这有望实现在嵌入式设备中的进一步部署应用。
实时形义分割在近期开始得到关注。Paszke et. al. [13] 引入了 ENet,这是带有一个瓶颈模块(bottleneck module)的高效轻量级分割网络。Chaurasia et. al. [14] 提出了 LinkNet 架构,其使用 ResNet18 作为编码器。LinkNet 实现了比 ENet 更优的平均 IoU。但 ENet 在计算效率上的表现更好。SegNet 和 FCN8s 等其它网络也没有重点关注计算效率,但在分割相关文献中被广泛使用。Badrinarayanan et. al. [15] 提出的 SegNet 是使用编码器-解码器架构进行端到端形义分割的早期尝试。Long et. al. [16] 首次尝试了以端到端的方式训练全卷积分割网络(FCN)。他还提出了 skip-net 方法,以在 FCN16s 和 FCN8s 架构的分割中使用更高分辨率的特征图。
就我们所知,之前在实时形义分割上的研究都没有利用分组卷积和通道混洗(channel shuffling)。我们在本研究中提出的 ShuffleSeg 是一种计算高效的分割网络。该网络的设计灵感源自 ShuffleNet,这是一种高效的分类和检测网络。ShuffleNet 单元使用了分组卷积来提升性能,而没有使用 1x1 卷积。只使用分组卷积对网络准确度不利,所以我们还使用了通道混洗来维持优良的准确度。这与 skip 架构组合在一起,可通过使用更高分辨率的特征图来改善我们的分割结果。ShuffleSeg 的代码将会公开发布。
方法
这一节将详细介绍我们提出的用于形义分割的网络架构。该架构将分成两个主要模块进行解释:负责提取特征的编码模块,负责在网络中进行上采样以计算最终类别的概率图的解码模块。
解码器架构
我们提出的架构中所使用的编码器基于 ShuffleNet。我们主要从其中使用的分组卷积和通道混洗中受到了启发。[4,2,3] 表明深度上可分的卷积或分组卷积可以在降低计算成本的同时维持优良的表征能力。分组卷积的堆叠可能会导致出现一大主要瓶颈。输出通道将从有限的输入通道中导出。为了解决这个问题,[4] 中引入了信道混洗,这种方法也在 ShuffleSeg 的编码和解码部分都得到了良好的应用。
图 1:ShuffleSeg 网络架构
编码器架构
该分割网络的解码部分要执行转置卷积,以便上采样到输入的分辨率。受 UNet、FCN8s 和 Dilation Frontend 研究的启发,我们使用了不同的解码方法。我们比较的四种不同的解码方法为 (1) UNet、(2) SkipNet、(3) Dilation Frontend 8s、(4) Dilation 4s
实验
表 1:不同解码方法在分类(class)层面上的准确度和计算效率比较
表 2:表 1:不同解码方法在大类(category)层面上的准确度比较
表 3:ShuffleSeg 与当前最佳的实时分割网络的比较
图 2:ShuffleSeg 在 CityScapes 上的定性图像。(a) 原图像,(b) 使用粗略标注预训练后的 SkipNet,(b) UNet,(c) Dilation 8s
论文:ShuffleSeg:实时形义分割网络(ShuffleSeg: Real-time Semantic Segmentation Network)
实时形义分割对移动和机器人相关的应用而言非常重要。我们提出了一种计算高效的分割网络,我们称之为 ShuffleSeg。我们提出的架构基于其编码器中的分组卷积和通道混洗(channel shuffling),可用于提升性能。我们对不同的解码方法进行了剥离研究(ablation study),比较了 Skip 架构、UNet 和 Dilation Frontend。我们讨论了在速度和准确度权衡上的有趣见解。研究表明在解码方法中的 skip 架构能为实时性能目标提供最好的折中,同时还能通过为更准确的分割使用更高分辨率的特征图来提供足够的准确度。我们在 CityScapes 上评估了 ShuffleSeg,并且将其与当前最佳的实时分割网络进行了比较。它在 CityScapes 测试集上实现了可与其它方法媲美的 58.3% 的交并比(IoU),同时 GFLOPs 降低了 1 倍。ShuffleSeg 在 NVIDIA Jetson TX2 上的运行速度为每秒 15.7 帧,这让它在实时应用上有很大的应用潜力。