ScaleKD: Distilling Scale-Aware Knowledge in Small Object Detector在小目标检测器中提取尺度感知知识
摘要
尽管通用目标检测取得了显著的成功,但小目标检测(SOD)的性能和效率仍然令人不满意。与现有的努力平衡推理速度和SOD性能之间的权衡的工作不同,在本文中,我们提出了一种新颖的尺度感知知识蒸馏(ScaleKD),他将复杂的教师模型转移到紧凑的学生模型。为了提高SOD蒸馏过程中知识转移的质量,我们设计了两个新的模块: (1) 一个尺度解耦特征蒸馏模块,将教师的特征表示解耦成多尺度嵌入,使小对象上的学生模型的显示特征模拟成为可能。(2)采用跨尺度辅助方法对有噪声和无信息的边界盒预测学生模型进行改进,这些边界盒预测学生模型可能会误导学生模型,影响知识蒸馏的效果。建立了多尺度交叉注意层来捕获多尺度语义信息,以改进学生模型。
介绍
本着知识蒸馏(KD)在图像数据上取得的显著成功的精神,我们探索了SOD的蒸馏方法。通常,知识蒸馏选择一个复杂的、高性能的模型(教师),它将知识转移给一个紧凑的、低性能的模型(学生)。学生模型可以利用指导性信息增强其表征学习能力。然而,释放SOD的这种潜力需要克服两个挑战:(1)SOD通常受到噪声特征表示的影响。由于小物体的性质,通常在整个图像中占据很小的区域,这些小物体特征表示可能会受到背景和其他尺寸相对较大的实例的污染。(2)物体检测器对小物体上的噪声边界盒容忍度很低。教师模型做出不正确的预测是不可避免的。通常,学生模型可以从教师的不完美预测中取出丰富的暗知识。然而,在SOD中,教师边界盒上的小扰动会显著损害学生检测器上的SOD性能。
为此,我们提出了用于小目标检测的尺度感知知识蒸馏。我们提出的ScaleKD由两个模块组成,一个尺度解耦特征(SDF)蒸馏模块和一个跨尺度助手(CSA),以相应的解决上述两个挑战。SDF的灵感来自于现有特征蒸馏方法的关键缺陷,即不同尺度对象的特征表示在单个嵌入中耦合。这给学生模仿教师模型中的小物体特征带来了困难。因此,所提出的SDF目的是将单尺度特征嵌入解耦为多尺度特征嵌入。多尺度嵌入是通过一个并行的多分支卷积块实现的,每个分支处理一个尺度。我们的SDF可以让学生模型从物体尺度的角度更好地理解特征知识。此外,我们提出一种可学习的CSA来解决教师的噪声边界盒预测对小目标的不利影响。CSA包括一个多尺度交叉注意力模块,其中教师和学生模型的表示被映射到单个特征嵌入中。多尺度查询对讲教师的特征投射到多个尺度上,使得CSA可以保留细粒度和低级细节,这有助于学生模型产生合适的边界框监督。
我们的工作为SOD的工业应用提供了一种实用的方法,并引入了设计尺寸感知KD模块以改进目标检测器的新视角。我们进一步将我们的方法扩展到实例级检测任务,如实例分割和关键点检测,证明了我们的方法在处理视觉任务重小对象方面的优越性。
贡献
(1)我们提出了尺度感知知识蒸馏(ScaleKD),一种新的知识蒸馏框架,在不增加测试时的额外计算成本的情况下,提高了一般检测和SOD性能。
相关工作
知识蒸馏
知识蒸馏已经成为模型压缩最有效的技术之一。他首先训练一个笨重的教师模型,然后将其知识转移到一个轻量级的学生模型。常用的知识蒸馏方法包括:输出蒸馏、logits、bounding box和feature。
我们的工作也与目标检测密切相关,其中知识蒸馏在检测任务中显示出有效性。特别是,Fine-Grained是第一个全面提出目标检测任务的KD框架的工作。FKD是最早采用注意机制对目标检测器进行特征蒸馏的研究。DeFeat基于真值二值掩模对前景特征和背景特征进行解耦,分别对两个特征进行特征蒸馏。FGFI是聚焦蒸馏,它结合了DeFeat和张等的研究成果。ICD在每个实例上都考虑了分类和定位的条件蒸馏。Guo研究了将图像分类器从目标检测器蒸馏到学生检测器,对现有的基于特征的蒸馏方法进行了补充。与ICD相似,GID提出了一个实例选择模块来转移教师最有信息的位置。LGD提出了一个无教师的框架,在没有具体教师模型的情况下提取目标检测器。然而,现有的方法忽略了小目标。本文是第一个专门针对提高一般目标检测的小目标检测性能而设计知识蒸馏的工作。
规模感知知识蒸馏
本节详细介绍了本文提出的蒸馏方法。图1给出了ScaleKD的简要概述,其中我们对各个模块进行了如下说明:
(1)一个尺度解耦的特征蒸馏模块,显示地将不同尺度的表示转移到学生检测器。
(2)一个跨尺度的助手,可以在复杂的老师和紧凑的学生之间提炼出对象大小的知识。
Definition。在本节中,我们将提供用于描述我们的方法的组件的概念。
考虑到一个目标检测器作为学生,另一个预测器作为教师,其中d和k是两个特征维。前者是计算效率高的网络,但检测性能相对较低。后者是较重的模型,具有较高的检测性能。给出一个训练数据集对于分布P在一组实例X上。对于小目标检测,改进SOD的常用方法是利用高分辨率图像作为输入。在我们的例子中,我们只考虑在教师模型中使用高分辨率图像,标准分辨率图像用于学生模型。
3.1 尺度解耦特征蒸馏
Preliminary。现代目标检测器利用FPN从主干的不同层次获取多尺度语义信息,以增强模型在不同目标尺度上的特征学习能力。一种典型的提炼方法是将这些特征的知识从教师传递给学生。一般俩说,我们可以制定这样的蒸馏方法:
L
f
e
a
t
=
l
(
F
T
,
f
(
F
S
)
)
L_{feat} = l(F^T,f(F^S))
Lfeat=l(FT,f(FS))
和分别是教师和学生模型,是一个映射函数,用于对齐学生到教师的特征映射的维度,是任意有界损失,即范数距离。
Motivation尽管用于目标检测的最先进的KD已经开发了各种技术,例如焦点蒸馏,以提高转移知识的质量,但这些方法在蒸馏过程中平等地对待所有大小不同的对象。我们发现这些方法在SOD上的主要缺点是不同对象上的特征表示是纠缠的。当对象大小不一时,这是一个可行的解决方案。但是,检测任务中对象的大小变化很大。小对象的特征表示可能受到大区域背景和其他相对较大尺寸实例的影响。为了解决这个问题,我们提出了尺度解耦特征(SDF)蒸馏模块来显示地解耦教师的特征映射。
方法
如前所述,我们的目标是把教师检测器的整个特征表征解成多个部分,每个部分只处理类似的对象大小。据推测,这样的操作可以迫使学生检测器不仅要理解整个图像的全局知识,还要理解特征尺度的知识。
具体地说,我们得到了一个特征嵌入和在骨干网的最后阶段为教师和学生网络。我们打算在不同的输入尺度上充分利用特征表示。因此,我们采用多分支结构,其中每个分支使用不同扩张速率的卷积层。值得注意的是,该模型倾向于以较小的膨胀率关注内核的小对象,反之亦然。在实践中,我们使用ResNet中的残差块,它由三个连续的卷积层组成,即1x1,3x3和1x1,以及一个跳跃连接。对于3x3卷积,我们在三个单独的分支上使用三种不同的扩张率{1,2,3}。适配器层,通常是多层感知(MLP)层,堆叠在这个比例解耦的特征模块之前,以对齐教师和学生模型之间的特征表示的维度。
通常,可以通过任意距离最小化损失,将教师模型的知识在指定的分支,即扩展率为1的3x3卷积层,匹配到学生模型中相应的特征分支。一个缺点是这些操作可能会占用大量内存。因此,我们从神经架构搜索中的权值共享网络中汲取灵感,采用权值共享尺度解耦特征。这是基于所有三分之都有相同的操作符这一事实。事实上,我们只为三个分支保存一组权重,大大降低了训练内存成本。
我们还注意到,使用三个单独的损失来匹配教师和学生模型之间的三个平行分支可能会导致练习者在超参数调整上花费不必要的精力。因此,对于每个分支,我们使用一个平坦层,即多层感知器,并将是哪个平坦层连接在一起。在蒸馏过程中,我们采用单一的l2损失(在后面的小姐中表示为)来最小化这个连接的平坦层在教师和学生之间的距离,所提出模块的概述如图2所示。值得注意的是,学生的尺度解耦模块反映了教师的对应特征模块。
Cross-Scale Assistant
Preliminary我们的前一节介绍了我们所提出特征蒸馏来解决SOD的挑战。除了特征蒸馏之外,另一种实用的方法是基于输出的KD,它将教师对分类和定位的预测转移给学生作为辅助监督的来源。我们的工作主要集中在边界盒蒸馏,这可以被认为是一个回归问题,一般来说,我们可以将这种蒸馏写成:
L
b
b
o
x
=
l
b
b
o
x
(
R
S
,
R
T
)
L_bbox = l_{bbox}(R^S,R^T)
Lbbox=lbbox(RS,RT)
表示学生网络的回归输出,表示教师网络的预测。与方程1相同,其中可以应用于任何有界损失。通常,这个有界损失可以是、smoothed l1或l2损失,这取决于我们对学生预测和教师输出之间的误差进行加权的惩罚程度。
**Motivation.**小目标和通用目标的一个关键区别是SOD对噪声边界框很敏感。显然,教师检测器无法对每个物体做出完美的预测。在一般检测器中,尽管不准确,但学生模型仍然可以从教师对边界框的预测中检索到有信息的知识。然而,对于小目标,教师模型中的噪声边界盒预测可能会混淆学生模型,从而降低SOD性能。我们故意添加一个轻微的偏差(沿着对角线方向6和12像素),并比较了vanilla教师和稍微受干扰的教师在小尺度物体上的mAP。如表1所示,在RetinaNet基线上,当增加扰动时,学生的小物体AP(APs)持续下降,说明学生检测器对教师SOD边界框预测的敏感性。因此,要构建一个值得信赖的SOD回归蒸馏模块,需要将教师位置框知识的不利影响降到最低。这并不意味着教师的预测必须是完美的——否则,我们可以直接用ground truth来监督学生——我们只需要改进教师的输出,以确保他们的知识对学生有帮助。
方法
为了解决上述问题,我们提出了跨尺度助手(CSA),它可以提炼教师的知识,使学生模型能够获取不同尺度对象上的指导性知识。
我们的方法很简单——通过交叉注意力模块建立CSA。在交叉关注过程中,在计算教师知识中的KQ注意时生成一系列键和查询token,然后与学生模型的输出值张量进行映射,从而通过每个相应的查询获得特征中的关注区域。该过程在每个学生金字塔尺度上进行,以检索基于区域的信息特征。
一种天真的选择是使用简单的交叉注意[8]。然而,先前的研究发现,标准的交叉注意力可以重复地集中在不同头部的显著区域。因此,当图像中出现较大的物体时,交叉注意会将注意力转移到这些较大物体上,而忽略较小物体。为此,与普通的交叉注意相比,我们开发了一个多尺度交叉注意层,如图3所示。
注意,交叉关注提取全局信息——对于每个查询键对,生成一个值以突出显示响应最迅速的区域。然后,我们将查询键对拆分为多个子对,其中每个子对表示一组对象尺度。因此,我们的多尺度查询键可以强制注意模块关注不同尺度的区域,从而使所有对象,特别是小对象都能参与到特征学习过程中。
特别是,给出老师的输入顺序和另一个学生的输入顺序,为简单起见,我们假设两个张量具有相同的大小。投影成查询(Q)和键(K),投影成值(V)。对于以i为索引的不同head,键K和值V被下采样到不同的大小。因此,我们制定了我们的多尺度交叉注意(MSC)如下:
Q
i
=
F
S
W
i
Q
Q_i = F^S W_i^Q
Qi=FSWiQ
K i = M S C ( F T , r i ) W i K . V i = M S C ( F T , r i ) W i V K_i = MSC(F^T,r_i)W_i^K.V_i = MSC(F^T,r_i)W_i^V Ki=MSC(FT,ri)WiK.Vi=MSC(FT,ri)WiV
V i = V i + P ( V i ) V_i = V_i + P(V_i) Vi=Vi+P(Vi)
其中MSC(.,ri)是一个MLP层,用于在第i个head中聚集,下采样率为ri,P(,)是一个深度卷积层,用于投影。与标准交叉注意相比,保留了更多有利于SOD的细粒度和低层次细节。最后,我们计算了注意张量:
h
i
=
S
o
f
t
m
a
x
(
Q
i
K
i
T
d
h
V
i
)
h_i = Softmax(\frac{Q_i K_i^T}{\sqrt{d_h}}V_i)
hi=Softmax(dhQiKiTVi)
dh是维数。请记住,CSA的目的是在教师和学生模型之间建立跨尺度信息的桥梁,以完善KD中的边界盒监督。因此,我们用分类分支和回归分支叠加Head层来更新这些可学习模块的权值。我们的实证分析表明,所提出的CSA可以对蒸馏过程中的小物体边界盒提供更合适的监督。因为这是一个可学习的模块,在蒸馏过程中,我们通过一个标准的训练方案和检测目标,在每次迭代中,在学生模型之前执行一个权重更新。
在蒸馏中,我们将CSA在分类和回归分支上的知识转移给学生,而不是转移教师的输出知识。对于基于输出的蒸馏目标,我们按照有两个损失函数我们注意到我们的方法也是对其他基于输出的方法的补充。例如LD,其中我们所需要做的及时简单地替换蒸馏目标。
综上所述,学生模型的总训练目标是:
L
t
o
t
a
l
=
α
L
f
e
a
t
+
β
L
c
l
s
+
γ
L
b
b
o
x
+
L
d
e
t
L_{total} = \alpha L_{feat} + \beta L_{cls} + \gamma L_{bbox} + L_{det}
Ltotal=αLfeat+βLcls+γLbbox+Ldet
是检测器的标准训练损失。
除了优化学生检测器的蒸馏损失和检测损失外,我们还通过共享检测头进行监督,进一步确保指导性表征质量和与学生表征的一致性。
此外,CSA结合了教师和学生的特点。因此,随机初始化的学生检测器会导致CSA训练不稳定。因此,我们首先预热学生模型进行30k次迭代,因为当指导性知识没有充分优化时,它可能是有害的。学生检测器骨干在1x训练计划下冻结在早期的10k迭代中,在2x训练计划下冻结在早期的20k迭代中。