语言:
- 英文
库名称: transformers
许可证: apache-2.0
管道标签: 目标检测
标签:
- 视觉
- 目标检测
模型ID的模型卡
目录
- 模型详情
- 模型来源
- 如何开始使用模型
- 训练详情
- 评估
- 模型架构与目标
- 引用
模型详情

本文提出了一种新颖的查询公式,使用动态锚框用于DETR(DEtection TRansformer),并深入理解了查询在DETR中的作用。这一新公式直接在Transformer解码器中使用框坐标作为查询,并逐层动态更新它们。使用框坐标不仅有助于利用显式位置先验来改善查询到特征的相似性,消除DETR中训练收敛缓慢的问题,还允许我们使用框的宽度和高度信息来调节位置注意力图。这样的设计清楚地表明,DETR中的查询可以以级联方式逐层执行软ROI池化。因此,在相同设置下,它在MS-COCO基准测试中表现最佳,例如,使用ResNet50-DC5作为骨干网络训练50个周期,AP达到45.7%。我们还进行了大量实验来验证我们的分析和方法的有效性。
模型描述
这是🤗 transformers模型的一个模型卡,该模型已推送到Hub上。此模型卡是自动生成的。
- 开发者: Shilong Liu, Feng Li, Hao Zhang, Xiao Yang, Xianbiao Qi, Hang Su, Jun Zhu, Lei Zhang
- 资助者: IDEA-Research
- 共享者: David Hajdu
- 模型类型: DAB-DETR
- 许可证: Apache-2.0
模型来源
- 仓库: https://github.com/IDEA-Research/DAB-DETR
- 论文: https://arxiv.org/abs/2201.12329
如何开始使用模型
使用以下代码开始使用模型。
import torch
import requests
from PIL import Image
from transformers import AutoModelForObjectDetection, AutoImageProcessor
url = 'http://images.cocodataset.org/val2017/000000039769.jpg'
image = Image.open(requests.get(url, stream=True).raw)
image_processor = AutoImageProcessor.from_pretrained("IDEA-Research/dab-detr-resnet-50-dc5-pat3")
model = AutoModelForObjectDetection.from_pretrained("IDEA-Research/dab-detr-resnet-50-dc5-pat3")
inputs = image_processor(images=image, return_tensors="pt")
with torch.no_grad():
outputs = model(**inputs)
results = image_processor.post_process_object_detection(outputs, target_sizes=torch.tensor([image.size[::-1]]), threshold=0.3)
for result in results:
for score, label_id, box in zip(result["scores"], result["labels"], result["boxes"]):
score, label = score.item(), label_id.item()
box = [round(i, 2) for i in box.tolist()]
print(f"{model.config.id2label[label]}: {score:.2f} {box}")
这将输出
remote: 0.84 [39.72, 73.18, 177.02, 119.15]
cat: 0.82 [341.19, 23.94, 641.08, 369.33]
cat: 0.82 [11.81, 50.36, 318.21, 472.41]
remote: 0.81 [334.1, 77.0, 368.36, 189.37]
couch: 0.52 [0.22, 1.87, 640.21, 474.03]
训练详情
训练数据
DAB-DETR模型在COCO 2017目标检测数据集上训练,该数据集包含118k/5k分别用于训练/验证的标注图像。
训练过程
遵循Deformable DETR和Conditional DETR,我们使用300个锚点作为查询。我们选择300个具有最大分类logits的预测框和标签进行评估。我们还使用focal loss(Lin等人,2020)进行分类,α=0.25,γ=2。在二分匹配和最终损失计算中使用相同的损失项,但系数不同。分类损失在二分匹配中使用系数2.0,但在最终损失中使用1.0。L1损失系数5.0和GIOU损失(Rezatofighi等人,2019)系数2.0在匹配和最终损失计算过程中保持一致。所有模型在16个GPU上训练,每个GPU处理1张图像,使用AdamW(Loshchilov & Hutter,2018)进行训练,权重衰减为10−4。骨干网络和其他模块的学习率分别设置为10−5和10−4。我们训练模型50个周期,并在40个周期后将学习率降低0.1。所有模型在Nvidia A100 GPU上训练。我们使用批量大小为64搜索超参数,论文中的所有结果均以批量大小16报告。
预处理
图像被调整大小/重新缩放,使最短边至少为480像素,最多为800像素,长边最多为1333像素,并使用ImageNet均值(0.485, 0.456, 0.406)和标准差(0.229, 0.224, 0.225)在RGB通道上进行归一化。
训练超参数
键 |
值 |
activation_dropout |
0.0 |
activation_function |
prelu |
attention_dropout |
0.0 |
auxiliary_loss |
false |
backbone |
resnet50 |
bbox_cost |
5 |
bbox_loss_coefficient |
5 |
class_cost |
2 |
cls_loss_coefficient |
2 |
decoder_attention_heads |
8 |
decoder_ffn_dim |
2048 |
decoder_layers |
6 |
dropout |
0.1 |
encoder_attention_heads |
8 |
encoder_ffn_dim |
2048 |
encoder_layers |
6 |
focal_alpha |
0.25 |
giou_cost |
2 |
giou_loss_coefficient |
2 |
hidden_size |
256 |
init_std |
0.02 |
init_xavier_std |
1.0 |
initializer_bias_prior_prob |
null |
keep_query_pos |
false |
normalize_before |
false |
num_hidden_layers |
6 |
num_patterns |
0 |
num_queries |
300 |
query_dim |
4 |
random_refpoints_xy |
false |
sine_position_embedding_scale |
null |
temperature_height |
20 |
temperature_width |
20 |
评估

模型架构与目标

DAB-DETR概述。我们使用CNN骨干网络提取图像空间特征,然后通过Transformer编码器细化CNN特征。然后,双查询(包括位置查询(锚框)和内容查询(解码器嵌入))被输入解码器以探测与锚框对应的对象,并具有与内容查询相似的模式。双查询逐层更新以逐渐接近目标真实对象。最终解码器层的输出用于通过预测头预测带有标签和框的对象,然后进行二分图匹配以计算损失,如DETR中所示。
引用
BibTeX:
@inproceedings{
liu2022dabdetr,
title={{DAB}-{DETR}: Dynamic Anchor Boxes are Better Queries for {DETR}},
author={Shilong Liu and Feng Li and Hao Zhang and Xiao Yang and Xianbiao Qi and Hang Su and Jun Zhu and Lei Zhang},
booktitle={International Conference on Learning Representations},
year={2022},
url={https://openreview.net/forum?id=oMI9PjOb9Jl}
}
模型卡作者
David Hajdu