许可协议:apache-2.0
标签:
数据集:
示例展示:
- 图片链接:https://huggingface.co/datasets/mishig/sample_images/resolve/main/football-match.jpg
示例标题:足球比赛
- 图片链接:https://huggingface.co/datasets/mishig/sample_images/resolve/main/dog-cat.jpg
示例标题:猫狗同框
- 图片链接:https://huggingface.co/datasets/mishig/sample_images/resolve/main/construction-site.jpg
示例标题:建筑工地
- 图片链接:https://huggingface.co/datasets/mishig/sample_images/resolve/main/apple-orange.jpg
示例标题:苹果与橙子
DETR(端到端目标检测)模型(ResNet-50骨干网络)
DEtection TRansformer (DETR) 是基于COCO 2017全景数据集(11.8万张标注图像)训练的端到端模型。该模型由Carion等人在论文《End-to-End Object Detection with Transformers》中提出,并首次发布于此代码库。
免责声明:DETR的研发团队未为此模型编写说明文档,本文档由Hugging Face团队撰写。
模型描述
DETR模型是一个带有卷积骨干网络的编码器-解码器Transformer架构。在解码器输出端添加了两个头部用于目标检测:一个线性层用于分类标签,一个多层感知机(MLP)用于边界框预测。模型通过"对象查询"机制检测图像中的目标,每个查询对应图像中的一个特定对象。在COCO数据集中,对象查询数量设置为100。
模型训练采用"二分匹配损失":将N=100个对象查询的预测类别和边界框与填充至相同长度N的真实标注进行对比(例如若图像仅含4个对象,剩余96个标注的类别设为"无对象",边界框设为"无边界框")。通过匈牙利匹配算法建立查询与标注间的最优一对一映射,随后使用标准交叉熵损失(分类)与L1损失及广义IoU损失的线性组合(边界框)来优化模型参数。
通过在全景分割任务中,DETR可自然扩展为在解码器输出端添加掩膜头部。

应用场景与限制
该原始模型可用于全景分割任务。访问模型中心查看所有可用DETR模型。
使用方法
使用方式如下:
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模型基于COCO 2017全景数据集训练,包含11.8万张训练图像和5千张验证图像。
训练流程
预处理
训练/验证阶段的图像预处理细节详见此处。
图像缩放至短边至少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}
}