全球计算机视觉三大顶会之一 ECCV 2018 (European Conference on Computer Vision)即将于9月8 -14日在德国慕尼黑拉开帷幕。届时,旷视首席科学家孙剑博士将带领团队远赴盛会,助力计算机视觉技术的交流与落地。而在此之前,旷视科技将陆续推出 ECCV 2018 接收论文系列解读。本文是第 6 篇,一个可实现实时语义分割的双向网络 BiSeNet。
论文名称:BiSeNet: Bilateral Segmentation Network for Real-time Semantic Segmentation
论文链接:https://arxiv.org/abs/1808.00897
导语
机器看懂世界,目前一个主要的途径是通过图像,而要理解一张图像,就要对其组成的每一个基本元素——像素有准确了解。从像素层面为一张图像打上语义标签,这就是语义分割,它是计算机视觉的主要任务之一,但在实际落地之时,往往还有实时处理的场景需求。本文中,基于三种主流的实时语义分割模型加速方法,旷视科技创新性地提出双向网络 BiSeNet,不仅实现了实时语义分割,还在特征融合模块和注意力优化模块的帮助之下,把语义分割的性能推进到一个新高度,从而为该技术的相关落地进一步铺平了道路。
背景
语义分割是计算机视觉领域的一项基本任务,旨在为一张图像之中的每个像素打上语义标签,可应用于增强现实、自动驾驶、安防监控等领域,并在使用过程中能够实时响应快速执行。最近,实时语义分割模型的加速取得一定进展,主要有以下三种方法:
1.通过剪裁或 resize 来限定输入大小,以降低计算复杂度。尽管这种方法简单而有效,空间细节的损失还是让预测打了折扣,尤其是边界部分,导致度量和可视化的精度下降;
2.通过减少网络通道数量加快处理速度,尤其是在骨干模型的早期阶段,但是这会弱化空间信息。
3.为追求极其紧凑的框架而丢弃模型的最后阶段(比如ENet)。该方法的缺点也很明显:由于 ENet 抛弃了最后阶段的下采样,模型的感受野不足以涵盖大物体,导致判别能力较差。
总之,上述三个方法都是折中精度以求速度,难以付诸实践。图 1(a) 是其图示。为解决上述空间信息缺失问题,研究者普遍采用 U 形结构。通过融合 backbone 网络不同层级的特征,U 形结构逐渐增加了空间分辨率,并填补了一些遗失的细节。
但是,这一技术有两个弱点:1)由于高分辨率特征图上额外计算量的引入,完整的 U 形结构拖慢了模型的速度。2)更重要的是,如图 1(b) 所示,绝大多数由于裁剪输入或者减少网络通道而丢失的空间信息无法通过引入浅层而轻易复原。换言之,U 形结构顶多是一个备选方法,而不是最终的解决方案。
设计思想
基于上述观察,本文提出了双向分割网络(Bilateral Segmentation Network/BiseNet),它包含两个部分:Spatial Path (SP) 和 Context Path (CP)。顾名思义,这两个组件分别用来解决空间信息缺失和感受野缩小的问题,其设计理念也非常清晰。
对于 Spatial Path,本文只叠加三个卷积层以获得 1/8 特征图,其保留着丰富的空间细节。对于 Context Path,本文在 Xception 尾部附加一个全局平均池化层,其中感受野是 backbone 网络的最大值。图 1(c) 展示了这两个组件的结构。
图 1:不同模型加速方法的图示
在追求更快、更好模型的过程中,本文也研究了两个组件的融合,以及最后预测的优化,并分别提出特征融合模块(Feature Fusion Module/FFM)和注意力优化模块(Attention Refinement Module/ARM)。在 Cityscapes,CamVid 和 COCO-Stuff 数据集上的实验表明,这两个模块进一步从整体上提升了语义分割的精度。
BiSeNet
在本节中,首先详细介绍 BiSeNet 网络及其两路网络 Spatial Path 和 Context Path;接着,分别证明其有效性;最后,展示如何利用特征融合模块整合这两路网络的特征以及 BiSeNet 的整体架构。
Spatial Path
在语义分割任务中,空间分辨率和感受野很难两全,尤其是在实时语义分割的情况下,现有方法通常是利用小的输入图像或者轻量主干模型实现加速。但是小图像相较于原图像缺失了很多空间信息,而轻量级模型则由于裁剪通道而损害了空间信息。
基于这一观察,本文提出 Spatial Path 以保留原输入图像的空间尺度,并编码丰富的空间信息。Spatial Path 包含三层,每层包含一个步幅(stride)为 2 的卷积,随后是批归一化和 ReLU。因此,该路网络提取相当于原图像 1/8 的输出特征图。由于它利用了较大尺度的特征图,所以可以编码比较丰富的空间信息。图 2(a) 给出了这一结构的细节。
图 2:BiSeNet 概览
Context Path
在语义分割任务中,感受野对于性能表现至关重要。为增大感受野,一些方法利用金字塔池化模块,金字塔型空洞池化(ASPP)或者 “large kernel”,但是这些操作比较耗费计算和内存,导致速度慢。出于较大感受野和较高计算效率兼得的考量,本文提出 Context Path,它充分利用轻量级模型与全局平均池化以提供大感受野。
在本工作中,轻量级模型,比如 Xception,可以快速下采样特征图以获得大感受野,编码高层语义语境信息。接着,本文在轻量级模型末端添加一个全局平均池化,通过全局语境信息提供一个最大感受野。在轻量级模型中,本文借助 U 形结构融合最后两个阶段的特征,但这不是一个完整的 U 形结构。图 2(c) 全面展示了 Context Path。
注意力优化模块(ARM):在 Context Path 中,本文提出一个独特的注意力优化模块,以优化每一阶段的特征。如图 2(b) 所示,ARM 借助全局平均池化捕获全局语境并计算注意力向量以指导特征学习。这一设计可以优化 Context Path 中每一阶段的输出特征,无需任何上采样操作即可轻易整合全局语境信息,因此,其计算成本几乎可忽略。
网络架构
在 Spatial Path 和 Context Path 的基础上,本文提出 BiSeNet,以实现实时语义分割,如图 2(a) 所示。本文把预训练的 Xception 作为 Context Path 的 backbone,把带有步幅的三个卷积层作为 Spatial Path;接着本文融合这两个组件的输出特征以做出最后预测,它可以同时实现实时性能与高精度。
首先,本文聚焦于实际的计算方面。尽管 Spatial Path 有大感受野,但只有三个卷积层。因此,它并非计算密集的。对于 Context Path,本文借助一个轻量级模型快速下采样。进而,这两个组件并行计算,极大地提升了效率。第二,本文还讨论了网络的精度方面。Spatial Path 编码丰富的空间信息,Context Path 提供大感受野,两者相辅相成,从而实现更高性能。
特征融合模块:在特征表示的层面上,两路网络的特征并不相同。因此不能简单地加权这些特征。由 Spatial Path 捕获的空间信息编码了绝大多数的丰富细节信息。而 Context Path 的输出特征主要编码语境信息。换言之,Spatial Path 的输出特征是低层级的,Context Path 的输出特征是高层级的。因此,本文提出一个独特的特征融合模块以融合这些特征。
在特征的不同层级给定的情况下,本文首先连接 Spatial Path 和 Context Path 的输出特征;接着,通过批归一化平衡特征的尺度。下一步,像 SENet 一样,把相连接的特征池化为一个特征向量,并计算一个权重向量。这一权重向量可以重新加权特征,起到特征选择和结合的作用。图 2(c) 展示了这一设计的细节。
损失函数:本文通过辅助损失函数监督模型的训练,通过主损失函数监督整个 BiSeNet 的输出。另外,还通过添加两个特殊的辅助损失函数监督 Context Path 的输出,就像多层监督一样。上述所有损失函数都是 Softmax。最后借助参数 α 以平衡主损失函数与辅助损失函数的权重。
实验
本文采用修改版的 Xception39 处理实时语义分割任务,并在 Cityscapes,CamVid 和 COCO-Stuff 三个数据集上对 BiSeNet 进行了评估,对比其他同类方法,给出了自己的结果。
本节还对算法的速度与精度进行了着重分析。
速度分析
本文实验在不同设置下做了完整的对比。首先给出的是 FLOPS 和参数的状态(见表 4)。
表 4:基础模型 Xception39 和 Res18 在 Cityscapes 验证集上的精度与参数分析
FLOPS 和参数表明在给定分辨率下处理图像所需要的操作数量。出于公平对比的考虑,本文选择 640×360 作为输入图像的分辨率。同时,表 5 给出了不同输入图像分辨率和不同硬件基准下本方法与其他方法的速度对比。
表 5:本文方法与其他方法的速度结果对比。1和2分别代表backbone是Xception39和Res18网络
最后,本文给出了该方法在 Cityscapes 测试数据集上的速度及相应的精度结果。从表 6 可以看出,该方法相较于其他方法在速度和精度方面的巨大进展。
表 6:Cityscapes 测试集上本文方法与其他方法的精度与速度对比
在评估过程中,本文首先把输入图像的分辨率从 2048×1024 缩至 1536×768,以测试速度和精度;同时,通过 online bootstrap 的策略计算损失函数。整个过程中本文不采用任何测试技巧,比如多尺度或多次裁剪测试。
精度分析
事实上,BiSeNet 也可以取得更高的精度结果,甚至于可以与其他非实时语义分割算法相比较。这里将展示 Cityscapes,CamVid 和 COCO-Stuff 上的精度结果。同时,为验证该方法的有效性,本文还将其用在了不同的骨干模型上,比如标准的 ResNet18 和 ResNet101。
结果
Cityscapes:如表 7 所示,该方法在不同模型上都取得了出色的结果。为提升精度,本方法首先随机裁切 1024x1024 大小的图作为输入。图 4 给出了一些可视化结果实例。
图 4:Cityscapes 数据集上基于 Xception39,Res18 和 Res101 的结果实例
表 7:Cityscapes 测试集上本方法与其他方法的精度结果对比
CamVid:表 8 给出了 CamVid 数据集上统计的精度结果。对于测试,本文通过训练数据集和测试数据集训练模型。这里训练和评估使用的分辨率是 960×720。
表 8:CamVid 测试集上的精度结果
COCO-Stuff:表 9 给出了 COCO-Stuff 验证集上的精度结果。在训练和验证过程中,本文把输入分辨率裁剪为 640×640。出于公平对比,本文不采用多尺度测试。
表 9:COCO-Stuff 验证集上的精度结果。注:这里的COCO-Stuff是官方新公布的16万张图片的数据集
结论
BiSeNet 旨在同时提升实时语义分割的速度与精度,它包含两路网络:Spatial Path 和 Context Path。Spatial Path 被设计用来保留原图像的空间信息,Context Path 则利用轻量级模型和全局平均池化快速获取大感受野。由此,在 105 fps 的速度下,该方法在 Cityscapes 测试集上取得了 68.4% mIoU 的结果。
参考文献
lChollet, F.: Xception: Deep learning with depthwise separable convolutions. IEEE Conference on Computer Vision and Pattern Recognition (2017)
lBadrinarayanan, V., Kendall, A., Cipolla, R.: SegNet: A deep convolutional encoder-decoder architecture for image segmentation. IEEE Transactions on Pat- tern Analysis and Machine Intelligence 39(12), 2481–2495 (2017)
lPaszke, A., Chaurasia, A., Kim, S., Culurciello, E.: Enet: A deep neural network architecture for real-time semantic segmentation. arXiv (2016)
lWu, Z., Shen, C., Hengel, A.v.d.: Real-time semantic image segmentation via spatial sparsity. arXiv (2017)
lRonneberger, O., Fischer, P., Brox, T.: U-net: Convolutional networks for biomedical image segmentation. In: International Conference on Medical Image Computing and Computer-Assisted Intervention (2015)
lYu, C., Wang, J., Peng, C., Gao, C., Yu, G., Sang, N.: Learning a discriminative feature network for semantic segmentation. In: IEEE Conference on Computer Vision and Pattern Recognition (2018)