模型:

facebook/detr-resnet-101-dc5

英文

DETR (端到端目标检测) 模型,使用 ResNet-101 作为骨干网络 (扩张的 C5 阶段)

DETR 模型是一个端到端的编码器-解码器 Transformer,具有一个卷积骨干网络。在解码器输出的顶部添加了两个头,用于执行目标检测:一个线性层用于类别标签,一个多层感知器 (MLP) 用于边界框。模型使用所谓的对象查询来检测图像中的对象。每个对象查询在图像中寻找特定的对象。对于 COCO 数据集,对象查询的数量设置为 100。

该模型使用"二分匹配损失"进行训练:将每个 N = 100 个对象查询预测的类别和边界框与地面实况注释进行比较,进行填充以达到相同的长度 N(因此,如果图像只包含 4 个对象,则 96 个注释仅具有"无对象"作为类别和"无边界框"作为边界框)。匈牙利匹配算法用于创建每个 N 个查询和每个 N 个注释之间的最佳一对一映射。接下来,使用标准交叉熵(用于类别)和 L1 与广义 IoU 损失的线性组合(用于边界框)来优化模型的参数。

预期用途和限制

您可以使用原始模型进行目标检测。请查看 model hub 以查找所有可用的 DETR 模型。

如何使用

这是如何使用该模型的方法:

from transformers import DetrFeatureExtractor, DetrForObjectDetection
from PIL import Image
import requests

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-101-dc5')
model = DetrForObjectDetection.from_pretrained('facebook/detr-resnet-101-dc5')

inputs = feature_extractor(images=image, return_tensors="pt")
outputs = model(**inputs)

# model predicts bounding boxes and corresponding COCO classes
logits = outputs.logits
bboxes = outputs.pred_boxes

目前,特征提取器和模型都支持 PyTorch。

训练数据

DETR 模型在 COCO 2017 object detection 上进行了训练,该数据集由 118k/5k 个带注释的图像用于训练/验证。

训练过程

预处理

有关训练/验证期间图像预处理的确切细节,请参阅 here

图像被调整大小/缩放,使得最短边至少为 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 验证集上实现了 44.9 的 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}
}