virilog 模块之间的层次关系_视觉注意力机制 | Nonlocal模块如何改进?来看CCNet、ANN...

本文介绍了针对Non-local网络计算量大的问题,提出的新方法——Criss Cross Network (CCNet) 和 Asymmetric Non-local Neural Network (ANN)。CCNet通过RCCA模块大幅减少了计算量,同时在语义分割任务中取得SOTA结果。ANN则采用非对称结构减少计算复杂度,结合不同层级特征进行融合,提高模型性能。
摘要由CSDN通过智能技术生成

点击上方“CVer”,选择加"星标"或“置顶”

重磅干货,第一时间送达5ee7cb04cc1b1f19495e635fe36d4753.png

本文授权转载自:AI算法修炼营

前面的话

前面的文章中,我们关注了Non-local网络模块视觉注意力机制在分类网络中的应用——SENet、SKNet、CBAM等、Non-local模块和SENet模块CBAM模块融合——GCNet、DANet。他们在注意力机制中以自注意力机制为基础延伸出来的模块,本节中,我们将主要介绍针对Non-local网络模块结构的更改——“阡陌交通”CCNet和非对称 Non-local 结构ANN。

前面的文章有详细讨论Non-local模块,Non-local Network(NLNet)使用自注意力机制来建模远程依赖。对于每个查询点(query position),NLNet 首先计算查询点与所有点之间的成对关系以得到注意力图,然后通过加权和的方式聚合所有点的特征,从而得到与此查询点相关的全局特征,最终再分别将全局特征加到每个查询点的特征中,完成远程依赖的建模过程。

但是,NLNet存在着计算量大的问题,并且non-local network的全局上下文在不同位置几乎是相同的,这表明学习到了无位置依赖的全局上下文。

Non Local在学术界的火热在于其确实能显著地改进效果。但根据笔者在工业界的实际使用来看,巨大的计算开销使得Non Local很难在实际工程项目中落地。因此,如何减小其计算开销是一个非常值得研究的话题。CCNet,ANN在内的许多算法都在尝试解决这个问题,而且其中许多在效果上超越了原版Non Local,笔者认为这是一个很好的发展趋势。

下面,将详细介绍CCNet和ANN。

Criss Cross Network(CCNet)

论文地址:https://arxiv.org/abs/1811.11721

代码地址:https://github.com/speedinghzl/CCNet

CCNet最主要的工作就是重复十字交叉注意力模块 ( Recurrent Criss Cross Attention Moudle, 简称RCCA),该模块通过计算目标特征像素点与特征图中其它所有点之间的相互关系,并用这样的相互关系对目标像素点的特征进行加权,以此获得更加有效的目标特征。

最后实验得出:1) 本文的RCCA模块的GPU资源消耗只有Non Local 模块的1/11;  2) 相较于 Non Local 模块减少了85%的浮点计算量;  3) 语义分割和实例分割任务中,与现有的诸多模型进行对比,其中在 Cityscapes 和 ADEK20K 运行语义分割任务,获得了 SOTA 的结果,在 COCO 数据集中运行实例分割任务,也获得了不错的效果。

又想获得密集的上下文信息,保持长距离的空间依赖性,又不想引入巨大的计算量,到底有没有这种好事呢?

CCNet使用了两个 CCA 模块( 即RCCA )代替 Non Local 操作,在同样获得了密集上下文信息,保持长距离空间依赖性的同时,将时间复杂度和空间复杂度降低为3a81551aa3d043d5c439eb688add67b0.png. Non Local 和 CCA 的对比图如下:

2219b6df5dfda8ba7e562f4e01d98b58.png

上图中的左边的蓝色的点是当前的像素点,这两个模块的目的是为了获取该像素点下拥有丰富语义的表示,也就是最右面红色的点。关于Non-local模型中需要计算出一个(H*W)*c的矩阵,里面的每个数表示的是每个像素与当前的像素至今的相关性分数,最终将这个矩阵中的数与之前的蓝色表示相乘并累加最终得到一个语义丰富的像素点特征表示。而在十字交叉注意力模块中只需要计算每个像素点所在的行与列中的像素点之间的关系因此只需要计算(H+W-1)*c的矩阵就可以了,但是为什么要采用两次十字交叉注意力机制,后面在介绍。从这里出发可以看处十字交叉注意力模块大大减小了模块的计算复杂度。

十字交叉注意力(CCA)模块原理

循环十字交叉注意力(RCCA) 模块其实就是两个 CCA 模块串联而成。循环十字交叉注意力 作为一个独立的模块,输入和输出的尺寸一致,理论上可以嵌入在网络中的任意位置。实际应用中可以根据需要,结合具体的硬件条件,进行嵌入,是本文在进行分割任务时,嵌入 循环十字交叉注意力(RCCA) 模块后的模型示意图:

67802f4fa2dd599ec2b632cf07923c16.png

其中原始图像经过一个 CNN 基础网络,生成一个名为 X 的特征图,令其尺寸为dc91f407ef303d012948d1ec92d1c21a.png,经过一个1*1卷积对X进行降维,获得特征图H,其尺寸为54bebabfe1f6c7074254a4d0c09cbc74.png,以此减少后续RCCA模块的计算量。其中CCA模块的具体结构如下:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值