YOLOv10 vs YOLOv8#
L’évolution rapide de la détection d’objets en temps réel a vu se succéder de nombreuses architectures, chacune cherchant à repousser les limites de la précision, de la vitesse d’inférence et de l’efficacité des calculs. Ce guide technique compare deux étapes majeures de la vision par ordinateur : YOLOv10 et Ultralytics YOLOv8. YOLOv8 a établi une référence très polyvalente et prête pour la production, tandis que YOLOv10 a introduit des changements architecturaux spécifiquement destinés à supprimer les goulots d’étranglement du post-traitement.
Il est essentiel de comprendre les avantages, les architectures et les métriques de performance propres à ces modèles pour les développeurs et les chercheurs qui souhaitent déployer des solutions d’IA visuelle de pointe dans des situations réelles.
Spécifications techniques et auteurs#
Pour évaluer efficacement ces modèles, il est utile de connaître leur origine et le principal axe de recherche de leurs équipes respectives.
YOLOv10 : efficacité de bout en bout#
Développé par des chercheurs de l’Université Tsinghua, YOLOv10 a été conçu pour réduire la surcharge de calcul induite par les étapes de post-traitement des générations précédentes.
- Auteurs : Ao Wang, Hui Chen, Lihao Liu, et al.
- Organisation : Université Tsinghua
- Date : 2024-05-23
- arXiv : 2405.14458
- GitHub : THU-MIG/yolov10
- Documentation : Documentation YOLOv10
Ultralytics YOLOv8 : la référence polyvalente#
Sorti en janvier 2023, YOLOv8 est rapidement devenu une référence du secteur grâce à son architecture et à son intégration étroite avec l’écosystème plus large de l’apprentissage automatique.
- Auteurs : Glenn Jocher, Ayush Chaurasia et Jing Qiu
- Organisation : Ultralytics
- Date : 2023-01-10
- GitHub : ultralytics/ultralytics
Innovations architecturales#
Les deux modèles apportent des améliorations significatives à l’architecture YOLO traditionnelle, même s’ils ciblent des aspects légèrement différents du pipeline.
Architecture de YOLOv10#
La principale caractéristique de YOLOv10 est sa stratégie d’entraînement sans NMS. Traditionnellement, les détecteurs d’objets s’appuient sur la suppression non maximale (NMS) pendant l’inférence pour filtrer les boîtes englobantes qui se chevauchent. Cette étape peut ajouter de la latence et compliquer le déploiement de bout en bout. YOLOv10 utilise des assignations doubles cohérentes pendant l’entraînement, ce qui permet à sa tête un-à-un de prédire une seule boîte englobante par objet (dans le package Ultralytics, sélectionne cette tête avec nms=False). De plus, il suit une conception globale axée sur l’efficacité et la précision, en optimisant divers composants pour réduire les FLOP et le nombre de paramètres.
Architecture de YOLOv8#
YOLOv8 a introduit une tête de détection sans ancres, abandonnant les approches basées sur des ancres de ses prédécesseurs. Cela réduit le nombre de prédictions de boîtes et accélère les opérations NMS. YOLOv8 intègre également le module C2f (goulot d’étranglement Cross-Stage Partial à deux convolutions), qui améliore le flux de gradients et permet au réseau d’apprendre des représentations de caractéristiques plus riches sans augmenter considérablement le coût des calculs. Sa tête découplée sépare les tâches de classification et de régression, ce qui accélère la convergence et améliore la précision globale.
Performances et benchmarks#
Lors du déploiement de modèles sur des appareils périphériques ou des serveurs cloud, l’équilibre entre vitesse et précision est primordial. Le tableau ci-dessous compare directement les deux modèles dans différentes tailles.
| Modèle | taille (pixels) | mAPval50-95 | Vitesse CPU ONNX (ms) | Vitesse T4 TensorRT10 (ms) | paramètres (M) | FLOPs (B) |
|---|---|---|---|---|---|---|
| YOLOv10n | 640 | 38.5 | - | 1.84 | 2.3 | 6.7 |
| YOLOv10s | 640 | 46.3 | - | 2.49 | 7.2 | 21.6 |
| YOLOv10m | 640 | 51.1 | - | 4.74 | 15.4 | 59.1 |
| YOLOv10b | 640 | 52.5 | - | 5.74 | 19.1 | 92.0 |
| YOLOv10l | 640 | 53.2 | - | 7.28 | 24.4 | 120.3 |
| YOLOv10x | 640 | 54.4 | - | 10.70 | 29.5 | 160.4 |
| YOLOv8n | 640 | 37.3 | 80.4 | 1.47 | 3.2 | 8.7 |
| YOLOv8s | 640 | 44.9 | 128.4 | 2.66 | 11.2 | 28.6 |
| YOLOv8m | 640 | 50.2 | 234.7 | 5.86 | 25.9 | 78.9 |
| YOLOv8l | 640 | 52.9 | 375.2 | 9.06 | 43.7 | 165.1 |
| YOLOv8x | 640 | 53.9 | 479.1 | 14.37 | 68.2 | 257.8 |
Remarque : les tirets (-) indiquent des métriques qui n’ont pas été officiellement rapportées dans des conditions de test identiques.
Comme le montrent les données, YOLOv10 est très efficace en nombre de paramètres : il dépasse la mAP de ses équivalents YOLOv8 à chaque taille, tout en utilisant moins de paramètres et de FLOP. YOLOv8 reste compétitif en vitesse : YOLOv8n affiche le temps TensorRT sur T4 le plus rapide du tableau (1,47 ms), et seul YOLOv8 fournit des vitesses ONNX sur CPU.
Pour les environnements de production, l’utilisation de formats comme ONNX ou TensorRT peut considérablement accélérer l’inférence. YOLOv8 et YOLOv10 s’exportent directement vers ces formats de graphes optimisés.
Écosystème, efficacité de l’entraînement et polyvalence#
Le choix d’un modèle ne se limite pas aux benchmarks théoriques ; l’expérience de développement et l’écosystème associé sont tout aussi essentiels.
L’avantage Ultralytics#
L’un des principaux atouts de YOLOv8 est son intégration étroite à l’écosystème Ultralytics. Cet environnement propose une API Python intuitive et une documentation complète. Contrairement aux dépôts axés sur la recherche, qui peuvent nécessiter des configurations complexes de l’environnement, les modèles Ultralytics sont réputés pour leur facilité d’utilisation.
De plus, YOLOv8 est intrinsèquement polyvalent. YOLOv10 étant strictement optimisé pour la détection d’objets, le framework Ultralytics permet aux développeurs de passer de la détection d’objets à la segmentation d’instances, à la classification d’images, à l’estimation de pose et à la détection de boîtes englobantes orientées (OBB), tout en conservant exactement la même bibliothèque et la même structure d’API.
Besoins en mémoire et entraînement#
Les modèles YOLO d’Ultralytics sont conçus pour privilégier l’efficacité de l’entraînement. En général, ils utilisent moins de mémoire pendant l’entraînement et l’inférence que les modèles Transformer complexes. Les développeurs peuvent ainsi entraîner des modèles de pointe sur du matériel grand public ou des instances cloud standard sans manquer de mémoire CUDA. Des hyperparamètres par défaut bien réglés et l’augmentation intégrée des données accélèrent la convergence des modèles.
Voici un exemple pratique montrant à quel point il est simple d’entraîner un modèle et d’exécuter l’inférence avec l’API Python Ultralytics :
from ultralytics import YOLO
# Charger un modèle YOLOv8n préentraîné
model = YOLO("yolov8n.pt")
# Entraîner le modèle sur le jeu de données d’exemple COCO8
results = model.train(data="coco8.yaml", epochs=50, imgsz=640, device=0)
# Exécuter l’inférence sur une image de test
predictions = model("https://ultralytics.com/images/zidane.jpg")
predictions[0].show()La nouvelle génération : YOLO26#
YOLOv8 et YOLOv10 sont des étapes importantes, mais le domaine continue d’évoluer. Pour les nouveaux projets, Ultralytics recommande YOLO26, sa dernière famille de modèles, sortie en janvier 2026.
YOLO26 réunit les avancées architecturales récentes au sein d’un même framework. Il adopte la conception de bout en bout sans NMS de YOLOv10 sous la forme d’une tête one-to-one facultative (nms=False), ce qui rationalise les pipelines de déploiement et réduit la variabilité de la latence. YOLO26 introduit aussi l’optimiseur MuSGD, un hybride de SGD et de Muon inspiré de l’entraînement des LLM, pour une convergence plus rapide et plus stable.
Principales améliorations de YOLO26 :
- Inférence sur CPU jusqu’à 43 % plus rapide : YOLO26n est jusqu’à 43 % plus rapide que YOLO11n sur CPU, notamment grâce à la suppression de Distribution Focal Loss (DFL).
- ProgLoss + STAL : la perte progressive et l’assignation des étiquettes adaptée aux petites cibles améliorent la reconnaissance des petits objets, essentielle pour l’imagerie par drone et les capteurs IoT.
- Améliorations propres aux tâches : des têtes et des fonctions de perte adaptées à chaque tâche pour la segmentation d’instances, la segmentation sémantique, l’estimation de profondeur, l’estimation de pose et les OBB.
Cas d’utilisation idéaux et stratégies de déploiement#
Pour choisir entre ces architectures, tiens compte des besoins spécifiques de ton environnement de déploiement :
- Choisis YOLOv10 si : tu travailles sur un pipeline de détection d’objets pur où chaque gain d’efficacité en matière de paramètres compte, et que tu souhaites expérimenter les premières implémentations d’architectures sans NMS.
- Choisis Ultralytics YOLOv8 si : tu as besoin d’un modèle stable et prêt pour la production, pris en charge par la plateforme Ultralytics. C’est un bon choix si ton projet nécessite plusieurs tâches (par exemple, détecter des objets puis les segmenter) dans une base de code unifiée et facile à maintenir.
- Choisis YOLO26 (recommandé) si : tu veux le meilleur équilibre entre précision, inférence de bout en bout facultativement sans NMS et vitesse élevée sur CPU et matériel edge.
Si tu explores le domaine plus vaste de la vision par ordinateur, tu peux aussi comparer ces modèles à YOLO11 ou découvrir des intégrations de déploiement edge comme Intel OpenVINO pour accélérer davantage tes applications d’IA visuelle.