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. Lorsqu'il s'agit de choisir entre YOLOv10 et YOLOv8il est essentiel de comprendre les nuances en matière d'architecture, d'efficacité et de soutien de l'écosystème. Alors que YOLOv10 introduit de nouveaux changements architecturaux pour plus d'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éesCOCO illustrent les philosophies de conception distinctes qui sous-tendent ces modèles. YOLOv10 se concentre fortement sur la réduction du nombre de paramètres et d'opérations en virgule flottante (FLOP), ce qui permet souvent d'obtenir une précision moyenne plus élevée ( mAP ) pour une taille de modèle donnée. En revanche, YOLOv8 YOLOv8 maintient des vitesses d'inférence très compétitives, en particulier sur les CPU et lorsqu'il est exporté dans des formats optimisés tels que TensorRTce qui permet d'équilibrer la vitesse brute et les 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: L'efficacité par l'innovation architecturale

Auteurs : Ao Wang, Hui Chen, Lihao Liu, et al.
Organization:Tsinghua University
Date : 2024-05-23
Arxiv:YOLOv10: Real-Time End-to-End Object Detection
GitHub:THU-MIG/yolov10

YOLOv10 a été développé par des chercheurs de l'Université de Tsinghua avec un objectif principal : éliminer le recours à la suppression non maximaleNMS 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 cohérente de double affectation pendant l'apprentissage, ce qui permet au modèle de prédire une seule boîte optimale pour chaque objet, ce qui en fait un détecteur de bout en bout.

Principaux points forts de YOLOv10

  • InférenceNMS: En supprimant l'étape NMS , YOLOv10 réduit la charge de calcul pendant la phase de post-traitement, ce qui peut réduire le temps de latence dans des scénarios spécifiques.
  • Efficacité des paramètres : La conception holistique du modèle réduit considérablement le nombre de paramètres et de FLOP par rapport aux générations précédentes, ce qui le rend intéressant pour les appareils dont le stockage est extrêmement limité.
  • Précision élevée : il atteint des scores mAP de pointe pour sa taille, ce qui démontre l'efficacité de ses optimisations architecturales.

Faiblesses

  • Spécialisation des tâches : YOLOv10 est principalement conçu pour la détection d'objets. Il n'offre pas de support natif pour d'autres tâches de vision artificielle telles que la segmentation d'instances ou l'estimation de la pose.
  • Maturité de l'écosystème : En tant que nouvelle version académique, elle dispose de moins d'intégrations tierces et de ressources communautaires que l'écosystème établi d'Ultralytics .

En savoir plus sur YOLOv10

Ultralytics YOLOv8: la norme polyvalente de l'industrie

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

Lancé par Ultralytics, YOLOv8 représente l'aboutissement d'années de recherche dans le domaine de l'IA pratique et conviviale. Il est conçu non seulement pour des performances élevées, mais aussi pour une expérience exceptionnelle pour les développeurs. YOLOv8 utilise un mécanisme de détection sans ancrage et un flux de gradient riche pour garantir une formation solide. Sa particularité réside dans sa prise en charge native d'un large éventail de tâches - détection, segmentation, classification, estimation de la pose et OBB - au sein d'un cadre unique et unifié.

  • Facilité d'utilisation : Ultralytics YOLOv8 est réputé pour sa simplicité d'utilisation. Python et CLI . Les développeurs peuvent former, valider et déployer des modèles avec seulement quelques lignes de code.
  • Un écosystème bien entretenu : 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 comme Ultralytics HUB pour une gestion sans effort des modèles.
  • É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 la formation : YOLOv8 offre des processus de formation efficaces avec des besoins en mémoire inférieurs à ceux de nombreuses alternatives basées sur les transformateurs, ce qui permet d'économiser sur les coûts de calcul.
  • Polyvalence : Contrairement aux modèles limités aux boîtes de délimitation, YOLOv8 peut gérer des projets complexes nécessitant des masques de segmentation ou des points clés sans changer de cadre.

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 à deux têtes dont l'une utilise l'affectation un à plusieurs (comme les YOLO traditionnels) pour les signaux de supervision riches pendant l'apprentissage, tandis que l'autre utilise l'affectation un à un pour l'inférence, ce qui élimine le besoin de NMS.

YOLOv8YOLOv8, à l'inverse, utilise un assignateur 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'elle nécessite un NMS, l'opération est fortement optimisée dans les formats d'exportation tels que ONNX et TensorRT, ce qui rend souvent la différence de latence négligeable dans les pipelines de déploiement robustes.

Cas d'utilisation idéaux

Le choix entre les deux se fait souvent en fonction des contraintes spécifiques de votre projet :

  1. Edge AI haute performance (YOLOv10) : Si votre application fonctionne sur du matériel aux ressources très 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 polyvalente et multitâche (YOLOv8) : Pour la grande majorité des applications commerciales et de recherche, YOLOv8 est le meilleur choix. Sa capacité à effectuer des segmentations (par exemple, imagerie médicale précise) et à estimer des poses (par exemple, analyse sportive) le rend incroyablement polyvalent. En outre, sa documentation et son assistance étendues permettent aux développeurs de résoudre rapidement les problèmes et d'accélérer le déploiement.

Mise en œuvre du code

L'un des principaux avantages du cadre 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 comment vous pouvez facilement lancer l'entraînement d'un modèle YOLOv8 à l'aide de 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 paquet 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 des étapes impressionnantes dans le domaine de la vision par ordinateur. YOLOv10 repousse les limites de l'efficacité architecturale, offrant un aperçu de l'avenir NMS pour les applications spécialisées à faible latence.

Cependant, Ultralytics YOLOv8 reste le modèle recommandé aux développeurs et aux 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 bénéficiez non seulement d'un modèle, mais aussi d'une boîte à outils complète pour construire, former et déployer efficacement des solutions d'IA de classe mondiale.

Pour ceux qui souhaitent rester à la pointe de la technologie, ne manquez pas de consulter également YOLO11la dernière itération d'Ultralytics , qui offre des gains de performance et d'efficacité encore plus importants que YOLOv8.

Lectures complémentaires


Commentaires