Meituan YOLOv6#
Panoramica#
Meituan YOLOv6, rilasciato nel 2022, offre un ottimo equilibrio tra velocità e precisione, rendendolo una scelta popolare per le applicazioni in tempo reale. Questo modello introduce diversi miglioramenti degni di nota all'architettura e allo schema di addestramento, tra cui l'implementazione di un modulo di concatenazione bidirezionale (BiC), una strategia di addestramento assistito da anchor (AAT) e un design migliorato del backbone e del neck per ottenere un'elevata precisione sul dataset COCO.
Panoramica di YOLOv6. Diagramma dell'architettura del modello che mostra i componenti di rete riprogettati e le strategie di addestramento che hanno portato a significativi miglioramenti delle prestazioni. (a) Il neck di YOLOv6 (sono mostrati N e S). Nota: per M/L, RepBlocks è sostituito da CSPStackRep. (b) La struttura di un modulo BiC. (c) Un blocco SimCSPSPPF. (fonte.
Funzionalità principali#
- Modulo di concatenazione bidirezionale (BiC): YOLOv6 introduce un modulo BiC nel neck del rilevatore, migliorando i segnali di localizzazione e offrendo vantaggi prestazionali con un degrado trascurabile della velocità.
- Strategia di addestramento assistito da anchor (AAT): Questo modello propone AAT per sfruttare i vantaggi sia dei paradigmi basati su anchor sia di quelli senza anchor, senza compromettere l'efficienza dell'inferenza.
- Progettazione migliorata del backbone e del neck: Estendendo YOLOv6 con un ulteriore stadio nel backbone e nel neck, al momento del rilascio questo modello ha ottenuto prestazioni elevate sul dataset COCO con input ad alta risoluzione.
- Strategia di auto-distillazione: È stata implementata una nuova strategia di auto-distillazione per migliorare le prestazioni dei modelli YOLOv6 più piccoli, potenziando il ramo ausiliario di regressione durante l'addestramento e rimuovendolo in fase di inferenza per evitare un marcato calo di velocità.
Metriche di prestazione#
YOLOv6 offre diversi modelli preaddestrati con varie dimensioni:
- YOLOv6-N: 37,5% AP sul set COCO val2017 a 1187 FPS con una GPU NVIDIA T4.
- YOLOv6-S: 45,0% AP a 484 FPS.
- YOLOv6-M: 50,0% AP a 226 FPS.
- YOLOv6-L: 52,8% AP a 116 FPS.
- YOLOv6-L6: precisione all'avanguardia in tempo reale.
YOLOv6 offre anche modelli quantizzati con diverse precisioni e modelli ottimizzati per le piattaforme mobili.
Esempi d'uso#
Questo esempio presenta semplici esempi di addestramento e inferenza di YOLOv6. Per la documentazione completa su queste e altre modalità, consulta le pagine della documentazione Predizione, Addestramento, Validazione ed Esportazione.
I file YOLOv6 *.yaml possono essere passati alla classe YOLO() per creare il modello corrispondente in Python:
from ultralytics import YOLO
# Crea da zero un modello YOLOv6n
model = YOLO("yolov6n.yaml")
# Visualizza le informazioni sul modello (facoltativo)
model.info()
# Addestra il modello sul dataset di esempio COCO8 per 100 epoche
results = model.train(data="coco8.yaml", epochs=100, imgsz=640)
# Esegui l'inferenza con il modello YOLOv6n sull'immagine 'bus.jpg'
results = model("path/to/bus.jpg")Attività e modalità supportate#
La serie YOLOv6 offre una gamma di modelli, ciascuno ottimizzato per il rilevamento di oggetti ad alte prestazioni. Questi modelli soddisfano esigenze computazionali e requisiti di precisione diversi, risultando versatili per un'ampia gamma di applicazioni.
| Modello | Nomi dei file | Attività | Addestramento | Validazione | Inferenza | Esporta |
|---|---|---|---|---|---|---|
| YOLOv6-N | yolov6n.yaml | Rilevamento di oggetti | ✅ | ✅ | ✅ | ✅ |
| YOLOv6-S | yolov6s.yaml | Rilevamento di oggetti | ✅ | ✅ | ✅ | ✅ |
| YOLOv6-M | yolov6m.yaml | Rilevamento di oggetti | ✅ | ✅ | ✅ | ✅ |
| YOLOv6-L | yolov6l.yaml | Rilevamento di oggetti | ✅ | ✅ | ✅ | ✅ |
| YOLOv6-X | yolov6x.yaml | Rilevamento di oggetti | ✅ | ✅ | ✅ | ✅ |
Questa tabella offre una panoramica dettagliata delle varianti del modello YOLOv6, evidenziandone le capacità nelle attività di rilevamento di oggetti e la compatibilità con diverse modalità operative, come inferenza, validazione, addestramento ed esportazione. Questo supporto completo consente agli utenti di sfruttare appieno le capacità dei modelli YOLOv6 in un'ampia gamma di scenari di rilevamento di oggetti.
Citazioni e ringraziamenti#
Desideriamo ringraziare gli autori per il loro importante contributo al campo del rilevamento di oggetti in tempo reale:
@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'articolo originale su YOLOv6 è disponibile su arXiv. Gli autori hanno reso pubblica la loro ricerca e il codice è disponibile su GitHub. Apprezziamo il loro impegno nel far progredire il settore e nel rendere il loro lavoro accessibile alla comunità più ampia.
Domande frequenti#
Meituan YOLOv6, rilasciato nel 2022, è un rilevatore di oggetti che bilancia velocità e precisione, progettato per le applicazioni in tempo reale. Presenta notevoli miglioramenti architetturali, come il modulo di concatenazione bidirezionale (BiC) e una strategia di addestramento assistito da anchor (AAT). Queste innovazioni offrono significativi miglioramenti delle prestazioni con un degrado minimo della velocità, rendendo YOLOv6 una scelta competitiva per le attività di rilevamento di oggetti.
Il modulo di concatenazione bidirezionale (BiC) di YOLOv6 migliora i segnali di localizzazione nel neck del rilevatore, offrendo prestazioni superiori con un impatto trascurabile sulla velocità. Questo modulo combina efficacemente diverse mappe di caratteristiche, aumentando la capacità del modello di rilevare gli oggetti con precisione. Per ulteriori dettagli sulle funzionalità di YOLOv6, consulta la sezione Funzionalità chiave.
Puoi addestrare un modello YOLOv6 usando Ultralytics con semplici comandi Python o CLI. Ad esempio:
Esempiofrom ultralytics import YOLO # Crea da zero un modello YOLOv6n model = YOLO("yolov6n.yaml") # Addestra il modello sul dataset di esempio COCO8 per 100 epoche results = model.train(data="coco8.yaml", epochs=100, imgsz=640)Per ulteriori informazioni, visita la pagina Addestramento.
YOLOv6 offre diverse versioni, ciascuna ottimizzata per requisiti di prestazione differenti:
- YOLOv6-N: 37,5% AP a 1187 FPS
- YOLOv6-S: 45,0% AP a 484 FPS
- YOLOv6-M: 50,0% AP a 226 FPS
- YOLOv6-L: 52,8% AP a 116 FPS
- YOLOv6-L6: precisione all'avanguardia negli scenari in tempo reale
Questi modelli sono valutati sul dataset COCO usando una GPU NVIDIA T4. Per ulteriori informazioni sulle metriche di prestazione, consulta la sezione Metriche di prestazione.
L'addestramento assistito da anchor (AAT) di YOLOv6 combina elementi degli approcci basati su anchor e di quelli senza anchor, migliorando le capacità di rilevamento del modello senza compromettere l'efficienza dell'inferenza. Questa strategia sfrutta gli anchor durante l'addestramento per migliorare le predizioni dei riquadri di delimitazione, rendendo YOLOv6 efficace in diverse attività di rilevamento di oggetti.
YOLOv6 supporta diverse modalità operative, tra cui inferenza, validazione, addestramento ed esportazione. Questa flessibilità consente agli utenti di sfruttare appieno le capacità del modello in scenari diversi. Consulta la sezione Attività e modalità supportate per una panoramica dettagliata di ogni modalità.