API-Net

论文标题:Learning Attentive Pairwise Interaction for Fine-Grained Classification
针对目标:细粒度图像分类
论文来源: AAAI 2020
下载地址:https://arxiv.org/pdf/2002.10191.pdf
code地址: 未开源
论文坑点:对设备要求极高,按照论文中消融实验的结果,batch_size设为120,另外还要构造成图像对,才能达到论文的 88.6 acc
论文槽点:这篇论文写的太大白话了点,额。。。

动机

以往的大部分相关论文都是从单个图像中去寻找目标的判别性区域,这样一来,网络比较不同目标的能力还有待提升。人类在辨别类似的目标的时候,经常是将类似目标成对的进行比较,发现不同,进而判断出分别属于那一类。 讲真,我现在都还是分不清柴犬和秋田犬!!!放一起比较我也比较不来,尴尬。

本文看点

  1. 互向量学习 (Mutual Vector Learning)
  2. 门向量生成 (Gate Vector Generation)
  3. 成对交互 (Pairwise Interaction)
  4. 分数排序正则化(Score Ranking Regularization)
  5. 图像对的构建(Pair Construction)

训练阶段

网络结构:
在这里插入图片描述
我们按照网络结构一步一步走。

1.互向量学习

一对输入图片,通过CNN特征提取器(Resnet101)获取两个特征向量 x 1 x_1 x1, x 2 x_2 x2(特征图经过全局平均池化得到的特征向量)。将 x 1 x_1 x1, x 2 x_2 x2拼接,再经过两个全连接层(上图中的MLP)得到互向量 x m x_m xm
x m = f m ( [ x 1 , x 2 ] ) x_m = f_m([x_1,x_2]) xm=fm([x1,x2])其中 f m f_m fm为 MLP 操作。

如此一来, x m x_m xm就结合了 x 1 x_1 x1, x 2 x_2 x2的特征。

2.门向量生成

在学习到 互向量 x m x_m xm 后,可以将 x m x_m xm x 1 x_1 x1, x 2 x_2 x2进行比较,进而可以找到两张图片中目标特征上的区别。政治考试中的共性和个性吧,是这个意思吧?hahaha~~
具体来说,分别将 x m x_m xm x 1 x_1 x1, x 2 x_2 x2相乘,然后经过 s i g m o i d sigmoid sigmoid 激活。
g i = s i g m o i d ( x m ⊙ x i ) , i ∈ { 1 , 2 } \mathbf{g}_{i}=sigmoid\left(\mathbf{x}_{m} \odot \mathbf{x}_{i}\right), i \in\{1,2\} gi=sigmoid(xmxi),i{1,2}
门向量 g i g_i gi有什么用?可以作为一种注意力向量,用来找到两张图片中不同特征,该功能在成对交互能够体现。

3.成对交互

两个特征向量 x 1 x_1 x1, x 2 x_2 x2,两个门 g 1 g_1 g1, g 2 g_2 g2,根据网络结构图可以看出来,向量与门两两组合,进行一些操作,得到四个向量。从公式角度来看, x i x_i xi经过 g i g_i gi门 的注意力引导,加强或者减弱了某些通道,再与自身相加得到输出。
x 1 self = x 1 + x 1 ⊙ g 1 x 2 self = x 2 + x 2 ⊙ g 2 x 1 other = x 1 + x 1 ⊙ g 2 x 2 other = x 2 + x 2 ⊙ g 1 \begin{aligned} \mathbf{x}_{1}^{\text {self}} &=\mathbf{x}_{1}+\mathbf{x}_{1} \odot \mathbf{g}_{1} \\ \mathbf{x}_{2}^{\text {self}} &=\mathbf{x}_{2}+\mathbf{x}_{2} \odot \mathbf{g}_{2} \\ \mathbf{x}_{1}^{\text {other}} &=\mathbf{x}_{1}+\mathbf{x}_{1} \odot \mathbf{g}_{2} \\ \mathbf{x}_{2}^{\text {other}} &=\mathbf{x}_{2}+\mathbf{x}_{2} \odot \mathbf{g}_{1} \end{aligned} x1selfx2selfx1otherx2other=x1+x1g1=x2+x2g2=x1+x1g2=x2+x2g1
因此, x i self {x}_{i}^{\text {self}} xiself强化了属于自身的特定特征区域, x i other {x}_{i}^{\text {other}} xiother则强化了属于另一个类别的特征区域。

可以看出来,身体结构对左边的鸟更重要,喙对于右边的鸟更重要(根据 self 和 other 判断)。

4.分数排序正则化

成对交互的下一步就是分类了。
x i j x_{i}^{j} xij经过softmax打分,得到概率值。
p i j = softmax ⁡ ( W x i j + b ) \mathbf{p}_{i}^{j}=\operatorname{softmax}\left(\mathbf{W} \mathbf{x}_{i}^{j}+\mathbf{b}\right) pij=softmax(Wxij+b)
使用 C E l o s s CEloss CEloss作为损失函数,另外,作者定义了一个分数排序正则化 L r k \mathcal{L}_{rk} Lrk
所以最终的损失函数为: L = L c e + λ L r k \mathcal{L}=\mathcal{L}_{c e}+\lambda \mathcal{L}_{r k} L=Lce+λLrk
权重因子 λ \lambda λ设为1。
其中: L r k = ∑ i ∈ { 1 , 2 } max ⁡ ( 0 , p i other ( c i ) − p i self ( c i ) + ϵ ) \mathcal{L}_{r k}=\sum_{i \in\{1,2\}} \max \left(0, \mathbf{p}_{i}^{\text {other}}\left(c_{i}\right)-\mathbf{p}_{i}^{\text {self}}\left(c_{i}\right)+\epsilon\right) Lrk=i{1,2}max(0,piother(ci)piself(ci)+ϵ)
ϵ \epsilon ϵ 为惩罚项,设为0.05。 L r k \mathcal{L}_{rk} Lrk作用是让 p i other {p}_{i}^{\text {other}} piother 的优先级更低。

5.图像对的构建

  1. 随机选择 N c l N_{cl} Ncl 个类别;
  2. 对于第1步中的每个类别,随机选择 N i m N_{im} Nim 个训练图片。
    如此一来 就得到了 N c l ∗ N i m N_{cl}*N_{im} NclNim张图片。将 N c l ∗ N i m N_{cl}*N_{im} NclNim张图片送进特征提取器提取特征。通过欧式距离计算不同图像之间的特征距离,对于每张图像就可以选出同一个类别中特征距离最小的图片和不同类别中特征距离最小的图片。于是,每张图片可以得到两对图像对,一个batch中有 2 ∗ N c l ∗ N i m 2*N_{cl}*N_{im} 2NclNim对图像,意味着 4 ∗ N c l ∗ N i m 4*N_{cl}*N_{im} 4NclNim张图像。论文中表示 N c l = 30 , N i m = 4 N_{cl}=30,N_{im}=4 Ncl=30Nim=4 才行,啊,,这,抱歉,我玩不起啊。

测试阶段

由于API-模块是即插即用的模块,测试阶段可以直接将其断开,通过backbone提取的特征,直接用于分类。

实验结果

CUB数据集的结果

总体来说,API-Net的思路很有意思,但是结果并没有惊艳到我,因为它对资源的需求很大。Resnet50作为backbone,
相比ECCV2018 NTS-Net 要高0.2,相比CVPR2019的DCL-Net,还有0.1的差距。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值