YOLOE: リアルタイムであらゆるものを認識

はじめに

YOLOEプロンプトオプション

YOLOE (Real-Time Seeing Anything) は、オープンボキャブラリー検出およびセグメンテーション用に設計された、ゼロショットかつプロンプト対応のYOLOモデルにおける新しい進歩です。固定カテゴリに限定されていた従来のYOLOモデルとは異なり、YOLOEはテキスト、画像、または内部ボキャブラリーのプロンプトを使用することで、あらゆるオブジェクトクラスのリアルタイム検出を可能にします。YOLOv10をベースに構築され、YOLO-Worldから着想を得たYOLOEは、速度と精度の低下を最小限に抑えつつ、最先端のゼロショット性能を実現しています。



Watch: How to use Ultralytics YOLOE-26 (New) | Open Vocabulary & Real-Time Seeing Anything 🚀

従来のYOLOモデルと比較して、YOLOEは効率と精度を大幅に向上させています。LVISデータセットにおいて、YOLO-Worldv2よりもトレーニングリソースを3分の1に抑えながら、+3.5 APの精度向上と1.4倍の推論速度を実現しました。COCOでファインチューニングされたYOLOE-v8-largeは、YOLOv8-Lを0.1 mAP上回り、トレーニング時間も約4分の1に短縮されています。これは、精度、効率、汎用性の卓越したバランスを示すものです。以下のセクションでは、YOLOEのアーキテクチャ、ベンチマーク比較、およびUltralyticsフレームワークとの統合について説明します。

アーキテクチャの概要

YOLOE Architecture

YOLOEは標準的なYOLO構造を維持しています。特徴抽出のための畳み込みバックボーン(例:CSP-Darknet)、マルチスケール融合のためのネック(例:PAN-FPN)、そしてオブジェクトネス、クラス、およびボックスを独立して予測するアンカーフリーかつ分離された(decoupled)検出ヘッド(YOLOv8/YOLO11と同様)で構成されています。YOLOEは、オープンボキャブラリー検出を実現する3つの新しいモジュールを導入しています。

  • Re-parameterizable Region-Text Alignment (RepRTA): 小規模な補助ネットワークを介してテキストエンベディング(例:CLIP由来)を洗練させることで、テキストプロンプトによる検出をサポートします。推論時、このネットワークはメインモデルに統合(フォールド)されるため、オーバーヘッドは発生しません。これにより、YOLOEは実行時のペナルティなしで、任意のテキストでラベル付けされたオブジェクト(例:未知の「交通信号」)を検出できます。

  • Semantic-Activated Visual Prompt Encoder (SAVPE): 軽量なエンベディングブランチを通じて、視覚プロンプトによる検出を可能にします。参照画像が与えられると、SAVPEは意味的および活性化特徴をエンコードし、視覚的に類似したオブジェクトを検出するようにモデルを条件付けます。これはロゴや特定の部品に役立つワンショット検出機能です。

  • Lazy Region-Prompt Contrast (LRPC): プロンプト不要モードにおいて、YOLOEは大規模なボキャブラリー(LVISおよびObjects365の1200以上のカテゴリ)でトレーニングされた内部エンベディングを使用してオープンセット認識を実行します。外部プロンプトやエンコーダなしで、YOLOEはエンベディングの類似性ルックアップを通じてオブジェクトを識別し、推論時に大規模なラベル空間を効率的に処理します。

さらに、YOLOEは検出ヘッドにマスク予測ブランチ(YOLACTやYOLOv8-Segと同様)を拡張することで、リアルタイムのインスタンスセグメンテーションを統合しており、追加されるオーバーヘッドは最小限です。

重要な点として、YOLOEのオープンワールドモジュールは、通常のクローズドセットYOLOとして使用する場合、推論コストがゼロです。トレーニング後、YOLOEのパラメータは標準的なYOLOヘッドにリパラメータ化(再変換)できるため、FLOPsと速度は(例:YOLO11と完全に一致するように)維持されます。

利用可能なモデル、サポートされているタスク、および動作モード

本セクションでは、利用可能なモデルとその特定の事前学習済み重み、対応するタスク、および 推論検証学習エクスポート といった様々な操作モードとの互換性について詳しく説明します。✅ はサポートされているモード、❌ はサポートされていないモードを示します。

テキスト/視覚プロンプトモデル

プロンプト不要モデル

YOLOE-26のパフォーマンス

YOLOE-26モデルの詳細なパフォーマンスベンチマークについては、YOLO26ドキュメントを参照してください。

使用例

YOLOEモデルは、Pythonアプリケーションに簡単に統合できます。Ultralyticsは、開発を効率化するために使いやすいPython APICLIコマンドを提供しています。

学習の使用法

カスタムデータセットでのファインチューニング

任意の事前学習済みYOLOEモデルを、検出タスクとインスタンスセグメンテーションタスクの両方について、カスタムYOLOデータセットでファインチューニングできます。



Watch: How to Train YOLOE on Car Parts Segmentation Dataset | Open-Vocabulary Model, Prediction & Export 🚀

インスタンスセグメンテーション

Fine-tuning a YOLOE pretrained checkpoint mostly follows the standard YOLO training procedure. The key difference is explicitly passing YOLOEPESegTrainer as the trainer parameter to model.train():

from ultralytics import YOLOE
from ultralytics.models.yolo.yoloe import YOLOEPESegTrainer

model = YOLOE("yoloe-26s-seg.pt")

# Fine-tune on your segmentation dataset
results = model.train(
    data="coco128-seg.yaml",  # Segmentation dataset
    epochs=80,
    patience=10,
    trainer=YOLOEPESegTrainer,  # <- Important: use segmentation trainer
)

オブジェクト検出

All pretrained YOLOE models perform instance segmentation by default. To use these pretrained checkpoints for training a detection model, initialize a detection model from scratch using the YAML configuration, then load the pretrained segmentation checkpoint of the same scale. Note that we use YOLOEPETrainer instead of YOLOEPESegTrainer since we're training a detection model:

from ultralytics import YOLOE
from ultralytics.models.yolo.yoloe import YOLOEPETrainer

# Initialize a detection model from a config
model = YOLOE("yoloe-26s.yaml")

# Load weights from a pretrained segmentation checkpoint (same scale)
model.load("yoloe-26s-seg.pt")

# Fine-tune on your detection dataset
results = model.train(
    data="coco128.yaml",  # Detection dataset
    epochs=80,
    patience=10,
    trainer=YOLOEPETrainer,  # <- Important: use detection trainer
)

予測の使用方法

YOLOEはテキストベースと視覚的なプロンプトの両方をサポートしています。プロンプトの使用は簡単で、以下に示すようにpredictメソッドを通じて渡すだけです。

テキストプロンプトを使用すると、テキストによる説明を通じて検出したいクラスを指定できます。以下のコードは、YOLOEを使用して画像内の人物とバスを検出する方法を示しています。

from ultralytics import YOLOE

# Initialize a YOLOE model
model = YOLOE("yoloe-26l-seg.pt")  # or yoloe-26s/m-seg.pt for different sizes

# Set text prompt to detect person and bus. You only need to do this once after you load the model.
model.set_classes(["person", "bus"])

# Run detection on the given image
results = model.predict("path/to/image.jpg")

# Show results
results[0].show()

検証の使用方法

データセットに対するモデルの検証は、以下のように合理化されています。

from ultralytics import YOLOE

# Create a YOLOE model
model = YOLOE("yoloe-26l-seg.pt")  # or yoloe-26s/m-seg.pt for different sizes

# Conduct model validation on the COCO128-seg example dataset
metrics = model.val(data="coco128-seg.yaml")

エクスポートの使用法

エクスポートプロセスは他のYOLOモデルと同様ですが、テキストプロンプトと視覚プロンプトを処理する柔軟性が追加されています。

エクスポートされたモデルは静的です

Classes configured with set_classes() (or via refer_image for visual prompts) are baked into the exported weights. Once exported, the model can no longer accept new prompts: calling set_classes() or passing visual_prompts=... to predict() on a loaded export will fail. To change the detected classes, re-export from the original .pt checkpoint with the new prompts configured. The exported file behaves like a standard YOLO detector and can also be loaded with YOLO() instead of YOLOE().

from ultralytics import YOLOE

# Select yoloe-26s/m-seg.pt for different sizes
model = YOLOE("yoloe-26l-seg.pt")

# Configure the set_classes() before exporting the model
model.set_classes(["person", "bus"])

export_model = model.export(format="onnx")
model = YOLOE(export_model)

# Run detection on the given image
results = model.predict("path/to/image.jpg")

# Show results
results[0].show()

公式モデルのトレーニング

データセットの準備

注意

Training official YOLOE models needs segment annotations for train data, here's the script provided by official team that converts datasets to segment annotations, powered by SAM2.1 models. Or you can directly download the provided Processed Segment Annotations in following table provided by official team.

  • 学習データ
データセットタイプサンプルBoxes未処理の検出アノテーション処理済みセグメントアノテーション
Objects365v1検出609k9621kobjects365_train.jsonobjects365_train_segm.json
GQAグラウンディング621k3681kfinal_mixed_train_no_coco.jsonfinal_mixed_train_no_coco_segm.json
Flickr30kグラウンディング149k641kfinal_flickr_separateGT_train.jsonfinal_flickr_separateGT_train_segm.json
  • 検証データ
データセットタイプアノテーションファイル
LVIS minival検出minival.txt

ゼロからのトレーニングの開始

注意

Visual Promptモデルは、十分にトレーニングされたText Promptモデルに基づいてファインチューニングされます。

from ultralytics import YOLOE
from ultralytics.models.yolo.yoloe import YOLOESegTrainerFromScratch

# Option 1: Use Python dictionary
data = dict(
    train=dict(
        yolo_data=["Objects365.yaml"],
        grounding_data=[
            dict(
                img_path="flickr/full_images/",
                json_file="flickr/annotations/final_flickr_separateGT_train_segm.json",
            ),
            dict(
                img_path="mixed_grounding/gqa/images",
                json_file="mixed_grounding/annotations/final_mixed_train_no_coco_segm.json",
            ),
        ],
    ),
    val=dict(yolo_data=["lvis.yaml"]),
)

# Option 2: Use YAML file (yoloe_data.yaml)
# train:
#   yolo_data:
#     - Objects365.yaml
#   grounding_data:
#     - img_path: flickr/full_images/
#       json_file: flickr/annotations/final_flickr_separateGT_train_segm.json
#     - img_path: mixed_grounding/gqa/images
#       json_file: mixed_grounding/annotations/final_mixed_train_no_coco_segm.json
# val:
#   yolo_data:
#     - lvis.yaml

model = YOLOE("yoloe-26l-seg.yaml")
model.train(
    data=data,  # or data="yoloe_data.yaml" if using YAML file
    batch=128,
    epochs=30,
    close_mosaic=2,
    optimizer="AdamW",
    lr0=2e-3,
    warmup_bias_lr=0.0,
    weight_decay=0.025,
    momentum=0.9,
    workers=4,
    trainer=YOLOESegTrainerFromScratch,
    device="0,1,2,3,4,5,6,7",
)

YOLOEのパフォーマンス比較

YOLOEは、COCOやLVISといった標準的なベンチマークにおいて、速度やモデルサイズを損なうことなく、クローズドセットのYOLOモデルと同等以上の精度を実現します。以下の表では、YOLOE-L(YOLO11ベース)およびYOLOE26-L(YOLO26ベース)と、対応するクローズドセットモデルを比較しています。

モデルCOCO mAP50-95LVIS mAP50-95推論速度 (T4)パラメーターGFLOPs (640px)
YOLOv8-L (クローズドセット)52.9%-9.06 ms (110 FPS)43.7 M165.2 B
YOLO11-L (クローズドセット)53.5%-6.2 ms (161 FPS)26.2 M86.9 B
YOLOE-L (オープンボキャブラリー)52.6%35.2%6.2 ms (161 FPS)26.2 M86.9 B
YOLOE26-L (オープンボキャブラリー)-36.8%6.2 ms (161 FPS)32.3 M88.3 B

YOLOE-LはYOLO11-Lのアーキテクチャを共有し、YOLOE26-LはYOLO26-Lのアーキテクチャを共有しているため、推論速度とGFLOPsが同等です。

YOLOE26-Lは、T4 GPUにおいて640×640の画像を6.2 ms (161 FPS)で処理し、32.3Mのパラメータ88.3BのFLOPs36.8%のLVIS mAPを達成します。これは、YOLOE-Lの35.2%のLVIS mAPを向上させつつ、同じ推論速度を維持しています。重要な点として、YOLOEのオープンボキャブラリーモジュールには推論コストがかかりません。これは「タダ飯はない(no free lunch trade-off)」という設計思想を実証しています。

ゼロショットタスクにおいて、YOLOE26は従来のオープンボキャブラリー検出器を大幅に上回る性能を発揮します。LVISでは、YOLOE26-Sが29.9% mAPでYOLO-World-Sを**+11.4 AP上回り、YOLOE26-Lは36.8% mAPでYOLO-World-Lを+10.0 AP上回ります。YOLOE26はT4 GPU上で161 FPS**の効率的な推論を維持しており、リアルタイムのオープンボキャブラリーアプリケーションに最適です。

注意

ベンチマーク条件: YOLOEの結果は、Objects365、GoldG、LVISで事前学習し、その後COCOでファインチューニングまたは評価されたモデルに基づいています。YOLOv8に対するYOLOEのわずかなmAPの優位性は、広範な事前学習によるものです。このオープンボキャブラリー学習を除けば、YOLOEは同サイズのYOLOモデルと同等の性能を示し、パフォーマンスの低下なしに最高レベルの精度とオープンワールドの柔軟性を備えていることが確認できます。

以前のモデルとの比較

YOLOEは、これまでのYOLOモデルやオープンボキャブラリー検出器と比較して、注目すべき進歩をもたらしています:

  • YOLOE vs YOLOv5: YOLOv5は速度と精度のバランスが良好でしたが、新しいクラスには再学習が必要であり、アンカーベースのヘッドを使用していました。対照的に、YOLOEはアンカーフリーであり、新しいクラスを動的に検出します。YOLOv8の改善の上に構築されたYOLOEは、より高い精度(COCOにおいてYOLOv5の約50% mAPに対し52.6% mAP)を達成し、YOLOv5とは異なりインスタンスセグメンテーションを統合しています。

  • YOLOE vs YOLOv8: YOLOEはYOLOv8の再設計されたアーキテクチャを拡張し、同等またはそれ以上の精度(約26Mパラメータで52.6% mAPに対し、YOLOv8-Lは約44Mパラメータで52.9%)を実現します。より強力な事前学習のおかげで学習時間が大幅に短縮されます。最大の進歩は、YOLOEのオープンワールド機能です。YOLOv8のクローズドセット設計とは異なり、プロンプトを通じて未知のオブジェクト(例:「電動キックボード」や「平和のシンボル」)を検出できます。

  • YOLOE vs YOLO11: YOLO11は、効率性の向上とパラメータ数の削減(約22%削減)によってYOLOv8を改良しました。YOLOEはこれらの利点を直接継承し、YOLO11の推論速度とパラメータ数(約26Mパラメータ)に匹敵しながら、オープンボキャブラリー検出とセグメンテーションを追加しています。クローズドセットのシナリオでは、YOLOEはYOLO11と同等ですが、重要な点として未知のクラスを検出する適応性が追加されており、速度を損なうことなくYOLO11 + オープンワールド機能を実現しています。

  • YOLOE26 vs YOLOE (YOLO11ベース): YOLOE26はYOLO26のアーキテクチャを基盤としており、より高速な推論のためにNMS不要のエンドツーエンド設計を継承しています。LVISにおいて、YOLOE26-Lは36.8% mAPを達成し、YOLOE-Lの35.2% mAPから向上しています。YOLOE26は、YOLOEの3つのモデルスケール(S/M/L)に対して5つのモデルスケール(N/S/M/L/X)すべてを提供しており、さまざまな展開シナリオに対してより高い柔軟性を提供します。

  • YOLOE26 vs 従来のオープンボキャブラリー検出器: 初期のオープンボキャブラリーモデル(GLIP、OWL-ViT、YOLO-World)は、ビジョン言語Transformerに大きく依存しており、推論が低速でした。LVISにおいて、YOLOE26-Sは29.9% mAP(YOLO-World-Sより**+11.4 AP**)、YOLOE26-Lは36.8% mAP(YOLO-World-Lより**+10.0 AP**)を達成し、同時にT4 GPU上で161 FPSというリアルタイム推論を維持しています。Transformerベースのアプローチ(例:GLIP)と比較して、YOLOE26は桁違いに高速な推論を提供し、オープンセット検出における精度と効率のギャップを効果的に埋めています。

要約すると、YOLOEとYOLOE26はYOLOの定評ある速度と効率を維持し、精度面で先行モデルを上回り、セグメンテーションを統合し、強力なオープンワールド検出を導入しています。YOLOE26はYOLO26のNMS不要なエンドツーエンド推論でアーキテクチャをさらに進化させており、リアルタイムのオープンボキャブラリーアプリケーションに最適です。

使用事例とアプリケーション

YOLOEのオープンボキャブラリー検出およびセグメンテーション機能は、従来の固定クラスモデルを超える多様なアプリケーションを可能にします:

  • オープンワールド物体検出: ロボティクスのような動的なシナリオに最適です。ロボットはプロンプトを使用して未知のオブジェクトを認識したり、セキュリティシステムでは、再学習なしで危険物などの新たな脅威に迅速に適応したりできます。

  • Few-ShotおよびOne-Shot検出: 視覚プロンプト(SAVPE)を使用することで、YOLOEは単一の参照画像から新しいオブジェクトを素早く学習します。工業検査(部品や欠陥の即時特定)やカスタム監視に最適で、最小限のセットアップで視覚検索を可能にします。

  • 大規模ボキャブラリーおよびロングテール認識: 1000以上のクラスのボキャブラリーを備えたYOLOEは、生物多様性モニタリング(希少種の検出)、美術館のコレクション小売在庫管理eコマースなどのタスクに優れており、クラスごとの広範な学習なしで多数のクラスを確実に識別できます。

  • インタラクティブな検出とセグメンテーション: YOLOEは、テキストや視覚的なプロンプトといった自然な入力によって駆動される、検索可能なビデオ/画像検索拡張現実(AR)、直感的な画像編集などのリアルタイムなインタラクティブアプリケーションをサポートしています。ユーザーはセグメンテーションマスクを使用して、オブジェクトを動的に分離、特定、または正確に編集できます。

  • 自動データラベル付けとブートストラッピング: YOLOEは、初期のバウンディングボックスとセグメンテーションのアノテーションを提供することで、迅速なデータセット作成を促進し、人間のラベル付けの労力を大幅に削減します。特に、存在するオブジェクトを自動的に特定して特殊なモデルをより速く構築するのに役立つ、大規模なメディアコレクションの分析で非常に価値があります。

  • 任意のオブジェクトのセグメンテーション: プロンプトを通じて任意のオブジェクトに対するセグメンテーション機能を拡張します。これは、医療画像顕微鏡検査、または衛星画像分析において特に有益で、専用の事前学習済みモデルなしで構造を自動的に特定し、正確にセグメント化します。SAMのようなモデルとは異なり、YOLOEはオブジェクトを自動的に認識およびセグメント化するため、コンテンツ作成シーン理解といったタスクを支援します。

これらすべてのユースケースにおいて、YOLOEの核心的な利点は汎用性であり、動的なシナリオ全体で検出、認識、セグメンテーションのための統一されたモデルを提供します。その効率性は、リソースが制限されたデバイスでもリアルタイムのパフォーマンスを保証し、ロボティクス、自動運転、防衛などに理想的です。

ヒント

ニーズに合わせてYOLOEのモードを選択してください:

  • クローズドセットモード: 固定クラスのタスク向け(最高の速度と精度)。
  • プロンプトモード: テキストや視覚的なプロンプトを使用して、新しいオブジェクトを素早く追加。
  • プロンプトフリーオープンセットモード: 多数のカテゴリにわたる一般的な検出(カタログ作成や発見に最適)。

多くの場合、プロンプト不要の発見の後にターゲットを絞ったプロンプトを実行するようなモードの組み合わせが、YOLOEの可能性を最大限に引き出します。

学習と推論

YOLOEは、他のYOLOモデル(YOLOv8、YOLO-World)と同様に、Ultralytics Python APIおよびCLIとシームレスに統合されます。素早く開始する方法は以下の通りです:

YOLOEでの学習と推論
from ultralytics import YOLO

# Load pretrained YOLOE model and train on custom data
model = YOLO("yoloe-26s-seg.pt")
model.train(data="path/to/data.yaml", epochs=50, imgsz=640)

# Run inference using text prompts ("person", "bus")
model.set_classes(["person", "bus"])
results = model.predict(source="test_images/street.jpg")
results[0].save()  # save annotated output

ここでは、YOLOEはデフォルトで標準的な検出器として動作しますが、set_classesでクラスを指定することで簡単にプロンプト付き検出に切り替えることができます。結果にはバウンディングボックス、マスク、ラベルが含まれます。

その他のサポートされているタスク

  • バリデーション: model.val()またはyolo valを使用して簡単に精度を評価できます。
  • エクスポート: YOLOEモデルをmodel.export()を使用してONNX、TensorRTなどにエクスポートし、展開を容易にします。
  • トラッキング: YOLOEは統合されるとオブジェクトトラッキング(yolo track)をサポートし、ビデオ内でプロンプトされたクラスを追跡するのに役立ちます。
注意

YOLOEは推論結果(results[0].masks)にセグメンテーションマスクを自動的に含めるため、個別のモデルを必要とせずにオブジェクトの抽出や測定といったピクセル単位の正確なタスクを簡素化します。

導入

次の手順に従って、UltralyticsでYOLOEを素早くセットアップします:

  1. インストール: Ultralyticsパッケージをインストールまたは更新します:

    pip install -U ultralytics
  2. YOLOE重みのダウンロード: 事前学習済みのYOLOEモデル(例:YOLOE-v8-S/L、YOLOE-11バリアント)は、YOLOE GitHubリリースから入手可能です。目的の.ptファイルをダウンロードして、Ultralytics YOLOクラスにロードするだけです。

  3. ハードウェア要件:

    • 推論: 推奨GPU(NVIDIA、VRAM 4-8GB以上)。小規模モデルは、エッジGPU(例:Jetson)や、解像度を下げたCPUでも効率的に動作します。コンパクトなワークステーションでの高性能推論については、NVIDIA DGX Sparkガイドをご覧ください。
    • 学習: カスタムデータでのYOLOEのファインチューニングには、通常1つのGPUがあれば十分です。作成者が使用した大規模なオープンボキャブラリー事前学習(LVIS/Objects365)には、かなりの計算リソース(8× RTX 4090 GPU)が必要でした。
  4. 設定: YOLOEの設定には標準のUltralytics YAMLファイルを使用します。デフォルトの設定(例:yoloe-26s-seg.yaml)で通常は十分ですが、必要に応じてバックボーン、クラス、画像サイズを変更できます。

  5. YOLOEの実行:

    • クイック推論(プロンプトフリー):

      yolo predict model=yoloe-26s-seg-pf.pt source="image.jpg"
    • プロンプト付き検出(テキストプロンプトの例):

      from ultralytics import YOLO
      
      model = YOLO("yoloe-26s-seg.pt")
      model.set_classes(["bowl", "apple"])
      results = model.predict("kitchen.jpg")
      results[0].save()
  6. 統合のヒント:

    • クラス名: デフォルトのYOLOE出力はLVISカテゴリを使用します。独自のラベルを指定するにはset_classes()を使用してください。
    • 速度: YOLOEはプロンプトを使用しない限りオーバーヘッドはありません。テキストプロンプトの影響は最小限であり、視覚プロンプトはそれよりわずかに影響があります。
    • NMSの動作: YOLOEは予測時に自動的にagnostic_nms=Trueを使用し、クラス間で重なり合うボックスをマージします。これにより、YOLOEの大規模なボキャブラリー(1200以上のLVISクラス)内で同じオブジェクトが複数のカテゴリに一致した場合の重複検出を防ぎます。明示的にagnostic_nms=Falseを渡すことで、これをオーバーライドできます。
    • バッチ推論: 直接サポートされています(model.predict([img1, img2]))。画像固有のプロンプトについては、画像を個別に実行してください。

Ultralyticsドキュメントは、さらなるリソースを提供します。YOLOEを使用すると、馴染みのあるYOLOエコシステム内で強力なオープンワールド機能を簡単に探求できます。

ヒント

プロのアドバイス: YOLOEのゼロショット精度を最大化するには、ゼロから学習するのではなく、提供されているチェックポイントからファインチューニングしてください。一般的な学習ラベル(LVISカテゴリを参照)と一致するプロンプトワードを使用して、検出精度を向上させます。

引用と謝辞

YOLOEが研究やプロジェクトに貢献した場合は、清華大学Ao Wang, Lihao Liu, Hui Chen, Zijia Lin, Jungong Han, Guiguang Dingによる原著論文を引用してください:

引用
@misc{wang2025yoloerealtimeseeing,
      title={YOLOE: Real-Time Seeing Anything},
      author={Ao Wang and Lihao Liu and Hui Chen and Zijia Lin and Jungong Han and Guiguang Ding},
      year={2025},
      eprint={2503.07465},
      archivePrefix={arXiv},
      primaryClass={cs.CV},
      url={https://arxiv.org/abs/2503.07465},
}

詳細な読書については、元のYOLOE論文がarXivで入手可能です。プロジェクトのソースコードと追加リソースは、彼らのGitHubリポジトリからアクセスできます。

FAQ

YOLOEはYOLO-Worldとどう違いますか?

YOLOEとYOLO-Worldはどちらもオープンボキャブラリー検出を可能にしますが、YOLOEにはいくつかの利点があります。YOLOEは、YOLO-Worldv2と比較して3倍少ない学習リソースを使用し、1.4倍高速に動作しながら、LVISで3.5 AP高い精度を達成しています。YOLOEは3つのプロンプトモード(テキスト、視覚、内部ボキャブラリー)をサポートしていますが、YOLO-Worldは主にテキストプロンプトに焦点を当てています。さらに、YOLOEにはインスタンスセグメンテーション機能が組み込まれており、追加のオーバーヘッドなしで検出されたオブジェクトのピクセル単位で正確なマスクを提供します。

YOLOEを通常のYOLOモデルとして使用できますか?

はい、YOLOEはパフォーマンス低下なしで標準のYOLOモデルとまったく同じように機能します。クローズドセットモード(プロンプトなし)で使用される場合、YOLOEのオープンボキャブラリーモジュールは標準の検出ヘッドに再パラメータ化され、同等のYOLO11モデルと同一の速度と精度を実現します。これにより、YOLOEは非常に汎用性が高く、最大限の速度が必要なときは従来の検出器として使用し、必要なときだけオープンボキャブラリーモードに切り替えることができます。

YOLOEではどのような種類のプロンプトを使用できますか?

YOLOEは3種類のプロンプトをサポートしています:

  1. テキストプロンプト: 自然言語を使用してオブジェクトクラスを指定します(例:「人」、「信号機」、「電動キックボード」)
  2. 視覚プロンプト: 検出したいオブジェクトの参照画像を提供します
  3. 内部ボキャブラリー: 外部プロンプトなしでYOLOEの1200以上の組み込みカテゴリボキャブラリーを使用します

この柔軟性により、モデルを再学習することなく、YOLOEをさまざまなシナリオに適応させることができます。これは、検出要件が頻繁に変更される動的な環境において特に有用です。

YOLOEはどのようにインスタンスセグメンテーションを処理しますか?

YOLOEは、検出ヘッドにマスク予測ブランチを拡張することで、インスタンスセグメンテーションをアーキテクチャに直接統合しています。このアプローチはYOLOv8-Segに似ていますが、プロンプトされたあらゆるオブジェクトクラスに対して機能します。セグメンテーションマスクは推論結果に自動的に含まれ、results[0].masksを介してアクセスできます。この統一されたアプローチにより、個別の検出モデルやセグメンテーションモデルが不要になり、ピクセル単位で正確なオブジェクト境界が必要なアプリケーションのワークフローが効率化されます。

YOLOEはカスタムプロンプトによる推論をどのように処理しますか?

YOLO-Worldと同様に、YOLOEはオフラインボキャブラリーを活用して効率を高める「プロンプト後に検出(prompt-then-detect)」戦略をサポートしています。キャプションや特定のオブジェクトカテゴリなどのカスタムプロンプトは事前にエンコードされ、オフラインボキャブラリーエンベディングとして保存されます。このアプローチにより、再学習を必要とせずに検出プロセスが効率化されます。モデル内でこれらのプロンプトを動的に設定することで、特定の検出タスクに合わせて調整できます:

from ultralytics import YOLO

# Initialize a YOLOE model
model = YOLO("yoloe-26s-seg.pt")

# Define custom classes
model.set_classes(["person", "bus"])

# Execute prediction on an image
results = model.predict("path/to/image.jpg")

# Show results
results[0].show()

コメント