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 集合预测

基本的集合预测任务是多标签分类,这些任务中的第一个困难是避免近似重复。当前大多数检测器使用非极大值抑制等后处理来解决此问题,但直接集预测无需后处理。他们需要全局推理方案来对所有预测元素之间的交互进行建模,以避免冗余。

后处理主要用于对目标检测算法的输出进行调整和优化,以提高检测结果的准确性和稳定性

损失函数应该通过预测的排列而保持不变。通常的解决方案是基于匈牙利算法设计损失,以找到真实值和预测之间的二分匹配。

匈牙利算法icon-default.png?t=N7T8https://blog.csdn.net/qq_52302919/article/details/132170356

2.2 Transformer和并行解码

Transformer,作为机器翻译的新的基于注意力的构建块。注意力机制 是聚合来自整个输入序列的信息的神经网络层。 Transformer 引入了自注意力层,与非局部神经网络类似,它扫描序列的每个元素,并通过聚合整个序列的信息来更新它。基于注意力的模型的主要优点之一是它们的全局计算和完美的记忆,这使得它们比 RNN 更适合长序列。

RNN循环神经网络icon-default.png?t=N7T8https://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 表示对象的真实集合,并且\hat{y}=\{\hat{y}_{i}\}_{i=1}^{N} 表示 N 个预测的集合。假设 N 大于图像中的对象数量,我们也将 y 视为大小为 N 的集合,并用 \phi 填充。为了找到这两个集合之间的二分匹配,我们以最低成本搜索 N 个元素 \sigma\in\mathfrak{S}_{N} 的排列:\hat{\sigma}=\arg\min_{\sigma\in\mathfrak{S}_N}\sum_i^N\mathcal{L}_{\mathrm{match}}(y_i,\hat{y}_{\sigma(i)})

其中\mathcal{L}_{\mathrm{match}}(y_i,\hat{y}_{\sigma(i)})是真实值y_i和索引为\sigma (i)的预测之间的成对匹配成本。

匹配成本考虑了类别预测以及预测框和地面实况框的相似性。

真实集的每个元素 i 都可以视为 y_i = (c_i , b_i),其中 c_i 是目标类标签(可能是\O\phi),b_i\in[0,1]^4是一个向量,定义真实框中心坐标及其相对于图像大小的高度和宽度。

对于索引为 \sigma (i) 的预测,我们将类 c_i 的概率定义为 \hat{p}_{\sigma(i)}(c_i) ,将预测框定义为 \hat{b}_{\sigma(i)} 。利用这些符号,我们将\mathcal{L}_{\mathrm{match}}(y_i,\hat{y}_{\sigma(i)})定义为 -1_{\{c_i\neq\varnothing\}}\hat{p}_{\sigma(i)}(c_i)+1_{\{c_i\neq\varnothing\}}\mathcal{L}_{\mathrm{box}}(b_i,\hat{b}_{\sigma(i)})。需要找到一对一的匹配来进行直接集预测,而无需重复。

\mathcal{L}_{\mathrm{Hungarian}}(y,\hat{y})=\sum_{i=1}^{N}\left[-\log\hat{p}_{\hat{\sigma}(i)}(c_{i})+{1}_{\{c_{i}\neq\varnothing\}}\mathcal{L}_{\mathrm{box}}(b_{i},\hat{b}_{\hat{\sigma}}(i))\right]

边界框损失

我们的框损失是\mathcal{L}_{\mathrm{box}}(b_{i},\hat{b}_{\sigma(i)})定义为:\lambda_{\mathrm{iou}}\mathcal{L}_{\mathrm{iou}}(b_{i},\hat{b}_{\sigma(i)})+\lambda_{\mathrm{L}1}||b_{i}-\hat{b}_{\sigma(i)}||_{1}

3.2 DETR架构

一个用于提取紧凑特征表示的 CNN 主干、一个编码器-解码器 Transformer 以及一个简单的前馈网络 (FFN),该网络用于提取紧凑的特征表示。做出最终的检测预测。

主干

从初始图像x_{\mathrm{img}}\in\mathbb{R}^{3\times H_{0}\times W_{0}}开始,传统的 CNN 主干网生成较低分辨率的激活图

f\in\mathbb{R}^{C\times H\times W},使用的典型值为 C = 2048 和H,W=\frac{H_{0}}{32},\frac{W_{0}}{32}

Transformer编码器

首先,1x1 卷积将高级激活图 f 的通道维度从 C 减少到更小的维度 d。创建新的特征图

z_0\in R^{d\times H\times W}。编码器期望一个序列作为输入,因此我们将 z_0 的空间维度折叠为一维,从而产生 d×HW 的特征图。每个编码器层都有一个标准架构,由多头自注意力模块和前馈网络(FFN)组成。由于 Transformer 架构是排列不变的,我们用固定位置编码对其进行补充,并将其添加到每个注意层的输入中。

Transformer解码器

解码器遵循 Transformer 的标准架构,使用多头自注意力机制和编码器-解码器注意力机制来转换大小为 d 的 N 个嵌入。与原始 Transformer 的区别在于,我们的模型在每个解码器层并行解码 N 个对象,由于解码器也是排列不变的,因此 N 个输入嵌入必须不同才能产生不同的结果。这些输入嵌入是学习的位置编码,我们将其称为对象查询。

N 个对象查询被解码器转换为输出嵌入。然后通过前馈网络将它们独立解码为框坐标和类标签,从而产生 N 个最终预测。利用对这些嵌入的自注意力和编码器-解码器注意力,该模型使用它们之间的成对关系对所有对象进行全局推理,同时能够使用整个图像作为上下文。

预测前馈网络(FFNs)

最终预测由具有 ReLU 激活函数和隐藏维度 d 的 3 层感知器以及线性投影层计算。FFN 预测框的标准化中心坐标、高度和宽度。输入图像,线性层使用 softmax 函数预测类标签。

辅助解码损失

在每个解码器层之后添加预测 FFN 和匈牙利损失。所有预测 FFN 共享其参数。

使用额外的共享层范数来规范化来自不同解码器层的预测 FFN 的输入。

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

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

相关文章

【Linux】-Linux的实用操作:快捷键与软件安装操作、构建软连接、日期时区的设置[4]

目录 一、各类小技巧(快捷键) 1、ctrl c 强制停止 2、ctrl d 退出或登出 3、历史命令搜索 4、光标移动快捷键 5、清屏 二、软件安装 1、yum命令 2、apt命令 - 扩展(ubuntu) 三、systemctl命令 四、软连接 1、ln命令…

【字符函数与字符串函数】

文章目录 一、strlen函数1.strlen函数的使用2.strlen函数的模拟实现(1)计算器办法(2)不创建临时变量计数器(3)指针 二、strcpy函数1、strcpy函数的使用2、strcpy函数的模拟实现 三、strcat函数1、strcat函数的使用2、strcat模拟实现3、字符串自己给自己追加? 四、st…

01-单片机商业项目编程,从零搭建低功耗系统设计

一、引言 这是关于《单片机商业编程之从零搭建低功耗系统》的第一篇章,个人善忘,平常项目设计当中的一些思路,以前年轻的时候习惯性的录制成视频,也算是当作是自己的笔记,无奈现在喉咙实在扛不住,因此先尝试…

德克萨斯大学奥斯汀分校自然语言处理硕士课程汉化版(第一周) - 自然语言处理介绍和线性分类

自然语言处理介绍和线性分类 1. 自然语言处理介绍2. 线性二分类3. 情感分析和基础特征提取 3.1. 情感分析3.2. 特征提取3.3. 文本预处理 4. 学习的基础-梯度下降算法5. 感知机6. 逻辑回归7. 情感分析8. 感知机和逻辑回归 1. 自然语言处理介绍 自然语言处理的目标是什么 能够解…

(2024,KAN,MLP,可训练激活函数,样条函数,分层函数)Kolmogorov–Arnold 网络

KAN: Kolmogorov–Arnold Networks 公和众和号:EDPJ(进 Q 交流群:922230617 或加 VX:CV_EDPJ 进 V 交流群) 目录 0. 摘要 1. 简介 2. KAN 2.1 KA 表示定理 2.2 KAN 架构 2.3 KAN 的逼近能力和缩放定律 2.4 对于…

国产操作系统下使用dpkg命令管理软件包 _ 统信 _ 麒麟 _ 中科方德

往期好文:国产操作系统下Chrome的命令行使用 | 统信 | 麒麟 Hello,大家好啊!在Linux系统中,dpkg是Debian包管理系统的基础命令工具,它允许用户安装、卸载、查询和管理软件包。在国产操作系统如统信UOS和麒麟KOS、中科方…

字节码基础

基本概念 java中的字节码,英文bytecode。是java代码编译后的中间代码格式。JVM需要读取并解析字节码才能执行相应的任务。java字节码是JVM的指令集。JVM加载字节码格式的class文件。校验之后通过JIT编译器转换成本机机器代码执行。 java字节码简介 1、java byteco…

阿里云部署ChatGLM-6B及ptuning微调教程

一、模型部署 1.进入阿里云人工智能平台PAI。 2.申请免费试用。 3.打开交互式建模 PAI-DSW。 4.新建实例。 5.填写配置。 6.实例准备完成后点击打开。 7.打开实例后点击Teminal。 8.在Teminal中依次输入以下命令并执行。 apt-get update apt-get install git-lfs git lfs ins…

SQLite利用事务实现批量插入(提升效率)

在尝试过SQLite批量插入一百万条记录,执行时长高达20多分钟后,就在想一个问题,这样的性能是不可能被广泛应用的,更不可能出现在真实的生产环境中,那么对此应该如何优化一下呢? 首先分析一下批量插入的逻辑 …

蓝桥杯-地宫取宝

X 国王有一个地宫宝库,是 nm 个格子的矩阵,每个格子放一件宝贝,每个宝贝贴着价值标签。 地宫的入口在左上角,出口在右下角。 小明被带到地宫的入口,国王要求他只能向右或向下行走。 走过某个格子时,如果那个…

网络工程师----第二十四天

计算机基础 第一章:概述 互联网的组成: (1)边缘部分:由所有连接在互联网上的主机组成。这部分是用户直接使用的,用来进行通信(传送数据、音频或视频)和资源共享。 (2…

Python大数据分析——Logistic回归模型

Logistic回归模型 概念理论分析模型评估混淆矩阵ROC曲线KS曲线 函数示例 概念 之前的回归的变量是连续的数值变量;而Logistics回归是二元离散值,用来解决二分类问题。 理论分析 上式中的hβ(X)也被称为Loqistic回归模型,它是将线性回归模型…

2-1 EXTI外部中断(gd32)

中断的概念 中断硬件结构/软件结构 EXTI中断 EXTI硬件结构 注:EXTI线在同一时刻只能连接一个GPIO口,如果我们先连接了PA0,然后又连接了PB0那么此时PA0这个IO口就失去作用。 中断触发函数 中断优先级 中断优先级 数值越小优先级越高,抢占优先级…

247 基于matlab的梁的振型仿真

基于matlab的梁的振型仿真。利用有限元理论,求二维梁的固有频率和振型。短边固定,给定长度、横截面积,弹性模量及材料密度已知。并对比理论计算结果进行分析。各参数自己设定。程序已调通,可直接运行。 247 梁的振型仿真 固有频率…

Unity2D 模拟手柄实现玩家移动

1,创建控制器UI 2,挂载脚本 3,脚本编写 基本要素 [Tooltip("玩家游戏体")]public Rigidbody2D player;[Tooltip("玩家速度")]public float speed 1f;[Tooltip("玩家动画")]public Animator animator;public …

企业级复杂前中台项目响应式处理方案

目录 01: 前言 02: 响应式下navigtionBar实现方案分析 数据 视图 小结 03: 抽离公用逻辑,封装系列动作 04: PC端navigationBar私有逻辑处理 05: 分析 navigationBar 闪烁问题 06: 处理 navigationBar 闪烁问题 07: category数据缓存,覆盖…

Android 13 系统自定义安全水印

效果 源码实现 frameworks/base/services/core/java/com/android/server/am/ActivityManagerService.java public final void showSafeModeOverlay() {View v LayoutInflater.from(mContext).inflate(com.android.internal.R.layout.safe_mode, null);WindowManager.Layout…

程序员工作中常见问题,你遇到过几个?

在赛博朋克2077玩后感中,我提到,即便是在严谨的机制下,依然可能出现让人匪夷所思或是贻笑大方的问题。 那么今天,就以后端程序员的视角,盘点下从设计开发到上线的常见问题,看看大家中过几个。 01 设计与开…

问题与解决:大华视频后台播放报错

大华播放器接到BI系统后,实时监控视频后台播放一段时间后,报错如下: The play() request was interrupted because video-only background media was paused to save power. 在谷歌浏览器下,直接用代码运行系统,视频在…

python软件测试Jmeter性能测试JDBC Request(结合数据库)的使用详解

这篇文章主要介绍了python软件测试Jmeter性能测试JDBC Request(结合数据库)的使用详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧 JDBC Request 这个 Sampler 可以向数据…