Skip to content

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

YOLOv10, construit sur le paquet Ultralytics Python 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 au post-traitement et aux lacunes de l'architecture du modèle 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 atteint des performances de pointe avec une surcharge de calcul considérablement réduite. Des expériences approfondies démontrent la supériorité du compromis entre précision et temps de latence à plusieurs échelles de modèle.

YOLOv10 : une double affectation cohérente pour une formation sans NMS



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

Vue d'ensemble

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 du NMS et les inefficacités architecturales ont empêché d'obtenir des performances optimales. YOLOv10 s'attaque à ces problèmes en introduisant des affectations doubles cohérentes pour une formation 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 précédents modèles YOLO tout en introduisant plusieurs innovations clés. L'architecture du modèle se compose des éléments suivants :

  1. L'épine dorsale: Responsable de l'extraction des caractéristiques, l'épine dorsale de 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 des calculs.
  2. Le 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 à plusieurs échelles.
  3. One-to-Many Head: génère plusieurs prédictions par objet pendant la formation afin de fournir des signaux de supervision riches et d'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é.

Caractéristiques principales

  1. Formation sans NMS: Utilise des affectations doubles cohérentes pour éliminer le besoin de NMS, réduisant ainsi la latence de l'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, l'échantillonnage descendant découplé des canaux spatiaux et la conception de blocs guidés par les rangs.
  3. Amélioration des capacités du modèle: Incorpore des convolutions à gros noyau et des modules d'auto-attention partielle pour améliorer les performances sans coût de calcul significatif.

Variantes du modèle

YOLOv10 se décline en plusieurs modèles pour répondre aux différents besoins d'application :

  • YOLOv10-N: version nanomĂ©trique pour les environnements Ă  ressources extrĂŞmement limitĂ©es.
  • YOLOv10-S: Petite version Ă©quilibrant vitesse et prĂ©cision.
  • YOLOv10-M: version moyenne Ă  usage gĂ©nĂ©ral.
  • YOLOv10-B: version Ă©quilibrĂ©e avec une largeur accrue pour une plus grande prĂ©cision.
  • YOLOv10-L : Version large pour une plus grande prĂ©cision au prix d'une augmentation des ressources informatiques.
  • YOLOv10-X: 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, YOLOv10-S est 1,8 fois plus rapide que RT-DETR-R18 avec un AP similaire sur l'ensemble de données COCO, et YOLOv10-B a 46 % de latence en moins et 25 % de paramètres en moins que YOLOv9-C avec la même performance.

Modèle Taille de l'entrée APval FLOPs (G) Temps de latence (ms)
YOLOv10-N 640 38.5 6.7 1.84
YOLOv10-S 640 46.3 21.6 2.49
YOLOv10-M 640 51.1 59.1 4.74
YOLOv10-B 640 52.5 92.0 5.74
YOLOv10-L 640 53.2 120.3 7.28
YOLOv10-X 640 54.4 160.4 10.70

Temps de latence mesuré avec TensorRT FP16 sur T4 GPU.

MĂ©thodologie

Affectations doubles cohérentes pour une formation sans NMS

YOLOv10 utilise une double attribution d'étiquettes, combinant les stratégies "one-to-many" et "one-to-one" pendant la formation 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 ainsi la qualité des prédictions lors de l'inférence.

Conception de modèles holistiques axés sur l'efficacité et la précision

Amélioration de l'efficacité

  1. 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.
  2. Échantillonnage en aval découplé entre l'espace et le canal: Découple la réduction spatiale et la modulation du canal pour minimiser la perte d'information et le coût de calcul.
  3. Conception de blocs guidée par les rangs: Adapte la conception des blocs en fonction de la redondance intrinsèque des étages, garantissant ainsi une utilisation optimale des paramètres.

Amélioration 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) : incorpore des modules d'auto-attention pour améliorer l'apprentissage de la représentation globale avec un minimum de surcharge.

Expériences et résultats

YOLOv10 a fait l'objet de tests approfondis sur des bancs d'essai standard tels que COCO, démontrant des performances et une efficacité supérieures. Le modèle obtient des résultats de pointe dans ses différentes variantes, et présente 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

Par rapport à d'autres détecteurs de pointe :

  • YOLOv10-S / X est 1,8Ă— / 1,3Ă— plus rapide que RT-DETR-R18 / R101 avec une prĂ©cision similaire.
  • YOLOv10-B a 25 % de paramètres en moins et 46 % de latence en moins que YOLOv9-C, Ă  prĂ©cision Ă©gale.
  • YOLOv10-L / X surpasse YOLOv8-L / X de 0,3 AP / 0,5 AP avec 1,8Ă— / 2,3Ă— moins de paramètres.

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

Modèle Params
(M)
FLOPs
(G)
mAPval
50-95
Temps de latence
(ms)
Temps de latence pour l'envoi de
(ms)
YOLOv6-3.0-N 4.7 11.4 37.0 2.69 1.76
Or -YOLO-N 5.6 12.1 39.6 2.92 1.82
YOLOv8-N 3.2 8.7 37.3 6.16 1.77
YOLOv10-N 2.3 6.7 39.5 1.84 1.79
YOLOv6-3.0-S 18.5 45.3 44.3 3.42 2.35
Or -YOLO-S 21.5 46.0 45.4 3.82 2.73
YOLOv8-S 11.2 28.6 44.9 7.07 2.33
YOLOv10-S 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
Or -YOLO-M 41.3 87.5 49.8 6.38 5.45
YOLOv8-M 25.9 78.9 50.6 9.50 5.09
YOLOv10-M 15.4 59.1 51.3 4.74 4.63
YOLOv6-3.0-L 59.6 150.7 51.8 9.02 7.90
Or -YOLO-L 75.1 151.7 51.8 10.65 9.78
YOLOv8-L 43.7 165.2 52.9 12.39 8.06
RT-DETR-R50 42.0 136.0 53.1 9.20 9.07
YOLOv10-L 24.4 120.3 53.4 7.28 7.21
YOLOv8-X 68.2 257.8 53.9 16.86 12.83
RT-DETR-R101 76.0 259.0 54.3 13.71 13.58
YOLOv10-X 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 l'entraînement de YOLOv10 sur un ensemble 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 optimisé pour la détection d'objets de haute performance. Ces modèles répondent à des besoins de calcul et à des exigences de précision variables, ce qui les rend polyvalents pour un large éventail d'applications.

Modèle Noms de fichiers Tâches Inférence Validation Formation Exportation
YOLOv10 yolov10n.pt yolov10s.pt yolov10m.pt yolov10l.pt yolov10x.pt DĂ©tection d'objets âś… âś… âś… âś…

Exporter YOLOv10

En raison des nouvelles opérations introduites dans 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 en utilisant Ultralytics pour YOLOv10. N'hésitez pas à ouvrir une demande de téléchargement si vous êtes en mesure de fournir un changement de contribution pour ajouter la prise en charge de l'exportation de formats supplémentaires pour YOLOv10.

Format d'exportation Soutien à l'exportation Inférence du modèle exporté Notes
TorchScript ✅ ✅ Format standard PyTorch format du modèle.
ONNX ✅ ✅ Largement soutenu pour le déploiement.
OpenVINO ✅ ✅ Optimisé pour le matériel Intel .
TensorRT ✅ ✅ Optimisé pour les GPU NVIDIA .
CoreML ✅ ✅ Limité aux appareils Apple.
TF SavedModel ✅ ✅ TensorFlowLe format du modèle standard de la Commission européenne.
TF GraphDef ✅ ✅ Format hérité de TensorFlow .
TF Lite ✅ ✅ Optimisé pour les téléphones portables et les applications embarquées.
TF Bord TPU ✅ ✅ Spécifique aux appareils Google's Edge TPU .
TF.js âś… âś… Environnement JavaScript pour l'utilisation du navigateur.
PaddlePaddle ❌ ❌ Populaire en Chine ; moins de soutien au niveau mondial.
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 comblant les lacunes des versions précédentes de YOLO et en intégrant des stratégies de conception novatrices. Sa capacité à fournir une grande précision avec un faible coût de calcul en fait un choix idéal pour un large éventail d'applications dans le monde réel.

Citations et remerciements

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

@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 mise en œuvre détaillée, les innovations architecturales et les résultats expérimentaux, veuillez vous référer au document de recherche YOLOv10 et au dépôt GitHub de 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 la nécessité d'une suppression non maximale (NMS) en utilisant 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 " YOLOv10 overview".

Comment puis-je commencer à faire de l'inférence avec YOLOv10 ?

Pour faciliter l'inférence, 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 YOLOv10-N 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 sont les variantes du modèle YOLOv10 et quels sont leurs cas d'utilisation ?

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

  • YOLOv10-N: adaptĂ© aux environnements oĂą les ressources sont extrĂŞmement limitĂ©es
  • YOLOv10-S: Ă©quilibre entre vitesse et prĂ©cision
  • YOLOv10-M: Utilisation gĂ©nĂ©rale
  • YOLOv10-B: une plus grande prĂ©cision avec une largeur accrue
  • YOLOv10-L: Une grande prĂ©cision au dĂ©triment des ressources informatiques
  • YOLOv10-X: PrĂ©cision et performance maximales

Chaque variante est conçue pour répondre à des besoins de calcul et à des exigences de précision différents, ce qui les rend polyvalentes pour un grand nombre d'applications. Pour plus d'informations, consultez la section Variantes du modèle.

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

YOLOv10 élimine la nécessité d'une suppression non maximale (NMS) pendant l'inférence en utilisant des affectations doubles cohérentes pour la formation. Cette approche réduit la latence de l'inférence et améliore l'efficacité de la prédiction. L'architecture comprend également une tête biunivoque pour l'inférence, garantissant que chaque objet obtient une seule meilleure prédiction. Pour une explication détaillée, voir la section Affectations doubles cohérentes pour une formation 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 par YOLOv10 en raison de ses nouvelles opérations. Pour plus de détails sur les formats pris en charge et les instructions relatives à l'exportation, consultez la section Exportation de YOLOv10.

Quels sont les critères de performance des 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, YOLOv10-S est 1,8 fois plus rapide que RT-DETR-R18 avec un AP similaire sur l'ensemble de données COCO. YOLOv10-B montre 46% de latence en moins et 25% de paramètres en moins que YOLOv9-C avec la même performance. Des benchmarks détaillés sont disponibles dans la section Comparaisons.

📅C réé il y a 6 mois ✏️ Mis à jour il y a 2 mois

Commentaires