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 sur la base de 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.
Regarder : YOLO Workflow de formation mondiale sur un ensemble de données personnalisé
Vue d'ensemble
YOLO-World relève les défis auxquels sont confrontés les modèles traditionnels de détection du vocabulaire ouvert, qui reposent souvent sur des modèles de transformateurs encombrants nécessitant d'importantes ressources informatiques. La dépendance de ces modèles à l'égard de catégories d'objets prédéfinies limite également leur utilité dans les scénarios dynamiques. YOLO-World revitalise le cadre YOLOv8 avec des capacités de détection de vocabulaire ouvert, en utilisant lamodélisation du langage visuel et le préapprentissage sur de vastes ensembles de données pour exceller dans l'identification d'un large éventail d'objets dans des scénarios sans prise de vue avec une efficacité inégalée.
Caractéristiques principales
-
Solution en temps réel : En exploitant la vitesse de calcul des CNN, YOLO-World fournit une solution rapide de détection de vocabulaire ouvert, destinée aux industries qui ont besoin de résultats immédiats.
-
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 à des modèles tels que SAM , mais à une fraction du coût de calcul, ce qui permet des applications en temps réel.
-
Inférence avec un vocabulaire hors ligne : YOLO-World introduit une stratégie "inviter puis détecter", en utilisant 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.
-
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.
-
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 benchmarks standards, démontrant la capacité supérieure de YOLOv8 sur un seul NVIDIA V100 GPU.
-
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, désigné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 de YOLO-World, soulignant ainsi leurs excellentes contributions.
Type de modèle | Poids pré-entraînés | Tâches prises en charge | Inférence | Validation | Formation | Exportation |
---|---|---|---|---|---|---|
YOLOv8s-Monde | yolov8s-monde.pt | Détection d'objets | ✅ | ✅ | ✅ | ❌ |
YOLOv8s-mondev2 | yolov8s-mondev2.pt | DĂ©tection d'objets | âś… | âś… | âś… | âś… |
YOLOv8m-Monde | yolov8m-monde.pt | Détection d'objets | ✅ | ✅ | ✅ | ❌ |
YOLOv8m-mondev2 | yolov8m-mondev2.pt | DĂ©tection d'objets | âś… | âś… | âś… | âś… |
YOLOv8l-Monde | yolov8l-monde.pt | Détection d'objets | ✅ | ✅ | ✅ | ❌ |
YOLOv8l-mondev2 | yolov8l-mondev2.pt | DĂ©tection d'objets | âś… | âś… | âś… | âś… |
YOLOv8x-Monde | yolov8x-monde.pt | Détection d'objets | ✅ | ✅ | ✅ | ❌ |
YOLOv8x-mondev2 | yolov8x-mondev2.pt | DĂ©tection d'objets | âś… | âś… | âś… | âś… |
Transfert de zéro sur l'ensemble de données COCO
Type de modèle | mAP | mAP50 | mAP75 |
---|---|---|---|
yolov8s-Monde | 37.4 | 52.0 | 40.6 |
yolov8s-mondev2 | 37.7 | 52.2 | 41.0 |
yolov8m-Monde | 42.0 | 57.0 | 45.6 |
yolov8m-mondev2 | 43.0 | 58.4 | 46.8 |
yolov8l-Monde | 45.7 | 61.3 | 49.8 |
yolov8l-mondev2 | 45.8 | 61.3 | 49.8 |
yolov8x-Monde | 47.0 | 63.0 | 51.2 |
yolov8x-mondev2 | 47.1 | 62.8 | 51.4 |
Exemples d'utilisation
Les modèles YOLO-World sont faciles à intégrer dans vos applications Python . Ultralytics fournit des API Python et des commandes CLI conviviales pour rationaliser le développement.
Utilisation des trains
Conseil
Nous recommandons vivement 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.
DĂ©tection d'objets est simple avec l'outil train
comme illustré ci-dessous :
Exemple
PyTorch préformé *.pt
ainsi que la configuration *.yaml
peuvent ĂŞtre transmis Ă la fonction 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")
Prévoir l'utilisation
La détection d'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()
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
Utilisation de la voie
Le suivi d'objets à l'aide du modèle YOLO-World sur une vidéo ou une image est simplifié comme suit :
Exemple
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 invites
Le cadre YOLO-World permet la spécification dynamique de classes par le biais d'invites personnalisées, ce qui permet aux utilisateurs d'adapter le modèle à leurs besoins spécifiques sans avoir à suivre une nouvelle formation. Cette fonction est particulièrement utile pour adapter le modèle à de nouveaux domaines ou à des tâches spécifiques qui ne faisaient pas partie des données d'apprentissage à l'origine. En définissant des invites personnalisées, les utilisateurs peuvent essentiellement orienter le modèle vers des objets intéressants, ce qui améliore la pertinence et la précision des résultats de la détection.
Par exemple, si votre application ne nécessite que la détection d'objets "personne" et "bus", vous pouvez 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()
Vous pouvez également enregistrer un modèle après avoir défini des classes personnalisées. Vous créez ainsi une version du modèle YOLO-World spécialisée pour votre cas d'utilisation spécifique. Ce processus intègre les définitions de vos classes personnalisées directement dans le fichier du modèle, ce qui rend le modèle prêt à être utilisé avec les classes spécifiées sans autres ajustements. Suivez les étapes suivantes pour enregistrer et charger votre modèle YOLOv8 personnalisé :
Exemple
Chargez d'abord un modèle YOLO-World, définissez des classes personnalisées pour ce modèle et enregistrez-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 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 vous avez définies. Cette personnalisation peut améliorer de manière significative les performances et l'efficacité de la détection pour vos scénarios d'application spécifiques.
Avantages des économies réalisées grâce au vocabulaire personnalisé
- Efficacité: rationalise le processus de détection en se concentrant sur les objets pertinents, en réduisant la charge 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 de grande ampleur.
- Simplicité: Simplifie le déploiement en éliminant la nécessité 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: Améliore la précision de la détection pour les classes spécifiées en concentrant l'attention et les ressources du modèle sur la reconnaissance des objets définis.
Cette approche fournit un moyen puissant de personnaliser les modèles de détection d'objets de pointe pour des tâches spécifiques, rendant l'IA avancée plus accessible et applicable à un plus large éventail d'applications pratiques.
Reproduire les résultats officiels à partir de zéro (expérimental)
Préparer les ensembles de données
- Données sur les trains
Ensemble de données | Type | Échantillons | Boîtes | Fichiers d'annotation |
---|---|---|---|---|
Objets365v1 | DĂ©tection | 609k | 9621k | objets365_train.json |
GQA | Mise Ă la terre | 621k | 3681k | final_mixed_train_no_coco.json |
Flickr30k | Mise Ă la terre | 149k | 641k | final_flickr_separateGT_train.json |
- Données de valeur
Ensemble de données | Type | Fichiers d'annotation |
---|---|---|
LVIS minival | DĂ©tection | minival.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, veuillez consulter 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 :
Pour plus d'informations, 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. Ultralytics YOLOv8 Il excelle dans les tâches de détection de vocabulaire ouvert. 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 prend en charge une stratégie de type "demander puis détecter", qui utilise un vocabulaire hors ligne pour améliorer l'efficacité. Les invites personnalisées, telles que les légendes ou les catégories d'objets spécifiques, sont préencodées et stockées sous forme d'enchâssements de vocabulaire hors ligne. Cette approche rationalise le processus de détection sans qu'il soit nécessaire de procéder à un nouvel apprentissage. Vous pouvez définir dynamiquement ces invites dans le modèle pour l'adapter à des tâches de détection spécifiques, comme illustré ci-dessous :
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 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 exploite 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 de manière significative les besoins en ressources et en calculs.
- Invites personnalisables : Le modèle prend en charge le paramétrage dynamique des invites, ce qui permet aux utilisateurs de spécifier des classes de détection personnalisées sans avoir à suivre une nouvelle formation.
- Excellence en matière de benchmark : 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 votre 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:
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 prenant en charge diverses tâches et modes de fonctionnement :
Type de modèle | Poids pré-entraînés | Tâches prises en charge | Inférence | Validation | Formation | Exportation |
---|---|---|---|---|---|---|
YOLOv8s-Monde | yolov8s-monde.pt | Détection d'objets | ✅ | ✅ | ✅ | ❌ |
YOLOv8s-mondev2 | yolov8s-mondev2.pt | DĂ©tection d'objets | âś… | âś… | âś… | âś… |
YOLOv8m-Monde | yolov8m-monde.pt | Détection d'objets | ✅ | ✅ | ✅ | ❌ |
YOLOv8m-mondev2 | yolov8m-mondev2.pt | DĂ©tection d'objets | âś… | âś… | âś… | âś… |
YOLOv8l-Monde | yolov8l-monde.pt | Détection d'objets | ✅ | ✅ | ✅ | ❌ |
YOLOv8l-mondev2 | yolov8l-mondev2.pt | DĂ©tection d'objets | âś… | âś… | âś… | âś… |
YOLOv8x-Monde | yolov8x-monde.pt | Détection d'objets | ✅ | ✅ | ✅ | ❌ |
YOLOv8x-mondev2 | yolov8x-mondev2.pt | DĂ©tection d'objets | âś… | âś… | âś… | âś… |
Comment reproduire les résultats officiels de YOLO-World à partir de zéro ?
Pour reproduire les résultats officiels à partir de zéro, vous devez préparer les ensembles de données et lancer la formation à l'aide du code fourni. La procédure de formation implique la création d'un dictionnaire de données et l'exécution de la commande 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)