DETR开篇之作

news2024/7/6 18:53:40

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

1. 论文背景和动机

背景: 传统的物体检测方法(如Faster R-CNN等)通常依赖复杂的多阶段 pipeline,包括区域候选生成、特征提取和后处理步骤。这些方法尽管有效,但复杂度高且难以端到端训练。
动机: DETR的提出是为了简化物体检测的流程,通过端到端的训练方式实现高效准确的物体检测。

2. DETR的核心思想

Transformer架构: 利用 Transformer 模型中的自注意力机制,DETR将物体检测问题转化为集合预测问题。
端到端训练: DETR通过直接预测图像中的物体边界框和类别标签,避免了传统检测方法中的复杂步骤。

在这里插入图片描述

Transformer是由多个 encoder 和多个 decoder 组成。decoder 的第二个多头注意力 (Multi-Head Attention MHA) 将 encoder 的输出作为两个输入。实际上 MHA 中主要由点积放缩注意力算子组成,大概可以看到其由 Query、Key 和 Value 三者作为输入,进行一系列矩阵操作得到结果。
点积缩放计算示例

简单对点积缩放注意力算子进行介绍:每一个 Embedding 可以生成对应的 Q、K、V,然后每一个 Embedding 的 Q 都会跟 n 个 K (包括自己的)进行向量内积计算,从而得到 n 个值,再通过 softmax 得到 n 个权重,最后和 n 个 V 相乘后相加得到了最后的结果。这个过程可以通过右边矩阵相乘实现,里面涉及两个矩阵乘法 Q x K,其结果和 V 进行矩阵相乘。而对于 encoder 而言,Embedding 的个数是和 image 的尺寸成正比,那么其矩阵相乘的计算复杂度就和 image 的尺寸就成平方关系了。

3. 网络结构

a. 特征提取(Feature Extraction)

  • 使用预训练的卷积神经网络(如ResNet)从输入图像中提取特征。

b. Transformer编码器(Encoder)

  • 将特征图输入到多层 Transformer 编码器中进行处理,添加位置编码(Positional Encoding)以保持空间信息。
  • Positional Encoding 为特征图中的每个像素位置添加位置信息,使Transformer能处理图像数据的空间信息。

  • 编码器的每一层包含自注意力(Self-Attention)和前馈神经网络(Feed-Forward Neural Network)层。
  • 每个编码器层计算输入特征的自注意力分布,并通过前馈网络对特征进行非线性变换。

c. Transformer解码器(Decoder)

  • 使用一组可学习的查询向量(Learnable Query Embeddings)和编码器的输出进行交互。
  • 解码器的每一层包含自注意力层、编码器-解码器注意力层(Encoder-Decoder Attention)和前馈神经网络层。
  • 最终输出物体的边界框和类别。

4. 关键技术

  • 匈牙利匹配(Hungarian Matching): 在训练过程中,通过匈牙利算法将预测结果与真实标签进行一一匹配,计算损失并优化模型。
  • 损失函数(Loss Function):结合了分类损失和边界框回归损失,确保模型在训练过程中能够平衡地优化这两个目标。

5. 实验和结果

在COCO数据集上的实验结果表明,DETR在检测精度和效率上与当前最先进的方法相当。
DETR在处理复杂场景和遮挡物体方面表现尤为出色。

6. 优势和局限性

  • 优势
    简化流程:通过端到端训练简化了传统的多阶段物体检测流程。
    高效:利用Transformer架构的自注意力机制,能够更好地捕捉图像中的全局信息。
    鲁棒性:在复杂场景和遮挡物体的检测中表现良好。
  • 局限性
    计算开销:Transformer的自注意力机制在处理大分辨率图像时计算复杂度较高。
    训练时间:相比传统方法,训练时间较长,需要更多计算资源。

7. 总结

DETR通过将物体检测任务转化为集合预测问题,利用Transformer的自注意力机制,实现了端到端的高效物体检测。其核心创新点在于使用可学习的查询向量和匈牙利匹配算法,简化了传统的物体检测流程,并提高了检测精度。

通过这篇论文,我们可以看到Transformer架构在视觉任务中的潜力,并了解到物体检测领域的最新进展和研究方向。这为进一步研究和应用提供了新的思路和方法。

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

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

相关文章

利用 Qwen-VL 进行私有化部署第一个 AI 多模态大模型

Hi~!这里是奋斗的小羊,很荣幸您能阅读我的文章,诚请评论指点,欢迎欢迎 ~~ 💥💥个人主页:奋斗的小羊 💥💥所属专栏:C语言 🚀本系列文章为个人学习…

shell脚本之数组及冒泡排序

1.数组定义:在集合当中指定多个元素,元素的类型可以是整数、字符串及浮点。 2.数组作用:一次性的定义多个元素,可以为变量赋值提供便利。 3.数组的定义方法: 数组名(a b c d) 数组名不能重复…

xss一些笔记

(乱写的一些笔记) innerHTML只防script像是img就不会防 innerText都防 上面代码执行避免用户交互 js也可以用’‘执行 例子 alert’1‘ document.location.hash // #号后的部分,包括#号 document.location.host // 域名…

可视化表单拖拽生成器优势多 助力流程化办公!

当前,很多企业需要实现流程化办公,进入数字化转型时期。要想实现这一目标,就需要借助更优质的平台产品。低代码技术平台是得到企业喜爱的发展平台,拥有可视化操作、灵活、高效、更可靠等优势特点,在推动企业实现流程化…

RK3588 代码中导入torch报错

RK3588 代码中导入torch报错 使用RK3588测试官方的YOLOv8,出现下面的问题 发现是dfl函数中导入torch的时候产生的&#xff0c;但是我在python终端上执行导入torch并没有发生报错 Traceback (most recent call last):File "infer.py", line 243, in <module>b…

[吃瓜教程]概览西瓜书+南瓜书第1、2章

第一章 绪论 1.1机器学习的定义,什么是机器学习&#xff1f; 1&#xff09;机器学习是这样一门学科&#xff0c;它致力于研究如何通过计算的手段&#xff0c;利用经验来改善系统自身的性能。 2&#xff09;机器学习所研究的主要内容是关于在计算机上从数据中产生模型的算法&a…

信息学奥赛初赛天天练-29-CSP-J2022阅读程序-掌握递归、递推、动态规划、二分与极值函数应用

PDF文档公众号回复关键字:20240619 2022 CSP-J 阅读程序2 阅读程序(判断题1.5分 选择题3分 共计40分 ) 01 #include <algorithm> 02 #include <iostream> 03 #include <limits> 04 05 using namespace std; 06 07 const int MAXN 105; 08 const int MAX…

LMStudio下载模型

笔者在使用LMStudio时下载模型报超时&#xff0c;科学上网也无法解决。&#xff08;LMStudio下载模型时直接走的网关&#xff0c;没有走代理&#xff09; 解决办法如下: 1. 安装软路由并科学上网。 2. 手动下载模型&#xff0c;由于LMStudio解析模型时具有特定的要求&#x…

C++ 79 之 自己写异常类

#include <iostream> #include <string> using namespace std;class MyOutOfRange : public exception{ // 选中exception右键 转到定义 复制一份 virtual const char* what() const _GLIBCXX_TXN_SAFE_DYN _GLIBCXX_NOTHROW 进行函数重写 public: string m_msg;M…

SpringCloud Netflix和SpringCloud Alibaba核心组件

1.SpringCloud Netflix组件 1.1 Netflix Eureka-服务注册发现 Eureka 是一种用于服务发现 的组件&#xff0c;它是一个基于 REST 的服务&#xff0c;用于定位运行在 AWS 弹性计算云&#xff08;EC2&#xff09;中的中间层服务&#xff0c;以便它们可以相互通讯。 注册&#xf…

移植案例与原理 - HDF驱动框架-驱动配置(2)

1.2.7 节点复制 节点复制可以实现在节点定义时从另一个节点先复制内容&#xff0c;用于定义内容相似的节点。语法如下&#xff0c;表示在定义"node"节点时将另一个节点"source_node"的属性复制过来。 node : source_node示例如下&#xff0c;编译后bar节点…

实现跑马灯

目录 一 设计原型 二 后台源码 一 设计原型 二 后台源码 namespace 跑马灯 {public partial class Form1 : Form{public Form1(){InitializeComponent();}private void Form1_Load(object sender, EventArgs e){Color[] colors { Color.Red, Color.Green, Color.Yellow };T…

IO流2.

字符流-->字符流的底层其实就是字节流 public class Stream {public static void main(String[] args) throws IOException {//1.创建对象并关联本地文件FileReader frnew FileReader("abc\\a.txt");//2.读取资源read()int ch;while((chfr.read())!-1){System.out…

【数据分享】《中国林业和草原统计年鉴》1992-2022

公众号新功能 目前公众号新增以下等功能 1、处理GIS出图、Python制图、区位图、土地利用现状图、土地利用动态度和重心迁移图等等 2、核密度分析、网络od分析、地形分析、空间分析等等 3、地理加权回归、地理探测器、生态环境质量指数、地理加权回归模型影响因素分析、计算…

YOLOV8 目标检测:训练自定义数据集

1、下载 yolov8项目&#xff1a;ultralytics/ultralytics&#xff1a;新增 - PyTorch 中的 YOLOv8 &#x1f680; > ONNX > OpenVINO > CoreML > TFLite --- ultralytics/ultralytics: NEW - YOLOv8 &#x1f680; in PyTorch > ONNX > OpenVINO > CoreM…

【面试题】Spring常见面试题整理2024(全是干货!!!)

备战实习&#xff0c;会定期给大家整理常考的面试题&#xff0c;大家一起加油&#xff01; &#x1f3af; 注意&#xff1a;文章若有错误的地方&#xff0c;欢迎评论区里面指正 &#x1f36d; 系列文章目录 【面试题】MySQL常见面试题总结【面试题】面试题分享之JVM篇【面试题…

基于支持向量机的垃圾邮件分类,使用SVM+flask+vue

sms-classify 基于支持向量机的垃圾邮件分类&#xff0c;使用SVMflaskvue 数据集和源码地址 数据集 SMS Spam Collection Data Set 来源于 UCI。样例被分为非垃圾邮件&#xff08;86.6%&#xff09;和垃圾邮件&#xff08;13.4%&#xff09;&#xff0c;数据格式如下&#xff…

【尚庭公寓SpringBoot + Vue 项目实战】登录管理(十八)

【尚庭公寓SpringBoot Vue 项目实战】登录管理&#xff08;十八&#xff09; 文章目录 【尚庭公寓SpringBoot Vue 项目实战】登录管理&#xff08;十八&#xff09;1、登录业务介绍2、接口开发2.1、获取图形验证码2.2、登录接口2.3、获取登录用户个人信息 1、登录业务介绍 登…

迭代器模式观察者模式

文章目录 1.引出迭代器模式1.展示院系结构2.传统方式 2.迭代器模式解决院系结构展示问题1.基本介绍2.原理类图3.类图4.代码实现1.Department.java 存储信息的对象2.College.java 被迭代的类型接口3.ComputerCollege.java 被迭代的具体实现类&#xff0c;存储数据并将其在创建迭…

2024年6月22日(星期六)骑行谷仓坝

2024年6月22日 (星期六) 骑行谷仓坝&#xff0c;早8:00到8:30&#xff0c; 龙泉小学门口(北京路尽头&#xff0c;高架桥下&#xff09;&#xff0c;9:00准时出发 【因迟到者&#xff0c;骑行速度快者&#xff0c;可自行追赶偶遇。】 偶遇地点:集合 &#xff0c;家住东&#xf…