🚀 DETR (エンドツーエンド物体検出) モデル(ResNet-101バックボーン)
このモデルは、COCO 2017パノプティック(118k枚の注釈付き画像)でエンドツーエンドで学習されたDEtection TRansformer (DETR) モデルです。このモデルは、Carionらによる論文 End-to-End Object Detection with Transformers で紹介され、最初は このリポジトリ で公開されました。
なお、DETRを公開したチームはこのモデルのモデルカードを作成していないため、このモデルカードはHugging Faceチームによって作成されています。
🚀 クイックスタート
このモデルは、画像内の物体検出やパノプティックセグメンテーションに使用できます。Transformerアーキテクチャを用いてエンドツーエンドで学習されており、COCOデータセットで訓練されています。
✨ 主な機能
- 物体検出:画像内の物体を検出し、クラスラベルとバウンディングボックスを出力します。
- パノプティックセグメンテーション:画像内の物体をセグメント化し、各物体のマスクを出力します。
- エンドツーエンド学習:Transformerアーキテクチャを用いてエンドツーエンドで学習されており、複雑なパイプラインを必要としません。
📦 インストール
このモデルを使用するには、transformers
ライブラリをインストールする必要があります。以下のコマンドでインストールできます。
pip install transformers
💻 使用例
基本的な使用法
from transformers import DetrFeatureExtractor, DetrForSegmentation
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-panoptic')
model = DetrForSegmentation.from_pretrained('facebook/detr-resnet-101-panoptic')
inputs = feature_extractor(images=image, return_tensors="pt")
outputs = model(**inputs)
processed_sizes = torch.as_tensor(inputs["pixel_values"].shape[-2:]).unsqueeze(0)
result = feature_extractor.post_process_panoptic(outputs, processed_sizes)[0]
panoptic_seg = Image.open(io.BytesIO(result["png_string"]))
panoptic_seg = numpy.array(panoptic_seg, dtype=numpy.uint8)
panoptic_seg_id = rgb_to_id(panoptic_seg)
高度な使用法
現時点では、特徴抽出器とモデルの両方がPyTorchをサポートしています。
📚 ドキュメント
モデルの説明
DETRモデルは、畳み込みバックボーンを持つエンコーダ・デコーダトランスフォーマーです。物体検出を行うために、デコーダ出力の上に2つのヘッドが追加されています。クラスラベル用の線形層と、バウンディングボックス用のMLP(多層パーセプトロン)です。このモデルは、いわゆる物体クエリを使用して画像内の物体を検出します。各物体クエリは、画像内の特定の物体を探します。COCOの場合、物体クエリの数は100に設定されています。
このモデルは、「二部マッチング損失」を使用して学習されます。つまり、N = 100の各物体クエリの予測クラスとバウンディングボックスを、同じ長さNにパディングされた正解注釈と比較します(つまり、画像に4つの物体しか含まれていない場合、96の注釈はクラスとして「物体なし」、バウンディングボックスとして「バウンディングボックスなし」になります)。ハンガリアンマッチングアルゴリズムを使用して、N個の各クエリとN個の各注釈の間に最適な1対1のマッピングを作成します。次に、標準的な交差エントロピー(クラス用)と、L1損失と一般化IoU損失の線形結合(バウンディングボックス用)を使用して、モデルのパラメータを最適化します。
DETRは、デコーダ出力の上にマスクヘッドを追加することで、自然にパノプティックセグメンテーションを行うように拡張できます。
想定される用途と制限
生のモデルをパノプティックセグメンテーションに使用できます。すべての利用可能な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エポック学習されました。これには3日かかり、GPUごとに4枚の画像が使用されます(したがって、総バッチサイズは64です)。
評価結果
このモデルは、COCO 2017検証で以下の結果を達成しています。ボックスAP(平均精度)が 40.1、セグメンテーションAP(平均精度)が 33、PQ(パノプティック品質)が 45.1 です。
評価結果の詳細については、元の論文の表5を参照してください。
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ライセンスの下で公開されています。