EoMT

専用のpixel decoderを持たない標準的な視覚Transformer上に構築されたセグメンテーションネットワークです。encoder自体に追加された学習済みqueryがマスクを予測します。LibreYOLOはセマンティック、インスタンス、パノプティックセグメンテーションでEoMTに対応します。

タスク
semantic, instance segmentation, panoptic
サイズ
s, b, l at 512 px
インストール
pip install libreyolo
サポートティア
推論のみ、v以降。推論、検証、エクスポートのみです。学習機能は対象外です。
アップストリーム
TU Eindhoven, Mobile Perception Systems LabのEoMT、MIT。論文ソース
ライセンス
コード:MIT、重み:MIT。商用利用

インストール

EoMTに任意の追加パッケージは必要ありません。インポートするものはすべて基本インストールに含まれています。

bash
pip install libreyolo

推論

重みは初回使用時にHugging Faceからダウンロードされ、ローカルにキャッシュされます。ファイル名のタスク接尾辞(-sem-seg-panoptic)でタスクが選ばれ、LibreYOLO() はそのファイル名から推測するため task= 引数は不要です。

セマンティック
from libreyolo import LibreYOLO, SAMPLE_IMAGE model = LibreYOLO("LibreEoMTl-sem.pt")result = model(SAMPLE_IMAGE, save=True) mask = result.semantic_maskprint(mask.data.shape)   # (H, W)クラスIDprint(mask.classes)      # 画像内に存在するソート済みクラスID
インスタンスセグメンテーション
from libreyolo import LibreYOLO, SAMPLE_IMAGE # ファイル名の-seg接尾辞でinstanceタスクが選ばれるため# ここではtask引数が不要model = LibreYOLO("LibreEoMTl-seg.pt")result = model(SAMPLE_IMAGE, save=True) print(result.boxes.xyxy)print(result.masks.data.shape)
パノプティック
from libreyolo import LibreYOLO, SAMPLE_IMAGE model = LibreYOLO("LibreEoMTl-panoptic.pt")result = model(SAMPLE_IMAGE, save=True) pan = result.panopticprint(pan.data.shape)       # (H, W)セグメントIDprint(pan.segments_info)    # セグメントごとの[{"id": ..., "category_id": ...}, ...]
CLI
libreyolo predict model=LibreEoMTl-sem.pt source=https://raw.githubusercontent.com/LibreYOLO/libreyolo/release/libreyolo/assets/parkour.jpg save=True

セマンティックセグメンテーションは result.semantic_mask を埋め、.data にクラスIDの (H, W) 配列を格納します。インスタンスセグメンテーションは result.boxesresult.masks を埋め、ほかのセグメンテーションファミリーと同じ形を返します。パノプティックセグメンテーションは result.panoptic を埋めます。.data(H, W) のセグメントIDマップ、.segments_info にセグメントごとの {"id", "category_id"} 辞書のリストが格納されます。conf はquery選択を絞り込みます。semanticタスクはNMSなしでpixelごとにargmaxを取るため、iou は効果がありません。ソース、ストリーミング、結果の処理については推論を参照してください。

バリアント

DINOv2をバックボーンとするs・b・lの3つのencoderサイズがあります。semanticチェックポイントはADE20Kで512 px、instanceとpanopticのチェックポイントはCOCOで640 pxを使って学習され、instanceには1280 pxで学習された2つ目のチェックポイントもあります。アップストリームでDINOv2のinstance segmentation用重みが公開されているのはサイズlだけです。sとbはsemanticおよびpanopticだけで公開されています。DINOv3をバックボーンとするEoMTバリアントもアップストリームにはありますが、アクセス制限付きの非商用DINOv3重みに依存するため、ここでは提供しません。

LibreYOLOはEoMTを学習しません。このファミリーでは train()NotImplementedError を送出し、上のサポート階層では推論専用と示されています。

検証

val() はタスクに応じて処理を振り分けます。semanticは metrics/mIoUmetrics/pixel_accuracy を返します。インスタンスセグメンテーションは、ほかのセグメンテーションファミリーと同じマスク・ボックスmAPキーを返します。panopticはPanoptic Qualityを metrics/PQ として返し、metrics/SQ(segmentation quality)と metrics/RQ(recognition quality)へ分け、さらに metrics/PQ_thingsmetrics/PQ_stuff も返します。

セマンティック
from libreyolo import LibreYOLO model = LibreYOLO("LibreEoMTl-sem.pt")metrics = model.val(data="my-dataset.yaml") print(metrics["metrics/mIoU"])print(metrics["metrics/pixel_accuracy"])
インスタンスセグメンテーション
from libreyolo import LibreYOLO model = LibreYOLO("LibreEoMTl-seg.pt")metrics = model.val(data="my-dataset.yaml") print(metrics["metrics/mAP50-95(M)"])   # マスクprint(metrics["metrics/mAP50-95(B)"])   # ボックス
パノプティック
from libreyolo import LibreYOLO model = LibreYOLO("LibreEoMTl-panoptic.pt")metrics = model.val(data="my-dataset.yaml") print(metrics["metrics/PQ"])print(metrics["metrics/SQ"], metrics["metrics/RQ"])
CLI
libreyolo val model=LibreEoMTl-sem.pt data=my-dataset.yaml

エクスポート

タスクONNXTorchScriptExecuTorchTensorRTOpenVINOPaddleMNNRKNNncnnTFLiteCoreMLCore AI
semanticsemantic to ONNX:対応semantic to TorchScript:対応semantic to ExecuTorch:非対応semantic to TensorRT:対応semantic to OpenVINO:対応semantic to Paddle:非対応semantic to MNN:非対応semantic to RKNN:非対応semantic to ncnn:非対応semantic to TFLite:非対応semantic to CoreML:非対応semantic to Core AI:非対応
Instance segmentationInstance segmentation to ONNX:非対応Instance segmentation to TorchScript:非対応Instance segmentation to ExecuTorch:非対応Instance segmentation to TensorRT:非対応Instance segmentation to OpenVINO:非対応Instance segmentation to Paddle:非対応Instance segmentation to MNN:非対応Instance segmentation to RKNN:非対応Instance segmentation to ncnn:非対応Instance segmentation to TFLite:非対応Instance segmentation to CoreML:非対応Instance segmentation to Core AI:非対応
panopticpanoptic to ONNX:非対応panoptic to TorchScript:非対応panoptic to ExecuTorch:非対応panoptic to TensorRT:非対応panoptic to OpenVINO:非対応panoptic to Paddle:非対応panoptic to MNN:非対応panoptic to RKNN:非対応panoptic to ncnn:非対応panoptic to TFLite:非対応panoptic to CoreML:非対応panoptic to Core AI:非対応

現在エクスポートできるのはsemanticタスクだけです。instanceとpanoptic segmentationで export() を呼び出すと NotImplementedError が送出されます。query-mask出力のランタイムエクスポート仕様がまだないためです。エクスポート済みsemantic成果物はファイル接尾辞に基づいて LibreYOLO() から再度読み込めるため、.onnx または .engine ファイルはチェックポイントと同様に動作し、同じ Results を返します。

Python
from libreyolo import LibreYOLO model = LibreYOLO("LibreEoMTl-sem.pt")model.export(format="onnx")model.export(format="tensorrt", half=True)
CLI
libreyolo export model=LibreEoMTl-sem.pt format=onnxlibreyolo export model=LibreEoMTl-sem.pt format=tensorrt half=True
エクスポートしたファイルを使う
from libreyolo import LibreYOLO, SAMPLE_IMAGE # ファクトリーはファイル接尾辞で経路を選ぶため、エクスポート済み成果物も# 通常のチェックポイントと同様に読み込まれ、同じResultsオブジェクトを返すmodel = LibreYOLO("LibreEoMTl-sem.onnx")result = model(SAMPLE_IMAGE) print(result.semantic_mask.data.shape)

チェックポイント

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

ファイル入力(px)重みのライセンス
semantic
LibreEoMTl-sem.pt512mit
Instance segmentation
LibreEoMTl-seg.pt640mit
LibreEoMTl-seg-1280.ptmit
panoptic
LibreEoMTs-panoptic.ptmit
LibreEoMTb-panoptic.ptmit
LibreEoMTl-panoptic.ptmit

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

ライセンス

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

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

原著作物
EoMT, TU Eindhoven, Mobile Perception Systems Lab
アップストリームのライセンス
MIT
アップストリームのソース
github.com/tue-mps/eomt
LibreYOLOのコード
MIT
重み
MIT、huggingface.co/LibreYOLOで再公開
解釈
MIT is a permissive license, so this code and these weights can be used in commercial and closed-source products. It asks only that you keep the copyright and license notice with any copy you redistribute. LibreYOLO ships only the DINOv2-backed EoMT checkpoints, sizes s/b/l; the DINOv3 EoMT variants are excluded because they depend on gated non-commercial DINOv3 weights. DINOv2 itself is Apache-2.0. The semantic checkpoint is trained on ADE20K and the instance and panoptic checkpoints on COCO; both are research datasets, and users remain responsible for dataset-license compliance when validating or fine-tuning against them.

引用

@inproceedings{kerssies2025eomt,
  author    = {Kerssies, Tommie and Cavagnero, Niccol\`{o} and Hermans, Alexander and Norouzi, Narges and Averta, Giuseppe and Leibe, Bastian and Dubbelman, Gijs and {de Geus}, Daan},
  title     = {{Your ViT is Secretly an Image Segmentation Model}},
  booktitle = {Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition (CVPR)},
  year      = {2025},
}

著者によるgithub.com/tue-mps/eomt#bibtex-citationの引用ブロックからコピーしています。

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