【论文阅读】Squeeze-and-Attention Networks for Semantic Segmentation(CVPR2020)

论文题目:Squeeze-and-Attention Networks for Semantic Segmentation(用于语义分割的挤压—注意网络)

下载链接:https://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=9157815&tag=1

代码:未开源

 

文章贡献:

1. 将语义分割分解为两个子任务:像素预测和像素分组;

2. 提出了SA模块,能兼顾单个像素的多尺度密集预测,及像素组的空间注意,优于SE;

3. 提出了由SA模块构成的SANet网络结构,整合多尺度背景特征和图像级类别信息。

 

1 背景与动机

分割方法的进步主要是通过改进像素表示来实现精确标记。然而,语义分割并不完全等同于像素预测。

作者认为语义分割可以表示为2个独立的部分:1)像素级预测(每个像素的分类)和 2)像素分组(像素之间的联系)。

以往方法主要是在1)上改进,而忽视了2)。

【论文阅读】Squeeze-and-Attention Networks for Semantic Segmentation(CVPR2020)

因此作者引入像素分组的第二个子任务,直接鼓励属于同一类的像素在没有空间限制的情况下被分组在一起,基于像素分组问题设计了SA模块来缓解卷积核的局部约束。

 

2 相关工作

多尺度上下文

  1. 拉普拉斯金字塔结构整合多尺度上下文特征,最流行的方法是采用池化操作来收集不同尺度的空间信息。如pspnet,deeplab等。
  2. 编码器-解码器架构融合具有不同层次语义含义的特征。如FCN、Unet等。

因此作者也采取类似结构,融合了骨干残差网络的4个不同阶段输出,以获得多尺度信息。

通道注意力

  • 有选择地对特征图的通道进行加权,有效地提高了传统残差模块的表示能力,但例如SE模块的方法会导致模型参数变多。

【论文阅读】Squeeze-and-Attention Networks for Semantic Segmentation(CVPR2020)

图(a)是残差结构,下分支为跳跃连接;图(b)是将SE加入到残差结构的分支中。图中省略了归一化层和激活层。

压缩和激励模块SE的核心思想在于网络训练的同时学习不同通道特征图的权重,使得有利于损失函数下降的特征图的权重变大,而对损失函数下降没有贡献或者贡献较小的特征图权重变小。

【论文阅读】Squeeze-and-Attention Networks for Semantic Segmentation(CVPR2020)

压缩步骤:输入是HxWxC的特征图,可以看成是C张HxW的图片,每张图片都用它所有像素点的均值来表示(即每个通道都采用1x1的平均池化),获得1x1xC的大小。

激励步骤:输入是压缩操作的输出,大小为1x1xC,经过2层全连接层,可以认为是一层隐藏层+一层输出层,隐藏层由1x1xC变为1x1xC’(C’<C),输出层由1x1xC’变为1x1xC,即为每个通道代表的特征分配的权重。隐藏层后接ReLU激活函数,输出层后接Sigmoid函数,把权重归一化。

将激励操作后的输出结果1x1xC和原始的特征图HxWxC相乘,得到融合了通道注意力信息的特征的结果。

 

与提高分类性能的SE模块类似,作者提出SA模块,专门为提高分割结果而设计,如图(c)所示:

【论文阅读】Squeeze-and-Attention Networks for Semantic Segmentation(CVPR2020)

SE在下采样时是完全压缩的,变为1x1xC,但SA使用的注意力通道(下分支)是未完全压缩的,可有效地产生非局部空间注意力,同时避免在上采样时需要过大的倍数,模型参数量不大。

SE是由注意力通道获取到权重,乘到Xin上再加上Xres,而SA整合了空间关注,对输出进行聚合以提高分割性能。具体表现在注意力通道获取的Xatt不是乘以Xin,而是乘上主通道的输出Xres,之后再加上Xatt。

论文中,SA的主通道和注意力通道的通道数都减少为特征图的1/4,注意力通道的中间ACONV1的通道数设置为4,下采样pooling和上采样upsample的因数都设置为8。

ACONV和CONV本质上是一样的,只是它属于注意通道所以叫注意卷积(attention convolution)。

 

3 网络结构

【论文阅读】Squeeze-and-Attention Networks for Semantic Segmentation(CVPR2020)

图中蓝色框相当于是编码部分,论文使用扩张的ResNet(resnet50&resnet101)和Effiicinets作为骨干网络,FCN Head是用于生成语义分割的分支,相当于是解码部分。

为了聚合多阶段非局部特征,作者在骨干网络的多阶段输出上采用SA模块,从而得到更好的对象边界和场景解析结果。

整个网络一共包含3个损失,总损失为:

【论文阅读】Squeeze-and-Attention Networks for Semantic Segmentation(CVPR2020)

其中参数α和β是权重参数,经测试,在论文所使用的数据集中,α取0.2,β取0.8效果最好。

3个损失具体如下面公式所示:

【论文阅读】Squeeze-and-Attention Networks for Semantic Segmentation(CVPR2020)

N是训练集的所有图片总数,M表示空间位置(即若图片大小是a*b,那么M=a*b,为像素点总数),C是类别数。

【论文阅读】Squeeze-and-Attention Networks for Semantic Segmentation(CVPR2020)是SANet的预测值,【论文阅读】Squeeze-and-Attention Networks for Semantic Segmentation(CVPR2020)是真实值。【论文阅读】Squeeze-and-Attention Networks for Semantic Segmentation(CVPR2020)是类别的预测值和真实值,用来计算Lcat。Lcat相当于是一个多标签分类,只判断这张图片中有哪些类别而不管他们的位置。具体为,将骨干网络4个阶段的输出分别经过SA模块后进行concat,之后再进行平均池化和全连接层,获得一个1x1xn(n表示类别总数)的结果,将这个结果跟该张图片的真实多标签进行对比,计算Lcat损失。

Lmask和Lden是通常语义分割的交叉熵损失,Lcat是分类损失。

MASK是最终预测的语义分割结果。

 

总的来说感觉还是像素分类,Lmask和Lden所对应的真实值应该是一样的,论文只是比一般方法多了Lcat和Lden的loss计算。

 

4 实验结果

作者在Pascal VOC和Pascal Context两个数据集上进行测试,其中Pascal VOC设置学习率为0.0001,使用预训练的COCO数据集权重,再训练50个epoch;Pascal Context设置学习率为0.001,不使用预训练权重,一共训练80epoch。在两个数据集上均使用了随机梯度下降和 poly learning rate annealing schedule ,设置batchsize为16,骨干网络选用resnet50和resnet101,在多GPU上训练。

1. 使用Pascal Context数据集来确定损失函数中α和β的取值为α=0.2,β=0.8:

【论文阅读】Squeeze-and-Attention Networks for Semantic Segmentation(CVPR2020)

具体来说,使用resnet50作为骨干网络,训练20个epoch。左图为当β=0.8时α不同取值的mIoU对应情况,右图为当α=0.2时β不同取值的mIoU对应情况。

2. Lcat和Lden的影响

在Pascal Context上,使用Cat和Den损失后有效了提高了分割的准确率,其中mIoU计算中不包含背景:

【论文阅读】Squeeze-and-Attention Networks for Semantic Segmentation(CVPR2020)

3. SANet的有效性

在Pascal Context上,对比SANet和其它的一些方法,其中mIoU计算中包含背景:

【论文阅读】Squeeze-and-Attention Networks for Semantic Segmentation(CVPR2020)

以resnet50作为骨干网络的FCN基线结果和SANet分割结果效果对比:

【论文阅读】Squeeze-and-Attention Networks for Semantic Segmentation(CVPR2020)

4. SA模块的有效性

在FCN基线上对比SA和SE,骨干网络使用resnet50和resnet101:

【论文阅读】Squeeze-and-Attention Networks for Semantic Segmentation(CVPR2020)

resnet101比resnet50效果好一点,SE作用不明显,SA作用明显。

5. 注意力图和特征图的可视化

在Pascal VOC数据集上进行可视化,体现注意力机制的关注点:

【论文阅读】Squeeze-and-Attention Networks for Semantic Segmentation(CVPR2020)

bcd分别是在原始输入图片上选择的3个点对应的注意力图,注意力图中的红色区域可以被认为是最关注的像素组。即图b)蓝点关注物为小车,图c)黄点关注牛,图d)红点关注摩托。

在SA模块的低级(SA Head1)和高级(SA Head4)上注意力的侧重点不同。在低级阶段,Attn注意力图有广阔的视野,体现在第1行红色部分分布全局,具体关注点不明显。而在高级阶段,Attn注意图主要集中在所选点周围的区域,体现在第4行,bcd三张图的红色关注部分分别在小车、牛、摩托上。同时,Head4的Main特征图也比Head1语义更强,更清晰。

6. Pascal VOC的一些结果

以下为未使用COCO预训练权重的结果对比,SANet训练80epoch:

【论文阅读】Squeeze-and-Attention Networks for Semantic Segmentation(CVPR2020)

使用COCO预训练权重的结果对比:

【论文阅读】Squeeze-and-Attention Networks for Semantic Segmentation(CVPR2020)

模型复杂度比较:

【论文阅读】Squeeze-and-Attention Networks for Semantic Segmentation(CVPR2020)

MACs:每秒的乘法累积操作,Params:网络参数。使用resnet101作为骨干网络,未使用COCO预训练权重。

 

参考文档

[1] CVPR2020 语义分割之将像素分类group成整体

[2] Squeeze-and-Attention Networks for Semantic Segmentation

[3] Squeeze-and-Attention Networks for Semantic Segmentation | CVPR2020

上一篇:设置超链接


下一篇:<自动化测试>之<使用unittest Python测试框架进行参数化测试>