YOLOv10 vs. YOLOv8: un confronto tecnico per il rilevamento di oggetti in tempo reale
L'evoluzione della famiglia YOLO (You Only Look Once) ha costantemente spinto i confini della computer vision, offrendo agli sviluppatori strumenti più veloci e precisi per il rilevamento degli oggetti. Quando si sceglie tra YOLOv10 e YOLOv8è fondamentale capire le sfumature in termini di architettura, efficienza e supporto dell'ecosistema. Mentre YOLOv10 introduce nuove modifiche architettoniche per l'efficienza, YOLOv8 rimane uno standard robusto e versatile, noto per la sua facilità d'uso e per il suo set completo di funzionalità.
Questa guida fornisce un confronto tecnico dettagliato per aiutarvi a selezionare il modello giusto per i vostri progetti di apprendimento automatico.
Analisi delle prestazioni
Le metriche delle prestazioni sul set di datiCOCO illustrano le diverse filosofie di progettazione alla base di questi modelli. YOLOv10 si concentra molto sulla riduzione del numero di parametri e delle operazioni in virgola mobile (FLOP), ottenendo spesso una maggiore mAP (mean Average Precision) per una data dimensione del modello. Tuttavia, YOLOv8 mantiene velocità di inferenza altamente competitive, in particolare sulle CPU e quando viene esportato in formati ottimizzati come TensorRTbilanciando la velocità grezza con le capacità pratiche di implementazione.
| Modello | dimensione (pixel) | mAPval 50-95 | Velocità CPU ONNX (ms) | Velocità T4 TensorRT10 (ms) | parametri (M) | FLOPs (B) |
|---|---|---|---|---|---|---|
| YOLOv10n | 640 | 39.5 | - | 1.56 | 2.3 | 6.7 |
| YOLOv10s | 640 | 46.7 | - | 2.66 | 7.2 | 21.6 |
| YOLOv10m | 640 | 51.3 | - | 5.48 | 15.4 | 59.1 |
| YOLOv10b | 640 | 52.7 | - | 6.54 | 24.4 | 92.0 |
| YOLOv10l | 640 | 53.3 | - | 8.33 | 29.5 | 120.3 |
| YOLOv10x | 640 | 54.4 | - | 12.2 | 56.9 | 160.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 |
YOLOv10: efficienza attraverso l'innovazione architettonica
Autori: Ao Wang, Hui Chen, Lihao Liu, et al.
Organizzazione:Tsinghua University
Data: 2024-05-23
Arxiv:YOLOv10: Real-Time End-to-End Object Detection
GitHub:THU-MIG/yolov10
YOLOv10 è stato sviluppato dai ricercatori della Tsinghua University con un obiettivo primario: eliminare la dipendenza dalla soppressione non massimaNMS) durante la post-elaborazione. L NMS può essere un collo di bottiglia nelle applicazioni critiche per la latenza. YOLOv10 introduce una strategia di assegnazione duale coerente durante l'addestramento, consentendo al modello di prevedere un singolo box migliore per ogni oggetto, rendendolo di fatto un rilevatore end-to-end.
Punti di forza di YOLOv10
- InferenzaNMS: Eliminando la fase NMS , YOLOv10 riduce l'overhead computazionale durante la fase di post-elaborazione, che può ridurre la latenza in specifici scenari edge.
- Efficienza dei parametri: Il design olistico del modello riduce il numero di parametri e di FLOP in modo significativo rispetto alle generazioni precedenti, rendendolo interessante per i dispositivi con memoria estremamente limitata.
- Alta precisione: raggiunge punteggi mAP all'avanguardia per le sue dimensioni, dimostrando l'efficacia delle sue ottimizzazioni architettoniche.
Punti deboli
- Specializzazione del compito: YOLOv10 è stato progettato principalmente per il rilevamento di oggetti. Manca il supporto nativo per altre attività di computer vision, come la segmentazione delle istanze o la stima della posa.
- Maturità dell'ecosistema: Essendo una release accademica più recente, ha meno integrazioni di terze parti e risorse della comunità rispetto all'ecosistema consolidato di Ultralytics .
Ultralytics YOLOv8: lo standard versatile del settore
Autori: Glenn Jocher, Ayush Chaurasia e Jing Qiu
Organizzazione:Ultralytics
Data: 2023-01-10
Docs:Ultralytics YOLOv8 Documentation
GitHub:ultralytics
Lanciato da Ultralytics, YOLOv8 rappresenta il culmine di anni di ricerca sull'IA pratica e facile da usare. È stato progettato non solo per ottenere prestazioni elevate, ma anche per offrire un'esperienza eccezionale agli sviluppatori. YOLOv8 utilizza un meccanismo di rilevamento privo di ancore e un ricco flusso di gradienti per garantire una formazione solida. La sua caratteristica principale è il supporto nativo per un'ampia gamma di compiti: rilevamento, segmentazione, classificazione, stima della posa e OBB, il tutto in un unico framework unificato.
Perché YOLOv8 è consigliato
- Facilità d'uso: Ultralytics YOLOv8 è rinomato per la sua semplicità d'uso. Python e le interfacce CLI . Gli sviluppatori possono addestrare, validare e distribuire i modelli con poche righe di codice.
- Ecosistema ben curato: Far parte dell'ecosistema Ultralytics significa avere accesso ad aggiornamenti frequenti, a un'ampia comunità e a una perfetta integrazione con strumenti come Ultralytics HUB per una gestione agevole dei modelli.
- Equilibrio delle prestazioni: Raggiunge un equilibrio ideale tra velocità e precisione. Il modello è altamente ottimizzato per diversi backend hardware, tra cui CPU, GPU e Edge TPU.
- Efficienza della formazione: YOLOv8 offre processi di formazione efficienti con requisiti di memoria inferiori rispetto a molte alternative basate su trasformatori, risparmiando sui costi di calcolo.
- Versatilità: A differenza dei modelli limitati ai riquadri di delimitazione, YOLOv8 può gestire progetti complessi che richiedono maschere di segmentazione o punti chiave senza dover cambiare framework.
Efficienza della memoria
I modelli Ultralytics come YOLOv8 sono progettati per essere efficienti dal punto di vista della memoria. Questo riduce significativamente la barriera d'ingresso per l'addestramento di modelli personalizzati, in quanto richiedono meno memoria CUDA rispetto ai modelli trasformatori ingombranti come RT-DETRconsentendo l'addestramento su GPU di fascia consumer.
Analisi comparativa: Architettura e casi d'uso
Differenze architettoniche
La differenza fondamentale sta nelle strategie di post-elaborazione e di assegnazione. YOLOv10 impiega un'architettura a due teste in cui una testa utilizza l'assegnazione uno-a-molti (come gli YOLO tradizionali) per i ricchi segnali di supervisione durante l'addestramento, mentre l'altra utilizza l'assegnazione uno-a-uno per l'inferenza, eliminando la necessità di NMS.
YOLOv8utilizza invece un assegnatore allineato al compito e una struttura di testa accoppiata senza ancore. Questo design semplifica la testa di rilevamento e migliora la generalizzazione. Pur richiedendo NMS, il funzionamento è altamente ottimizzato in formati di esportazione come ONNX e TensorRT, rendendo spesso trascurabile la differenza di latenza pratica in pipeline di distribuzione robuste.
Casi d'uso ideali
La scelta tra le due soluzioni dipende spesso dai vincoli specifici del progetto:
Edge AI ad alte prestazioni (YOLOv10): Se l'applicazione viene eseguita su hardware con risorse molto limitate, dove ogni megabyte di memoria conta, o se l'operazione NMS crea un collo di bottiglia specifico sul chip di destinazione, YOLOv10 è un candidato eccellente. Tra gli esempi vi sono i sensori incorporati nell'agricoltura o i droni leggeri.
IA per usi generali e multi-task (YOLOv8): Per la maggior parte delle applicazioni commerciali e di ricerca, YOLOv8 è la scelta migliore. La sua capacità di eseguire la segmentazione (ad esempio, imaging medico di precisione) e la stima della posa (ad esempio, analisi sportiva) lo rende incredibilmente versatile. Inoltre, l'ampia documentazione e il supporto garantiscono agli sviluppatori una rapida risoluzione dei problemi e un'implementazione più veloce.
Implementazione del codice
Uno dei principali vantaggi del framework Ultralytics è l'API unificata. Sia che si utilizzi YOLOv8 sia che si esplorino modelli più recenti, il flusso di lavoro rimane coerente e intuitivo.
Ecco come è possibile avviare facilmente l'addestramento di un modello YOLOv8 utilizzando Python:
from ultralytics import YOLO
# Load a pre-trained YOLOv8 model
model = YOLO("yolov8n.pt")
# Train the model on your custom dataset
# The system automatically handles data downloading and processing
results = model.train(data="coco8.yaml", epochs=100, imgsz=640)
# Run inference on an image
results = model("path/to/image.jpg")
Per YOLOv10, anche il pacchetto Ultralytics facilita l'accesso, consentendo ai ricercatori di sperimentare l'architettura in un ambiente familiare:
from ultralytics import YOLO
# Load a pre-trained YOLOv10 model
model = YOLO("yolov10n.pt")
# Train the model using the same simple API
results = model.train(data="coco8.yaml", epochs=100, imgsz=640)
Conclusione
Sia YOLOv10 che YOLOv8 sono pietre miliari della computer vision. YOLOv10 si spinge oltre l'efficienza architettonica, lasciando intravedere un futuro NMS per applicazioni specializzate a bassa latenza.
Tuttavia, Ultralytics YOLOv8 rimane il modello consigliato a sviluppatori e organizzazioni. Il suo robusto ecosistema, la sua comprovata affidabilità e le sue capacità multi-task forniscono una soluzione completa che va oltre il semplice rilevamento. Con Ultralytics YOLOv8, non si ottiene solo un modello, ma un kit completo di strumenti per costruire, addestrare e distribuire in modo efficiente soluzioni di intelligenza artificiale di livello mondiale.
Per chi vuole essere sempre all'avanguardia, non dimenticate di dare un'occhiata anche a YOLO11l'ultima iterazione di Ultralytics , che offre prestazioni e incrementi di efficienza ancora maggiori rispetto a YOLOv8.
Letture aggiuntive
- Esplora l'ultimo modello SOTA: YOLO11
- Capire le metriche: Metriche delle prestazioniYOLO
- Distribuire ovunque: Modalità di esportazione dei modelli
- Vedi altri confronti: YOLOv5 vs. YOLOv8