RT-DETR 详解之 Uncertainty-minimal Query Selection

引言

在上一章博客中博主已经完成查询去噪向量构造部分的讲解(DeNoise)在本篇博客中,我们将进行Uncertainty-minimal Query Selection创新点的讲解。

Uncertainty-minimal Query Selection是RT-DETR提出的第二个创新点,其作用是在训练期间约束检测器对高 IOU 的特征产生高分类分数,对低 IOU 的特征产生低分类分数。从而使得模型根据分类分数选择的 Top-K 特征对应的预测框同时具有髙分类分数和高 IOU 分数。

如下图,这是RT-DETR所作的一个分析,其中蓝色代表使用查询选择后的结果,可以看到其随着IOU分数变高,其分类分数也较高,而绿色代表原方法,可以看到IOU分数高的分类分数并不高。

在这里插入图片描述

这部分其实对应的是输入到Decoder中的数据处理部分,即位于rt_decoder.py中的_get_decoder_input方法中

代码分析

进入_get_decoder_input方法后,首先进行的是构造Anchor,对应的是_generate_anchors方法

构造Anchor

_generate_anchors方法的输入参数为各个特征图的维度大小spatial_shapes

其代码如下,该方法原理和YOLOv1的思想很类似,每个像素点产生一个Anchor,如第一层特征图中有100x100Anchor,第二层特征图中有50x50Anchor

在这里插入图片描述

生成的grid_xgrid_y 以及 grid_xy 的值

在这里插入图片描述
anchors.append(torch.concat([grid_xy, wh], -1).reshape(-1, h * w, 4))将宽高和中心点坐标拼接在一起,最终获得三层特征图内的 Anchor

在这里插入图片描述

最终,会根据我们设置的一个阈值来选择出一部分Anchor

在这里插入图片描述
在这里插入图片描述

这里可以认为是生成Anchor先验,RT-DETR认为目标更多的集中在中心区域,即中心区域的特征更容易产生高IOU,而到了最后一个特征图,由于语义特征非常丰富,所以近似会认为所有特征都很有用,故而全部选择了。

在这里插入图片描述

Topk查询向量选择

继续进行Decoder输入数据的构造,通过一系列方法,在根据类别选择Top-k输入Decoder的特征向量的过程中,就可以选出相对IOU分数也较高的查询向量了。具体操作如下:

首先,将Encoder输出的特征图进行进一步处理:

output_memory = self.enc_output(memory)

memorytorch.Size([4, 13125, 256])
output_memorytorch.Size([4, 13125, 256])

RT-DETR对分类头与预测框头进行了解耦,首先将该特征图(output_memory)输入分类头,获取分类结果(这里是初筛Encoder的结果,为下一步选择Topk特征做准备)

enc_outputs_class = self.enc_score_head(output_memory)

在这里插入图片描述
随后将特征图(output_memory)输入回归头,并于先前构造的anchor相结合:

enc_outputs_coord_unact = self.enc_bbox_head(output_memory) + anchors

回归头的构造如下,其输出维度为4,对应 (x y w h)

ModuleList(
  (0-1): 2 x Linear(in_features=256, out_features=256, bias=True)
  (2): Linear(in_features=256, out_features=4, bias=True)
)

在这里插入图片描述
在这里插入图片描述

最终,将其进行Topk选择,选择的数量为300(num_queries)

 _, topk_ind = torch.topk(enc_outputs_class.max(-1).values, self.num_queries, dim=1)

选择出的top_ind即选中的特征图的索引。

在这里插入图片描述

最后,按照先前的分类结果(top_ind)从回归结果中选出Topk个结果。

关于torch的gather函数的用法可以参考这篇文章:

torch.gather用法

我们可以看到此时的inputenc_outputs_coord_unact ,其维度为1,代表纵向,按列取整,此时索引为topk_ind展平后的结果,已知topk_ind为(4,300),博主举了一个简单案例来展示这个过程:

在这里插入图片描述

上述部分的完整代码如下:

在这里插入图片描述

最终,获得筛选后的enc_topk_bboxes的特征维度为torch.Size([4, 300, 4]),通过上述过程,在进行特征向量选择的过程中,由于anchor在构造时具有倾向性,即多位于一些中心点区域,因此其anchor具有高IOU,在最后选择时,再选择这里面分类分数高的特征,从而选择高分类分数与高IOU分数的特征。

我的理解

至此,我们来最终分析一下其原理:其相较于DETR类其他方法初始随机设置查询向量(如DAB-DETR的box query一般初始为0,可认为是先验 anchor),这里RT-DETR则在Anchor初始化时给定了的假设,即目标大多位于中心区域,认为这部分的特征能够产生较高IOU的查询向量,在完成anchor初始化后,并将该anchor与Encoder得到的anchor相加,得到Encoder最终输出的anchor(enc_output_coord_unact),注意,每轮训练或者推理过程中的产生的先验anchor是固定的,即每次先验条件是相同的,但它会与Encoder得到的anchor结合后,即给定训练倾向,最终也就导致Encoder逐步产生一些具有高IOU的特征。

最终输出结果

最终将Encoder得到的特征图生成的查询向量与查询降噪生成的查询向量结合起来,输入Decoder进行下一步的操作。

在这里插入图片描述

最终将选择出的300与查询去噪构造的198结合起来,得到(4,498,256)的特征。

最终得到的返回值如下:

 return target, reference_points_unact.detach(), enc_topk_bboxes, enc_topk_logits

这个target就是用于输入Decoder的特征。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

至此,完成了Uncertainty-minimal Query Selection过程。

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

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

相关文章

大模型的高考数学成绩单:及格已经非常好了

让考生头皮发麻的高考数学,可难倒了顶尖 AI 大模型。 一年一度的高考即将落幕,衷心希望各位考生都超常发挥,考出满意的好成绩!! 和往年一样,除了让 AI 大模型写写高考作文,我们也选取了六家国…

超级会员小程序积分商城源码系统 前后端分离 带完整的安装代码包以及搭建部署

系统概述 在数字化时代,积分商城作为企业增强用户粘性、促进消费的重要工具,其重要性不言而喻。为了帮助企业快速构建高效、易用的积分兑换平台,我们特别推出了“超级会员小程序积分商城源码系统”,采用前后端分离架构设计&#…

硬盘危机:磁盘损坏无法打开的应对策略

在数字化时代,磁盘作为数据存储和传输的核心设备,其稳定性和安全性至关重要。然而,在日常使用过程中,我们时常会面临磁盘损坏无法打开的困境。这不仅会影响我们的工作效率,还可能造成重要数据的丢失。本文将深入探讨磁…

java中toCharArray用法详细分析(全)

将字符串中的字符转换为字符数组 public char[] toCharArray()括号内没有参数 返回值是一个字符数组接收 1.函数代码: package com.ithehema;public class Test {public static void main(String[] args) {String b"ss123456";char []cb.toCharArray()…

SCI三区快速检索——期刊推荐IEEE Access

IEEE Access 是一个综合性的、开放获取的多学科工程和技术期刊,由美国电气电子工程师协会(IEEE)出版。以下是关于IEEE Access期刊的一些关键信息: 1. 开放获取【即开源】 IEEE Access 是开放获取(Open Access&#x…

【Linux】生产者消费者模型——阻塞队列BlockQueue

> 作者:დ旧言~ > 座右铭:松树千年终是朽,槿花一日自为荣。 > 目标:理解【Linux】生产者消费者模型——阻塞队列BlockQueue。 > 毒鸡汤:有些事情,总是不明白,所以我不会坚持。早安!…

【Git】Windows下使用可视化工具Sourcetree

参考:[最全面] SourceTree使用教程详解(连接远程仓库,克隆,拉取,提交,推送,新建/切换/合并分支,冲突解决,提交PR) 1.Git工具–sourcetree 之前文章介绍过Linux系统中的Git工具&…

C++ 11 【可变参数模板】【lambda】

💓博主CSDN主页:麻辣韭菜💓   ⏩专栏分类:C修炼之路⏪   🚚代码仓库:C高阶🚚   🌹关注我🫵带你学习更多C知识   🔝🔝 目录 前言 一、新的类功能 1.1默认成员函数—…

78%的中小企业担心网络攻击会导致其业务中断,中小企业如何确保网络安全?

在当今数字化时代,网络攻击手段层出不穷,网络安全事件不断增加,根据ConnectWise的一项调查数据显示,94%的中小企业至少经历过一次网络攻击,78%的中小企业担心网络攻击会导致其业务中断,企业声誉受损。由此&…

opencv-python(七)

import cv2img cv2.imread(view.jpg) cv2.imshow(view.jpg, img) img_rgb cv2.cvtColor(img, cv2.COLOR_BGR2RGB) # BGR转RGB cv2.imshow(RGB Color Space, img_rgb) img_bgr cv2.cvtColor(img_rgb, cv2.COLOR_RGB2BGR) # RGB转BGR cv2.imshow(BGR Color Space, img_bgr) c…

javaspringbootmysql小程序的竞赛管理系统71209-计算机毕业设计项目选题推荐(附源码)

摘 要 随着社会的发展,社会的方方面面都在利用信息化时代的优势。互联网的优势和普及使得各种系统的开发成为必需。 本文以实际运用为开发背景, 运用软件工程原理和开发方法,它主要是采用java语言技术和mysql数库来完成对系统的设计。整个开发过程首先对竞赛管理系统进行需求分…

【网络编程开发】11.IO模型 12.IO多路复用

11.IO模型 什么是IO: IO 是 Input/Output 的缩写,指的是输入和输出。在计算机当中,IO 操作通常指将数据从一个设备或文件中读取到计算机内存中,或将内存中的数据写入设备或文件中。这些设备可以包括硬盘驱动器、网卡、键盘、屏幕等。 通常用…

FiRa标准UWB MAC实现(三)——距离如何获得?

继续前期FiRa MAC相关介绍,将FiRa UWB MAC层相关细节进一步进行剖析,介绍了UWB技术中最重要的一个点,高精度的距离是怎么获得的,具体使用的测距方法都有哪些,原理又是什么。为后续FiRa UWB MAC的实现进行铺垫。 3、测距方法 3.1 SS-TWR SS-TWR为Single-Sided Two-Way Ra…

01 Linux网络设置

目录 1.1 查看及测试网络 1.1.1 查看网络配置 1. 查看网络接口地址 1. 查看活动的网络接口设备 2. 查看指定的网络接口信息 2. 查看主机名称 3. 查看路由表条目 4. 查看网络连接情况 1.1.2 测试网络连接 1. 测试网络连通性 2. 跟踪数据包的路由途径 3. 测试DNS域名解析 1.2 设…

[leetcode]将二叉搜索树转化为排序的双向链表

. - 力扣(LeetCode) /* // Definition for a Node. class Node { public:int val;Node* left;Node* right;Node() {}Node(int _val) {val _val;left NULL;right NULL;}Node(int _val, Node* _left, Node* _right) {val _val;left _left;right _rig…

小型气象站:现代气象监测的便携化解决方案

TH-QC12在气象监测领域,技术的不断创新和进步推动了监测设备的多样化和便携化。小型气象站作为这一趋势下的产物,以其体积小、功能全、操作简便等特点,受到了广泛的关注和应用。 小型气象站的技术特点 小型气象站集成了多种气象传感器&…

ChatGPT做2024高考数学题能得多少分?

文章目录 1. 前言2. AI答题2.1 第一部分试题图2.2 第二部分试题图2.3 第三部分试题图 3. 结论 1. 前言 2024年高考基本上落下帷幕(特殊省份除外),我们关注下曾经“最喜欢”的数学用 AI 能得多少分?当前采用 ChatGPT-4o 模型&…

说说医院网间文件传输的进化之路

作为一家大型综合医院的信息科管理人员,我亲眼见证了跨网间文件交换技术的不断进步。每一个阶段都伴随着不同的挑战和惊喜,以下是我的一些经历和感悟,希望能对同行们有所帮助。 在2000年代初期,我们医院采用物理隔离和手动传输的方…

固态硬盘格式化后能恢复数据吗?四种数据恢复方法,赶紧收藏!

格式化的固态硬盘能恢复吗?硬盘是电脑里面的储存配件,虽然说当前种类比较多,但是在平常使用的过程中,也会遇到一些数据丢失的问题。而当前造成数据丢失的很多,例如:手动误删、清空回收站、磁盘格式化等。 …