CVPR2020(ReID):Relation-Aware Global Attention个人理解

先贴原文链接GitHub网址,如若侵权,请联系删除。

本文的创新是提出了一个Relation-Aware Global Attention (RGA) module,该module可以捕获全局结构信息用于注意力学习。

创新点(贡献):

  1. 本文通过从features之间相关性的全局视角来学习每个feature node之间的注意力。作者认为全局范围内的相关性拥有有价值的结构(类似于聚类)信息,并从一个学到的函数(卷积网络)来从相关性中挖掘语义关系,从而获得注意力。
  2. 本文设计了一个Relation-aware global attention (RGA) module,该module通过两个卷积层(卷积核为1x1)来表示全局范围内的相关性,并基于他们来获得注意力。该思想被应用到空间维度(RGA-S),和通道维度(RGA-C)。

关键技术(对应于文章第三章)

3.2 Spatial Relation-Aware Global Attention(空间)

输入:特征张量(feature map): 

输入:空间注意力图(spatial attention map)大小为 

根据输入feature map,获得  feature nodes,其中每个feature nodes  的维度为 [公式] ,即 [公式] 。将这 [公式] 个nodes看成图 [公式] 的 [公式] 个节点。

从节点  到节点  的对级相关性 [公式] 定义为嵌入空间中的点乘相关性(dot-product affinity)。

其中  和  为两个嵌入函数(1x1卷积层 + BN层 + ReLU)。反映在代码中,如下所示:

# Embedding functions for modeling relations
		if self.use_spatial:
			self.theta_spatial = nn.Sequential(
				nn.Conv2d(in_channels=self.in_channel, out_channels=self.inter_channel,
								kernel_size=1, stride=1, padding=0, bias=False),
				nn.BatchNorm2d(self.inter_channel),
				nn.ReLU()
			)
			self.phi_spatial = nn.Sequential(
				nn.Conv2d(in_channels=self.in_channel, out_channels=self.inter_channel,
							kernel_size=1, stride=1, padding=0, bias=False),
				nn.BatchNorm2d(self.inter_channel),
				nn.ReLU()
			)

同理,可以得到节点  到节点  的对级相关性 [公式] 。

本文使用  来描述  和 [公式] 的双向相关性,然后使用相似性矩阵 [公式] 来表示所有节点之间的对级相关性。

对于第  个feature node,本文以一个确切的固定顺序来堆叠所有nodes的对级相关性,其中node id为  ,相关性向量为 [公式] ,示例可参考图3(a), [公式] 。

为了学习第  个node的注意力,本文将feature  本身和相关性向量串联来探索global scope structural information relative和local original information。

因为  与相关性向量不在同一个feature domain中,因此使用下列公式将其转换,并进行串联获得  。

其中  和  分别为特征 [公式] 本身和全局相关性 [公式] 的嵌入函数(1x1卷积层 + BN层 + ReLU)。反映在代码中,如下:

# Embedding functions for original features
		if self.use_spatial:
			self.gx_spatial = nn.Sequential(
				nn.Conv2d(in_channels=self.in_channel, out_channels=self.inter_channel,
						kernel_size=1, stride=1, padding=0, bias=False),
				nn.BatchNorm2d(self.inter_channel),
				nn.ReLU()
			)
# ...
# Embedding functions for relation features
		if self.use_spatial:
			self.gg_spatial = nn.Sequential(
				nn.Conv2d(in_channels=self.in_spatial * 2, out_channels=self.inter_spatial,
						kernel_size=1, stride=1, padding=0, bias=False),
				nn.BatchNorm2d(self.inter_spatial),
				nn.ReLU()

然后通过学到的模型从其中挖掘有价值的知识来生成注意力值  。

其中  和  为1x1卷积操作 + BN, [公式] 通过比例因子 [公式]来降维, [公式] 将通道维度降为1。反映在代码中如下:

# Networks for learning attention weights
		if self.use_spatial:
			num_channel_s = 1 + self.inter_spatial
			self.W_spatial = nn.Sequential(
				nn.Conv2d(in_channels=num_channel_s, out_channels=num_channel_s//down_ratio,
						kernel_size=1, stride=1, padding=0, bias=False),
				nn.BatchNorm2d(num_channel_s//down_ratio),
				nn.ReLU(),
				nn.Conv2d(in_channels=num_channel_s//down_ratio, out_channels=1,
						kernel_size=1, stride=1, padding=0, bias=False),
				nn.BatchNorm2d(1)
			)

3.3 Channel Relation-Aware Global Attention (通道)

输入:特征张量(feature map): 

输入:通道注意力向量(channel attention vector)大小为 

根据输入feature map,获得  个feature nodes,其中每个feature nodes  的维度为 [公式] ,即 [公式] 。将这 [公式] 个nodes看成图 [公式] 的 [公式] 个节点。

从节点  到节点  的对级相关性 [公式] 定义为嵌入空间中的点乘相关性(dot-product affinity)。

其中  和  和空间通道的定义一致。

3.4 Analysis and Discussion

RGA VS CBAM: CBAM采用7x7的卷积核+sigmiod激活函数来决定空间特征位置的注意力,即只有中心位置的7x7=49个近邻feature nodes被用来计算注意力。而RGA-S联合利用所有空间位置的feature nodes来全局决策注意力值,并且仅使用1x1的卷积核。

RGA VS NL and SNL: 对于目标特征位置,NL汇总特征后加到原始特征中用于refinement,计算源位置特征的加权和。NL仅通过一种决策方式使用相关性作为权重用于特征合成。缺乏目标位置的特定适应性。RGA通过一学到的建模函数(卷积)从相关性的全局范围结构信息来挖掘知识。

4.2 实验结果

5 Conclusion

本文提出一种简单有效的Relation-Aware Global Attention module,可以建模全局范围内的结构信息,并通过学到的模型来推理注意力。对于每个特征位置,堆叠每个特征和所有特征之间的相关性,串联特征本身来推理当前位置处的注意力。

个人总结:

个人感觉这篇文章创新点只有一个,也就是RGA-S,和RGA-C,优势是可以添加到不同的backbone中,作为一个单独的注意力模块,从实验结果上看是比较有优势的。看到baseline也能达到一个很高的准确率,这点我比较疑惑,因为其他论文里baseline的效果无法达到94.2%的准确率。罗大神的reid strong baseline也只能达到94.5%。我甚至觉得,这个baseline里面用的东西对提升准确率也有很大帮助。后续若有时间会再更新。

  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值