Markdownで表示

Deformable DETR

Deformable DETRはDETRの密なcross-attentionを、各参照点の周囲で行う疎なマルチスケールサンプリングへ置き換えます。これにより、Transformer検出器の学習が実用的になりました。LibreYOLOは検出向けに5つのサイズを推論専用として提供します。

タスク
detection
サイズ
r50ss, r50ssdc5, r50, r50refine, r50twostage at 800 px
インストール
pip install libreyolo
サポートティア
推論のみ、v以降。推論、検証、エクスポートのみです。学習機能は対象外です。
アップストリーム
SenseTimeのDeformable DETR、Apache-2.0。論文ソース
ライセンス
コード:Apache-2.0、重み:Apache-2.0。商用利用

インストール

Deformable DETRにオプションの追加パッケージは不要です。インポートするものはすべて基本インストールに含まれ、純粋なPyTorchによるマルチスケール変形可能アテンションコアを使用します。

bash
pip install libreyolo

libreyolo[hub-kernels] のインストールはオプションです。kernels パッケージが存在すると、LibreYOLOは実行時にHugging Face Hubからコンパイル済みのマルチスケール変形可能アテンションカーネルを取得し、純粋なPyTorchコアの代わりに使用します。LIBREYOLO_HUB_KERNELS=0 で再び無効にできます。

推論

重みは初回使用時にHugging Faceからダウンロードされ、ローカルにキャッシュされます。

Python
from libreyolo import LibreYOLO, SAMPLE_IMAGE model = LibreYOLO("LibreDeformableDETRr50.pt")result = model(SAMPLE_IMAGE, save=True) for box in result.boxes:    print(box.cls, box.conf, box.xyxy)
CLI
libreyolo predict model=LibreDeformableDETRr50.pt source=https://raw.githubusercontent.com/LibreYOLO/libreyolo/release/libreyolo/assets/parkour.jpg save=True

返される Results オブジェクトはすべてのファミリーで共通のため、別の検出器への置き換えは1行の変更で済みます。confmax_det はクエリ選択をフィルタリングします。APIの一貫性のため iou は受け付けますが、デコーダーがNMS処理のない集合予測器なので効果はありません。ソース、ストリーミング、結果の処理については、推論を参照してください。

LibreYOLOのDeformable DETRは推論専用です。アップストリームはHungarian matchingとfocal classification lossで学習します。そのレシピはここで実装されていないため、train()NotImplementedError を発生させます。

バリアント

5つのチェックポイントが公開構成を網羅し、すべて同じ入力解像度です。r50ss はアテンションを1つの特徴スケールに限定します。r50ssdc5 はそれにdilated C5バックボーン段階を追加します。r50 はデフォルトのマルチスケール構成で、4つの特徴マップレベルをまたいでサンプリングします。r50refine はデコーダー層をまたぐ反復的なバウンディングボックス改善を追加し、r50twostage は学習済みクエリではなくエンコーダー出力から初期領域提案を生成します。

検証

val()metrics/ キーの辞書を返します。内容は適合率、再現率、mAP 50、mAP 50-95で、学習に使用した形式の任意のデータセットに対して測定されます。

Python
from libreyolo import LibreYOLO model = LibreYOLO("LibreDeformableDETRr50.pt") # val()はオブジェクトではなく通常のdictを返すmetrics = model.val(data="my-dataset.yaml") print(metrics["metrics/mAP50-95"])print(metrics["metrics/mAP50"])print(metrics["metrics/precision"], metrics["metrics/recall"])
CLI
libreyolo val model=LibreDeformableDETRr50.pt data=my-dataset.yaml

エクスポート

タスクONNXTorchScriptExecuTorchTensorRTOpenVINOPaddleMNNRKNNncnnTFLiteCoreMLCore AI
DetectionDetection to ONNX:対応Detection to TorchScript:対応Detection to ExecuTorch:対応Detection to TensorRT:対応Detection to OpenVINO:対応Detection to Paddle:非対応Detection to MNN:非対応Detection to RKNN:非対応Detection to ncnn:非対応Detection to TFLite:非対応Detection to CoreML:非対応Detection to Core AI:非対応

エクスポート済み成果物はファイル接尾辞によって LibreYOLO() から再度読み込まれるため、.onnx または .engine ファイルはチェックポイントのように動作し、同じ Results を返します。エクスポートでは、すべての形式が受け付ける引数を説明しています。

Python
from libreyolo import LibreYOLO model = LibreYOLO("LibreDeformableDETRr50.pt")model.export(format="onnx", imgsz=800)model.export(format="tensorrt", imgsz=800, half=True)
CLI
libreyolo export model=LibreDeformableDETRr50.pt format=onnx imgsz=800libreyolo export model=LibreDeformableDETRr50.pt format=tensorrt imgsz=800 half=True
エクスポートしたファイルを使う
from libreyolo import LibreYOLO, SAMPLE_IMAGE # ファクトリーはファイル接尾辞で振り分けるためエクスポート済み成果物も# チェックポイントと同様に読み込まれて同じResultsオブジェクトを返すmodel = LibreYOLO("LibreDeformableDETRr50.onnx")result = model(SAMPLE_IMAGE) print(result.boxes.xyxy)

チェックポイント

このファミリーで公開されているすべての重みファイルです。

ファイル入力(px)重みのライセンス
Detection
LibreDeformableDETRr50ss.pt800apache-2.0
LibreDeformableDETRr50ssdc5.pt800apache-2.0
LibreDeformableDETRr50.pt800apache-2.0
LibreDeformableDETRr50twostage.pt800apache-2.0
LibreDeformableDETRr50refine.pt800apache-2.0

上記のすべてのファイルは現在LibreYOLO orgにあり、初回使用時にダウンロードされます。

ライセンス

ダウンロードする特定の重みについて、Hugging Faceリポジトリのライセンスを確認してください。LibreYOLO orgの各チェックポイントにはライセンスが付与されており、同じファミリー内でも常に同一とは限りません。そのリポジトリが正式な情報源です。以下の概要は、このページを最後に検証した時点で適用されていた内容を示します。

これは関連するライセンスの説明であり、法的助言ではありません。商用上重要な場合は、自分でライセンスを読み、専門家の助言を受けてください。

原著作物
Deformable DETR, SenseTime
アップストリームのライセンス
Apache-2.0
アップストリームのソース
github.com/fundamentalvision/Deformable-DETR
LibreYOLOのコード
MIT
重み
Apache-2.0、huggingface.co/LibreYOLOで再公開
解釈
Apache-2.0 is a permissive license, so these weights can be used in commercial and closed-source products. It asks you to keep its license text and attribution notices with any copy of the weights you redistribute, and it grants a patent license. It places no obligation on your own application code, and weights you train yourself on your own data are yours. The five checkpoints are converted from SenseTime's own Hugging Face mirrors, each of which declares apache-2.0 in its model card; that declaration, not the original repository's Google Drive release links, is the redistribution basis.

引用

@article{zhu2020deformable,
  title={Deformable DETR: Deformable Transformers for End-to-End Object Detection},
  author={Zhu, Xizhou and Su, Weijie and Lu, Lewei and Li, Bin and Wang, Xiaogang and Dai, Jifeng},
  journal={arXiv preprint arXiv:2010.04159},
  year={2020}
}

著者によるgithub.com/fundamentalvision/Deformable-DETR#citing-deformable-detrの引用ブロックからコピーしています。

LibreYOLO v1.5.0で検証済みです。このページのサポート表、チェックポイント、ベンチマーク値は手作業で記述したものではなく、リリース済みライブラリと公開済みの重みから生成されています。