目标检测提升技巧 | 结构化蒸馏一行代码让目标检测轻松无痛涨点(二)

简介: 目标检测提升技巧 | 结构化蒸馏一行代码让目标检测轻松无痛涨点(二)

3、本文方法


3.1、概述

从定义基于特征的蒸馏损失的一般形式开始。出于这项工作的目的,将检测器分为3个部分:

  1. Backbone:用于提取特征
  2. Neck:用于融合不同尺度的特征(通常为FPN)
  3. Head:用于生成回归和分类分数

对于基于特征的KD,在Neck的输出处分别从教师和学生中选择中间特征和。T和S之间基于特征的蒸馏损失为:

image.png

其中H、W、C、分别为高度、宽度、通道数量和Neck输出数量,为第个输出刻度的元件总数。此外,将定义为将和的值映射到[0,1]的归一化函数,在本文的前提下是最小-最大重新缩放层,而是匹配和维度的可选自适应层,这里为1×1卷积层。

作者还引入了缩短符号,它表示在归一化特征上的单个特征位置,,,处的差异测量函数的选择,并包括自适应层,即。因此,使用和分别表示标准化和适应的学生和标准化教师激活,例如。

3.2、测量差异

正如所确定的,的实际标准选择是-范数。惩罚较大的误差,但对较小的误差更能容忍。另一方面,不会过度惩罚较大的误差,但较小的误差会受到更严厉的惩罚。一般形式的-范数由下式给出:

显然,这样的函数不能捕捉特征之间的空间关系。为了捕获二阶信息,需要涉及至少两个特征位置,因此将问题陈述从逐点比较改为局部patch-wise比较。对于每个这样的patch,提取了3个基本属性:平均值、方差和互相关,它们捕捉了和之间的关系。

作者遵循SSIM,并使用大小为11×11和的高斯加权计算这些量。所提出的SSIM框架比较了每个属性,因此由3个分量组成:亮度、对比度和结构,其定义如下:

其中,、表示平均值,、表示方差,表示patch内的协方差。此外,为了防止不稳定性,,,,其中是特征图的动态范围,,。方程(3)的一个重要性质是,由于分母中的二次项,它更重视和的相对变化。

此外,是和之间的零归一化相关系数的直接测量,因此被公式化为它们的协方差和标准差乘积之间的比率。由于方程式(3)的范围为,将3个组成部分结合起来,可实现以下目标:

其中每个函数可以通过超参()进行调整,默认。

由于本文的方法完全基于特征,与Head或边界框标签的类型无关,因此只需使用加权因子将添加到现有检测目标函数(通常为和)中,从而实现以下总体训练目标:



4、实验


4.1、 Comparison with -norms

image.pngimage.png

4.2、Influence of Luminance, Contrast and Structure

image.pngimage.pngimage.png

4.3、Comparison to State-of-the-Art Methods

image.png

4.4、Ablation Studies

image.png


5、参考


[1].Structural Knowledge Distillation for Object Detection.

相关文章
|
传感器 安全
振弦传感器是一种常用于岩土工程安全监测的传感器
振弦传感器是一种常用于岩土工程安全监测的传感器。它可以通过测量振弦的振动频率和振幅来监测土壤或岩石的变形和稳定性情况,从而及时发现潜在的安全隐患。
|
消息中间件 存储 中间件
【消息中间件】详解三大MQ:RabbitMQ、RocketMQ、Kafka
【消息中间件】详解三大MQ:RabbitMQ、RocketMQ、Kafka
12047 1
|
10月前
|
机器学习/深度学习 算法 PyTorch
深度强化学习中SAC算法:数学原理、网络架构及其PyTorch实现
软演员-评论家算法(Soft Actor-Critic, SAC)是深度强化学习领域的重要进展,基于最大熵框架优化策略,在探索与利用之间实现动态平衡。SAC通过双Q网络设计和自适应温度参数,提升了训练稳定性和样本效率。本文详细解析了SAC的数学原理、网络架构及PyTorch实现,涵盖演员网络的动作采样与对数概率计算、评论家网络的Q值估计及其损失函数,并介绍了完整的SAC智能体实现流程。SAC在连续动作空间中表现出色,具有高样本效率和稳定的训练过程,适合实际应用场景。
3275 7
深度强化学习中SAC算法:数学原理、网络架构及其PyTorch实现
|
机器学习/深度学习 算法 安全
基于深度学习的目标检测的介绍(Introduction to object detection with deep learning)
基于深度学习的目标检测的介绍(Introduction to object detection with deep learning)
314 0
|
存储 安全 大数据
深入浅出操作系统:文件系统的秘密
【10月更文挑战第35天】本文将揭示文件系统背后的奥秘,从其基本概念到复杂的实现机制。我们将一起探索文件系统的结构和原理,并了解它如何影响我们的日常计算体验。通过简单的例子和比喻,文章旨在使读者对文件系统有一个清晰而深刻的理解,就像甘地所言:“你必须成为你希望在世界上看到的改变。”让我们一起成为理解操作系统的先行者。
|
JavaScript 前端开发 数据可视化
Jupyter Notebook如何调试?JupyterLab作为DeBug调试工具及调试教程
文章提供了JupyterLab debugger工具的安装和使用教程,包括如何在没有conda环境或已有conda环境下安装所需的软件包,如jupyterlab、Node.js、ptvsd和jupyterlab的debugger插件,以及如何使用debugger进行程序调试。同时,文章还列出了一些常见的安装问题及其解决办法。
3444 1
|
Linux Shell 开发工具
linux 搭建git仓库 git代码仓库 (小团队内部合作)
linux 搭建git仓库 git代码仓库 (小团队内部合作)
771 1
|
机器学习/深度学习 计算机视觉 索引
目标检测无痛涨点新方法 | DRKD蒸馏让ResNet18拥有ResNet50的精度(一)
目标检测无痛涨点新方法 | DRKD蒸馏让ResNet18拥有ResNet50的精度(一)
974 0
|
负载均衡 Dubbo Java
RPC框架-dubbo:架构及源码分析-初篇
在自学或面试dubbo时,相关的问题有很多,例如dubbo 的基本工作原理,这是使用过dubbo后应该知道的。包括dubbo的分层架构、长短链接选择、二进制协议支持;之后是使用方式(服务的注册、发现、调用方式),基础配置(超时时间、线程数),这些是最基本的。 在这些问题之后,就可以继续深入底层:关于连接方式,使用长连接还是短连接?为什么? dubbo的二进制协议支持哪些,之间有什么区别/优缺点等等,也可以考察在使用过程中遇到过哪些问题,是如何解决的。这些都需要深入理解,并且有真实、长时间使用经验。
437 1
|
Java C++
List.of() Vs Arrays.asList()
在上面的示例中,List.of() 用于创建不可变的颜色列表。任何通过添加或删除元素来修改列表的尝试都将导致抛出异常。 Arrays.asList() 当我们想要由指定数组支持的固定大小(可序列化)集合时,请使用此方法。对返回集合的任何更改也将写入原始数组。 java
215 0