コンテンツへスキップ

YOLOE:リアルタイムで何でも見える

はじめに

YOLOEプロンプト・オプション

YOLOE(Real-Time Seeing Anything)は、オープン語彙検出とセグメンテーションのために設計された、ゼロショット、プロンプト可能なYOLO モデルの新しい進歩です。固定カテゴリに限定された従来のYOLO モデルとは異なり、YOLOEはテキスト、画像、または内部語彙のプロンプトを使用し、あらゆるオブジェクトクラスのリアルタイム検出を可能にします。YOLOv10をベースとし、YOLOインスパイアされたYOLOEは、スピードと精度への影響を最小限に抑えながら、最先端のゼロショット性能を達成しています。

Ultralytics 統合状況

YOLOEのUltralytics 統合は現在構築中です🔨。このドキュメントに示されている使用例は、統合が完了した時点で動作します✅。最新の開発については、更新をチェックバックするか、GitHubリポジトリをフォローしてください🚀。

初期のYOLO モデルと比較して、YOLOEは効率と精度を大幅に向上させた。LVIS上ではYOLO AP+3.5向上し、学習リソースは3分の1、推論速度は1.4倍高速化した。COCO上で微調整されたYOLOE-v8-largeは、YOLOv8 0.1mAP上回り、4倍近い学習時間を削減した。これは、YOLOEの精度、効率性、汎用性の卓越したバランスの良さを証明しています。以下のセクションでは、YOLOEのアーキテクチャ、ベンチマーク比較、および Ultralyticsフレームワークとの統合について説明する。

アーキテクチャの概要

YOLOEアーキテクチャー

YOLOEは、特徴抽出のための畳み込みバックボーン(CSP-Darknetなど)、マルチスケールフュージョンのためのネック(PAN-FPNなど)、物体らしさ、クラス、ボックスを独立に予測するアンカーフリーの非連結検出ヘッド(YOLO11 YOLOv8同様)といった標準的なYOLO 構造を維持している。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同様)で検出ヘッドを拡張することで、リアルタイムのインスタンス分割を統合し、オーバーヘッドを最小限に抑えている。

重要なのは、YOLOEのオープンワールドモジュールは、通常のクローズドセットYOLO使用する場合、推論コストを発生させないことである。トレーニング後、YOLOEのパラメータを標準的なYOLO ヘッドに再パラメータ化することができ、同一のFLOPと速度を維持することができる(例えば、以下のようなマッチングが可能)。 YOLO11と正確に一致する)。

YOLOEのパフォーマンス比較

YOLOEは、速度やモデルサイズを犠牲にすることなく、COCOのような標準的なベンチマークにおいて、クローズドセットYOLO モデルの精度と同等か、それを上回る。下表は、YOLOE-L(YOLO11ベースに構築)を、対応する YOLOv8およびYOLO11 モデルと比較しています:

モデル COCOmAP50-95 推論スピード(T4) パラメータ GFLOPs (640px)
YOLOv8(クローズドセット) 52.9% 9.06ミリ秒(110 FPS) 43.7 M 165.2 B
YOLO11(クローズドセット) 53.5% 6.2ミリ秒(130 FPS) 26.2 M 86.9 B
YOLOE-L(オープンボキャブ) 52.6% 6.2ミリ秒(130 FPS) 26.2 M 86.9B†

YOLO11YOLOE-Lは同一のアーキテクチャ(YOLO11プロンプトモジュールは無効)であるため、推論速度は同一であり、GFLOPsも同程度と推定される。

YOLOE-Lは、約40%少ないパラメータ(26M対43.7M)で、YOLOv8(52.9%)を上回る52.6%のmAPを達成した。YOLO11 YOLOv8 9.06ミリ秒(110FPS)に対し、640×640の画像を6.2ミリ秒(161FPS)で処理し、YOLO11効率性を際立たせている。重要なのは、YOLOEのオープン語彙モジュールには推論コストがかからないことで、「タダ飯のトレードオフがない」設計が実証されている。

LVIS上では、YOLOE-smallはYOLO 3 .5AP向上し、3倍少ないトレーニング・リソースを使用した。YOLOE-LをLVISからCOCOに微調整するのに必要な訓練時間も、YOLOv8 4倍短く、その効率性と適応性が明らかになった。YOLOEはさらに、YOLO特徴であるスピードを維持し、T4GPU 300 FPS以上、CoreMLiPhone 12で64 FPS以上を達成しました。

ベンチマーク条件:YOLOEの結果は、Objects365、GoldG、LVISで事前に訓練されたモデルを、COCOで微調整または評価したものである。YOLOEのYOLOv8 mAPのわずかな優位性は、広範な事前トレーニングによるものである。このオープンボカブトレーニングを行わなかった場合、YOLOEは同規模のYOLO モデルに匹敵し、性能上のペナルティなしにSOTA精度とオープンワールドの柔軟性を確認することができる。

従来モデルとの比較

YOLOEは、以前のYOLO モデルやオープンボキャブラリー検出器に比べ、注目すべき進歩を導入している:

  • YOLOE対YOLOv5:
    YOLOv5はスピードと精度のバランスに優れていたが、新しいクラスに対して再トレーニングが必要で、アンカーベースのヘッドを使用していた。対照的に、YOLOEはアンカーを使わず、動的に新しいクラスを検出する。YOLOEは、YOLOv88の改良をベースに、YOLOv5異なり、より高い精度(52.6%対YOLOv55のCOCOでのmAP~50%)を達成し、インスタンスのセグメンテーションを統合している。

  • YOLOE vsYOLOv8:
    YOLOEが伸びる YOLOv8YOLOv88の再設計されたアーキテクチャを拡張し、同等以上の精度を達成した(~26Mのパラメータで52.6%のmAPに対し、YOLOv8 ~44Mのパラメータで52.9%)。また、事前学習が強化されているため、学習時間が大幅に短縮されている。重要な進歩は、YOLOEのオープンワールド機能であり、YOLOv88のクローズドセット設計とは異なり、プロンプトを介して未見のオブジェクト(例えば、「鳥スクーター」や「平和のシンボル」)を検出する。

  • YOLOE対YOLO11:
    YOLO11は、YOLOv8 改良し、効率を高め、パラメーターを減らした(~22%削減)。YOLOEはこれらの利点をそのまま継承し、YOLO11推論速度とパラメータ数(~26Mパラメータ)に匹敵する一方、オープン語彙検出とセグメンテーションを追加した。クローズドセットのシナリオでは、YOLOEはYOLO11同等であるが、未知のクラスを検出する適応性が追加され、速度を損なうことなく、YOLO11 +オープンワールドの機能を実現する。

  • YOLOEと以前のオープン語彙検出器との比較:
    以前のオープン語彙モデル(GLIP、OWL-ViT、YOLO)は、視覚言語変換に大きく依存していたため、推論に時間がかかっていた。YOLOEは、ゼロショット精度(例えば、AP+3.5対YOLO)でこれらを上回ると同時に、大幅に少ない学習リソースで1.4倍高速に動作する。変換器ベースのアプローチ(GLIPなど)と比較して、YOLOEは桁外れに高速な推論を提供し、オープンセット検出における精度と効率のギャップを効果的に埋める。

要約すると、YOLOEは、YOLO定評あるスピードと効率性を維持し、精度で先行製品を上回り、セグメンテーションを統合し、強力なオープンワールド検出を導入することで、他に類を見ない多用途かつ実用的なものとなっている。

ユースケースとアプリケーション

YOLOEのオープン語彙検出とセグメンテーションは、従来の固定クラスモデルを超える多様なアプリケーションを可能にする:

  • オープンワールド物体検出:
    ロボットがプロンプトを使用して以前に見たことのない物体を認識するロボット工学や、再トレーニングなしで新しい脅威(危険物など)に素早く適応するセキュリティシステムのようなダイナミックなシナリオに最適。

  • 少数ショットおよびワンショット検出:
    視覚的プロンプト(SAVPE)を使用して、YOLOEは1枚の参照画像から新しいオブジェクトを迅速に学習します。工業検査(部品や欠陥を即座に特定)やカスタム監視に最適で、最小限のセットアップで視覚的検索が可能です。

  • 大語彙とロングテール認識:
    1000クラス以上の語彙を持つYOLOEは、生物多様性のモニタリング(希少種の検出)、博物館のコレクション小売店の在庫管理eコマースなどのタスクに優れています。

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

  • 自動化されたデータ・ラベリングとブートストラップ:
    YOLOEは、初期バウンディングボックスとセグメンテーション注釈を提供することで、データセットの迅速な作成を容易にし、人間によるラベリング作業を大幅に削減します。特に、大規模なメディア・コレクションの分析において、存在するオブジェクトを自動識別し、特化されたモデルを迅速に構築することができます。

  • あらゆるオブジェクトのセグメンテーション:
    特に、医療画像顕微鏡衛星画像の解析に有益で、特別な事前訓練されたモデルなしで、構造を自動的に識別し、正確にセグメンテーションします。以下のようなモデルとは異なります。 SAMのようなモデルとは異なり、YOLOE はオブジェクトの認識とセグメンテーションを同時に自動で行い、コンテンツ作成やシーン理解のようなタスクを支援します。

これらすべてのユースケースにおいて、YOLOEの核となる利点は汎用性であり、動的なシナリオ全体にわたって検出、認識、セグメンテーションのための統一モデルを提供する。その効率性は、リソースに制約のあるデバイス上でリアルタイムのパフォーマンスを保証し、ロボット工学、自律走行、防衛、そしてそれ以外の分野にも理想的です。

チップ

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

  • クローズドセットモード:固定クラスのタスク用(最高速度と精度)。
  • プロンプトモード:テキストまたは視覚的なプロンプトを使用して新しいオブジェクトをすばやく追加します。
  • プロンプトなしのオープンセットモード:多くのカテゴリーにまたがる一般的な検出(カタログやディスカバリーに最適)。

多くの場合、プロンプトのないディスカバリーの後に的を絞ったプロンプトを出すなど、モードを組み合わせることで、YOLOEの潜在能力を最大限に活用することができる。

トレーニングと推論

YOLOEは、Ultralytics Python APIとシームレスに統合されています。 CLI他のYOLO モデルYOLOv8、YOLO)と同様です。ここでは、すぐに始める方法を説明します:

Ultralytics 統合状況

YOLOEのUltralytics 統合は現在開発中です🔨。以下の例は、統合が完了した後、APIがどのように機能するかを示しています✅。

YOLOEによるトレーニングと推論

from ultralytics import YOLO

# Load pre-trained YOLOE model and train on custom data
model = YOLO("yoloe-s.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).結果にはバウンディングボックス、マスク、ラベルが含まれます。

# Training YOLOE on custom dataset
yolo train model=yoloe-s.pt data=path/to/data.yaml epochs=50 imgsz=640

# Inference with text prompts
yolo predict model=yoloe-s.pt source="test_images/street.jpg" classes="person,bus"

CLI プロンプト (classes)は、YOLOEをPython set_classes.ビジュアルプロンプト(画像ベースのクエリー)は現在Python APIを必要とします。

その他のサポートタスク

  • 検証: で精度を簡単に評価できる。 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-v8-S/L、YOLOE-11亜種)は、YOLOE GitHubリリースから入手可能です。ご希望の .pt ファイルをUltralytics YOLO クラスにロードします。

  3. ハードウェア要件

    • 推論:推奨GPU NVIDIA 、VRAM4~8GB以上)。小さなモデルはエッジGPU(Jetsonなど)または低解像度のCPUで効率的に実行。
    • トレーニング:カスタムデータでYOLOEを微調整するには、通常GPU1つあればよい。著者らが使用した広範なオープン語彙の事前学習(LVIS/Objects365)は、かなりの計算(8×RTX 4090 GPU)を必要とした。
  4. 構成: YOLOEの設定は、標準のUltralytics YAMLファイルを使用します。デフォルトの設定(例. yoloe-s.yaml)で通常は十分ですが、必要に応じてバックボーン、クラス、画像サイズを変更することができます。

  5. YOLOEを走る

    • 迅速な推論 (プロンプト・フリー):
      yolo predict model=yoloe-s.pt source="image.jpg"
      
    • プロンプト検出(テキストプロンプトの例):

      yolo predict model=yoloe-s.pt source="kitchen.jpg" classes="bowl,apple"
      

      Python:

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

    • クラス名:デフォルトのYOLOE出力はLVISカテゴリーを使用する。 set_classes() をクリックして、独自のラベルを指定してください。
    • スピード:YOLOEには、プロンプトを使わない限りオーバーヘッドはない。テキスト・プロンプトの影響は最小限であり、ビジュアル・プロンプトの影響はやや大きい。
    • バッチ推論:直接サポート (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リポジトリからアクセスできる。

よくあるご質問

YOLOEとYOLO違いは?

YOLOEとYOLOどちらもオープン語彙検出を可能にするが、YOLOEにはいくつかの利点がある。YOLOEは、YOLO3倍少ない学習リソースで、1.4倍高速に動作しながら、LVISにおいて+3.5AP高い精度を達成した。また、YOLOYOLO主にテキスト・プロンプトに焦点を当てているのに対し、YOLOEは3つのプロンプト・モード(テキスト、視覚、内部語彙)をサポートしている。さらに、YOLOEはインスタンス・セグメンテーション機能を内蔵しており、検出されたオブジェクトに対して、追加のオーバーヘッドなしにピクセル精度のマスクを提供する。

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

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

YOLOEで使えるプロンプトの種類は?

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

  1. テキストプロンプト:自然言語を使ったオブジェクトクラスの指定(例:"人"、"信号"、"鳥スクーター")
  2. 視覚的なプロンプト:検出したい物体の参考画像を提供する。
  3. 内蔵語彙:外部プロンプトなしで、1200以上のカテゴリーからなるYOLOEの内蔵語彙を使う

この柔軟性により、モデルを再トレーニングすることなく様々なシナリオにYOLOEを適応させることができ、検出要件が頻繁に変化するダイナミックな環境で特に有用である。

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

YOLOEでは、検出ヘッドをマスク予測分岐で拡張することで、インスタンス分割をアーキテクチャーに直接統合している。このアプローチはYOLOv8いるが、どのプロンプトオブジェクトクラスに対しても機能する。セグメンテーション・マスクは推論結果に自動的に含まれ、以下の方法でアクセスできる。 results[0].masks.この統一されたアプローチにより、検出モデルとセグメンテーションモデルを別々に用意する必要がなくなり、ピクセル精度のオブジェクト境界を必要とするアプリケーションのワークフローが効率化される。

YOLOEはカスタムプロンプトによる推論をどのように扱うのか?

YOLO同様、YOLOEは、オフライン語彙を利用して効率を高める「プロンプト→検出」戦略をサポートしている。キャプションや特定のオブジェクトカテゴリなどのカスタムプロンプトは、オフライン語彙埋め込みとして事前にエンコードされ、保存される。このアプローチは、再トレーニングを必要とせずに検出プロセスを効率化します。これらのプロンプトをモデル内で動的に設定することで、特定の検出タスクに合わせて調整することができます:

from ultralytics import YOLO

# Initialize a YOLOE model
model = YOLO("yoloe-s.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()
📅作成:6日前 ✏️更新 4日前

コメント