论文链接:https://arxiv.org/abs/2003.13328v1
代码链接:https://github.com/Andrew-Qibin/SPNet
从之前语义分割的研究事实证明,空间池化可有效捕获用于场景分析等像素级预测任务的远程上下文信息。本文在传统的N×N型Spatial pooling的基础上,提出了一种考虑狭长卷积核(1×N或N×1)的strip pooling策略。并基于Strip pooling,进一步研究了Spatial pooling体系结构设计。
主要贡献:
1)引入了一个新的条纹池化(strip pooling)模块,使backbone网络能够有效地模拟长距离依赖关系;
2)提出了一种以多种金字塔池化(Spatial pooling)为核心的新型模块MPM,并构建了SPNet;
3)系统地比较了所提出的strip pooling和传统Spatial pooling技术的性能;两种新颖的基于池的设计都是轻量级的,并且可以在现有场景解析网络中用作有效的即插即用模块。
4)在ADE20K和CityScapes上进行的大量实验表明,本文的方法达到了SOTA。
一、背景
提高卷积神经网络中远程依赖关系建模能力的一种方法是采用self-attention机制或non-local模块。然而,它们会消耗大量内存。
具体文章可以关注:视觉注意力机制:self-attention机制与non-local模块。对于non-local模块计算量大的问题的改进方法,可以关注文章:non-local模块如何改进?来看CCNet、AAN。
其他的远程上下文建模方法包括:
- 空洞卷积,其目的是在不引入额外参数的情况下扩大卷积神经网络的感受野;
- 全局/金字塔池化,通过结合不同池化核大小的池化层,为图像提供全局信息。
然而,空洞卷积和池化操作都是在正方形卷积中输入特征图并进行卷积运算。这限制了它们在捕获广泛存在于现实场景中的各向异性的上下文上的灵活性。
例如,在某些情况下,目标对象可能具有长条形结构(如图1b中的草地)或离散分布(如图1a中的柱子)。使用大的方形池窗口不能很好地解决这个问题,因为它将不可避免地合并来自无关区域的污染信息。
图1:图中说明了长条形池化和空间池化在场景解析方面的不同工作方式。从上到下分别为:条纹池化;传统的空间池池化;只使用传统池化的结果 ;考虑条纹池化的结果。如上图所示,与传统的空间池化(绿色网格)相比,条纹池化具有条带形的池化核(红色网格),因此可以捕获离散分布区域(黄色边框)之间的远距离依赖关系。
为了更有效地捕获长依赖关系,本文在空间池化层扩大卷积神经网络感受野和捕获上下文信息的基础上,提出了条形池化(strip pooling)的概念。
作为全局池化的替代方案,条纹池化有两个优点:
- 它沿着一个空间维度部署一个长条状的池化核形状,因此能够捕获孤立区域的长距离关系,如图1(a)和1(c)的第一行所示部分所示。
- 在其他空间维度上保持较窄的内核形状,便于捕获局部上下文,防止不相关区域干扰标签预测。
在网络中使用这种长而窄的池内核,可以使语义分割网络能够同时聚合全局和局部上下文信息。这是与传统的从固定的正方形区域收集上下文的池化有本质的不同。
二、具体方法
基于条纹池化的想法,作者提出了两种即插即用的池化模块 — Strip Pooling Module (SPM) 和 Mixed Pooling module (MPM)。
2.1、SPM(Strip pooling)
SPM由两条路径组成,它们分别侧重于沿着水平和垂直空间两个维度捕获远程上下文。
图中的条纹池化,实际上和普通池化方法没有区别,就是把池化核(长条形区域)所对应的特征图上位置的像素值求平均。
主要流程:
- 输入一个特征图,这里实际上为C×H×W,为了方便讲解图中只画了一个通道。C个通道的特征图输入处理原理与这里所示的一个通道操作一模一样。
- 输入的特征图经过水平和竖直条纹池化后变为H×1和1×W,对池化核内的元素值求平均,并以该值作为池化输出值。
- 随后经过卷积核为3的1D卷积对两个输出feature map分别沿着左右和上下进行扩容,扩容后两个特征图尺寸相同,对扩容后的特征图对应相同位置求和得到H×W的特征图。
- 之后通过1×1的卷积与sigmoid处理后与原输入图对应像素相乘得到了输出结果。
在上面的过程中,输出张量中的每个位置都与输入张量中的各种位置建立了关系。例如,在上图中,输出张量中以黑框为界的正方形与所有与它具有相同水平或垂直坐标的位置相连(被红色和紫色边框包围)。因此,通过多次重复上述聚合过程,可以在整个场景中构建长期依赖关系。此外,得益于element-wise乘法操作,该SPM也可以被视为一种视觉注意力机制。(其实,这个操作与CCNet思路类似,大家可以参考视觉注意力机制系列文章进行对比)
SPM可以直接应用于任何预先训练的骨干网络,而无需从无到有地进行训练。与全局平均池化相比,条纹池化考虑的是较长但较窄的范围,而不是整个特征图,避免了在相距较远的位置之间建立不必要的连接。与需要大量计算来建立每对位置之间关系的基于注意力的模块(no-local )相比,SPM是轻量级的,可以很容易地嵌入到任何构建块中,从而提高捕获远程空间依赖关系和利用通道间依赖项的能力。
2.2、MPM(Mixed Pooling Module)
此外,作者提出了一种新的附加组件块,称为混合池模块(MPM),以进一步在高语义级别上建模长期依赖关系。它通过利用具有不同内核形状的池化操作来探测具有复杂场景的图像,从而收集有用的上下文信息。
之前的研究结果表明,金字塔池模型(pyramid pooling module, PPM)是增强语义分割网络的有效方法。然而,PPM严重依赖于标准的池化操作(尽管不同的池内核位于不同的金字塔级别)。考虑到标准池化和条纹池化的优点,作者改进了PPM,提出了混合池模块(MPM),它侧重于通过各种池化操作聚合不同类型的上下文信息,以使特征表示更有辨别力。优点是可以连续使用它来扩展远程依赖关系。在具有相同骨干网的情况下,仅具有两个MPM(原始PPM的大约1/3参数)的网络的性能甚至比PSPNet还要好。
提出的MPM由两个子模块组成,它们同时捕获不同位置之间的短距离和长距离依赖关系,作者发现这对于场景解析网络都是必不可少的。
对于长距离依赖关系,与先前使用全局平均池化层的工作不同,文中通过同时使用水平和垂直条纹池化操作来捕获上下文信息。简化图可在图3(b)中找到。同时,条纹池化使在整个场景中离散分布的区域之间的连接和具有条纹状结构的编码区域成为可能。
但是,对于语义区域分布紧密的情况,捕获局部上下文信息也需要进行空间池化。考虑到这一点,如图3(a)所示,文中采用了轻量级金字塔池子模块来进行短程依赖收集。它具有两个空间池化层,然后是用于多尺度特征提取的卷积层,以及用于原始空间信息保留的2D卷积层。每次合并后的特征图的大小分别为20×20和12×12,然后通过求和将所有三个子路径合并。
基于以上两个子模块,文中将它们嵌套在具有瓶颈结构的残差块中,以进行参数缩减和模块化设计。具体地,在每个子模块之前,首先使用1×1卷积层来减少通道数量。然后将两个子模块的输出被串联在一起,并引入另一个1×1卷积层以进行通道扩展。其中,除了用于通道数量减少和扩展的卷积层以外,所有卷积层的内核大小均为3×3或3的倍数大小。
2.3、SPNet
论文基于SPM和MPM模块搭建了一个网络:SPNet。采用经典的残差网络作为backbone。通过扩张策略改进了原始ResNet,并将最终的特征图大小设置为输入图像的1/8。将SPM添加到每个阶段中最后一个构建块的3×3卷积层和最后一个阶段中的所有构建块之后。 SPM中的所有卷积层共享相同数量的输入张量通道。对于MPM,由于其模块化设计,我们直接将其构建在主干网络上。由于骨干网络的输出具有2048个通道,因此我们首先连接一个1×1卷积层将输出通道从2048减少到1024,然后添加两个MPM在主干上。在每个MPM中,所有内核尺寸为3×3或3的倍数的卷积层都有256个通道(即1/4的缩减率为用过的)。最后添加卷积层以预测分割图。
三、实验结果
论文在ADE20K、Cityscapes和Pascal Context数据集上进行了实验。在cityscape上达到了82.0的mIoU。具体实验细节,可以参考论文原文。
代码语言:javascript复制目标检测系列秘籍一:模型加速之轻量化网络秘籍二:非极大值抑制及回归损失优化秘籍三:多尺度检测秘籍四:数据增强秘籍五:解决样本不均衡问题秘籍六:Anchor-Free
视觉注意力机制系列Non-local模块与Self-attention之间的关系与区别?视觉注意力机制用于分类网络:SENet、CBAM、SKNetNon-local模块与SENet、CBAM的融合:GCNet、DANetNon-local模块如何改进?来看CCNet、ANN
语义分割系列一篇看完就懂的语义分割综述最新实例分割综述:从Mask RCNN 到 BlendMask超强视频语义分割算法!基于语义流快速而准确的场景解析CVPR2020 | HANet:通过高度驱动的注意力网络改善城市场景语义分割
基础积累系列卷积神经网络中的感受野怎么算?
图片中的绝对位置信息,CNN能搞定吗?理解计算机视觉中的损失函数深度学习相关的面试考点总结
自动驾驶学习笔记系列 Apollo Udacity自动驾驶课程笔记——高精度地图、厘米级定位 Apollo Udacity自动驾驶课程笔记——感知、预测 Apollo Udacity自动驾驶课程笔记——规划、控制自动驾驶系统中Lidar和Camera怎么融合?
竞赛与工程项目分享系列如何让笨重的深度学习模型在移动设备上跑起来基于Pytorch的YOLO目标检测项目工程大合集目标检测应用竞赛:铝型材表面瑕疵检测基于Mask R-CNN的道路物体检测与分割
SLAM系列视觉SLAM前端:视觉里程计和回环检测视觉SLAM后端:后端优化和建图模块视觉SLAM中特征点法开源算法:PTAM、ORB-SLAM视觉SLAM中直接法开源算法:LSD-SLAM、DSO视觉SLAM中特征点法和直接法的结合:SVO
2020年最新的iPad Pro上的激光雷达是什么?来聊聊激光SLAM