Localization Distillation

Localization Distillation for Dense Object Detection

Introduction

论文题目 :Localization Distillation for Dense Object Detection

论文地址https://arxiv.org/pdf/2102.12252.pdf

论文出处 :2022’CVPR

代码实现https://github.com/HikariTJU/LD

Idea

把用于分类的KD(Knowledge Distillation),用于回归BBox中,形成了LD(Localization Distillation)。

做法:先把bbox的4个logits输出值,离散化成4n个logits输出值,之后与分类KD几乎一致。

Detail

Logits Distillation

参考文献

现在的深度学习模型越来越大,尤其是近年Transformer比较火,而各种基于的Transformer的模型参数普遍较多,在这种情况下就需要找到有效的模型压缩的方法。知识蒸馏就又回归到了研究者的视野之中。

KD最早就是专门为图像分类而设计的:

核心思想:就是用一个已训练的复杂模型(Teacher,黑盒)输出的知识,去指导一个小模型(Student)训练学习。

知识:soft targets和hard targets

分类采用的是one-hot编码:

hard targets: Ground truth <=> [0,0,1,0,0,0][0, 0, 1, 0, 0, 0] 极大似然

soft targets: Softmax层输出 <=>[0.01,0.03,0.91,0.01,0.02,0.01][0.01,0.03,0.91,0.01,0.02,0.01] 概论分布

softmax层的输出,除了正例之外,负标签也带有大量的信息,比如某些负标签对应的概率远远大于其他负标签。而在传统的训练过程(hard target)中,所有负标签都被统一对待。

蒸馏:温度T

qi1=exp(zi)kN(zk)q_{i}^{1} = \frac{exp(z_i)}{\sum_{k}^{N}(z_k)}

但是原始softmax函数的负标签概率都接近0,对损失函数的贡献非常小。

qiT=exp(zi/T)kN(zk/T)q_{i}^{T} = \frac{exp(z_i/T)}{\sum_{k}^{N}(z_k/T)}

当T=1时,就是原始softmax函数,T越高,标签越平滑,负标签携带的信息会被相对地放大

T = 100,标签更平滑

[0.01,0.03,0.91,0.01,0.02,0.01][0.01,0.03,0.91,0.01,0.02,0.01]

[0.0001,0.0003,0.0091,0.0001,0.0001,0.0001][0.0001,0.0003,0.0091,0.0001,0.0001,0.0001]

distill loss

LKD=αLsoft+βLhardL_{KD} = \alpha L_{soft} + \beta L_{hard}

在温度T的条件下,student的softmax输出和teacher输出的soft target的cross entropy就是Loss函数的第一部分

Lsoft=jNpjTlog(qjT)L_{soft} = -\sum_{j}^{N}p_{j}^{T}log(q_{j}^{T})

其中piT=exp(vi/T)kN(vk/T),qiT=exp(zi/T)kN(zk/T)p_{i}^{T} = \frac{exp(v_i/T)}{\sum_{k}^{N}(v_k/T)},q_{i}^{T} = \frac{exp(z_i/T)}{\sum_{k}^{N}(z_k/T)}

在温度T=1的条件下,student的softmax输出和ground truth的cross entropy就是Loss函数的第二部分

Lhard=jNcjlog(qj1)L_{hard} = -\sum_{j}^{N}c_{j}log(q_{j}^{1})

其中qi1=exp(zi)kN(zk)q_{i}^{1} = \frac{exp(z_i)}{\sum_{k}^{N}(z_k)}

上述公式中:

  • viv_i :Teacher模型中的logits(logits是softmax之前,网络中最后一个全连接层的输出)
  • ziz_i: student模型中的logits
  • piTp_{i}^{T}:Teacher模型在温度T下的softmax输出在第i类上的值
  • qiTq_{i}^{T}:student模型在温度T下的softmax输出在第i类上的值
  • cic_i: ground truth在第i类上的值,正标签取1,负标签取0
  • NN: 总标签的数量

目前知识蒸馏主要分为了两个派系:logit蒸馏和feature蒸馏,上述是logit蒸馏

Localization Distillation

基于此背景,再说说本文的LD,LD想解决的问题与GFL一样–由遮挡等因素带来的定位不确定性

参考GFL,假设bbox的边e

e=eminemaxxP(x)dx,eedgee = \int_{e_{min}}^{e_{max}} xP(x)dx, e\in edge

然后把rangee[emin,emax]e\in[e_{min}, e_{max}]离散化为集合{emin,emin+1,..emax1,emax}\left \{e_{min},e_{min+1},..e_{max-1},e_{max} \right \}

集合中的每个值可以看作一个类,一般取间隔为1。

这样bbox的每条边都可以通过Softmax函数转为一个概率分布。

作者使用的是相对熵(KL-divergence)作为LD的概率:

LLD=eedgelogqjTpjTL_{LD} = \sum_{e}^{edge} log\frac{q_{j}^{T}}{p_{j}^{T}}

其中piT=exp(vi/T)eedge(ve/T),qiT=exp(zi/T)eedge(ze/T)p_{i}^{T} = \frac{exp(v_i/T)}{\sum_{e}^{edge}(v_e/T)},q_{i}^{T} = \frac{exp(z_i/T)}{\sum_{e}^{edge}(z_e/T)},符号基本与上文对应。

也算是把KD和LD的任务统一了,统称为Logit Mimicking。

others

后续作者结合了feature蒸馏只会传递混合知识的,划分了两个区域:

  • Main distillation Region(主蒸馏区域、红色)<=> 直接通过正标签的所在区域确定
  • Valuable Localization Region(有价值区域,蓝色) <=> 通过设置DIOU阈值,计算DIOU确定

讨论了分别在Main,VLR区域中使用KD、LD的效果消融实验:

由于不太了解feature蒸馏,所以这一部分没细看。

总结

我认为蒸馏不是本文的重点,

倒是最近这种通过离散化,然后加权(概率),把bbox的回归任务看成分类任务的思想比较常见。