Filtration and Distillation: Enhancing Region Attention for Fine-Grained Visual Categorization
文章目录
参考
- 原文: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)中具有很强的可解释性和竞争力
主体结构
-
模型的主体结构一目了然:
-
-
首先对于Input,他会分两路走
- 下面这路是参考了RPN的思想,即利用RPN选出目标的part,经过resize之后进行feature extractor,然后fc+softmax进行分类,分出来的类别表示是否是某一类的部分
- 上面这路就是对整张图片进行卷积,然后把它当作teacher网络,指导下方的part卷积分类的学习
-
最后所有部分concat在做一次总的分类得到最终结果
Discriminative Regions Proposing
-
这部分就是RPN部分,我们知道目标检测中的RPN的流程是在一堆的预设的anchor中判断是否有对象,而在这里它变成了判断是否是对象的part,本职功能没变,得到一堆框的置信度,然后用NMS保留top-M,对应下面这里
-
-
输出是:
-
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
-
-
这部分对应的这段,说白了就是对每个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)
-
-
整体的预测是所有预测的平均值:
-
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=1∑KPj(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=indexofground−truth)
- 这里其实有个问题, P g t ( R i ) P^{gt}(R_i) Pgt(Ri)是怎么来的,也就是怎么判断他是目标物体中的一部分他这里解释说index of ground-truth,也就是说gt本来就是分块的吗?
- 为此我特地去下载了一下CUB 200看了下他的数据结构,发现他会标part,但是这个part应该是关键点(如下图所示),那么可以反向推断这里的gt应该就是包含关键点的框?
-
然后这里作者提出了一致性的要求:
-
即对于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{1−x,0},图长这样,S为概率,当 S ( R j ) < S ( R i ) S(R_j) < S(R_i) S(Rj)<S(Ri)的时候为0,反之则线性增长
-
-
-
同时也要保证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=1∑M∣∣S(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=1∑Mfpoint(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学习,对应下面的圈圈,这就是蒸馏的思想
-
-
关于蒸馏我不太懂,作者在这里专门提了一个对比:
- 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=1∑nq(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=1∑Mfcls(Pj(Ri),gt)+fcls(Pj(C),gt),
-
f c l s f_{cls} fcls是交叉熵