计算机系统应用教程网站

网站首页 > 技术文章 正文

CCNet:基于交叉注意力机制的语义分割

btikc 2024-12-28 11:29:12 技术文章 37 ℃ 0 评论

论文:CCNet: Criss-Cross Attention for Semantic Segmentation

论文链接:https://arxiv.org/pdf/1811.11721v2.pdf

代码链接:https://github.com/speedinghzl/CCNet

Cityscapes test:81.9%【miou】

LIP val:55.47%【miou】


算法概述

本文提出了一个交叉网络(CCNet),以非常高效且有效的方式获取全图像上下文信息。具体来说,对于每个像素,一个新的交叉注意模块在其交叉路径上收集所有像素的上下文信息。通过进一步的循环操作,每个像素最终可以捕获全图像的上下文依赖关系。同时还提出了类别一致性损失,以交叉注意力模块产生更具有辨别力的特征。现有的语义分割算法多基于FCN进行改进,然而,由于固定的几何结构,传统的FCN系列模型局限于只提供短距离上下文信息的局部感受野,而上下文信息不足的限制,极大地影响了分割的准确性。更进一步,有很多工作基于膨胀卷积和多尺度,来扩充网络感受野。然而,基于该类操作的方法只从少量的周围像素中收集信息,实际上并不能生成密集的上下文信息。为了融合密集和像素级的上下文信息,提出了一些全连接图神经网络(GNN),Non-local等方法,用估计的全图像上下文表示来增强传统的卷积特征。

如上图所示,即为Non-local模块,这种特征增强方法允许以一种灵活的方式表示特征之间的非局部关系,并在多个视觉识别任务中取得了显著的改进。然而很显然,这种方法计算复杂度较高,且需要大量的GPU内存。为了解决上述Non-local的问题,本文提出的方法用几个连续的稀疏连接图代替常见的单个密集连接图,具体的,文章使用两个连续的交叉注意模块,每个模块对于特征图中的每个位置只有稀疏连接。如下图所示,针对每个像素位置,交叉注意模块在其水平和垂直方向聚合上下文信息。通过连续叠加两个交叉注意模块,每个位置都可以收集给定图像中所有像素的上下文信息。

为了达到捕捉全图像依赖关系的目的,本文创新性地对交叉注意模块进行了重复操作。其中,局部特征首先通过一个交叉注意模块来收集水平和垂直方向的语境信息。然后,通过将第一个交叉注意模块生成的特征图输入到第二个交叉注意模块中,从交叉路径获得的附加上下文信息最终使所有位置的全图依赖关系成为可能。第二个特征图中的每个位置(例如红色)可以从其他所有特征图中收集信息。本文共享交叉模块的参数,以保持模型苗条。由于输入和输出都是卷积的特征映射,交叉注意模块可以很容易地插入任意一个全卷积神经网络,称为CCNet,并以端到端方式学习全图上下文信息。又由于交叉注意模块的良好可用性,CCNet可以直接扩展到3D网络,捕捉远程的时间上下文信息。此外,为了推动所提出的循环交叉注意方法学习更具有辨别力的特征,本文引入了类别一致性损失来增强CCNet。具体来说,类别一致的损失将图像中每个像素映射到一个n维向量在特征空间中,这样像素属于同一类别的特征向量聚拢在一起,而像素属于不同类别的特征向量互相远离。

网络架构

网络结构如下图所示。将输入图像通过采用全卷积网络,生成空间大小为H×W的特征图X。为了保留更多的细节并有效地生成密集的特征映射,本文去掉了最后两个采样操作,并在后续卷积层中使用膨胀卷积,从而将输出特征X的宽度/高度扩大到输入图像的1/8。将得到的特征H,送入到第一个交叉注意力模块,得到特征H',该特征只有水平和垂直方向的上下文信息。因此在将H'送入到第二个交叉注意力模块,得到特征图H''。实现了全局像素的上下文信息获取,本文将这种使用两个交叉注意力模块的操作命名为循环交叉注意力。最后将特征H''和X进行concat,并送入分割检测头,实现最终的语义分割任务。

交叉注意力(CCA)

交叉注意力模块,以稀疏的方式获取水平和垂直两个方向上的上下文信息,来增强像素级别的特征表达能力。如下图3所示,给定特征图H【C×W×H】,该模块首先利用三个1×1的卷积得到3张特征图Q,K,V【C'×W×H】,其中C'小于C。

利用Q,K矩阵,获取注意力图A。具体步骤如下,对于Q矩阵中空间维度【W×H】中的每一个位置,记作Qu【C'】,并将K矩阵中相同空间位置处,且与该位置同行同列的向量组合成一个向量空间Ωu【(H+W-1)×C'】。然后就当前位置u,进行仿射操作,公式如下,从公式1可以看出,di,u是一个浮点数,代表了位置u和其同行同列中任意一个元素的相关性。最终遍历所有位置后,得到相关性矩阵A【(H+W-1)×W×H】。

利用V矩阵,找到位置u处的特征特征向量和同行同列的特征向量集。并利用如下公式进行注意力特征提取。遍历所有位置的空间注意力,对输入特征图进行注意力提取,最后concat上原始的特征图H,强化特征表达。

循环交叉注意力(RCCA)

尽管交叉注意模块可以在水平和垂直方向捕捉上下文信息,但仍然没有一个像素与周围像素之间的连接,主要是这些连接并不在交叉路径上。为了解决这一问题,本文创新性地介绍了基于交叉关注的循环操作。该模块有两个循环,能够从所有像素中获取全图上下文信息,生成上下文信息密集的新特征。如下图所示,形象的展示了通过两次CCA模块,可以做到全局注意力耦合。在循环1中,蓝色位置可以影响到两个同行或同列的浅绿色位置。在循环2中,浅绿色位置可以影响到同行或同列的深绿色位置。将两个循环结合,蓝色位置就可以影响到非同行非同列的深绿色位置。因此做到了全局的注意力耦合。

总的来说,RCCA模块弥补了交叉注意不能从所有像素获取密集的上下文信息的不足。与CCA相比,RCCA模块由于参数共享的原因,没有带来额外的参数,可以以较小的计算增量成本获得更好的性能。

类别一致性损失

在语义分割任务中,属于同一类别的像素应该具有相似的特征,而来自不同类别的像素应该具有距离很远的特征。本文把这种现象称为类别一致性。由于RCCA模块将全局上下文紧密联系在了一起,可能会导致预测结果过于平滑,而导致分割边界模糊的问题。为了解决这一潜在问题,本文除了引入交叉熵损失来惩罚最终预测的分割图与ground truth之间的不匹配外,进一步引入类别一致损失来驱动RCCA模块直接学习类别一致特征。为此,本文给出了三个类别一致性损失:Lvar,Ldis,Lreg,分别代表了,1)惩罚每个实例中具有相同标签的特征之间的距离较大,2)惩罚不同标签的平均特征之间的距离较小,3)分别将所有类别的平均特征趋向中心。具体公式如下:

结论

在本文中,提出了一种基于深度学习的密集预测任务的十字交叉网络(CCNet),它在交叉路径上自适应地捕捉上下文信息。为了获得密集的上下文信息,引入了聚合所有像素上下文信息的RCCA。实验表明,RCCA捕获全图像上下文信息的计算成本和内存成本都较低。此外,为了学习更具有辨别力的特征,引入了类别一致损失。CCNet在Cityscapes、LIP等多个语义分割数据集和实例分割数据集COCO上取得了良好的性能。

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表