PKD: 基于Pearson相关系数的目标检测器的通用蒸馏框架
论文链接:https://arxiv.org/abs/2207.02039
项目链接:https://github.com/open-mmlab/mmrazor
Abstract
知识蒸馏(Knowledge distillation, KD)是一种广泛应用于目标检测的训练紧凑模型的技术。然而,对于如何在异构检测器之间进行蒸馏,目前还缺乏相关的研究。在本文中,我们经验地发现来自异构教师检测器的更好的FPN特征可以帮助学生,尽管他们的检测头和标签分配是不同的。然而,直接将特征映射与蒸馏检测器对齐存在两个问题。首先,教师和学生之间特征大小的差异可能会对学生施加过于严格的约束。其次,来自教师模型的具有大特征幅度的FPN阶段和通道可以支配蒸馏损失的梯度,这将压倒KD中其他特征的影响并引入大量噪声。为了解决上述问题,我们建议使用Pearson相关系数来模仿特征,以关注来自教师的关系信息,并放宽对特征大小的限制。我们的方法始终优于现有的检测KD方法,并且适用于同构和异构学生-教师对。此外,它收敛得更快。在强大的MaskRCNN-Swin检测器的指导下,基于ResNet-50的RetinaNet和FCOS在COCO2017上实现了41.5%和43.9%的mAP,分别比基线提高了4.1%和4.8%。
1 Introduction
知识蒸馏(Knowledge distillation, KD)是一种广泛应用于目标检测的训练紧凑模型的技术。然而,对于如何在异构检测器之间进行蒸馏,目前还缺乏相关的研究。大多数先前的工作[39,34,9,19,12]依赖于检测器特定的设计,只能应用于均匀检测器。[43,48]对具有异构主干的检测器进行实验,但通常忽略具有异构检测头和不同标签分配的检测器。目标检测技术发展迅速,性能更好的算法不断被提出。然而,在实际应用中,频繁更换检测器在稳定性方面并不容易。此外,在某些情况下,由于硬件限制,只能部署具有特定架构的检测器(例如,两阶段检测器很难部署),而大多数强大的教师属于不同的类别。因此,如果可以在异构检测器对之间进行知识蒸馏,这是有前景的。此外,目前的蒸馏方法,如[43,46],通常会引入几个互补的损失函数来进一步提高其性能,因此使用几个超参数来调整每个损失函数的贡献,这严重影响了它们迁移到其他数据集的能力。
在本文中,我们首先通过经验验证了FPN特征模仿可以成功地提取知识,即使学生-教师检测器对是异构的。然而,直接最小化教师和学生特征之间的均方误差(MSE)会导致次优结果,结果如表5所示。文献[6,12,48,43]也得出了类似的结论。为了探索MSE的局限性,我们精心可视化了教师和学生检测器的FPN特征响应,如图1所示。
具体来说,对于第l个FPN阶段的输出特征 s l ∈ R C × H × W s_l \in \mathbb{R}^{C×H×W} sl∈RC×H×W,我们在每个像素处选择C维的最大值,并获得一个二维矩阵。然后根据1个二维矩阵的最大值和最小值将这些值归一化为0-255。通过这些比较,我们得到以下观察结果:
- 教师和学生的特征值幅度不同,尤其是异构检测器,如图1(左)所示。因此,直接将教师和学生之间的特征映射对齐可能会强制执行过于严格的约束,并对学生造成伤害。
- 有几个FPN级的数值比其他的要大,如图1(右)所示。教师FPN“P6”阶段的活跃程度明显低于FPN“P3”阶段。然而,对于像RetinaNet[23]和FCOS[36]这样的检测器,所有FPN阶段共享相同的检测头。因此,较大数值的FPN级可能主导蒸馏损失梯度,这将压倒KD中其他特征的影响,导致次优结果。
- 部分通道的数值明显大于其他通道,如图1(中)所示。然而,在[34,47]中提到,活性较低的特征仍然适用于蒸馏。如果它们没有正确平衡,这些活性较低的通道产生的小梯度就会淹没在主导通道产生的大梯度中,从而限制了进一步的细化。此外,从图1的第一列(右)中,我们观察到在与物体无关的区域中有很多噪声,因为某些通道的像素值明显大于其他通道的像素值,因此在图中被可视化。然而,这些像素可能是噪声。因此,直接模仿特征映射可能会引入很多噪声。
根据这些观察,我们提出了通过皮尔逊相关系数(PKD)进行知识蒸馏的方法,如图2所示,该方法关注的是教师和学生特征之间的线性相关性。
为了消除不同FPN阶段和通道之间的师生检测器对之间和检测器内部的幅度差异的负面影响,我们首先对特征映射进行归一化,使其均值和单位方差为零,并最小化归一化特征之间的MSE损失。从数学上讲,这相当于首先计算两个原始特征向量之间的皮尔逊相关系数(r)[2],然后使用1-r作为特征模仿损失。
与以前的方法相比,我们的方法具有以下优点:首先,由于蒸馏损失仅在FPN特征上计算,因此它可以很容易地应用于异构检测器对,包括具有异构主干、异构检测头和不同训练策略(如标签分配)的模型。其次,由于不需要提前教师的检测头,可以显著减少训练时间,特别是对于那些具有级联头的模型。此外,PKD的收敛速度也比以往的方法快。最后,它只有一个超参数——蒸馏损失权重,而且对它不敏感。因此,它可以很容易地应用于其他数据集。我们进行了大量的实验来验证我们的方法在COCO数据集上带来的显著性能提升[24]。使用与教师相同的两阶段检测器,基于ResNet50的RetinaNet[23]和FCOS[23]实现了41.5%的mAP和43.9%的mAP,分别超过了基线4.1%和4.8%,并且也大大优于之前最先进的方法。
总之,本文的贡献有三个方面:•我们认为,即使学生-教师检测器对是异构的,FPN特征模仿也可以成功地提取知识。
- 我们建议用PCC模拟FPN特征,以关注关系信息并放宽学生特征大小的分布约束。它能够提取同构和异构检测器对的知识。
- 我们通过在COCO上的大量实验验证了我们的方法在各种检测器上的有效性[24],并在没有bells或whistles的情况下实现了最先进的性能。
- 该方法不仅收敛速度快,而且对唯一一个超参数蒸馏损失权重不敏感,简单有效。
2 Related Works
2.1 目标检测
目标检测是一项具有挑战性的视觉任务,其目的是检测图像中某一类语义对象。现代检测器大致分为双阶段检测器[31,4,13]和单阶段检测器[23,36,21,11]。在两级检测器中,通常采用区域建议网络(RPN)来生成由特定任务的检测头细化的初始粗略预测。一个典型的例子是Faster R-CNN[31]。相比之下,单阶段检测器,如RetinaNet[23]和FCOS[36],可以直接和密集地预测输出特征图上的边界框。在这些工作中,通常采用多尺度特征来处理各种尺度的对象,例如FPN[22],这被认为是我们研究的一个典型案例。提出的PKD只提取中间特征,不依赖于检测器特定的设计,因此它可以直接用于各种检测器。
2.2 知识蒸馏
知识蒸馏(Knowledge Distillation, KD)是一种旨在将知识从教师模型转移到学生模型的模型压缩和加速方法。它被[15]推广开来,随后的工作[32,16,14,1,45,28,26,35,37]探索了它在图像分类中的有效性。然而,将KD应用于目标检测器并非易事,因为最小化分类头输出之间的Kullback-Leibler (KL)散度并不能从教师那里传递空间信息,只会给学生带来有限的性能增益。以往的检测方法通常采用以下三种策略来应对上述挑战。首先,通常在多尺度中间特征之间进行精馏[20],为检测提供了丰富的空间信息。其次,提出了不同的特征选择方法来克服前景与背景的不平衡。根据特征选择方法[18],这些工作大多可以分为三类:基于提议的[6,20,9,44]、基于规则的[39,12]和基于注意力的[46,48,19]。第三,由于不同对象之间的关系包含有价值的信息,许多先前的工作试图通过使检测器捕获和利用这些关系来提高检测器的性能,例如非局部模块[46]和全局蒸馏[43]。
与以往的工作不同,我们将幅度差异、主导FPN级和通道作为关键问题。我们希望我们的方法可以作为一个坚实的基线,并有助于简化未来对目标检测器的知识蒸馏的研究。
3 Method
3.1 初步
在这一部分中,我们简要回顾了用于目标检测的传统知识蒸馏。近年来,基于特征的多尺度特征蒸馏被用于处理丰富的空间信息进行检测。提出不同的模仿掩模M,形成对前景特征的注意机制,滤除背景噪声。目标可表述为:
L
F
P
N
=
∑
l
=
1
L
1
N
l
∑
c
C
∑
i
W
∑
j
H
M
l
c
i
j
(
F
l
c
i
j
t
−
ϕ
a
d
a
p
t
(
F
l
c
i
j
s
)
)
2
,
(1)
\mathcal{L}_{FPN}\:=\:\sum_{l=1}^{L}\frac{1}{N_{l}}\:\sum_{c}^{C}\sum_{i}^{W}\sum_{j}^{H}M_{lcij}\left(F_{lcij}^{t}\:-\:\phi_{adapt}\left(F_{lcij}^{s}\right)\right)^{2}, \tag{1}
LFPN=l=1∑LNl1c∑Ci∑Wj∑HMlcij(Flcijt−ϕadapt(Flcijs))2,(1)
式中,
L
L
L为FPN层数,
l
l
l为第
l
l
l个FPN层,
i
,
j
i,j
i,j 为宽度为
W
W
W,高度为
H
H
H的对应特征图的位置,
N
l
=
∑
c
C
∑
i
W
∑
j
H
M
l
c
i
j
N_l=\sum_c^C\sum_i^W\sum_j^HM_{lcij}
Nl=∑cC∑iW∑jHMlcij。
F
l
t
F_l^t
Flt和
F
l
s
F_l^s
Fls分别是学生检测器和教师检测器的第
l
l
l层特征。函数
ϕ
a
d
a
p
t
\phi_{adapt}
ϕadapt是一个1x1卷积层,用于在老师和学生之间的通道数量不匹配时,对学生网络的通道数量进行上采样。
在这些方法中M的定义是不同的。例如,FRS[48]使用来自相应FPN层的聚合分类评分图,FGD[43]同时考虑空间注意力、通道注意力、目标大小和前景背景信息。
3.2 FPN特征模拟是否适用于异构检测器对?
由于FPN集成了多层主干网,提供了丰富的多尺度目标空间信息,以往的研究大多是对FPN进行升华。强迫学生模仿同构老师的FPN特征是合理的,因为他们有相同的检测头和标签分配,更好的特征可以带来更好的表现。然而,对于如何在异构检测器之间进行蒸馏,目前还缺乏相关的研究。[43,48]在具有异构主干的检测器上进行实验,但具有异构检测头和不同标签分配的检测器总是被省略。因此,我们有动机去研究FPN特征模仿是否仍然对这些异构检测器对有意义。
我们在GFL[21]、FCOS[36]和RetinaNet[23]这三种常用检测器上进行了backbone和neck置换实验。首先,我们将FCOS的backbone和neck替换为经过12次训练的GFL的backbone和neck。由于基于特征的蒸馏方法的主要思想是直接对齐教师和学生的特征激活,因此它可以被认为是FCOS和GFL之间FPN特征模仿的极端情况。然后用冻结的GFL的backbone和neck对FCOS头部进行微调。从表1可以看出,通过替换GFL的backbone和neck,检测器的性能得到了提高(从36.5提高到37.6)。在一定程度上验证了FPN特征模仿在异构检测器之间的适用性。相比之下,我们用经过12次训练的FCOS的backbone和neck代替了RetinaNet的backbone和neck。由于FCOS头组归一化导致两种模型的特征值量级差异,mAP明显下降(从36.3降至35.2)。这意味着特征值的大小差异会干扰两个异构检测器之间的知识蒸馏。
3.3 利用Pearson相关系数进行特征模仿
正如第3.2节所讨论的,一种很有前途的特征蒸馏方法需要在将它们构造成对进行模仿时考虑幅度差异。此外,通过对比图1所示的激活模式,我们发现主要的FPN阶段和通道会对学生的训练阶段产生负面干扰,导致次优结果,这一点被以前的研究忽略了。
为了解决上述问题,我们建议首先对教师和学生的特征进行归一化,使其均值和单位方差为零,并最小化归一化特征之间的MSE。此外,我们希望归一化遵循卷积属性——这样相同特征映射的不同元素,在不同的位置,以相同的方式归一化。设
B
\mathbb{B}
B为特征映射中跨小批量元素和空间位置的所有值的集合。因此,对于大小为
b
b
b的小批量和大小为
h
×
w
h × w
h×w的特征映射,我们使用大小为
m
=
∥
B
∥
=
b
⋅
h
w
m=\|\mathbb{B}\|=b\cdot hw
m=∥B∥=b⋅hw的有效小批量。设
s
(
c
)
∈
R
m
s^(\mathbf{c})\in\mathbb{R}^m
s(c)∈Rm为一批FPN输出的第
c
c
c通道,为清晰起见,省略
c
c
c。然后我们分别从学生和老师那里得到归一化值
s
^
1
…
m
\hat{s}_{1\ldots m}
s^1…m 和
t
^
1
…
.
m
\hat{t}_{1\ldots.m}
t^1….m。我们的PKD不是在公式1中精心设计模拟掩模M来选择重要的特征,而是在完整的特征图上进行操作。即用标量值1填充模仿掩码M。因此,我们可以将蒸馏损失表示为:
L
F
P
N
=
1
2
m
∑
i
=
1
m
(
s
^
i
−
t
^
i
)
2
.
(2)
\mathcal{L}_{FPN}=\frac1{2m}\sum_{i=1}^m(\hat{s}_i-\hat{t}_i)^2. \tag{2}
LFPN=2m1i=1∑m(s^i−t^i)2.(2)
继续,最小化上面的损失函数相当于最大化学生和老师的预归一化特征之间的PCC。PCC可计算为:
r
(
s
,
t
)
=
∑
i
=
1
m
(
s
i
−
μ
s
)
(
t
i
−
μ
t
)
∑
i
=
1
m
(
s
i
−
μ
s
)
2
∑
i
=
1
m
(
t
i
−
μ
t
)
2
.
(3)
r(\boldsymbol{s},\boldsymbol{t})=\frac{\sum_{i=1}^m(s_i-\mu_s)(t_i-\mu_t)}{\sqrt{\sum_{i=1}^m(s_i-\mu_s)^2}\sqrt{\sum_{i=1}^m(t_i-\mu_t)^2}}. \tag{3}
r(s,t)=∑i=1m(si−μs)2∑i=1m(ti−μt)2∑i=1m(si−μs)(ti−μt).(3)
因为
s
^
,
t
^
∼
N
(
0
,
1
)
\hat{\boldsymbol{s}},\hat{\boldsymbol{t}}\sim\mathcal{N}(0,1)
s^,t^∼N(0,1),我们得到
1
m
−
1
∑
i
s
^
i
2
=
1
,
1
m
−
1
∑
i
t
^
i
2
=
1
\frac1{m-1}\sum_i\hat{s}_i^2=1,\frac1{m-1}\sum_i\hat{t}_i^2=1
m−11∑is^i2=1,m−11∑it^i2=1。那么,我们可以将公式2重新表述为:
L
F
P
N
=
1
2
m
(
(
2
m
−
2
)
−
2
∑
i
=
1
m
s
^
i
t
^
i
)
=
2
m
−
2
2
m
(
1
−
r
(
s
,
t
)
)
≈
1
−
r
(
s
,
t
)
.
(4)
\begin{aligned}\mathcal{L}_{FPN}&=\frac{1}{2m}\left((2m-2)-2\sum_{i=1}^{m}\hat{s}_{i}\hat{t}_{i}\right)\\&=\frac{2m-2}{2m}(1-r(s,t))\approx1-r(s,t).\end{aligned} \tag{4}
LFPN=2m1((2m−2)−2i=1∑ms^it^i)=2m2m−2(1−r(s,t))≈1−r(s,t).(4)
皮尔逊相关系数本质上是协方差的归一化测量,因此结果的值总是在-1和1之间。因此,
L
F
P
N
=
1
−
r
\mathcal{L}_{FPN}=1-r
LFPN=1−r在0到2之间总是有一个值。它侧重于教师和学生特征之间的线性相关性,并放宽了对特征大小的限制。实际上,特征映射为
s
,
t
∈
R
m
s,t \in \mathbb{R}^m
s,t∈Rm可视为
m
m
m个数据点
(
s
i
,
t
i
)
(s_i, t_i)
(si,ti)。
L
F
P
N
=
0
\mathcal{L}_{FPN} = 0
LFPN=0意味着所有的数据点都在一条直线上,其中
s
s
s随着
t
t
t的增加而增加。因此,这个学生受过良好的训练。反之亦然,对于
L
F
P
N
=
2
\mathcal{L}_{FPN} = 2
LFPN=2。值为1意味着学生和老师的特征之间没有线性依赖关系。
在训练过程中,PCC 相对于每个FPN输出
s
i
s_i
si的梯度
∂
L
/
∂
s
i
\partial\mathcal{L}/\partial s_{i}
∂L/∂si:
∂
L
F
P
N
∂
s
i
=
1
m
σ
s
(
s
i
^
⋅
r
(
s
,
t
)
−
t
i
^
)
,
(5)
\frac{\partial \mathcal{L}_{FPN}}{\partial s_{i}}=\frac{1}{m\sigma_{s}}(\hat{s_{i}}\cdot r(\boldsymbol{s},\boldsymbol{t})-\hat{t_{i}}), \tag{5}
∂si∂LFPN=mσs1(si^⋅r(s,t)−ti^),(5)
其中,
r
(
s
,
t
)
r(s,t)
r(s,t)为公式3中的PCC,
σ
s
σ_s
σs为学生特征
s
s
s的样本标准差。
总之,PCC侧重于来自教师的关系信息,放松了对学生特征大小的分布约束。此外,它消除了主要FPN级和通道的负面影响,从而获得更好的性能。因此,规范化机制弥合了学生和教师激活模式之间的差距(见图2)。因此,PCC特征模仿适用于异构检测器对。我们用总损失训练学生检测器如下:
L
=
L
G
T
+
α
L
F
P
N
,
(6)
\mathcal{L}=\mathcal{L}_{GT}+\alpha\mathcal{L}_{FPN}, \tag{6}
L=LGT+αLFPN,(6)
其中
L
G
T
\mathcal{L}_{GT}
LGT为检测训练损失,
α
α
α为平衡检测训练损失和蒸馏损失的超参数。
3.4 PCC与KL散度的联系
正如第3.3节所讨论的,规范化机制是解决上述三个问题的关键。在以往的研究[15,40,33]中,KL散度在蒸馏中得到了广泛的应用。他们首先用softmax函数将激活转换成概率分布,然后最小化归一化激活映射的不对称KL散度:
L
K
L
=
T
2
∑
i
=
1
m
ϕ
(
t
i
)
⋅
l
o
g
[
ϕ
(
t
i
)
ϕ
(
s
i
)
]
,
(7)
\mathcal{L}_{KL}=T^2\sum_{i=1}^m\phi(t_i)\cdot log[\frac{\phi(t_i)}{\phi(s_i)}], \tag{7}
LKL=T2i=1∑mϕ(ti)⋅log[ϕ(si)ϕ(ti)],(7)
如果T比归一化激活的幅度大,我们可以近似:
ϕ
(
t
)
=
e
x
p
(
t
i
/
T
)
∑
j
=
1
m
e
x
p
(
t
j
/
T
)
.
(8)
\phi(t)=\frac{exp(t_i/T)}{\sum_{j=1}^mexp(t_j/T)}. \tag{8}
ϕ(t)=∑j=1mexp(tj/T)exp(ti/T).(8)
在这里,我们证明了在high-temperature极限下最小化归一化特征之间的KL散度等价于最小化归一化特征之间的MSE,因此等价于最大化原始特征之间的PCC。
设
p
i
=
ϕ
(
t
^
i
)
p_i=\phi(\hat{t}_i)
pi=ϕ(t^i)和
q
i
=
ϕ
(
s
^
i
)
q_i=\phi(\hat{s}_i)
qi=ϕ(s^i)分别表示来自老师和学生的概率。对于学生的每个归一化激活
s
^
i
\hat{s}_i
s^i, KL散度梯度
∂
L
K
L
/
∂
s
^
i
\partial\mathcal{L}_{KL}/\partial\hat{s}_i
∂LKL/∂s^i由下式给出:
∂
L
K
L
∂
s
i
^
=
T
(
q
i
−
p
i
)
=
T
(
e
s
i
^
/
T
∑
j
e
s
j
^
/
T
−
e
t
i
^
/
T
∑
j
e
t
j
^
/
T
)
.
(9)
\frac{\partial\:\mathcal{L}_{KL}}{\partial\hat{s_i}}=T\left(q_i-p_i\right)=T\left(\frac{e^{\hat{s_i}/T}}{\sum_je^{\hat{s_j}/T}}-\frac{e^{\hat{t_i}/T}}{\sum_je^{\hat{t_j}/T}}\right). \tag{9}
∂si^∂LKL=T(qi−pi)=T(∑jesj^/Tesi^/T−∑jetj^/Teti^/T).(9)
如果T比归一化激活的幅度大,我们可以近似为:
∂
L
K
L
∂
s
i
^
≈
T
(
1
+
s
i
^
/
T
m
+
∑
j
s
j
^
/
T
−
1
+
t
i
^
/
T
m
+
∑
j
t
j
^
/
T
)
.
(10)
\frac{\partial\mathcal{L}_{KL}}{\partial\hat{s_i}}\approx T\left(\frac{1+\hat{s_i}/T}{m+\sum_j\hat{s_j}/T}-\frac{1+\hat{t_i}/T}{m+\sum_j\hat{t_j}/T}\right). \tag{10}
∂si^∂LKL≈T(m+∑jsj^/T1+si^/T−m+∑jtj^/T1+ti^/T).(10)
当
s
^
i
\hat{s}_{i}
s^i和
t
^
i
\hat{t}_{i}
t^i为零时,公式10化简为:
∂
L
K
L
∂
s
i
^
≈
1
m
(
s
i
^
−
t
i
^
)
.
(11)
\frac{\partial\mathcal{L}_{KL}}{\partial\hat{s_{i}}}\approx\frac{1}{m}\left(\hat{s_{i}}-\hat{t_{i}}\right). \tag{11}
∂si^∂LKL≈m1(si^−ti^).(11)
利公式4所示的MSE和PCC之间的关系给出了期望的结果。实验结果见A.3节。
4 Experiments
为了验证我们方法的有效性和鲁棒性,我们在COCO[24]数据集上对不同的检测框架进行了实验。我们选择默认的120k图像分割用于训练,5k图像分割用于测试。我们使用如下[43]的标准训练设置,并报告了mean Average Precision (AP)作为评估指标,以及不同阈值和尺度下的AP, i:e:, AP50, AP75, APS, APM和APL。
对于蒸馏,当使用两级检测器作为教师时,超参数α被设置为6,当使用单阶段检测器时,超参数α被设置为10。异构检测器对的特征层次不一定是严格对齐的,如FasterRCNN构建的是从P2到P6的特征金字塔,而RetinaNet使用的是P3到P7的特征金字塔。为了解决上述问题,我们对低分辨率特征图进行上采样,使其具有与高分辨率特征图相同的空间大小。此外,我们的PKD不需要自适应层(公式1中的 φ a d a p t φ_{adapt} φadapt)。
所有实验都在8个Tesla A100 gpu上进行,每个gpu上有两个图像。我们的实现是基于mmdetection[7]和mmrazor[8]与Pytorch框架[29]。使用“1x”(即12次训练)、“2x”(即24次训练)和“2x+ms”(即24次多尺度训练)的训练计划。更多细节载于附录。
4.1 主要结果
我们的方法可以很容易地应用于不同的检测框架,因此我们首先在五种流行的检测器上进行了实验,包括双阶段检测器(Faster RCNN[31]),两个基于锚点的一级检测器(RetinaNet [23], RepPoints[42]和ood[11])和无锚点检测器(FCOS[36])。表2显示了最先进的蒸馏方法在COCO上的结果比较。我们的蒸馏方法超越了其他最先进的方法。所有的学生检测器通过从教师检测器迁移的知识,在AP上获得了显著的改进,例如,使用ResNet-50的FCOS在COCO数据集上获得了3.7%的mAP改进。这些结果表明了我们的方法在单阶段和双阶段检测器上的有效性和通用性。
4.2 用更强的异构教师蒸馏出更多的学生检测器
目前大多数方法都是针对均匀检测器对设计的。PKD具有足够的通用性,可以在同构和异构检测器对之间提取知识。我们在更多的检测器上进行实验,使用更强的异构教师检测器,如表3所示。与表2相比,我们发现学生检测器在更强的教师检测器下表现更好,例如,Retina-Res50模型在Mask RCNN-Swin[27]和RetinaRes101下分别实现了41.5%和39.6%的mAP。结果表明,在应用PKD时,模仿更强的异构教师检测器的特征映射可以进一步提高学生的表现。
4.3 其他具有归一化特征的基于特征的蒸馏方法
在目标检测中,一些基于特征的蒸馏方法[48,43]在一些预先定义的模仿区域内转移知识,并获得竞争性结果。相比之下,我们相信用PKD模拟完整的特征图已经可以超越它们。为了显示我们方法的通用性,我们以FitNet[32]、GT Mask、FRS[48]和FGD[43]为基准,在其上构建PKD。
回顾。在FitNet中采用了带MSE损失的全特征映射蒸馏。而GT Mask只模仿与ground truth bounding boxes重叠的特征。基于FRS的特征模仿使用分类头输出的聚合分类分数,以通道方向最大运算作为加权分数 mask,指导FPN的蒸馏。FGD中的全局蒸馏重建了不同像素之间的关系,并通过GcBlock将其从教师传递给学生[5]。
结果。为了公平的比较,所有的超参数都是从原始论文中复制的。从表4的结果可以看出,将PKD与这些特征模仿方法相结合可以进一步提高它们的性能。
4.4 分析
4.4.1 Pearson相关系数的有效性
在以往的研究中,多采用多尺度特征的基于特征的蒸馏进行蒸馏。在本研究中,我们认为幅度差异、主导FPN阶段和通道会对学生的训练阶段产生负面干扰,导致次优结果。为了进行实证研究,我们进行了以下三个实验来探讨MSE损失的影响,MSE损失是蒸馏中广泛使用的损失函数,同时存在上述三个问题。为了公平的比较,我们调整了所有实验中MSE的损失权重。更多细节列于A.4节。
对于第一对,使用FCOS-ResX101作为教师,其特征大小与学生Retina-Res50的特征大小存在显著差异(见图4)。在这种情况下,教师特征的关系信息比绝对值更能代表知识的构成。
对于第二对,GFL-Res101是老师,FCOS-Res50是学生。对于教师和学生来说,FPN阶段“P5”和“P6”的特征比阶段“P3”和“P4”的特征更不活跃(参见图5)。因此,阶段“P3”和“P4”的特征可能主导蒸馏损失的梯度,这将压倒其他特征的影响。由于较大的对象通常被分配到较高的特征级别,当使用MSE作为蒸馏损失时,学生对大对象的表现明显低于我们的表现。
对于最后一对,Retina-ResX101是老师,而Retina-Res50是学生。总是有一些通道的值较大(参见图6和图7),因此直接模仿特征映射可能会在主要通道中引入很多噪声。
通过对比表5的结果,我们发现我们提出的PKD解决了以上三个问题,取得了更好的性能。因此,一个有效的蒸馏损失函数应该能够处理以上三个问题。我们希望PKD可以作为一个坚实的基线,并有助于未来在知识蒸馏社区的研究。
4.4.2 收敛速度
在本小节中,我们使用FCOS进行实验,以比较我们的方法与COCO基准上其他最先进的蒸馏方法的收敛速度。如图3所示,在我们的PKD的早期训练阶段,训练收敛可以显著加快。同时,学生检测器FCOS-Res50的最终性能比FGD和FRS提高了约0.5%-0.6% mAP,并且不需要提前教师的检测头,显著减少了训练时间,特别是对于那些有级联头的模型。
4.4.3 损失权重α敏感性研究
在公式6中,我们使用损失权重超参数α来平衡检测训练损失和蒸馏损失。在这里,我们进行了几个实验来研究α的影响。如表6所示,与最佳结果相比,最差结果仅下降0.3 mAP,表明我们的方法对唯一的超参数α不敏感。此外,由于PCC中的归一化机制,在不同的师生检测器对之间可以找到一个相对均匀的损失权重α值,以保持检测损失和蒸馏损失的平衡不变。
5 Conclusion
本文通过实证研究发现,FPN特征模拟适用于异构检测对,尽管它们的检测头和标签分配不同。在此基础上,提出了基于Pearson相关系数的特征模仿,聚焦教师的关系信息,放宽学生特征值大小的分布约束。此外,提出了一种通用的KD框架,能够同时提取同构和异构检测器对的知识。它收敛更快,只引入一个超参数,可以很容易地应用于其他数据集。然而,我们对我们提出的PKD是否能够胜任其他任务(如文本识别)的理解是初步的,并留给未来的工作。
A Appendix
A.1 建立通用KD框架的动机
现代检测器大致分为双阶段检测器[31,13,3]和密集预测检测器(例如基于锚的单阶段检测器[23,25,30]和无锚的一级检测器[10,36,42])。每个家族都有自己的优点和缺点。特别是,双阶段检测器通常具有更高的性能,但由于区域提议网络(RPN)和RCNN头,推理速度较慢且难以部署。另一方面,密集预测检测器比双阶段检测器更快,但精度较低。在实践中,使用双阶段检测器作为教师来增强密集预测检测器是一个很自然的想法。
此外,异构密集预测检测器对之间的知识蒸馏也很有前景。在某些场景中,由于硬件限制,只能部署具有特定架构的检测器。例如,与批处理规范化[17]和实例规范化[38]相比,组规范化[41]很难部署。然而,最有影响力的教师可能属于不同的类别。此外,目标检测发展迅速,性能更好的算法不断被提出。然而,在实际应用中,由于稳定性和硬件运行时的限制,频繁更换检测器并不容易。因此,在最新的大容量检测器和广泛使用的紧凑检测器之间进行知识蒸馏是有帮助的。
因此,我们有动机设计一种通用的蒸馏方法,能够在同构和异构检测器对之间蒸馏知识。
A.2 训练策略详细信息
我们对不同的检测框架进行了实验,包括两阶段模型、基于锚点的单阶段模型和无锚点的单阶段模型。[18]提出了继承策略,用教师的neck和head参数初始化学生,取得了较好的效果。在这里,我们使用这个策略来初始化与老师具有相同头部结构的学生,并发现它有助于学生更快地收敛。
所有实验在8个Tesla A100 GPU上进行,每个GPU上有2个图像。我们的实现是基于mmdetection[7]和mmrazor[8]与Pytorch框架[29]。使用SGD优化器的“1x”(即12个epoch),“2x”(即24个epoch)和“2x+ms”(即24个epoch与多尺度训练)训练计划。动量和重量衰减设置为0.9和1e-4。对于Faster RCNN,初始学习率设置为0.02,对于其他RCNN设置为0.01。我们使用GIoULoss、norm-on-bbox和center-sampling等技巧训练FCOS[36],这与FGD[43]和GID[9]相同。对于蒸馏,只引入一个超参数α来平衡监督学习损失和蒸馏损失,当使用两级检测器作为教师时将其设置为6,当使用一级检测器作为教师时将其设置为10。教师网络之前训练有素,培训期间固定。
A.3 PCC和KL散度的联系
正文第3.4节给出了PCC和KL散度之间的关系。我们在RetinaNet和GFL上进行了两个实验来验证这一点。对于这两个实验,我们设置失重量α = 10,温度T = 50。如表7所示,在高温极限下最小化后归一化特征之间的KL散度也可以得到类似的结果。
A.4 用MSE进行特征模拟的细节
如正文表5所示,我们比较了MSE和我们提出的PKD的结果。由于MSE损失的梯度取决于特征值的大小,并且在不同的检测器之间通常是不同的,因此我们必须仔细调整损失权重,以获得相对较好的结果,如表8所示。我们把最好的结果放在表5中。
A.5 Pearson相关系数的有效性
在本文中,我们认为幅度差异、主导FPN阶段和通道会对学生的训练阶段产生负面干扰。为了清楚地表明这三个问题确实存在,我们精心地可视化了蒸馏前教师和学生检测器的FPN特征响应,如图4、5、6和7所示。我们遵循第1节中的可视化方法。
通过这些比较,我们得到了以下三点观察结果:
- 不同检测器的特征值幅度可能有显著差异,特别是对于异构检测器,如图4所示。直接对齐教师和学生之间的特征映射可能会强制执行过于严格的约束,并对学生造成伤害(见正文顶部的表5)。
- 如图5所示,GFL-Res101和FCOS-Res50与FPN的’P3’和’P4’阶段特征相比,'P5’和’P6’阶段特征的激活程度较低。这是不同检测器对之间的常见情况。较大数值的FPN级可以主导蒸馏损失梯度,这将压倒KD中其他特征的影响。
- 如图6(右)所示,MaskRCNN-Swin FPN的’P6’阶段的第210通道的特征幅度明显大于其他通道。类似的现象也存在于其他检测器中,如RetinaNet(见图7)。激活较少的通道产生的小梯度可能淹没在优势通道产生的大梯度中,从而限制了进一步的细化。此外,在与对象无关的区域中有很多噪声,如图6(左)所示。直接模仿特征映射可能会引入很多噪声。
对比正文中的表8和表5,我们发现我们提出的PKD解决了以上三个问题,取得了更好的性能。因此,一个有效的蒸馏损失函数应该能够处理以上三个问题。我们希望PKD可以作为一个坚实的基线,并有助于未来在知识蒸馏社区的研究。