Markdownで表示

Grounding DINO

Grounding DINOはIDEA Researchが開発したオープンセット物体検出器で、固定クラス一覧ではなく自由テキストのプロンプトと画像を照合してスコアを付けます。LibreYOLOは、オープンボキャブラリ検出器階層の推論専用ファミリーとしてこれをラップします。

タスク
detection
サイズ
t, b at 800 px
インストール
pip install libreyolo
サポートティア
姉妹ティア、v以降。独自のファクトリと契約を持つ、独立した製品インターフェースです。
アップストリーム
IDEA ResearchのGrounding DINO、Apache-2.0。論文ソース
ライセンス
コード:MIT、重み:Apache-2.0。商用利用

インストール

Grounding DINOはLibreYOLOのオープンボキャブラリ検出器階層を通じて読み込まれます。この階層には openvocab 追加パッケージが必要です。

bash
pip install "libreyolo[openvocab]"

この追加パッケージは、この階層から呼び出すHugging Faceライブラリの transformerstimm を導入します。

推論

Grounding DINOは、LibreYOLOが LibreYOLO() を通じて読み込むチェックポイントではありません。関連する LibreOpenVocab ファクトリーを通じて読み込まれます。このファクトリーは初回使用時にHugging Faceのスナップショットをダウンロードし、weights/ の下にキャッシュします。

Python
from libreyolo import LibreOpenVocab, SAMPLE_IMAGE model = LibreOpenVocab("grounding-dino-t")model.set_classes(["person", "dog", "skateboard"]) result = model.predict(SAMPLE_IMAGE, conf=0.25)for box in result.boxes:    print(box.cls, box.conf, box.xyxy)
テキストしきい値
from libreyolo import LibreOpenVocab, SAMPLE_IMAGE model = LibreOpenVocab("grounding-dino-b")model.set_classes(["remote control", "school bus"]) # confはボックススコアでtext_thresholdはデコードされた句の# トークンスコアでフィルタリング 未指定時はどちらもデフォルト0.25result = model.predict(SAMPLE_IMAGE, conf=0.25, text_threshold=0.3)print(result.names)

set_classes() は維持されるテキストボキャブラリを設定します。一覧を置き換えるには再度呼び出し、省略するとデフォルトのCOCO-80ラベルが維持されます。Grounding DINOは独自のテキスト出力から自由形式の句をデコードし、自分でそのボキャブラリに対応付けます。正規化後の完全一致を優先し、単語単位の一致も受け付けます。曖昧な句や一致しない句は推測せず除外されるため、school busbus または school だけに対応付けられることはありません。テキストエンコーダーのトークン上限を超える長いボキャブラリは複数のプロンプトに分割され、個別の順伝播として実行された後、max_det を上限とする1つの検出集合に統合されます。

API互換性のため iou は受け付けますが、警告を表示して何も行いません。ここではNMSを実行しないためです。imgszaugment=True は即座に拒否されます。リサイズは transformers プロセッサーが管理し、テスト時拡張はこの階層の対象外です。1枚の画像に対する predict() は一覧ではなく1つの Results を返します。複数の結果を得るには、ディレクトリ、画像一覧を渡すか、動画ソースで stream=True を指定します。このファミリーにはCLI経路がありません。libreyolo predictLibreYOLO() を通じて .pt チェックポイントだけを読み込むため、LibreOpenVocab ファミリーはPythonから実行します。ソースの種類とストリーミングについては、推論を参照してください。

バリアント

チェックポイントは tb の2つです。サイズを指定しない場合、この階層のデフォルトは t です。どちらも transformersGroundingDinoForObjectDetection を通じてIDEA Researchの公式リリースをミラーしています。アップストリームのファイルを保持するLibreYOLO管理のHugging Faceスナップショットへ1回だけダウンロードされます。このファミリーの精度値やレイテンシ値はまだ公開されていません。

学習、データセット検証、エクスポートはすべてこの階層の対象外です。train()val()export() はすべて無条件に NotImplementedError を発生させます。これは公開済みチェックポイントを扱う推論専用ラッパーです。

チェックポイント

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

ファイル入力(px)重みのライセンス
Detection
LibreGroundingDINOt.pt800apache-2.0
LibreGroundingDINOb.pt800apache-2.0

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

ライセンス

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

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

原著作物
Grounding DINO, IDEA Research
アップストリームのライセンス
Apache-2.0
アップストリームのソース
github.com/IDEA-Research/GroundingDINO
LibreYOLOのコード
MIT
重み
Apache-2.0、huggingface.co/LibreYOLOで再公開
解釈
Apache-2.0 is a permissive license, so this checkpoint can be used in commercial and closed-source products. It asks you to keep the license text and attribution notices with any copy of the weights you redistribute, and it grants a patent license. LibreYOLO vendors no Grounding DINO model source of its own: LibreGroundingDINO calls the Apache-2.0 `transformers` implementation, `GroundingDinoForObjectDetection`, directly, and downloads the official checkpoint into a LibreYOLO-hosted mirror repository that preserves the upstream snapshot files.

引用

@article{liu2023grounding,
  title={Grounding dino: Marrying dino with grounded pre-training for open-set object detection},
  author={Liu, Shilong and Zeng, Zhaoyang and Ren, Tianhe and Li, Feng and Zhang, Hao and Yang, Jie and Li, Chunyuan and Yang, Jianwei and Su, Hang and Zhu, Jun and others},
  journal={arXiv preprint arXiv:2303.05499},
  year={2023}
}

著者によるgithub.com/IDEA-Research/GroundingDINO#black_nib-citationの引用ブロックからコピーしています。

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