许可协议:apache-2.0
标签:
数据集:
示例展示:
- 图片链接:https://huggingface.co/datasets/mishig/sample_images/resolve/main/savanna.jpg
示例标题:热带草原
- 图片链接:https://huggingface.co/datasets/mishig/sample_images/resolve/main/football-match.jpg
示例标题:足球比赛
- 图片链接:https://huggingface.co/datasets/mishig/sample_images/resolve/main/airport.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个标注的类别为“无目标”,边界框为“无边界框”)。匈牙利匹配算法用于在N个查询和N个标注之间创建最优的一对一映射。接着,使用标准交叉熵损失(用于类别)和L1损失与广义IoU损失的线性组合(用于边界框)来优化模型参数。

预期用途与限制
您可以将该原始模型用于目标检测任务。请访问模型中心查看所有可用的DETR模型。
使用方法
以下是使用该模型的示例代码:
from transformers import DetrImageProcessor, DetrForObjectDetection
import torch
from PIL import Image
import requests
url = "http://images.cocodataset.org/val2017/000000039769.jpg"
image = Image.open(requests.get(url, stream=True).raw)
processor = DetrImageProcessor.from_pretrained("facebook/detr-resnet-50", revision="no_timm")
model = DetrForObjectDetection.from_pretrained("facebook/detr-resnet-50", revision="no_timm")
inputs = processor(images=image, return_tensors="pt")
outputs = model(**inputs)
target_sizes = torch.tensor([image.size[::-1]])
results = processor.post_process_object_detection(outputs, target_sizes=target_sizes, threshold=0.9)[0]
for score, label, box in zip(results["scores"], results["labels"], results["boxes"]):
box = [round(i, 2) for i in box.tolist()]
print(
f"检测到 {model.config.id2label[label.item()]},置信度 "
f"{round(score.item(), 3)},位置 {box}"
)
输出应类似如下:
检测到 remote,置信度 0.998,位置 [40.16, 70.81, 175.55, 117.98]
检测到 remote,置信度 0.996,位置 [333.24, 72.55, 368.33, 187.66]
检测到 couch,置信度 0.995,位置 [-0.02, 1.15, 639.73, 473.76]
检测到 cat,置信度 0.999,位置 [13.24, 52.05, 314.02, 470.93]
检测到 cat,置信度 0.999,位置 [345.4, 23.85, 640.37, 368.72]
目前,特征提取器和模型均支持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个周期,耗时3天,每块GPU处理4张图像(因此总批次大小为64)。
评估结果
该模型在COCO 2017验证集上达到了42.0的平均精度(AP)。更多评估细节请参考原论文的表1。
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}
}