🚀 DETR (エンドツーエンド物体検出) モデル(ResNet-50バックボーン)
このモデルは、COCO 2017物体検出データセット(118k枚の注釈付き画像)を用いてエンドツーエンドで学習されたDETRモデルです。物体検出タスクに特化したトランスフォーマーベースのモデルです。
🚀 クイックスタート
DETR (DEtection TRansformer) モデルは、COCO 2017物体検出データセットを使ってエンドツーエンドで学習されました。このモデルは、Carionらによる論文 End-to-End Object Detection with Transformers で導入され、このリポジトリ で最初に公開されました。
なお、DETRを公開したチームはこのモデルのモデルカードを作成していないため、このモデルカードはHugging Faceチームによって作成されています。
✨ 主な機能
モデルの説明
DETRモデルは、畳み込みバックボーンを持つエンコーダ・デコーダ型のトランスフォーマーです。物体検出を行うために、デコーダの出力に2つのヘッドが追加されています。1つはクラスラベルを出力する線形層で、もう1つはバウンディングボックスを出力するMLP(多層パーセプトロン)です。このモデルは、画像内の物体を検出するためにいわゆる物体クエリを使用します。各物体クエリは、画像内の特定の物体を探します。COCOの場合、物体クエリの数は100に設定されています。
このモデルは「二部マッチング損失」を使用して学習されます。具体的には、N = 100の各物体クエリの予測クラスとバウンディングボックスを、同じ長さNにパディングされた正解注釈と比較します(つまり、画像に4つの物体しか含まれていない場合、96の注釈はクラスとして「物体なし」、バウンディングボックスとして「ボックスなし」になります)。ハンガリアンマッチングアルゴリズムを使用して、N個のクエリとN個の注釈の間に最適な1対1のマッピングを作成します。次に、標準的な交差エントロピー(クラスに対して)とL1損失と一般化IoU損失の線形結合(バウンディングボックスに対して)を使用して、モデルのパラメータを最適化します。

想定される用途と制限
この生モデルは物体検出に使用できます。利用可能なすべてのDETRモデルを探すには、モデルハブ を参照してください。
📦 インストール
このモデルを使用するには、必要なライブラリをインストールする必要があります。以下のコマンドを使用して、transformers
、torch
、Pillow
、requests
をインストールできます。
pip install transformers torch Pillow requests
💻 使用例
基本的な使用法
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モデルは、COCO 2017物体検出 データセットを使用して学習されました。このデータセットは、学習用に118k枚、検証用に5k枚の注釈付き画像で構成されています。
学習手順
前処理
学習/検証中の画像の前処理の詳細は、こちら を参照してください。
画像は、最短辺が少なくとも800ピクセル、最長辺が最大1333ピクセルになるようにリサイズ/リスケールされ、RGBチャンネル全体でImageNetの平均(0.485, 0.456, 0.406)と標準偏差(0.229, 0.224, 0.225)を使用して正規化されます。
学習
このモデルは、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}
}
📄 ライセンス
このモデルはApache-2.0ライセンスの下で公開されています。