YOLOv5 vs YOLOv8: Evoluzione del rilevamento oggetti in tempo reale
L'evoluzione dell'object detection è stata significativamente plasmata dalla famiglia di modelli YOLO (You Only Look Once). Sviluppati da Ultralytics, sia YOLOv5 che YOLOv8 rappresentano momenti cruciali nella storia della computer vision. Mentre YOLOv5 si è affermato come l'architettura di detection più amata e ampiamente 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 questi due colossi dipende dai vincoli specifici del tuo progetto, dalla disponibilità dell'hardware e dalla necessità di funzionalità multi-task. Questa guida fornisce un'analisi tecnica approfondita per aiutare gli ingegneri di computer vision e i ricercatori a prendere la decisione giusta.
YOLOv5: Lo standard industriale collaudato
Autore: Glenn Jocher
Organizzazione:Ultralytics
Data: 2020-06-26
GitHub:https://github.com/ultralytics/yolov5
Documentazione:https://docs.ultralytics.com/models/yolov5/
Rilasciato a metà del 2020, YOLOv5 ha rivoluzionato l'accessibilità dell'object detection. È stato il primo modello YOLO implementato nativamente in PyTorch, allontanandosi dal framework Darknet utilizzato dai suoi predecessori. Questo cambiamento ha reso incredibilmente facile per gli sviluppatori addestrare, implementare e sperimentare con set di dati personalizzati.
YOLOv5 utilizza un backbone CSPDarknet ed è un detector basato su anchor. Ciò significa che si basa su anchor box predefiniti per prevedere le posizioni degli oggetti. Sebbene questo approccio richieda una certa messa a punto degli iperparametri per prestazioni ottimali su set di dati univoci, rimane altamente efficace. La sua architettura enfatizza la velocità di inferenza e la bassa capacità di memoria, rendendolo uno dei preferiti per la distribuzione su hardware con risorse limitate come il Raspberry Pi e le prime generazioni di NVIDIA Jetson.
Punti di Forza Chiave di YOLOv5
- Stabilità legacy: Anni di utilizzo attivo in ambienti di produzione lo hanno reso uno dei modelli di visione più stabili e privi di bug disponibili.
- Ottimizzazione Edge: In particolare su CPU più vecchie e specifici processori mobile, l'architettura più semplice di YOLOv5 a volte può offrire una latenza di inferenza più veloce.
- Vasto ecosistema: Un'enorme comunità di tutorial, integrazioni di terze parti e discussioni sui forum supporta la risoluzione dei problemi e lo sviluppo.
YOLOv8: Il concentrato multi-task
Autori: Glenn Jocher, Ayush Chaurasia e Jing Qiu
Organizzazione:Ultralytics
Data: 2023-01-10
GitHub:https://github.com/ultralytics/ultralytics
Documentazione:https://docs.ultralytics.com/models/yolov8/
YOLOv8 rappresenta un significativo passo avanti, progettato non solo come un object detector, ma come un framework completo per la segmentazione delle immagini, la stima della posa, la classificazione e il rilevamento di oriented bounding box (OBB).
Dal punto di vista dell'architettura, YOLOv8 passa a un design anchor-free con un head disaccoppiato, separando i compiti di objectness, classificazione e regressione. Introduce anche il modulo C2f (Cross Stage Partial BottleNeck con 2 convoluzioni), che sostituisce il modulo C3 presente in YOLOv5. Il modulo C2f migliora il flusso del gradiente e la fusione delle caratteristiche, consentendo al modello di apprendere pattern più complessi senza un aumento massiccio dei costi computazionali.
Punti di forza principali di YOLOv8
- Accuratezza all'avanguardia: Ottiene costantemente punteggi mAP (precisione media media) più elevati su COCO e set di dati personalizzati rispetto a YOLOv5.
- Detection senza anchor: Elimina la necessità di calcolare o ottimizzare gli anchor box, semplificando la pipeline di training e migliorando la generalizzazione su oggetti con proporzioni insolite.
- Versatilità: La capacità di passare dal detection, alla segmentazione e alla stima della posa utilizzando la stessa API riduce significativamente i tempi di sviluppo per progetti complessi.
Analisi tecnica approfondita: Architettura e prestazioni
La transizione da YOLOv5 a YOLOv8 è caratterizzata da diversi cambiamenti "sotto il cofano" che guidano i guadagni di prestazioni.
Cambiamenti Architetturali
La differenza più notevole è l'head di detection. YOLOv5 utilizza un head accoppiato in cui la classificazione e la localizzazione condividono le caratteristiche. YOLOv8 impiega un head disaccoppiato, consentendo alla rete di ottimizzare i pesi in modo indipendente per identificare cosa è un oggetto rispetto a dove si trova. Questo in genere porta a una migliore convergenza e a una maggiore accuratezza.
Inoltre, l'evoluzione del backbone da C3 a C2f consente a YOLOv8 di acquisire informazioni sui gradienti più ricche. Sebbene ciò renda l'architettura leggermente più complessa, Ultralytics ha ottimizzato l'implementazione per garantire che l'efficienza dell'addestramento rimanga elevata.
Metriche di performance
Quando si confrontano i modelli sul set di dati COCO standard, YOLOv8 dimostra rapporti accuratezza/calcolo superiori.
| 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 corrispondente al più grande YOLOv5s (Small) che ottiene un punteggio di 37.4, ma con significativamente meno FLOPs. Questa efficienza è fondamentale per le moderne applicazioni Edge AI.
Metodologie di training ed ecosistema
Una delle caratteristiche distintive dei modelli Ultralytics è l'attenzione all'esperienza dello sviluppatore. Entrambi i modelli beneficiano del completo ecosistema Ultralytics, ma vi si accede in modo leggermente diverso.
Facilità d'uso e API
YOLOv8 ha introdotto il ultralytics Pacchetto python, un'interfaccia CLI e python unificata. Questo pacchetto gestisce efficacemente le dipendenze e fornisce un'API coerente per addestramento, convalida, e predizione. È interessante notare che il moderno ultralytics package può anche caricare ed eseguire 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 transformer come RT-DETR, sia YOLOv5 che YOLOv8 sono eccezionalmente efficienti in termini di memoria. I transformer spesso richiedono una notevole quantità di memoria CUDA e tempi di addestramento più lunghi per convergere. Al contrario, i modelli Ultralytics YOLO 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 una gestione fluida dei dataset, la visualizzazione dei modelli e l'implementazione con un clic su dispositivi reali.
Casi d'uso ideali
La selezione del modello giusto spesso si riduce all'ambiente specifico in cui il modello verrà implementato.
Quando scegliere YOLOv5
YOLOv5 rimane una scelta eccellente per:
- Sistemi legacy: Aggiornamento delle pipeline esistenti in cui l'infrastruttura è già costruita attorno all'architettura YOLOv5.
- Hardware Edge Specifico: Alcuni driver NPU (Neural Processing Unit) più datati hanno un supporto altamente ottimizzato specificamente per l'architettura YOLOv5.
- Latenza ultra-bassa: In scenari in cui ogni millisecondo di inferenza della CPU conta, la testata accoppiata più semplice di YOLOv5n può talvolta offrire un vantaggio di velocità grezza rispetto a v8n.
Quando scegliere YOLOv8
YOLOv8 è la scelta consigliata per:
- Nuovi sviluppi: Iniziando un progetto oggi, YOLOv8 (o il più recente YOLO11) fornisce un percorso migliore a prova di futuro.
- Task complessi: Applicazioni che richiedono la segmentation di istanza (ad esempio, l'analisi di cellule mediche) o il detect di punti chiave (ad esempio, l'analisi sportiva).
- Elevati Requisiti di Accuratezza: Scenari in cui perdere una detect è critico, come nei sistemi di sicurezza dei veicoli autonomi o nella sorveglianza di sicurezza.
Conclusione
Sia YOLOv5 che YOLOv8 testimoniano l'impegno di Ultralytics per l'innovazione open-source. YOLOv5 rimane una leggenda nel campo: affidabile, veloce e ampiamente supportato. Tuttavia, YOLOv8 migliora questa base con progressi architetturali che offrono una maggiore accuratezza e una maggiore versatilità senza sacrificare la facilità d'uso che gli sviluppatori si aspettano.
Per la maggior parte dei nuovi progetti, consigliamo di sfruttare i progressi di YOLOv8 o di passare all'ultima versione di YOLO11, che perfeziona ulteriormente questi concetti per un equilibrio ottimale tra velocità e precisione.
Esplora altri modelli
Se sei interessato ad esplorare le ultime novità nella tecnologia di detection, considera di dare un'occhiata a:
- YOLO11: L'ultima evoluzione, che offre un'elaborazione più rapida e un'estrazione di feature migliorata rispetto a YOLOv8.
- RT-DETR: Un modello basato su transformer che offre un'elevata accuratezza per applicazioni in tempo reale, ideale quando la memoria della GPU è meno limitata.