【CVPR 2021】通用的实例级蒸馏:General Instance Distillation for Object Detection

论文地址:

https://arxiv.org/abs/2103.02340

主要问题:

以往的蒸馏检测方法对不同的检测框架具有较弱的泛化性,严重依赖于真值框,并忽略了实例之间以及背景中有价值的关系信息

主要思路:

在这篇文章里面作者提出了一种新的基于鉴别实例的检测方法,而无需考虑 GT 的正或负区分,称为一般实例蒸馏(GID),该方法包含了一个通用的实例选择模块(GISM),以充分利用基于特征、基于关系和基于响应的知识进行蒸馏

在这里插入图片描述

主要贡献:

  1. 将一般性实例(GI)定义为蒸馏目标,可以有效地提高检测模型的蒸馏效果;
  2. 在 GI 的基础上首先引入了基于关系的检测任务蒸馏知识,并将其与基于响应和基于特征的知识相结合,使学生模型能够超越教师模型;
  3. 作者在COCO和VOC数据集上验证了该方法的有效性,包括one-stage、two-stage和anchor-free的方法;

具体实现:

整体框架:

作者发现,物体附近的特征区域和来自背景区域的区分块都包含有意义的知识,基于这一发现,作者设计了通用实例选择模块(GISM),如图所示:

在这里插入图片描述

该模块利用教师和学生模型的预测来选择进行蒸馏的关键实例

同时为了更好地利用教师提供的信息,作者提取并利用了基于特征、基于关系和基于响应的知识进行蒸馏:

在这里插入图片描述

通用实例选择模块:

为了量化每个实例的差异并且为蒸馏选择有区分度的实例,作者提出了两个指标:GI score和GI box,它们都是在每个训练步骤中动态计算出来的,并且为了节省训练过程中的计算资源,作者在实验中简单地计算实例 r r r 分类评分的 L 1 L_1 L1 距离为GI score( P G I r P_{G I}^{r} PGIr),并选择评分较高的框为GI box( B G I r B_{G I}^{r} BGIr):

P G I r = max ⁡ 0 < c ≤ C ∣ P t r c − P s r c ∣ B G I r = { B t r , max ⁡ 0 < c ≤ C P t r c > max ⁡ 0 < c ≤ C P s r c B s r , max ⁡ 0 < c ≤ C P t r c ≤ max ⁡ 0 < c ≤ C P s r c G I = N M S ( P G I , B G I ) \begin{array}{l} P_{G I}^{r}=\max _{0<c \leq C}\left|P_{t}^{r c}-P_{s}^{r c}\right| \\ B_{G I}^{r}=\left\{\begin{array}{l} B_{t}^{r}, \quad \max _{0<c \leq C} P_{t}^{r c}>\max _{0<c \leq C} P_{s}^{r c} \\ B_{s}^{r}, \quad \max _{0<c \leq C} P_{t}^{r c} \leq \max _{0<c \leq C} P_{s}^{r c} \end{array}\right. \\ G I=N M S\left(P_{G I}, B_{G I}\right) \end{array} PGIr=max0<cCPtrcPsrcBGIr={Btr,max0<cCPtrc>max0<cCPsrcBsr,max0<cCPtrcmax0<cCPsrcGI=NMS(PGI,BGI)

对于one-stage检测器, P t P_t Pt P s P_s Ps 分别是教师模型和学生模型预测的分类分数,对于two-stage检测器, P P P 为RPN预测的得分, B t B_t Bt B s B_s Bs 是预测的回归框,对应于分数 P t P_t Pt P s P_s Ps R R R 是预测框的数量, C C C 是类别数, r r r c c c R R R C C C 维度上的索引

虽然我们确定了GI score的指标和相应的框,但这些GI score高的实例很可能高度重叠,从而导致蒸馏损失双计数,因此作者使用 iou 阈值为 0.3 的 NMS 来过滤掉冗余框,并只保留 top-K 个框

基于特征的蒸馏:

FPN 结合了多个主干层的特性,因此作者直观地选择了 FPN 进行蒸馏,即根据每个 GI box 的不同大小,从匹配的FPN层中裁剪特征

考虑到检测任务中的目标大小差异很大,直接执行像素级蒸馏将使模型更倾向于学习大目标,因此我们可以采用 ROIAlign 算法,将不同大小的 GI 特征调整为相同大小,然后进行蒸馏:

L Feature  = 1 K ∑ i = 1 K ∥ t i − s i ′ ∥ 2 2 , s ′ = f a d a p t ( s ) \begin{aligned} L_{\text {Feature }} &=\frac{1}{K} \sum_{i=1}^{K}\left\|t_{i}-s_{i}^{\prime}\right\|_{2}^{2}, \\ s^{\prime} &=f_{a d a p t}(s) \end{aligned} LFeature s=K1i=1Ktisi22,=fadapt(s)

基于关系的蒸馏:

不同对象之间的关系信息在分类任务的蒸馏中发挥了重要作用,但是检测任务中基于关系的知识蒸馏仍未被探索,而由于同一场景中的实例是高度相关的,无论前景或背景如何,这种相关信息可以帮助学生模型更有效地收敛

这里我们可以使用欧几里得距离来测量实例的相关性,并使用 L 1 L_1 L1 距离来传递知识:

L Relation  = ∑ ( i , j ) ∈ K 2 l ( 1 ϕ ( t ) ∥ t i − t j ∥ 2 , 1 ϕ ( s ) ∥ s i ′ − s j ′ ∥ 2 ) , ϕ ( x ) = 1 ∣ K 2 ∣ ∑ ( i , j ) ∈ K 2 ∥ x i − x j ∥ 2 \begin{aligned} L_{\text {Relation }} &=\sum_{(i, j) \in \mathbb{K}^{2}} l\left(\frac{1}{\phi(t)}\left\|t_{i}-t_{j}\right\|_{2}, \frac{1}{\phi(s)}\left\|s_{i}^{\prime}-s_{j}^{\prime}\right\|_{2}\right), \\ \phi(x) &=\frac{1}{\left|\mathbb{K}^{2}\right|} \sum_{(i, j) \in \mathbb{K}^{2}}\left\|x_{i}-x_{j}\right\|_{2} \end{aligned} LRelation ϕ(x)=(i,j)K2l(ϕ(t)1titj2,ϕ(s)1sisj2),=K21(i,j)K2xixj2

其中 K 2 = { ( i , j ) ∣ i ≠ j , 1 ⩽ i , j ⩽ K } \mathbb{K}^{2}=\{(i, j) \mid i \neq j, 1 \leqslant i, j \leqslant K\} K2={(i,j)i=j,1i,jK} ϕ ( ⋅ ) \phi(\cdot) ϕ() 表示归一化操作

基于响应的蒸馏:

考虑到如果对检测头的整个输出进行蒸馏,会导致正负样本的不平衡以及过多的负样本引入的噪声,这将不利于提高学生模型的性能,因此作者基于选定的 GIs 为分类分支和回归分支设计了蒸馏掩码,并证明了这比仅使用 GT 标签作为蒸馏掩码更有效,并提出了一个对不同模型的检测头进行蒸馏的通用框架

首先基于 GIs 的蒸馏掩码计算如下:

M = F Assign  ( G I s ) M=F_{\text {Assign }}(G I s) M=FAssign (GIs)

其中函数 F F F 是标签分配算法,因模型的不同而不同,这样基于响应的损失可以表示如下:

L Response  = 1 N m ∑ i = 1 R M i ( α L c l s ( y t i , y s i ) + β L r e g ( r t i , r s i ) ) , N m = ∑ i = 1 R M i \begin{aligned} L_{\text {Response }} &=\frac{1}{N_{m}} \sum_{i=1}^{R} M_{i}\left(\alpha L_{c l s}\left(y_{t}^{i}, y_{s}^{i}\right)+\beta L_{r e g}\left(r_{t}^{i}, r_{s}^{i}\right)\right), \\ N_{m} &=\sum_{i=1}^{R} M_{i} \end{aligned} LResponse Nm=Nm1i=1RMi(αLcls(yti,ysi)+βLreg(rti,rsi)),=i=1RMi

实验结果:

在这里插入图片描述
在这里插入图片描述

联系作者:

微信号:Sharpiless

作者的其他主页:

B站:https://space.bilibili.com/470550823

CSDN:https://blog.csdn.net/weixin_44936889

AI Studio:https://aistudio.baidu.com/aistudio/personalcenter/thirdview/67156

Github:https://github.com/Sharpiless

我的公众号:

  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

BIT可达鸭

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

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

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

打赏作者

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

抵扣说明:

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

余额充值