DETRs Beat YOLOs on Real-time Object Detection

目录

  • 1、模型架构
    • 1.1高效混合编码器
      • 1.1.1 尺度内特征交互模块AIFI
      • 1.1.2 跨尺度特征融合CCFM
    • 1.2IoU感知查询选择
    • 总结

DETRs在实时目标检测中击败YOLO

问题:DETR的高计算成本,实时检测效果有待提高

解决:提出了一个实时的目标检测器

具体来说,设计了一个高效的混合编码器,通过解耦尺度内的交互和跨尺度融合来有效处理多尺度特征,并提出IoU感知查询选择,通过提供更高质量的初始对象查询编码器,进一步提高性能。

了解的知识:

NMS是目标检测后处理算法,用于消除检测器输出的重叠预测框。操作中,低于阈值的框直接过滤掉,当两个预测框的LoU超过阈值时,得分较低的预测框被舍弃,迭代执行这一过程,直到所以类别的盒子被处理完毕。因此NML的执行时间主要取决于预测框个数和两个阈值超参数。

1、模型架构

在这里插入图片描述
rt - detr概述。我们首先利用主干{S3, S4, S5}的最后三个阶段的特性作为编码器的输入。高效的混合编码器通过尺度内特征交互(AIFI)和跨尺度特征融合模块(CCFM)将多尺度特征转化为图像特征序列。iou感知的查询选择被用来选择固定数量的图像特征作为解码器的初始目标查询。最后,带辅助预测头的解码器迭代优化目标查询,生成框和置信度评分。

1.1高效混合编码器

提高训练收敛速度&性能–>多尺度特征&可变形注意力–>减少计算量

虽然注意力机制改进降低了计算开销,但输入序列长度的增加—》编码器计算量增大,阻碍了DETR的实时实现

高级特征是从具有丰富语义信息的低级特征中提取出来的。直观上看,多尺度特征间的交互是多余的。
在这里插入图片描述
两个模块组成,即基于注意力的尺度内特征交互模块(AIFI)和基于cnn的跨尺度特征融合模块(CCFM)。

1.1.1 尺度内特征交互模块AIFI

AIFI减少了计算冗余,该变量仅在S5上进行尺度内交互。

作者认为对语义特征更丰富的高层特征进行自注意操作,可以捕捉图像中概念实体的关系,用于后续的检测识别。同时认为低级特征与高级特征有交互重复和混淆的风险,所以认为低级特征的尺度内交互是不必要的。(ap值提高了0.4%,快了35%速度

1.1.2 跨尺度特征融合CCFM

在融合路径中插入多个卷积层组成的融合块,融合块的作用是将相邻的特征融合成一个新的特征
在这里插入图片描述
融合块包含N个RepBlocks,两条输出通过主元素添加的方式进行融合,过程如下
在这里插入图片描述
Attn是多头自注意力,reshape与flaten是逆操作

1.2IoU感知查询选择

DETR中的目标查询是一组可学习的嵌入,由解码器优化,并通过预测头映射到分类分数和边界框。然而,这些目标查询很难解释和优化,因为它们没有明确的物理意义。

但由于分类分数和位置置信度分布的不一致,部分预测盒分类分数高但与GT盒不接近,导致分类分数高、IoU分数低的预测盒被选中,而分类分数低、IoU分数高的预测盒被丢弃。这降低了检测器的性能。

为了解决这一问题,我们提出了基于IoU感知的查询选择方法,通过约束模型,在训练过程中对IoU分数高的特征产生高分类分数,对IoU分数低的特征产生低分类分数。因此,模型根据分类分数选择的前K个编码器特征对应的预测框,其分类分数和IoU分数都很高。我们重新制定探测器的优化目标如下:
在这里插入图片描述
其中:y‘和y分别表示预测和真实标记的图像,y’ = {c‘, b’}和y = {c, b}, c和b分别表示类别和边界框。我们将IoU分数引入到分类分支的目标函数中(类似于VFL[47])来实现对阳性样本分类和定位的一致性约束。

总结

问题:目前的实时检测器的推理速度被NMS延迟

为了避免NMS造成的延迟,我们设计了一个实时端到端检测器,其中包括两个关键的改进组件:可以有效地处理多尺度特征和IoU感知查询选择的混合编码器改进了对象查询的初始化。

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

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

相关文章

ChatGPT对软件测试的影响

ChatGPT 是一个经过预训练的 AI 语言模型,可以通过聊天的方式回答问题,或者与人闲聊。它能处理的是文本类的信息,输出也只能是文字。它从我们输入的信息中获取上下文,结合它被训练的大模型,进行分析总结,给…

前端基础3——JavaScript基础用法

文章目录 一、基本使用1.1 内部方式1.2 外部导入方式1.3 css标签调用js脚本(触发事件) 二、Windows对象2.1 对象属性2.2 对象方法 三、数据类型3.1 字符串处理3.2 数组处理3.3 对象处理 四、流程控制4.1 操作符4.2 if判断语句4.3 for循环语句4.4 continu…

机器学习——聚类算法一

机器学习——聚类算法一 文章目录 前言一、基于numpy实现聚类二、K-Means聚类2.1. 原理2.2. 代码实现2.3. 局限性 三、层次聚类3.1. 原理3.2. 代码实现 四、DBSCAN算法4.1. 原理4.2. 代码实现 五、区别与相同点1. 区别:2. 相同点: 总结 前言 在机器学习…

ASCII码 对照表

总256个字符元素 0~255 码值整数据 字符结构 字符元素(内容) 整数结构 码值整数

怎么将pdf合并成一个?将pdf合并成一个的方法

在日常工作和学习中,我们经常会遇到需要将多个PDF文件合并成一个的情况。这不仅能够提高文件管理的便捷性,还能节省存储空间并使阅读更加流畅。那么,怎么将pdf合并成一个呢?在本文中,我将为您介绍几种简单实用的方法&a…

无涯教程-机器学习 - 数据可视化

在上一章中,无涯教程讨论了数据对于机器学习算法的重要性,以了解具有统计信息的数据,还有另一种称为可视化的方式来理解数据。 借助数据可视化,可以看到数据的属性保持什么样的关联,这是查看要素是否与输出相对应的最…

【枚举区间+线段树】CF Ehu 152 E

Problem - E - Codeforces 题意: 思路: 感觉是个套路题 对区间计数,按照CF惯用套路,枚举其中一个端点,对另一个端点计数 对于这道题,枚举右端点,对左端点计数 Code: #include &…

类和对象(中)

💓博主个人主页:不是笨小孩👀 ⏩专栏分类:数据结构与算法👀 C👀 刷题专栏👀 C语言👀 🚚代码仓库:笨小孩的代码库👀 ⏩社区:不是笨小孩👀 🌹欢迎大…

Spring Cloud Gateway的快速使用

环境前置搭建Nacos&#xff1a;点击跳转 Spring Cloud Gateway Docs 新建gateway网关模块 pom.xml导入依赖 <!-- 网关 --> <dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-gateway</artifact…

React 如何获取上一次 state 的值

React 如何获取上一次 state 的值 一、用 ref 存储上一次的 state 类似 usePrevious function usePrevious(value) {const ref useRef();useEffect(() > {ref.current value;});return ref.current; }二、通过 setState 的入参改为函数获取

【ES6】Promise.race的用法

Promise.race()方法同样是将多个 Promise 实例&#xff0c;包装成一个新的 Promise 实例。 const p Promise.race([p1, p2, p3]);上面代码中&#xff0c;只要p1、p2、p3之中有一个实例率先改变状态&#xff0c;p的状态就跟着改变。那个率先改变的 Promise 实例的返回值&#…

知识图谱笔记:TransH

1 TransE存在的问题 一对多 假设有一个关系 "是父亲"&#xff0c;其中一个父亲&#xff08;头实体&#xff09;可能有多个孩子&#xff08;尾实体&#xff09; 父亲 A -> 孩子 1父亲 A -> 孩子 2在 TransE 中&#xff0c;这两个关系会被建模为&#xff1a; A是…

进程控制相关 API-创建进程、进程分离、进程退出、进程阻塞

进程控制相关 API p.s 进程控制中的状态转换 相关 API&#xff0c;用户很少用到&#xff0c;在此不提。 一般来说&#xff0c;这些内核标准 API&#xff0c;在执行出错&#xff08;可能是资源不够、权限不够等等&#xff09;会返回负值&#xff08;比如 -1&#xff09;&#…

【Qt QAxObject】使用 QAxObject 高效任意读写 Excel 表

1. 用什么操作 Excel 表 Qt 的官网库中是不包含 Microsoft Excel 的操作库&#xff0c;关于对 Microsoft Excel 的操作库可选的有很多&#xff0c;包含基于 Windows 系统本身的 ActiveX、Qt Xlsx、xlsLib、LibXL、qtXLS、BasicExcel、Number Duck。 库.xls.xlsx读写平台Qt Xls…

JVM的故事——类文件结构

类文件结构 文章目录 类文件结构一、概述二、无关性基石三、Class类文件的结构 一、概述 计算机是只认由0、1组成的二进制码的&#xff0c;不过随着发展&#xff0c;我们编写的程序可以被编译成与指令集无关、平台中立的一种格式。 二、无关性基石 对于不同平台和不同平台的…

docker命令学习

docker vscode插件出现的问题 docker命令 docker images &#xff08;查看所有的镜像&#xff09; docker ps -a &#xff08;查看所有的容器&#xff09; docker ps &#xff08;查看运行的容器&#xff09; docker run imageID docker run --gpus all --shm-size8g -it imag…

网络安全体系架构介绍

网络安全体系是一项复杂的系统工程&#xff0c;需要把安全组织体系、安全技术体系和安全管理体系等手段进行有机融合&#xff0c;构建一体化的整体安全屏障。针对网络安全防护&#xff0c;美国曾提出多个网络安全体系模型和架构&#xff0c;其中比较经典的包括PDRR模型、P2DR模…

Revit SDK 介绍:AvoidObstruction 避免碰撞

前言 这个例子介绍如何让碰撞在一起的管道避免碰撞&#xff0c;即对管道进行调整。 内容 调整前&#xff1a; 调整后&#xff1a; 从结果来看&#xff0c;所有的碰撞都被调整了。作为一个例子&#xff0c;不会去考虑是否合理&#xff0c;仅仅是展示了一下 Revit API 的能…

我开课了!《机器学习》公益课9月4日开课

我是黄海广&#xff0c;大学老师&#xff0c;我上的一门课叫《机器学习》&#xff0c;本科生学机器学习有点难&#xff0c;但也不是没有可能&#xff0c;我在摸索中&#xff0c;设计适合本科生的机器学习课程&#xff0c;写了教材&#xff0c;录了视频&#xff0c;做了课件。我…

手写Openfeign实现原理——极简版

文章目录 前言Openfeign实现思路前期准备基本依赖项 开始实现自定义注解自定义代理类定义创建代理对象的工厂InstantiationAwareBeanPostProcessor实现bean的注入OpenInstantiationAwareBeanPostProcessor 自定义 feign接口启动类小结 踩坑记录ImportComponent和Configuration区…