Learning Attentive Pairwise Interaction for Fine-Grained Classification论文解读

论文链接:https://arxiv.org/abs/2002.10191

分享的这篇文章来自于AAAI2020,文章的整个思路并不难理解。文章的idea来自于我们人类对相似图像的识别。一般来说,我们识别相似的图像,一方面是去找到图像中特殊的区域来进行识别,另一方面是通过比较图像对来有效地得到对比线索。这篇论文就是从后者获得的灵感。
文章提出了Attentive Pairwise Interaction Network (API-Net),该网络可以通过交互逐步识别一对细粒度的图像。

思维导图
Learning Attentive Pairwise Interaction for Fine-Grained Classification论文解读_第1张图片

Model

Learning Attentive Pairwise Interaction for Fine-Grained Classification论文解读_第2张图片
整个的网络如上图所示,简单说一下流程如下:

  1. 在训练阶段,输入一对图像对到backbone中,分别提取特征,得到对应的特征向量 x 1 , x 2 x_1,x_2 x1,x2,然后我们得到一个 mutual vector x m ∈ R D x_m\in \Bbb{R}^{D} xmRD
  2. 我们将 x m x_m xm x i x_i xi按通道进行点乘,即用 x m x_m xm查找哪个通道可能包含对比线索,然后再通过sigmoid函数,得到gate vector g i ∈ R D g_i\in \Bbb{R}^{D} giRD
  3. 然后再gate vector 的指导下进行成对的交互,交互后的向量放入softmax classifier中得到损失函数。

上图中的黄色部分是网络的核心部分, Attentive Pairwise Interaction(API),它是一个即插即用的模块,只在训练的过程中存在,在测试的时候,单图像进行测试,图像通过backbone提取特征向量之后,直接放入softmax classifier中,得到得分向量用于标签预测。

Attentive Pairwise Interaction(API)

这是网路的核心部分,但是并没有很复杂,它主要由三部分组成。

  1. Mutual Vector Learning.
  2. Gate Vector Generation.
  3. Pairwise Interaction

下面详细的介绍一下这三个部分,以更好的来理解文章(个人拙见,有不完备的地方还请路过的大佬指教)。

Mutual Vector Learning. 这是一个很简单的部分,输入一对图像到backbone,提取对应的特征向量 x 1 , x 2 ∈ R D x_1,x_2\in \Bbb{R}^{D} x1,x2RD,然后我们通过下式得到一个mutual vector
在这里插入图片描述
其中 f m f_m fm是一个 x 1 , x 2 x_1,x_2 x1,x2的映射函数,一个简单的MLP在实验中就可以产生很好的效果。这个操作,我认为就是将 x 1 , x 2 x_1,x_2 x1,x2中的discriminative domain放入 x m x_m xm中。它的特征通道中通常包含一些 high-level contrastive clues。

Gate Vector Generation. 从其model的图像中,也可以很明显的看出它是怎么产生的,在上一部分,我已经得到了mutual vector x m x_m xm,然后将其与 x i , i ∈ { 1 , 2 } x_i,i\in \{1,2\} xi,i{1,2}按通道进行点乘,再将其添加到sigmoid中,产生gate vector g i ∈ R D g_i \in \Bbb{R}^{D} giRD
在这里插入图片描述
那么 g i g_i gi有什么深层次的含义呢?我觉得它是用每个 x i x_i xi的discriminative attention来强调语义上的不同。
Pairwise Interaction. 我们在肉眼识别细粒度图像的时候,不仅仅是要关注于每个图像中突出的部分,还要观察彼此的不同部分,基于此,论文通过residual attention引入了交互机制。
Learning Attentive Pairwise Interaction for Fine-Grained Classification论文解读_第3张图片
x i s e l f ∈ R D x^{self}_i\in \Bbb{R}^{D} xiselfRD表示的是通过自身的gate vector强调的, x i o t h e r ∈ R D x^{other}_i\in \Bbb{R}^{D} xiotherRD表示的是通过一对中其他的gate vector激活的。

Training

API模块最后输出了4个attentive features x i j x_i^{j} xij,然后我们将其输入到softmax分类器中,
在这里插入图片描述
p i j ∈ R C p_i^{j}\in \Bbb{R}^{C} pijRC是预测的得分向量,C是预测类别数。
Loss Function.
在这里插入图片描述
第一个 L c e \mathcal{L}_{ce} Lce是cross entropy loss,第二个 L r k \mathcal{L}_{rk} Lrk是score ranking regularization。

Cross Entropy Loss
在这里插入图片描述
这种损失能够使API-Net在标签 y i y_i yi的监督下逐步的识别出所有的attentive features x i j x_i^{j} xij

Score Ranking Regularization.
在这里插入图片描述
p i j ( c i ) p_i^{j}(c_i) pij(ci)是预测的向量 p i j p_i^{j} pij中获得的分数, c i c_i ci是于image i i i的ground truth label相关的对应索引。这个损失的目的是,让 x i s e l f x_i^{self} xiself仅仅通过它自己的gate vector激活。

论文的设计上的主要内容差不多就是这样,那么有一个问题就是,训练图像的pairs是怎么构建的?
Pair Construction.
在a batch中随机的采样 N c l N_{cl} Ncl个类别,对于每个类别,我们随机的采样 N i m N_{im} Nim个图像,然后将这些图像输入到backbone中去提取特征向量,根据Euclidean distance将其特征与batch中的其他特征进行比较,论文中说的是每张图片能够构建两对,它的特征和batch中最相似的特征,这样的话最后产生的就是 2 × N c l × N i m 2\times N_{cl}\times N_{im} 2×Ncl×Nim个pairs。这个地方不是很明白,两个特征是有顺序的么?有的话那应该的确是两对,如果不是有顺序的话,那这个2对是怎么产生的呢?我觉得在这个地方处理的时候,应该不是很简单。

你可能感兴趣的:(计算机视觉)