EoMT
専用のpixel decoderを持たない標準的な視覚Transformer上に構築されたセグメンテーションネットワークです。encoder自体に追加された学習済みqueryがマスクを予測します。LibreYOLOはセマンティック、インスタンス、パノプティックセグメンテーションでEoMTに対応します。
- タスク
- semantic, instance segmentation, panoptic
- サイズ
- s, b, l at 512 px
- インストール
pip install libreyolo- サポートティア
- 推論のみ、v以降。推論、検証、エクスポートのみです。学習機能は対象外です。
- ライセンス
- コード:MIT、重み:MIT。商用利用
インストール
EoMTに任意の追加パッケージは必要ありません。インポートするものはすべて基本インストールに含まれています。
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) # 画像内に存在するソート済みクラスIDfrom 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": ...}, ...]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.boxes と result.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/mIoU と metrics/pixel_accuracy を返します。インスタンスセグメンテーションは、ほかのセグメンテーションファミリーと同じマスク・ボックスmAPキーを返します。panopticはPanoptic Qualityを metrics/PQ として返し、metrics/SQ(segmentation quality)と metrics/RQ(recognition quality)へ分け、さらに metrics/PQ_things と metrics/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"])libreyolo val model=LibreEoMTl-sem.pt data=my-dataset.yamlエクスポート
| タスク | ONNX | TorchScript | ExecuTorch | TensorRT | OpenVINO | Paddle | MNN | RKNN | ncnn | TFLite | CoreML | Core AI |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| semantic | semantic 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 segmentation | Instance 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:非対応 |
| panoptic | panoptic 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 を返します。
from libreyolo import LibreYOLO model = LibreYOLO("LibreEoMTl-sem.pt")model.export(format="onnx")model.export(format="tensorrt", half=True)libreyolo export model=LibreEoMTl-sem.pt format=onnxlibreyolo export model=LibreEoMTl-sem.pt format=tensorrt half=Truefrom 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.pt | 512 | mit |
| Instance segmentation | ||
| LibreEoMTl-seg.pt | 640 | mit |
| LibreEoMTl-seg-1280.pt | mit | |
| panoptic | ||
| LibreEoMTs-panoptic.pt | mit | |
| LibreEoMTb-panoptic.pt | mit | |
| LibreEoMTl-panoptic.pt | mit | |
上記のすべてのファイルは現在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の引用ブロックからコピーしています。