Skip to content

YOLO-Modèle mondial

Le modèle YOLO-World introduit un modèle avancé en temps réel. Ultralytics YOLOv8-en temps réel pour les tâches de détection de vocabulaire ouvert. Cette innovation permet de détecter n'importe quel objet dans une image en se basant sur des textes descriptifs. En réduisant considérablement les exigences de calcul tout en préservant des performances compétitives, YOLO-World apparaît comme un outil polyvalent pour de nombreuses applications basées sur la vision.



Regarde : YOLO Flux de travail de la formation mondiale sur un ensemble de données personnalisé

YOLO-Aperçu de l'architecture du modèle mondial

Vue d'ensemble

YOLO-World tackles the challenges faced by traditional Open-Vocabulary detection models, which often rely on cumbersome Transformer models requiring extensive computational resources. These models' dependence on pre-defined object categories also restricts their utility in dynamic scenarios. YOLO-World revitalizes the YOLOv8 framework with open-vocabulary detection capabilities, employing vision-language modeling and pre-training on expansive datasets to excel at identifying a broad array of objects in zero-shot scenarios with unmatched efficiency.

Caractéristiques principales

  1. Solution en temps réel : En exploitant la vitesse de calcul des CNN, YOLO-World offre une solution rapide de détection de vocabulaire ouvert, destinée aux industries qui ont besoin de résultats immédiats.

  2. Efficacité et performance : YOLO-World réduit les exigences en matière de calcul et de ressources sans sacrifier la performance, offrant une alternative solide aux modèles tels que SAM mais à une fraction du coût de calcul, permettant des applications en temps réel.

  3. Inférence avec un vocabulaire hors ligne : YOLO-World introduit une stratégie "inviter puis détecter", en employant un vocabulaire hors ligne pour améliorer encore l'efficacité. Cette approche permet d'utiliser des invites personnalisées calculées a priori, y compris des légendes ou des catégories, qui peuvent être encodées et stockées sous forme d'enchâssements de vocabulaire hors ligne, ce qui simplifie le processus de détection.

  4. Propulsé par YOLOv8: Construit sur Ultralytics YOLOv8YOLO-World s'appuie sur les dernières avancées en matière de détection d'objets en temps réel pour faciliter la détection de vocabulaires ouverts avec une précision et une rapidité inégalées.

  5. Excellence en matière de tests de référence : YOLO World surpasse les détecteurs de vocabulaires ouverts existants, y compris les séries MDETR et GLIP, en termes de vitesse et d'efficacité sur les tests de référence standard, démontrant la capacité supérieure de YOLOv8 sur un seul NVIDIA V100 GPU.

  6. Applications polyvalentes : YOLO-L'approche innovante de World ouvre de nouvelles possibilités pour une multitude de tâches de vision, offrant des améliorations de vitesse de plusieurs ordres de grandeur par rapport aux méthodes existantes.

Modèles disponibles, tâches prises en charge et modes de fonctionnement

Cette section détaille les modèles disponibles avec leurs poids pré-entraînés spécifiques, les tâches qu'ils prennent en charge et leur compatibilité avec les différents modes de fonctionnement tels que l'Inférence, la Validation, l'Entraînement et l'Exportation, notés par ✅ pour les modes pris en charge et ❌ pour les modes non pris en charge.

Note

Tous les poids de YOLOv8-World ont été directement migrés depuis le dépôt officiel YOLO-World, soulignant ainsi leurs excellentes contributions.

Type de modèlePoids pré-entraînésTâches prises en chargeInférenceValidationFormationExporter
YOLOv8s-Mondeyolov8s-monde.ptDétection d'objets
YOLOv8s-mondev2yolov8s-mondev2.ptDétection d'objets
YOLOv8m-Mondeyolov8m-monde.ptDétection d'objets
YOLOv8m-mondev2yolov8m-mondev2.ptDétection d'objets
YOLOv8l-Mondeyolov8l-monde.ptDétection d'objets
YOLOv8l-mondev2yolov8l-mondev2.ptDétection d'objets
YOLOv8x-Mondeyolov8x-monde.ptDétection d'objets
YOLOv8x-mondev2yolov8x-mondev2.ptDétection d'objets

Transfert de zéro sur l'ensemble de données COCO

Type de modèlemAPmAP50mAP75
yolov8s-Monde37.452.040.6
yolov8s-mondev237.752.241.0
yolov8m-Monde42.057.045.6
yolov8m-mondev243.058.446.8
yolov8l-Monde45.761.349.8
yolov8l-mondev245.861.349.8
yolov8x-Monde47.063.051.2
yolov8x-mondev247.162.851.4

Exemples d'utilisation

Les modèles YOLO-World sont faciles à intégrer dans tes applications Python . Ultralytics fournit une API Python et des commandes CLI conviviales pour rationaliser le développement.

Utilisation du train

Astuce

Nous recommandons fortement d'utiliser yolov8-worldv2 pour la formation personnalisée, parce qu'il prend en charge la formation déterministe et qu'il est également facile d'exporter d'autres formats, par exemple onnx/tensorrt.

Object detection is straightforward with the train comme illustré ci-dessous :

Exemple

PyTorch pretrained *.pt ainsi que la configuration *.yaml peuvent être transmis à l'outil YOLOWorld() pour créer une instance de modèle dans 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

Prévoir l'utilisation

La détection des objets est simple grâce à la fonction predict comme illustré ci-dessous :

Exemple

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

Cet extrait démontre la simplicité du chargement d'un modèle pré-entraîné et de l'exécution d'une prédiction sur une image.

Utilisation du val

La validation d'un modèle sur un ensemble de données est simplifiée comme suit :

Exemple

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

Utilisation des pistes

Le suivi d'objets à l'aide du modèle YOLO-World sur une vidéo/images est simplifié comme suit :

Exemple

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"

Note

Les modèles YOLO-World fournis par Ultralytics sont préconfigurés avec les catégories de l'ensemble de données COCO dans le cadre de leur vocabulaire hors ligne, ce qui améliore l'efficacité pour une application immédiate. Cette intégration permet aux modèles YOLOv8-World de reconnaître et de prédire directement les 80 catégories standard définies dans l'ensemble de données COCO sans nécessiter de configuration ou de personnalisation supplémentaire.

Définir les messages-guides

YOLO-Vue d'ensemble des noms de classe de l'invite mondiale

The YOLO-World framework allows for the dynamic specification of classes through custom prompts, empowering users to tailor the model to their specific needs without retraining. This feature is particularly useful for adapting the model to new domains or specific tasks that were not originally part of the training data. By setting custom prompts, users can essentially guide the model's focus towards objects of interest, enhancing the relevance and accuracy of the detection results.

Par exemple, si ton application ne nécessite que la détection des objets "personne" et "bus", tu peux spécifier ces classes directement :

Exemple

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()

Tu peux aussi enregistrer un modèle après avoir défini des classes personnalisées. Tu peux ainsi créer une version du modèle YOLO-World spécialisée pour ton cas d'utilisation spécifique. Ce processus incorpore les définitions de tes classes personnalisées directement dans le fichier du modèle, ce qui rend le modèle prêt à être utilisé avec les classes que tu as spécifiées sans autre ajustement. Suis les étapes suivantes pour enregistrer et charger ton modèle personnalisé YOLOv8 :

Exemple

Charge d'abord un modèle YOLO-World, définis des classes personnalisées et enregistre-le :

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")

Après l'enregistrement, le modèle custom_yolov8s.pt se comporte comme n'importe quel autre modèle YOLOv8 pré-entraîné, mais avec une différence essentielle : il est désormais optimisé pour détecter uniquement les classes que tu as définies. Cette personnalisation peut améliorer considérablement les performances et l'efficacité de la détection pour tes scénarios d'application spécifiques.

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()

Avantages de la sauvegarde avec le vocabulaire personnalisé

  • Efficacité: Rationalise le processus de détection en se concentrant sur les objets pertinents, en réduisant les frais généraux de calcul et en accélérant l'inférence.
  • Flexibilité: Permet d'adapter facilement le modèle à des tâches de détection nouvelles ou de niche, sans qu'il soit nécessaire de procéder à un recyclage ou à une collecte de données importants.
  • Simplicité: Simplifie le déploiement en éliminant le besoin de spécifier à plusieurs reprises des classes personnalisées au moment de l'exécution, ce qui rend le modèle directement utilisable avec son vocabulaire intégré.
  • Performance: Enhances detection accuracy for specified classes by focusing the model's attention and resources on recognizing the defined objects.

Cette approche fournit un moyen puissant de personnaliser les modèles de détection d'objets de pointe pour des tâches spécifiques, ce qui rend l'IA avancée plus accessible et applicable à un plus grand nombre d'applications pratiques.

Reproduire les résultats officiels à partir de zéro(Expérimental)

Préparer les ensembles de données

  • Données du train
Ensemble de donnéesTypeÉchantillonsBoîtesFichiers d'annotation
Objets365v1Détection609k9621kobjets365_train.json
GQAMise à la terre621k3681kfinal_mixed_train_no_coco.json
Flickr30kMise à la terre149k641kfinal_flickr_separateGT_train.json
  • Données de valeur
Ensemble de donnéesTypeFichiers d'annotation
LVIS minivalDétectionminival.txt

Lancer une formation à partir de zéro

Note

WorldTrainerFromScratch est hautement personnalisé pour permettre l'entraînement des modèles yolo-world sur les ensembles de données de détection et les ensembles de données de mise à la terre simultanément. Pour plus de détails, consulte le site ultralytics.model.yolo.world.train_world.py.

Exemple

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)

Citations et remerciements

Nous exprimons notre gratitude au Tencent AILab Computer Vision Center pour son travail de pionnier dans la détection d'objets à vocabulaire ouvert en temps réel avec 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}
}

Pour une lecture plus approfondie, l'article original YOLO-World est disponible sur arXiv. Le code source du projet et des ressources supplémentaires sont accessibles via leur dépôt GitHub. Nous apprécions leur engagement à faire progresser le domaine et à partager leurs précieuses connaissances avec la communauté.

FAQ

Qu'est-ce que le modèle YOLO-World et comment fonctionne-t-il ?

Le modèle YOLO-World est une approche avancée de détection d'objets en temps réel basée sur le cadre de travail. Ultralytics YOLOv8 cadre de travail. Il excelle dans les tâches de détection de vocabulaire ouvert en identifiant des objets dans une image sur la base de textes descriptifs. En utilisant la modélisation vision-langage et le pré-entraînement sur de grands ensembles de données, YOLO-World atteint une efficacité et des performances élevées avec des exigences de calcul considérablement réduites, ce qui le rend idéal pour les applications en temps réel dans divers secteurs.

Comment YOLO-World gère-t-il l'inférence avec des invites personnalisées ?

YOLO-World supports a "prompt-then-detect" strategy, which utilizes an offline vocabulary to enhance efficiency. Custom prompts like captions or specific object categories are pre-encoded and stored as offline vocabulary embeddings. This approach streamlines the detection process without the need for retraining. You can dynamically set these prompts within the model to tailor it to specific detection tasks, as shown below:

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()

Pourquoi devrais-je choisir YOLO-World plutôt que les modèles traditionnels de détection du vocabulaire libre ?

YOLO-World offre plusieurs avantages par rapport aux modèles traditionnels de détection du vocabulaire libre :

  • Performance en temps réel : Il tire parti de la vitesse de calcul des CNN pour offrir une détection rapide et efficace.
  • Efficacité et faibles besoins en ressources : YOLO-World maintient des performances élevées tout en réduisant considérablement les besoins en ressources et en calculs.
  • Invites personnalisables : Le modèle prend en charge le réglage dynamique des invites, ce qui permet aux utilisateurs de spécifier des classes de détection personnalisées sans avoir à se recycler.
  • Excellence en matière de tests : Il surpasse d'autres détecteurs de vocabulaires ouverts tels que MDETR et GLIP en termes de vitesse et d'efficacité sur des critères de référence standard.

Comment entraîner un modèle YOLO-World sur mon ensemble de données ?

La formation d'un modèle YOLO-World sur ton ensemble de données est simple grâce à l'API Python ou aux commandes CLI . Voici comment commencer la formation à l'aide de 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)

Ou en utilisant CLI:

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

Quels sont les modèles pré-entraînés disponibles sur YOLO-World et les tâches qu'ils prennent en charge ?

Ultralytics offre plusieurs modèles préformés YOLO-World qui prennent en charge diverses tâches et modes de fonctionnement :

Type de modèlePoids pré-entraînésTâches prises en chargeInférenceValidationFormationExporter
YOLOv8s-Mondeyolov8s-monde.ptDétection d'objets
YOLOv8s-mondev2yolov8s-mondev2.ptDétection d'objets
YOLOv8m-Mondeyolov8m-monde.ptDétection d'objets
YOLOv8m-mondev2yolov8m-mondev2.ptDétection d'objets
YOLOv8l-Mondeyolov8l-monde.ptDétection d'objets
YOLOv8l-mondev2yolov8l-mondev2.ptDétection d'objets
YOLOv8x-Mondeyolov8x-monde.ptDétection d'objets
YOLOv8x-mondev2yolov8x-mondev2.ptDétection d'objets

Comment reproduire les résultats officiels de YOLO-World en partant de zéro ?

Pour reproduire les résultats officiels à partir de zéro, tu dois préparer les ensembles de données et lancer l'entraînement à l'aide du code fourni. La procédure d'entraînement consiste à créer un dictionnaire de données et à exécuter le programme train avec un formateur personnalisé :

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)
📅 Created 8 months ago ✏️ Updated 16 days ago

Commentaires