Passer au contenu

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

YOLOv10, construit 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, en s'attaquant à la fois aux lacunes du post-traitement et de l'architecture du modèle que l'on trouve dans les versions précédentes de YOLO. En éliminant la suppression non maximale (NMS) et en optimisant divers composants du modèle, YOLOv10 atteint des performances de pointe avec une surcharge de calcul considérablement réduite. Des expériences approfondies démontrent ses compromis précision-latence supérieurs à travers de multiples échelles de modèle.

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



Regarder : Comment entraîner YOLOv10 sur l’ensemble de données SKU-110k à l’aide d’Ultralytics | Ensemble de données de vente au détail

Aperçu

La détection d’objets en temps réel vise à prédire avec précision les catégories d’objets et leurs positions 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 NMS et les inefficacités architecturales ont entravé les performances optimales. YOLOv10 aborde ces problèmes en introduisant des affectations doubles cohérentes pour la formation sans NMS et une stratégie holistique de conception de modèle 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 composants 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 de calcul.
  2. Cou : Le cou 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.
  3. Tête Un-vers-Plusieurs : 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. Tête Un-vers-Un : 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é.

Principales caractéristiques

  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 Holistique du Modèle : Optimisation complète de divers composants du point de vue de l'efficacité et de la précision, y compris les têtes de classification légères, le sous-échantillonnage spatial-canal découplé et la conception de blocs guidée par le rang.
  3. 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èles

YOLOv10 est disponible en différentes échelles de modèle pour répondre aux différents besoins des applications :

  • YOLOv10n : Version nano pour les environnements extrêmement limités en ressources.
  • YOLOv10s : Petite version équilibrant la vitesse et la précision.
  • YOLOv10m : Version moyenne pour une utilisation polyvalente.
  • 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,8 fois plus rapide que RT-DETR-R18 avec un AP similaire sur l'ensemble de données COCO, et YOLOv10b a une latence inférieure de 46 % et 25 % moins de paramètres que YOLOv9-C avec les mêmes performances.

Performance

Latence mesurée avec TensorRT FP16 sur GPU T4.

Modèle Taille d'entrée APval FLOPs (G) Latence (ms)
YOLOv10n 640 38.5 6.7 1.84
YOLOv10s 640 46.3 21.6 2.49
YOLOv10m 640 51.1 59.1 4.74
YOLOv10b 640 52.5 92.0 5.74
YOLOv10l 640 53.2 120.3 7.28
YOLOv10x 640 54.4 160.4 10.70

Méthodologie

Attributions Doubles Cohérentes pour l'Entraînement sans NMS

YOLOv10 utilise des affectations d'étiquettes doubles, combinant des stratégies un-à-plusieurs et un-à-un pendant l'entraînement pour assurer une supervision riche et un déploiement de bout en bout efficace. 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 axée sur l'efficacité holistique et la précision

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 spatial-canal découplé : Découple la réduction spatiale et la modulation de canal pour minimiser la perte d'informations et le coût de calcul.
  3. Conception de bloc guidée par le rang : Adapte la conception du bloc en fonction de la redondance intrinsèque de l'étape, garantissant une utilisation optimale des paramètres.

Améliorations de la Précision

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

Expériences et Résultats

YOLOv10 a été testé de manière approfondie sur des benchmarks standards tels que COCO, démontrant des performances et une efficacité supérieures. Le modèle atteint des résultats de pointe dans 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

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

Comparaison avec 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 % moins de paramètres et une latence inférieure de 46 % à celle de YOLOv9-C avec la même précision
  • YOLOv10l / x surpasse 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è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

Exemples d'utilisation

Pour prédire de nouvelles images avec YOLOv10 :

Exemple

from ultralytics import YOLO

# Load a pre-trained YOLOv10n model
model = YOLO("yolov10n.pt")

# Perform object detection on an image
results = model("image.jpg")

# Display the results
results[0].show()
# Load a COCO-pretrained YOLOv10n model and run inference on the 'bus.jpg' image
yolo detect predict model=yolov10n.pt source=path/to/bus.jpg

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)
# Build a YOLOv10n model from scratch and train it on the COCO8 example dataset for 100 epochs
yolo train model=yolov10n.yaml data=coco8.yaml epochs=100 imgsz=640

# Build a YOLOv10n model from scratch and run inference on the 'bus.jpg' image
yolo predict model=yolov10n.yaml source=path/to/bus.jpg

Tâches et modes pris en charge

La série de modèles YOLOv10 offre une gamme de modèles, chacun étant optimisé pour une détection d'objets haute performance. Ces modèles répondent à divers besoins informatiques et exigences de précision, ce qui les rend polyvalents pour un large éventail d'applications.

Modèle Noms de fichiers Tâches Inférence Validation Entraînement Exporter
YOLOv10 yolov10n.pt yolov10s.pt yolov10m.pt yolov10l.pt yolov10x.pt Détection d'objets

Exportation de YOLOv10

En raison des nouvelles opérations introduites avec YOLOv10, tous les formats d'exportation fournis par Ultralytics ne sont pas pris en charge actuellement. Le tableau suivant indique les formats qui ont été convertis avec succès à l'aide d'Ultralytics pour YOLOv10. N'hésitez pas à ouvrir une demande de pull si vous êtes en mesure de fournir une modification 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é 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 hérité.
TF Lite Optimisé pour les appareils mobiles et embarqués.
TF Edge TPU Spécifique aux appareils Edge TPU de Google.
TF.js Environnement JavaScript pour une utilisation dans un navigateur.
PaddlePaddle Populaire en Chine ; moins de support global.
NCNN Couche torch.topk n'existe pas ou n'est pas enregistré

Conclusion

YOLOv10 établit 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. Sa capacité à fournir une haute précision avec un faible coût de calcul en fait un choix idéal pour un large éventail d'applications réelles , y compris la fabrication, le commerce de détail et les véhicules autonomes.

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 :

@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 l'article de recherche et le dépôt GitHub de l'équipe de l'université de Tsinghua sur YOLOv10.

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 affectations doubles cohérentes pendant l'entraînement et des composants de modèle optimisés pour des performances supérieures avec une surcharge de calcul réduite. Pour plus de détails sur son architecture et ses principales caractéristiques, consultez la section Présentation de YOLOv10.

Comment puis-je commencer à exécuter l'inférence en utilisant YOLOv10 ?

Pour une inférence facile, vous pouvez utiliser la bibliothèque Ultralytics YOLO Python ou l'interface de ligne de commande (CLI). Vous trouverez ci-dessous des exemples de prédiction de nouvelles images à l'aide de YOLOv10 :

Exemple

from ultralytics import YOLO

# Load the pre-trained YOLOv10n model
model = YOLO("yolov10n.pt")
results = model("image.jpg")
results[0].show()
yolo detect predict model=yolov10n.pt source=path/to/image.jpg

Pour plus d'exemples d'utilisation, consultez notre section Exemples d'utilisation.

Quelles variantes de modèles YOLOv10 offre-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 : Convient aux environnements extrêmement limités en ressources
  • YOLOv10s : Équilibre la vitesse et la précision
  • YOLOv10m : Utilisation polyvalente
  • YOLOv10b : Précision supérieure grâce à une largeur accrue
  • YOLOv10l : Haute précision au prix de ressources de calcul
  • YOLOv10x : Précision et performances 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. Explorez la section Variantes de 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 affectations doubles cohérentes pour l'entraînement. Cette approche réduit la latence d'inférence et améliore l'efficacité de la prédiction. L'architecture comprend également une tête un-à-un pour l'inférence, garantissant que chaque objet reçoit une seule meilleure prédiction. Pour une explication détaillée, consultez la section Affectations doubles 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, consultez la section Exportation de YOLOv10.

Quels sont les bancs d'essai 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 l'ensemble de données COCO. YOLOv10b présente une latence inférieure de 46 % et 25 % moins de paramètres que YOLOv9-C avec les mêmes performances. Des benchmarks détaillés sont disponibles dans la section Comparaisons.



📅 Créé il y a 1 an ✏️ Mis à jour il y a 5 mois

Commentaires