文献-iCAN: Instance-Centric Attention Network for Human-Object Interaction Detection

  • 概述:人或物体实例的外观包含上下文线索,利用这些信息可以注意到图像中可以促进交互预测的部分。为了利用这些线索,研究者提出了一个以实例为中心的注意力模块,学习根据每个实例的外观动态突出显示图像中的区域。这种基于注意力的网络允许研究者选择性地聚合与识别 HOI相关的特征。在InteractNet上做的改进,达到了 V-COCO 45.3%。
  • 关键词:注意力机制
  • 论文地址:https://www.yuque.com/ugdongzhou/io8kmc/1661063
  • 源码: https://github.com/vt-vl-lab/iCAN 和DRG2020同属vt-vl-lab实验室

网络结构

image-20201209144401235

主要贡献

  • 引入了一个以实例为中心的注意力模块,它允许网络动态突出信息区域以改进 HOI 检测。

image-20201209152307633

  1. 在由h或者o计算a的分数时,不止用它们本身的特征,还concat了context特征,contex特征则是根据intance产生的注意力在原图的特征上得到的。

    给定图像的卷积特征(以灰色显示)和人/物体边界框(以红色显示),iCAN 模块提取实例

    (人类)或(物体)的外观特征以及来自以实例为中心的注意力映射的特征。为了计算注意力映射,研究者使用 512 个通道的 bottleneck 来评估嵌入空间中的相似性【37】【38】。具体来说,研究者用 1×1 卷积和实例外观特征将图像特征嵌入到全连接层中。这里的 res5 表示第五个残差块,GAP 表示全局平均池化层,FC 表示全连接层。

  2. 同样需要判断h和o是否有关系,该方法是用空间的interaction pattern(neural-motif中有这个)并concat human instance计算得到的。

【37】 Ashish V aswani, Noam Shazeer, Niki Parmar, Jakob Uszkoreit, Llion Jones, Aidan N Gomez,
Łukasz Kaiser, and Illia Polosukhin. Attention is all you need. In NIPS, 2017.

【38】Xiaolong Wang, Ross Girshick, Abhinav Gupta, and Kaiming He. Non-local neural networks. InCVPR, 2018.

【38】Non-local Neural Networks -facebook

简介:

计算机视觉领域注意力机制的开篇之作。提出了non-local operations,使用自注意力机制建立远程依赖。 - local operations: 卷积(对局部领域)、recurrent(对当前/前一时刻)等操作。 - non-local operations用于捕获长距离依赖(long-range dependencies),即如何建立图像上两个有一定距离的像素之间的联系,如何建立视频里两帧的联系,如何建立一段话中不同词的联系等。 Non-local operations 在计算某个位置的响应时,是考虑所有位置 features 的加权——所有位置可以是空间的,时间的,时空的。

网络结构

给出非局部操作的具体公式。首先在深度学习中非局部操作可以表达为:

img

i是输出特征图的其中一个位置,通用来说这个位置可以是时间、空间和时空。j是所有可能位置的索引,x是输入信号,可以是图像、序列和视频,通常是特征图。y是和x尺度一样的输出图,f是配对计算函数,计算第i个位置和其他所有位置的相关性,g是一元输入函数,目的是进行信息变换,C(x)是归一化函数,保证变换前后整体信息不变。以上是一个非常泛化的公式,结合神经网络特定,需要考虑其具体形式。首先 g 由于是一元输出,比较简单,我可以采用1x1卷积,代表线性嵌入,其形式为

img

对于f,前面我们说过其实就是计算两个位置的相关性,那么第一个非常自然的函数是Gaussian

(1) Gaussian

img

对两个位置进行点乘,然后通过指数映射,放大差异。

(2) Embedded Gaussian

img

前面的gaussian形式是直接在当前空间计算,而(2)更加通用,在嵌入空间中计算高斯距离。这里:

img

完整考虑是:

img

(3) Dot product

考虑一种最简单的非局部操作形式:

image-20201210134835084

其中C(x)=N,像素个数。可以看出(2) (3)的主要区别是是否含有激活函数softmax。

(4) Concatenation

参考 Relation Networks可以提出:

image-20201210134825277

Non-local Block

前面是基本的非局部操作算子,利用这些算子,下面开始构造成模块。

img

可以看出,上面构造成了残差形式。上面的做法的好处是可以随意嵌入到任何一个预训练好的网络中,因为只要设置W_z初始化为0,那么就没有任何影响,然后在迁移学习中学习新的权重。这样就不会因为引入了新的模块而导致预训练权重无法使用

下面结合具体实例分析:。

img

由于我们考虑的是图片,故可以直接设置T=1,或者说不存在。

  • 首先网络输入是X= (batch, h, w, 1024) ,经过Embedded Gaussian中的两个嵌入权重变换W_{\theta}W_{\phi}得到(batch, h, w, 512), (batch, h, w, 512), 其实这里的目的是降低通道数,减少计算量;

  • 然后分别对这两个输出进行reshape操作,变成(batch, hw, 512),后对这两个输出进行矩阵乘(其中一个要转置),计算相似性,得到(batch, hw, hw),

  • 然后在第2个维度即最后一个维度上进行softmax操作,得到(batch, hw, hw), 意这样做就是空间注意力,相当于找到了当前图片或特征图中每个像素与其他所有位置像素的归一化相关性;也就是得到0~1的weights,这里就是我们需要的 Self-attention 系数;

  • 然后将 g 也采用一样的操作,先通道降维,然后reshape;然后和 (batch, hw, hw)进行矩阵乘,得到(batch, h, w, 512), 即将空间注意力机制应用到了所有通道的每张特征图对应位置上,本质就是输出的每个位置值都是其他所有位置的加权平均值,通过softmax操作可以进一步突出共性。最后经过一个1x1卷积恢复输出通道,保证输入输出尺度完全相同。

代码地址 https://github.com/AlexHex7/Non-local_pytorch