知识蒸馏论文阅读:FGD算法笔记

news2024/9/22 19:41:35

标题:Focal and Global Knowledge Distillation for Detectors
会议:CVPR2022
论文地址:https://ieeexplore.ieee.org/document/9879869/
官方代码:https://github.com/yzd-v/FGD
作者单位:清华大学深圳国际研究生院、字节跳动、北京航空航天大学

文章目录

  • Abstract
  • 1. Introduction
  • 2. Related Work
    • 2.1. Object Detection
    • 2.2. Knowledge Distillation
  • 3. Method
    • 3.1. Focal Distillation
    • 3.2. Global Distillation
    • 3.3. Overall loss
  • 4. Experiments
    • 4.1. Dataset
    • 4.2. Details
    • 4.3. Main Results
    • 4.4. Distillation of more detectors with stronger students and teachers
    • 4.5. Better feature with FGD
    • 4.6. Analysis
      • 4.6.1 Sensitivity study of different losses
      • 4.6.2 Sensitivity study of focal distillation
      • 4.6.3 Sensitivity study of global distillation
      • 4.6.4 Sensitivity study of T T T
  • 5. Conclusion

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=1Ci=1Hj=1W(Fk,i,jTf(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\{\begin{matrix} 1,&~~\mathrm{if}~~(i,j)\in r\\ 0,&\mathrm{Otherwise} \end{matrix}\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\{\begin{matrix} \frac{1}{H_rW_r},&~~\mathrm{if}~~(i,j)\in r\\ \frac{1}{N_{bg}},&\mathrm{Otherwise} \end{matrix}\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=1Hj=1W(1Mi,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)=C1c=1CFc(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)=HW1i=1Hj=1WFi,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)=HWsoftmax(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)=Csoftmax(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=1Ci=1Hj=1WMi,jSi,jAi,jSAkC(Fk,i,jTf(Fk,i,jS))2+βk=1Ci=1Hj=1W(1Mi,j)Si,jAi,jSAkC(Fk,i,jTf(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=1Npm=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×105,β=2.5×105,γ=5×105,λ=5×107}给所有的两阶段模型, { α = 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×103,β=5×104,γ=1×103,λ=5×106}给所有的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×103,β=8×104,γ=8×103,λ=8×106}给所有的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的单阶段检测器。分析表明,学生获得了与教师非常相似的特征,用教师的参数初始化学生可以带来另一个改进。然而,我们对如何获得更好的头部的理解是初步的,留待以后的工作。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/359220.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【mircopython】ESP32配置与烧录版本

下载ESP32的Micropython固件 官方连接https://www.micropython.org/download/esp32/ 看了下描述&#xff0c;上面的是IDF4.x系列编译&#xff0c;下面是IDF3.x系列编译&#xff0c;我们默认选新的 下载安装CP2102驱动 CP210x USB to UART Bridge VCP Drivers - Silicon Labs…

自托管提醒平台Noted Reminders

什么是 Noted Reminders ? Noted 是一个简单的自托管应用程序&#xff0c;用于创建使用 Apprise API 推送到设备的提醒。您可以向几乎每个平台发送消息&#xff0c;包括定时电子邮件&#xff01; 什么是 Apprise API &#xff1f; Apprise 允许您向我们今天可用的几乎所有最流…

OpenSumi 是信创开发云的首选

原文作者&#xff1a;行云创新技术总监 邓冰寒 引言 随着云原生应用的日益普及&#xff0c;开发上云也逐步被越来越多的厂商和开发者接受&#xff0c;在这个赛道国内外有不少玩家&#xff0c;国外的 GitHub Codespaces、CodeSandbox&#xff0c;GitPod、亚马逊 Cloud9&#xf…

Pytorch GPU版本简明下载安装教程

1.根据自己的显卡型号下载显卡驱动并安装。这一步会更新你的显卡驱动&#xff0c;也可忽略第1步&#xff0c;如果第2步出现问题&#xff0c;返回执行第1步。 点击这里下载英伟达显卡驱动 2.安装完成后&#xff0c;wincmd打开命令行&#xff0c;输入nvidia-smi&#xff0c;查看…

分享三个可以在家做的正规兼职工作,看到就是赚到

你可以在家做正式的兼职工作。在线兼职工作值得考虑&#xff0c;时间相对自由。在线兼职收入可能不如线下滴滴和外卖立竿见影&#xff0c;但仍然可以坚持收入。有些人比工作工资发展得更高。当然&#xff0c;天上不会有馅饼&#xff0c;不劳无获。那么有哪些正规的兼职可以在家…

【C++】引用、内联函数、auto关键字、范围for、nullptr

引用什么叫引用引用的特性常引用使用场景传值、传引用效率比较引用和指针的区别内联函数auto关键字(C11)基于范围的for循环(C11)指针空值nullptr(C11)引用 什么叫引用 引用不是新定义一个变量&#xff0c;而是给已存在变量取了一个别名&#xff0c;编译器不会为引用变量开辟内…

《python3网络爬虫开发实战 第二版》之基本库的使用-requests的使用 详解

文章目录1 requests库的使用1.1 准备工作1.2 实例引入1. 3 GET请求1.3.1 基本实例1.3.2 抓取网页1.3.3 抓取二进制数据1.3.4 添加请求头1.4 POST请求1.5 响应1.6 高级用法1.6.1 文件上传1.6.2 Cookie设置1.6.3 Session维持1.6.4 SSL证书验证1.6.5 超时设置1.6.6 身份认证1.6.7 …

旅游地如何搭好影视剧“顺风车”

新春伊始&#xff0c;《满江红》《三体》《狂飙》等影视剧给影片取景地带来的关注和旅游热潮引人瞩目——从太原古县城到襄阳古城墙上的“岳”字砖、从宁波博物馆到江门的历史文化街区乃至地方特产新会陈皮……都被影视剧带上了热搜。影视作品与取景地的相互成全由来已久&#…

JavaWab开发的总括以及HTML知识

一、Web开发的总括在这里我来给大家介绍一下Wab开发需要配合哪些前后端的对应语言:首先是Java(Java通常的工作):Wab开发android开发大数据开发另外,Wab开发想要学好就需要配合之前博客中的内容,如:多线程/IO/网络/数据结构/数据库......这里建议学懂前面的内容再往下走.JavaWab…

2023年,都在说软件测试饱和了,大环境不好?为何每年还会增加40万测试员?

最近和一些刚进入软件测试行业的朋友交流&#xff0c;发现了一个有趣的现象&#xff0c;那就是对这个行业很多问题的认识是一致的、片面的&#xff0c;也可以理解为误解。利用你的时间列出他们对这个行业的所有误解&#xff0c;然后结合你多年的工作经验和你交流。毕竟你是从这…

栈的压入,弹出序列-剑指Offer-java

一、题目描述输入两个整数序列&#xff0c;第一个序列表示栈的压入顺序&#xff0c;请判断第二个序列是否为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如&#xff0c;序列 {1,2,3,4,5} 是某栈的压栈序列&#xff0c;序列 {4,5,3,2,1} 是该压栈序列对应的一个弹出序列&a…

2019蓝桥杯真题修改数组 C语言/C++

题目描述 给定一个长度为 N 的数组 A [A_1,A_2, ,A_N]&#xff0c;数组中有可能有重复出现的整数。 现在小明要按以下方法将其修改为没有重复整数的数组。小明会依次修改A_2,A_3, ,A_N当修改 A_i时&#xff0c;小明会检查 A_i是否在 A_1 ∼ A_i−1中出现过。如果出现过&#…

2023年2月访问学者博士后热门国家出入境政策变化汇总

近期关于出国的咨询量日益增多&#xff0c;出入境政策也是其中之一。所以本期知识人网小编汇总了最新访问学者和博士后关注的热门国家及地区入境政策变化&#xff0c;提供给大家。目前各国入境政策大致分为三种&#xff1a;一、 无法入境的国家如&#xff1a;摩洛哥、朝鲜等。二…

iconfont 图标如何在uniapp中的tabBar使用

注意&#xff1a; 小程序并不支持tabBar中 设置 iconfont 1. 材料准备 首先进入字体图标网址&#xff1a;iconfont-阿里巴巴矢量图标库&#xff1b;&#xff08;如果你没有登入&#xff0c;记得登入一下&#xff09; 把图标添加入购物车 添加到购物车之后-&#xff08;右上角…

逻辑回归—分类问题的操作顺序

对于二元分类问题来说&#xff0c;分类的结果和数据的特征之间仍呈现相关关系&#xff0c;但是y的值不再是连续的&#xff0c;是0&#xff5e;1的跃迁。但是在这个过程中&#xff0c;什么仍然是连续的呢&#xff1f;”是概率&#xff0c;概率是逐渐升高的&#xff0c;当达到一个…

JVM12 字节码指令集

1. 概述 2. 加载与存储指令 2.1. 局部变量压栈指令 iload 从局部变量中装载int类型值 lload 从局部变量中装载long类型值 fload 从局部变量中装载float类型值 dload 从局部变量中装载double类型值 aload 从局部变量中装载引用类型值&#xff08;refernce&#xff09; iload_0 从…

从交换机安全配置看常见局域网攻击

前言 构建零信任网络&#xff0c;自然离不开网络准入(NAC)&#xff0c;这就涉及到交换机的一些安全测试&#xff0c;于是有了此文《从交换机安全配置看常见局域网攻击》。 交换机安全配置 如本文标题所说从交换机安全配置看常见的局域网攻击&#xff0c;那么下面提到的各种攻…

leaflet 绘制多个点的envelope矩形(082)

第082个 点击查看专栏目录 本示例的目的是介绍演示如何在vue+leaflet中如何根据多边形的几个坐标点来绘制envelope矩形。 直接复制下面的 vue+openlayers源代码,操作2分钟即可运行实现效果. 文章目录 示例效果配置方式示例源代码(共78行)安装插件相关API参考:专栏目标示例…

【Java】线程的生命周期和状态

一、通用的线程的生命周期&#xff0c;简称&#xff1a;五态模型&#xff1a; 初始状态&#xff1a;指语言层面上的创建线程&#xff0c;操作系统中还没有创建。可运行状态&#xff1a;指线程可以分配CPU执行&#xff0c;这时线程已经在系统中创建成功。运行状态&#xff1a;指…

0元搭建linux服务器(windows笔记本)

0元搭建linux服务器一.windows装Centos71.1 centos7 iso镜像1.2 准备U盘1.3 UltraISO 启动盘制作工具安装1.4 准备一台windows 机器1.5 安装过程二 、连接无线wifi三、固定wifi ip3.1 查看网络状态3.2 查看DNS3.3 查看GATEWAY3.4 设置静态IP四、一键快速安装单机版k8s五、申请域…