标题:Focal and Global Knowledge Distillation for Detectors
会议:CVPR2022
论文地址:https://ieeexplore.ieee.org/document/9879869/
官方代码:https://github.com/yzd-v/FGD
作者单位:清华大学深圳国际研究生院、字节跳动、北京航空航天大学
文章目录
Abstract
知识蒸馏已经成功应用于图像分类。然而,目标检测要复杂得多,大多数知识蒸馏方法都失败了。本文指出在目标检测中,教师和学生在不同区域的特征差异很大,尤其是在前景和背景区域。如果我们将它们同样地蒸馏,特征图之间的不均匀差异会对蒸馏产生负面影响。因此,我们提出了局部和全局蒸馏(FGD)。局部蒸馏将前景和背景分离,迫使学生关注教师的关键像素和通道。全局蒸馏重建了不同像素之间的关系,并将其从教师传递给学生,弥补了局部蒸馏丢失的全局信息。由于我们的方法只需要计算特征图上的损失,因此FGD可以应用于各种检测器。我们在不同主干的检测器上进行实验,结果表明学生检测器取得了优异的mAP提升。例如,采用了我们蒸馏方法的基于ResNet-50的RetinaNet、Faster R-CNN、RepPoints和Mask R-CNN在COCO2017上取得了40.7%、42.0%、42.0%和42.1%的mAP,分别比基线提高了3.3、3.6、3.4和2.9。
1. Introduction
近年来,深度学习在各个领域取得了巨大的成功。为了获得更好的性能,我们通常使用更大的主干,这需要更多的计算资源并且推理更加缓慢。为了克服这个问题,知识蒸馏被提出。知识蒸馏是一种将大型的教师网络中的信息继承到小型的学生网络中的方法,在推理过程中不需要额外的成本就能获得强大的性能。然而,大多数蒸馏方法都是针对图像分类而设计的,这导致对目标检测的改进不大。众所周知,极度的前景背景类不平衡是目标检测的一个关键问题。不平衡的比例也不利于目标检测的蒸馏。针对这一问题有一些努力。Chen等人分配一个权重来抑制背景。Mimick蒸馏了学生区域建议网络建议的正区域。FGFI和TADF分别使用细粒度和高斯掩码来选择蒸馏区域。Defeat将前景和背景分别蒸馏。然而,蒸馏的关键区域在哪里还是不清楚。
为了探究学生和教师特征之间的差异,我们做了空间和通道注意力的可视化。如图1所示,学生的注意力和教师的注意力在前景中的差异非常显著,而在背景中的差异相对较小。这可能导致学习前景和背景的难度不同。本文进一步探究知识蒸馏中前景和背景对目标检测的影响。我们通过解耦蒸馏中的前景和背景来设计实验。令人惊讶的是,如表1所示,前景和背景一起蒸馏的性能最差,甚至比只使用前景或背景蒸馏的效果还差。这一现象表明特征图中不均匀的差异会对蒸馏产生负面影响。此外,如图1所示,每个通道之间的注意力也有很大差异。再往深处想,不仅在前景和背景之间存在负面影响,在像素和通道之间也存在负面影响。因此,我们提出局部蒸馏。在分离前景和背景的同时,局部蒸馏还计算教师特征中不同像素和通道的注意力,让学生关注教师的关键像素和通道。
然而,仅仅关注关键信息是不够的。众所周知,全局上下文在检测中也扮演着重要的角色。许多关系模块已经成功应用于检测,如non-local、GcBlock、关系网络等,极大地提升了检测器的性能。为了弥补局部蒸馏中缺失的全局信息,我们进一步提出全局蒸馏。在全局蒸馏中,我们利用GcBlock提取不同像素之间的关系,然后将它们从教师蒸馏给学生。
综合上述分析,我们提出了局部蒸馏与全局蒸馏相结合的方法,Focal and Global Distillation(FGD),如图2所示。所有的损失函数只在特征上计算,因此FGD可以直接在各种检测器上使用,包括两阶段模型、anchor-based的单阶段模型和anchor-free的单阶段模型。在不加修饰的情况下,我们用FGD在目标检测中实现了SOTA的性能。总而言之,本文的贡献在于:
- 我们发现,教师和学生关注的像素和通道是十分不同的。如果我们不加区分地提取像素和通道,将导致改进十分微弱。
- 我们提出局部和全局蒸馏,使学生不仅能够关注教师的关键像素和通道,而且能够学习像素之间的关系。
- 我们通过在COCO上的大量实验验证了我们的方法在各种检测器上的有效性,包括单阶段、两阶段、anchor-free的方法,都取得了SOTA的性能。
2. Related Work
2.1. Object Detection
回顾了CNN-based目标检测器。虽然它们有不同的检测头,但其输入都是特征。因此,我们的基于特征的知识蒸馏方法几乎可以应用在所有的检测器中。
2.2. Knowledge Distillation
知识蒸馏是一种不改变网络结构的模型压缩方法。它最早由Hinton等人提出,利用输出作为软标签,将暗知识(dark knowledge)从一个大的教师网络转移到一个小的学生网络中用于分类任务。此外,FitNet证明了来自中间的语义信息也有助于指导学生模型。目前已经有很多工作显著提高了学生分类器的性能。
最近,一些工作已经成功地将知识蒸馏应用于检测器。Chen等人首先通过对颈部特征、分类头和回归头进行知识蒸馏,将知识蒸馏应用于检测。然而,由于前景和背景之间的不平衡,蒸馏整个特征可能会引入很多噪声。Li等人选择从RPN中采样的特征来计算蒸馏损失。Wang等人提出了细粒度掩码来蒸馏由真值边界框计算的区域。Sun等人利用高斯掩码来覆盖真值进行蒸馏。这类方法缺乏对背景的蒸馏。在不区分前景和背景的情况下,GID蒸馏学生和教师性能不同的区域。Guo等人表明前景和背景对蒸馏都起着重要的作用,分开蒸馏对学生更有利。这些方法都是从背景中蒸馏知识并得到显著的结果。但是,它们对所有像素和通道都一视同仁。FKD使用注意力掩码和Non-local模块分别引导学生和蒸馏关系。然而,它将前景和背景一起蒸馏。
蒸馏检测的关键问题是选择有价值的区域进行蒸馏。以往的蒸馏方法将所有的像素和通道一视同仁或者将所有的区域一起蒸馏。大多数方法缺乏对全局上下文信息的蒸馏。在本文中,我们使用真值框对图像进行分离,然后使用教师的注意力掩码选择关键部分进行蒸馏。此外,我们捕获不同像素之间的全局关系并蒸馏给学生,这带来了另一个改进。
3. Method
大多数检测器使用FPN来利用多尺度语义信息。来自FPN的特征融合了来自主干不同层的语义信息,并用于直接预测。从教师那里迁移这些特征的知识显著提高了学生的性能。一般来说,特征的蒸馏可以表述为:
L f e a = 1 C H W ∑ k = 1 C ∑ i = 1 H ∑ j = 1 W ( F k , i , j T − f ( F k , i , j S ) ) 2 (1) L_{fea}=\frac{1}{CHW}\sum_{k=1}^C\sum_{i=1}^H\sum_{j=1}^W(F_{k,i,j}^T-f(F_{k,i,j}^S))^2\tag{1} Lfea=CHW1k=1∑Ci=1∑Hj=1∑W(Fk,i,jT−f(Fk,i,jS))2(1)其中, F T F^T FT和 F S F^S FS分别表示来自教师和学生的特征, f f f是将 F S F^S FS变形到与 F T F^T FT相同维度的适应层。 H H H、 W W W表示特征的高度和宽度, C C C表示通道数。
然而,这类方法将所有部分一视同仁,缺乏对不同像素之间全局关系的蒸馏。为了克服上述问题,我们提出了FGD,它包括局部蒸馏和全局蒸馏,如图2所示。
3.1. Focal Distillation
对于前景和背景的不平衡,我们提出了局部蒸馏来分离图像并引导学生关注关键像素和通道。蒸馏区域的对比可以见图3。
首先,我们设置一个二值掩码 M M M来分离背景和前景:
M i , j = { 1 , i f ( i , j ) ∈ r 0 , O t h e r w i s e (2) M_{i,j}=\left\{1, if (i,j)∈r0,Otherwise\right.\tag{2} Mi,j={
1,0, if (i,j)∈rOtherwise(2)其中, r r r表示真值框, i i i和 j j j分别是特征图的横纵坐标。如果 ( i , j ) (i,j) (i,j)落在真值内,那么 M i , j = 1 M_{i,j}=1 Mi,j=1,否则为 0 0 0。
尺度较大的目标由于拥有的像素更多,因此会占据更多的损失,影响小目标的蒸馏。并且在不同的图像中,前景与背景的比例差别很大。因此,为了平等地对待不同目标,平衡前景和背景的损失,我们设置一个尺度掩码 S S S:
S i , j = { 1 H r W r , i f ( i , j ) ∈ r 1 N b g , O t h e r w i s e (3) S_{i,j}=\left\{1HrWr, if (i,j)∈r1Nbg,Otherwise\right.\tag{3} Si,j={
HrWr1,Nbg1, if (i,j)∈rOtherwise(3) N b g = ∑ i = 1 H ∑ j = 1 W ( 1 − M i , j ) (4) N_{bg}=\sum_{i=1}^H\sum_{j=1}^W(1-M_{i,j})\tag{4} Nbg=i=1∑Hj=1∑W(1−Mi,j)(4)其中, H r H_r Hr和 W r W_r Wr分别表示真值框 r r r的高度和宽度。如果一个像素属于不同的目标,我们选择最小的框来计算 S S S。
SENet和CBAM表明,关注关键像素和通道有助于基于CNN的模型获得更好的结果。Zagoruyko等人使用一种简单的方式来得到空间注意力掩码,提高了蒸馏的性能。在本文中,我们应用类似的方法来选择局部像素和通道,进而得到相应的注意力掩码。我们分别计算不同像素和不同通道的绝对平均值:
G S ( F ) = 1 C ⋅ ∑ c = 1 C ∣ F c ∣ (5) G^S(F)=\frac{1}{C}·\sum_{c=1}^C|F_c|\tag{5} GS(F)=C1⋅c=1∑C∣Fc∣(5) G C ( F ) = 1 H W ⋅ ∑ i = 1 H ∑ j = 1 W ∣ F i , j ∣ (6) G^C(F)=\frac{1}{HW}·\sum_{i=1}^H\sum_{j=1}^W|F_{i,j}|\tag{6} GC(F)=HW1⋅i=1∑Hj=1∑W∣Fi,j∣(6)其中, H H H、 W W W、 C C C分别表示特征的高度、宽度和通道数。 G S G^S GS和 G C G^C GC分别是空间注意力图和通道注意力图。然后,注意力掩码可以表示为:
A S ( F ) = H ⋅ W ⋅ s o f t m a x ( G S ( F ) / T ) (7) A^S(F)=H·W·softmax(G^S(F)/T)\tag{7} AS(F)=H⋅W⋅softmax(GS(F)/T)(7) A C ( F ) = C ⋅ s o f t m a x ( G C ( F ) / T ) (8) A^C(F)=C·softmax(G^C(F)/T)\tag{8} AC(F)=C⋅softmax(GC(F)/T)(8)其中, T T T是由Hinton等人提出的用来调整分布的温度超参数。
学生和教师的掩码存在显著的差异。在训练过程中,我们使用教师的掩码对学生进行指导。利用二值掩码 M M M、尺度掩码 S S S、注意力掩码 A S A_S AS和 A C A_C AC,我们提出以下特征损失 L f e a L_{fea} Lfea:
L f e a = α ∑ k = 1 C ∑ i = 1 H ∑ j = 1 W M i , j S i , j A i , j S A k C ( F k , i , j T − f ( F k , i , j S ) ) 2 + β ∑ k = 1 C ∑ i = 1 H ∑ j = 1 W ( 1 − M i , j ) S i , j A i , j S A k C ( F k , i , j T − f ( F k , i , j S ) ) 2 (9) L_{fea}=\alpha\sum_{k=1}^C\sum_{i=1}^H\sum_{j=1}^WM_{i,j}S_{i,j}A_{i,j}^SA_k^C(F_{k,i,j}^T-f(F_{k,i,j}^S))^2\\ +\beta\sum_{k=1}^C\sum_{i=1}^H\sum_{j=1}^W(1-M_{i,j})S_{i,j}A_{i,j}^SA_k^C(F_{k,i,j}^T-f(F_{k,i,j}^S))^2\tag{9} Lfea=αk=1∑Ci=1∑Hj=1∑WMi,jSi,jAi,jSAkC(Fk,i,jT−f(Fk,i,jS))2+βk=1∑Ci=1∑Hj=1∑W(1−Mi,j)Si,jAi,jSAkC(Fk,i,jT−f(Fk,i,jS))2(9)其中, A S A^S AS和 A C A^C AC分别表示教师检测器的空间注意力掩码和通道注意力掩码。 F T F^T FT和 F S F^S FS分别表示教师检测器和学生检测器的特征图。 α \alpha α和 β \beta β是用来平衡前景和背景损失的超参数。
此外,我们使用注意力损失 L a t L_{at} Lat来迫使学生检测器模拟教师检测器的空间注意力掩码和通道注意力掩码,其公式为:
L a t = γ ⋅ ( l ( A t S , A S S ) + l ( A t C , A S C ) ) (10) L_{at}=\gamma·(l(A_t^S,A_S^S)+l(A_t^C,A_S^C))\tag{10} Lat=γ⋅(l(AtS,ASS)+l(AtC,ASC))(10)其中, t t t和 s s s分别表示教师和学生。 l l l表示 L 1 L1 L1损失, γ \gamma γ是用来平衡损失的超参数。
局部损失 L f o c a l L_{focal} Lfocal是特征损失 L f e a L_{fea} Lfea和注意力损失 L a t L_{at} Lat的和:
L f o c a l = L f e a + L a t (11) L_{focal}=L_{fea}+L_{at}\tag{11} Lfocal=Lfea+Lat(11)
3.2. Global Distillation
不同像素之间的关系具有重要的知识,可以用来提高检测任务的性能。在3.1节里,我们利用局部蒸馏(Focal Distillation)来分离图像,迫使学生关注关键部分。然而,这种蒸馏割断了前景和背景之间的联系。因此,我们提出全局蒸馏(Global Distillation),旨在从特征图中提取不同像素之间的全局关系,并将其从教师蒸馏给学生。
如图4所示,我们利用GcBlock捕获单幅图像中的全局关系信息,并迫使学生检测器从教师检测器那里学习这些关系。全局损失 L g l o b a l L_{global} Lglobal如下:
L g l o b a l = λ ⋅ ∑ ( R ( F T ) − R ( F S ) ) 2 R ( F ) = F + W v 2 ( R e L U ( L N ( W v 1 ( ∑ j = 1 N p e W k F j ∑ m = 1 N p e W k F M F j ) ) ) ) (12) L_{global}=\lambda·\sum(\mathcal{R}(F^T)-\mathcal{R}(F^S))^2\\ \mathcal{R}(F)=F+W_{v2}(ReLU(LN(W_{v1}(\sum_{j=1}^{N_p}\frac{e^{W_kF_j}}{\sum_{m=1}^{N_p}e^{W_kF_M}}F_j))))\tag{12} Lglobal=λ⋅∑(R(FT)−R(FS))2R(F)=F+Wv2(ReLU(LN(Wv1(j=1∑Np∑m=1NpeWkFMeWkFjFj))))(12)其中, W k W_k Wk、 W v 1 W_{v1} Wv1和 W v 2 W_{v2} Wv2表示卷积层, L N LN LN表示层标准化, N p N_p Np是特征中的像素数目, λ \lambda λ是用来平衡损失的超参数。
3.3. Overall loss
综上所述,我们用下面的总损失来训练学生检测器:
L = L o r i g i n a l + L f o c a l + L g l o b a l (13) L=L_{original}+L_{focal}+L_{global}\tag{13} L=Loriginal+Lfocal+Lglobal(13)其中, L o r i g i n a l L_{original} Loriginal是检测器的原始损失。
蒸馏损失只在特征图上计算,而特征图可以从检测器的颈部获得。因此,它可以很容易地应用于不同的检测器。
4. Experiments
4.1. Dataset
介绍了实验用的数据集。
4.2. Details
我们在不同的检测框架上进行实验,包括两阶段模型、anchor-based的单阶段模型和anchor-free的单阶段模型。此外,我们还在Mask R-CNN上验证了我们的方法,在实例分割上取得了显著的改进。Kang等人提出了继承策略,利用教师的颈部和头部参数初始化学生,取得了更好的结果。这里我们使用该策略来初始化学生,使其与教师具有相同的头部结构。
FGD使用 α \alpha α、 β \beta β、 γ \gamma γ和 λ \lambda λ来分别平衡公式9中的前景和背景损失、公式10中的注意力损失以及公式12中的全局损失。所有实验均使用 T = 0.5 T=0.5 T=0.5来调整注意力分布。我们采用超参数 { α = 5 × 1 0 − 5 , β = 2.5 × 1 0 − 5 , γ = 5 × 1 0 − 5 , λ = 5 × 1 0 − 7 } \{\alpha=5×10^{-5},\beta=2.5×10^{-5},\gamma=5×10^{-5},\lambda=5×10^{-7}\} {
α=5×10−5,β=2.5×10−5,γ=5×10−5,λ=5×10−7}给所有的两阶段模型, { α = 1 × 1 0 − 3 , β = 5 × 1 0 − 4 , γ = 1 × 1 0 − 3 , λ = 5 × 1 0 − 6 } \{\alpha=1×10^{-3},\beta=5×10^{-4},\gamma=1×10^{-3},\lambda=5×10^{-6}\} {
α=1×10−3,β=5×10−4,γ=1×10−3,λ=5×10−6}给所有的anchor-based的单阶段模型, { α = 1.6 × 1 0 − 3 , β = 8 × 1 0 − 4 , γ = 8 × 1 0 − 3 , λ = 8 × 1 0 − 6 } \{\alpha=1.6×10^{-3},\beta=8×10^{-4},\gamma=8×10^{-3},\lambda=8×10^{-6}\} {
α=1.6×10−3,β=8×10−4,γ=8×10−3,λ=8×10−6}给所有的anchor-free的单阶段模型。所有的检测器均使用SGD训练24个epoch,动量为0.9,权重衰减为0.0001。
4.3. Main Results
在实验中,我们选择使用ResNet-50的检测器作为学生,使用ResNet-101的同一检测器作为教师。如表2所示,我们的蒸馏方法超过了其它两种SOTA的方法。所有的学生检测器都随着教师检测器的知识迁移获得了显著的AP提升。此外,在该Res101-Res50设置中,通过使用FGD训练,学生检测器甚至超过了教师检测器。
4.4. Distillation of more detectors with stronger students and teachers
我们的方法也可以应用于异构的主干之间,例如基于ResNeXt的教师检测器蒸馏基于ResNet的学生检测器。这里我们在更多的检测器上进行实验,并使用基于更强主干的教师检测器。我们将结果与另一种有效且通用的蒸馏方法FKD进行了比较。如表3所示,所有学生检测器在AP和AR上都取得了显著的提升。此外,将结果与表2对比,我们发现采用更强的教师检测器时,学生检测器的性能也会更好,例如Retina-Res50模型在基于ResNeXt101和ResNet101的教师中分别达到40.7和39.7的mAP。这个对比表明,学生检测器通过模拟基于更强主干的教师检测器的特征图获得了更好的特征。
FGD只需要计算特征图上的蒸馏损失。因此我们也将我们的方法应用到Mask R-CNN中进行目标检测和实例分割。在本实验中,我们使用边界框标签进行局部蒸馏。如表3所示,我们的方法带来了2.9的边界框AP增益和2.4的掩码AP增益,证明了我们的蒸馏方法对实例分割也是有效的。
4.5. Better feature with FGD
如表2和表3所示,用教师的颈部和头部参数初始化学生带来了另一个改进,这表明学生获得了与教师相似的特征。因此在本小节中,我们将教师检测器、学生检测器和使用了FGD的学生检测器的空间注意力掩码和通道注意力掩码进行了可视化和比较,如图5所示。对比教师和学生的注意力掩码,可以看出它们在蒸馏前的像素和通道分布上有很大的差异,例如教师检测器更关注手指,在通道241上有更大的权重。然而,经过FGD训练后,学生检测器与教师检测器具有相似的像素和通道分布,这意味着学生关注了与教师相同的部分。这也解释了FGD是如何帮助学生检测器表现更好的。基于相似的特征,学生检测器得到了显著的提升,甚至超过了教师检测器。
4.6. Analysis
4.6.1 Sensitivity study of different losses
在本文中,我们将局部知识和全局知识从教师迁移到学生。在本小节中,我们对局部损失( L f o c a l L_{focal} Lfocal)和全局损失( L g l o b a l L_{global} Lglobal)进行了实验,以研究它们对使用RetinaNet的学生的影响。如表4所示,局部损失和全局损失均导致了显著的AP和AR改进。进一步,考虑不同大小的目标,我们发现 L f o c a l L_{focal} Lfocal对大尺寸的目标更有利,而 L g l o b a l L_{global} Lglobal对中小尺寸的目标更有利。此外,当结合 L f o c a l L_{focal} Lfocal和 L g l o b a l L_{global} Lglobal时,我们获得了40.4的mAP和56.7的mAR,这表明局部损失和全局损失是互补的。
4.6.2 Sensitivity study of focal distillation
在局部蒸馏中,我们使用真值框对图像进行分离,并利用教师的注意力掩码引导学生。在这一小节中,我们探究局部蒸馏的有效性。如表1所示,我们发现,只在前景或背景上蒸馏都能带来显著的改善。这里我们分析不同的错误类型来考察它们的有效性,如图6所示。借助背景的知识,学生检测器减少了假阳性(false-positive)预测,获得了更高的mAP。相比之下,前景蒸馏有助于学生检测到更多的目标,减少预测的假阴性(false-negative)。总之,研究结果表明,前景和背景都是学生检测器的关键,具有不同的功能。
在本文中,我们利用教师的空间注意力掩码和通道注意力掩码来引导学生关注关键部分。在这里,我们使用RetinaNet进行实验来探索每个掩码的效果,如表5所示。每个注意力掩码都提高了性能,尤其是空间注意力掩码带来了2.6的mAP增益和2.2的mAR增益。并且两种掩码结合起来效果最好。实验表明,两种注意力掩码都有助于学生表现更好。
4.6.3 Sensitivity study of global distillation
在全局蒸馏中,我们重建不同像素之间的关系,以弥补局部蒸馏中缺失的全局信息,并将其从教师检测器迁移到学生检测器。在本小节中,我们仅在Faster R-CNN上使用利用GcBlock或Non-local模块的全局蒸馏来蒸馏学生,如表6所示。结果表明,两种关系方法都提取了有效的全局信息,给学生带来了有效的改进,尤其是GcBlock带来了3.1 mAP的提升。
4.6.4 Sensitivity study of T T T
在公式7和公式8中,我们使用温度超参数 T T T来调整特征图中像素和通道的分布。当 T < 1 T<1 T<1和 T > 1 T>1 T>1时,像素和通道之间的差距分别变大和变小。这里我们进行了几个实验来研究 T T T的影响。如表7所示,当 T = 0.5 T=0.5 T=0.5时,相比于 T = 1 T=1 T=1没有分布调整时的蒸馏,学生获得了0.2 mAP和0.2 mAR的提升。当 T = 0.5 T=0.5 T=0.5时,高价值的像素和通道被更多地强调,这有助于学生检测器更关注这些关键部分,从而表现更好。同时还观察到,最坏的结果与最好的结果相比只有0.4 mAP的下降,说明我们的方法对超参数 T T T并不敏感。
5. Conclusion
在本文中,我们指出学生检测器需要同时关注来自教师的关键部分和全局关系。然后,我们提出了局部和全局蒸馏(FGD)来指导学生检测器。在各种检测器上的大量实验证明了我们的方法简单高效。此外,我们的方法仅仅基于特征图,因此FGD可以很容易地应用于两阶段检测器、anchor-based的单阶段检测器和anchor-free的单阶段检测器。分析表明,学生获得了与教师非常相似的特征,用教师的参数初始化学生可以带来另一个改进。然而,我们对如何获得更好的头部的理解是初步的,留待以后的工作。
转载:https://blog.csdn.net/qq_43631268/article/details/129115131