简介
A Unified Efficient Pyramid Transformer for Semantic Segmentation
作者单位:复旦, 亚马逊(李沐等), UC Davis
论文链接:
https://arxiv.org/abs/2107.14209
代码链接:
coming soon...
导读
任务
自然图像场景下的语义分割。
难点
复杂场景下的上下文建模困难
边界上不同类之间容易混淆
不足
仅关注上下文建模
仅关注边界细化
解决
采用稀疏采样策略并结合基于Transformer的注意力机制,以实现高效的上下文建模
引入了一个单独的空间分支来捕获图像细节以进行边界细化。
效果
在三个主流的语义分割基准上【ADE20K、PASCAL和Cityscapes】取得了一致性的性能提升。
方法
本文提出了一种称为统一的高效金字塔Transformer(UNified-Efficient Pyramid Transformer, UN-EPT)网络架构,它主要包含两个分支,即上下文分支和空间分支,分别用于提取上下文信息建模和边界优化。下面CVHub将围绕这两部分着重介绍。
上下文分支——Efficient Transformer for modeling contexts
在正式讲解之前,让我们先简单的回顾下Transformer架构,其主要包含编码器和解码器,可用于建模长距离依赖。编码器中包含了多个Transformer模块,由多头注意力层(MHA)和多层感知机层(MLP)以及残差连接组成。其中MHA通过自身信息构建QKV以用于不同patch之间的全局关系建模,而MLP则用于提供特征变换的能力。此外,为提供高维位置信息和建模关系,还需要额外引入位置编码。
Transformer with sparse sampling
为了模拟像素到像素的相关性,当输入序列相对较长时,Transformer会带来巨大的内存空间和计算资源成本。在分割任务中,有几个问题使transformer在实际场景中效率低下且无法应用:
大的输入尺寸会导致冗长的像素特征序列,使其无法适应通用的GPU硬件;
同时关注所有像素是不明智的,因为这可能会造成混乱。例如,要分割同一类别的不同实例,每个像素只需要关注它所属的实例区域,其中不相关实例的特征是冗余的。
为了解决上述问题,作者将Deformable DETR[1]中的稀疏采样策略应用于语义分割。也就是说,强制每个查询像素只参与对应小组的注意力得分计算。下面简要介绍下具体流程。
给定一张输入图片,首先利用Backbone(如ResNet50或Deit等)进行初步的特征提取(给予适当的归纳偏置);其次,利用一个 卷积来减少通道维度,并将其躺平喂入Transformer;与标准的Transformer不同,这里并没有直接一键生成QKV,而是仅通过Q以及它的映射矩阵来计算出attentiton score。(CVHub点评:跟GC-Net思路其实是类似的,当然也有很多论文采用这种方法来避免QK的二次方复杂度运算)此外,为了获取必要的位置信息,这里为Q加入了正弦和余弦位置编码。最后,由于语义分割需要输出与原图大小对应的mask,所以后面还需要接一个Transformer Decoder还原回去。因此,这里是通过将空间分支的输出作为Context Queries来指导Decoder对Transformer Encoder的解码。
Efficient pyramid transformer
由于内存限制,作者声称很少有方法采用多尺度信息来解决分割问题(在这里,CVHub谨代表Deeplab和PSPNet以及它们的variants表示呵呵,同时代表BiSeNet等一系列实时分割网络表示认同)。作者这里结合了 和flatten操作很自然的将其扩展为金字塔特征输入道Context分支里面。随后利用线性投影将输入映射道查询Q和值V特征上,同时为Q添加位置编码和尺度编码,为模型提供更多的空间信息。总的来说,上下文查询从金字塔特征中推理并选择出信息最丰富的像素来生成预测。通过使用金字塔特征,能够对空间上下进行更强的建模。
空间分支——Dynamic learnable spatial branch
与图像分类和目标检测相比,使用Transformer进行语义分割的一个主要区别是我们需对要高频图像细节进行密集预测。然而,当Transformer应用于视觉任务时,如DETR,解码器的输入查询是所有图像的固定嵌入,旨在学习数据集的全局信息。这个特定的信息可能不适合分割问题。为了缓解这个问题,作者特地引入了一个空间分支来适应各种输入图像。此外,利用空间分支可以进一步地捕获边界信息,因为它的输出具有相对较高的分辨率并保持更多的图像细节。最后,作者采用两个额外的Head来预测边界像素(Boundary Head)和每个边界像素对应的内部像素(Direction Head)。从这两个预测生成的偏移量用于细化上下文分支输出的分割结果,得到一张更加细化的分割mask图。
Context queries
解码器输入用作上下文查询,具有不同的设计选择。比较大众的方法是使用随机初始化嵌入。然而,在推理时,所有输入图像的嵌入都是相同的,这无法提供足够的上下文信息。因此,我们引入动态上下文作为解码器输入,以促进自我注意力和交叉注意力的作用。如上图的空间分支所示,其包含三个 卷积层,然后是BN和ReLU,以从输入图像中进行特征提取。该分支产生的输出特征图是原始图像的1/8,由于空间尺寸大,编码了丰富而详细的空间信息。根据经验,作者从空间分支中选择中间特征作为上下文查询。
Boundary refinement
受SegFix启发,作者在特征提取完之后采用了一个并行分支用于提取边界信息。
Boundary Head: Conv -> BN -> ReLU with 256 output channels.最后再通过 Conv和unsamping上采样至原始的空间分辨率 ,同时采用BCE进行监督损失。
Direction Head:同Boundary Head类似,只不过这里将其划分为 组,因此最后的输出为 ,这里 取8. 需要注意的是,最后这里是用Direction Head直接作用到Boundary Head,以保证Direction Loss仅适用于边界像素,同时通过交叉熵损失对这两个分支进行监督。
损失函数
这里, 。各部分损失含义可对照上面的框架图。【话说这里引入了这么多超参感觉不好优化】
实验
Qualitative analysis
可视化结果图主要展示了与CCNet和OCRNet这两个SOTA网络的对比。可以看出,在ADE20K和PASCAL-Context数据集上,本文所提出的方法对于小目标的分割比较友好,同时也能更加高效的建模上下文信息。其次作者在Cityscapes挑选了几张结果图表明UN-EPT对于目标边界的优化效果较好。
最后,作者在这里做了个消融实验,以证明加边界优化模块的重要性。可以看出,不加边界优化模块出来的分割图其分割边界较为粗糙,而加入之后边界像素区分的非常光滑。【丝滑般的边界亮瞎了我的24k脑白金CV眼】
Quantitative analysis
首先比较了不同模型在ADE20K数据集上的验证集比较结果。【这里统一采用MMSegmentation作为实验平台】可以看出,在统一采用ResNet50作为Backbone的情况下,本文方法在mIoU指标上相比第二名的方法CPNet提升了1.6个百分点,同时pixAcc略微提升0.3个百分点。而在应用大的Backbone时,本文方法仅比SETR略微提升0.3个百分点的mIoU以及0.1个百分点的pixAcc。【作者这里并没有统一采用相同的Backbone】
上面分别验证了不同模型在Cityscapes数据集上验证和测试时的情况。可以看出,在开启多尺度推理的情况下,效果也有略微提升。
除了在PASCAL-Context验证集上对比了下模型精度,这里同时也进行了消融实验,以验证各个模块之间的有效性。从实验结果可以看出,采用更大的Backbone提升效果是最显著的。同时由表6也可以看出,不同的采样策略所获得的结果差异也是比较大的。
从上表可知,UN-EPT可以在保证速度的情况下获得极具竞争力的分割结果。
总结
首先,针对复杂场景下的上下文建模困难,作者采用了一个称为高效金字塔Transformer的注意力模块,以充分利用上下文建模进行语义分割;其次,为了避免边界上不同类之间混淆为模型带来的困惑,作者引入了一个空间分支来提供输入信息的自适应以及细化目标边界,以用于最终的分割mask预测。最后,通过有机的整合这两个模块,作者为上下文建模和边界处理提供了一个统一的端到端的框架,它在三个基准数据集上ADE20K、Cityscapes 和 PASCAL-Context取得了不错的效果。总的来说,本文更像是一篇集大成之作,许多方法均是利用现有的技术去进行有机的整合以更好的解决语义分割的上下文建模、边界模糊以及精度速度权衡问题。
References
[1]
Deformable DETR: Deformable Transform- ers for end-to-end object detection.
上面论文和代码下载
后台回复:EPT,即可下载上述论文和代码
CVPR和Transformer资料下载
后台回复:CVPR2021,即可下载CVPR 2021论文和代码开源的论文合集
后台回复:ICCV2021,即可下载ICCV 2021论文和代码开源的论文合集
后台回复:Transformer综述,即可下载最新的两篇Transformer综述PDF
CVer-图像分割交流群成立
扫码添加CVer助手,可申请加入CVer-图像分割 微信交流群,方向已涵盖:目标检测、图像分割、目标跟踪、人脸检测&识别、OCR、姿态估计、超分辨率、SLAM、医疗影像、Re-ID、GAN、NAS、深度估计、自动驾驶、强化学习、车道线检测、模型剪枝&压缩、去噪、去雾、去雨、风格迁移、遥感图像、行为识别、视频理解、图像融合、图像检索、论文投稿&交流、PyTorch和TensorFlow等群。
一定要备注:研究方向+地点+学校/公司+昵称(如图像分割+上海+上交+卡卡),根据格式备注,可更快被通过且邀请进群
▲长按加小助手微信,进交流群▲点击上方卡片,关注CVer公众号
整理不易,请点赞和在看