【深度学习】计算机视觉(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 结构示意图

rust 复制代码
输入图片 -> CNN 提取特征 -> Transformer 处理特征 -> 预测目标类别 + 边界框

4.DETR 代码示例

使用 PyTorch 进行 DETR 目标检测

python 复制代码
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)

运行结果

python 复制代码
{'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 可能成为未来目标检测的主流。
相关推荐
湘美书院--湘美谈教育1 小时前
湘美谈教育湘美书院网文研究:人工智能与微型小说选集
人工智能·深度学习·神经网络·机器学习·ai写作
梦醒过后说珍重2 小时前
炼丹笔记:感知超分辨率模型中复合损失权重的科学调参SOP
深度学习
CoovallyAIHub2 小时前
Pipecat:构建实时语音 AI Agent 的开源编排框架,500ms 级端到端延迟
深度学习·算法·计算机视觉
CoovallyAIHub2 小时前
Energies | 8版YOLO对8版Transformer实测光伏缺陷检测,RF-DETR-Small综合胜出
深度学习·算法·计算机视觉
zh路西法3 小时前
【宇树机器人强化学习】(七):复杂地形的生成与训练
python·深度学习·机器学习·机器人
逄逄不是胖胖4 小时前
《动手学深度学习》-69预训练bert数据集实现
人工智能·深度学习·bert
CoovallyAIHub4 小时前
2.5GB 塞进浏览器:Mistral 开源实时语音识别,延迟不到半秒
深度学习·算法·计算机视觉
mygugu4 小时前
详细分析swanlab集成mmengine底层实现机制--源码分析
python·深度学习·可视化
Hello.Reader4 小时前
词语没有位置感?用“音乐节拍“给 Transformer 装上时钟——Positional Encoding 图解
人工智能·深度学习·transformer
Rorsion5 小时前
CNN经典神经网络架构
人工智能·深度学习·cnn