Filtration and Distillation: Enhancing Region Attention for Fine-Grained Visual Categorization

Filtration and Distillation: Enhancing Region Attention for Fine-Grained Visual Categorization

image-20210904153734030

参考
  • 原文:https://sci-hub.se/10.1609/aaai.v34i07.6822
背景 & 问题
  • 问提:
    • 图像定位主要基于过滤器(filter),但是这个不能被性能指标优化
    • 现存方法将区域特征提取器的训练作为一个特别的分类任务,但是这个往往会忽视全局目标的特征
  • 解:
    • FDL = Filtration and Distillation Learning
  • 本篇论文的主要贡献:
    • 用Filtration Learning (FL)做部分区域的proposal,它基于proposing和predicting之间的区别匹配,region proposing在不需要bbox的情况下可以直接打到最佳
    • 提出Distillation Learning (DL)用于强化区域特征的学习,通过对整个对象的特征提取,区域特征的学习可以在对象区域约束下得到更好的监督
    • 更灵活,可更换backbone
    • FDL在弱监督目标定位(WSOL)中具有很强的可解释性和竞争力
主体结构
  • 模型的主体结构一目了然:

  • image-20210904131136650
  • 首先对于Input,他会分两路走

    • 下面这路是参考了RPN的思想,即利用RPN选出目标的part,经过resize之后进行feature extractor,然后fc+softmax进行分类,分出来的类别表示是否是某一类的部分
    • 上面这路就是对整张图片进行卷积,然后把它当作teacher网络,指导下方的part卷积分类的学习
  • 最后所有部分concat在做一次总的分类得到最终结果

Discriminative Regions Proposing
  • 这部分就是RPN部分,我们知道目标检测中的RPN的流程是在一堆的预设的anchor中判断是否有对象,而在这里它变成了判断是否是对象的part,本职功能没变,得到一堆框的置信度,然后用NMS保留top-M,对应下面这里

  • image-20210904132140221
  • 输出是:

  • S ( R 1 ) ≥ S ( R 2 ) ≥ . . . ≥ S ( R A ) S(R_1) \ge S(R_2) \ge ... \ge S(R_A) S(R1)S(R2)...S(RA)

    • S是输出的置信度,这里就是对它排了个序
  • 至于其他的细节,作者给了generator anchor的两个参数:scale = [48,96,128] ratio = [1:1,2:3,3:2]

  • 其他的信息就没有了,其实我比较好奇它generator anchor的细节,因为我们知道它是在每个像素点中生成scale*ratio的框(这里是9个),在目标检测中这个过程是对feature map做的,但仍然有几万个,但是这里如果直接对input做,anchor数量不会直接💥吗

Feature Learning and Recognition Ensemble
  • image-20210904132937766
  • 这部分对应的这段,说白了就是对每个RPN出来的proposal part进行卷积+分类

    • regions are fed into feature extractor to generate feature vectors v ( R i ) v(R_i) v(Ri), each with length L
    • 然后这里的 feature vectors v ( R i ) v(R_i) v(Ri)我想应给是fc的输出,这样才可能达到length = L
    • 然后进一个softmax转换成概率,即可得到part的预测 { P j ( R i ) } \{P^j(R_i)\} {Pj(Ri)}
  • 带上整体obj的卷积+分类结果就有了(obj的feature vector表示为v(O))

    • v ( C ) = [ v ( O ) : v ( R 1 ) : ⋅ ⋅ ⋅ : v ( R K ) ] . v(C) = [v(O) : v(R_1) : · · · : v(R_K)]. v(C)=[v(O):v(R1)::v(RK)].
  • 接下来将所有的fc出来的feature vectors扔到一个总的fc中去(如下图中的圆圈+箭头所示),再+softmax进行分类,于是就有了整题的分类结果,即文中分Recognition Ensemble,这里的结果表示为: P j ( C ) {P^j(C)} Pj(C)

  • image-20210904133900504
  • 整体的预测是所有预测的平均值:

  • P a s s j = 1 K + 2 { P j ( C ) + P j ( O ) + ∑ i = 1 K P j ( R i ) } P^j_{ass}= \frac{1}{K + 2}\{P^j(C) + P^j(O) + \sum^K_{i=1} P^j(R_i)\} Passj=K+21{Pj(C)+Pj(O)+i=1KPj(Ri)}

Filtration Learning with Discrimination Matching
  • 这里是作者提出的创新点之一——FL,对应下图中的圆圈

  • 为了做到end2end,这这利用了Discrimination matching来训练RPN(否则RPN部分得单独预训练,然后在train整体网络的时候就固定不动了),于是作者提出:对于一个region proposal,把它对应是gt部分的可能性返回给RPN用于训练,也就是下面这里

  • P ( R i ) = P g t ( R i ) ( g t = i n d e x    o f    g r o u n d − t r u t h ) P(R_i) = P^{gt}(R_i) (gt = index \,\, of \,\, ground-truth) P(Ri)=Pgt(Ri)(gt=indexofgroundtruth)

    • 这里其实有个问题, P g t ( R i ) P^{gt}(R_i) Pgt(Ri)​是怎么来的,也就是怎么判断他是目标物体中的一部分他这里解释说index of ground-truth,也就是说gt本来就是分块的吗?
    • 为此我特地去下载了一下CUB 200看了下他的数据结构,发现他会标part,但是这个part应该是关键点(如下图所示),那么可以反向推断这里的gt应该就是包含关键点的框?
    • image-20210904142223355
  • 然后这里作者提出了一致性的要求:

    • 即对于region proposal中高置信度的部分,他分类得到的置信度也一定要高,如下面等式所示,要求$S (R_i) > S (R_j) 的 时 候 对 应 的 P 也 要 满 足 大 于 的 条 件 , 也 就 是 的时候对应的P也要满足大于的条件,也就是 P P (R_i) > P (R_j)$​

    • $$
      \left {
      \begin{array}{cc}

      S (R_i) > S (R_j) , and , P (R_i) > P (R_j) \
      S (R_i) < S (R_j) ,and , P (R_i) < P (R_j)

      \end{array}
      \right.
      $$

    • 于是对应的loss可以设计成这样:

    • L p a i r ( S , P ) = ∑ ( i , j ) : P ( R i ) < P ( R j ) f p a i r ( S ( R j ) − S ( R i ) ) \mathcal{L}_{pair}(S, P) = \sum_ {(i,j):P (Ri)<P (Rj)} f_{pair}(S(R_j) − S(R_i)) Lpair(S,P)=(i,j):P(Ri)<P(Rj)fpair(S(Rj)S(Ri))

      • 其中 f p a i r ( x ) = m a x { 1 − x , 0 } f_{pair}(x)= max\{1 − x, 0\} fpair(x)=max{1x,0},图长这样,S为概率,当 S ( R j ) < S ( R i ) S(R_j) < S(R_i) S(Rj)<S(Ri)的时候为0,反之则线性增长

      • image-20210904143329283
    • 同时也要保证S和P之间的差距越小越好:

      • a r g   m i n S ∑ i = 1 M ∣ ∣ S ( R i ) − P ( R i ) ∣ ∣ arg \, min_S \sum ^M _{i=1} ||S(R_i) − P(R_i)|| argminSi=1MS(Ri)P(Ri)
    • 于是对应的loss可以这么设计:

      • L p o i n t ( S , P ) = ∑ i = 1 M f p o i n t ( S ( R i ) − P ( R i ) ) , \mathcal{L}_{point}(S, P) = \sum^M _{i=1} f_{point}(S(R_i) − P(R_i)), Lpoint(S,P)=i=1Mfpoint(S(Ri)P(Ri)),

      • 其中 f p o i n t ( x ) = ∣ x ∣ f_{point}(x)= |x| fpoint(x)=x

  • 将两个loss合起来就变成了RPN部分的loss,总之目的就是保证S和P接近,且在Si>Sj的时候要求对应的Pi>Pj

    • L F L = L p a i r ( S , P ) + λ L p o i n t ( S , P ) . \mathcal{L}_{FL}= \mathcal{L}_{pair}(S, P) + λ\mathcal{L}_{point}(S, P). LFL=Lpair(S,P)+λLpoint(S,P).
Distillation Learning with Knowledge Transferring
  • 整体思想就是 global obj带part obj学习,对应下面的圈圈,这就是蒸馏的思想

  • image-20210904145239355
  • 关于蒸馏我不太懂,作者在这里专门提了一个对比:

    • While TASN transfers fine-grained knowledge into object-based feature learning, our FDL aims to fuse the knowledge from the entire object into region-based feature learning.
    • 说是TASN的是part指导global,二作者的是global指导part,这里我是没搞清楚孰优孰劣
  • 这里的loss可以表示为

    • L D L ( q ( O ) , q ( R ) ) = − ∑ j = 1 n q ( j ) ( O ) l o g q s ( j ) ( R ) \mathcal{L}_{DL}(q(O), q(R)) = −\sum^n _{j=1} q^{(j)}(O)logq^{(j)}_s(R) LDL(q(O),q(R))=j=1nq(j)(O)logqs(j)(R)

    • 很明显这利用的是交叉熵,其中q()可以表示为:

    • q s ( i ) ( R ) = exp ⁡ ( z ( i ) ( R ) T ) ∑ j exp ⁡ ( z ( j ) ( R ) T ) q^{(i)}_s(R) = \frac{\exp(\frac{z^{(i)}(R)}{T})}{\sum_j \exp(\frac{z^{(j)}(R)}{T})} qs(i)(R)=jexp(Tz(j)(R))exp(Tz(i)(R))

    • 从形式上来看是个softmax,其中T表示temperature,为了让不同label之间值的距离变近

总体Loss的表示
  • L = α L C L S + β L F L + γ L D L \mathcal{L} = \alpha\mathcal{L}_{CLS}+ \beta \mathcal{L}_{FL}+ \gamma \mathcal{L}_{DL} L=αLCLS+βLFL+γLDL

  • αβγ为影响影子, L C L S \mathcal{L}_{CLS} LCLS 是全部分类loss的和

  • L C L S = f c l s ( P j ( O ) , g t ) + ∑ i = 1 M f c l s ( P j ( R i ) , g t ) + f c l s ( P j ( C ) , g t ) , \mathcal{L}_{CLS}= f_{cls}(P^j(O), gt) + \sum^M _{i=1} f_{cls}(P^j(R_i), gt) + f_{cls}(P^j(C), gt), LCLS=fcls(Pj(O),gt)+i=1Mfcls(Pj(Ri),gt)+fcls(Pj(C),gt),

  • f c l s f_{cls} fcls是交叉熵

实验结果
  • imag e-20210904153428658
  • image-20210904153553109
  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

椰子奶糖

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值