Meituan YOLOv6
Aperçu
Meituan YOLOv6 est un détecteur d'objets de pointe qui offre un équilibre remarquable entre vitesse et précision, ce qui en fait un choix populaire pour les applications en temps réel. Ce modèle introduit plusieurs améliorations notables sur son architecture et son schéma d'entraînement, y compris la mise en œuvre d'un module de concaténation bidirectionnelle (BiC), une stratégie d'entraînement assistée par ancrage (AAT) et une conception améliorée du backbone et du neck pour une précision de pointe sur le jeu de données COCO.
Présentation de YOLOv6. Diagramme de l'architecture du modèle montrant les composants réseau repensés et les stratégies d'entraînement qui ont conduit à des améliorations significatives des performances. (a) Le neck de YOLOv6 (N et S sont indiqués). Notez que pour M/L, RepBlocks est remplacé par CSPStackRep. (b) La structure d'un module BiC. (c) Un bloc SimCSPSPPF.source).
Principales caractéristiques
- Module de concaténation bidirectionnelle (BiC) : YOLOv6 introduit un module BiC dans le neck du détecteur, améliorant les signaux de localisation et offrant des gains de performance avec une dégradation de vitesse négligeable.
- Stratégie d'entraînement assisté par ancres (AAT) : Ce modèle propose l'AAT pour profiter des avantages des paradigmes basés sur des ancres et sans ancres sans compromettre l'efficacité de l'inférence.
- Conception améliorée du backbone et du neck : En approfondissant YOLOv6 pour inclure une étape supplémentaire dans le backbone et le neck, ce modèle atteint des performances de pointe sur l'ensemble de données COCO avec une entrée haute résolution.
- Stratégie d'auto-distillation : Une nouvelle stratégie d'auto-distillation est mise en œuvre pour améliorer les performances des modèles plus petits de YOLOv6, en améliorant la branche de régression auxiliaire pendant l'entraînement et en la supprimant lors de l'inférence pour éviter une baisse de vitesse marquée.
Mesures de performance
YOLOv6 fournit divers modèles pré-entraînés avec différentes échelles :
- YOLOv6-N : 37,5 % AP sur COCO val2017 à 1 187 FPS avec un GPU NVIDIA T4.
- YOLOv6-S : 45,0 % AP à 484 FPS.
- YOLOv6-M : 50,0 % AP à 226 FPS.
- YOLOv6-L : 52,8 % AP à 116 FPS.
- YOLOv6-L6 : Précision de pointe en temps réel.
YOLOv6 fournit également des modèles quantifiés pour différentes précisions et des modèles optimisés pour les plateformes mobiles.
Exemples d'utilisation
Cet exemple fournit des exemples simples d'entraînement et d'inférence YOLOv6. Pour une documentation complète sur ces modes et d'autres, consultez les pages de documentation Predict, Train, Val et Export.
Exemple
YOLOv6 *.yaml
fichiers peuvent être passés aux YOLO()
classe pour construire le modèle correspondant en python :
from ultralytics import YOLO
# Build a YOLOv6n model from scratch
model = YOLO("yolov6n.yaml")
# Display model information (optional)
model.info()
# Train the model on the COCO8 example dataset for 100 epochs
results = model.train(data="coco8.yaml", epochs=100, imgsz=640)
# Run inference with the YOLOv6n model on the 'bus.jpg' image
results = model("path/to/bus.jpg")
Des commandes CLI sont disponibles pour exécuter directement les modèles :
# Build a YOLOv6n model from scratch and train it on the COCO8 example dataset for 100 epochs
yolo train model=yolov6n.yaml data=coco8.yaml epochs=100 imgsz=640
# Build a YOLOv6n model from scratch and run inference on the 'bus.jpg' image
yolo predict model=yolov6n.yaml source=path/to/bus.jpg
Tâches et modes pris en charge
La série YOLOv6 offre une gamme de modèles, chacun étant optimisé pour la détection d'objets haute performance. Ces modèles répondent à divers besoins de calcul 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 |
---|---|---|---|---|---|---|
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 fournit une vue d'ensemble détaillée des variantes du modèle YOLOv6, mettant en évidence leurs capacités dans les tâches de détection d'objets et leur compatibilité avec divers modes de fonctionnement tels que l'inférence, la validation, l'entraînement et l'exportation. Cette prise en charge complète garantit que les utilisateurs peuvent exploiter pleinement les capacités des modèles YOLOv6 dans un large éventail de scénarios de détection d'objets.
Citations et remerciements
Nous tenons à remercier les auteurs pour leurs contributions significatives dans le 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}
}
Le document original de YOLOv6 est disponible sur arXiv. Les auteurs ont rendu leur travail public, et la base de code est accessible sur GitHub. Nous apprécions leurs efforts pour faire progresser le domaine et rendre leur travail accessible à la communauté au sens large.
FAQ
Qu'est-ce que Meituan YOLOv6 et qu'est-ce qui le rend unique ?
Meituan YOLOv6 est un détecteur d'objets de pointe qui équilibre vitesse et précision, idéal pour les applications en temps réel. Il présente des améliorations architecturales notables telles que le module Bi-directional Concatenation (BiC) et une stratégie Anchor-Aided Training (AAT). Ces innovations offrent des gains de performance substantiels avec une dégradation minimale de la vitesse, faisant de YOLOv6 un choix compétitif pour les tâches de détection d'objets.
Comment le module Bi-directional Concatenation (BiC) dans YOLOv6 améliore-t-il les performances ?
Le module Bi-directional Concatenation (BiC) dans YOLOv6 améliore les signaux de localisation dans le neck du détecteur, offrant des améliorations de performances avec un impact de vitesse négligeable. Ce module combine efficacement différents feature maps, augmentant la capacité du modèle à détecter les objets avec précision. Pour plus de détails sur les fonctionnalités de YOLOv6, reportez-vous à la section Fonctionnalités clés.
Comment puis-je entraîner un modèle YOLOv6 en utilisant Ultralytics ?
Vous pouvez entraîner un modèle YOLOv6 à l'aide d'Ultralytics avec de simples commandes Python ou CLI. Par exemple :
Exemple
from ultralytics import YOLO
# Build a YOLOv6n model from scratch
model = YOLO("yolov6n.yaml")
# Train the model on the COCO8 example dataset for 100 epochs
results = model.train(data="coco8.yaml", epochs=100, imgsz=640)
yolo train model=yolov6n.yaml data=coco8.yaml epochs=100 imgsz=640
Pour plus d'informations, consultez la page Train.
Quelles sont les différentes versions de YOLOv6 et leurs mesures de performance ?
YOLOv6 propose plusieurs versions, chacune étant optimisée pour différentes exigences de performance :
- YOLOv6-N : 37,5 % AP à 1 187 FPS
- YOLOv6-S : 45,0 % AP à 484 FPS
- YOLOv6-M : 50,0 % AP à 226 FPS
- YOLOv6-L : 52,8 % AP à 116 FPS
- YOLOv6-L6 : Précision à la pointe de la technologie dans des scénarios en temps réel
Ces modèles sont évalués sur l'ensemble de données COCO à l'aide d'un GPU NVIDIA T4. Pour plus d'informations sur les mesures de performance, consultez la section Mesures de performance.
Comment la stratégie Anchor-Aided Training (AAT) profite-t-elle à YOLOv6 ?
La formation assistée par ancrage (AAT) dans YOLOv6 combine des éléments d'approches basées sur l'ancrage et sans ancrage, 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 la formation pour améliorer les prédictions de boîtes englobantes, rendant YOLOv6 efficace dans diverses tâches de détection d'objets.
Quels modes de fonctionnement sont pris en charge par les modèles YOLOv6 dans Ultralytics ?
YOLOv6 prend en charge divers modes de fonctionnement, notamment l'inférence, la validation, la formation et l'exportation. Cette flexibilité permet aux utilisateurs d'exploiter pleinement les capacités du modèle dans différents scénarios. Consultez la section Tâches et modes pris en charge pour un aperçu détaillé de chaque mode.