Deformable DETR
Deformable DETRはDETRの密なcross-attentionを、各参照点の周囲で行う疎なマルチスケールサンプリングへ置き換えます。これにより、Transformer検出器の学習が実用的になりました。LibreYOLOは検出向けに5つのサイズを推論専用として提供します。
- タスク
- detection
- サイズ
- r50ss, r50ssdc5, r50, r50refine, r50twostage at 800 px
- インストール
pip install libreyolo- サポートティア
- 推論のみ、v以降。推論、検証、エクスポートのみです。学習機能は対象外です。
- ライセンス
- コード:Apache-2.0、重み:Apache-2.0。商用利用
インストール
Deformable DETRにオプションの追加パッケージは不要です。インポートするものはすべて基本インストールに含まれ、純粋なPyTorchによるマルチスケール変形可能アテンションコアを使用します。
pip install libreyololibreyolo[hub-kernels] のインストールはオプションです。kernels パッケージが存在すると、LibreYOLOは実行時にHugging Face Hubからコンパイル済みのマルチスケール変形可能アテンションカーネルを取得し、純粋なPyTorchコアの代わりに使用します。LIBREYOLO_HUB_KERNELS=0 で再び無効にできます。
推論
重みは初回使用時にHugging Faceからダウンロードされ、ローカルにキャッシュされます。
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)libreyolo predict model=LibreDeformableDETRr50.pt source=https://raw.githubusercontent.com/LibreYOLO/libreyolo/release/libreyolo/assets/parkour.jpg save=True返される Results オブジェクトはすべてのファミリーで共通のため、別の検出器への置き換えは1行の変更で済みます。conf と max_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で、学習に使用した形式の任意のデータセットに対して測定されます。
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"])libreyolo val model=LibreDeformableDETRr50.pt data=my-dataset.yamlエクスポート
| タスク | ONNX | TorchScript | ExecuTorch | TensorRT | OpenVINO | Paddle | MNN | RKNN | ncnn | TFLite | CoreML | Core AI |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Detection | Detection 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 を返します。エクスポートでは、すべての形式が受け付ける引数を説明しています。
from libreyolo import LibreYOLO model = LibreYOLO("LibreDeformableDETRr50.pt")model.export(format="onnx", imgsz=800)model.export(format="tensorrt", imgsz=800, half=True)libreyolo export model=LibreDeformableDETRr50.pt format=onnx imgsz=800libreyolo export model=LibreDeformableDETRr50.pt format=tensorrt imgsz=800 half=Truefrom libreyolo import LibreYOLO, SAMPLE_IMAGE # ファクトリーはファイル接尾辞で振り分けるためエクスポート済み成果物も# チェックポイントと同様に読み込まれて同じResultsオブジェクトを返すmodel = LibreYOLO("LibreDeformableDETRr50.onnx")result = model(SAMPLE_IMAGE) print(result.boxes.xyxy)チェックポイント
このファミリーで公開されているすべての重みファイルです。
| ファイル | 入力(px) | 重みのライセンス |
|---|---|---|
| Detection | ||
| LibreDeformableDETRr50ss.pt | 800 | apache-2.0 |
| LibreDeformableDETRr50ssdc5.pt | 800 | apache-2.0 |
| LibreDeformableDETRr50.pt | 800 | apache-2.0 |
| LibreDeformableDETRr50twostage.pt | 800 | apache-2.0 |
| LibreDeformableDETRr50refine.pt | 800 | apache-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の引用ブロックからコピーしています。