Structured Knowledge Distillation for Accurate and Efficient Object Detection

摘要

许多之前的知识蒸馏方法是为图像分类而设计的,在具有挑战性的任务(如目标检测)中失败。本文首先提出了知识蒸馏在目标检测中失败的主要原因是:(1)前景和背景之间不平衡:(2)缺乏对不同像素之间关系的蒸馏。针对这两个问题,提出了一种结构化的知识蒸馏方案,包括注意力引导蒸馏和非局部蒸馏采用注意力引导蒸馏的方法,利用注意力机制找到前景目标的关键像素点,使学生更加努力地学习其特征提出了非局部蒸馏,使学生不仅可以学习单个像素的特征,还可以学习非局部模块捕获的不同像素之间的关系

介绍

我们将知识蒸馏在目标检测上的性能不理想归因于以下两个问题:(1)前景和背景之间的不平衡;(2)缺乏对不同像素之间关系的知识蒸馏。

前景和背景不平衡。图像中背景像素的数量通常大大超过与前景对象相关的像素数量。然而,只有属于前景目标的像素才真正具有用于目标检测的信息。

在传统的知识蒸馏方法中,学生模型通常被训练成平等地模仿所有像素的特征。因此,学生将很大一部分注意力分配到从背景像素中学习教师的知识上,这阻碍了他们学习前景物体的显著特征的能力,结果,这种不平衡严重降低了知识蒸馏的有效性。

为了解决这个问题,我们提出了注意力引导蒸馏,它有选择地从基本前景像素中提取知识。已有研究表明,像素的关注值反映了其在图像中的重要性。基于这一见解,我们的注意引导蒸馏使用注意力图作为度量来确定像素是否属于前景对象。因此,知识蒸馏只适用于这些前景对象,而不是考虑图像中的所有像素。这种方法允许学生模型将其学习努力集中在最相关的前景特征上,有效地解决了不平衡问题。

关系信息缺乏蒸馏。人们普遍认为,不同目标之间的关系信息在目标检测中具有重要的价值。最近的进展,比如非局部模块和关系网络,通过促进这些对象关系的捕获和利用,已经证明了检测器性能的成功改进。尽管取得了这些进展,但现有的目标检测知识蒸馏方法主要侧重于单个像素中提取信息,而忽略了学习像素间关系的关键方面。

为了解决这个问题,我们提出了非局部蒸馏,旨在通过非局部模块捕获学生和教师的关系信息,然后将这些信息从教师提取到学生。由于我们方法中的非局部模块和注意机制仅在训练时需要,因此可以在推理时丢弃它们,以避免额外的计算和存储成本。

由于所提出的方法是基于特征的蒸馏方法,不依赖于特定的检测模型,因此无需任何修改即可直接用于各种检测器。鉴于教师检测器的特征比其预测结果包含更丰富的语义信息,我们的方法优于基于预测的知识蒸馏。

我们还研究了目标检测情境下的师生关系。我们的研究结果表明,目标检测中的知识蒸馏需要具有高平均精度(AP)下的教师模型,这与图像分类领域的结论不同,在图像分类领域,高精度的教师可能会损害学生的表现。这些结果突出了在图像分类以外的任务中进一步探索知识蒸馏的必要。贡献如下

(1)我们提出了注意力引导蒸馏,强调学生在前景对象上的学习,抑制学生在背景像素上的学习。

(2)我们提出了非局部蒸馏,使学生不仅可以从教师那里了解到单个像素的信息,还可以了解到不同像素之间的关系。

(3)我们发现,在目标检测的知识蒸馏中,AP越高的教师往往越有效,这与之前在图像分类领域的结论不同

相关工作

知识蒸馏

最初的知识蒸馏被提出,是学生被训练模仿教师的softmax输出。此后,人们提出了许多方法来讲知识从教师传递给学生,重点关注教师特征、注意机制、FSP、互信息、积极特征、任务导向特征、关系自监督学习知识等当面。继其在图像分类方面取得成功后,研究人员将知识蒸馏应用于各种领域和任务,包括目标检测、语义分割、人脸识别、少镜头学习、增量学习、分布式学习等。

近年来,研究学生和教师在知识蒸馏方面的表现之间的关系日益引起人们的兴趣。Mirzadeh等发现准确率最高的老师不一定是最适合知识蒸馏的老师,因为师生之间的准确率差距太大会阻碍学生的培养。Cho等发现,接受过早期停止训练的教师在知识蒸馏方法往往更有效。此外,Muller等证明,标签平滑可能对知识蒸馏的效率产生负面的影响。此外,还提出了神经网络搜索方法来自动识别最优师生配对。然而,值得注意的是,上述所有关于师生关系的研究主要集中在图像分类任务上。这些发现和实验结果的推广到更具挑战性的视觉任务,如目标检测,仍然在很大程度上是未知的。

知识蒸馏在目标检测领域得到了广泛的关注,目的是提高目标检测器的性能。Chen等人介绍了第一个专门用于目标检测的知识蒸馏方法,该方法设计骨干特征,分类头和回归头的蒸馏损失。Chen等人将知识蒸馏应用于目标检测中的增量学习。此外,一些研究关注于提取教师知识来提高目标检测的定位能力,结果显著提高了性能。

近年来,一些研究发现者发现前景目标与背景目标之间的不平衡是检测蒸馏中的一个关键问题。Dai等人引入了实例知识蒸馏,在目标检测中提取基于特征、基于关系和基于响应的信息。Li等人提出了一种方法,其中只有区域建议网络采用的特征才会受到L2蒸馏损失。Bajestani和Yang提出了用于视频目标检测的时间知识蒸馏,他们引入了一个超参数来平衡前景和背景像素之间的蒸馏损失。Wang等人提出了细粒度特征模仿,即在目标锚点附近提取特征。Guo等人使用梯度来识别前景目标像素,而Du等人则根据分类头的特征丰富度评分来定位待提取的像素。然而,这些方法中的许多都依赖于ground truth、anchor 或bounding box中的注释,这使得它们在不同的检测器之间的可移植性较差。

相比之下,我们的注意力引导蒸馏通过使用无参数注意力机制自适应识别前景目标像素来解决这一挑战。这种注意力图可以很容易地从特征中生成,计算成本最小。因此,我们的方法可以直接应用于各种探测器和任务,而无需修改。

之前的目标检测知识蒸馏方法与我们的注意力引导蒸馏方法的对比如图3所示。

image-20240323145708876

我们强调我们方法在以下四个方面的优势:

(1)我们的注意力引导蒸馏方法利用无参数的注意力机制来识别前景目标像素,而不依赖于ground truth注释、边界框、锚定先验或梯度传播。这使得我们的方法很容易转移到不同类型的探测器。

(2)与以前依赖于边界框的方法不一样,我们的方法为单个像素分配注意力分数,允许他应用于任意形状的对象。

(3)以前的方法只决定像素是否应该被提取,而我们的方法为每个像素分配了一个从0到1的学习优先级,为提取过程提供了更多的信息指导。

(4)除了识别图像中的关键像素外,我们的方法还识别关键通道。我们的消融研究表明,信道掩模的包含显著提高了知识蒸馏的性能,使识别图像中的关键像素和重要通道成为可能。

方法

总体说明

我们方法的细节如图2所示。

image-20240323153938386我们的方法包括两种不同的蒸馏方法:注意力引导蒸馏和非局部蒸馏。在注意力引导蒸馏中,我们首先产生教师和学生的空间和通道注意力图。这是通过分别对通道和空间维度中的特征的绝对值应用平均池化来实现的。随后,我们使用温度参数化的softmax函数对教师和学生的空间和通道注意图进行归一化。接下来,我们将教师和学生的标准化注意力图加在一起,并将结果除以2.此操作产生用于注意力引导蒸馏的掩模。需要注意的是,掩码中的每个元素的范围从0到1,表示不同像素和通道的相对重要性。在计算特征蒸馏损失时,我们利用空间和通道掩码来重新加权不同像素和通道的损失。因此,知识蒸馏损失强调关键像素和通道,而抑制其他像素和通道。

在非局部蒸馏中,我们加入了额外的非局部模块来捕获教师和学生骨干特征中的关系信息。如图6所示,值得注意的是,我们的方法不同于以前的非局部神经网络。在以前的方法中,使用非本地模块来增强骨干特征。然而,在我们的方法中,非局部模块被单独用于知识蒸馏。因此,在推理阶段,这些非本地模块可以被丢弃,以避免额外的计算和存储成本。

为什么在我们的方法中,学生和教师可以有不同的架构

我们的方法允许学生可以与老师有不同的架构,原因有几个。首先,在我们的许多实验中,学生检测器和教师检测器都使用了Faster RCNN风格的检测范式,其中包括通过骨干网络提取图像特征,使用区域建议网络(RPN)计算目标建议,以及使用回归和分类头进行目标定位和分类。考虑到它们的检测管道的相似性,教师检测器学习到的特征也与学生检测器学习到的特征相似,因此,可以应用知识蒸馏。其次,我们的方法专注于骨干网的图像特征提取阶段。检测器之间的大多数差异存在于其他阶段,例如提案生成和标签分配,它们不会直接影响我们的方法。第三,之前的知识蒸馏工作已经证明,学生和教师特征在通道维度、宽度和高度方面的差异可以通过线性特征重塑层(自适应层)来协调。这使得我们的方法可以很好地概括不同的学生——教师配置。然而,正如V-B2节所讨论的,当学生和教师检测器使用完全不同的检测通道(例如RetinaNet学生与Faster rcnn教师),我们的方法可能不那么有效。它们的检测管道的差异导致它们各自的主干提取不同类型的图像特征。在这种情况下,用于教师检测器学习到的特征来训练学生检测器可能会误导学生的训练过程。

构想

注意引导蒸馏image-20240323160703361表示目标检测模型中主干的特征,其中C,H,W分别表示其通道、高度和宽度。那么,空间注意图和通道注意图的生成就相当于找到映射函数image-20240323160759981,请注意,这里的上标s和c用于区分“空间”和“通道“。因为特征中每个元素的绝对值都暗示它的重要性,我们通过对整个通道维度的绝对值求平均值构造image-20240323161054608,通过对宽度和高度的绝对值求平均值得到image-20240323161139796

公式如下:

image-20240323161205745

式中,i,j,k分别表示S在高度、宽度和通道维度上的第i,j,k切片。然而,将来自教师和学生检测器的注意图相加,得到用于注意引导蒸馏的空间注意掩模image-20240323161403448和通道注意掩模image-20240323161409540,即可表示为:

image-20240323161417410

注意这里的上标S和T是用来区分学生和教师的。T是softmax中引入的一个超参数,用于调整注意掩码中元素的分布(见图4和5)。

image-20240323161559032

注意引导蒸馏损失image-20240323161710264由注意转移损失image-20240323161718114和注意掩蔽损失image-20240323161726237两个子模块组成。image-20240323161800264被用来鼓励学生模型模仿教师模型的空间和引导注意力,可以表述为:

image-20240323161805426

image-20240323161900767被用来鼓励学生通过将image-20240323161918676覆盖的image-20240323161931201范式损失来模仿教师模型的特征,可以表示为:

image-20240323161941339

非局部蒸馏。非局部模块是一种通过捕获全局信息全局关系信息来提高神经网络性能的有效方法。在本文中,我们使用非局部模块来捕获图像中像素之间的关系,可以表示为:

image-20240323162136066

式中,r为得到的关系信息,i,j是待计算响应的输出位置的空间索引。image-20240323162253679是空间索引,枚举图像中所有可能得位置。f是计算两个图像关系的两两函数,g是计算单个像素表示的一元函数。现在,我们可以将提出的非局部蒸馏损失作为学生与教师关系信息之间的L2损失,可以表示为image-20240323162453345

总损失函数

我们在方法中引入三个超参数image-20240323162634832来平衡不同的蒸馏损失函数。总损失可以表示为:

image-20240323162640345

总的蒸馏损失是一种与模型无关的损失,它可以直接加到任何检测模型的原始训练损失中。因此,将检测器的原始训练损失(如分类和回归损失)记为image-20240323163406792,即学生检测器的整体训练损失image-20240323163413780

image-20240323163422254

以Faster RCNN为例,image-20240323165906159可以表示为:image-20240323165911661

其中,i为小批量中锚点的索引,image-20240323170050024为锚点i为对象的预测概率。当锚点为正时,真值标记image-20240323170113124。当锚点为负时,真值标记image-20240323170136036image-20240323170221012是表示微词边界框的四个参数化坐标的向量。image-20240323170253400是ground truth框中的一个正anchor。image-20240323170346527是二进制分类(对象 vs.非对象)的log 损失。image-20240323170412525表示回归的平滑L1损失。image-20240323170631064分别是小批量中的样本数量和可能的锚定维数量。

整体损失为:

image-20240323170657040

相关推荐

最近更新

  1. TCP协议是安全的吗?

    2024-03-24 09:56:03       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-03-24 09:56:03       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-03-24 09:56:03       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-03-24 09:56:03       20 阅读

热门阅读

  1. golang 轻量数据库推荐

    2024-03-24 09:56:03       17 阅读
  2. 独孤思维:流量暴涨,却惨遭违规

    2024-03-24 09:56:03       20 阅读
  3. C语言例3-37:赋值类型转换的例子

    2024-03-24 09:56:03       17 阅读
  4. 蓝桥杯刷题--python-28-并查集

    2024-03-24 09:56:03       20 阅读
  5. Golang-web开发好用的依赖库

    2024-03-24 09:56:03       20 阅读
  6. connect 库的介绍、使用及源码分析

    2024-03-24 09:56:03       20 阅读
  7. 模板 前缀和 NC

    2024-03-24 09:56:03       19 阅读
  8. 基于单片机的小区安防控制系统设计

    2024-03-24 09:56:03       17 阅读
  9. 如何在OpenCV中实现实时人脸识别?

    2024-03-24 09:56:03       17 阅读