YOLOv5 vs YOLOv8: evoluzione del rilevamento di oggetti in tempo reale
L'evoluzione del rilevamento degli oggetti è stata influenzata in modo significativo dalla famiglia di modelli YOLO (You Only Look Once). Sviluppata da Ultralyticssia YOLOv5 che YOLOv8 rappresentano momenti cruciali nella storia della computer vision. Mentre YOLOv5 si è affermato come l'architettura di rilevamento più amata e utilizzata al mondo grazie alla sua semplicità e velocità, YOLOv8 ha introdotto un framework unificato con innovazioni architettoniche all'avanguardia per supportare una gamma più ampia di attività di visione.
La scelta tra queste due potenze dipende dai vincoli specifici del progetto, dalla disponibilità di hardware e dalla necessità di capacità multitasking. Questa guida fornisce un'analisi tecnica approfondita per aiutare gli ingegneri e i ricercatori di computer vision a prendere la decisione giusta.
YOLOv5: il comprovato standard industriale
Autore: Glenn Jocher
Organizzazione:Ultralytics
Data: 2020-06-26
GitHubyolov5
Docsyolov5
Rilasciato a metà del 2020, YOLOv5 ha rivoluzionato l'accessibilità del rilevamento degli oggetti. È stato il primo modello YOLO implementato nativamente in PyTorchabbandonando il framework Darknet utilizzato dai suoi predecessori. Questo cambiamento ha reso incredibilmente facile per gli sviluppatori addestrare, distribuire e sperimentare con set di dati personalizzati.
YOLOv5 utilizza una dorsale CSPDarknet ed è un rilevatore basato su ancore. Ciò significa che si basa su caselle di ancoraggio predefinite per prevedere la posizione degli oggetti. Sebbene questo approccio richieda la messa a punto di alcuni iperparametri per ottenere prestazioni ottimali su insiemi di dati specifici, rimane molto efficace. La sua architettura enfatizza la velocità di inferenza e la bassa capacità di memoria, rendendolo uno dei preferiti per l'implementazione su hardware con risorse limitate come Raspberry Pi e le prime generazioni di NVIDIA Jetson.
Punti di forza di YOLOv5
- Stabilità ereditata: Anni di utilizzo attivo in ambienti di produzione lo hanno reso uno dei modelli di visione più stabili e privi di bug disponibili.
- Ottimizzazione dei bordi: In particolare sulle CPU più vecchie e su specifici processori mobili, l'architettura più semplice di YOLOv5 può talvolta offrire una latenza di inferenza più rapida.
- Vasto ecosistema: Un'enorme comunità di tutorial, integrazioni di terze parti e discussioni sul forum supporta la risoluzione dei problemi e lo sviluppo.
YOLOv8: il concentrato di energia multi-task
Autori: Glenn Jocher, Ayush Chaurasia e Jing Qiu
Organizzazione:Ultralytics
Data: 2023-01-10
GitHubultralytics
Docsyolov8
YOLOv8 rappresenta un significativo passo avanti, progettato non solo come rilevatore di oggetti ma come struttura completa per la segmentazione delle immagini, la stima della posa, la classificazione e il rilevamento di bounding box orientati (OBB).
Dal punto di vista architetturale, YOLOv8 passa a un design privo di ancore con una testa disaccoppiata, separando i compiti di objectness, classificazione e regressione. Inoltre, introduce il modulo C2f (Cross Stage Partial BottleNeck con 2 convoluzioni), che sostituisce il modulo C3 presente in YOLOv5. Il modulo C2f migliora il flusso di gradienti e la fusione delle caratteristiche, consentendo al modello di apprendere modelli più complessi senza un enorme aumento del costo computazionale.
Punti di forza di YOLOv8
- Precisione all'avanguardia: Raggiunge costantemente punteggi mAP (Mean Average Precision) più elevati su COCO e su set di dati personalizzati rispetto a YOLOv5.
- Rilevamento senza ancore: Elimina la necessità di calcolare o mettere a punto le caselle di ancoraggio, semplificando la pipeline di addestramento e migliorando la generalizzazione su oggetti con rapporti di aspetto insoliti.
- Versatilità: La possibilità di passare dal rilevamento, alla segmentazione e alla stima della posa utilizzando la stessa API riduce significativamente i tempi di sviluppo per progetti complessi.
Approfondimento tecnico: Architettura e prestazioni
La transizione da YOLOv5 a YOLOv8 è caratterizzata da diverse modifiche "sotto il cofano" che determinano l'aumento delle prestazioni.
Spostamenti architettonici
La differenza più evidente è la testa di rilevamento. YOLOv5 utilizza una testa accoppiata in cui la classificazione e la localizzazione condividono le caratteristiche. YOLOv8 impiega una testa disaccoppiata, che consente alla rete di sintonizzare i pesi in modo indipendente per identificare cosa è un oggetto e dove si trova. In genere questo porta a una migliore convergenza e a una maggiore accuratezza.
Inoltre, l'evoluzione della spina dorsale da C3 a C2f consente a YOLOv8 di acquisire informazioni più ricche sul gradiente. Sebbene questo renda l'architettura leggermente più complessa, Ultralytics ha ottimizzato l'implementazione per garantire che l'efficienza della formazione rimanga elevata.
Metriche di performance
Confrontando i modelli sul set di dati standard COCO , YOLOv8 dimostra un rapporto superiore tra accuratezza e calcolo.
| Modello | dimensione (pixel) | mAPval 50-95 | Velocità CPU ONNX (ms) | Velocità T4 TensorRT10 (ms) | parametri (M) | FLOPs (B) |
|---|---|---|---|---|---|---|
| YOLOv5n | 640 | 28.0 | 73.6 | 1.12 | 2.6 | 7.7 |
| YOLOv5s | 640 | 37.4 | 120.7 | 1.92 | 9.1 | 24.0 |
| YOLOv5m | 640 | 45.4 | 233.9 | 4.03 | 25.1 | 64.2 |
| YOLOv5l | 640 | 49.0 | 408.4 | 6.61 | 53.2 | 135.0 |
| YOLOv5x | 640 | 50.7 | 763.2 | 11.89 | 97.2 | 246.4 |
| YOLOv8n | 640 | 37.3 | 80.4 | 1.47 | 3.2 | 8.7 |
| YOLOv8s | 640 | 44.9 | 128.4 | 2.66 | 11.2 | 28.6 |
| YOLOv8m | 640 | 50.2 | 234.7 | 5.86 | 25.9 | 78.9 |
| YOLOv8l | 640 | 52.9 | 375.2 | 9.06 | 43.7 | 165.2 |
| YOLOv8x | 640 | 53.9 | 479.1 | 14.37 | 68.2 | 257.8 |
Come illustrato, YOLOv8n (Nano) raggiunge un mAP di 37,3, praticamente uguale a quello del più grande YOLOv5s (Small) che raggiunge 37,4, ma con un numero di FLOP significativamente inferiore. Questa efficienza è fondamentale per le moderne applicazioni Edge AI.
Metodologie di training ed ecosistema
Una delle caratteristiche che definiscono i modelli Ultralytics è l'attenzione all'esperienza dello sviluppatore. Entrambi i modelli beneficiano dell'ecosistema completo di Ultralytics , ma sono accessibili in modo leggermente diverso.
Facilità d'uso e API
YOLOv8 ha introdotto il ultralytics pacchetto Python , una CLI unificata e un'interfaccia Python . Questo pacchetto gestisce in modo efficace le dipendenze e fornisce un'API coerente per formazione, convalida, e Previsione. È interessante notare che il moderno ultralytics Il pacchetto può anche caricare ed eseguire i modelli YOLOv5 , colmando il divario tra le generazioni.
from ultralytics import YOLO
# Load a YOLOv8 model (Official)
model_v8 = YOLO("yolov8n.pt")
# Load a YOLOv5 model (Legacy support via Ultralytics package)
model_v5 = YOLO("yolov5nu.pt")
# Training is identical for both
results = model_v8.train(data="coco8.yaml", epochs=100)
Memoria ed efficienza
Rispetto ai modelli basati su trasformatori come RT-DETRsia YOLOv5 che YOLOv8 sono eccezionalmente efficienti dal punto di vista della memoria. I trasformatori spesso richiedono una notevole quantità di memoria CUDA e tempi di addestramento più lunghi per convergere. Al contrario, i modelliYOLO Ultralytics sono ottimizzati per essere eseguiti su GPU di livello consumer e persino su CPU, democratizzando l'accesso all'IA ad alte prestazioni.
Ecosistema integrato
Entrambi i modelli sono pienamente compatibili con Ultralytics HUB, consentendo la gestione dei set di dati, la visualizzazione dei modelli e la distribuzione con un solo clic su dispositivi reali.
Casi d'uso ideali
La scelta del modello giusto dipende spesso dall'ambiente specifico in cui verrà impiegato.
Quando scegliere YOLOv5
YOLOv5 rimane una scelta eccellente per:
- Sistemi legacy: Aggiornamento di pipeline esistenti in cui l'infrastruttura è già costruita intorno all'architettura YOLOv5 .
- Hardware Edge specifico: Alcuni vecchi driver NPU (Neural Processing Unit) hanno un supporto altamente ottimizzato specificamente per l'architettura YOLOv5 .
- Latenza ultrabassa: In scenari in cui ogni millisecondo di inferenza della CPU è importante, la testa accoppiata più semplice di YOLOv5n può talvolta offrire un vantaggio in termini di velocità rispetto a v8n.
Quando scegliere YOLOv8
YOLOv8 è la scelta consigliata per:
- Nuovi sviluppi: Iniziando un progetto oggi, YOLOv8 (o il più recente YOLO11) offre un percorso migliore a prova di futuro.
- Attività complesse: Applicazioni che richiedono la segmentazione di istanze (ad esempio, analisi di cellule mediche) o il rilevamento di punti chiave (ad esempio, analisi dello sport).
- Requisiti di alta precisione: Scenari in cui la mancanza di un rilevamento è fondamentale, come ad esempio nei sistemi di sicurezza dei veicoli autonomi o nella sorveglianza della sicurezza.
Conclusione
Sia YOLOv5 che YOLOv8 testimoniano l'impegno di Ultralytics per l'innovazione open-source. YOLOv5 rimane una leggenda nel settore: affidabile, veloce e ampiamente supportato. Tuttavia, YOLOv8 migliora questa base con progressi architettonici che offrono una maggiore precisione e versatilità senza sacrificare la facilità d'uso che gli sviluppatori si aspettano.
Per la maggior parte dei nuovi progetti, si consiglia di sfruttare i progressi di YOLOv8 o di passare alla versione più recente di YOLO11che perfeziona ulteriormente questi concetti per ottenere il massimo equilibrio tra velocità e precisione.
Esplora altri modelli
Se siete interessati ad esplorare le ultime novità in fatto di tecnologia di rilevamento, prendete in considerazione l'idea di dare un'occhiata:
- YOLO11: l'ultima evoluzione, che offre un'elaborazione più veloce e una migliore estrazione delle caratteristiche rispetto a YOLOv8.
- RT-DETR: un modello basato su trasformatori che offre un'elevata precisione per le applicazioni in tempo reale, ideale quando la memoria GPU è meno vincolante.