RT-DETR学习笔记(2)

七、IOU-aware query selection

下图是原始DETR。content query 是初始化为0的label embedding, position query 是通过nn.Embedding初始化的一个嵌入矩阵,这两部分没有任何的先验信息,导致DETR的收敛慢。

 RT-DETR则提出要给这两部分(content query & position query)都加上先验信息;

从memory中取一部分表现好的(类别预测准确 & 预测框定位准确)query作为decoder的输入


存在问题

Efficient DETR,Deformable DETR,DINO这几个方法都是使用类别置信分数从编码器中选择前K个特征,作为目标查询(或位置查询)的初始化。然而,由于检测器需要同时建模目标的类别和位置,这两者共同决定了特征的质量。当前的查询选择方法在所选特征中引入了较高的不确定性,导致解码器的初始化次优。


 解决方法

提出了最小不确定性查询选择(Uncertainty-Minimal Query Selection)方案,该方案通过显式构建和优化编码器特征的模型不确定性(epistemic uncertainty)

目的是让低IOU 的预测框有低的置信度,高IOU的预测框有高的置信度;

memory左边通过位置检测头计算出坐标的相对位置,加上在feature map平铺的anchor得到绝对位置坐标;

右边通过类别检测头得到类别信息,提取top-300(对于每一个query挑选出置信度最高的类别作为query的预测类别,然后再对所有query的预测类别置信度最高的300个query);

让左右两边预测出的坐标与类别计算损失;(损失部分详细解读)


有效性分析

  • 蓝色点---vanilla query selection ,普通的(top-k类别置信度)query选择方案;
  • 红色点---IOU-aware uery selection

越靠近右上角质量越高


代码解读

通过_get_decoder_input()函数生成decoder输入

 通过_get_decoder_input()函数,从memory中挑选出top-300的query;将挑选出来的300个query与denoising部分加噪生成的200个queryconcat在一起从而生成decoder的输入


_get_decoder_input()函数输入

  • memory:hybrid encoder的输出,如下图;

memory,spatial_shape: _get_encoder_input()返回值:


生成anchor

grid_size: 在72*72的feature map上生成的anchor高和宽的默认值是0.05(在归一化特征图尺度下锚框的宽高,剋理解为一个锚框占整个特征图的5%大小);在36*36的feature map上默认是0.05 *2 ; 18*18上默认是0.05*2*2;

通过for循环一次迭代出每一个feature map的尺寸;

 通过meshgrid生成二维网格坐标,组合成(x,y)格式;

将网格坐标加上0.5表示网格的中心位置;

除以宽高对网格坐标进行归一化;

计算每个特征层上的锚框的宽高:低层特征图(72*72)锚框更小,适用于小目标,例如lvl=0时,\wh=0.05;高层特征图(18*18)锚框更大,适用于检测大目标,例如lvl=2,wh=0.05*2*2=0.2;

然后concat  wy和wh,reshape成序列形式,注意这里的xywh都是归一化的形式

注意这部分anchor大小的理解:

S3是72*72,属于低层特征图,归一化后的wh大小是0.05,8是感受野大小,3.6是在72的特征图上anchor大小,相乘得到的28.8是一个anchor投射到原图像上的尺寸大小;

在这三个不同尺度的特征图上,anchor归一化的尺寸不同,但映射回各自的特征图上的实际wh都是一样的;

低层特征图的anchor小,用于检测小目标;

高层特征图的anchor大,用于检测大目标;


 concat 三个特征图归一化后的anchor尺寸;

valid_mask:布尔张量,anchor都在(0.01,0.99)范围内,置为1;超出这个范围被认为是无效anchor,置为0;


使用sigmoid的反函数将anchor映射回实数空间 ,避免模型的梯度会变得非常小(饱和问题),影响训练效果;

将无效anchor的位置置为无穷大;


类别检测头和预测框检测头

topk_ind:通过类别置信度排序选取的top-300在enc_outputs_class 6804 中对应的索引;‘

根据topk_ind索引在enc_outputs_coord_unact提取出对应的300个bbox坐标;

 注意target,有梯度分离操作,保证在反向传播过程中不会影响这部分梯度;

最后的返回值:

target:是denoising部分和IOU-aware部分concat的内容;

reference_points_unact:是denoising部分和IOU-aware部分concat的内容;

target和reference_points_unact是decoder的输入;

enc_topk_bboxes和enc_topk_logitstargettarget需要用来做损失计算;


 八、Decoder

bbox_head:坐标检测头,ModuleList:6,不同的layer使用不同的检测头

score_head:类别检测头,同bbox



 query_pos_head:MLP,用来将坐标位置的xywh编码为256的向量;因为要和内容部分相加,所以尺寸需要保持一致;


 每一层的输出都是下一层的输入:


创建两个列表保存每层decoder的类别输出和坐标输出


Multi-Scale Deformable Attention


DecoderLayer输出

 将decoder的输出经过一个bbox检测头,得到的结果是一个相对与ref_points_detach的偏移量;

ref_points_detach通过sigmoid反函数将值映射回原始值 再加上 bbox检测头得到的偏移量;

相加结果再经过sigmoid得到预测出的绝对位置归一化后的值

得到的这个结果会赋给下一层decoder的输入部分;即下一个decoder会将上一层decoder调整过偏移量后的坐标作为基准坐标;


 完整decoder输出

最后6层Decoder结束后,返回的是每一层的bbox和score 预测结果:

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

fpgafor循环语句使用

genvar i;//循环变量名称 generate for(i0;i<4;ii1)begin:tx//自己定义名称 //循环内容 end endgenerate12位的16进制乘以4就是48位位宽的2进制 因为 222*2(2^4)16

62.基于SpringBoot + Vue实现的前后端分离-驾校预约学习系统(项目+论文)

项目介绍 伴随着信息技术与互联网技术的不断发展&#xff0c;人们进到了一个新的信息化时代&#xff0c;传统管理技术性没法高效率、容易地管理信息内容。为了实现时代的发展必须&#xff0c;提升管理高效率&#xff0c;各种各样管理管理体系应时而生&#xff0c;各个领域陆续进…

网站灰度发布?Tomcat的8005、8009、8080三个端口的作用什么是CDNLVS、Nginx和Haproxy的优缺点服务器无法开机时

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c; 忍不住分享一下给大家。点击跳转到网站 学习总结 1、掌握 JAVA入门到进阶知识(持续写作中……&#xff09; 2、学会Oracle数据库入门到入土用法(创作中……&#xff09; 3、手把…

路由器转发数据报的封装过程

✍作者&#xff1a;柒烨带你飞 &#x1f4aa;格言&#xff1a;生活的情况越艰难&#xff0c;我越感到自己更坚强&#xff1b;我这个人走得很慢&#xff0c;但我从不后退。 &#x1f4dc;系列专栏&#xff1a;网路安全入门系列 目录 路由器转发数据的封装过程 路由器转发数据的封…

webrtc音频模块(三) windows Core Audio API及声音的播放

在前面介绍了ADM(Audio Device Module)&#xff0c;它用于抽象音频设备管理和音频数据采集/播放接口。windows的实现是AudioDeviceWinowCode&#xff0c;它封装了Core Audio APIs实现了对音频设备的操作。 Core Audio APIs windows提供了多种音频操作API&#xff0c;比如最常…

虚拟机桥接模式

主机Win10,虚拟机xp 1.虚拟机设置中选择桥接模式 2.在虚拟机菜单&#xff1a;编辑>虚拟机网络编辑&#xff0c;点击“更改设置”&#xff0c;可以看到三个网卡&#xff0c;这三个网卡分别对应不同的网络共享模式。桥接模式须使用VMnet0&#xff0c;如果没看到这个网卡&…

重温设计模式--享元模式

文章目录 享元模式&#xff08;Flyweight Pattern&#xff09;概述享元模式的结构C 代码示例1应用场景C示例代码2 享元模式&#xff08;Flyweight Pattern&#xff09;概述 定义&#xff1a; 运用共享技术有效地支持大量细粒度的对象。 享元模式是一种结构型设计模式&#xff0…

单机游戏《野狗子》游戏运行时提示dbghelp.dll缺失是什么原因?dbghelp.dll缺失要怎么解决?

《野狗子》游戏运行时提示dbghelp.dll缺失&#xff1a;原因与解决方案 在畅游《野狗子》这款引人入胜的游戏世界时&#xff0c;突然遭遇“dbghelp.dll缺失”的错误提示&#xff0c;无疑会给玩家的探险之旅蒙上一层阴影。作为一名深耕软件开发领域的从业者&#xff0c;我深知此…

CASA模型相关遥感数据及MODIS NDVI、FPAR遥感产品数据时序重建

植被作为陆地生态系统的重要组成部分对于生态环境功能的维持具有关键作用。植被净初级生产力&#xff08;Net Primary Productivity, NPP&#xff09;是指单位面积上绿色植被在单位时间内由光合作用生产的有机质总量扣除自养呼吸的剩余部分。植被NPP是表征陆地生态系统功能及可…

如何在谷歌浏览器中设置桌面快捷方式

在日常使用电脑时&#xff0c;反复在浏览器中输入经常访问的网址不仅耗时&#xff0c;而且降低了工作效率。为了解决这一问题&#xff0c;我们可以通过在主屏幕上创建谷歌浏览器的快捷方式来简化操作。本文将详细介绍如何在Windows和Mac系统中实现这一功能。 一、步骤概述 1. …

SYD881X RTC定时器事件在调用timeAppClockSet后会出现比较大的延迟

RTC定时器事件在调用timeAppClockSet后会出现比较大的延迟 这里RTC做了两个定时器一个是12秒,一个是185秒: #define RTCEVT_NUM ((uint8_t) 0x02)//当前定时器事件数#define RTCEVT_12S ((uint32_t) 0x0000002)//定时器1s事件 /*整分钟定时器事件&#xff0c;因为其余的…

UE5喷涂功能

许多FPS/TPS 游戏都有喷涂、涂鸦功能 其实原理很简单&#xff0c;就是利用了延迟贴花实现的 我们从网上随便找一张图 创建一个材质&#xff0c;材质域选择延迟贴花 混合模式选择半透明&#xff0c;自发光强度可以看感觉调整 材质做好之后编译保存&#xff0c;新建一个Actor…

攻防世界 ics-06

开启场景 可以交互的按钮不是很多&#xff0c;没有什么有用信息&#xff0c;查看页面源代码找到了index.php &#xff0c;后面跟着“报表中心” 传参访问 /index.php 看到了参数 id1&#xff0c;用 burp 抓包爆破&#xff08;这里应该不是 sql 注入&#xff09; 2333 的长度与众…

Flutter 异步编程简述

1、isolate 机制 1.1 基本使用 Dart 是基于单线程模型的语言。但是在开发当中我们经常会进行耗时操作比如网络请求&#xff0c;这种耗时操作会堵塞我们的代码。因此 Dart 也有并发机制 —— isolate。APP 的启动入口main函数就是一个类似 Android 主线程的一个主 isolate。与…

RT-DETR融合[CVPR2023]FFTformer中的FSAS模块

RT-DETR使用教程&#xff1a; RT-DETR使用教程 RT-DETR改进汇总贴&#xff1a;RT-DETR更新汇总贴 《Efficient Frequency Domain-based Transformers for High-Quality Image Deblurring》 一、 模块介绍 论文链接&#xff1a;https://arxiv.org/abs/2211.12250 代码链接&…

新手SEO指南如何快速入门与提升网站排名

内容概要 搜索引擎优化&#xff08;SEO&#xff09;是提高网站可见度和排名的重要手段&#xff0c;尤其对新手来说&#xff0c;掌握其基本概念和实用技巧至关重要。本文将针对新手提供一系列的指导&#xff0c;帮助你快速入门并逐步提升网站排名。 首先&#xff0c;了解SEO的…

【终端工具】FinalShell v4.5.12 官方版

1.下载地址 【终端工具】FinalShell v4.5.12 官方版 2.简介 FinalShell是一款免费的跨平台远程管理工具&#xff0c;专为开发者和运维人员设计。它支持通过 SSH、SFTP 等方式连接到 Linux 和 Windows 服务器&#xff0c;提供类似于终端的操作界面。除了常规的远程登录功能&a…

003-aop-切点表达式

spring-aop-切点表达式 表达式复用 spring-aop-pom依赖

VBA技术资料MF243:利用第三方软件复制PDF数据到EXCEL

我给VBA的定义&#xff1a;VBA是个人小型自动化处理的有效工具。利用好了&#xff0c;可以大大提高自己的工作效率&#xff0c;而且可以提高数据的准确度。“VBA语言専攻”提供的教程一共九套&#xff0c;分为初级、中级、高级三大部分&#xff0c;教程是对VBA的系统讲解&#…

03--KVM虚拟化

前言&#xff1a;这里开始涉及到云计算内容&#xff0c;虚拟化使云计算发展&#xff0c;云计算推动虚拟化进步&#xff0c;两者相辅相成&#xff0c;这一章总结一下kvm虚拟化的解决方案。 1、基础概念 1.1、云计算 以前要完成信息处理, 是需要在一个客观存在的计算机上完成的…