DINO-DETR
IDEA ResearchがDINOとして発表したDINO-DETRは、Deformable DETRのスパースアテンションに、対照的デノイジング学習と混合クエリ選択を組み合わせています。LibreYOLOでは、推論専用の検出モデルを3サイズ提供します。
- タスク
- detection
- サイズ
- r50, r50s5, swinl at 800 px
- インストール
pip install libreyolo- サポートティア
- 推論のみ、v以降。推論、検証、エクスポートのみです。学習機能は対象外です。
- ライセンス
- コード:Apache-2.0、重み:Apache-2.0。商用利用
インストール
DINO-DETRに追加オプションは必要ありません。インポートするものはすべて基本インストールに含まれており、LibreYOLOの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("LibreDINODETRr50.pt")result = model(SAMPLE_IMAGE, save=True) for box in result.boxes: print(box.cls, box.conf, box.xyxy)libreyolo predict model=LibreDINODETRr50.pt source=https://raw.githubusercontent.com/LibreYOLO/libreyolo/release/libreyolo/assets/parkour.jpg save=True返されるResultsオブジェクトは全ファミリーで共通なので、別の検出器への切り替えは1行の変更で済みます。confとmax_detはクエリ選択を絞り込みます。iouはAPI互換性のため受け付けますが効果はありません。デコーダーがNMS処理を行わない集合予測器だからです。入力ソース、ストリーミング、結果の処理については推論を参照してください。
LibreYOLOのDINO-DETRは推論専用です。アップストリームでは対照的デノイジングとハンガリアンマッチングを用いて学習しますが、その手法はここでは実装されていないため、train()はNotImplementedErrorを送出します。
バリアント
3つのチェックポイントはすべて同じ入力解像度です。r50とr50s5はResNet-50バックボーンを共有し、デコーダーに渡す特徴マップのスケール数が4つと5つで異なります。swinlはバックボーンをSwin-Lに置き換え、同じく5つのスケールを使用します。
検証
val()は、学習に使用した形式の任意のデータセットに対して測定した適合率、再現率、mAP 50、mAP 50-95を含むmetrics/キーの辞書を返します。
from libreyolo import LibreYOLO model = LibreYOLO("LibreDINODETRr50.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=LibreDINODETRr50.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("LibreDINODETRr50.pt")model.export(format="onnx", imgsz=800)model.export(format="tensorrt", imgsz=800, half=True)libreyolo export model=LibreDINODETRr50.pt format=onnx imgsz=800libreyolo export model=LibreDINODETRr50.pt format=tensorrt imgsz=800 half=Truefrom libreyolo import LibreYOLO, SAMPLE_IMAGE # ファクトリはファイルの拡張子に応じて振り分けるためエクスポートした# アーティファクトもチェックポイントと同様に読み込まれ同じResultsオブジェクトを返すmodel = LibreYOLO("LibreDINODETRr50.onnx")result = model(SAMPLE_IMAGE) print(result.boxes.xyxy)チェックポイント
このファミリーで公開されているすべての重みファイルです。
| ファイル | 入力(px) | 重みのライセンス |
|---|---|---|
| Detection | ||
| LibreDINODETRr50.pt | 800 | apache-2.0 |
| LibreDINODETRr50s5.pt | 800 | apache-2.0 |
| LibreDINODETRswinl.pt | 800 | apache-2.0 |
上記のすべてのファイルは現在LibreYOLO orgにあり、初回使用時にダウンロードされます。
ライセンス
ダウンロードする特定の重みについて、Hugging Faceリポジトリのライセンスを確認してください。LibreYOLO orgの各チェックポイントにはライセンスが付与されており、同じファミリー内でも常に同一とは限りません。そのリポジトリが正式な情報源です。以下の概要は、このページを最後に検証した時点で適用されていた内容を示します。
これは関連するライセンスの説明であり、法的助言ではありません。商用上重要な場合は、自分でライセンスを読み、専門家の助言を受けてください。
- 原著作物
- DINO-DETR, IDEA Research
- アップストリームのライセンス
- Apache-2.0
- アップストリームのソース
- github.com/IDEA-Research/DINO
- 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 three checkpoints come from the authors' Google Drive release rather than a Hugging Face model card, and the upstream repository does not attach a license to the checkpoint files individually, so the redistribution basis is the repository-level Apache-2.0 declaration rather than a checkpoint-specific grant.
3つの公式チェックポイントはHugging Faceのモデルカードではなく、著者のGoogle Driveリリースフォルダーから取得されています。アップストリームのリポジトリはリポジトリ単位でApache-2.0を宣言していますが、チェックポイント自体にライセンスファイルやライセンスのメタデータを添付していません。そのため、再配布の根拠はチェックポイント固有の許諾ではなく、リポジトリ単位の宣言です。LibreYOLOの各ミラーには、この経緯を説明する告知とともに、アップストリームのApache-2.0ライセンステキストが変更なしで同梱されています。
引用
@misc{zhang2022dino,
title={DINO: DETR with Improved DeNoising Anchor Boxes for End-to-End Object Detection},
author={Hao Zhang and Feng Li and Shilong Liu and Lei Zhang and Hang Su and Jun Zhu and Lionel M. Ni and Heung-Yeung Shum},
year={2022},
eprint={2203.03605},
archivePrefix={arXiv},
primaryClass={cs.CV}
}
@inproceedings{li2022dn,
title={Dn-detr: Accelerate detr training by introducing query denoising},
author={Li, Feng and Zhang, Hao and Liu, Shilong and Guo, Jian and Ni, Lionel M and Zhang, Lei},
booktitle={Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition},
pages={13619--13627},
year={2022}
}
@inproceedings{
liu2022dabdetr,
title={{DAB}-{DETR}: Dynamic Anchor Boxes are Better Queries for {DETR}},
author={Shilong Liu and Feng Li and Hao Zhang and Xiao Yang and Xianbiao Qi and Hang Su and Jun Zhu and Lei Zhang},
booktitle={International Conference on Learning Representations},
year={2022},
url={https://openreview.net/forum?id=oMI9PjOb9Jl}
}著者によるgithub.com/IDEA-Research/DINO#bibtexの引用ブロックからコピーしています。