Meituan YOLOv6#
Présentation#
Meituan YOLOv6, lancé en 2022, offre un excellent équilibre entre vitesse et précision, ce qui en fait un choix populaire pour les applications en temps réel. Ce modèle apporte plusieurs améliorations notables à son architecture et à son schéma d'entraînement, notamment la mise en œuvre d'un module de concaténation bidirectionnelle (BiC), d'une stratégie d'entraînement assisté par ancres (AAT), ainsi qu'une conception améliorée du backbone et du neck pour obtenir une grande précision sur le jeu de données COCO.
Présentation de YOLOv6. Schéma de l'architecture du modèle illustrant les composants du réseau repensés et les stratégies d'entraînement qui ont permis d'obtenir des améliorations significatives des performances. (a) Le neck de YOLOv6 (N et S sont représentés). Remarque : pour M/L, RepBlocks est remplacé par CSPStackRep. (b) La structure d'un module BiC. (c) Un bloc SimCSPSPPF. (source).
Fonctionnalités clés#
- Module de concaténation bidirectionnelle (BiC) : YOLOv6 introduit un module BiC dans le neck du détecteur, qui renforce les signaux de localisation et améliore les performances avec une dégradation négligeable de la vitesse.
- Stratégie d'entraînement assisté par ancres (AAT) : Ce modèle propose AAT pour combiner les avantages des paradigmes avec ancres et sans ancres, sans compromettre l'efficacité de l'inférence.
- Conception améliorée du backbone et du neck : En approfondissant YOLOv6 par l'ajout d'une étape au backbone et au neck, ce modèle a obtenu de solides performances sur le jeu de données COCO avec des entrées haute résolution lors de sa sortie.
- Stratégie d'auto-distillation : Une nouvelle stratégie d'auto-distillation est mise en œuvre pour améliorer les performances des petits modèles YOLOv6. Elle renforce la branche de régression auxiliaire pendant l'entraînement, puis la supprime lors de l'inférence afin d'éviter une baisse notable de la vitesse.
Indicateurs de performance#
YOLOv6 propose plusieurs modèles préentraînés de différentes tailles :
- YOLOv6-N : 37,5 % d'AP sur COCO val2017 à 1 187 FPS avec un GPU NVIDIA T4.
- YOLOv6-S : 45,0 % d'AP à 484 FPS.
- YOLOv6-M : 50,0 % d'AP à 226 FPS.
- YOLOv6-L : 52,8 % d'AP à 116 FPS.
- YOLOv6-L6 : précision de pointe en temps réel.
YOLOv6 propose également des modèles quantifiés avec différentes précisions, ainsi que des modèles optimisés pour les plateformes mobiles.
Exemples d'utilisation#
Cet exemple présente des exemples simples d'entraînement et d'inférence avec YOLOv6. Pour consulter la documentation complète sur ces modes et les autres modes, consulte les pages de documentation Prédiction, Entraînement, Validation et Exportation.
Les fichiers *.yaml de YOLOv6 peuvent être transmis à la classe YOLO() pour créer le modèle correspondant en Python :
from ultralytics import YOLO
# Créer un modèle YOLOv6n à partir de zéro
model = YOLO("yolov6n.yaml")
# Afficher les informations du modèle (facultatif)
model.info()
# Entraîner le modèle sur le jeu de données d'exemple COCO8 pendant 100 époques
results = model.train(data="coco8.yaml", epochs=100, imgsz=640)
# Exécuter l'inférence avec le modèle YOLOv6n sur l'image 'bus.jpg'
results = model("path/to/bus.jpg")Tâches et modes pris en charge#
La série YOLOv6 propose différents modèles, chacun optimisé pour des performances élevées en détection d'objets. Ces modèles répondent à divers besoins en calcul et exigences de précision, ce qui les rend adaptés à un large éventail d'applications.
| Modèle | Noms de fichiers | Tâches | Entraînement | Validation | Inférence | Export |
|---|---|---|---|---|---|---|
| YOLOv6-N | yolov6n.yaml | Détection d'objets | ✅ | ✅ | ✅ | ✅ |
| YOLOv6-S | yolov6s.yaml | Détection d'objets | ✅ | ✅ | ✅ | ✅ |
| YOLOv6-M | yolov6m.yaml | Détection d'objets | ✅ | ✅ | ✅ | ✅ |
| YOLOv6-L | yolov6l.yaml | Détection d'objets | ✅ | ✅ | ✅ | ✅ |
| YOLOv6-X | yolov6x.yaml | Détection d'objets | ✅ | ✅ | ✅ | ✅ |
Ce tableau présente une vue détaillée des variantes du modèle YOLOv6, en mettant en évidence leurs capacités pour les tâches de détection d'objets et leur compatibilité avec différents modes opérationnels tels que l'inférence, la validation, l'entraînement et l'exportation. Cette prise en charge complète permet aux utilisateurs d'exploiter pleinement les capacités des modèles YOLOv6 dans de nombreux scénarios de détection d'objets.
Citations et remerciements#
Nous tenons à saluer les auteurs pour leurs contributions majeures au domaine de la détection d'objets en temps réel :
@misc{li2023yolov6,
title={YOLOv6 v3.0: A Full-Scale Reloading},
author={Chuyi Li and Lulu Li and Yifei Geng and Hongliang Jiang and Meng Cheng and Bo Zhang and Zaidan Ke and Xiaoming Xu and Xiangxiang Chu},
year={2023},
eprint={2301.05586},
archivePrefix={arXiv},
primaryClass={cs.CV}
}L'article original sur YOLOv6 est disponible sur arXiv. Les auteurs ont rendu leurs travaux accessibles au public, et le code source est disponible sur GitHub. Nous saluons leurs efforts pour faire progresser le domaine et rendre leurs travaux accessibles à l'ensemble de la communauté.
FAQ#
Lancé en 2022, Meituan YOLOv6 est un détecteur d'objets qui équilibre vitesse et précision et qui est conçu pour les applications en temps réel. Il comporte des améliorations architecturales notables, comme le module de concaténation bidirectionnelle (BiC) et une stratégie d'entraînement assisté par ancres (AAT). Ces innovations améliorent considérablement les performances avec un impact minime sur la vitesse, faisant de YOLOv6 un choix compétitif pour les tâches de détection d'objets.
Le module de concaténation bidirectionnelle (BiC) de YOLOv6 renforce les signaux de localisation dans le neck du détecteur et améliore les performances avec un impact négligeable sur la vitesse. Ce module combine efficacement différentes cartes de caractéristiques, augmentant la capacité du modèle à détecter les objets avec précision. Pour en savoir plus sur les fonctionnalités de YOLOv6, consulte la section Fonctionnalités clés.
Tu peux entraîner un modèle YOLOv6 avec Ultralytics à l'aide de commandes Python ou CLI simples. Par exemple :
Exemplefrom ultralytics import YOLO # Créer un modèle YOLOv6n à partir de zéro model = YOLO("yolov6n.yaml") # Entraîner le modèle sur le jeu de données d'exemple COCO8 pendant 100 époques results = model.train(data="coco8.yaml", epochs=100, imgsz=640)Pour en savoir plus, consulte la page Entraînement.
YOLOv6 propose plusieurs versions, chacune optimisée pour répondre à différents besoins de performance :
- YOLOv6-N : 37,5 % d'AP à 1 187 FPS
- YOLOv6-S : 45,0 % d'AP à 484 FPS
- YOLOv6-M : 50,0 % d'AP à 226 FPS
- YOLOv6-L : 52,8 % d'AP à 116 FPS
- YOLOv6-L6 : précision de pointe dans des scénarios en temps réel
Ces modèles sont évalués sur le jeu de données COCO avec un GPU NVIDIA T4. Pour en savoir plus sur les métriques de performance, consulte la section Métriques de performance.
L'entraînement assisté par ancres (AAT) de YOLOv6 combine des éléments des approches avec ancres et sans ancres, améliorant les capacités de détection du modèle sans compromettre l'efficacité de l'inférence. Cette stratégie exploite les ancres pendant l'entraînement pour améliorer les prédictions des boîtes englobantes, ce qui rend YOLOv6 efficace pour diverses tâches de détection d'objets.
YOLOv6 prend en charge différents modes opérationnels, notamment l'inférence, la validation, l'entraînement et l'exportation. Cette flexibilité permet aux utilisateurs d'exploiter pleinement les capacités du modèle dans différents scénarios. Consulte la section Tâches et modes pris en charge pour obtenir une présentation détaillée de chaque mode.