主页 > 软件开发  > 

【深度学习】计算机视觉(CV)-目标检测-DETR(DEtectionTRansformer)——基于Trans

【深度学习】计算机视觉(CV)-目标检测-DETR(DEtectionTRansformer)——基于Trans
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(DEtectionTRansformer)——基于Trans由讯客互联软件开发栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“【深度学习】计算机视觉(CV)-目标检测-DETR(DEtectionTRansformer)——基于Trans