ScaleKD: Distilling Scale-Aware Knowledge in Small Object Detector

news2024/11/18 21:33:27

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的简要概述,其中我们对各个模块进行了如下说明:

image-20240310161916099

(1)一个尺度解耦的特征蒸馏模块,显示地将不同尺度的表示转移到学生检测器。

(2)一个跨尺度的助手,可以在复杂的老师和紧凑的学生之间提炼出对象大小的知识。

Definition。在本节中,我们将提供用于描述我们的方法的组件的概念。

考虑到一个目标检测器image-20240310162509796作为学生,另一个预测器image-20240310162518673作为教师,其中d和k是两个特征维。前者是计算效率高的网络,但检测性能相对较低。后者是较重的模型,具有较高的检测性能。给出一个训练数据集image-20240310162704903对于分布P在一组实例X上。对于小目标检测,改进SOD的常用方法是利用高分辨率图像作为输入。在我们的例子中,我们只考虑在教师模型中使用高分辨率图像image-20240310163335620,标准分辨率图像用于学生模型。

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))
image-20240310171850073image-20240310171854889分别是教师和学生模型,image-20240310171903159是一个映射函数,用于对齐学生到教师的特征映射的维度,image-20240310181819955是任意有界损失,即范数距离。

Motivation尽管用于目标检测的最先进的KD已经开发了各种技术,例如焦点蒸馏,以提高转移知识的质量,但这些方法在蒸馏过程中平等地对待所有大小不同的对象。我们发现这些方法在SOD上的主要缺点是不同对象上的特征表示是纠缠的。当对象大小不一时,这是一个可行的解决方案。但是,检测任务中对象的大小变化很大。小对象的特征表示可能受到大区域背景和其他相对较大尺寸实例的影响。为了解决这个问题,我们提出了尺度解耦特征(SDF)蒸馏模块来显示地解耦教师的特征映射。

方法

如前所述,我们的目标是把教师检测器的整个特征表征解成多个部分,每个部分只处理类似的对象大小。据推测,这样的操作可以迫使学生检测器不仅要理解整个图像的全局知识,还要理解特征尺度的知识。

具体地说,我们得到了一个特征嵌入image-20240310183023015image-20240310183034602在骨干网的最后阶段为教师和学生网络。我们打算在不同的输入尺度上充分利用特征表示。因此,我们采用多分支结构,其中每个分支使用不同扩张速率的卷积层。值得注意的是,该模型倾向于以较小的膨胀率关注内核的小对象,反之亦然。在实践中,我们使用ResNet中的残差块,它由三个连续的卷积层组成,即1x1,3x3和1x1,以及一个跳跃连接。对于3x3卷积,我们在三个单独的分支上使用三种不同的扩张率{1,2,3}。适配器层,通常是多层感知(MLP)层,堆叠在这个比例解耦的特征模块之前,以对齐教师和学生模型之间的特征表示的维度。

通常,可以通过任意距离最小化损失,将教师模型的知识在指定的分支,即扩展率为1的3x3卷积层,匹配到学生模型中相应的特征分支。一个缺点是这些操作可能会占用大量内存。因此,我们从神经架构搜索中的权值共享网络中汲取灵感,采用权值共享尺度解耦特征。这是基于所有三分之都有相同的操作符这一事实。事实上,我们只为三个分支保存一组权重,大大降低了训练内存成本。

我们还注意到,使用三个单独的损失来匹配教师和学生模型之间的三个平行分支可能会导致练习者在超参数调整上花费不必要的精力。因此,对于每个分支,我们使用一个平坦层,即多层感知器,并将是哪个平坦层连接在一起。在蒸馏过程中,我们采用单一的l2损失(在后面的小姐中表示为image-20240310184944315)来最小化这个连接的平坦层在教师和学生之间的距离,所提出模块的概述如图2所示。值得注意的是,学生的尺度解耦模块反映了教师的对应特征模块。

image-20240310185223000

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)
image-20240310190001742表示学生网络的回归输出,image-20240310190155864表示教师网络的预测。image-20240310190253603与方程1相同,其中可以应用于任何有界损失。通常,这个有界损失可以是image-20240310191439788、smoothed l1或l2损失,这取决于我们对学生预测和教师输出之间的误差进行加权的惩罚程度。

**Motivation.**小目标和通用目标的一个关键区别是SOD对噪声边界框很敏感。显然,教师检测器无法对每个物体做出完美的预测。在一般检测器中,尽管不准确,但学生模型仍然可以从教师对边界框的预测中检索到有信息的知识。然而,对于小目标,教师模型中的噪声边界盒预测可能会混淆学生模型,从而降低SOD性能。我们故意添加一个轻微的偏差(沿着对角线方向6和12像素),并比较了vanilla教师和稍微受干扰的教师在小尺度物体上的mAP。如表1所示,在RetinaNet基线上,当增加扰动时,学生的小物体AP(APs)持续下降,说明学生检测器对教师SOD边界框预测的敏感性。因此,要构建一个值得信赖的SOD回归蒸馏模块,需要将教师位置框知识的不利影响降到最低。这并不意味着教师的预测必须是完美的——否则,我们可以直接用ground truth来监督学生——我们只需要改进教师的输出,以确保他们的知识对学生有帮助。

方法

为了解决上述问题,我们提出了跨尺度助手(CSA),它可以提炼教师的知识,使学生模型能够获取不同尺度对象上的指导性知识。

我们的方法很简单——通过交叉注意力模块建立CSA。在交叉关注过程中,在计算教师知识中的KQ注意时生成一系列键和查询token,然后与学生模型的输出值张量进行映射,从而通过每个相应的查询获得特征中的关注区域。该过程在每个学生金字塔尺度上进行,以检索基于区域的信息特征。

一种天真的选择是使用简单的交叉注意[8]。然而,先前的研究发现,标准的交叉注意力可以重复地集中在不同头部的显著区域。因此,当图像中出现较大的物体时,交叉注意会将注意力转移到这些较大物体上,而忽略较小物体。为此,与普通的交叉注意相比,我们开发了一个多尺度交叉注意层,如图3所示。

image-20240310202954232

注意,交叉关注提取全局信息——对于每个查询键对,生成一个值以突出显示响应最迅速的区域。然后,我们将查询键对拆分为多个子对,其中每个子对表示一组对象尺度。因此,我们的多尺度查询键可以强制注意模块关注不同尺度的区域,从而使所有对象,特别是小对象都能参与到特征学习过程中。

特别是,给出老师的输入顺序image-20240310203357014image-20240310203404549和另一个学生的输入顺序image-20240310203412874image-20240310203418880,为简单起见,我们假设两个张量具有相同的大小。image-20240310203650204投影成查询(Q)和键(K),image-20240310203643190投影成值(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(dh QiKiTVi)
dh是维数。请记住,CSA的目的是在教师和学生模型之间建立跨尺度信息的桥梁,以完善KD中的边界盒监督。因此,我们用分类分支和回归分支叠加Head层来更新这些可学习模块的权值。我们的实证分析表明,所提出的CSA可以对蒸馏过程中的小物体边界盒提供更合适的监督。因为这是一个可学习的模块,在蒸馏过程中,我们通过一个标准的训练方案和检测目标,在每次迭代中,在学生模型之前执行一个权重更新。

在蒸馏中,我们将CSA在分类和回归分支上的知识转移给学生,而不是转移教师的输出知识。对于基于输出的蒸馏目标,我们按照有两个损失函数image-20240311134347442我们注意到我们的方法也是对其他基于输出的方法的补充。例如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
image-20240311134639559是检测器的标准训练损失。

除了优化学生检测器的蒸馏损失和检测损失外,我们还通过共享检测头进行监督,进一步确保指导性表征质量和与学生表征的一致性。

此外,CSA结合了教师和学生的特点。因此,随机初始化的学生检测器会导致CSA训练不稳定。因此,我们首先预热学生模型进行30k次迭代,因为当指导性知识没有充分优化时,它可能是有害的。学生检测器骨干在1x训练计划下冻结在早期的10k迭代中,在2x训练计划下冻结在早期的20k迭代中。

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

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

相关文章

华为数通方向HCIP-DataCom H12-821题库(多选题:121-140)

第121题 以下哪些事件会导致IS-IS产生一个新的LSP? A、引入的IP路由发送变化 B、周期性更新 C、接口开销发生了变化 D、邻接Up或Down 【参考答案】ABCD 【答案解析】 第122题 以下哪些协议既支持网络配置管理又支持网络监控管理? A、Telemetry B、NETCONF C、SNMP D、LLDP …

机器视觉学习(一)—— 认识OpenCV、安装OpenCV

目录 一、认识OpenCV 二、通过pip工具安装OpenCV 三、PyCharm安装OpenCV 一、认识OpenCV OpenCV(Open Source Computer Vision Library,开源计算机视觉库)是一个跨平台的计算机视觉库,最初由威尔斯理工学院的Gary Bradski于199…

Node.Js编码注意事项

Node.js 中不能使用 BOM 和 DOM 的 API,可以使用 console 和定时器 APINode.js 中的顶级对象为 global,也可以用 globalThis 访问顶级对象 浏览器端js的组成 Node.js中的JavaScript组成 相比较之下发现只有console与定时器是两个API所共有的&#xff…

QQ邮箱API的安全性和隐私保护措施有哪些?

QQ邮箱API接口有哪些功能?如何申请电子邮箱API接口? QQ邮箱作为国内广受欢迎的电子邮箱服务,其API接口的安全性和隐私保护措施更是备受关注。那么,QQ邮箱API的安全性和隐私保护措施究竟有哪些呢?接下来,就…

ABAP接口部分-Web Service提供者与消费者

ABAP接口部分-Web Service提供者与消费者 文章目录 ABAP接口部分-Web Service提供者与消费者Web Service提供者Web Service测试配置[SOA网址](https://mysap.goodsap.cn:44300/sap/bc/webdynpro/sap/appl_soap_management )测试 Web Service消费者创建Services Consumer消费者创…

C# 中 Replace 字符串操作方法

在 C# 中,Replace 是一个字符串操作方法,用于替换字符串中的指定字符或子字符串。它接受两个参数:要查找和替换的字符串。Replace 方法在源字符串中查找所有匹配的字符或子字符串,并用指定的替换字符串进行替换。 下面是 Replace…

CV论文--2024.3.7

1、FAR: Flexible, Accurate and Robust 6DoF Relative Camera Pose Estimation 中文标题:FAR:灵活、准确和稳健的6DoF相机相对姿态估计 简介:在计算机视觉领域,估计图像之间的相对相机姿态一直是一个关键问题。通常,…

多核多cluster多系统之间缓存一致性概述

目录 1.思考和质疑2.怎样去维护多核多系统缓存的一致性2.1多核缓存一致性2.2多Master之间的缓存一致性2.3dynamIQ架构同一个core中的L1和L2 cache 3.MESI协议的介绍4.ACE维护的缓存一致性5.软件定义的缓存和替换策略6.动图示例 本文转自 周贺贺,baron,代…

Day6 java 常用API

文章目录 1、Calendar1.1 Calendar日历对象 2、JDK8 之后新增的时间类2.1 LocalDate、LocalTime 、LocalDateTime2.2 ZoneId 、ZoneIdTime2.3 Instant2.4 DateTimeFormatter2.5 Period2.6 Duration 1、Calendar 在了解calendar之前,先用SimpleDateFormat 写一个小例…

企企通解决方案总监汤水卿:打造企业间接采购数字化平台,赋能供应链高效跃进新篇章

3月5日,国务院总理李强在政府工作报告中提出,制定支持数字经济高质量发展政策,积极推进数字产业化、产业数字化,促进数字技术和实体经济深度融合。 近日,企企通受邀参加了2024华南采购峰会,与各行各业的采购…

C#/.NET/.NET Core拾遗补漏合集(持续更新)

前言 在这个快速发展的技术世界中,时常会有一些重要的知识点、信息或细节被忽略或遗漏。《C#/.NET/.NET Core拾遗补漏》专栏我们将探讨一些可能被忽略或遗漏的重要知识点、信息或细节,以帮助大家更全面地了解这些技术栈的特性和发展方向。 GitHub开源地…

电脑右下角出线白色弹窗的解决方法

电脑无缘无故,在右下角出现一个白色弹窗,无法关闭,非常恶心,后来经过查询,发现可能是360之类的弹bug,解决只需要: 1、鼠标左键 点击一下白框 2、键盘输入 AltF4 虽不是技术问题,但解…

Github上那些好用的安全工具(三)

专注于web漏洞挖掘、内网渗透、免杀和代码审计,感谢各位师傅的关注!网安之路漫长,与君共勉! URLFinder 一款快速提取网页信息的工具。该项目可以快速爬取网页上的 URL 地址、JS 文件里的 API 接口等信息,支持批量抓取、…

日期工具的逻辑与数据请求函数的完善

src\libs\utils.js 获取当前日期格式 /*** 获取当前日期格式* param {*} field * returns */ function getNowDate(field) {const date new Date()let year date.getFullYear(),month date.getMonth() 1,day date.getDate()switch (field) {case day:return ${year}-${mo…

Halcon测量专栏-圆度

1.前言 1.1什么是圆度 圆度是指工件的横截面接近理论圆的程度,最大半径与最小半径之差为0时,圆度为0,测量工具为圆度仪,用途是测环形工件的圆度。圆度是限制实际圆对理想圆变动量的一项指标,其公差带是以公差值t为半…

FFmpeg——开源的开源的跨平台音视频处理框架简介

引言: FFmpeg是一个开源的跨平台音视频处理框架,可以处理多种音视频格式。它由Fabrice Bellard于2000年创建,最初是一个只包括解码器的项目。后来,很多开发者参与其中,为FFmpeg增加了多种新的功能,例如编码…

现在可以在Mac桌面上快速打开C知道进行AI提问

看,我的Mac桌面有个C知道组件,点击即可快速打开C知道页面进行提问使用,再也不需要先打开浏览器,再输入csdn.net访问网站,然后点击页面上的C知道入口。 这是如何实现的呢? 首先,我们来做一些准…

A股风格因子看板 (2024.3 第3期)

该因子看板跟踪A股风格因子,该因子主要解释沪深两市的市场收益、刻画市场风格趋势的系列风格因子,用以分析市场风格切换、组合风格景 露等。 今日为该因子跟踪第3期,指数组合数据截止日2024-02-29,要点如下 近1年A股风格因子收益走…

C语言分析基础排序算法——交换排序

目录 交换排序 冒泡排序 快速排序 Hoare版本快速排序 挖坑法快速排序 前后指针法快速排序 快速排序优化 快速排序非递归版 交换排序 冒泡排序 见C语言基础知识指针部分博客C语言指针-CSDN博客 快速排序 Hoare版本快速排序 Hoare版本快速排序的过程类似于二叉树前序…

3.6研究代码(2)

指的是微电网运行参数。 在MATLAB中,randi([0,1],1,48) 会生成一个包含1*48个0或1的随机整数数组。这意味着数组中的每个元素都将是0或1。 MATLAB帮助中心:均匀分布的伪随机整数 - MATLAB randi - MathWorks 中国https://ww2.mathworks.cn/help/matlab/r…