【深度学习】计算机视觉(CV)-目标检测-DETR(DEtection TRansformer)—— 基于 Transformer 的端到端目标检测
1.什么是 DETR?
DETR(DEtection TRansformer) 是 Facebook AI(FAIR)于 2020 年提出的 端到端目标检测算法,它基于 Transformer 架构,消除了 Faster R-CNN、YOLO 等方法中的 候选框(Anchor Boxes) 和 非极大值抑制(NMS) 机制,使目标检测变得更简单、高效。
论文:End-to-End Object Detection with Transformers
2.DETR 的核心特点
- 基于 Transformer 进行目标检测,摆脱了 CNN 传统的 Anchor 机制
- 端到端训练,无需像 Faster R-CNN 额外使用 RPN 进行候选框生成
- 全局注意力机制(Self-Attention),可以建模远距离依赖关系,提高检测精度
- 自动去重,不需要 NMS 后处理步骤
- 适用于复杂场景,如密集目标检测
3.DETR 的工作流程
DETR 由 三部分 组成:
- CNN 提取图像特征(ResNet-50 / ResNet-101)
- Transformer 进行目标检测(编码器 + 解码器)
- 最终预测目标类别和边界框(分类 + 位置回归)
DETR 结构示意图
输入图片 -> CNN 提取特征 -> Transformer 处理特征 -> 预测目标类别 + 边界框
4.DETR 代码示例
使用 PyTorch 进行 DETR 目标检测
import torch
import torchvision.transforms as T
from PIL import Image
import requests# 载入 DETR 预训练模型
detr = torch.hub.load('facebookresearch/detr', 'detr_resnet50', pretrained=True, trust_repo=True)
detr.eval()# 加载图片并进行预处理
image_path = r"D:\Pictures\test.jpeg"
image = Image.open(image_path)transform = T.Compose([T.Resize(800), T.ToTensor()])
img_tensor = transform(image).unsqueeze(0)# 进行目标检测
with torch.no_grad():outputs = detr(img_tensor)# 输出检测结果
print(outputs)
运行结果
{'pred_logits': tensor([[[-17.4480, -1.4711, -6.0746, ..., -10.0646, -7.2832, 11.1362],[-17.7877, -1.7454, -5.9165, ..., -11.6356, -8.4581, 10.7261],[-18.3903, -1.3194, -7.6447, ..., -11.3595, -6.6635, 11.2573],...,[-18.0295, -1.6913, -6.6354, ..., -11.4836, -7.7729, 10.9814],[-14.4323, 1.3790, -4.2558, ..., -11.5297, -7.8083, 8.1644],[-17.6349, -1.6041, -6.4100, ..., -11.2120, -7.4216, 10.7064]]]), 'pred_boxes': tensor([[[0.4990, 0.5690, 0.4764, 0.7080],[0.5039, 0.5219, 0.4657, 0.6124],[0.3920, 0.5463, 0.2963, 0.6085],[0.5231, 0.5180, 0.4489, 0.6110],[0.4986, 0.5346, 0.4989, 0.5883],[0.5145, 0.5258, 0.5162, 0.6123],[0.4251, 0.5273, 0.3235, 0.5911],[0.4012, 0.5339, 0.2816, 0.5804],[0.4025, 0.5263, 0.2526, 0.5638],[0.5153, 0.5249, 0.4807, 0.6065],[0.6775, 0.8235, 0.0436, 0.0436],[0.4380, 0.5365, 0.3368, 0.5919],[0.5044, 0.5242, 0.4791, 0.6314],[0.7352, 0.8131, 0.0248, 0.0464],[0.4567, 0.8361, 0.0448, 0.0530],[0.4981, 0.5287, 0.4715, 0.6199],[0.5047, 0.5239, 0.4570, 0.6045],[0.6295, 0.5182, 0.2367, 0.6062],[0.5980, 0.5261, 0.2878, 0.6313],[0.5106, 0.5218,
代码解析
- 载入 Facebook 预训练的 DETR 模型(
detr_resnet50) - 使用 ResNet 预处理输入图像
- 利用 Transformer 进行目标检测 并输出检测框
5.DETR vs Faster R-CNN vs YOLO
| 模型 | 方法 | 检测方式 | 速度(FPS) | mAP(COCO) | 特点 |
|---|---|---|---|---|---|
| Faster R-CNN | 双阶段 | RPN + ROI 池化 | ⏳ 5-10 | 🎯 76.4% | 高精度,速度慢 |
| YOLOv8 | 单阶段 | 直接预测类别 + 边界框 | ⚡ 60+ | 🎯 92% | 速度快,适合实时检测 |
| DETR | 端到端 | Transformer 进行检测 | ⏳ 15 | 🎯 94% | 无 Anchor / NMS |
- DETR 适用于端到端目标检测,适合大规模数据和复杂场景。
- YOLO 适用于实时检测,而 Faster R-CNN 适用于高精度任务。
6.DETR 的优化方向
- DETR 速度较慢,可优化 Transformer 计算效率(如 Deformable DETR)
- 提升小目标检测能力(DETR 需要更大数据集进行训练)
- 轻量化 DETR(如 Mobile-DETR)以适应移动端部署
7.结论
- DETR 通过 Transformer 解决了目标检测中的 Anchor 机制问题,简化了流程。
- 它具有端到端训练的优势,但速度较慢,适用于高精度目标检测任务。
- 随着 Transformer 在计算机视觉中的应用(如 ViT),DETR 可能成为未来目标检测的主流。
相关文章:
【深度学习】计算机视觉(CV)-目标检测-DETR(DEtection TRansformer)—— 基于 Transformer 的端到端目标检测
1.什么是 DETR? DETR(DEtection TRansformer) 是 Facebook AI(FAIR)于 2020 年提出的 端到端目标检测算法,它基于 Transformer 架构,消除了 Faster R-CNN、YOLO 等方法中的 候选框(…...
Windows Docker运行Implicit-SVSDF-Planner
Windows Docker运行GitHub - ZJU-FAST-Lab/Implicit-SVSDF-Planner: [SIGGRAPH 2024 & TOG] 1. 设置环境 我将项目git clone在D:/Github目录中。 下载ubuntu20.04 noetic镜像 docker pull osrf/ros:noetic-desktop-full-focal 启动容器,挂载主机的D:/Github文…...
ELK安装部署同步mysql数据
ELK 安装部署指南 ELK 是 Elasticsearch、Logstash 和 Kibana 的简称,用于日志收集、存储、分析和可视化。 1. 安装 Elasticsearch Elasticsearch 是一个分布式搜索和分析引擎。 1.1 下载并安装 访问 Elasticsearch 官网 下载最新版本。 解压并安装: tar…...
Vision Transformer图像分块嵌入核心技术解析:从数学推导到工业级应用
一、技术原理与数学建模 1.1 图像分块过程数学表达 给定输入图像 x ∈ R H W C x \in \mathbb{R}^{H \times W \times C} x∈RHWC,将其分割为 N N N 个尺寸为 P P P \times P PP 的图块: x p ∈ R N ( P 2 ⋅ C ) 其中 N H W P 2 x_p \in \m…...
【产品资料】陀螺匠·企业助手v1.8 产品介绍
陀螺匠企业助手是一套采用Laravel 9框架结合Swoole高性能协程服务与Vue.js前端技术栈构建的新型智慧企业管理与运营系统。该系统深度融合了客户管理、项目管理、审批流程自动化以及低代码开发平台,旨在为企业提供一站式、数字化转型的全方位解决方案,助力…...
深度求索-DeepSeek-R1本地部署指南
1、参考:部署指南 2、参考:deepseek本地部署只需三步 DeepSeek本地部署只需三步: 1、安装运行环境:安装 Ollama:Ollama官网:官网 2、下载模型:参数越大,需要物里硬件越多 3、安装部…...
代码随想录day12
144.二叉树的前序遍历 //明确递归的函数,结束边界,单层逻辑 void traversal(TreeNode* node, vector<int>& list){if(node nullptr){return;}list.push_back(node->val);traversal(node->left, list);traversal(node->right, list)…...
告别第三方云存储!用File Browser在Windows上自建云盘随时随地访问
文章目录 前言1.下载安装File Browser2.启动访问File Browser3.安装cpolar内网穿透3.1 注册账号3.2 下载cpolar客户端3.3 登录cpolar web ui管理界面3.4 创建公网地址 4.固定公网地址访问 前言 无论是个人用户还是企业团队,都希望能够有一个高效、安全的解决方案来…...
Ubuntu 下 nginx-1.24.0 源码分析 - NGX_MAX_ALLOC_FROM_POOL
NGX_MAX_ALLOC_FROM_POOL 定义在 src\core\ngx_palloc.h #define NGX_MAX_ALLOC_FROM_POOL (ngx_pagesize - 1) 在 src/os/unix/ngx_alloc.h extern ngx_uint_t ngx_pagesize; 这个全局变量定义在 src\os\unix\ngx_alloc.c 中 ngx_uint_t ngx_pagesize; 在 src/os/unix/ngx_…...
PyQt6/PySide6 的 SQL 数据库操作(QtSql)
一、核心组件架构 1.1 QtSql模块构成 QSqlDatabase:数据库连接管理(支持连接池)QSqlQuery:SQL语句执行与结果遍历QSqlTableModel:可编辑的表格数据模型QSqlQueryModel:只读查询结果模型QSqlRelationalTab…...
利用IDEA将Java.class文件反编译为Java文件:原理、实践与深度解析
文章目录 引言:当.class文件遇到源代码缺失第一章:反编译技术基础认知1.1 Java编译执行原理1.2 反编译的本质1.3 法律与道德边界 第二章:IDEA内置反编译工具详解2.1 环境准备2.2 三步完成基础反编译2.3 高级反编译技巧2.3.1 调试模式反编译2.…...
Kafka偏移量管理全攻略:从基础概念到高级操作实战
#作者:猎人 文章目录 前言:概念剖析kafka的两种位移消费位移消息的位移位移的提交自动提交手动提交 1、使用--to-earliest重置消费组消费指定topic进度2、使用--to-offset重置消费offset3、使用--to-datetime策略指定时间重置offset4、使用--to-current…...
【R语言】GitHub Copilot安装-待解决
参考: 文章目录...
软件定义汽车时代的功能安全和信息安全
我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 简单,单纯,喜欢独处,独来独往,不易合同频过着接地气的生活…...
qt的QSizePolicy的使用
使用 QSizePolicy 设置控件的伸缩因子 在 Qt 中,QSizePolicy 控制 控件如何在布局中伸缩。如果想要影响控件的大小调整行为,可以通过 QSizePolicy::setHorizontalStretch() 和 QSizePolicy::setVerticalStretch() 设置伸缩因子。 基本用法 假设我们有一个…...
简单几个步骤完成 Oracle 到金仓数据库(KingbaseES)的迁移目标
作为国产数据库的领军选手,金仓数据库(KingbaseES)凭借其成熟的技术架构和广泛的市场覆盖,在国内众多领域中扮演着至关重要的角色。无论是国家电网、金融行业,还是铁路、医疗等关键领域,金仓数据库都以其卓…...
DeepSeek自动化写作软件
DeepSeek写作软件的三大核心功能 对于内容创作者来说,写作不仅是表达思想的过程,更是一项需要投入大量时间和精力的任务。面对日益增长的内容需求,写作效率低下、内容质量不高等问题,常常让创作者感到焦虑。而 DeepSeek 写作软件…...
【kafka系列】Kafka如何实现高吞吐量?
目录 1. 生产者端优化 核心机制: 关键参数: 2. Broker端优化 核心机制: 关键源码逻辑: 3. 消费者端优化 核心机制: 关键参数: 全链路优化流程 吞吐量瓶颈与调优 总结 Kafka的高吞吐能力源于其生…...
learn_pytorch03
第三章 深度学习分为如下几个步骤 1:数据预处理,划分训练集和测试集 2:选择模型,设定损失函数和优化函数 3:用模型取拟合训练数据,并在验证计算模型上表现。 接着学习了一些数据读入 模型构建 损失函数的构…...
机器学习:k近邻
所有代码和文档均在golitter/Decoding-ML-Top10: 使用 Python 优雅地实现机器学习十大经典算法。 (github.com),欢迎查看。 K 邻近算法(K-Nearest Neighbors,简称 KNN)是一种经典的机器学习算法,主要用于分类和回归任务…...
KubeSphere 容器平台高可用:环境搭建与可视化操作指南
Linux_k8s篇 欢迎来到Linux的世界,看笔记好好学多敲多打,每个人都是大神! 题目:KubeSphere 容器平台高可用:环境搭建与可视化操作指南 版本号: 1.0,0 作者: 老王要学习 日期: 2025.06.05 适用环境: Ubuntu22 文档说…...
树莓派超全系列教程文档--(61)树莓派摄像头高级使用方法
树莓派摄像头高级使用方法 配置通过调谐文件来调整相机行为 使用多个摄像头安装 libcam 和 rpicam-apps依赖关系开发包 文章来源: http://raspberry.dns8844.cn/documentation 原文网址 配置 大多数用例自动工作,无需更改相机配置。但是,一…...
Leetcode 3576. Transform Array to All Equal Elements
Leetcode 3576. Transform Array to All Equal Elements 1. 解题思路2. 代码实现 题目链接:3576. Transform Array to All Equal Elements 1. 解题思路 这一题思路上就是分别考察一下是否能将其转化为全1或者全-1数组即可。 至于每一种情况是否可以达到…...
对WWDC 2025 Keynote 内容的预测
借助我们以往对苹果公司发展路径的深入研究经验,以及大语言模型的分析能力,我们系统梳理了多年来苹果 WWDC 主题演讲的规律。在 WWDC 2025 即将揭幕之际,我们让 ChatGPT 对今年的 Keynote 内容进行了一个初步预测,聊作存档。等到明…...
Java多线程实现之Callable接口深度解析
Java多线程实现之Callable接口深度解析 一、Callable接口概述1.1 接口定义1.2 与Runnable接口的对比1.3 Future接口与FutureTask类 二、Callable接口的基本使用方法2.1 传统方式实现Callable接口2.2 使用Lambda表达式简化Callable实现2.3 使用FutureTask类执行Callable任务 三、…...
srs linux
下载编译运行 git clone https:///ossrs/srs.git ./configure --h265on make 编译完成后即可启动SRS # 启动 ./objs/srs -c conf/srs.conf # 查看日志 tail -n 30 -f ./objs/srs.log 开放端口 默认RTMP接收推流端口是1935,SRS管理页面端口是8080,可…...
Python爬虫(二):爬虫完整流程
爬虫完整流程详解(7大核心步骤实战技巧) 一、爬虫完整工作流程 以下是爬虫开发的完整流程,我将结合具体技术点和实战经验展开说明: 1. 目标分析与前期准备 网站技术分析: 使用浏览器开发者工具(F12&…...
Cloudflare 从 Nginx 到 Pingora:性能、效率与安全的全面升级
在互联网的快速发展中,高性能、高效率和高安全性的网络服务成为了各大互联网基础设施提供商的核心追求。Cloudflare 作为全球领先的互联网安全和基础设施公司,近期做出了一个重大技术决策:弃用长期使用的 Nginx,转而采用其内部开发…...
基于Docker Compose部署Java微服务项目
一. 创建根项目 根项目(父项目)主要用于依赖管理 一些需要注意的点: 打包方式需要为 pom<modules>里需要注册子模块不要引入maven的打包插件,否则打包时会出问题 <?xml version"1.0" encoding"UTF-8…...
土地利用/土地覆盖遥感解译与基于CLUE模型未来变化情景预测;从基础到高级,涵盖ArcGIS数据处理、ENVI遥感解译与CLUE模型情景模拟等
🔍 土地利用/土地覆盖数据是生态、环境和气象等诸多领域模型的关键输入参数。通过遥感影像解译技术,可以精准获取历史或当前任何一个区域的土地利用/土地覆盖情况。这些数据不仅能够用于评估区域生态环境的变化趋势,还能有效评价重大生态工程…...
