🚀 DETR (端到端目标检测) 模型,采用 ResNet - 50 骨干网络
DETR(Detection Transformer)模型在 COCO 2017 全景数据集(11.8 万张标注图像)上进行了端到端训练。该模型由 Carion 等人在论文 End-to-End Object Detection with Transformers 中提出,并首次在 此仓库 中发布。
免责声明:发布 DETR 的团队并未为此模型编写模型卡片,此模型卡片由 Hugging Face 团队编写。
✨ 主要特性
- 端到端检测:直接输出检测结果,无需复杂的后处理。
- 可扩展性:可自然扩展以执行全景分割任务。
- 基于 Transformer 架构:利用 Transformer 的强大建模能力。
📦 安装指南
暂未提及安装步骤,可参考相关依赖库的官方文档进行安装,如 transformers
、torch
等。
💻 使用示例
基础用法
import io
import requests
from PIL import Image
import torch
import numpy
from transformers import DetrFeatureExtractor, DetrForSegmentation
from transformers.models.detr.feature_extraction_detr import rgb_to_id
url = "http://images.cocodataset.org/val2017/000000039769.jpg"
image = Image.open(requests.get(url, stream=True).raw)
feature_extractor = DetrFeatureExtractor.from_pretrained("facebook/detr-resnet-50-panoptic")
model = DetrForSegmentation.from_pretrained("facebook/detr-resnet-50-panoptic")
inputs = feature_extractor(images=image, return_tensors="pt")
outputs = model(**inputs)
processed_sizes = torch.as_tensor(inputs["pixel_values"].shape[-2:]).unsqueeze(0)
result = feature_extractor.post_process_panoptic(outputs, processed_sizes)[0]
panoptic_seg = Image.open(io.BytesIO(result["png_string"]))
panoptic_seg = numpy.array(panoptic_seg, dtype=numpy.uint8)
panoptic_seg_id = rgb_to_id(panoptic_seg)
目前,特征提取器和模型均支持 PyTorch。
📚 详细文档
模型描述
DETR 模型是一个带有卷积骨干网络的编码器 - 解码器 Transformer。在解码器输出之上添加了两个头部以执行目标检测:一个用于类别标签的线性层和一个用于边界框的多层感知机(MLP)。该模型使用所谓的目标查询来检测图像中的目标。每个目标查询在图像中寻找特定的目标。对于 COCO 数据集,目标查询的数量设置为 100。
模型使用“二分匹配损失”进行训练:将 N = 100 个目标查询的预测类别和边界框与真实标注进行比较,真实标注会填充到相同的长度 N(因此,如果一张图像仅包含 4 个目标,那么 96 个标注的类别将为“无目标”,边界框将为“无边界框”)。使用匈牙利匹配算法在 N 个查询和 N 个标注之间创建最优的一对一映射。接下来,使用标准的交叉熵(用于类别)和 L1 损失与广义 IoU 损失的线性组合(用于边界框)来优化模型的参数。
DETR 可以自然地扩展以执行全景分割,方法是在解码器输出之上添加一个掩码头部。

预期用途与限制
可以使用原始模型进行全景分割。请参阅 模型中心 以查找所有可用的 DETR 模型。
🔧 技术细节
训练数据
DETR 模型在 COCO 2017 全景数据集 上进行训练,该数据集分别包含 11.8 万张和 5000 张用于训练和验证的标注图像。
训练过程
预处理
训练/验证期间图像预处理的确切细节可在 此处 找到。
图像会进行调整大小/缩放,使得最短边至少为 800 像素,最长边最多为 1333 像素,并使用 ImageNet 的均值(0.485, 0.456, 0.406)和标准差(0.229, 0.224, 0.225)在 RGB 通道上进行归一化。
训练
模型在 16 个 V100 GPU 上训练了 300 个 epoch。这需要 3 天时间,每个 GPU 处理 4 张图像(因此总批量大小为 64)。
评估结果
该模型在 COCO 2017 验证集上取得了以下结果:边界框平均精度(AP)为 38.8,分割平均精度(AP)为 31.1,全景质量(PQ)为 43.4。
有关评估结果的更多详细信息,请参考原论文的表 5。
BibTeX 引用和引用信息
@article{DBLP:journals/corr/abs-2005-12872,
author = {Nicolas Carion and
Francisco Massa and
Gabriel Synnaeve and
Nicolas Usunier and
Alexander Kirillov and
Sergey Zagoruyko},
title = {End-to-End Object Detection with Transformers},
journal = {CoRR},
volume = {abs/2005.12872},
year = {2020},
url = {https://arxiv.org/abs/2005.12872},
archivePrefix = {arXiv},
eprint = {2005.12872},
timestamp = {Thu, 28 May 2020 17:38:09 +0200},
biburl = {https://dblp.org/rec/journals/corr/abs-2005-12872.bib},
bibsource = {dblp computer science bibliography, https://dblp.org}
}
📄 许可证
本项目采用 Apache - 2.0 许可证。