Markdownで表示

OMDet-Turbo

OMDet-TurboはOm AI Labが開発したリアルタイムのオープンボキャブラリ物体検出器で、クラス埋め込みベクトルを言語タスクプロンプトから分離します。LibreYOLOはオープンボキャブラリ検出器層の推論専用ファミリーとしてラップします。

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

インストール

OMDet-TurboはLibreYOLOのオープンボキャブラリ検出器層から読み込まれます。この層には openvocab追加パッケージが必要です。

bash
pip install "libreyolo[openvocab]"

この追加パッケージでは、この層が呼び出すHugging Faceライブラリのtransformerstimmが インストールされます。OMDet-TurboのSwinバックボーンはtransformersTimmBackbone ラッパーから読み込まれます。

推論

OMDet-TurboはLibreYOLOがLibreYOLO()から読み込むチェックポイントではありません。同系列の LibreOpenVocabファクトリから読み込まれ、初回使用時にHugging Faceのスナップショットを ダウンロードしてweights/へキャッシュします。

Python
from libreyolo import LibreOpenVocab, SAMPLE_IMAGE model = LibreOpenVocab("omdet-turbo")model.set_classes(["person", "dog", "skateboard"]) result = model.predict(SAMPLE_IMAGE, conf=0.3)for box in result.boxes:    print(box.cls, box.conf, box.xyxy)
独自のNMSしきい値
from libreyolo import LibreOpenVocab, SAMPLE_IMAGE model = LibreOpenVocab("omdet-turbo")model.set_classes(["traffic light", "bicycle"]) # OMDet-Turboはこの層でiou=を反映する唯一のファミリー# 独自の後処理が抑制のしきい値を引数として受け取り# iou=未設定時のデフォルトは0.5result = model.predict(SAMPLE_IMAGE, conf=0.3, iou=0.7)print(result.names, len(result))

set_classes()は維持されるテキスト語彙を設定します。再度呼び出すとリスト全体を置き換え、 省略するとデフォルトのCOCO-80ラベルを維持します。空の結果もエラーではなく有効な結果です。 Grounding DINOと異なり、OMDet-Turboはクラス埋め込みベクトルを言語タスクプロンプトから分離します。 そのため、transformersの後処理が返すラベルは、フレーズの曖昧性を解消する処理なしで、問い合わせた クラスリストへ直接対応します。

OMDet-Turboにはtext-tokenしきい値がなく、検出を絞り込むのはconfだけです。 text_thresholdを渡すと例外が発生します。この層で post_process_grounded_object_detection内の独自non-maximum suppressionを実行する 唯一のファミリーであるため、iouは警告の対象にならず反映されます。imgszaugment=Trueは 完全に拒否されます。transformersのprocessorがリサイズを担当し、test-time augmentationは この層の対象外であるためです。1枚の画像に対するpredict()はリストではなく1個のResultsを 返します。複数の結果を得るには、ディレクトリ、画像のリスト、または動画ソースとstream=Trueを 渡します。このファミリーにCLI経路はありません。libreyolo predictLibreYOLO()から.pt チェックポイントだけを読み込むため、LibreOpenVocabファミリーはPythonから実行します。 入力ソースの種類とストリーミングについては推論を参照してください。

バリアント

チェックポイントはこの層で唯一のサイズtの1種類です。固定されたアップストリームrevisionの omlab/omdet-turbo-swin-tiny-hfを、transformersOmDetTurboForObjectDetectionを 通じてミラーします。ミラーした重みファイルは、そのアップストリームスナップショットと バイト単位で同一です。このファミリーでは精度またはレイテンシの数値がまだ公開されていません。

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

チェックポイント

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

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

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

ライセンス

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

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

原著作物
OMDet-Turbo, Om AI Lab
アップストリームのライセンス
Apache-2.0
アップストリームのソース
github.com/om-ai-lab/OmDet
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 OMDet-Turbo model source of its own: LibreOMDetTurbo calls the Apache-2.0 `transformers` implementation, `OmDetTurboForObjectDetection`, directly. The mirrored checkpoint is a byte-identical copy of `omlab/omdet-turbo-swin-tiny-hf` at a pinned upstream revision, verified against a recorded SHA-256 checksum before it is used.

引用

@article{zhao2024real,
  title={Real-time Transformer-based Open-Vocabulary Detection with Efficient Fusion Head},
  author={Zhao, Tiancheng and Liu, Peng and He, Xuan and Zhang, Lu and Lee, Kyusong},
  journal={arXiv preprint arXiv:2403.06892},
  year={2024}
}

著者によるgithub.com/om-ai-lab/OmDet#citationの引用ブロックからコピーしています。

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