🚀 DETR(端到端目标检测)模型,采用ResNet - 50骨干网络
DETR(Detection Transformer)模型在COCO 2017目标检测数据集(包含118k张带标注图像)上进行了端到端训练。该模型由Carion等人在论文End-to-End Object Detection with Transformers中提出,并首次在此仓库发布。
声明:发布DETR的团队并未为此模型撰写模型卡片,此模型卡片由Hugging Face团队编写。
🚀 快速开始
你可以使用原始模型进行目标检测。可查看模型中心以查找所有可用的DETR模型。
✨ 主要特性
- DETR模型是一个带有卷积骨干网络的编码器 - 解码器Transformer。
- 在解码器输出之上添加了两个头部以进行目标检测:一个用于类别标签的线性层和一个用于边界框的MLP(多层感知机)。
- 使用所谓的目标查询来检测图像中的目标,对于COCO数据集,目标查询数量设置为100。
- 训练时使用“二分匹配损失”,并通过匈牙利匹配算法创建查询与标注之间的最优一对一映射。
💻 使用示例
基础用法
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"Detected {model.config.id2label[label.item()]} with confidence "
f"{round(score.item(), 3)} at location {box}"
)
此代码应输出:
Detected remote with confidence 0.998 at location [40.16, 70.81, 175.55, 117.98]
Detected remote with confidence 0.996 at location [333.24, 72.55, 368.33, 187.66]
Detected couch with confidence 0.995 at location [-0.02, 1.15, 639.73, 473.76]
Detected cat with confidence 0.999 at location [13.24, 52.05, 314.02, 470.93]
Detected cat with confidence 0.999 at location [345.4, 23.85, 640.37, 368.72]
目前,特征提取器和模型均支持PyTorch。
📚 详细文档
模型描述
DETR模型是一个带有卷积骨干网络的编码器 - 解码器Transformer。在解码器输出之上添加了两个头部以进行目标检测:一个用于类别标签的线性层和一个用于边界框的MLP(多层感知机)。该模型使用所谓的目标查询来检测图像中的目标,每个目标查询在图像中寻找特定的目标。对于COCO数据集,目标查询数量设置为100。
模型使用“二分匹配损失”进行训练:将N = 100个目标查询的预测类别和边界框与真实标注进行比较,真实标注会填充到相同长度N(因此,如果一张图像仅包含4个目标,96个标注的类别将为“无目标”,边界框为“无边界框”)。匈牙利匹配算法用于在N个查询和N个标注之间创建最优的一对一映射。接下来,使用标准的交叉熵(用于类别)和L1与广义IoU损失的线性组合(用于边界框)来优化模型参数。

预期用途和局限性
你可以使用原始模型进行目标检测。可查看模型中心以查找所有可用的DETR模型。
训练数据
DETR模型在COCO 2017目标检测数据集上进行训练,该数据集分别包含118k/5k张用于训练/验证的带标注图像。
训练过程
预处理
训练/验证期间图像预处理的确切细节可在此处找到。
图像会进行调整大小/缩放,使最短边至少为800像素,最长边至多为1333像素,并在RGB通道上使用ImageNet均值(0.485, 0.456, 0.406)和标准差(0.229, 0.224, 0.225)进行归一化。
训练
模型在16个V100 GPU上训练了300个epoch,耗时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}
}
📄 许可证
本项目采用Apache - 2.0许可证。
属性 |
详情 |
模型类型 |
端到端目标检测模型,基于Transformer架构,采用ResNet - 50骨干网络 |
训练数据 |
COCO 2017目标检测数据集,包含118k/5k张用于训练/验证的带标注图像 |