Dual Relation Knowledge Distillation for Object Detection用于目标检测的双关系知识蒸馏

news2024/12/25 12:32:54

摘要

有两个关键点导致检测任务的蒸馏性能不佳。一是前景和背景特征严重不平衡,二是小对象缺乏足够的特征表示为了解决上述问题,我们提出了一种新的知识蒸馏方法——双关系知识蒸馏(DRKD),包括逐像素关系蒸馏和逐实例关系蒸馏逐像素关系蒸馏将像素特征嵌入图空间中,并利用图卷积捕获全局像素关系。通过提取全局像素关系,学生检测器可以了解前景和背景特征之间的关系,避免了由于特征不平衡问题而直接提取特征的困难。此外,我们发现实例关系为小对象的独立特征之外补充了有价值的知识。为此,设计了基于实例的关联蒸馏,计算不同实例之间的相似度,得到关联矩阵。更重要的是,关系过滤模块被设计用来突出显示有价值的实例关系。所提出的双关系知识蒸馏具有通用性,可以很容易地应用于一级和两级检测器。

介绍

我们提出了双关系知识蒸馏(DRKD),使学生模型能够从教师模型中学习像素和实例之间的关系。我们发现,逐像素关系对前景和背景特征之间的不平衡不敏感,可以使检测器聚焦于前景,如图1所示。此外,实例关系可以提供独立特征之外的有价值的知识,特别是对于小对象

因为小实例之间有很多镶嵌,这意味着实例关系补充了小对象的独立特征之外的有价值的知识,因为设计了两种关系蒸馏:像素关系蒸馏和实例关系蒸馏。

提出了逐像素关系蒸馏,使检测器专注于前景特征的学习。我们采用图卷积来捕获全局像素关系。图卷积比注意力模块捕获更好的特征表示,以提高模型的性能。首先,坐标空间中的特征嵌入到图空间中,然后,图卷积用于捕获图空间中的关系特征。最后,将关联特征投影会原始坐标空间。输出特征成为逐像素关系特征。通过提取逐像素关系特征,检测器可以更关注前景特征的学习,如图1所示,解决了不平衡问题。

基于小实例与其他大小的实例具有更丰富的关系这一事实,面向实例的关系蒸馏被设计为为小实例获得更丰富的表示。首先,应用嵌入高斯函数来评估不同实例之间的关系,该函数在注意机制中得到了广泛的应用。计算不同大小实例之间的相似度,得到关联矩阵。此外,在实验中我们观察到不同的关系对蒸馏有不同的贡献。因此,关系筛选器模块被设计用来增强有价值的关系。过滤后的关系矩阵被蒸馏,以将实例关系从教师检测器转移到学生检测器。同时,利用裁剪后的前景特征进行蒸馏,进一步提高框架的检测精度。实验证明,基于实例的关系蒸馏可以提高小目标的检测精度。本工作的贡献可归纳为以下几点:

1、我们提出了基于图卷积的逐像素关系蒸馏。与注意机制相比,图卷积可以更有效地捕获全局上下文,达到更好的蒸馏效果。

2、我们提出了基于实例的关系蒸馏,以获得更丰富的小实例表示。实验表明,基于实例的关系蒸馏可以提高小目标的检测精度

方法

提出了双关系知识蒸馏(DRKD),使学生检测器能够从教师检测器那里学习逐像素和逐实例关系,如图3所示。

image-20240401203125013

逐像素关系蒸馏

逐像素关系蒸馏帮助学生检测器学习前景和背景特征之间的关系,解决特征不平衡问题。采用图卷积模块GloRe来捕获全局像素关系。它可以比注意力机制更有效地捕获全局上下文,达到更好的蒸馏效果。

具体来说,我们从教师和学生的backbone中提取多尺度特征,并将其提供给不同的GloRe模块,用于捕获全局像素关系。然后,提取逐像素的关系特征将全局关系从教师转移到学生呢。蒸馏损失如式(1)所示,此外,为了最小化学生模型和教师模型之间的特征差异,在学生模型一侧加入自适应卷积。
L P R = 1 k ∑ i = 1 k ∣ ∣ ϕ ( t t ) − f ( ϕ ( s i ) ) ∣ ∣ L_{PR} = \frac{1}{k} \sum_{i=1} ^k ||\phi (t_t) - f(\phi(s_i))|| LPR=k1i=1k∣∣ϕ(tt)f(ϕ(si))∣∣
k是特征个数,image-20240401204022574分别表示来自教师和学生的特征。image-20240401204048658表示GloRe模块。f表示自适应卷积。如图3(b)所示,GloRe包含三部分:图嵌入、图卷积和重投影。首先将坐标特征投影到低维图特征空间中。对于输入特征image-20240401204251154,我们首先通过线性层将其投影变换为image-20240401204301516。然后通过image-20240401204353104的投影得到图节点特征image-20240401204404932,投影矩阵为image-20240401204412653。投影方法是原始特征的线性组合,如式(2)所示。图节点特征可以聚合多个区域的信息:

image-20240401204509230

image-20240401204539494是一个可学习的投影矩阵。V是图节点特征。

基于图节点特征,利用图卷积来捕获节点之间的关系,该关系由方程(3)定义。

image-20240401204644556

A为邻接矩阵,随机初始化,随训练更新。在训练过程中,邻接矩阵学习节点间边的权重。边的权值反映了节点之间的关系。基于邻接矩阵和状态更新矩阵。更新节点特征,得到关系感知特征。

image-20240401204850051是单位矩阵,image-20240401204921061是节点邻接矩阵,是图节点特征。image-20240401204959506表示状态更新矩阵。image-20240401205022359表示图空间中的关系感知特征。

最后,将关系感知特征投影回坐标特征空间,如式所示。

image-20240401205112785

image-20240401205149401是逐像素关系矩阵,B是可学习投影矩阵,image-20240401205220246表示图空间中的关系感知特征。

实例关系蒸馏

基于小实例与其他大小的实例具有更丰富的关系这一事实,面向实例的关系蒸馏被设计为为小实例获得更丰富的表示。采用嵌入高斯函数对实例特征的相似度进行建模。此外,我们还设计了一个关系过滤模块来强调有价值的关系。面相实例的关系模块如图4所示。

image-20240401205512244

实例特征提取

为了捕获与实例相关的关系,我们需要提取实例特征。根据输入与特征图的比值,利用目标坐标的GT从特征图中提取实例特征。提取的实例特征被调整为相同的大小。如等式(5):

image-20240401205726138

image-20240401205834933表示ROI Align。x为输入特征映射。C表示GT的坐标。o表示输出特征的大小。

实例关系模块和蒸馏

如图4所示,输入特征X,N表示同一图像中的实例数,D表示实例特征的通道,K表示实例特征映射的大小。面向实例的关系模块可以表示为:

image-20240401210055335

image-20240401210145526其中表示实例特征,image-20240401210150966表示全连通层。image-20240401210156276是图4关系过滤器中关系矩阵的权重。image-20240401210231040表示图4的关系过滤器。image-20240401210309759表示image-20240401210315621image-20240401210323174之间的实例关系特性。我们将实例关系蒸馏函数定义为(7):

image-20240401210417218

此外,实例特征也有助于解决前景和背景之间的不平衡问题。实例蒸馏也使检测器关注地学习前景特征并加速学生检测器的收敛。因此,我们直接提取实例特征,进一步提高蒸馏性能。L2损失用于蒸馏。在学生检测器的一侧应用自适应卷积,以最小化学生和教师之间的特征差异:

image-20240401210847026

总损失

image-20240401210859949

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

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

相关文章

鸿蒙Lottie动画-实现控制动画的播放、暂停、倍速播放、播放顺序

介绍 本示例展示了lottie对动画的操作功能。引入Lottie模块,实现控制动画的播放、暂停、倍速播放、播放顺序、播放到指定帧停止或从指定帧开始播放、侦听事件等功能,动画资源路径必须是json格式。 效果预览 使用说明: 进入页面默认开始201…

【Python刷题】将有序数组转换为二叉搜索树

问题描述 给你一个整数数组 nums ,其中元素已经按 升序 排列,请你将其转换为一棵 平衡 二叉搜索树。 高度平衡的意思是:二叉树是一颗满足“每个结点的左右两个子树的高度差的绝对值不超过1”的二叉树。 示例 1: 输入&#xf…

MVC与三层架构理解

1. JSP的发展 早期只有Servlet,只能使用response输出标签数据,非常麻烦后来。JSP的出现,简化了 Servlet的开发。但是过度的使用JSP,在JSP中写大量的java代码,又前端的页面,造成难以维护,难于分…

pytorch-tpu/llama推理优化之input prompt bucketing

数据更新: python脚本(注意分支): HLO图分析KV-Cache更新: KV-Cache作为HLO图的输入输出:bf16[1,2048,32,128]{3,2,1,0} 128x, 2x32x2 参考链接 notes for transformer introduction by an Italian t…

HUAWEI 华为交换机 配置 Eth-Trunk 接口流量本地优先转发示例(堆叠)

组网需求 说明 S5720I-10X-PWH-SI-AC 和 S5720I-6X-PWH-SI-AC 不支持此配置。 如 图 3-23 所示,为了增加设备的容量采用设备堆叠技术,将 Switch3 和 Switch4通过专用的堆叠电缆链接起来,对外呈现为一台逻辑交换机。为了实现设备间的备份、…

四、MySQL数据库基础(约束详解!)

一、约束 (一)约束概述 1.概念:约束是作用于表中字段上的规则,用于限制存储在表中的数据。 2.目的:保证数据库中数据的正确、有效性和完整性。 3。分类: 注意:约束是作用于表中字段上的,可以在创建表/修改表的时候添…

OpenHarmony实战开发-如何使用rating组件实现星级打分功能。

介绍 本篇Codelab将引导开发者使用rating组件实现星级打分功能。 相关概念 rating组件:评分条,可根据用户判断进行打分。 环境搭建 软件要求 DevEco Studio版本:DevEco Studio 3.1 Release及以上版本。OpenHarmony SDK版本:A…

vuepress-theme-hope 添加谷歌统计代码

最近做了个网站,从 cloudflare 来看访问量,过去 30 天访问量竟然有 1.32k 给我整懵逼了,我寻思不应该呀,毕竟这个网站内容还在慢慢补充中,也没告诉别人,怎么就这么多访问?搜索了下, cloudflare 还会把爬虫的请求也就算进来,所以数据相对来说就不是很准确 想到了把 Google An…

css酷炫边框

边框一 .leftClass {background: #000;/* -webkit-animation: twinkling 1s infinite ease-in-out; 1秒钟的开始结束都慢的无限次动画 */ } .leftClass::before {content: "";width: 104%;height: 102%;border-radius: 8px;background-image: linear-gradient(var(…

稀碎从零算法笔记Day36-LeetCode:H指数

有点绕的一个题,题目描述的有点奇怪(可以看下英文?) 题型:数组、模拟 链接:274. H 指数 - 力扣(LeetCode) 来源:LeetCode 题目描述 给你一个整数数组 citations &am…

如何查找局域网内连接设备的IP地址?

如何查找局域网内连接设备的IP地址? 第一种方法:通过CMD指令 在电脑开始菜单中找到运行,点击打开,输入CMD,然后回车,如下图所示, 如下图所示,输入ipconfig/all,然后回车, 如下图所示,此时会扫描出所有的连接设备的IP地址、MAC地址以及网关等信息, 这时候在cmd命令窗…

php反序列化漏洞——phar反序列化漏洞

一.什么是phar文件 类比java语言 JAR是开发Java程序一个应用,包括所有的可执行、可访问的文件,都打包进了一个JAR文件里使得部署过程十分简单。 PHAR("Php ARchive")是PHP里类似于JAR的一种打包文件 对于PHP 5.3 或更高版本,Ph…

前端常用代码整理— js,jquery篇(3)

目录 1.判断是否是json字符串 2.获取当前网址 3.将文本复制到剪贴板 4.获取一个月的天数 5.展平数组 6.要修改getRandomItem函数以返回数组中的随机两个元素,可以尝试以下代码 1.判断是否是json字符串 const isJson str > {try {JSON.parse(str);return …

STM32之HAL开发——QSPI协议介绍

QSPI协议 OSPI是Oueued SPl的简写,是Motorola公司推出的 SPI接口的扩展,比SPI应用更加广泛。在 SPI协议的基础上,Motorola公司对其功能进行了增强,增加了队列传输机制,推出了队列串行外围接口协议(即 OSPI协议)。OSPI…

微服务(基础篇-008-es、kibana安装)

目录 05-初识ES-安装es_哔哩哔哩_bilibilihttps://www.bilibili.com/video/BV1LQ4y127n4?p81&vd_source60a35a11f813c6dff0b76089e5e138cc 1.部署单点es 1.1.创建网络 1.2.加载镜像 1.3.运行 2.部署kibana 2.1.部署 2.2.DevTools 3.安装IK分词器 3.1.在线安装ik…

机器学习 - 手动实现 ReLU 和 Sigmoid

直接上代码 import torch import matplotlib.pyplot as pltA torch.arange(-10, 10, 1, dtypetorch.float(32)) def relu(x):return torch.maximum(torch.tensor(0), x) plt.plot(relu(A))结果如下: import torch import matplotlib.pyplot as pltA torch.aran…

基于架构的软件开发方法_1.概述和相关概念及术语

1.体系结构的设计方法概述 基于体系结构的软件设计(Architecture-Based Software Design,ABSD)方法。ABSD方法是由体系结构驱动的,即指由构成体系结构的商业、质量和功能需求的组合驱动的。 使用ABSD方法,设计活动可以…

Reversing Linked List

Given a constant K and a singly linked list L, you are supposed to reverse the links of every K elements on L. For example, given L being 1→2→3→4→5→6, if K3, then you must output 3→2→1→6→5→4; if K4, you must output 4→3→2→1→5→6. Input Specifi…

Ubuntu joystick 测试手柄 xbox

Ubuntu joystick 测试手柄 xbox 测试使用Ubuntu20.04 测试环境在工控机 安装测试 实际测试使用的手柄是北通阿修罗2pro 兼容xbox Ubuntu20.04主机 连接手柄或者无线接收器后查看是否已经检测到: ls /dev/input找到输入中的 js0 即为手柄输入 需要安装joysti…

new mars3d.layer.XyzLayer({的rectangle瓦片数据的矩形区域范围说明

new mars3d.layer.XyzLayer({的rectangle瓦片数据的矩形区域范围说明 2.这个xyz图层的矩形区域范围rectangle从图层文件中无法获取,但是看图层文件可以知道这个是12-21级的数据。 3.一般这个图层数据文件服务会有提供相应的rectangle范围,在服务的xml文…