Passer au contenu

YOLOv10 vs. YOLOv8 : Une comparaison technique pour la détection d’objets en temps réel

L'évolution de la famille YOLO (You Only Look Once) a constamment repoussé les limites de la vision par ordinateur, offrant aux développeurs des outils plus rapides et plus précis pour la détection d'objets. Lors du choix entre YOLOv10 et YOLOv8, il est crucial de comprendre les nuances de l'architecture, de l'efficacité et du support d'écosystème. Alors que YOLOv10 introduit de nouveaux changements architecturaux pour l'efficacité, YOLOv8 reste une norme robuste et polyvalente connue pour sa facilité d'utilisation et son ensemble complet de fonctionnalités.

Ce guide fournit une comparaison technique détaillée pour vous aider à sélectionner le bon modèle pour vos projets d'apprentissage automatique.

Analyse des performances

Les mesures de performance sur l'ensemble de données COCO illustrent les philosophies de conception distinctes derrière ces modèles. YOLOv10 se concentre fortement sur la réduction du nombre de paramètres et des opérations en virgule flottante (FLOPs), atteignant souvent une mAP (précision moyenne) plus élevée pour une taille de modèle donnée. Cependant, YOLOv8 maintient des vitesses d'inférence très compétitives, en particulier sur les CPU et lorsqu'il est exporté vers des formats optimisés comme TensorRT, équilibrant la vitesse brute avec des capacités de déploiement pratiques.

ModèleTaille
(pixels)
mAPval
50-95
Vitesse
CPU ONNX
(ms)
Vitesse
T4 TensorRT10
(ms)
paramètres
(M)
FLOPs
(B)
YOLOv10n64039.5-1.562.36.7
YOLOv10s64046.7-2.667.221.6
YOLOv10m64051.3-5.4815.459.1
YOLOv10b64052.7-6.5424.492.0
YOLOv10l64053.3-8.3329.5120.3
YOLOv10x64054.4-12.256.9160.4
YOLOv8n64037.380.41.473.28.7
YOLOv8s64044.9128.42.6611.228.6
YOLOv8m64050.2234.75.8625.978.9
YOLOv8l64052.9375.29.0643.7165.2
YOLOv8x64053.9479.114.3768.2257.8

YOLOv10 : Efficacité grâce à l'innovation architecturale

Auteurs: Ao Wang, Hui Chen, Lihao Liu, et al.
Organisation:Université Tsinghua
Date: 2024-05-23
Arxiv:YOLOv10 : Détection d’objets de bout en bout en temps réel
GitHub:THU-MIG/yolov10

YOLOv10 a été développé par des chercheurs de l’université de Tsinghua avec un objectif principal : éliminer la dépendance à la suppression non maximale (NMS) pendant le post-traitement. La NMS peut être un goulot d’étranglement dans les applications critiques en termes de latence. YOLOv10 introduit une stratégie d’attribution double cohérente pendant la formation, permettant au modèle de prédire une seule meilleure boîte pour chaque objet, ce qui en fait effectivement un détecteur de bout en bout.

Principaux atouts de YOLOv10

  • Inférence sans NMS : En supprimant l'étape de NMS, YOLOv10 réduit la surcharge de calcul pendant la phase de post-traitement, ce qui peut réduire la latence dans des scénarios de périphérie spécifiques.
  • Efficacité des paramètres : La conception holistique du modèle réduit considérablement le nombre de paramètres et de FLOPs par rapport aux générations précédentes, ce qui le rend attrayant pour les appareils avec un stockage extrêmement limité.
  • Haute précision : Il atteint des scores de mAP de pointe pour sa taille, ce qui démontre l’efficacité de ses optimisations architecturales.

Faiblesses

  • Spécialisation de la tâche : YOLOv10 est principalement conçu pour la détection d’objets. Il manque une prise en charge native pour d’autres tâches de vision par ordinateur telles que la segmentation d’instance ou l’estimation de la pose dès le départ.
  • Maturité de l'écosystème : En tant que nouvelle version académique, elle possède moins d'intégrations tierces et de ressources communautaires que l'écosystème Ultralytics établi.

En savoir plus sur YOLOv10

Ultralytics YOLOv8 : La norme industrielle polyvalente

Auteurs : Glenn Jocher, Ayush Chaurasia et Jing Qiu
Organisation :Ultralytics
Date : 2023-01-10
Docs :Documentation Ultralytics YOLOv8
GitHub :ultralytics/ultralytics

Lancé par Ultralytics, YOLOv8 représente l'aboutissement d'années de recherche sur l'IA pratique et conviviale. Il est conçu non seulement pour des performances élevées, mais aussi pour une expérience de développeur exceptionnelle. YOLOv8 utilise un mécanisme de détection sans ancrage et un flux de gradient riche pour assurer un entraînement robuste. Sa caractéristique principale est sa prise en charge native d'un large éventail de tâches—detection, segmentation, classification, estimation de pose, et OBB—le tout dans un seul framework unifié.

  • Facilité d'utilisation : Ultralytics YOLOv8 est réputé pour ses interfaces Python et CLI simples. Les développeurs peuvent entraîner, valider et déployer des modèles avec seulement quelques lignes de code.
  • Écosystème bien maintenu : Faire partie de l’écosystème Ultralytics signifie avoir accès à des mises à jour fréquentes, à une communauté massive et à une intégration transparente avec des outils tels que Ultralytics HUB pour une gestion des modèles sans effort.
  • Équilibre des performances : Il établit un équilibre idéal entre vitesse et précision. Le modèle est hautement optimisé pour différents supports matériels, notamment le CPU, le GPU et les Edge TPU.
  • Efficacité de l'entraînement : YOLOv8 offre des processus d'entraînement efficaces avec des besoins en mémoire inférieurs à ceux de nombreuses alternatives basées sur Transformer, ce qui permet de réaliser des économies sur les coûts de calcul.
  • Polyvalence : Contrairement aux modèles limités aux boîtes englobantes, YOLOv8 peut gérer des projets complexes nécessitant des masques de segmentation ou des points clés sans changer de framework.

Efficacité de la mémoire

Les modèles Ultralytics tels que YOLOv8 sont conçus pour être peu gourmands en mémoire. Cela réduit considérablement la barrière à l'entrée pour la formation de modèles personnalisés, car ils nécessitent moins de mémoire CUDA que les modèles transformateurs encombrants tels que RT-DETRce qui permet l'entraînement sur des GPU grand public.

En savoir plus sur YOLOv8

Analyse comparative : Architecture et cas d'utilisation

Différences architecturales

La différence fondamentale réside dans les stratégies de post-traitement et d'affectation. YOLOv10 utilise une architecture à double tête où une tête utilise une affectation un-à-plusieurs (comme les YOLO traditionnels) pour des signaux de supervision riches pendant l'entraînement, tandis que l'autre utilise une affectation un-à-un pour l'inférence, éliminant ainsi le besoin de NMS.

YOLOv8, inversement, utilise un assigneur aligné sur les tâches et une structure de tête couplée sans ancrage. Cette conception simplifie la tête de détection et améliore la généralisation. Bien qu’il nécessite NMS, l’opération est hautement optimisée dans les formats d’exportation comme ONNX et TensorRT, ce qui rend souvent la différence de latence pratique négligeable dans les pipelines de déploiement robustes.

Cas d'utilisation idéaux

Le choix entre les deux se résume souvent aux contraintes spécifiques de votre projet :

  1. IA de périphérie haute performance (YOLOv10) : Si votre application s’exécute sur du matériel aux ressources extrêmement limitées où chaque mégaoctet de stockage compte, ou si l’opération NMS crée un goulot d’étranglement spécifique sur votre puce cible, YOLOv10 est un excellent candidat. Les exemples incluent les capteurs intégrés dans l’agriculture ou les drones légers.

  2. IA à usage général et multitâche (YOLOv8) : Pour la grande majorité des applications commerciales et de recherche, YOLOv8 est le choix supérieur. Sa capacité à effectuer la segmentation (par exemple, l’imagerie médicale précise) et l’estimation de pose (par exemple, l’analyse sportive) le rend incroyablement polyvalent. De plus, sa documentation et son assistance complètes permettent aux développeurs de résoudre les problèmes rapidement et de déployer plus rapidement.

Implémentation du code

L'un des principaux avantages du framework Ultralytics est l'API unifiée. Que vous utilisiez YOLOv8 ou que vous exploriez des modèles plus récents, le flux de travail reste cohérent et intuitif.

Voici avec quelle facilité vous pouvez lancer l'entraînement d'un modèle YOLOv8 en utilisant Python :

from ultralytics import YOLO

# Load a pre-trained YOLOv8 model
model = YOLO("yolov8n.pt")

# Train the model on your custom dataset
# The system automatically handles data downloading and processing
results = model.train(data="coco8.yaml", epochs=100, imgsz=640)

# Run inference on an image
results = model("path/to/image.jpg")

Pour YOLOv10, le package Ultralytics facilite également l'accès, permettant aux chercheurs d'expérimenter l'architecture dans un environnement familier:

from ultralytics import YOLO

# Load a pre-trained YOLOv10 model
model = YOLO("yolov10n.pt")

# Train the model using the same simple API
results = model.train(data="coco8.yaml", epochs=100, imgsz=640)

Conclusion

YOLOv10 et YOLOv8 sont tous deux des étapes impressionnantes dans le domaine de la vision par ordinateur. YOLOv10 repousse les limites de l'efficacité architecturale, offrant un aperçu des futurs sans NMS pour les applications spécialisées à faible latence.

Cependant, Ultralytics YOLOv8 reste le modèle de référence recommandé pour les développeurs et les organisations. Son écosystème robuste, sa fiabilité éprouvée et ses capacités multitâches offrent une solution complète qui va au-delà de la simple détection. Avec Ultralytics YOLOv8, vous obtenez non seulement un modèle, mais une boîte à outils complète pour créer, entraîner et déployer efficacement des solutions d'IA de classe mondiale.

Pour ceux qui cherchent à rester à la pointe de la technologie, assurez-vous également de consulter YOLO11, la dernière itération d'Ultralytics qui offre des gains de performance et d'efficacité encore plus élevés par rapport à YOLOv8.

Lectures complémentaires


Commentaires