🚀 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張用於訓練/驗證的帶標註圖像 |