Ultralytics YOLO27 :
Get Started

YOLOv10 : détection d’objets de bout en bout en temps réel#

YOLOv10, lancé en mai 2024 et développé par des chercheurs de l’université Tsinghua à partir du package Python Ultralytics, propose une nouvelle approche de la détection d’objets en temps réel qui corrige les lacunes du post-traitement et de l’architecture des modèles des 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 nettement réduite au moment de sa sortie. Sa conception de bout en bout sans NMS a inauguré une approche approfondie depuis dans YOLO26.

Affectation double cohérente de YOLOv10 pour l’entraînement sans NMS



Regarder : Comment entraîner YOLOv10 sur le jeu de données SKU-110k avec Ultralytics | Jeu de données de vente au détail

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 est à l’avant-garde de ces travaux grâce à son équilibre entre performances et efficacité. Cependant, la dépendance à la NMS et les inefficacités architecturales ont empêché d’atteindre des performances optimales. YOLOv10 répond à ces problèmes en introduisant des affectations doubles cohérentes pour l’entraînement sans NMS et une stratégie globale de conception de modèles axée sur l’efficacité et la précision.

Architecture#

L’architecture de YOLOv10 s’appuie sur les atouts des modèles YOLO précédents tout en introduisant plusieurs innovations clés. Elle se compose des éléments suivants :

  1. Backbone : Chargé de l’extraction des caractéristiques, le backbone de YOLOv10 utilise une version améliorée de CSPNet (réseau partiel à travers les étapes) afin d’améliorer la propagation des gradients et de réduire la redondance des calculs.
  2. 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 (réseau d’agrégation de chemins) pour une fusion efficace des caractéristiques à plusieurs échelles.
  3. Tête un-à-plusieurs : Génère plusieurs prédictions par objet pendant l’entraînement afin de fournir des signaux de supervision riches et d’améliorer la précision de l’apprentissage.
  4. Tête One-to-One : génère une seule prédiction optimale par objet pendant l’inférence, ce qui élimine le besoin de NMS, réduit la latence et améliore l’efficacité.

Fonctionnalités clés#

  1. Entraînement sans NMS : utilise des assignations doubles cohérentes pour éliminer le besoin de NMS et réduire la latence d’inférence.
  2. Conception globale du modèle : optimisation complète de divers composants sous l’angle de l’efficacité et de la précision, notamment des têtes de classification légères, un sous-échantillonnage découplant l’espace et les canaux, et une conception des blocs guidée par le rang.
  3. Capacités améliorées du modèle : intègre des convolutions à grands noyaux et des modules d’auto-attention partielle pour améliorer les performances sans coût de calcul important.

Variantes du modèle#

YOLOv10 existe en plusieurs tailles de modèle pour répondre aux besoins de différentes applications :

  • YOLOv10n : version nano pour les environnements soumis à de très fortes contraintes de ressources.
  • YOLOv10s : petite version qui équilibre vitesse et précision.
  • YOLOv10m : version moyenne pour un usage général.
  • YOLOv10b : version équilibrée, plus large pour une meilleure précision.
  • YOLOv10l : grande version offrant une meilleure précision au prix de ressources de calcul plus importantes.
  • YOLOv10x : très grande version pour une précision et des performances maximales.

Performances#

YOLOv10 surpasse les versions précédentes de YOLO et d’autres modèles de pointe en matière de précision et d’efficacité. Par exemple, YOLOv10s est 1,8 fois plus rapide que RT-DETR-R18 avec un AP similaire sur le jeu de données COCO, et YOLOv10b présente une latence réduite de 46 % et 25 % de paramètres en moins que YOLOv9-C à performances égales.

Performances

Latence mesurée avec TensorRT FP16 sur un GPU T4.

ModèleTaille d’entréeAPvalFLOPs (G)Latence (ms)
[YOLOv10n][1]64038.56.71.84
[YOLOv10s][2]64046.321.62.49
[YOLOv10m][3]64051.159.14.74
[YOLOv10b][4]64052.592.05.74
[YOLOv10l][5]64053.2120.37.28
[YOLOv10x][6]64054.4160.410.70

Méthodologie#

Assignations doubles cohérentes pour un entraînement sans NMS#

YOLOv10 utilise des assignations doubles des étiquettes, combinant des stratégies une-vers-plusieurs et une-vers-une pendant l’entraînement pour garantir une supervision riche et un déploiement de bout en bout efficace. Par défaut, la prédiction et la validation d’Ultralytics utilisent la tête une-vers-plusieurs avec NMS ; définis nms=False pour sélectionner la tête sans NMS. La métrique d’appariement cohérente aligne la supervision entre les deux stratégies, améliorant la qualité des prédictions pendant l’inférence.

Conception du modèle axée sur l’efficacité et la précision dans leur ensemble#

Améliorations de l’efficacité#

  1. Tête de classification légère : réduit la charge de calcul de la tête de classification grâce à des convolutions séparables en profondeur.
  2. Sous-échantillonnage découplant l’espace et les canaux : dissocie la réduction spatiale de la modulation des canaux afin de minimiser la perte d’informations et le coût de calcul.
  3. Conception des blocs guidée par le rang : adapte la conception des blocs en fonction de la redondance intrinsèque de chaque étape, pour optimiser l’utilisation des paramètres.

Améliorations de la précision#

  1. Convolution à grand noyau : élargit le champ réceptif pour améliorer la capacité d’extraction des caractéristiques.
  2. Auto-attention partielle (PSA) : intègre des modules d’auto-attention pour améliorer l’apprentissage des représentations globales avec une surcharge minimale.

Expériences et résultats#

YOLOv10 a été largement testé sur des benchmarks standard comme COCO, où il démontre des performances et une efficacité supérieures. Le modèle atteint des résultats de pointe pour différentes variantes, avec des améliorations notables de la latence et de la précision par rapport aux versions précédentes et aux autres détecteurs récents.

Comparaisons#

Comparaison de YOLOv10 avec des détecteurs d’objets à la pointe de la technologie

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 utilise 25 % de paramètres en moins et présente une latence inférieure de 46 % à celle de YOLOv9-C, à précision égale
  • YOLOv10l / x surpassent YOLOv8l / x de 0,3 AP / 0,5 AP avec 1,8× / 2,3× moins de paramètres
Performances

Les chiffres ci-dessous sont ceux rapportés dans l’article YOLOv10, mesurés selon son propre protocole ; ils ne sont donc pas directement comparables aux valeurs figurant sur les pages des modèles Ultralytics :

ModèleParamètres
(M)
FLOPs
(G)
mAPval
50-95
Latence
(ms)
Latence de propagation avant
(ms)
YOLOv6-3.0-N4.711.437.02.691.76
Gold-YOLO-N5.612.139.62.921.82
YOLOv8n3.28.737.36.161.77
YOLOv10n2.36.738.51.841.79
YOLOv6-3.0-S18.545.344.33.422.35
Gold-YOLO-S21.546.045.43.822.73
YOLOv8s11.228.644.97.072.33
YOLOv10s7.221.646.32.492.39
RT-DETR-R1820.060.046.54.584.49
YOLOv6-3.0-M34.985.849.15.634.56
Gold-YOLO-M41.387.549.86.385.45
YOLOv8m25.978.950.69.505.09
YOLOv10m15.459.151.14.744.63
YOLOv6-3.0-L59.6150.751.89.027.90
Gold-YOLO-L75.1151.751.810.659.78
YOLOv8l43.7165.252.912.398.06
RT-DETR-R5042.0136.053.19.209.07
YOLOv10l24.4120.353.27.287.21
YOLOv8x68.2257.853.916.8612.83
RT-DETR-R10176.0259.054.313.7113.58
YOLOv10x29.5160.454.410.7010.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 une-vers-plusieurs. Les points de contrôle préentraînés conservent l’architecture complète d’entraînement et peuvent afficher des valeurs plus élevées.

Exemples d'utilisation#

Tu peux aussi entraîner des modèles sur des GPU cloud via Ultralytics Platform. Pour effectuer des prédictions sur de nouvelles images avec YOLOv10 :

Exemple
from ultralytics import YOLO

# Charger un modèle YOLOv10n préentraîné
model = YOLO("yolov10n.pt")

# Effectuer la détection d’objets sur une image
results = model("image.jpg")

# Afficher les résultats
results[0].show()

Pour entraîner YOLOv10 sur un jeu de données personnalisé :

Exemple
from ultralytics import YOLO

# Charger le modèle YOLOv10n à partir de zéro
model = YOLO("yolov10n.yaml")

# Entraîner le modèle
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 la détection d’objets haute performance. Ces modèles répondent à différents besoins en calcul et exigences de précision, ce qui les rend polyvalents pour un large éventail d’applications.

ModèleNoms de fichiersTâchesEntraînementValidationInférenceExport
YOLOv10yolov10n.pt yolov10s.pt yolov10m.pt yolov10b.pt yolov10l.pt yolov10x.ptDétection d'objets✅✅✅✅

Exporter YOLOv10#

En raison des nouvelles opérations introduites avec YOLOv10, tous les formats d’export proposés par Ultralytics ne sont pas encore pris en charge. Le tableau suivant indique les formats qui ont été convertis avec succès avec Ultralytics pour YOLOv10. N’hésite pas à ouvrir une pull request si tu peux apporter une modification pour ajouter la prise en charge d’autres formats d’export pour YOLOv10.

Format d’exportPrise en charge de l’exportInférence du modèle exportéRemarques
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✅✅Format TensorFlow historique.
TF Edge TPU✅✅Spécifique aux appareils Edge TPU de Google.
LiteRT✅✅Optimisé pour les appareils mobiles, les systèmes embarqués et les navigateurs (LiteRT.js).
PaddlePaddle❌❌Populaire en Chine ; moins pris en charge dans le reste du monde.
NCNN✅❌L’opérateur torch.topk n’est pas pris en charge par l’environnement d’exécution NCNN.

Conclusion#

À sa sortie, YOLOv10 a établi une nouvelle norme en matière de détection d’objets en temps réel 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 ouvert la voie à la détection d’objets de bout en bout dans la famille YOLO. Pour découvrir le dernier modèle Ultralytics, offrant de meilleures performances et une inférence sans NMS, consulte YOLO26.

Citations et remerciements#

Nous tenons à remercier les auteurs de YOLOv10 de l’université Tsinghua pour leurs recherches approfondies et leurs contributions majeures au framework Ultralytics :

Citation
@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 en savoir plus sur l’implémentation, les innovations architecturales et les résultats expérimentaux, consulte l’article de recherche YOLOv10 et le dépôt GitHub de l’équipe de l’université Tsinghua.

FAQ#

  • YOLOv10, développé par des chercheurs de l’université Tsinghua, introduit plusieurs innovations majeures pour la détection d’objets en temps réel. Il élimine le besoin de suppression non maximale (NMS) en utilisant des assignations doubles cohérentes pendant l’entraînement ainsi que des composants de modèle optimisés, pour offrir des performances supérieures avec une charge de calcul réduite. Pour en savoir plus sur son architecture et ses principales caractéristiques, consulte la section présentation de YOLOv10.

  • Pour simplifier l’inférence, tu peux utiliser la bibliothèque Python Ultralytics YOLO ou l’interface en ligne de commande (CLI). Voici des exemples de prédiction sur de nouvelles images avec YOLOv10 :

    Exemple
    from ultralytics import YOLO
    
    # Charger le modèle YOLOv10n préentraîné
    model = YOLO("yolov10n.pt")
    results = model("image.jpg")
    results[0].show()

    Pour découvrir d’autres exemples d’utilisation, consulte la section Exemples d’utilisation.

  • YOLOv10 propose plusieurs variantes de modèles pour répondre à différents cas d’utilisation :

    • YOLOv10n : convient aux environnements disposant de ressources extrêmement limitées
    • YOLOv10s : offre un équilibre entre vitesse et précision
    • YOLOv10m : utilisation générale
    • YOLOv10b : précision accrue grâce à une plus grande largeur
    • YOLOv10l : grande précision au prix de ressources de calcul plus importantes
    • YOLOv10x : précision et performances maximales

    Chaque variante est conçue pour répondre à différents besoins en calcul et exigences de précision, ce qui les rend polyvalentes pour de nombreuses applications. Consulte la section Variantes de modèles pour en savoir plus.

  • YOLOv10 est entraîné avec des assignations doubles cohérentes afin que sa tête à assignation unique produise une seule meilleure prédiction par objet, ce qui élimine le besoin de suppression des maxima non locaux (NMS) lors de l’inférence. Par défaut, la prédiction et la validation Ultralytics utilisent la tête à assignations multiples avec NMS ; définis nms=False pour sélectionner la tête sans NMS et supprimer l’étape NMS. Pour une explication détaillée, consulte la section Assignations doubles cohérentes pour l’entraînement sans NMS.

  • YOLOv10 prend en charge plusieurs formats d’exportation, notamment TorchScript, ONNX, OpenVINO et TensorRT. Cependant, certains formats d’exportation proposés par Ultralytics ne sont pas encore pris en charge pour YOLOv10 en raison de ses nouvelles opérations. Pour en savoir plus sur les formats pris en charge et obtenir les instructions d’exportation, consulte la section Exporter YOLOv10.

  • YOLOv10 surpasse les versions précédentes de YOLO et d’autres modèles de pointe en matière de précision et d’efficacité. Par exemple, YOLOv10s est 1,8 fois plus rapide que RT-DETR-R18 avec un AP similaire sur le jeu de données COCO. YOLOv10b affiche une latence réduite de 46 % et 25 % de paramètres en moins que YOLOv9-C, pour des performances identiques. Tu trouveras les résultats détaillés dans la section Comparaisons.

Commentaires