YOLOv5 vs YOLOv10: Evoluzione del rilevamento oggetti in tempo reale
Il panorama dell'object detection è stato significativamente plasmato dalla serie You Only Look Once (YOLO). Fin dal suo inizio, YOLO ha bilanciato velocità e accuratezza, diventando l'architettura di riferimento per gli sviluppatori di computer vision. Questo confronto esplora due momenti cruciali in questa storia: Ultralytics YOLOv5, lo standard industriale per affidabilità e versatilità, e YOLOv10, una recente release accademica della Tsinghua University che introduce la detection senza NMS per una maggiore efficienza.
Panoramica del modello
Ultralytics YOLOv5
Rilasciato nel giugno 2020 da Glenn Jocher e Ultralytics, YOLOv5 ha cambiato radicalmente il modo in cui i modelli di IA venivano implementati. Ha dato priorità all'usabilità, all'esportazione in diversi formati (CoreML, ONNX, TFLite) e a prestazioni robuste su hardware edge. Rimane uno dei modelli di visione più popolari e ampiamente implementati a livello globale grazie alla sua filosofia "it just works" e all'ampio supporto della comunità.
Autore principale: Glenn Jocher
Organizzazione:Ultralytics
Data di rilascio: 2020-06-26
GitHub:ultralytics/yolov5
YOLOv10
Rilasciato nel maggio 2024 dai ricercatori della Tsinghua University, YOLOv10 mira a eliminare i colli di bottiglia di post-elaborazione presenti nelle versioni precedenti. Introducendo assegnazioni duali coerenti per l'addestramento senza NMS, ottimizza la pipeline di inferenza, riducendo la latenza e il sovraccarico computazionale.
Autori principali: Ao Wang, Hui Chen, et al.
Organizzazione: Tsinghua University
Data di rilascio: 2024-05-23
arXiv:YOLOv10: Real-Time End-to-End Object Detection
Ultima innovazione
Durante il confronto tra queste solide architetture, gli sviluppatori che avviano nuovi progetti dovrebbero anche valutare YOLO11. Si basa sui punti di forza di entrambi, offrendo un'accuratezza all'avanguardia, un'estrazione di feature migliorata e il supporto nativo per diversi task come la stima della posa e l'object detection orientato.
Architettura e innovazione tecnica
Le differenze architetturali tra YOLOv5 e YOLOv10 evidenziano il passaggio dall'affidabilità consolidata basata su anchor all'efficienza all'avanguardia senza anchor.
YOLOv5: Lo standard basato su ancore
YOLOv5 impiega un backbone CSPNet (Cross Stage Partial Network) che bilancia la profondità e la larghezza del modello per ridurre al minimo i FLOPS mantenendo la precisione. Si basa su anchor box, forme predefinite che aiutano il modello a prevedere le dimensioni degli oggetti.
- Backbone: CSP-Darknet53 focalizzata sul flusso del gradiente.
- Head: Head accoppiato con previsione basata su ancore.
- Post-elaborazione: Richiede la Soppressione Non Massima (NMS) per filtrare i detect duplicati.
YOLOv10: Efficienza senza NMS
YOLOv10 introduce un design olistico guidato dall'efficienza-accuratezza. La sua caratteristica distintiva è la strategia di addestramento senza NMS che utilizza assegnazioni duali coerenti. Ciò consente al modello di prevedere esattamente una bounding box per oggetto durante l'inferenza, rimuovendo completamente il passaggio NMS che induce latenza.
- Backbone: Migliorata con convoluzioni a kernel largo e auto-attenzione parziale.
- Head: Head unificato che combina assegnazioni di etichette uno-a-molti e uno-a-uno.
- Ottimizzazione: Design a blocchi guidato dal ranking per ridurre la ridondanza.
Analisi delle prestazioni
La tabella seguente confronta le metriche di performance sul dataset COCO. Mentre YOLOv5 rimane competitivo, in particolare in termini di velocità della CPU per la sua variante Nano, YOLOv10 dimostra un'efficienza superiore in termini di parametri e accuratezza (mAP).
| 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 |
| 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 |
Ripartizione delle metriche
- Precisione (mAP): YOLOv10 mostra un salto significativo nella precisione media. Ad esempio, YOLOv10n raggiunge 39,5 mAP rispetto ai 28,0 mAP di YOLOv5n, rendendolo molto più capace di rilevare oggetti difficili.
- Efficienza: YOLOv10 raggiunge questi risultati con meno parametri (2,3 milioni contro 2,6 milioni per il modello Nano), evidenziando i vantaggi del suo design architetturale ottimizzato.
- Velocità di inferenza: YOLOv5n rimane incredibilmente veloce sulle CPU (73.6ms), il che è fondamentale per i dispositivi edge non GPU come le vecchie unità Raspberry Pi. Tuttavia, su hardware GPU (TensorRT), YOLOv10 mantiene velocità competitive nonostante la sua maggiore accuratezza.
Punti di forza e debolezze
Ultralytics YOLOv5
- Ecosistema senza pari: Supportato da anni di sviluppo, ha una delle più grandi community attive. I problemi vengono risolti rapidamente e le risorse sono abbondanti.
- Versatilità: Oltre alla detection, supporta nativamente la image segmentation e la classification.
- Facilità d'uso: L'API è progettata per la semplicità. Il caricamento di un modello da PyTorch Hub richiede una sola riga di codice.
- Implementazione: L'ampio supporto per i formati di esportazione garantisce che funzioni su qualsiasi dispositivo, dai telefoni cellulari ai server cloud.
YOLOv10
- Bassa latenza: La rimozione di NMS riduce significativamente il tempo di post-elaborazione, il che è fondamentale per le applicazioni in tempo reale dove ogni millisecondo conta.
- Efficienza dei parametri: Offre una maggiore accuratezza per parametro, rendendolo un ottimo candidato per dispositivi con spazio di archiviazione o memoria limitati.
- Focus: Pur essendo potente, è principalmente specializzato per il rilevamento di oggetti, privo dell'ampiezza multi-task nativa (come la stima della posa) presente nella serie Ultralytics YOLO (v8, 11).
Requisiti di Memoria
Entrambi i modelli sono progettati per essere leggeri. A differenza dei grandi modelli transformer che consumano enormi quantità di memoria CUDA durante l'addestramento, i modelli Ultralytics YOLO sono ottimizzati per l'efficienza della memoria, consentendo loro di essere addestrati su GPU di livello consumer con VRAM modesta.
Casi d'uso reali
Quando scegliere YOLOv5
YOLOv5 è la scelta pragmatica per i sistemi di produzione che richiedono stabilità e un'ampia compatibilità con le piattaforme.
- Automazione industriale: Ampiamente utilizzato nella produzione per il controllo qualità dove l'affidabilità è fondamentale.
- App Mobile: La sua comprovata compatibilità con iOS (CoreML) e Android (TFLite) lo rende ideale per l'integrazione di app sul dispositivo.
- Prototipazione Rapida: L'enorme volume di tutorial e documentazione consente agli sviluppatori di passare dal concetto al POC in poche ore.
Quando scegliere YOLOv10
YOLOv10 è eccellente per gli scenari che richiedono il più alto rapporto accuratezza/efficienza.
- Robotica ad alta velocità: L'architettura senza NMS riduce la varianza della latenza, che è fondamentale per i cicli di controllo dei robot autonomi.
- Ricerca Accademica: I ricercatori che desiderano effettuare un benchmark rispetto ai più recenti paradigmi di detect end-to-end troveranno l'architettura di YOLOv10 innovativa ed efficace.
- Sorveglianza remota: Un alto mAP con un basso numero di parametri si adatta ai sistemi di sicurezza che operano su larghezza di banda o spazio di archiviazione limitati.
Addestramento e facilità d'uso
Ultralytics dà priorità a un'esperienza di sviluppo semplificata. Sia che si utilizzi il classico repository YOLOv5 o il moderno ultralytics package per i modelli più recenti, il processo è intuitivo.
Utilizzo di YOLOv5
YOLOv5 è noto per la sua facilità di caricamento tramite PyTorch Hub per l'inferenza istantanea.
import torch
# Load YOLOv5s from PyTorch Hub
model = torch.hub.load("ultralytics/yolov5", "yolov5s")
# Perform inference on an image
img = "https://ultralytics.com/images/zidane.jpg"
results = model(img)
# Display results
results.show()
Utilizzo di YOLOv10
YOLOv10 può essere integrato usando il ultralytics Pacchetto python, che beneficia della stessa potente API.
from ultralytics import YOLO
# Load a pre-trained YOLOv10n model
model = YOLO("yolov10n.pt")
# Train the model on COCO data
model.train(data="coco8.yaml", epochs=100, imgsz=640)
# Run inference
model.predict("https://ultralytics.com/images/bus.jpg", save=True)
Conclusione
Entrambe le architetture rappresentano pietre miliari nella computer vision. YOLOv5 rimane l'affidabile cavallo di battaglia del settore: robusto, versatile e supportato da un ecosistema massiccio. È la scelta sicura e "di riferimento" per diverse esigenze di implementazione. YOLOv10 spinge i confini dell'efficienza con il suo design NMS-free, offrendo un aggiornamento interessante per gli utenti specificamente focalizzati sulle attività di detect che necessitano di massimizzare la precisione su hardware con risorse limitate.
Per gli sviluppatori che cercano il meglio di entrambi i mondi—combinando la maturità dell'ecosistema di Ultralytics con accuratezza e velocità all'avanguardia—consigliamo di esplorare YOLO11. Unifica questi progressi in un unico framework potente pronto per qualsiasi attività di visione.
Per esplorare ulteriori confronti, dai un'occhiata a YOLOv5 vs. YOLOv8 o YOLOv10 vs. YOLO11.