基于非局部的块设计用于捕获计算机视觉任务中的远程时空依赖性。尽管表现出出色的性能,但它们仍然缺乏对图像或视频元素之间丰富的结构化信息进行编码的机制。
论文:https://arxiv.org/abs/2108.02451
源代码:https://github.com/zh460045050/SNL_ICCV2021
前言
基于非局部的块设计用于捕获计算机视觉任务中的远程时空依赖性。尽管表现出出色的性能,但它们仍然缺乏对图像或视频元素之间丰富的结构化信息进行编码的机制。
在今天的分享中,为了从理论上分析这些基于非局部的块的属性,研究者提供了一个新的视角来解释它们,研究者将它们视为在全连接图上生成的一组图过滤器。具体地,在选择Chebyshev Graph滤波器时,可以导出统一的formulation,用于解释和分析现有的nonlocal-based blocks(例如,非局部块,非函数阶段,双重注意力块)。此外,通过考虑谱的特性,研究者提出了一种高效且稳健的谱非局部块,与现有的非局部块相比,当插入深度神经网络时,该块可以更稳健和灵活地捕获远程依赖关系。实验结果证明了新提出的方法在图像分类、行为识别、语义分割和行人重识别任务上的明显改进和实际适用性。
背景
为什么提出Non-local?
计算机视觉领域,尤其对于动态视频序列中,帧内帧间的依赖关系十分重要。尤其像下图中视频的行为分类任务,全局内容的理解以及不同帧间的联系对于分类结果导向作用很强。现在比较通用普遍的做法是,通过循环卷积网络联系t和t-1,或者通过更深的网络增大感受野提高对全局内容的理解。
尽管如此,这种方式仍旧是比较local的,不论时间方向或者空间位置。甚至,最大的问题是:没法进行远距离信息的来回传递;而且deeper网络计算量大但效率低,梯度优化起来也比较困难。
因此,针对远距离信息传递问题,提高长距离依赖,本论文从传统的非局部均值滤波方法中受到启发,提出了卷积网络中的non-local,即:某一像素点处的响应是其他所有点处的特征权重和,将每一个点与其他所有点相关联,实现non-local 思想。
Non-local其实可以被认为是channel level和spatial level的泛化。这种方式通过注意力加强距离依赖,更是直接实现了全局的联系性。既有attention的思想也有context联系的思想。基于这个non-local,后面相继又有几个网络结构提出来,本质还是做注意力机制,只不过操作不一样,或者是改进版的。像刚刚说的,CCNet, GCNet。可以看上图。另外,想说一点注意力的见解。形如resnet,alexnet等通用网络结构中,我们可以理解为空间或者通道间的所有位置,其重要性均等,即权重都为1。而注意力机制的根本目的,就是对原本平均分配的权重通过手动或者自学习的方式进行非等份分配。
所以,从这个角度看,挂在嘴边的先验知识或是上下文关系(local, global, context)都可以理解为对原本等价权重的非等份分配。在诸如SENet,CBAM中,通过网络训练的方式得到权重;而人为先验,是不是就是手动的权重分配,针对我们觉得重要的部分进行高权重赋值然后操作?
——引自《知乎:起舞的跳跳虫》
新框架
上图,非局部块的空间 (A) 和光谱 (B) 视图。粉红色点表示特征图中的每个补丁,“Aggregation”表示计算加权平均值作为下面方程的分子。虚线箭头表示“copy”,实线箭头表示“feed forward”。绿色条是节点特征,长度表示它们的强度(最佳颜色视图)。
为了从理论上分析这些nonlocal-based blocks的属性,研究者提供了一个新的视角来解释它们,将它们视为在全连接图上生成的一组graph filters。具体地,在选择Chebyshev graph filter时,可以导出统一的formulation,用于解释和分析现有的nonlocal-based blocks(例如,非局部块,非函数阶段,双重注意力块)。
此外,通过考虑谱的特性,提出了一种高效且稳健的spectral nonlocal block,与现有的nonlocal blocks相比,当插入深度神经网络时,该模块可以更稳健和灵活地捕获远程依赖关系。
实验
图像分类上的性能表现:
行为识别上的性能表现:
语义分割上的性能表现: