原文链接:https://arxiv.org/abs/1810.11579
学习捕获长距离关系是图像/视频识别的基础。现有的CNN模型一般依赖于增加深度来对这种关系进行建模,效率非常低。作者提出了“双注意力块”,这是一种新的组件,它从输入图像/视频的整个时空空间中聚集和传播信息的全局特征,使后续的卷积层能够有效地从整个空间访问特征。该组件设计为两步双注意机制,第一步通过二级注意池将整个空间的特征集合成一个紧凑的集合,第二步通过另一个注意力自适应地选择和分配特征到每个位置。
CNN天生就受到卷积运算的限制,卷积运算致力于捕获局部特征和关系,并且在建模长距离相互依赖关系方面效率低下。虽然叠加多个卷积算子可以扩大接受域,但在实践中也存在一些不利的问题。
- 将多个操作符叠加在一起,使得模型变得不必要的深和大,导致更高的计算和内存成本,增加了过度拟合的风险;
- 远离特定位置的特征在影响正向传播和反向传播的位置之前,都要经过一层堆栈,增加了训练过程中的优化难度;
- 远处可见的特征实际上是后面几层的“延迟”的,导致了低效的推理。
作者提出的A2-Net的核心思想是首先将整个空间的关键特征收集到一个紧凑的集合中,然后自适应地将其分布到每个位置,这样后续的卷积层即使没有很大的接收域也可以感知整个空间的特征。
第一级的注意力集中操作有选择地从整个空间中收集关键特征,而第二级的注意力集中操作采用另一种注意力机制,自适应地分配关键特征的子集,这些特征有助于补充高级任务的每个时空位置。
A2-Net与SENet、协方差池化、Non-local、Transformer有点类似,但是不同点在于它的第一个注意力操作隐式地计算池化特征的二阶统计,并能捕获SENet中使用的全局平均池化无法捕获的复杂外观和运动相关性;它的第二注意力操作从一个紧凑的袋子中自适应地分配特征,这比 Non-local、Transformer中将所有位置的特征与每个特定位置进行穷举关联更有效。
主要贡献如下:
- 提出了一个通用的公式,通过通用的收集和分布函数来捕获长期的特征相关性
- 提出了一种用于收集和分布长距离特征的双注意块,它是一种有效的二次特征统计和自适应特征分配的体系结构。该块可以用较低的计算和内存占用来建模长期的相互依赖关系,同时显著提高图像/视频识别性能
- 通过广泛的消融研究来调查提出的A2-Net的影响,并通过与当前技术水平的比较来证明它在图像识别和视频动作识别任务的一些公共基准上的优越性能
方法
设X∈Rc×h×w为输入,每个位置i=1,⋯,hw的特征为vi,定义
zi=Fdistr(Ggather(X),vi)
为输出:首先收集整个空间的特征,然后将其分配回每个输入位置i,同时考虑该位置的局部特征vi。
这种先gathering再distributing的想法源于SENet,而SENet在收集过程中使用global average pooling而产生的单个全局特性被分发到所有位置,忽略了位置之间的不同需求。
而A2-Net中,更复杂的全局关系可以被一组紧凑的特征所捕获,每个位置可以接收其自定义的全局信息,这些信息与现有的局部特征相辅相成,有助于学习更复杂的关系。

Feature Gathering
与只计算一阶统计量的传统平均池化和最大池化相比,双线性池化能更好地捕捉和保持复杂关系。
双线性池化就是将两张输入特征图A和B里的特征向量对(ai,bi)做外积并相加:
Gbilinear(A,B)=ABT=∀i∑aibiT
其中,A=[a1,⋯,ahw]∈Rm×hw;B=[b1,⋯,bhw]∈Rn×hw。在CNNs中,A和B可以是同层出来的特征图A=B;也可以是两个不同层出来的特征图A=ϕ(X;Wϕ),B=θ(X;Wθ),Wϕ和Wθ是参数。
通过引入输出变量G=[g1,⋯,gn]∈Rm×n并且重写第二个特征B=[bˉ1,⋯,bˉn],bˉi是一个hw维的行向量,输出为
gi=AbˉiT=∀j∑bˉijaj
上述公式不仅是计算二阶统计量,输出G实际上是一个视觉基元包,每个基元gi是通过收集局部特征用bˉi加权得到的;j为特征图上的位置;i为不同的Attention Maps。
进一步将softmax应用于B,∑jbˉij=1,可得到二阶注意力池化过程为
gi=A softmax(bˉi)T
令A=ϕ(X;Wϕ),B=softmax(θ(X;Wθ)),X为输入的特征图。
Feature Distribution
从整个空间中收集特征后的下一步是将它们分布到输入的每个位置,这样即使使用很小的卷积核,后续的卷积层也可以感知全局信息。
不像SENet那样将相同的全局特性分布到所有的位置,而是在每个位置上根据特征vi的需要分布一个自适应的视觉基元包来获得更大的灵活性。
这是通过soft attention从Ggather(X)中选择一个特征向量子集来实现的:
zi=∀j∑vijgj=Ggather(X)vi, where ∀j∑vij=1
V=softmax(ρ(X;Wρ)),其中Wρ为参数。
The Double Attention Block
将上面两个注意步骤结合起来,形成双注意块里模块:
Z=Fdistr(Ggather(X),V)=Ggather(X)softmax(ρ(X;Wρ))=[ϕ(X;Wϕ)softmax(θ(X;Wθ))T]softmax(ρ(X;Wρ))
