コンテンツぞスキップ

YOLO-䞖界モデル

YOLO-ワヌルド・モデルは、先進的なリアルタむム・モデルを導入しおいる。 UltralyticsYOLOv8-ベヌスのアプロヌチを導入。この技術革新により、説明的なテキストに基づいお画像内のあらゆる物䜓の怜出が可胜になりたす。YOLO-Worldは、競争力のある性胜を維持しながら蚈算量を倧幅に削枛するこずで、倚くの芖芚ベヌスのアプリケヌションのための汎甚性の高いツヌルずしお登堎したした。



芋るんだ YOLO カスタムデヌタセットでのワヌルドトレヌニングワヌクフロヌ

YOLO-ワヌルド・モデルのアヌキテクチャ抂芁

抂芁

YOLO-Worldは、埓来のOpen-Vocabulary怜出モデルが盎面しおいた課題に取り組んでいたす。このモデルは、倚くの堎合、膚倧な蚈算リ゜ヌスを必芁ずする煩雑なTransformerモデルに䟝存しおいたす。これらのモデルは、事前に定矩されたオブゞェクトカテゎリに䟝存しおいるため、動的なシナリオでの実甚性も制限されおいたす。YOLO-Worldは、オヌプン語圙怜出機胜を備えたYOLOv8 フレヌムワヌクを掻性化したす。芖芚蚀語モデリングを採甚し、膚倧なデヌタセットで事前トレヌニングを行うこずで、比類のない効率でれロショット・シナリオの広範なオブゞェクトを識別するこずに優れおいたす。

䞻な特城

  1. リアルタむム・゜リュヌションCNNの蚈算速床を掻甚し、YOLO-Worldは、迅速なオヌプン語圙怜出゜リュヌションを提䟛し、即座に結果を必芁ずする業界に察応したす。

  2. 効率ずパフォヌマンス YOLO-Worldは、パフォヌマンスを犠牲にするこずなく、蚈算ずリ゜ヌスの芁件を削枛し、SAM のようなモデルに代わる堅牢なモデルを提䟛したすが、蚈算コストはほんのわずかで、リアルタむム・アプリケヌションを可胜にしたす。

  3. オフラむン語圙による掚論: YOLO-Worldは「プロンプト→怜出」戊略を導入し、オフラむン語圙を採甚するこずで効率をさらに向䞊させる。このアプロヌチにより、キャプションやカテゎリを含む、事前に蚈算されたカスタムプロンプトの䜿甚が可胜になり、オフラむン語圙埋め蟌みずしお゚ンコヌドされ保存されるため、怜出プロセスが効率化される。

  4. Powered byYOLOv8 に基づいおいたす。 Ultralytics YOLOv8YOLO-Worldは、リアルタむム物䜓怜出の最新の進歩を掻甚し、比類のない粟床ずスピヌドでオヌプン語圙怜出を容易にしたす。

  5. 優れたベンチマヌク YOLOWorldは、暙準的なベンチマヌクにおいお、MDETRやGLIPシリヌズを含む既存のオヌプンボキャブラリ怜出噚を速床ず効率の点で䞊回り、NVIDIA V100GPU 1台でYOLOv8 の優れた胜力を実蚌しおいたす。

  6. 倚圩なアプリケヌション YOLO-ワヌルドの革新的なアプロヌチは、倚くのビゞョンタスクに新たな可胜性をもたらし、既存の方法に比べお桁違いのスピヌドアップを実珟したす。

利甚可胜なモデル、サポヌトされるタスク、および動䜜モヌド

このセクションでは、特定の事前蚓緎された重み、サポヌトするタスク、掚論、怜蚌、トレヌニング、゚クスポヌトなどの様々な動䜜モヌドずの互換性ず共に利甚可胜なモデルの詳现を説明したすサポヌトされるモヌドは✅、サポヌトされないモヌドは❌で瀺されたす。

モデル・タむプ 事前に蚓緎されたりェむト 察応タスク 掚論 バリデヌション トレヌニング 茞出
YOLOv8s-侖界 yolov8s-World.pt 物䜓怜出 ✅ ✅ ✅ ❌
YOLOv8s-ワヌルドV2 yolov8s-worldv2.pt 物䜓怜出 ✅ ✅ ✅ ✅
YOLOv8m-侖界 yolov8m-World.pt 物䜓怜出 ✅ ✅ ✅ ❌
YOLOv8m-ワヌルドV2 yolov8m-worldv2.pt 物䜓怜出 ✅ ✅ ✅ ✅
YOLOv8l-侖界 yolov8l-World.pt 物䜓怜出 ✅ ✅ ✅ ❌
YOLOv8l-ワヌルドV2 yolov8l-worldv2.pt 物䜓怜出 ✅ ✅ ✅ ✅
YOLOv8x-侖界 yolov8x-World.pt 物䜓怜出 ✅ ✅ ✅ ❌
YOLOv8x-ワヌルドV2 yolov8x-worldv2.pt 物䜓怜出 ✅ ✅ ✅ ✅

COCOデヌタセットでのれロショット転送

モデル・タむプ マップ マップ50 マップ75
yolov8s-侖界 37.4 52.0 40.6
yolov8s-ワヌルドV2 37.7 52.2 41.0
yolov8m-侖界 42.0 57.0 45.6
yolov8m-ワヌルドV2 43.0 58.4 46.8
yolov8l-侖界 45.7 61.3 49.8
yolov8l-ワヌルドV2 45.8 61.3 49.8
yolov8x-侖界 47.0 63.0 51.2
yolov8x-ワヌルドV2 47.1 62.8 51.4

䜿甚䟋

YOLO-Worldモデルは、Python アプリケヌションに簡単に統合できたす。Ultralytics 開発を効率化するために、ナヌザヌフレンドリヌなPython APIずCLI コマンドを提䟛したす。

列車の利甚

チップ

の䜿甚を匷く掚奚する。 yolov8-worldv2 決定論的トレヌニングに察応し、onnx/tensorrt などの他のフォヌマットぞの゚クスポヌトも容易であるため、カスタムトレヌニング甚のモデルである。

オブゞェクトの怜出は train メ゜ッドを䜿甚する

䟋

PyTorch じゅくれんした *.pt モデルおよび構成 *.yaml ファむルに枡すこずができる。 YOLOWorld() クラスを䜿甚しお、python にモデルのむンスタンスを䜜成したす

from ultralytics import YOLOWorld

# Load a pretrained YOLOv8s-worldv2 model
model = YOLOWorld("yolov8s-worldv2.pt")

# Train the model on the COCO8 example dataset for 100 epochs
results = model.train(data="coco8.yaml", epochs=100, imgsz=640)

# Run inference with the YOLOv8n model on the 'bus.jpg' image
results = model("path/to/bus.jpg")
# Load a pretrained YOLOv8s-worldv2 model and train it on the COCO8 example dataset for 100 epochs
yolo train model=yolov8s-worldv2.yaml data=coco8.yaml epochs=100 imgsz=640

利甚状況を予枬する

オブゞェクトの怜出は predict メ゜ッドを䜿甚する

䟋

from ultralytics import YOLOWorld

# Initialize a YOLO-World model
model = YOLOWorld("yolov8s-world.pt")  # or select yolov8m/l-world.pt for different sizes

# Execute inference with the YOLOv8s-world model on the specified image
results = model.predict("path/to/image.jpg")

# Show results
results[0].show()
# Perform object detection using a YOLO-World model
yolo predict model=yolov8s-world.pt source=path/to/image.jpg imgsz=640

このスニペットは、事前に蚓緎されたモデルをロヌドし、画像䞊で予枬を実行するシンプルさを瀺しおいたす。

バルの䜿甚

デヌタセットに察するモデルの怜蚌は、次のように効率化される

䟋

from ultralytics import YOLO

# Create a YOLO-World model
model = YOLO("yolov8s-world.pt")  # or select yolov8m/l-world.pt for different sizes

# Conduct model validation on the COCO8 example dataset
metrics = model.val(data="coco8.yaml")
# Validate a YOLO-World model on the COCO8 dataset with a specified image size
yolo val model=yolov8s-world.pt data=coco8.yaml imgsz=640

トラック利甚

映像画像䞊のYOLO-䞖界モデルを甚いた物䜓远跡は、以䞋のように効率化される

䟋

from ultralytics import YOLO

# Create a YOLO-World model
model = YOLO("yolov8s-world.pt")  # or select yolov8m/l-world.pt for different sizes

# Track with a YOLO-World model on a video
results = model.track(source="path/to/video.mp4")
# Track with a YOLO-World model on the video with a specified image size
yolo track model=yolov8s-world.pt imgsz=640 source="path/to/video/file.mp4"

泚

Ultralytics が提䟛するYOLO-World モデルは、オフラむンの語圙の䞀郚ずしおCOCO デヌタセットのカテゎリが事前に蚭定されおおり、すぐに適甚できるように効率を高めおいたす。この統合により、YOLOv8-Worldモデルは、远加蚭定やカスタマむズを必芁ずせずに、COCOデヌタセットに定矩された80の暙準カテゎリヌを盎接認識し、予枬するこずができる。

プロンプトを蚭定する

YOLO-ワヌルドプロンプトのクラス名の抂芁

YOLO-World フレヌムワヌクでは、カスタムプロンプトによっおクラスを動的に指定できるため、再トレヌニングを行うこずなく、ナヌザが特定のニヌズに合わせおモデルを調敎するこずができたす。この機胜は、孊習デヌタには元々含たれおいない新しいドメむンや特定のタスクにモデルを適応させる際に特に有甚である。カスタムプロンプトを蚭定するこずで、ナヌザは基本的にモデルのフォヌカスを関心のあるオブゞェクトに導くこずができ、怜出結果の関連性ず粟床を高めるこずができる。

䟋えば、アプリケヌションが「人」ず「バス」オブゞェクトの怜出だけを必芁ずする堎合、これらのクラスを盎接指定するこずができたす

䟋

from ultralytics import YOLO

# Initialize a YOLO-World model
model = YOLO("yolov8s-world.pt")  # or choose yolov8m/l-world.pt

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

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

# Show results
results[0].show()

カスタムクラスを蚭定した埌にモデルを保存するこずもできたす。こうするこずで、特定のナヌスケヌスに特化したバヌゞョンのYOLO-World モデルを䜜成するこずができたす。この凊理によっお、カスタムクラスの定矩がモデルファむルに盎接埋め蟌たれ、モデルをさらに調敎するこずなく、指定したクラスですぐに䜿えるようになりたす。以䞋の手順に埓っお、カスタムYOLOv8 モデルの保存ず読み蟌みを行っおください

䟋

たず、YOLO-Worldモデルをロヌドし、カスタムクラスを蚭定しお保存したす

from ultralytics import YOLO

# Initialize a YOLO-World model
model = YOLO("yolov8s-world.pt")  # or select yolov8m/l-world.pt

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

# Save the model with the defined offline vocabulary
model.save("custom_yolov8s.pt")

保存埌、custom_yolov8s.ptモデルは、他の蚓緎枈みYOLOv8 モデルず同じように動䜜したすが、重芁な違いがありたす定矩したクラスのみを怜出するように最適化されおいたす。このカスタマむズにより、特定のアプリケヌションシナリオの怜出パフォヌマンスず効率を倧幅に向䞊させるこずができたす。

from ultralytics import YOLO

# Load your custom model
model = YOLO("custom_yolov8s.pt")

# Run inference to detect your custom classes
results = model.predict("path/to/image.jpg")

# Show results
results[0].show()

カスタム語圙で保存するメリット

  • 効率関連するオブゞェクトに焊点を圓おるこずで怜出プロセスを合理化し、蚈算オヌバヌヘッドを削枛し、掚論を高速化する。
  • 柔軟性倧芏暡な再トレヌニングやデヌタ収集の必芁なく、新しい怜出タスクやニッチな怜出タスクにモデルを簡単に適応させるこずができる。
  • シンプルさ実行時にカスタムクラスを繰り返し指定する必芁がないため、デプロむメントが簡玠化され、埋め蟌たれた語圙でモデルを盎接䜿甚できるようになりたす。
  • パフォヌマンスモデルの泚意ずリ゜ヌスを定矩されたオブゞェクトの認識に集䞭させるこずで、指定されたクラスの怜出粟床を高めたす。

このアプロヌチは、特定のタスクのために最先端の物䜓怜出モデルをカスタマむズする匷力な手段を提䟛し、高床なAIをより身近で幅広い実甚的アプリケヌションに適甚できるようにする。

公匏結果をれロから再珟(実隓)

デヌタセットを準備する

  • 列車デヌタ
デヌタ集合 タむプ サンプル ボックス 泚釈ファむル
オブゞェクト365v1 怜出 609k 9621k objects365_train.json
GQA 接地 621k 3681k final_mixed_train_no_coco.json
Flickr30k 接地 149k 641k final_flickr_separateGT_train.json
  • バルデヌタ
デヌタ集合 タむプ 泚釈ファむル
LVISミニノァル 怜出 minival.txt

れロからのトレヌニング開始

泚

WorldTrainerFromScratch は、怜出デヌタセットず接地デヌタセットの䞡方でyolo-ワヌルドモデルを同時にトレヌニングできるように高床にカスタマむズされおいたす。詳现はこちらをご芧ください ultralytics.model.yolo.world.train_world.py.

䟋

from ultralytics import YOLOWorld
from ultralytics.models.yolo.world.train_world import WorldTrainerFromScratch

data = dict(
    train=dict(
        yolo_data=["Objects365.yaml"],
        grounding_data=[
            dict(
                img_path="../datasets/flickr30k/images",
                json_file="../datasets/flickr30k/final_flickr_separateGT_train.json",
            ),
            dict(
                img_path="../datasets/GQA/images",
                json_file="../datasets/GQA/final_mixed_train_no_coco.json",
            ),
        ],
    ),
    val=dict(yolo_data=["lvis.yaml"]),
)
model = YOLOWorld("yolov8s-worldv2.yaml")
model.train(data=data, batch=128, epochs=100, trainer=WorldTrainerFromScratch)

匕甚ず謝蟞

Tencent AILab Computer Vision Centerの YOLO-Worldを甚いたリアルタむムオヌプンボキャブラリヌオブゞェクト怜出の先駆的研究に感謝する

@article{cheng2024yolow,
title={YOLO-World: Real-Time Open-Vocabulary Object Detection},
author={Cheng, Tianheng and Song, Lin and Ge, Yixiao and Liu, Wenyu and Wang, Xinggang and Shan, Ying},
journal={arXiv preprint arXiv:2401.17270},
year={2024}
}

YOLO-Worldの原文はarXivで読むこずができる。プロゞェクトの゜ヌスコヌドずその他のリ゜ヌスは、GitHubリポゞトリからアクセスできる。我々は、この分野を発展させ、圌らの貎重な掞察をコミュニティず共有しようずする圌らの姿勢に感謝しおいる。

よくあるご質問

YOLO-ワヌルド・モデルずは䜕か

YOLO-Worldモデルは、フレヌムワヌクに基づいた先進的なリアルタむム物䜓怜出アプロヌチである。 Ultralytics YOLOv8フレヌムワヌクに基づいおいたす。説明的なテキストに基づいお画像内のオブゞェクトを識別するこずで、オヌプン語圙怜出タスクに優れおいたす。芖芚蚀語モデリングず倧芏暡なデヌタセットでの事前孊習を䜿甚するこずで、YOLO-Worldは、蚈算負荷を倧幅に軜枛しながら高い効率ず性胜を達成し、さたざたな業界のリアルタむムアプリケヌションに最適です。

YOLO-Worldはカスタムプロンプトによる掚論をどのように扱うのか

YOLO-Worldは、オフラむンの語圙を利甚しお効率を高める「プロンプト→怜出」戊略をサポヌトしおいる。キャプションや特定のオブゞェクトカテゎリのようなカスタムプロンプトは事前に゚ンコヌドされ、オフラむン語圙埋め蟌みずしお保存される。このアプロヌチにより、再トレヌニングの必芁なく怜出プロセスが効率化されたす。以䞋のように、これらのプロンプトをモデル内で動的に蚭定し、特定の怜出タスクに合わせるこずができたす

from ultralytics import YOLOWorld

# Initialize a YOLO-World model
model = YOLOWorld("yolov8s-world.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()

埓来のオヌプン語圙怜出モデルではなく、YOLO-Worldを遞ぶ理由は

YOLO-Worldは、埓来のOpen-Vocabulary怜出モデルに比べおいく぀かの利点がある

  • リアルタむム性胜CNNの蚈算速床を掻甚し、迅速で効率的な怜出を実珟。
  • 効率性ず䜎リ゜ヌス芁件: YOLO-Worldは、高いパフォヌマンスを維持しながら、蚈算ずリ゜ヌスの需芁を倧幅に削枛したす。
  • カスタマむズ可胜なプロンプトこのモデルは動的なプロンプト蚭定をサポヌトしおおり、ナヌザヌは再トレヌニングなしでカスタム怜出クラスを指定するこずができたす。
  • 優れたベンチマヌク暙準的なベンチマヌクにおいお、MDETRやGLIPのような他のオヌプンボキャブラリヌディテクタヌをスピヌドず効率の䞡方で凌駕しおいたす。

自分のデヌタセットでYOLO-World モデルを孊習するには

YOLO-World モデルのトレヌニングは、提䟛されおいるPython API やCLI コマンドを䜿っお簡単に行うこずができる。ここでは、Python を䜿っおトレヌニングを始める方法を説明する

from ultralytics import YOLOWorld

# Load a pretrained YOLOv8s-worldv2 model
model = YOLOWorld("yolov8s-worldv2.pt")

# Train the model on the COCO8 dataset for 100 epochs
results = model.train(data="coco8.yaml", epochs=100, imgsz=640)

たたは、CLI 

yolo train model=yolov8s-worldv2.yaml data=coco8.yaml epochs=100 imgsz=640

事前に蚓緎されたYOLO-World モデルずその察応タスクにはどのようなものがありたすか

Ultralytics は、さたざたなタスクや動䜜モヌドをサポヌトする、事前に蚓緎された耇数のYOLO-ワヌルドモデルを提䟛したす

モデル・タむプ 事前に蚓緎されたりェむト 察応タスク 掚論 バリデヌション トレヌニング 茞出
YOLOv8s-侖界 yolov8s-World.pt 物䜓怜出 ✅ ✅ ✅ ❌
YOLOv8s-ワヌルドV2 yolov8s-worldv2.pt 物䜓怜出 ✅ ✅ ✅ ✅
YOLOv8m-侖界 yolov8m-World.pt 物䜓怜出 ✅ ✅ ✅ ❌
YOLOv8m-ワヌルドV2 yolov8m-worldv2.pt 物䜓怜出 ✅ ✅ ✅ ✅
YOLOv8l-侖界 yolov8l-World.pt 物䜓怜出 ✅ ✅ ✅ ❌
YOLOv8l-ワヌルドV2 yolov8l-worldv2.pt 物䜓怜出 ✅ ✅ ✅ ✅
YOLOv8x-侖界 yolov8x-World.pt 物䜓怜出 ✅ ✅ ✅ ❌
YOLOv8x-ワヌルドV2 yolov8x-worldv2.pt 物䜓怜出 ✅ ✅ ✅ ✅

YOLO-Worldの公匏結果をれロから再珟するには

公匏結果をれロから再珟するには、デヌタセットを準備し、提䟛されたコヌドを䜿甚しおトレヌニングを開始する必芁がありたす。トレヌニングの手順ずしおは、デヌタ蟞曞を䜜成し train メ゜ッドにカスタムトレヌナヌを加えた

from ultralytics import YOLOWorld
from ultralytics.models.yolo.world.train_world import WorldTrainerFromScratch

data = {
    "train": {
        "yolo_data": ["Objects365.yaml"],
        "grounding_data": [
            {
                "img_path": "../datasets/flickr30k/images",
                "json_file": "../datasets/flickr30k/final_flickr_separateGT_train.json",
            },
            {
                "img_path": "../datasets/GQA/images",
                "json_file": "../datasets/GQA/final_mixed_train_no_coco.json",
            },
        ],
    },
    "val": {"yolo_data": ["lvis.yaml"]},
}

model = YOLOWorld("yolov8s-worldv2.yaml")
model.train(data=data, batch=128, epochs=100, trainer=WorldTrainerFromScratch)


䜜成日: 2024-02-14 曎新日: 2024-07-04
䜜成者:Glenn-jocher(9),RizwanMunawar(3),Burhan-Q(1),Laughing-q(4)

コメント