Explorez Ultralytics YOLOv8
Aperçu
YOLOv8 a été lancé par Ultralytics le 10 janvier 2023, offrant des performances de pointe en termes de précision et de vitesse. S'appuyant sur les avancées des versions précédentes de YOLO, YOLOv8 a introduit de nouvelles fonctionnalités et optimisations qui en font un choix idéal pour diverses tâches de détection d'objets dans un large éventail d'applications.
Regarder : Présentation du modèle Ultralytics YOLOv8
Principales caractéristiques de YOLOv8
- Architectures avancées de Backbone et de Neck : YOLOv8 utilise des architectures de backbone et de neck de pointe, ce qui améliore l'extraction de caractéristiques et les performances de détection d'objets.
- Tête Ultralytics divisée sans ancrage : YOLOv8 adopte une tête Ultralytics divisée sans ancrage, ce qui contribue à une meilleure précision et à un processus de détection plus efficace par rapport aux approches basées sur l'ancrage.
- Compromis précision-vitesse optimisé : En mettant l'accent sur le maintien d'un équilibre optimal entre la précision et la vitesse, YOLOv8 convient aux tâches de détection d'objets en temps réel dans divers domaines d'application.
- Variété de modèles pré-entraînés : YOLOv8 propose une gamme de modèles pré-entraînés pour répondre à diverses tâches et exigences de performance, ce qui facilite la recherche du modèle adapté à votre cas d'utilisation spécifique.
Tâches et modes pris en charge
La série YOLOv8 offre une gamme variée de modèles, chacun étant spécialisé dans des tâches spécifiques de vision par ordinateur. Ces modèles sont conçus pour répondre à diverses exigences, de la détection d'objets à des tâches plus complexes telles que la segmentation d'instances, la détection de pose/points clés, la détection d'objets orientés et la classification.
Chaque variante de la série YOLOv8 est optimisée pour sa tâche respective, garantissant des performances et une précision élevées. De plus, ces modèles sont compatibles avec divers modes de fonctionnement, notamment l'inférence, la validation, l'entraînement et l'exportation, ce qui facilite leur utilisation dans différentes étapes de déploiement et de développement.
Modèle | Noms de fichiers | Tâche | Inférence | Validation | Entraînement | Exporter |
---|---|---|---|---|---|---|
YOLOv8 | yolov8n.pt yolov8s.pt yolov8m.pt yolov8l.pt yolov8x.pt |
Détection | ✅ | ✅ | ✅ | ✅ |
YOLOv8-seg | yolov8n-seg.pt yolov8s-seg.pt yolov8m-seg.pt yolov8l-seg.pt yolov8x-seg.pt |
Segmentation d'instance | ✅ | ✅ | ✅ | ✅ |
YOLOv8-pose | yolov8n-pose.pt yolov8s-pose.pt yolov8m-pose.pt yolov8l-pose.pt yolov8x-pose.pt yolov8x-pose-p6.pt |
Pose/Points clés | ✅ | ✅ | ✅ | ✅ |
YOLOv8-obb | yolov8n-obb.pt yolov8s-obb.pt yolov8m-obb.pt yolov8l-obb.pt yolov8x-obb.pt |
Détection orientée | ✅ | ✅ | ✅ | ✅ |
YOLOv8-cls | yolov8n-cls.pt yolov8s-cls.pt yolov8m-cls.pt yolov8l-cls.pt yolov8x-cls.pt |
Classification | ✅ | ✅ | ✅ | ✅ |
Ce tableau donne un aperçu des différentes variantes du modèle YOLOv8, en soulignant leur applicabilité dans des tâches spécifiques et leur compatibilité avec divers modes opérationnels tels que l'inférence, la validation, l'entraînement et l'exportation. Il met en évidence la polyvalence et la robustesse de la série YOLOv8, les rendant adaptés à une variété d'applications en vision par ordinateur.
Mesures de performance
Performance
Consultez la documentation sur la détection pour des exemples d'utilisation avec ces modèles entraînés sur COCO, qui comprennent 80 classes pré-entraînées.
Modèle | Taille (pixels) |
mAPval 50-95 |
Vitesse CPU ONNX (ms) |
Vitesse A100 TensorRT (ms) |
paramètres (M) |
FLOPs (B) |
---|---|---|---|---|---|---|
YOLOv8n | 640 | 37.3 | 80.4 | 0.99 | 3.2 | 8.7 |
YOLOv8s | 640 | 44.9 | 128.4 | 1.20 | 11.2 | 28.6 |
YOLOv8m | 640 | 50.2 | 234.7 | 1.83 | 25.9 | 78.9 |
YOLOv8l | 640 | 52.9 | 375.2 | 2.39 | 43.7 | 165.2 |
YOLOv8x | 640 | 53.9 | 479.1 | 3.53 | 68.2 | 257.8 |
Consultez la documentation sur la détection pour des exemples d'utilisation avec ces modèles entraînés sur Open Image V7, qui comprennent 600 classes pré-entraînées.
Modèle | Taille (pixels) |
mAPval 50-95 |
Vitesse CPU ONNX (ms) |
Vitesse A100 TensorRT (ms) |
paramètres (M) |
FLOPs (B) |
---|---|---|---|---|---|---|
YOLOv8n | 640 | 18.4 | 142.4 | 1.21 | 3.5 | 10.5 |
YOLOv8s | 640 | 27.7 | 183.1 | 1.40 | 11.4 | 29.7 |
YOLOv8m | 640 | 33.6 | 408.5 | 2.26 | 26.2 | 80.6 |
YOLOv8l | 640 | 34.9 | 596.9 | 2.43 | 44.1 | 167.4 |
YOLOv8x | 640 | 36.3 | 860.6 | 3.56 | 68.7 | 260.6 |
Consultez la documentation sur la segmentation pour des exemples d'utilisation avec ces modèles entraînés sur COCO, qui comprennent 80 classes pré-entraînées.
Modèle | Taille (pixels) |
mAPboîte 50-95 |
mAPmasque 50-95 |
Vitesse CPU ONNX (ms) |
Vitesse A100 TensorRT (ms) |
paramètres (M) |
FLOPs (B) |
---|---|---|---|---|---|---|---|
YOLOv8n-seg | 640 | 36.7 | 30.5 | 96.1 | 1.21 | 3.4 | 12.6 |
YOLOv8s-seg | 640 | 44.6 | 36.8 | 155.7 | 1.47 | 11.8 | 42.6 |
YOLOv8m-seg | 640 | 49.9 | 40.8 | 317.0 | 2.18 | 27.3 | 110.2 |
YOLOv8l-seg | 640 | 52.3 | 42.6 | 572.4 | 2.79 | 46.0 | 220.5 |
YOLOv8x-seg | 640 | 53.4 | 43.4 | 712.1 | 4.02 | 71.8 | 344.1 |
Consultez la documentation sur la classification pour des exemples d'utilisation avec ces modèles entraînés sur ImageNet, qui comprennent 1 000 classes pré-entraînées.
Modèle | Taille (pixels) |
acc top1 |
acc top5 |
Vitesse CPU ONNX (ms) |
Vitesse A100 TensorRT (ms) |
paramètres (M) |
FLOPs (B) à 224 |
---|---|---|---|---|---|---|---|
YOLOv8n-cls | 224 | 69.0 | 88.3 | 12.9 | 0.31 | 2.7 | 0.5 |
YOLOv8s-cls | 224 | 73.8 | 91.7 | 23.4 | 0.35 | 6.4 | 1.7 |
YOLOv8m-cls | 224 | 76.8 | 93.5 | 85.4 | 0.62 | 17.0 | 5.3 |
YOLOv8l-cls | 224 | 76.8 | 93.5 | 163.0 | 0.87 | 37.5 | 12.3 |
YOLOv8x-cls | 224 | 79.0 | 94.6 | 232.0 | 1.01 | 57.4 | 19.0 |
Consultez la documentation sur l'estimation de pose pour des exemples d'utilisation avec ces modèles entraînés sur COCO, qui comprennent 1 classe pré-entraînée, 'personne'.
Modèle | Taille (pixels) |
mAPpose 50-95 |
mAPpose 50 |
Vitesse CPU ONNX (ms) |
Vitesse A100 TensorRT (ms) |
paramètres (M) |
FLOPs (B) |
---|---|---|---|---|---|---|---|
YOLOv8n-pose | 640 | 50.4 | 80.1 | 131.8 | 1.18 | 3.3 | 9.2 |
YOLOv8s-pose | 640 | 60.0 | 86.2 | 233.2 | 1.42 | 11.6 | 30.2 |
YOLOv8m-pose | 640 | 65.0 | 88.8 | 456.3 | 2.00 | 26.4 | 81.0 |
YOLOv8l-pose | 640 | 67.6 | 90.0 | 784.5 | 2.59 | 44.4 | 168.6 |
YOLOv8x-pose | 640 | 69.2 | 90.2 | 1607.1 | 3.73 | 69.4 | 263.2 |
YOLOv8x-pose-p6 | 1280 | 71.6 | 91.2 | 4088.7 | 10.04 | 99.1 | 1066.4 |
Consultez la documentation sur la détection orientée pour des exemples d'utilisation avec ces modèles entraînés sur DOTAv1, qui incluent 15 classes pré-entraînées.
Modèle | Taille (pixels) |
mAPtest 50 |
Vitesse CPU ONNX (ms) |
Vitesse A100 TensorRT (ms) |
paramètres (M) |
FLOPs (B) |
---|---|---|---|---|---|---|
YOLOv8n-obb | 1024 | 78.0 | 204.77 | 3.57 | 3.1 | 23.3 |
YOLOv8s-obb | 1024 | 79.5 | 424.88 | 4.07 | 11.4 | 76.3 |
YOLOv8m-obb | 1024 | 80.5 | 763.48 | 7.61 | 26.4 | 208.6 |
YOLOv8l-obb | 1024 | 80.7 | 1278.42 | 11.83 | 44.5 | 433.8 |
YOLOv8x-obb | 1024 | 81.36 | 1759.10 | 13.23 | 69.5 | 676.7 |
Exemples d'utilisation de YOLOv8
Cet exemple fournit des exemples simples d'entraînement et d'inférence YOLOv8. Pour une documentation complète sur ces modes et d'autres, consultez les pages de documentation Predict, Train, Val et Export.
Notez que l'exemple ci-dessous concerne les modèles YOLOv8 Detect pour la détection d'objets. Pour connaître les tâches supplémentaires prises en charge, consultez les documents Segment, Classify, OBB et les documents Pose.
Exemple
PyTorch pré-entraînés *.pt
ainsi que la configuration des modèles *.yaml
fichiers peuvent être passés aux YOLO()
class pour créer une instance de modèle en python :
from ultralytics import YOLO
# Load a COCO-pretrained YOLOv8n model
model = YOLO("yolov8n.pt")
# Display model information (optional)
model.info()
# 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")
Des commandes CLI sont disponibles pour exécuter directement les modèles :
# Load a COCO-pretrained YOLOv8n model and train it on the COCO8 example dataset for 100 epochs
yolo train model=yolov8n.pt data=coco8.yaml epochs=100 imgsz=640
# Load a COCO-pretrained YOLOv8n model and run inference on the 'bus.jpg' image
yolo predict model=yolov8n.pt source=path/to/bus.jpg
Citations et remerciements
Publication Ultralytics YOLOv8
Ultralytics n'a pas publié d'article de recherche officiel pour YOLOv8 en raison de la nature évolutive rapide des modèles. Nous nous concentrons sur l'avancement de la technologie et la simplification de son utilisation, plutôt que sur la production d'une documentation statique. Pour obtenir les informations les plus récentes sur l'architecture, les fonctionnalités et l'utilisation de YOLO, veuillez consulter notre référentiel GitHub et notre documentation.
Si vous utilisez le modèle YOLOv8 ou tout autre logiciel de ce référentiel dans votre travail, veuillez le citer en utilisant le format suivant :
@software{yolov8_ultralytics,
author = {Glenn Jocher and Ayush Chaurasia and Jing Qiu},
title = {Ultralytics YOLOv8},
version = {8.0.0},
year = {2023},
url = {https://github.com/ultralytics/ultralytics},
orcid = {0000-0001-5950-6979, 0000-0002-7603-6750, 0000-0003-3783-7069},
license = {AGPL-3.0}
}
Veuillez noter que le DOI est en attente et sera ajouté à la citation dès qu'il sera disponible. Les modèles YOLOv8 sont fournis sous les licences AGPL-3.0 et Enterprise.
FAQ
Qu'est-ce que YOLOv8 et en quoi diffère-t-il des versions précédentes de YOLO ?
YOLOv8 est conçu pour améliorer les performances de la détection d’objets en temps réel grâce à des fonctionnalités avancées. Contrairement aux versions antérieures, YOLOv8 intègre une tête Ultralytics divisée sans point d’ancrage, des architectures backbone et neck à la pointe de la technologie, et offre un compromis précision-vitesse optimisé, ce qui le rend idéal pour diverses applications. Pour plus de détails, consultez les sections Aperçu et Principales caractéristiques.
Comment puis-je utiliser YOLOv8 pour différentes tâches de vision par ordinateur ?
YOLOv8 prend en charge un large éventail de tâches de vision par ordinateur, notamment la détection d'objets, la segmentation d'instances, la détection de pose/points clés, la détection d'objets orientés et la classification. Chaque variante de modèle est optimisée pour sa tâche spécifique et compatible avec divers modes de fonctionnement tels que Inference, Validation, Training et Export. Reportez-vous à la section Tâches et modes pris en charge pour plus d'informations.
Quelles sont les mesures de performance des modèles YOLOv8 ?
Les modèles YOLOv8 atteignent des performances de pointe sur divers ensembles de données de référence. Par exemple, le modèle YOLOv8n atteint une mAP (précision moyenne moyenne) de 37,3 sur l'ensemble de données COCO et une vitesse de 0,99 ms sur A100 TensorRT. Des mesures de performance détaillées pour chaque variante de modèle sur différentes tâches et ensembles de données sont disponibles dans la section Mesures de performance.
Comment puis-je entraîner un modèle YOLOv8 ?
L'entraînement d'un modèle YOLOv8 peut être effectué à l'aide de python ou de CLI. Vous trouverez ci-dessous des exemples d'entraînement d'un modèle à l'aide d'un modèle YOLOv8 pré-entraîné COCO sur l'ensemble de données COCO8 pour 100 epochs :
Exemple
from ultralytics import YOLO
# Load a COCO-pretrained YOLOv8n model
model = YOLO("yolov8n.pt")
# Train the model on the COCO8 example dataset for 100 epochs
results = model.train(data="coco8.yaml", epochs=100, imgsz=640)
yolo train model=yolov8n.pt data=coco8.yaml epochs=100 imgsz=640
Pour plus de détails, consultez la documentation Training.
Puis-je évaluer les modèles YOLOv8 pour connaître leurs performances ?
Oui, les modèles YOLOv8 peuvent être évalués en termes de vitesse et de précision dans différents formats d'exportation. Vous pouvez utiliser PyTorch, ONNX, TensorRT, et plus encore pour l'évaluation. Vous trouverez ci-dessous des exemples de commandes pour l'évaluation à l'aide de python et de CLI :
Exemple
from ultralytics.utils.benchmarks import benchmark
# Benchmark on GPU
benchmark(model="yolov8n.pt", data="coco8.yaml", imgsz=640, half=False, device=0)
yolo benchmark model=yolov8n.pt data='coco8.yaml' imgsz=640 half=False device=0
Pour plus d'informations, consultez la section Mesures de performance.