YOLOv10 : Détection d'objets en temps réel de bout en bout
YOLOv10, publié en mai 2024 et basé sur le Ultralytics Python package par des chercheurs de Tsinghua University, introduit une nouvelle approche de détection d'objets en temps réel, corrigeant à la fois les défauts de post-traitement et d'architecture de modèle trouvés dans les versions précédentes de YOLO. En éliminant la suppression non maximale (NMS) et en optimisant divers composants du modèle, YOLOv10 a atteint d'excellentes performances avec une surcharge de calcul considérablement réduite au moment de sa sortie. Sa conception de bout en bout sans NMS a été le pionnier d'une approche qui a été développée davantage dans YOLO26.

Watch: How to Train YOLOv10 on SKU-110k Dataset using Ultralytics | Retail Dataset
Vue d'ensemble
La détection d'objets en temps réel vise à prédire avec précision les catégories et les positions des objets dans les images avec une faible latence. La série YOLO a été à la pointe de cette recherche en raison de son équilibre entre performance et efficacité. Cependant, la dépendance au NMS et les inefficacités architecturales ont entravé des performances optimales. YOLOv10 résout ces problèmes en introduisant des doubles attributions cohérentes pour un entraînement sans NMS et une stratégie de conception de modèle holistique axée sur l'efficacité et la précision.
Architecture
L'architecture de YOLOv10 s'appuie sur les forces des modèles YOLO précédents tout en introduisant plusieurs innovations clés. L'architecture du modèle se compose des éléments suivants :
- Backbone: Responsable de l'extraction de caractéristiques, le backbone de YOLOv10 utilise une version améliorée de CSPNet (Cross Stage Partial Network) pour améliorer le flux de gradient et réduire la redondance de calcul.
- Neck: Le neck est conçu pour agréger les caractéristiques de différentes échelles et les transmettre à la tête. Il comprend des couches PAN (Path Aggregation Network) pour une fusion efficace des caractéristiques multi-échelles.
- Tête One-to-Many: Génère plusieurs prédictions par objet pendant l'entraînement pour fournir des signaux de supervision riches et améliorer la précision de l'apprentissage.
- One-to-One Head: Génère une seule meilleure prédiction par objet lors de l'inférence pour éliminer le besoin de NMS, réduisant ainsi la latence et améliorant l'efficacité.
Fonctionnalités clés
- Entraînement sans NMS: Utilise des doubles attributions cohérentes pour éliminer le besoin de NMS, réduisant la latence d'inférence.
- Conception de modèle holistique: Optimisation complète de divers composants du point de vue de l'efficacité et de la précision, y compris des têtes de classification légères, un sous-échantillonnage découplé spatial-canal et une conception de bloc guidée par le rang.
- Capacités de modèle améliorées: Intègre des convolutions à grands noyaux et des modules d'auto-attention partielle pour améliorer les performances sans coût de calcul significatif.
Variantes du modèle
YOLOv10 se décline en plusieurs échelles de modèle pour répondre aux différents besoins des applications :
- YOLOv10n: Version nano pour les environnements aux ressources extrêmement limitées.
- YOLOv10s: Version petite équilibrant vitesse et précision.
- YOLOv10m: Version moyenne pour un usage général.
- YOLOv10b: Version équilibrée avec une largeur accrue pour une plus grande précision.
- YOLOv10l: Version large pour une plus grande précision au prix de ressources de calcul accrues.
- YOLOv10x: Version extra-large pour une précision et des performances maximales.
Performance
YOLOv10 surpasse les versions précédentes de YOLO et d'autres modèles de pointe en termes de précision et d'efficacité. Par exemple, YOLOv10s est 1,8x plus rapide que RT-DETR-R18 avec une AP similaire sur le dataset COCO, et YOLOv10b a 46 % de latence en moins et 25 % de paramètres en moins que YOLOv9-C avec les mêmes performances.
Latence mesurée avec TensorRT FP16 sur GPU T4.
| Modèle | Taille d'entrée | APval | FLOPs (G) | Latence (ms) |
|---|---|---|---|---|
| [YOLOv10n][1] | 640 | 38.5 | 6.7 | 1.84 |
| [YOLOv10s][2] | 640 | 46.3 | 21.6 | 2.49 |
| [YOLOv10m][3] | 640 | 51.1 | 59.1 | 4.74 |
| [YOLOv10b][4] | 640 | 52.5 | 92.0 | 5.74 |
| [YOLOv10l][5] | 640 | 53.2 | 120.3 | 7.28 |
| [YOLOv10x][6] | 640 | 54.4 | 160.4 | 10.70 |
Méthodologie
Doubles attributions cohérentes pour un entraînement sans NMS
YOLOv10 utilise des doubles attributions d'étiquettes, combinant des stratégies one-to-many et one-to-one pendant l'entraînement pour assurer une supervision riche et un déploiement efficace de bout en bout. La métrique de correspondance cohérente aligne la supervision entre les deux stratégies, améliorant la qualité des prédictions lors de inférence.
Efficacité holistique-Précision Conception de modèle dirigée
Améliorations de l'efficacité
- Tête de classification légère: Réduit la surcharge de calcul de la tête de classification en utilisant des convolutions séparables en profondeur.
- Sous-échantillonnage spatial-canal découplé: Découple la réduction spatiale et la modulation des canaux pour minimiser la perte d'informations et le coût de calcul.
- Conception de bloc guidée par le rang: Adapte la conception des blocs en fonction de la redondance intrinsèque des étapes, assurant une utilisation optimale des paramètres.
Améliorations de la précision
- Convolution à grand noyau: Agrandit le champ récepteur pour améliorer la capacité d'extraction des caractéristiques.
- Auto-attention partielle (PSA): Intègre des modules d'auto-attention pour améliorer l'apprentissage de la représentation globale avec un minimum de surcharge.
Expériences et résultats
YOLOv10 a été largement testé sur des benchmarks standards comme COCO, démontrant des performances et une efficacité supérieures. Le modèle obtient des résultats de pointe sur différentes variantes, affichant des améliorations significatives en termes de latence et de précision par rapport aux versions précédentes et à d'autres détecteurs contemporains.
Comparaisons

Par rapport aux autres détecteurs de pointe :
- YOLOv10s / x sont 1,8× / 1,3× plus rapides que RT-DETR-R18 / R101 avec une précision similaire
- YOLOv10b a 25 % de paramètres en moins et 46 % de latence en moins que YOLOv9-C à précision égale
- YOLOv10l / x surpassent YOLOv8l / xpar 0,3 AP / 0,5 AP avec 1,8× / 2,3× moins de paramètres
Voici une comparaison détaillée des variantes de YOLOv10 avec d'autres modèles de pointe :
| Modèle | Params (M) | FLOPs (G) | mAPval 50-95 | Latence (ms) | Latence-avant (ms) |
|---|---|---|---|---|---|
| YOLOv6-3.0-N | 4,7 | 11,4 | 37,0 | 2,69 | 1,76 |
| Gold-YOLO-N | 5,6 | 12,1 | 39.6 | 2,92 | 1,82 |
| YOLOv8n | 3,2 | 8,7 | 37,3 | 6,16 | 1,77 |
| YOLOv10n | 2,3 | 6.7 | 39,5 | 1.84 | 1,79 |
| YOLOv6-3.0-S | 18,5 | 45,3 | 44,3 | 3,42 | 2,35 |
| Gold-YOLO-S | 21.5 | 46,0 | 45,4 | 3,82 | 2,73 |
| YOLOv8s | 11,2 | 28.6 | 44,9 | 7,07 | 2,33 |
| YOLOv10s | 7,2 | 21.6 | 46,8 | 2.49 | 2,39 |
| RT-DETR-R18 | 20,0 | 60,0 | 46,5 | 4,58 | 4,49 |
| YOLOv6-3.0-M | 34,9 | 85,8 | 49,1 | 5,63 | 4,56 |
| Gold-YOLO-M | 41,3 | 87,5 | 49,8 | 6,38 | 5,45 |
| YOLOv8m | 25.9 | 78.9 | 50,6 | 9,50 | 5,09 |
| YOLOv10m | 15,4 | 59.1 | 51,3 | 4.74 | 4,63 |
| YOLOv6-3.0-L | 59,6 | 150,7 | 51,8 | 9,02 | 7,90 |
| Gold-YOLO-L | 75,1 | 151,7 | 51,8 | 10,65 | 9,78 |
| YOLOv8l | 43,7 | 165,2 | 52,9 | 12,39 | 8,06 |
| RT-DETR-R50 | 42,0 | 136,0 | 53.1 | 9,20 | 9,07 |
| YOLOv10l | 24,4 | 120.3 | 53,4 | 7.28 | 7,21 |
| YOLOv8x | 68.2 | 257,8 | 53,9 | 16,86 | 12,83 |
| RT-DETR-R101 | 76.0 | 259.0 | 54.3 | 13.71 | 13.58 |
| YOLOv10x | 29.5 | 160.4 | 54.4 | 10.70 | 10.60 |
Les valeurs de Params et FLOPs concernent le modèle fusionné après model.fuse(), qui fusionne les couches Conv et BatchNorm et supprime la tête de détection auxiliaire one-to-many. Les checkpoints pré-entraînés conservent l'architecture d'entraînement complète et peuvent afficher des nombres plus élevés.
Exemples d'utilisation
Pour prédire de nouvelles images avec YOLOv10. Les modèles peuvent aussi être entraînés sur des GPU cloud via Ultralytics Platform:
from ultralytics import YOLO
# Load a pretrained YOLOv10n model
model = YOLO("yolov10n.pt")
# Perform object detection on an image
results = model("image.jpg")
# Display the results
results[0].show()Pour entraîner YOLOv10 sur un jeu de données personnalisé :
from ultralytics import YOLO
# Load YOLOv10n model from scratch
model = YOLO("yolov10n.yaml")
# Train the model
model.train(data="coco8.yaml", epochs=100, imgsz=640)Tâches et modes pris en charge
La série de modèles YOLOv10 propose une gamme de modèles, chacun optimisé pour une haute performance Détection d'objets. Ces modèles répondent à des besoins computationnels et des exigences de précision variés, les rendant polyvalents pour une large gamme d'applications.
| Modèle | Noms de fichiers | Tâches | Inference | Validation | Entraînement | Export |
|---|---|---|---|---|---|---|
| YOLOv10 | yolov10n.pt yolov10s.pt yolov10m.pt yolov10l.pt yolov10x.pt | Détection d'objets | ✅ | ✅ | ✅ | ✅ |
Exporter YOLOv10
En raison des nouvelles opérations introduites avec YOLOv10, tous les formats d'exportation fournis par Ultralytics ne sont pas actuellement pris en charge. Le tableau suivant indique quels formats ont été convertis avec succès en utilisant Ultralytics pour YOLOv10. N'hésite pas à ouvrir une pull request si tu es en mesure de proposer une contribution pour ajouter la prise en charge de l'exportation de formats supplémentaires pour YOLOv10.
| Format d'exportation | Support d'exportation | Inférence du modèle exporté | Notes |
|---|---|---|---|
| TorchScript | ✅ | ✅ | Format de modèle PyTorch standard. |
| ONNX | ✅ | ✅ | Largement pris en charge pour le déploiement. |
| OpenVINO | ✅ | ✅ | Optimisé pour le matériel Intel. |
| TensorRT | ✅ | ✅ | Optimisé pour les GPU NVIDIA. |
| CoreML | ✅ | ✅ | Limité aux appareils Apple. |
| TF SavedModel | ✅ | ✅ | TensorFlow format de modèle standard. |
| TF GraphDef | ✅ | ✅ | Format TensorFlow hérité. |
| TF Lite | ✅ | ✅ | Optimisé pour le mobile et l'embarqué. |
| TF Edge TPU | ✅ | ✅ | Spécifique aux appareils Edge TPU de Google. |
| TF.js | ✅ | ✅ | Environnement JavaScript pour une utilisation dans le navigateur. |
| PaddlePaddle | ❌ | ❌ | Populaire en Chine ; support mondial moindre. |
| NCNN | ✅ | ❌ | Couche torch.topk inexistante ou non enregistrée |
Conclusion
YOLOv10 a établi une nouvelle norme dans la détection d'objets en temps réel lors de sa sortie en corrigeant les lacunes des versions précédentes de YOLO et en intégrant des stratégies de conception innovantes. Son approche sans NMS a été pionnière dans la détection d'objets de bout en bout au sein de la famille YOLO. Pour le dernier modèle Ultralytics avec des performances améliorées et une inférence sans NMS, voir YOLO26.
Citations et remerciements
Nous tenons à remercier les auteurs de YOLOv10 de Tsinghua University pour leurs recherches approfondies et leurs contributions significatives au framework Ultralytics :
@article{THU-MIGyolov10,
title={YOLOv10: Real-Time End-to-End Object Detection},
author={Ao Wang, Hui Chen, Lihao Liu, et al.},
journal={arXiv preprint arXiv:2405.14458},
year={2024},
institution={Tsinghua University},
license = {AGPL-3.0}
}Pour une implémentation détaillée, les innovations architecturales et les résultats expérimentaux, veuillez consulter le document de recherche et en dépôt GitHub YOLOv10 de l'équipe de l'Université Tsinghua.
FAQ
Qu'est-ce que YOLOv10 et en quoi diffère-t-il des versions précédentes de YOLO ?
YOLOv10, développé par des chercheurs de Tsinghua University, introduit plusieurs innovations clés dans la détection d'objets en temps réel. Il élimine le besoin de suppression non-maximale (NMS) en utilisant des doubles assignations cohérentes pendant l'entraînement et des composants de modèle optimisés pour des performances supérieures avec une surcharge computationnelle réduite. Pour plus de détails sur son architecture et ses caractéristiques clés, consulte la présentation de YOLOv10.
Comment puis-je commencer à exécuter une inférence avec YOLOv10 ?
Pour une inférence facile, tu peux utiliser la bibliothèque Python Ultralytics YOLO ou l'interface de ligne de commande (CLI). Voici des exemples de prédiction de nouvelles images avec YOLOv10 :
from ultralytics import YOLO
# Load the pretrained YOLOv10n model
model = YOLO("yolov10n.pt")
results = model("image.jpg")
results[0].show()Pour plus d'exemples d'utilisation, visite notre Exemples d'utilisation.
Quelles variantes de modèle YOLOv10 propose-t-il et quels sont leurs cas d'utilisation ?
YOLOv10 propose plusieurs variantes de modèles pour répondre à différents cas d'utilisation :
- YOLOv10n: Adapté aux environnements extrêmement limités en ressources
- YOLOv10s: Équilibre entre vitesse et précision
- YOLOv10m: Utilisation polyvalente
- YOLOv10b: Précision supérieure avec une largeur accrue
- YOLOv10l: Haute précision au prix de ressources computationnelles
- YOLOv10x: Précision et performances maximales
Chaque variante est conçue pour des besoins computationnels et des exigences de précision différents, les rendant polyvalentes pour une variété d'applications. Explore le Variantes du modèle pour plus d'informations.
Comment l'approche sans NMS dans YOLOv10 améliore-t-elle les performances ?
YOLOv10 élimine le besoin de suppression non-maximale (NMS) pendant l'inférence en employant des doubles assignations cohérentes pour l'entraînement. Cette approche réduit la latence d'inférence et améliore l'efficacité des prédictions. L'architecture inclut également une tête un-à-un pour l'inférence, garantissant que chaque objet obtienne une seule meilleure prédiction. Pour une explication détaillée, voir le Doubles attributions cohérentes pour un entraînement sans NMS.
Où puis-je trouver les options d'exportation pour les modèles YOLOv10 ?
YOLOv10 prend en charge plusieurs formats d'exportation, notamment TorchScript, ONNX, OpenVINO et TensorRT. Cependant, tous les formats d'exportation fournis par Ultralytics ne sont pas actuellement pris en charge pour YOLOv10 en raison de ses nouvelles opérations. Pour plus de détails sur les formats pris en charge et les instructions d'exportation, visite le Exporter YOLOv10.
Quels sont les benchmarks de performance pour les modèles YOLOv10 ?
YOLOv10 surpasse les versions précédentes de YOLO et d'autres modèles de pointe en termes de précision et d'efficacité. Par exemple, YOLOv10s est 1,8x plus rapide que RT-DETR-R18 avec une AP similaire sur le jeu de données COCO. YOLOv10b montre 46 % de latence en moins et 25 % de paramètres en moins que YOLOv9-C avec les mêmes performances. Des benchmarks détaillés peuvent être trouvés dans le Comparaisons.