Structured Knowledge Distillation for Accurate and Efficient Object Detection

news2024/11/19 22:38:23

摘要

许多之前的知识蒸馏方法是为图像分类而设计的,在具有挑战性的任务(如目标检测)中失败。本文首先提出了知识蒸馏在目标检测中失败的主要原因是:(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

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

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

相关文章

NLP 笔记:Latent Dirichlet Allocation (介绍篇)

1 问题介绍 假设我们有一堆新闻,每个新闻都有≥1个主题 我们现在只知道新闻的内容,我们希望一个算法,帮我们把这些新闻分类成主题人类可以根据每个每个文章里面的单词判断主题,那计算机怎么做呢? ——>LDA(Latent D…

一文详解Rust中的字符串

有人可能会说,字符串这么简单还用介绍?但是很多人学习rust受到的第一个暴击就来自这浓眉大眼、看似毫无难度的字符串。 请看下面的例子。 fn main() {let my_name "World!";greet(my_name); }fn greet(name: String) {println!("Hello…

HTML元素语义化补充之css函数(三)

文章目录 CSS中的函数css函数–varcss函数–calccss函数–blurcss函数–gradientlinear-gradient的使用 CSS中的函数 ◼ 在前面我们有使用过很多个CSS函数: 比如rgb/rgba/translate/rotate/scale等; CSS函数通常可以帮助我们更加灵活的来编写样式的值; ◼ 下面有几…

亚稳态及其解决办法

异步电路 亚稳态 亚稳态亚稳态的产生原因什么是同步异步信号怎么消除亚稳态 亚稳态 在数字电路中,每一位数据不是1(高电平)就是0(低电平)。当然对于具体的电路来说,并非1(高电平)就是…

学习Python的第一天(下载Python环境和工具Pycharm)

下载工具 PyCharm Community Edition 2023.3.4 下载环境 Python3.10.4 目录 1.环境Python下载 1.1 Python环境变量下载网址: 1.2 下载步骤 2.工具Pycharm下载 2.1 pycharm下载网址 2.2 pycharm下载步骤 1.环境Python下载 1.1 Python环境变量下载网址: Python Releas…

在离线的arm架构kylin v10服务器上使用Kuboard-Spray搭建K8S集群

在离线的arm架构kylin v10服务器上使用Kuboard-Spray搭建K8S集群 在内网项目中需要安装K8S集群,经过调研,选择使用Kuboard-Spray工具搭建K8S集群,降低学习成本,提高安装效率。 为了简化安装使用集群的过程,搭建了私有…

01.家目录及桌面的认识(Linux基本概念)

知识引入: 我们在打开我们的电脑后,直接就可以看到图形化界面,这个图形化的界面就是我们常说的桌面。同时我们的电脑还可以多用户使用,就是在电脑开机的时候,选择用户,输入密码。这就说明,我们的…

java数据结构与算法基础-----字符串------正则表达式的练习案例---持续补充中

java数据结构与算法刷题目录(剑指Offer、LeetCode、ACM)-----主目录-----持续更新(进不去说明我没写完):https://blog.csdn.net/grd_java/article/details/123063846 正则表达式基础:https://blog.csdn.net/grd_java/article/det…

零基础-MySQL数据库的基本操作

①MYSQL数据库基本操作-DDL 1.DDL的解释 DDL(Data Definition Language),数据定义语言,包括以下内容: 对数据库的常用操作 对表结构的常用操作 修改表结构 2.对数据库的常用操作 功能SQL查看所有的数据库show d…

阿猪写作能用吗 #媒体#微信

阿猪写作是一个非常实用的论文写作工具,它不仅能帮助用户快速完成论文写作,还可以提供查重降重的功能,帮助用户确保论文的原创性。在当今社会,论文写作是学术界和科研领域最重要的工作之一,而阿猪写作的出现无疑是给这…

使用阿里云服务器搭建网站教程,超简单10分钟网站上线

使用阿里云服务器快速搭建网站教程,先为云服务器安装宝塔面板,然后在宝塔面板上新建站点,阿里云服务器网aliyunfuwuqi.com以搭建WordPress网站博客为例,来详细说下从阿里云服务器CPU内存配置选择、Web环境、域名解析到网站上线全流…

JVM——运行时数据区

前言 由于JAVA程序是交由JVM执行的,所以我们所说的JAVA内存区域划分也是指的JVM内存区域划分,JAVA程序具体执行的过程如下图所示。首先Java源代码文件会被Java编译器编译为字节码文件,然后由JVM中的类加载器加载各个类的字节码文件&#xff0…

RabbitMQ之Plugins插件----AMQP对接MQTT

1.启用插件 rabbitmq-plugins enable rabbitmq_mqtt 2.检查是否启动成功,打开rabbitmq后台 3.概念: AMQP是由交换器和queue队列组成的消息队列机制,MQTT是由订阅主题组成的消息机制 1.MQTT创建连接时会向rabbitmq创建一个自己的queue&…

信号处理之快速傅里叶变换(FFT)

信号处理之快速傅里叶变换FFT 历史溯源欧拉公式傅里叶级数(FS)傅里叶变换(FT)离散傅里叶级数(DFS)离散时间傅里叶变换(DTFT)离散傅里叶变换(DFT)快速傅里叶变换(FFT)MATLAB中常用的FFT工具FFT中常见的问题 历史溯源 相信很多人知道傅里叶变换,但是很多人对傅里叶变…

【Monero】Onion Monero Blockchain Explorer | 洋葱门罗币区块链浏览器

github:onion-monero-blockchain-explorer Onion Monero Blockchain Explorer特点: 没有cookie,没有网络分析跟踪器,没有image, 开源, 完全用C编写, 显示加密的付款 ID, 显示环签名,…

C# WPF编程-控件

C# WPF编程-控件 概述WPF控件类别包括以下控件:背景画刷和前景画刷字体文本装饰和排版字体继承字体替换字体嵌入文本格式化模式鼠标光标 内容控件Label(标签)Button(按钮) 概述 在WPF领域,控件通常被描述为…

阿里云原生:如何熟悉一个系统

原文地址:https://mp.weixin.qq.com/s/J8eK-qRMkmHEQZ_dVts9aQ?poc_tokenHMA-_mWjfcDmGVW6hXX1xEDDvuJPE3pL9-8uSlyY 导读:本文总结了熟悉系统主要分三部分:业务学习、技术学习、实战。每部分会梳理一些在学习过程中需要解答的问题,这些问题…

一笔画--PTA

文章目录 题目描述思路AC代码 题目描述 输入样例1 3 2 1 2 2 3 输出样例1 Y输入样例2 4 3 1 2 1 3 1 4 输出样例2 N输入样例3 1 0 输出样例3 Y思路 dfs 、欧拉通路、欧拉回路的判定 前导知识 欧拉通路、欧拉回路、欧拉图 无向图: ①设G是连通无向图,则称…

在使用 Java 数据采集时,有哪些需要注意的问题?

近年来,随着网络数据的爆发式增长,爬虫技术在信息收集和数据分析领域发挥着重要作用。而Java作为一种强大的编程语言,其爬虫库和框架也日益受到开发者的青睐。然而,使用Java爬虫也存在一些需要注意的问题。 首先,是合…

【排序算法】实现快速排序值(霍尔法三指针法挖坑法优化随即选key中位数法小区间法非递归版本)

文章目录 📝快速排序🌠霍尔法🌉三指针法🌠挖坑法✏️优化快速排序 🌠随机选key🌉三位数取中 🌠小区间选择走插入,可以减少90%左右的递归🌉 快速排序改非递归版本&#x1…