YOLOv10 : Détection d'objets en temps réel de bout en bout

YOLOv10, released in May 2024 and built on the Ultralytics Python package by researchers at Tsinghua University, introduces a new approach to real-time object detection, addressing both the post-processing and model architecture deficiencies found in previous YOLO versions. By eliminating non-maximum suppression (NMS) and optimizing various model components, YOLOv10 achieved excellent performance with significantly reduced computational overhead at its time of release. Its NMS-free end-to-end design pioneered an approach that has been further developed in YOLO26.

Double affectation 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 a été à l'avant-garde de cette recherche grâce à son équilibre entre performance et efficacité. Cependant, le recours au NMS et les inefficacités architecturales ont entravé les performances optimales. YOLOv10 résout ces problèmes en introduisant des affectations doubles cohérentes pour un entraînement sans NMS et une stratégie de conception de modèle axée sur l'efficacité et la précision globales.

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 :

  1. Backbone : Responsable de l'extraction de caractéristiques, le backbone dans 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 computationnelle.
  2. Neck : Le neck est conçu pour agréger les caractéristiques de différentes échelles et les transmettre à la head. Il inclut des couches PAN (Path Aggregation Network) pour une fusion efficace des caractéristiques multi-échelles.
  3. 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.
  4. 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

  1. Entraînement sans NMS : Utilise des affectations doubles cohérentes pour éliminer le besoin de NMS, réduisant la latence d'inférence.
  2. Conception globale du modèle : Optimisation complète de divers composants du point de vue de l'efficacité et de la précision, incluant des heads 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 de modèle améliorées : Incorpore des convolutions à grand noyau et des modules d'auto-attention partielle pour améliorer les performances sans coût computationnel significatif.

Variantes du modèle

YOLOv10 est disponible en différentes échelles de modèle pour répondre aux besoins de différentes 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 un usage général.
  • YOLOv10b : Version Balanced avec une largeur accrue pour une meilleure précision.
  • YOLOv10l : Version Large pour une plus grande précision au prix de ressources computationnelles accrues.
  • YOLOv10x : Version Extra-large pour une précision et des performances maximales.

Performance

YOLOv10 surpasse les versions YOLO précédentes 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 46 % de latence en moins et 25 % de paramètres en moins que YOLOv9-C avec les mêmes performances.

Performance

Latence mesurée avec TensorRT FP16 sur 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 doubles affectations d'étiquettes, combinant des stratégies one-to-many et one-to-one pendant l'entraînement pour garantir 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 globale axée sur l'efficacité et la précision

Améliorations de l'efficacité

  1. Head de classification légère : Réduit la surcharge computationnelle de la head 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'informations et le coût computationnel.
  3. Conception de blocs guidée par le rang : Adapte la conception des blocs en fonction de la redondance intrinsèque de l'étape, assurant une utilisation optimale des paramètres.

Améliorations de la précision

  1. Convolution à grand noyau : Agrandit le champ récepteur pour améliorer la capacité d'extraction de caractéristiques.
  2. Auto-attention partielle (PSA) : Incorpore des modules d'auto-attention pour améliorer l'apprentissage de la représentation globale avec un coût minimal.

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 atteint 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 aux autres détecteurs contemporains.

Comparaisons

Comparaison de YOLOv10 avec des détecteurs d'objets SOTA

Comparé à 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× moins de paramètres
Performance

Voici une comparaison détaillée des variantes de YOLOv10 avec d'autres modèles de pointe :

ModèleParamètres
(M)
FLOPs
(G)
mAPval
50-95
Latence
(ms)
Latence-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 Params et FLOPs concernent le modèle fusionné après model.fuse(), qui combine 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 également être entraînés sur des GPU cloud via la 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 une gamme de modèles, chacun optimisé pour une Object Detection haute performance. Ces modèles répondent à divers besoins computationnels et exigences de précision, les rendant polyvalents pour un large éventail d'applications.

ModèleNoms de fichiersTâchesInférenceValidationEntraînementExportation
YOLOv10yolov10n.pt yolov10s.pt yolov10m.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 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 fournir une contribution pour ajouter la prise en charge de l'exportation de formats supplémentaires pour YOLOv10.

Format d'exportationPrise en charge de l'exportationInférence du modèle exportéNotes
TorchScriptFormat de modèle standard PyTorch.
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é.
TF LiteOptimisé pour mobile et embarqué.
TF Edge TPUSpécifique aux appareils Edge TPU de Google.
TF.jsEnvironnement JavaScript pour une utilisation dans le navigateur.
PaddlePaddlePopulaire en Chine ; moins de support mondial.
NCNNLa 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 comblant 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, consulte YOLO26.

Citations et remerciements

Nous tenons à remercier les auteurs de YOLOv10 de l'Université Tsinghua pour leurs recherches approfondies et leurs contributions significatives au framework Ultralytics :

Citation
@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, des innovations architecturales et des résultats expérimentaux, veuillez consulter le document de recherche YOLOv10 et le référentiel GitHub 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 l'Université 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 assignations doubles 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 des inférences avec YOLOv10 ?

Pour une inférence facile, tu peux utiliser la bibliothèque Python Ultralytics YOLO ou l'interface de ligne de commande (CLI). Tu trouveras ci-dessous des exemples de prédiction 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 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 : Précision accrue grâce à une largeur augmentée
  • YOLOv10l : Haute précision au prix de ressources computationnelles plus élevées
  • YOLOv10x : Précision et performance maximales

Chaque variante est conçue pour différents besoins de calcul et exigences de précision, ce qui les rend polyvalentes pour une variété d'applications. Explore la section Model Variants pour plus d'informations.

Comment l'approche sans NMS dans YOLOv10 améliore-t-elle les performances ?

YOLOv10 élimine le besoin de NMS (non-maximum suppression) lors de l'inférence en utilisant 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 obtient une seule meilleure prédiction. Pour une explication détaillée, consulte la section Consistent Dual Assignments for NMS-Free Training.

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 Exporting 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,8 fois plus rapide que RT-DETR-R18 avec un AP similaire sur le dataset COCO. YOLOv10b affiche 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 sont disponibles dans la section Comparisons.

Commentaires