Ultralytics YOLO27 :

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

YOLOv10, publié en mai 2024 et développé à partir du package Python Ultralytics par des chercheurs de l’université Tsinghua, introduit une nouvelle approche de la détection d’objets en temps réel, en corrigeant les lacunes du post-traitement et de l’architecture des modèles présentes 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 lors de sa sortie. Sa conception de bout en bout sans NMS a ouvert la voie à une approche approfondie depuis dans YOLO26.

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



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 est à l’avant-garde de cette recherche grâce à son équilibre entre performances et efficacité. Toutefois, 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 un entraînement sans NMS, ainsi qu’une stratégie de conception globale des modèles guidée par 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 :

  1. Backbone : chargé de l’extraction des caractéristiques, le backbone de YOLOv10 utilise une version améliorée de CSPNet (réseau partiel inter-étages) afin d’améliorer la circulation des gradients et de réduire la redondance des calculs.
  2. Neck : le neck est conçu pour agréger les caractéristiques provenant de différentes échelles et les transmettre à la tête. Il comprend des couches PAN (réseau d’agrégation des chemins) pour une fusion efficace des caractéristiques multiscalaires.
  3. Tête One-to-Many : 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 meilleure prédiction par objet lors de l’inférence afin d’éliminer la nécessité de la NMS, réduisant ainsi la latence et améliorant l’efficacité.

Fonctionnalités clés#

  1. Entraînement sans NMS : utilise des affectations doubles cohérentes pour éliminer la nécessité de la NMS et réduire la latence d’inférence.
  2. 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 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’attention personnelle partielle afin d’améliorer les performances sans coût de calcul important.

Variantes du modèle#

YOLOv10 est disponible dans différentes tailles de modèles pour répondre à divers besoins applicatifs :

  • YOLOv10n : version Nano pour les environnements aux ressources extrêmement limitées.
  • YOLOv10s : petite version offrant un équilibre entre vitesse et précision.
  • YOLOv10m : version moyenne destinée à un usage général.
  • YOLOv10b : version équilibrée avec une largeur accrue pour une meilleure précision.
  • YOLOv10l : grande version offrant une meilleure précision au prix de ressources de calcul accrues.
  • 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 identiques.

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#

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

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

Conception du modèle guidée par l’efficacité et la précision globales#

Améliorations de l’efficacité#

  1. 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.
  2. Sous-échantillonnage découplé spatial-canal : Découple la réduction spatiale et la modulation des canaux pour minimiser la perte d'information 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 des étapes afin de garantir une utilisation optimale des paramètres.

Améliorations de la précision#

  1. Convolution à grand noyau : agrandit le champ réceptif afin d’améliorer les capacités d’extraction des caractéristiques.
  2. Attention personnelle partielle (PSA) : intègre des modules d’attention personnelle afin d’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, démontrant des performances et une efficacité supérieures. Le modèle obtient des résultats de pointe avec différentes variantes, affichant 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#

Comparaison de YOLOv10 avec des détecteurs d’objets de pointe

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 possède 25 % de paramètres en moins et une latence inférieure de 46 % à celle de YOLOv9-C, à précision identique
  • 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 présentées sur les pages des modèles Ultralytics :

ModèleParamètres
(M)
FLOPs
(G)
mAPval
50-95
Latence
(ms)
Latence en mode forward
(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.739.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.82.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.34.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.47.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 One-to-Many. 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#

Pour prédire de nouvelles images avec YOLOv10. Les modèles peuvent également être entraînés sur des GPU cloud via Ultralytics Platform :

Exemple
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é :

Exemple
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 différents 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érenceExportation
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’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 peux proposer une modification contributive pour ajouter la prise en charge de formats d’exportation supplémentaires pour YOLOv10.

Format d’exportationPrise en charge de l’exportationInférence du modèle exportéRemarques
TorchScriptFormat de modèle PyTorch standard.
ONNXLargement pris en charge pour le déploiement.
OpenVINOOptimisé pour le matériel Intel.
TensorRTOptimisé pour les GPU NVIDIA.
CoreMLLimité aux appareils Apple.
TF SavedModelFormat de modèle standard de TensorFlow.
TF GraphDefFormat TensorFlow hérité.
LiteRTOptimisé pour les appareils mobiles, les systèmes embarqués et les navigateurs (LiteRT.js).
TF Edge TPUSpécifique aux appareils Edge TPU de Google.
PaddlePaddlePopulaire en Chine, mais moins pris en charge à l’échelle mondiale.
NCNNL'opérateur torch.topk n'est pas pris en charge par le runtime NCNN.

Conclusion#

À sa sortie, YOLOv10 a établi une nouvelle référence 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 souhaitons 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 découvrir en détail l’implémentation, les innovations architecturales et les résultats expérimentaux, consulte l’article de recherche sur 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 clés 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 et des composants de modèle optimisés, afin d’obtenir de meilleures performances avec une surcharge de calcul réduite. Pour plus de détails sur son architecture et ses principales fonctionnalités, consulte la section Présentation de YOLOv10.

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

    Exemple
    from ultralytics import YOLO
    
    # Load the pretrained YOLOv10n model
    model = YOLO("yolov10n.pt")
    results = model("image.jpg")
    results[0].show()

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

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

    • YOLOv10n : Adapté aux environnements soumis à de très fortes contraintes de ressources
    • YOLOv10s : Équilibre la vitesse et la précision
    • YOLOv10m : Utilisation générale
    • YOLOv10b : Précision accrue grâce à une largeur supérieure
    • YOLOv10l : Haute 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 de calcul et exigences de précision, ce qui les rend polyvalentes pour de nombreuses applications. Consulte la section Variantes de modèles pour plus d’informations.

  • YOLOv10 s'entraîne avec des attributions duales cohérentes pour que sa tête un-à-un produise une seule meilleure prédiction par objet, ce qui élimine le besoin de suppression non maximale (NMS) lors de l'inférence. La prédiction et la validation d'Ultralytics utilisent par défaut la tête un-à-plusieurs avec NMS ; définis nms=False pour sélectionner la tête sans NMS et abandonner la passe NMS. Pour une explication détaillée, consulte la section Consistent Dual Assignments for NMS-Free Training.

  • 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 encore pris en charge par YOLOv10 en raison de ses nouvelles opérations. Pour plus de détails sur les formats pris en charge et les instructions d’exportation, consulte la section Exporter YOLOv10.

  • YOLOv10 surpasse les versions précédentes de YOLO ainsi que les 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 l’ensemble de données COCO. YOLOv10b affiche une latence inférieure de 46 % et 25 % de paramètres en moins que YOLOv9-C, avec les mêmes performances. Tu trouveras des benchmarks détaillés dans la section Comparaisons.

Commentaires