现有的蒸馏方法忽视了转移有效的方向蒸馏。同时,不同于子任务的蒸馏相互干扰。为了提高轻量化目标检测模型的性能,提出了一种定向对齐实例知识蒸馏(DAK)方法。具体而言,开发了一个角度蒸馏(AD)模块,将圆形光滑标签(CSL)与教师logit相结合,实现有效的定向知识转移。将角距纵横比查找表(AAL)引入到标签分配和重权损失中,以提高离散方式对方向和形状的预测灵敏度。样本校准蒸馏(SAD)通过模拟教师模型中锚点的分布来减少空间偏差。
介绍
近几年,实时AOOD模型在机载和卫星平台上得到了广泛应用。然而,现有的检测模型依赖于复杂结构来提高特征提取能力和场景泛化能力。他们会导致模型参数和FLOPs的显著增加。由于边缘平台有限的计算资源和功耗,这些高性能复杂模型不适合实际应用。轻量级模型虽然复杂度低、速度快,但无法承担高精度的检测任务。因此,迫切需要弥补轻量级模型与复杂模型之间的性能差距。
现有的方法大致可分为两类:轻量化结构设计和模型压缩技术(剪枝、量化、KD)。轻量级结构设计、剪枝和量化可以加快推理和压缩模型参数。然而,它们无法弥合轻量级模型和复杂模型之间的性能差距。为了有效地解决上述问题,提出了KD方法。图1说明了主流蒸馏的基线框架,包括logit模仿和特征模仿方法。Logit模仿,利用教师模型的Logit传递知识,而特征模仿,则利用学生模型来调节教师模型的特征响应。现有的KD方法大多是在上述方法的基础上衍生而来,并引入了遥感图像的特性。
然而,现有的KD方法只关注HBBs。与hbb不同,OBB可以提供准确的方向和位置信息,并减少密集场景中边界框重叠的可能性。如图2所示,说明了HBB和OBB的区别。此外,现有的KD方法通过耦合各种任务来实现知识转移。它使学生模型无法获得子任务的清晰暗知识。
最后,现有KD方法的学生模型通常是低性能模型。他们未能证实KD在高精度检测模型上的有效性。为了解决这些问题,提出了一种定向对齐实例知识蒸馏(DAIK)方法。DAIK由三部分组成:AD模块、角距纵横比查找表(AAL)和样品对准模块蒸馏,如图3所示。AD使用CSL将位置回归转化为位置和角度分类。同时利用教师soft logit进行有效的定向蒸馏。AAL试图通过在动态度量分数中分配权重来解决角度周期性和预测突变的问题。SAL在空间上利用任务对齐学习中的动态对齐分数。它使学生模型能够明确地从教师模型中学习硬样本的评价能力。此外,DAIK框架还应用了高效的LD和分类蒸馏。
(1)为了提高轻量化目标检测模型的性能,提出了一种DAIK框架。它解耦了分类、回归、角度预测和标签分配任务的蒸馏过程,使学生模型能够从教师模型中获得清晰有效的子任务知识。具体来说,AD使用教师的soft logit结合CSL用于使用角度分类实现更有效的定向知识蒸馏。
(2)通过以离散的方式分配实例级权重,开发了一种AAL来优化整个样本分配过程。同时,将AAL引入到三个子任务损失的重加权中,提高了方向和形状的预测灵敏度。
(3)针对教师模型与学生模型评价能力差异导致的标签分配不匹配问题。设计了一种样本比对蒸馏(SAD)方法。它通过显示地在实例级上最小化两个模型的对齐度量分数分布之间的距离来实现空间对齐。
方法
基本框架
为了评估KD的性能,我们使用了一个竞争性和简单的蒸馏框架,如图3所示,本文提出的DAIK基于主流的单级目标检测模型。它由backbone、neck、heads和标签分配。与两阶段目标检测算法相比,单阶段目标检测算法具有更快的推理速度。同时,单阶段算法保留了较高的精度。
我们选择了Efficient-Rep系列作为backbone和neck部件。解耦后的Head进一步分解为3个多任务预测分支:回归分支、分类分支和角度分类分支,避免了每个任务上基于Logit的蒸馏借口效应。分类分支在DAIK中预测对象类别。它还根据置信度分数区分前景和背景。在回归分支中,DFL头将box表示从四元形式转换为概率分布。解耦的头部能够通过其生成的分布形状来表示定位不确定性。更平坦、更分散的分布表明不确定性更高,而更陡峭、峰值更多的分布表明不准确性更低。此外,所产生的边界盒分布可以作为学生检测器的强监督信号。这有助于解决定位模糊的问题,并增强学生网络学习到的特征表示。我们将表示为边界框的回归变量。B表示回归变量的集合(上下左右)。由DFL头产生的一个回归变量在B中的logits分布定义为
,其中n设为15。对于DFL头的n个参数设置,我们保持与广义焦点损失和LD相同的设置。
学生模型和教师模型预测的同一边界框B的四个变量的DFL logits分别定义为。我们利用softmax将
转化为概率分布
和
,其中
是soft温度,softmax表示广义soft最大值。KL散度度量两个分布向量
之间的相似性。
P r e g T = s o f t m a x ( S r e g , T ) P_{reg} ^T = softmax(S_{reg},T) PregT=softmax(