5.10.3 使用 Transformer 进行端到端对象检测(DETR)
框架的主要成分称为 DEtection TRansformer 或 DETR,是基于集合的全局损失,它通过二分匹配强制进行独特的预测,以及 Transformer 编码器-解码器架构。
DETR 会推理对象与全局图像上下文的关系,以直接并行输出最终的预测集。
1. 介绍
对象检测的目标是预测每个感兴趣对象的一组边界框和类别标签。
在计算机图形学和图像处理中,锚点(Anchor Point)是一个特定的位置,通常用于描述图像中的特征点或区域。它可以是单个像素点,也可以是一个更复杂的区域如矩形或椭圆。锚点的主要作用是为图像处理和计算机视觉任务提供一个参考点,以便更准确地描述和定位图像中的特征。在目标检测任务中,锚点用于预测目标物体的位置和大小;在图像匹配任务中,它帮助找到图像中的相似区域。
DETR 通过将通用 CNN 与 Transformer 架构相结合来直接(并行)预测最终的检测集。

二分匹配:模型的预测结果(包括坐标和类别概率)与真实框之间会进行最优的一一配对,即每个预测结果都会与一个真实框(或背景类,如果没有真实框与之匹配)进行匹配。
通过将对象检测视为直接集合预测问题来简化训练流程。我们采用基于 Transformer 的编码器-解码器架构,这是一种流行的序列预测架构。 Transformer 的自注意力机制明确地模拟了序列中元素之间的所有成对交互,使这些架构特别适合集合预测的特定约束,例如删除重复的预测。
DEtection TRansformer(DETR)会同时预测所有对象,并使用一组损失函数进行端到端训练,该函数在预测对象和真实对象之间执行二分匹配。DETR 通过删除多个手工设计的编码先验知识的组件(例如空间锚点或非极大值抑制)来简化检测流程。
DETR 的主要特征是二分匹配损失和Transformer与(非自回归)并行解码的结合。
2. 相关工作
我们的工作建立在多个领域的先前工作的基础上:集合预测的二分匹配损失、基于Transformer的编码器-解码器架构、并行解码和对象检测方法。
2.1 集合预测
基本的集合预测任务是多标签分类,这些任务中的第一个困难是避免近似重复。当前大多数检测器使用非极大值抑制等后处理来解决此问题,但直接集预测无需后处理。他们需要全局推理方案来对所有预测元素之间的交互进行建模,以避免冗余。
后处理主要用于对目标检测算法的输出进行调整和优化,以提高检测结果的准确性和稳定性
损失函数应该通过预测的排列而保持不变。通常的解决方案是基于匈牙利算法设计损失,以找到真实值和预测之间的二分匹配。
匈牙利算法
https://blog.csdn.net/qq_52302919/article/details/132170356
2.2 Transformer和并行解码
Transformer,作为机器翻译的新的基于注意力的构建块。注意力机制 是聚合来自整个输入序列的信息的神经网络层。 Transformer 引入了自注意力层,与非局部神经网络类似,它扫描序列的每个元素,并通过聚合整个序列的信息来更新它。基于注意力的模型的主要优点之一是它们的全局计算和完美的记忆,这使得它们比 RNN 更适合长序列。
RNN循环神经网络
https://blog.csdn.net/zyf918/article/details/136172798
Transformer 最初用于自回归模型,遵循早期的序列到序列模型 ,一一生成输出标记。结合了变压器和并行解码,以在计算成本和执行集合预测所需的全局计算的能力之间进行适当的权衡。
Transformer模型中,并行解码(Parallel Decoding)指的是解码器(Decoder)部分能够同时处理多个输出位置,而不是像传统的递归神经网络(RNN)那样逐个位置地顺序生成输出。
2.3 对象检测
大多数现代物体检测方法都会根据一些初始猜测进行预测。在我们的模型中,通过使用绝对框预测直接预测检测集来简化检测过程。输入图像而不是锚点。
基于集合的损失
一些物体检测器使用了二分匹配损失。然而,在这些早期的深度学习模型中,不同预测之间的关系仅使用卷积层或全连接层进行建模。最近的检测器使用地面实况和预测之间的非唯一分配规则以及 NMS(非极大值抑制)。
NMS的主要目的是解决目标检测算法输出目标框时的重叠问题。在目标检测任务中,算法通常会生成多个候选框来表示可能包含目标的区域。这些候选框往往会有一定的重叠,NMS的作用就是对这些重叠的候选框进行筛选,以保留最优的检测结果。
可学习的 NMS 方法和关系网络通过注意力显式地建模不同预测之间的关系。使用直接设置损失。然而,这些方法采用额外的手工制作的上下文特征 来有效地建模检测之间的关系,同时我们寻找减少模型中编码的先验知识的解决方案。
循环检测器
最接近的方法的是对象检测和实例分割的端到端集合预测。
使用基于 CNN 激活的编码器-解码器架构的二分匹配损失来直接生成一组边界框。
3. DETR模型
对于检测中的直接集合预测来说,有两个要素至关重要:
(1) 集合预测损失,强制预测框和真实框之间进行唯一匹配;
(2) 一种能够(在一次传递中)预测一组对象并对其关系进行建模的架构。
3.1 对象检测集预测损失
DETR 在通过解码器的单次传递中推断出一组固定大小的 N 个预测,其中 N 设置为明显大于图像中对象的典型数量。训练的主要困难之一是根据真实情况对预测对象(类别、位置、大小)进行评分。我们的损失在预测对象和真实对象之间产生最佳二分匹配,然后优化特定于对象(边界框)的损失。
y 表示对象的真实集合,并且 表示 N 个预测的集合。假设 N 大于图像中的对象数量,我们也将 y 视为大小为 N 的集合,并用
填充。为了找到这两个集合之间的二分匹配,我们以最低成本搜索 N 个元素
的排列:
其中是真实值
和索引为
的预测之间的成对匹配成本。
匹配成本考虑了类别预测以及预测框和地面实况框的相似性。
真实集的每个元素 i 都可以视为 ,其中
是目标类标签(可能是
),
是一个向量,定义真实框中心坐标及其相对于图像大小的高度和宽度。
对于索引为 的预测,我们将类
的概率定义为
,将预测框定义为
。利用这些符号,我们将
定义为
。需要找到一对一的匹配来进行直接集预测,而无需重复。
边界框损失
我们的框损失是定义为:
3.2 DETR架构
一个用于提取紧凑特征表示的 CNN 主干、一个编码器-解码器 Transformer 以及一个简单的前馈网络 (FFN),该网络用于提取紧凑的特征表示。做出最终的检测预测。
主干
从初始图像开始,传统的 CNN 主干网生成较低分辨率的激活图
,使用的典型值为 C = 2048 和
。
Transformer编码器
首先,1x1 卷积将高级激活图 f 的通道维度从 C 减少到更小的维度 d。创建新的特征图
。编码器期望一个序列作为输入,因此我们将
的空间维度折叠为一维,从而产生 d×HW 的特征图。每个编码器层都有一个标准架构,由多头自注意力模块和前馈网络(FFN)组成。由于 Transformer 架构是排列不变的,我们用固定位置编码对其进行补充,并将其添加到每个注意层的输入中。

Transformer解码器
解码器遵循 Transformer 的标准架构,使用多头自注意力机制和编码器-解码器注意力机制来转换大小为 d 的 N 个嵌入。与原始 Transformer 的区别在于,我们的模型在每个解码器层并行解码 N 个对象,由于解码器也是排列不变的,因此 N 个输入嵌入必须不同才能产生不同的结果。这些输入嵌入是学习的位置编码,我们将其称为对象查询。
N 个对象查询被解码器转换为输出嵌入。然后通过前馈网络将它们独立解码为框坐标和类标签,从而产生 N 个最终预测。利用对这些嵌入的自注意力和编码器-解码器注意力,该模型使用它们之间的成对关系对所有对象进行全局推理,同时能够使用整个图像作为上下文。
预测前馈网络(FFNs)
最终预测由具有 ReLU 激活函数和隐藏维度 d 的 3 层感知器以及线性投影层计算。FFN 预测框的标准化中心坐标、高度和宽度。输入图像,线性层使用 softmax 函数预测类标签。
辅助解码损失
在每个解码器层之后添加预测 FFN 和匈牙利损失。所有预测 FFN 共享其参数。
使用额外的共享层范数来规范化来自不同解码器层的预测 FFN 的输入。
相关文章:
5.10.3 使用 Transformer 进行端到端对象检测(DETR)
框架的主要成分称为 DEtection TRansformer 或 DETR,是基于集合的全局损失,它通过二分匹配强制进行独特的预测,以及 Transformer 编码器-解码器架构。 DETR 会推理对象与全局图像上下文的关系,以直接并行输出最终的预测集。 1. …...
前端开发指导
前端开发指导 本文介绍了配置前端开发环境需要的软件、配置项等,指导如何开始进行UDM部门前端开发的全流程。本文以Windows系统下在Microsoft Virtual Studio Code中开发为基础。 一、综述 目标:零基础或者新员工依照此文档,能够完成开发环境的搭建及熟悉测试环境的搭建。…...
三方库的调用方法
系列文章目录 提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加 TODO:写完再整理 文章目录 系列文章目录前言三方库的调用方法1. **下载并安装Boost库(三方库)**2. **配置开发环境**3. **包含Boost(三方库)头文件**4. **编写代码**5. **链接Boost库(三…...
如何使用提示测试为LLMs构建单元测试?
原文地址:how-to-build-unit-tests-for-llms-using-prompt-testing 确保您的人工智能交付:快速测试完美生成应用程序的基本指南 2024 年 4 月 26 日 如果你曾经编写过软件,你就会知道测试是开发过程中必不可少的一部分。特别是单元测试&#…...
目前市面上堡垒机厂家有哪些?会帮忙部署吗?
随着大家对于网络安全的重视,越来越多的企业准备采购堡垒机了。不少企业在问,目前市面上堡垒机厂家有哪些?会帮忙部署吗?这里我们小编就来简单为大家回答一下,仅供参考哈! 目前市面上堡垒机厂家有哪些&…...
【备忘】在使用php-ffmpeg/php-ffmpeg开发时遇到Unable to load FFProbe时如何处理?
执行FFProbe::create()时,提示Unable to load FFProbe,php-ffmpeg/php-ffmpeg版本是用的^0.19.0,安装位置/usr/bin/ffprobe,现在提示这个错误要怎么解决呢 说个小技巧: 当在开发跟视频相关的功能时,总是出…...
REFORMER: 更高效的TRANSFORMER模型
大型Transformer模型通常在许多任务上都能达到最先进的结果,但是训练这些模型的成本可能会非常高昂,特别是在处理长序列时。我们引入了两种技术来提高Transformer的效率。首先,我们用一种使用局部敏感哈希的点积注意力替换了原来的点积注意力…...
视频合并有妙招:视频剪辑一键操作,批量嵌套合并的必学技巧
在数字时代的今天,视频已经成为我们日常生活和工作中不可或缺的一部分。无论是记录生活点滴,还是制作专业项目,视频合并都是一个常见的需求。然而,对于许多人来说,视频合并却是一个复杂且繁琐的过程。现在有云炫AI智剪…...
安装SQL Server详细教程_sql server安装教程
一,SQL Server数据库安装 1.首先,下载安装程序 (1)从网盘下载安装exe 点击此处直接下载 (2)从官网下载安装exe文件 在官网选择Developer进行下载 2.开始安装 双击安装程序,开始安装 这里直…...
Git那些事-如何撤销暂存区的文件
在Git的操作中,有时在将本地仓库中已修改的文件添加到暂存区时,会出现添加了"错误"文件的情况(这里的错误指的是这些文件我们并不需要上传到远程仓库)。这就需要我们将添加到暂存区中"错误"的文件恢复到本地仓…...
记一次SQL和程序查询结果不一致的问题
使用的数据库 clickHouse 程序查询出来时14.4 直接执行Sql查询出来是14.2 select round(sum(current_play_time) / 60 / 60, 1) from (SELECT max(current_play_time) as current_play_timeFROM probe_recordsWHERE toDateTime(log_time, Asia/Shanghai) > 2024-05-11 00…...
Python 实战之量化交易
1. Python 实战之量化交易 2..Python量化交易实战-04.量化交易系统架构的设计 Python量化交易实战-04.量化交易系统架构的设计 - 知乎 3.Python量化交易实战-06.通过PythonAPI获取股票数据 Python量化交易实战-06.通过PythonAPI获取股票数据 - 知乎 3.Python量化交易实战…...
跟我学C++中级篇——封装对象的实践
一、对象封装 在面向对象编程中,首要的事情就是如何进行对象的封装。说的直白一些,就是如何设计类或者是结构体。许多开发者看过不少的书,也学过很多的设计方法,更看过很多别人的代码。那么如何指导自己进行对象的封装呢…...
iOS面试题链接汇总
iOS开发三年经验 靠这份面试题让我从15k到25k - 简书 2021年,整理的iOS高频面试题及答案(总会有你需要的) - 知乎 iOS面试(内含面试全流程,面试准备工作面试题等)-CSDN博客 runtime: 阿里、字节 一套高效…...
TEINet: Towards an Efficient Architecture for Video Recognition 论文阅读
TEINet: Towards an Efficient Architecture for Video Recognition 论文阅读 Abstract1 Introduction2 Related Work3 Method3.1 Motion Enhanced Module3.2 Temporal Interaction Module3.3 TEINet 4 Experiments5 Conclusion阅读总结 文章信息; 原文链接:https:…...
Navicat Data Modeler Ess for Mac:强大的数据库建模设计软件
Navicat Data Modeler Ess for Mac是一款专为Mac用户设计的数据库建模与设计工具,凭借其强大的功能和直观的界面,帮助用户轻松构建和管理复杂的数据库模型。 Navicat Data Modeler Ess for Mac v3.3.17中文直装版下载 这款软件支持多种数据库系统&#x…...
NSS刷题
[SWPUCTF 2021 新生赛]jicao 类型:PHP、代码审计、RCE 主要知识点:json_decode()函数 json_decode():对JSON字符串解码,转换为php变量 用法: <?php $json {"ctf":"web","question"…...
CUDA专项
1、讲讲shared memory bank conflict的发生场景?以及你能想到哪些解决方案? CUDA中的共享内存(Shared Memory)是GPU上的一种快速内存,通常用于在CUDA线程(Thread)之间共享数据。然而࿰…...
C# 判断Access数据库中表是否存在,表中某个字段是否存在
在C#中判断Access数据库中某个表是否存在以及该表中某个字段是否存在,可以通过以下步骤实现: 判断表是否存在 可以使用ADO.NET中的OleDbConnection.GetOleDbSchemaTable方法来获取数据库的架构信息,并检查特定的表是否存在。 using System…...
【C++】学习笔记——模板进阶
文章目录 十一、模板进阶1. 非类型模板参数2. 按需实例化3. 模板的特化类模板的特化 4. 模板的分离编译 未完待续 十一、模板进阶 1. 非类型模板参数 模板参数分为类型形参和非类型形参 。类型形参即:出现在模板参数列表中,跟在class或者typename之类的…...
rBase64:嵌入式系统零堆分配BASE64编解码库
1. rBase64 库深度解析:面向嵌入式系统的高性能 BASE64 编解码实现BASE64 是一种将任意二进制数据映射为 ASCII 字符子集的编码方案,广泛应用于嵌入式通信协议(如 MQTT payload、HTTP Basic Auth、CoAP 传输)、固件 OTA 升级包签名…...
Linux内核进程创建与调度机制详解
Linux内核进程创建机制深度解析:从fork到进程调度1. 进程创建概述在Linux操作系统中,进程创建是通过fork系统调用实现的。fork系统调用会创建一个与父进程几乎完全相同的子进程,包括代码段、数据段、堆栈等内存空间的复制。本文将深入分析Lin…...
6大终极方案!WarcraftHelper全方位解决魔兽争霸III在Win10/11兼容性难题
6大终极方案!WarcraftHelper全方位解决魔兽争霸III在Win10/11兼容性难题 【免费下载链接】WarcraftHelper Warcraft III Helper , support 1.20e, 1.24e, 1.26a, 1.27a, 1.27b 项目地址: https://gitcode.com/gh_mirrors/wa/WarcraftHelper 经典游戏魔兽争霸…...
36 Python 时序和文本:中文文本处理入门:为什么要先做分词和停用词过滤?
中文文本处理入门:为什么要先做分词和停用词过滤? 刚接触文本分析时,很多人都会有一个疑问: 文本明明已经有内容了,为什么不能直接拿去做分类、聚类或者情感分析? 这个问题其实正好指向了文本挖掘里最基础、…...
计算机毕业设计springboot彝族民族文化宣传网站 基于SpringBoot的彝族非物质文化遗产数字化展示平台 SpringBoot框架下彝族传统风俗文化传播系统
计算机毕业设计springboot彝族民族文化宣传网站l36tn9 (配套有源码 程序 mysql数据库 论文)本套源码可以先看具体功能演示视频领取,文末有联xi 可分享 在当今数字化浪潮席卷全球的背景下,少数民族文化的保护与传承面临着前所未有…...
如何快速实现Blade框架国际化:多语言和本地化的完整指南
如何快速实现Blade框架国际化:多语言和本地化的完整指南 【免费下载链接】blade :rocket: Lightning fast and elegant mvc framework for Java8 项目地址: https://gitcode.com/gh_mirrors/bl/blade Blade是一款基于Java8的轻量级MVC框架,以其闪…...
基于LSTM的短期电力负荷预测研究
【负荷预测】基于LSTM短期负荷预测,可考虑需求响应 短期电力负荷预测在电力系统的调度、生产和规划中起着重要的作用,精准的负荷预测有利于决策者做出正确决策计划以及有利于电力系统的稳定运行。 多个售电主体的市场竞争带来了电价的波动,以…...
ArcGIS Desktop许可证被占满?别慌,这3个方法帮你快速释放Advanced许可(附详细步骤)
ArcGIS Desktop高级许可被占用?3种高效解决方案与实战技巧 当你正在赶制项目报告或处理关键地理数据时,突然弹出的"All ArcGIS for Desktop Advanced licenses are in use"错误提示足以让任何GIS专业人士心跳加速。这种情况往往发生在团队共享…...
Pixelorama扩展深度解析:3种自动化精灵图切割方案对比
Pixelorama扩展深度解析:3种自动化精灵图切割方案对比 【免费下载链接】Pixelorama A free & open-source 2D sprite editor, made with the Godot Engine! Available on Windows, Linux, macOS and the Web! 项目地址: https://gitcode.com/gh_mirrors/pi/Pi…...
专业级视频对比分析工具:video-compare的技术架构深度解析
专业级视频对比分析工具:video-compare的技术架构深度解析 【免费下载链接】video-compare Split screen video comparison tool using FFmpeg and SDL2 项目地址: https://gitcode.com/gh_mirrors/vi/video-compare 在视频编码质量评估、算法效果验证和媒体…...
