目录
上一篇关于注意力机制介绍到2021CVPR上发表的关于嵌入位置信息的注意力机制Coordinate Attention for Efficient Mobile Network Design,有兴趣的同学可以阅读一下。之前注意力机制的博客介绍的SENET、STN、CBAM包括Coordinate Attention for Efficient Mobile Network Design,都是空间和通道维度上的注意力机制,空间和维度上的注意力暂时先分享到这。今天写一篇关于增加感受野的注意力机制的文章,这就是发表在CVPR2018上面的Non-local Neural Networks。
CNN和RNN都是每次处理一个局部邻域的构建块。在本文中,我们提出了非局部操作作为一个通用族的构建块捕获长期依赖。受计算机视觉中经典的非局部均值方法的启发,我们的非局部操作以所有位置上特征的加权和计算位置上的响应。这个构建块可以插入到许cv算法结构中。在视频分类任务上,即使没有任何附加功能,Non-loca模块也可以在Kinetics和Charades数据集上竞争或超过当前的竞争对手。在图片识别中,Non-loca模块改进了COCO任务套件上的目标检测/分割和姿态估计。代码:原文复现源码。
背景介绍
在深度学习网络中,因为卷积和循环操作无论在时间还是空间上,都是在本地局部操作的,所以它们想要完成长距离的依赖关系,就需要大量的重复这些操作。序列化数据例如音频、文字等,RNN依靠循环操作可以实现长距离的网络依赖关系。在CNN中,这种依赖关系是依靠更深的网络卷积操作完成的(卷积越深,感受野越大)。由于我们只讨论CV中的注意力机制,之后的局部操作都由卷积运算代表。局部操作有如下不足:
1、网络越深,卷积块的堆叠,计算量越大。
2、网络越深,参数越难训练。
3、网络越深,正向和反向传播越难,尤其依赖多的复杂网络。
这篇文章提出的non-local模块是一种高效、简单、通用的组件,就是为了深度神经网络的这种长距离依赖关系。non-local操作的提出是基于计算机视觉中的非局部均值方法。非局部操作将输入特征所有位置的信息进行加权求和(如下图所示)。这些位置可以使基于空间域,也可以是基于时间域,甚至可以使频域。所以,Non-local可以使用与图像、序列化和视频的处理。
这是利用non-local操作的视频运动分类问题。图中,代表
特征图所有位置的加权和计算而来(当然,上图中仅仅展示了拥有最高权重的几个点)。这个由non-local模块的例子中,请注意它是如何将第一帧中的球与最后两帧中的球联系起来的。下面还有几个例子:
上图中是原文的几个例子。这些例子都来自于验证视频。箭头的起点代表,终点代表
。每个
的最高权重的20个箭头被可视化。例子中的图像是来自32帧的输入显示了8帧的步幅。这些可视化显示了模型如何找到相关信息来支持其预测。
Non-loca模块的优势如下:
1、与类似于卷积这种局部的操作相比,Non-local可以无视距离,无论是时间还是空间,它 直接映射了两个点的关系。
2、实验证明,Non-local只利用几层简单的网络就可以高校的完成传统模型最好的效果。
3、Non-local不改变输入变量的形状,并且可以很容易地与其他操作结合。
在视频中,长时相关性是依赖两个长距离的像素之间的关系。每个non-local是我们模型的一个基本单元,它可以利用前馈方式直接捕获这些超时空的相关性。拥有多个non-locoal模块的网络我们称之为Non-local Neural Networks,它在视频分类中比起普通的2D、3D卷积有着更好的效果。原文中说,non-locoal比3D卷积有着更好的效率。
为了non-local模块的通用性,论文进一步在COCO数据集上进行了目标检测/分割和姿态估计实验。以强大的Mask R-CNN作为基线,non-local可以利用较小的额外计算成本提高所有三个任务的准确性。这些图像实验和视频上的证据表明,non-local是有用的,可以成为设计深度神经网络的基本构件。
现有的相关工作
在详细解释non-local模块之前先介一下现有的技术,也是non-local的基础工作。