YOLOv10 vs YOLOv7#
Les progrès rapides de la vision par ordinateur au cours des dernières années ont permis de créer des architectures toujours plus efficaces pour les applications en temps réel. La comparaison entre YOLOv10 et YOLOv7 met en lumière une transition importante de cette évolution. YOLOv7 a introduit des stratégies d’entraînement et une mise à l’échelle architecturale très efficaces, tandis que YOLOv10 a simplifié le déploiement en supprimant la dépendance de longue date à la suppression non maximale (NMS).
À leur sortie respective, les deux modèles ont repoussé les limites de la détection d’objets, tandis que l’écosystème Ultralytics et les modèles plus récents comme YOLO26 proposent désormais des workflows d’entraînement et de déploiement plus simples.
Profils et origines des modèles#
Comprendre les origines de ces modèles permet de mieux saisir les choix de conception architecturale et les recherches universitaires qui les sous-tendent.
Détails sur YOLOv10#
- 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
- Documentation : Documentation Ultralytics YOLOv10
Détails sur YOLOv7#
- Auteurs : Chien-Yao Wang, Alexey Bochkovskiy et Hong-Yuan Mark Liao
- Organisation : Institute of Information Science, Academia Sinica, Taïwan
- Date : 2022-07-06
- arXiv : YOLOv7 : un ensemble de techniques gratuites entraînables établit un nouvel état de l’art
- GitHub : WongKinYiu/yolov7
- Documentation : Documentation Ultralytics YOLOv7
Innovations architecturales#
L’approche YOLOv7#
Sorti en 2022, YOLOv7 s’est fortement concentré sur l’optimisation des chemins de gradient. Il a introduit le réseau d’agrégation de couches efficace étendu (E-ELAN), qui permettait au modèle d’apprendre des caractéristiques plus variées sans détruire le chemin de gradient d’origine. De plus, les auteurs ont mis en œuvre une méthode de « sac d’astuces entraînables », utilisant des techniques de reparamétrisation pendant l’entraînement qui pouvaient être fusionnées lors de l’inférence pour conserver une exécution rapide. Malgré ces optimisations, YOLOv7 s’appuyait toujours sur la NMS pour le post-traitement, ce qui entraînait une latence variable lors de l’analyse de scènes denses.
L’approche de YOLOv10#
YOLOv10 s’est attaqué directement au goulot d’étranglement que représente la NMS. En introduisant des assignations doubles cohérentes pendant l’entraînement, l’équipe de l’Université Tsinghua a permis une détection de bout en bout sans NMS. Cette approche à deux têtes utilise une branche avec des assignations un-à-plusieurs pour fournir des signaux de supervision riches pendant l’entraînement, et une autre avec des assignations un-à-un pour l’inférence sans NMS. Ce changement architectural offre une latence d’inférence faible et constante, adaptée à l’analyse vidéo à haute vitesse. De plus, YOLOv10 suit une conception globale axée sur l’efficacité et la précision, en éliminant les calculs redondants présents dans les générations précédentes.
La suppression du post-traitement NMS accélère l’inférence et simplifie le déploiement sur du matériel d’IA edge, comme les accélérateurs d’IA et les NPU, sur lesquels les opérations NMS personnalisées peuvent être difficiles à compiler.
Comparaison des performances#
La comparaison des métriques brutes sur le jeu de données MS COCO met en évidence l’écart entre les générations. YOLOv10 offre un compromis bien plus avantageux entre le nombre de paramètres, les besoins en calcul et la précision.
| 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 |
| YOLOv7l | 640 | 51.4 | - | 6.84 | 36.9 | 104.7 |
| YOLOv7x | 640 | 53.1 | - | 11.57 | 71.3 | 189.9 |
Comme indiqué ci-dessus, YOLOv10x obtient une mAP supérieure à celle de YOLOv7x (54,4 % contre 53,1 %) tout en utilisant moins de la moitié des paramètres (29,5 M contre 71,3 M). Les modèles YOLOv10 Nano et Small, plus légers, offrent également des vitesses de déploiement TensorRT élevées (1,84 ms et 2,49 ms sur T4), ce qui les rend intéressants pour le déploiement edge.
Les avantages de l’écosystème Ultralytics#
L’étude des articles sur les architectures est instructive, mais le développement moderne en vision par ordinateur repose sur des frameworks bien maintenus. Pour les développeurs qui souhaitent passer rapidement du prototype à la production, choisir un modèle pris en charge par Ultralytics constitue un avantage majeur.
Développement simplifié#
YOLOv10 est pris en charge nativement par le package Python standard d’Ultralytics, tandis que les checkpoints YOLOv7 entraînés en amont ne peuvent être exécutés dans Ultralytics qu’après exportation vers ONNX ou TensorRT. La prise en charge native facilite l’utilisation en remplaçant le code répétitif par une API simple et intuitive. Les modèles YOLO d’Ultralytics nécessitent également moins de mémoire CUDA à l’entraînement que les architectures Transformer lourdes, ce qui permet d’utiliser des tailles de lot plus importantes sur du matériel grand public.
Polyvalence#
Alors que les anciens dépôts se concentrent souvent uniquement sur la détection de boîtes englobantes, le framework Ultralytics prend en charge un large éventail de tâches grâce à des modèles comme YOLO26 et YOLO11. Que tu effectues de la segmentation d’instances, de l’estimation de pose ou de la détection de boîtes englobantes orientées (OBB), le workflow reste le même.
Exemple de code : workflows d’entraînement cohérents#
L’extrait de code suivant illustre le processus d’entraînement, qui gère automatiquement l’augmentation des données et la planification du taux d’apprentissage :
from ultralytics import YOLO
# Charger le modèle souhaité (par exemple YOLOv10 ou YOLO26, recommandé)
model = YOLO("yolo26n.pt")
# Entraîner le modèle sur ton jeu de données
results = model.train(data="coco8.yaml", epochs=100, imgsz=640, batch=16, device=0)
# Exporter au format ONNX pour un déploiement rapide
model.export(format="onnx")Cas d’utilisation et recommandations#
Le choix entre YOLOv10 et YOLOv7 dépend des exigences spécifiques de ton projet, de tes contraintes de déploiement et de tes préférences en matière d’écosystème.
Quand choisir YOLOv10#
YOLOv10 est un excellent choix pour :
- Détection en temps réel sans NMS : les applications qui tirent parti de la détection de bout en bout sans suppression non maximale, ce qui réduit la complexité du déploiement.
- Équilibre entre vitesse et précision : les projets qui nécessitent un bon compromis entre vitesse d’inférence et précision de détection, pour différentes tailles de modèles.
- Applications à latence constante : les scénarios de déploiement où des temps d’inférence prévisibles sont essentiels, comme en robotique ou dans les systèmes autonomes.
Quand choisir YOLOv7#
YOLOv7 est recommandé pour :
- Évaluation comparative universitaire : reproduire les résultats de pointe de 2022 ou étudier les effets d’E-ELAN et des techniques d’ensemble de techniques gratuites entraînables.
- Recherche sur la reparamétrisation : étudier les convolutions reparamétrisées planifiées et les stratégies de mise à l’échelle composée des modèles.
- Pipelines personnalisés existants : projets dotés de pipelines fortement personnalisés autour de l’architecture spécifique de YOLOv7, difficiles à refactoriser.
Quand choisir Ultralytics (YOLO26)#
Pour la plupart des nouveaux projets, Ultralytics YOLO26 offre le meilleur équilibre entre performances et expérience développeur :
- Déploiement en périphérie sans NMS : les applications qui exigent des inférences à faible latence et constantes, sans la complexité du post-traitement par suppression non maximale.
- Environnements exclusivement CPU : appareils sans accélération GPU dédiée, sur lesquels YOLO26n est jusqu’à 43 % plus rapide que YOLO11n sur CPU.
- Détection de petits objets : scénarios difficiles comme les images aériennes capturées par drone ou l’analyse de capteurs IoT, où ProgLoss et STAL améliorent la précision sur les objets minuscules.
La nouvelle référence : découvrez YOLO26#
YOLOv10 a constitué une avancée majeure en 2024, mais le domaine évolue rapidement. Pour les nouveaux développements, Ultralytics recommande le modèle de dernière génération, Ultralytics YOLO26. Sorti en janvier 2026, il remplace YOLOv7 et YOLOv10 pour l’IA visuelle en temps réel.
YOLO26 apporte plusieurs améliorations conçues pour les environnements de déploiement modernes :
- Conception de bout en bout sans NMS : dans la continuité des bases posées par YOLOv10, la tête un-à-un facultative de YOLO26 (
nms=False) ignore le post-traitement NMS, pour simplifier les pipelines de déploiement et assurer une vitesse d’inférence constante. - Inférence sur CPU jusqu’à 43 % plus rapide : YOLO26n est jusqu’à 43 % plus rapide que YOLO11n sur CPU, ce qui le rend adapté à l’informatique edge et aux appareils sans GPU dédié, tout en permettant de réduire les coûts matériels.
- Suppression de DFL : la suppression de Distribution Focal Loss (DFL) simplifie la logique d’exportation et améliore la compatibilité avec les appareils edge basse consommation.
- Optimiseur MuSGD : inspiré de Kimi K2 de Moonshot AI, cet hybride de SGD et de Muon transpose les techniques d’entraînement des grands modèles de langage (LLM) à la vision par ordinateur pour assurer un entraînement plus stable et une convergence plus rapide.
- ProgLoss + STAL : une perte progressive et une stratégie d’assignation des étiquettes adaptée aux petites cibles améliorent la reconnaissance des petits objets, un domaine historiquement difficile et essentiel aux drones, à la robotique et à la surveillance des villes intelligentes.
- Améliorations propres aux tâches : YOLO26 n’est pas qu’un détecteur. Il ajoute une fonction de perte de segmentation sémantique qui améliore la convergence de la segmentation d’instances, l’estimation résiduelle de log-vraisemblance (RLE) pour une estimation de pose plus précise et une fonction de perte angulaire spécialisée qui résout les problèmes de frontières des OBB.
Pour gérer des jeux de données, entraîner YOLO26 et déployer des modèles dans le cloud, découvre la plateforme Ultralytics. Son interface sans code complète le package Python.
Cas d'utilisation concrets#
Le choix de la bonne architecture dépend fortement de ton matériel et des contraintes de ton application.
Quand utiliser YOLOv7#
YOLOv7 reste un choix fiable pour maintenir des pipelines existants déjà étroitement intégrés à ses structures de tenseurs spécifiques, ou pour reproduire des benchmarks universitaires de 2022 et 2023. Il fonctionne bien sur les GPU de serveur haut de gamme.
Quand utiliser YOLOv10#
YOLOv10 convient aux scénarios qui nécessitent une latence constante. Sa tête sans NMS évite le post-traitement, dont la durée augmente avec le nombre de détections ; il convient donc bien au comptage de foules denses ou à la détection de défauts de fabrication, où le nombre d’objets varie, mais où le temps de traitement par image doit rester stable.
Quand utiliser YOLO26#
YOLO26 est le choix recommandé pour les nouveaux projets. Du déploiement de systèmes d’alarme de sécurité sur un Raspberry Pi à l’exécution d’analyses vidéo à grande échelle dans le cloud, son inférence plus rapide sur CPU et sa meilleure détection des petits objets lui donnent un net avantage sur les générations précédentes.
Pour les développeurs intéressés par d’autres architectures, Ultralytics prend également en charge les détecteurs basés sur Transformer comme RT-DETR et les modèles précédents comme Ultralytics YOLO11.