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 comblant les lacunes des versions précédentes de YOLO en matière de post-traitement et d'architecture de modèle. 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 qu'il offre un meilleur compromis entre la précision et la latence sur plusieurs échelles de modèles.

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



Regarde : 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 résout 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.

L'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. Cou: Le cou 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 (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. Tête unique: génère une seule meilleure prédiction par objet pendant l'inférence pour éliminer le besoin de NMS, ce qui permet de réduire la latence et d'améliorer l'efficacité.

Caractéristiques principales

  1. Formation sans NMS: Utilise des affectations doubles cohérentes pour éliminer le besoin de NMS, réduisant ainsi le temps de 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. Capacités améliorées 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 nano pour les environnements à ressources extrêmement limitées.
  • YOLOv10-S: Petite version équilibrant vitesse et précision.
  • YOLOv10-M: version moyenne pour un usage général.
  • YOLOv10-B: version équilibrée avec une largeur accrue pour une plus grande précision.
  • YOLOv10-L: Grande version 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èleTaille de l'entréeAPvalFLOPs (G)Temps de latence (ms)
YOLOv10-N64038.56.71.84
YOLOv10-S64046.321.62.49
YOLOv10-M64051.159.14.74
YOLOv10-B64052.592.05.74
YOLOv10-L64053.2120.37.28
YOLOv10-X64054.4160.410.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 pendant 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'informations 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 étapes, garantissant ainsi une utilisation optimale des paramètres.

Amélioration de la précision

  1. Convolution à gros 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 nombreux tests sur des critères de référence standard tels que COCO, démontrant des performances et une efficacité supérieures. Le modèle atteint des résultats de pointe dans les différentes variantes, mettant en avant 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

Comparé à 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 est plus performant que 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èleParams
(M)
FLOPs
(G)
mAPval
50-95
Temps de latence
(ms)
Latence-avant
(ms)
YOLOv6-3.0-N4.711.437.02.691.76
Or-YOLO-N5.612.139.62.921.82
YOLOv8-N3.28.737.36.161.77
YOLOv10-N2.36.739.51.841.79
YOLOv6-3.0-S18.545.344.33.422.35
Or-YOLO-S21.546.045.43.822.73
YOLOv8-S11.228.644.97.072.33
YOLOv10-S7.221.646.82.492.39
RT-DETR-R1820.060.046.54.584.49
YOLOv6-3.0-M34.985.849.15.634.56
Or -YOLO-M41.387.549.86.385.45
YOLOv8-M25.978.950.69.505.09
YOLOv10-M15.459.151.34.744.63
YOLOv6-3.0-L59.6150.751.89.027.90
Or -YOLO-L75.1151.751.810.659.78
YOLOv8-L43.7165.252.912.398.06
RT-DETR-R5042.0136.053.19.209.07
YOLOv10-L24.4120.353.47.287.21
YOLOv8-X68.2257.853.916.8612.83
RT-DETR-R10176.0259.054.313.7113.58
YOLOv10-X29.5160.454.410.7010.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 former 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 propose une gamme de modèles, chacun optimisé pour la détection d’objets haute performance. Ces modèles répondent à des besoins de calcul et à des exigences de précision variés, ce qui les rend polyvalents pour un large éventail d’applications.

ModèleNoms de fichiersTâchesInférenceValidationFormationExporter
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 sont actuellement pris en charge. Le tableau suivant présente les formats qui ont été convertis avec succès à l’aide de Ultralytics pour YOLOv10. N’hésitez pas à ouvrir une pull request 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’exportationSoutien à l'exportationInférence du modèle exportéNotes
TorchScriptFormat standard PyTorch format du modèle.
ONNXLargement soutenu pour le déploiement.
OpenVINOOptimisé pour le matériel Intel .
TensorRTOptimisé pour les GPU NVIDIA .
CoreMLLimité aux appareils Apple.
TF SavedModelTensorFlowLe format du modèle standard de l'entreprise.
TF GraphDefFormat hérité de TensorFlow .
TF LiteOptimisé pour le mobile et l'embarqué.
TF Bord TPUSpécifique aux appareils Google's Edge TPU .
TF.jsEnvironnement JavaScript pour l'utilisation du navigateur.
PaddlePaddlePopulaire en Chine ; moins de soutien à l'échelle mondiale.
NCNNCouche 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é à offrir 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 aimerions 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, des innovations architecturales et des résultats expérimentaux, tu peux te 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 le besoin de suppression non maximale (NMS) en utilisant des affectations doubles cohérentes pendant la formation 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, consulte la section YOLOv10 overview.

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

Pour faciliter l'inférence, tu peux utiliser la bibliothèque Ultralytics YOLO Python ou l'interface de ligne de commande (CLI). Tu trouveras 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, 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 :

  • 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 plus grande largeur
  • 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 des besoins de calcul et des exigences de précision différents, ce qui les rend polyvalentes pour une variété d'applications. Explore la section Variantes du modèle pour plus d'informations.

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 employant 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 et unique 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 obtenir des détails sur les formats pris en charge et des instructions sur l'exportation, consulte 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 présente 46 % de latence en moins et 25 % de paramètres en moins que YOLOv9-C, à performances égales. Des benchmarks détaillés sont disponibles dans la section Comparaisons.

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

Commentaires