YOLOv10 : Détection d'objets en temps réel de bout en bout#
YOLOv10, sorti en mai 2024 et basé sur le paquet Python Ultralytics par des chercheurs de l'Université de Tsinghua, introduit une nouvelle approche de la détection d'objets en temps réel, remédiant aux lacunes du post-traitement et de l'architecture des modèles constatées 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 ouvert la voie à une approche qui a été développée plus avant dans YOLO26.

Watch: How to Train YOLOv10 on SKU-110k Dataset using Ultralytics | Retail Dataset
Présentation#
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é à l'avant-garde de cette recherche en raison de son équilibre entre performance et efficacité. Cependant, la dépendance à l'égard de la NMS et les inefficacités architecturales ont entravé les performances optimales. YOLOv10 résout ces problèmes en introduisant des attributions duales cohérentes pour l'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 points forts 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 des caractéristiques, le backbone de YOLOv10 utilise une version améliorée de CSPNet (Cross Stage Partial Network) pour améliorer le flux de gradients 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 (head). Il inclut des couches PAN (Path Aggregation Network) pour une fusion efficace des caractéristiques multi-échelles.
- One-to-Many Head : 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 pendant 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 attributions duales cohérentes pour éliminer le besoin de NMS, réduisant ainsi 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, incluant 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 à grand noyau et des modules d'auto-attention partielle pour améliorer les performances sans coût de calcul significatif.
Variantes de modèle#
YOLOv10 est disponible en plusieurs échelles de modèles pour répondre aux différents besoins des applications :
- YOLOv10n : Version Nano pour les environnements extrêmement limités en ressources.
- YOLOv10s : Version Small équilibrant vitesse et précision.
- YOLOv10m : Version Medium pour une utilisation polyvalente.
- YOLOv10b : Version équilibrée avec une largeur accrue pour une meilleure 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 un AP similaire sur le jeu de données COCO, et YOLOv10b a une latence inférieure de 46 % et 25 % de paramètres en moins que YOLOv9-C à performance égale.
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#
Assignations doubles cohérentes pour l'entraînement sans NMS#
YOLOv10 utilise des attributions de labels duales, combinant des stratégies un-à-plusieurs et un-à-un 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 pendant l'inférence.
Conception de modèle holistique axée sur l'efficacité et la précision#
Améliorations de l'efficacité#
- Tête de classification légère : Réduit la charge de calcul de la tête de classification en utilisant des convolutions séparables en profondeur.
- Sous-échantillonnage découplé spatial-canal : Découple la réduction spatiale et la modulation de canal pour minimiser la perte d'informations et le coût de calcul.
- Conception de bloc guidée par le rang : Adapte la conception du bloc en fonction de la redondance intrinsèque de l'étape, assurant une utilisation optimale des paramètres.
Améliorations de la précision#
- Convolution à grand noyau : Élargit 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 une charge minimale.
Expériences et résultats#
YOLOv10 a été testé de manière approfondie sur des benchmarks standard comme COCO, démontrant des performances et une efficacité supérieures. Le modèle atteint des résultats de pointe à travers différentes variantes, illustrant des améliorations significatives de la latence et de la précision par rapport aux versions précédentes et à d'autres détecteurs contemporains.
Comparaisons#

Par rapport à d'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 / x de 0,3 AP / 0,5 AP avec 1,8× / 2,3× paramètres en moins
Voici une comparaison détaillée des variantes de YOLOv10 avec d'autres modèles de pointe :
| Modèle | Paramètres (M) | FLOPs (G) | mAPval 50-95 | Latence (ms) | Latence-forward (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 paramètres et de FLOPs correspondent au modèle fusionné après model.fuse(), qui fusionne les couches Conv et BatchNorm et supprime la tête de détection auxiliaire un-à-plusieurs. 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 également ê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 offre une gamme de modèles, chacun optimisé pour la détection d'objets haute performance. Ces modèles répondent à des besoins de calcul et à des exigences de précision variés, ce qui les rend polyvalents pour un large éventail d'applications.
| Modèle | Noms de fichiers | Tâches | Entraînement | Validation | Inférence | Exporter (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 les formats qui ont été convertis avec succès à l'aide d'Ultralytics pour YOLOv10. N'hésite pas à ouvrir une pull request si tu es en mesure de proposer un changement de contribution pour ajouter la prise en charge de l'exportation de formats supplémentaires pour YOLOv10.
| Format d'exportation | Prise en charge de l'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 | ✅ | ✅ | Format de modèle standard de TensorFlow. |
| TF GraphDef | ✅ | ✅ | Ancien format TensorFlow. |
| LiteRT | ✅ | ✅ | Optimisé pour le mobile, l'embarqué et le navigateur (LiteRT.js). |
| TF Edge TPU | ✅ | ✅ | Spécifique aux appareils Edge TPU de Google. |
| PaddlePaddle | ❌ | ❌ | Populaire en Chine ; moins de support mondial. |
| NCNN | ✅ | ❌ | La couche torch.topk n'existe pas ou n'est pas enregistrée |
Conclusion#
YOLOv10 a établi une nouvelle norme en matière de détection d'objets en temps réel lors de sa sortie en s'attaquant aux lacunes des versions précédentes de YOLO et en intégrant des stratégies de conception innovantes. Son approche sans NMS a ouvert la voie à la détection d'objets de bout en bout dans la famille YOLO. Pour le dernier modèle Ultralytics doté de performances améliorées et d'une inférence sans NMS, consulte YOLO26.
Citations et remerciements#
Nous tenons à remercier les auteurs de YOLOv10 de l'Université de Tsinghua pour leurs recherches approfondies et leurs contributions significatives au framework Ultralytics :
@inproceedings{wang2024yolov10,
title={YOLOv10: Real-Time End-to-End Object Detection},
author={Wang, Ao and Chen, Hui and Liu, Lihao and Chen, Kai and Lin, Zijia and Han, Jungong and Ding, Guiguang},
booktitle={Advances in Neural Information Processing Systems},
doi = {10.52202/079017-3429},
url = {https://proceedings.neurips.cc/paper_files/paper/2024/file/c34ddd05eb089991f06f3c5dc36836e0-Paper-Conference.pdf},
volume={37},
pages={107984--108011},
year={2024}
}Pour une mise en œuvre détaillée, des innovations architecturales et des résultats expérimentaux, consulte le document de recherche et le dépôt GitHub de YOLOv10 par l'équipe de l'Université de 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 l'Université de Tsinghua, 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 employant des attributions duales cohérentes pendant l'entraînement et des composants de modèle optimisés pour des performances supérieures avec une charge de calcul réduite. Pour plus de détails sur son architecture et ses fonctionnalités clés, consulte la section Aperçu de YOLOv10.
Comment puis-je commencer à effectuer 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 section Exemples d'utilisation.
Quelles variantes de modèles 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 : Plus grande précision 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 de calcul et des exigences de précision différents, ce qui les rend polyvalentes pour une variété d'applications. Explore la section Variantes de modèles 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 attributions duales 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 comprend également une tête un-à-un pour l'inférence, garantissant que chaque objet obtient une seule meilleure prédiction. Pour une explication détaillée, consulte la section Attributions duales cohérentes pour l'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 la section Exportation de 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 un AP similaire sur le jeu de données COCO. YOLOv10b présente une latence inférieure de 46 % et 25 % de paramètres en moins que YOLOv9-C à performance égale. Des benchmarks détaillés se trouvent dans la section Comparaisons.