【论文阅读】DETR+Deformable DETR

可变形注意力是目前transformer结构中经常使用的一种注意力机制,最近补了一下这类注意力的论文,提出可变形注意力的论文叫Deformable DETR,是在DETR的基础上进行的改进,所以顺带着把原本的DETR也看了一下。

一、DETR

DETR本身是一个使用transformer结构进行目标检测的模型,在相关工作这一节作者提到使用了一种叫做集合预测的方法,集合预测不同于传统的目标检测方法,这类方法是直接输出固定大小的包围框的集合,而传统的方法是不固定的包围框再使用极大值抑制进行后处理。使用这一结构之后,设计DETR需要解决两个关键问题,如何建立一个基于集合的损失函数以及集合内部的对应关系应该如何构建。

匹配关系的建立

DETR首先约定了自己能够检测到的目标的数量的最大值N,如果图像中的物体超过了这个数量也没用,只能检测出N个物体。对于检测出的N个物体,如何与groundtruth建立联系是DETR需要解决的第一个问题,这里作者使用了匈牙利算法进行解决。简单来说,匈牙利算法就是从全局角度找出一个让整体效果最优的一对一匹配关系。传统的目标检测构建的实际上是一个多对多的关系,利用正负样本来指导模型预测的包围框应该属于哪个真值。使用匈牙利算法,我们需要构建一个真值与预测之间的一对一关系,让这个关系组的误差最小化。对于预测的N个物体,我们一般假设N要大于实际存在的物体数量,超过的部分将包围框的类别标记为空,即无物体。之后利用下面的式子进行优化:
在这里插入图片描述
其中Lmatch可以理解为一个损失值,用于描述当我们将第i个物体与第б(i)个物体匹配时错误带来的影响。这个误差包括两部分:类别的差异和包围框的差异。类别的差异直接使用最简单粗暴的负对数似然损失,我们希望预测的类别的可信度尽可能接近当前匹配的真值中的类别。而包围框差异的部分,我们同时考虑交并比差异和包围框边界差异。交并比差异采用的是GIOU进行计算,它在原始 IoU 基础上,再减去预测框与真实框在最小闭包矩形中未覆盖区域的比重。而包围框边界差异指的则是包围框的四个端点与真实值之间的差异。最终包围框差异的计算公式为:
在这里插入图片描述
在此基础上得到的匈牙利算法的计算公式为:
在这里插入图片描述

DETR模型设计

模型设计的部分,DETR首先采用一个CNN进行特征提取,提取好的特征图送入transformer的编码器部分进行处理,送入编码器之前首先使用1×1卷积进行维度调整,假设原来的特征图维度是C×H×W,调整的过程使用1×1卷积进行,从而将新的特征图维度调整为d×H×W,之后这d张特征图被调整为HW个d维的向量,这些向量会被作为token再加入2d位置编码后送入编码器。encoder的部分首先是这d个token自己之间计算自注意力,在多个编码器块之后得到提取结果。

解码器的部分则是使用N个可学习query进行提取,这里的N对应的就是前面的N个物体。这N个查询首先进行自注意力产生相互关系,之后再与encoder的输出计算交叉注意力进行提取,这N个查询的结果最终经过一个前馈神经网络调整为N个预测结果。

在这里插入图片描述

二、Deformable DETR

Deformable DETR是对DETR的改进,针对收敛慢、小物体识别不好的问题,但是从结果来看,其提出的可变形注意力貌似比本身模型更出名。简单来说,可变形注意力是借鉴了CNN中可变形卷积的思想,让transformer不是平等地关注所有像素,有些像素更加重要那我就只关注那一部分就完事了。
在这里插入图片描述

可变形注意力机制

采用与DETR相同的结构,图像的输入首先会经过CNN进行特征的提取,在得到的特征图的基础上,可变形注意力会选取一部分点,这部分点的坐标是query自己学习得来的,在推理过程是固定的,除此之外,query还会提供一个偏移值,基于选择的点的坐标,加上这个偏移值,就可以计算出采样点周围的几个点,特征图中这几个点的特征向量被提取出来进行加权求和,从而得到可变形注意力的输出。
在这里插入图片描述
这一可变形注意力机制可以很好地与多尺度卷积结合起来,多尺度卷积中特征图的大小是不同的,所以我们不能采用固定的坐标大小来表示采样点的位置,这里作者设计了一个归一化机制,通过归一化让位置和偏移量转换为0-1的一个比例,这样再在每一层根据大小得到一个可能是浮点数的坐标,这个坐标可能没有直接对应的点,需要利用临近点插值得到这个坐标对应的值,这样将尺度引入,我们就得到了多尺度的可变形注意力。
在这里插入图片描述

Deformable transformer 结构

使用了可变形注意力机制之后,DETR的整个输入输出都变了,变成了多尺度卷积产生的多尺度特征图。在encoder的部分,编码器的输入和输出都是多尺度的特征图,并且编码器输出的大小和编码器输入的大小是一样的,这部分使用可变形自注意力机制每个像素都会作为一个query参与到计算中,在添加尺度编码之后参与可变形注意力的计算,也就是说这部分是对特征图中的每个点,都计算一遍多尺度可变形注意力,最后叠加出来一个等大小的特征图。在decoder的部分,作者使用了可变形自注意力和可变形交叉注意力。对于N个query,首先使用可变形自注意力机制进行交互,这个交互也是可变形的,主要体现在交互的过程不是一一对应的,每个query只和一部分query进行交互。虽然都叫做可变形自注意力,但是decoder部分使用的和encoder部分使用的还不一样,decoder的部分的Deformable Self-Attention并不能很好地体现出采样点这一概念,只保留了非全部交互这一概念。
在这里插入图片描述

而可变形交叉注意力则是将每个query与encoder的输出进行交互,得到交叉注意力结果,最终得到N个query查询的结果。

整体理顺一下可变形注意力在DETR中的机制。首先模型利用多尺度卷积得到不同尺度下的特征图P3P4P5,之后这些特征图会被先送入encoder的部分,编码器中使用多尺度可变形自注意力机制,对于每一个尺度,每个点都是一个query与周围的小部分点进行加权求和,同时不同尺度之间也会相互参与计算,比如说P3尺度下,同尺度采样点直接参与计算,不同尺度的采样点则是使用归一化进行处理然后参与计算,由于加权求和并不改变向量长度,所以自注意力计算过程完全不改变输入输出的大小。经过处理,encoder部分使用多尺度可变形自注意力机制将特征图进行了处理,输出的是一个等大小但是特征更加丰富的特征图。之后decoder的部分输入是N个可学习的object query,这部分query首先进行可变形自注意力机制,每个query和小部分query进行加权求和,之后所有的object query都作为query与encoder输出的多尺度特征图进行可变形多尺度交叉注意力计算,每个query会得到一个向量,这个向量的长度等于特征图的深度,最后所有的query都扫一遍,就可以拼成一个二维矩阵,这个二维矩阵再经过后续计算送入不同的head完成不同的下游任务。

可以看到,虽然打着可变形注意力的幌子,但是扣细节的话可以发现,可变形注意力几乎是重写了传统transformer中qkv的结构,我们很难找到真正意义上的qkv三个内容,可变形这个词,主要针对的就是让点不是和全部剩余点进行交互,而是让点和小部分点进行交互,图像中并不是所有的内容都是完全有意义的,我只需要关注真正有价值的东西即可,剩余的是在徒增开销。

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

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

相关文章

大模型在宫颈癌诊疗全流程预测与应用研究报告

目录 一、引言 1.1 研究背景与意义 1.2 研究目的与创新点 二、大模型预测宫颈癌术前风险 2.1 术前数据收集与预处理 2.2 预测模型构建与算法选择 2.3 术前风险预测指标与案例分析 三、大模型辅助制定术中方案 3.1 术中风险动态监测与预测 3.2 基于预测的手术方案优化…

【Python 文件I/O】

Python 的文件 I/O 操作是数据处理的基础技能,涉及文件的读写、路径管理、异常处理等核心功能。以下是文件 I/O 的核心知识点: 一、基础文件操作 1. 打开文件 # 通用模式:r(读)/w(写)/a(追加) b(二进制)/t(文本,默认) f open(…

Twin Builder 中的电池等效电路模型仿真

电池单元热设计挑战 电池热管理的主要挑战之一是确保温度低于最大工作限值。较高的温度会导致效率降低、加速老化和潜在的安全隐患。工程师必须了解电池产生的热量,才能充分设计冷却系统。 了解和预测电池模块的热行为需要将电池的热损耗与电池单元的电气机械特性…

一种基于条件生成对抗网络(cGAN)的CT重建算法

简介 简介:该文提出了一种基于条件生成对抗网络(cGAN)的CT重建算法,通过引入CBAM注意力机制增强网络对关键特征的提取能力,有效解决了CT成像中因噪声干扰导致的重建精度下降问题。实验采用固体火箭发动机模拟件数据集,将正弦图分为五组并添加不同程度的噪声进行训练。结…

【Redis篇】linux 7.6安装单机Redis7.0(参数优化详解)

💫《博主主页》: 🔎 CSDN主页 🔎 IF Club社区主页 🔥《擅长领域》:擅长阿里云AnalyticDB for MySQL(分布式数据仓库)、Oracle、MySQL、Linux、prometheus监控;并对SQLserver、NoSQL(MongoDB)有了…

【BUG】‘DetDataSample‘ object has no attribute ‘_gt_sem_seg‘

问题: 使用mmdetection框架使用COCO格式训练自定义数据集时,其中模型使用HTC模型时出现如下问题: AttributeError: ‘DetDataSample’ object has no attribute ‘_gt_sem_seg’. Did you mean: ‘gt_sem_seg’? results self(**data, mode…

Java日期格式化方法总结

在Java中,日期格式化主要涉及将 Date、LocalDate、LocalDateTime 等日期时间对象转换为指定格式的字符串,或将字符串解析为日期对象。以下是两种常用的日期格式化方式: 一、使用 SimpleDateFormat(旧版API,Java 8之前&…

【NLP】27. 语言模型训练以及模型选择:从预训练到下游任务

语言模型训练:从预训练到下游任务 本文详细讲解大型语言模型(LLMs)是如何训练的,包括不同的模型类型(Encoder、Decoder、Encoder-Decoder),以及各类预训练任务的原理、对比、适用场景&#xff0…

通过 ModernBERT 实现零样本分类的性能提升

文本分类 是机器学习中最基础的任务之一,拥有悠久的研究历史和深远的实用价值。更重要的是,它是许多实际项目中不可或缺的组成部分,从搜索引擎到生物医学研究都离不开它。文本分类方法被广泛应用于科学论文分类、用户工单分类、社交媒体情感分…

基于SpringBoot网上书店的设计与实现

pom.xml配置文件 1. 项目基本信息(没什么作用) <groupId>com.spring</groupId> <!--项目组织标识&#xff0c;通常对应包结构--> <artifactId>boot</artifactId> <!--项目唯一标识--> <version>0.0.1-SNAPSHOT</ve…

STM32H743单片机实现ADC+DMA多通道检测+事件组

在上个文章基础上改用事件组进行处理&#xff0c;以便实时任务。 stm32cubeMX自动生成代码 osEventFlagsId_t adctestEventHandle; const osEventFlagsAttr_t adctestEvent_attributes {.name "adctestEvent" };adctestEventHandle osEventFlagsNew(&adctest…

AI Agent开发第57课-AI用在销售归因分析场景中-用随机森林从0构建自己的“小模型”

开篇 在前一篇《机器学习的基础-线性回归如何应用在商业场景中》里,我们说到了如果我们只是简单的分析和预测一下投入广告费用和销售额增长是否存在必然关系,我们用了线性回归法得到了分析,得到的分析结果极其精准,以及提到了:如果当销售因素是非线性的并且有着额外一些如…

Linux运维——Vim技巧三

Vim技巧 一、按 按模 模式 式匹 匹配 配及 及按 按原 原义 义匹 匹配1.1、调整查找模式的大小写敏感性1.2、按正则表达式查找时&#xff0c;使用 \v 模式开关1.3、按原义查找文本时&#xff0c;使用 \V 原义开关1.4、使用圆括号捕获子匹配1.5、界定单词的边界1.6、界定匹配的边…

NLTK库(1): 数据集-语料库(Corpus)

1.简介 NLTK &#xff08;Natural Language Toolkit&#xff09; 是自然语言处理&#xff08;NLP&#xff09;任务的 Python 库&#xff0c;内置大量NLP数据集与计算包。 NLP数据集也叫语料库 (Corpus), 若无特殊格式或标记&#xff0c;数据集通常来自txt等文本文件。 本教程…

spring详解-循环依赖的解决

Spring循环依赖 重点提示&#xff1a; 本文都快写完了&#xff0c;发现“丈夫” 的英文是husband… 在“②有AOP循环依赖” 改过来了&#xff0c;前面用到的位置太多了就没改。我是说怎么idea的hansband英文下面怎么有波浪线。各位能够理解意思就行&#xff0c;英文拼写不要过…

随机快速排序算法

一、随机化原理 经典快速排序 选取固定的“枢轴”&#xff08;通常取第一个或最后一个元素&#xff09;&#xff0c;在最坏情况下&#xff08;如已经有序&#xff09;会退化为 。 随机快速排序 在每次分区前随机地从当前区间 [p..r] 中等概率选取一个枢轴&#xff0c;将它与末…

数据可视化与分析

数据可视化的目的是为了数据分析&#xff0c;而非仅仅是数据的图形化展示。 项目介绍 项目案例为电商双11美妆数据分析&#xff0c;分析品牌销售量、性价比等。 数据集包括更新日期、ID、title、品牌名、克数容量、价格、销售数量、评论数量、店名等信息。 1、数据初步了解…

美团Java高级配送员面经分享|玩梗版

美团Java高级配送员面经分享&#xff01;纯玩梗&#xff01;

在windows中卸载mysql

一、停止服务 winR快捷键 -->> 输入services.msc -->> 进入服务窗口关闭Mysql服务 二、卸载程序&#xff08;可选&#xff09; 如果是通过解压压缩包安装的则跳过这一步&#xff0c;如果是使用.msi文件驱动安装则需要卸载 控制面板 -->> 程序和功能 -->…

https://juejin.cn/editor/drafts/7262346366541070395

.Net Core从零学习搭建权限管理系统教程 推荐一组WPF自定义控件开源项目。 项目简介 这是基于WPF开发的&#xff0c;为开发人员提供了一组方便使用自定义组件&#xff0c;并提供了各种常用的示例。 包含组件&#xff1a;数据表格、属性列表、树形列表、选色器、单选框列表、…