YOLOv7 e YOLOv5#
Nelle moderne pipeline di visione artificiale, scegliere l’architettura di rilevamento degli oggetti giusta è fondamentale per bilanciare accuratezza, velocità di inferenza e utilizzo delle risorse. Questo confronto completo esamina due modelli di grande rilievo nel campo della visione artificiale: YOLOv7 e Ultralytics YOLOv5.
Analizzandone le differenze architetturali, le metriche di prestazione e gli scenari di distribuzione ideali, vogliamo aiutare sviluppatori e ricercatori a scegliere il modello migliore per le proprie esigenze specifiche.
Contesto e origini dei modelli#
Comprendere le origini di questi modelli aiuta a inquadrare le loro filosofie di progettazione e i casi d’uso a cui sono destinati.
YOLOv5#
Rilasciato da Glenn Jocher e dal team di Ultralytics il 26 giugno 2020, YOLOv5 ha rivoluzionato il settore offrendo un’implementazione nativa in PyTorch, che privilegiava la facilità d’uso senza sacrificare le prestazioni. È diventato rapidamente uno standard di settore grazie al suo ecosistema estremamente snello e alle dinamiche di addestramento affidabili. Puoi esplorare il codice sorgente nel repository GitHub di YOLOv5 oppure accedere direttamente al modello tramite la Ultralytics Platform.
YOLOv7#
Presentato il 6 luglio 2022 da Chien-Yao Wang, Alexey Bochkovskiy e Hong-Yuan Mark Liao dell’Institute of Information Science, Academia Sinica, Taiwan, YOLOv7 si è concentrato soprattutto su innovazioni architetturali come le reti di aggregazione dei livelli estese ed efficienti (E-ELAN) e un "bag-of-freebies" addestrabile, per spingere al massimo le prestazioni all’avanguardia in termini di accuratezza. Puoi trovare maggiori dettagli nel paper ufficiale su Arxiv e nel repository GitHub di YOLOv7. Per un’integrazione senza problemi, consulta la documentazione di Ultralytics YOLOv7.
YOLOv5 è completamente integrato nel pacchetto Python di Ultralytics. YOLOv7 non è supportato nativamente per l’addestramento o l’inferenza in PyTorch, ma i checkpoint di YOLOv7 esportati dal repository upstream in ONNX o TensorRT possono essere eseguiti con Ultralytics, come descritto nella documentazione di YOLOv7.
Innovazioni architetturali#
Progettazione di Ultralytics YOLOv5#
YOLOv5 utilizza un backbone CSPDarknet53 modificato abbinato a un collo PANet (Path Aggregation Network). Questa architettura è altamente ottimizzata per la rapida estrazione delle caratteristiche e l’efficienza della memoria. A differenza delle architetture meno recenti o dei pesanti modelli Transformer, YOLOv5 richiede molta meno memoria CUDA durante l’addestramento, consentendo di usare batch size maggiori sulle GPU standard disponibili in commercio. Inoltre, il framework Ultralytics supporta nativamente un’ampia varietà di attività oltre alle normali bounding box, tra cui la segmentazione delle immagini e la classificazione delle immagini.
Progettazione di YOLOv7#
YOLOv7 ha introdotto diverse riparametrizzazioni strutturali e l’architettura E-ELAN, che consente alla rete di apprendere caratteristiche più diversificate senza distruggere il percorso originale del gradiente. Implementa anche una head ausiliaria per la supervisione intermedia durante l’addestramento. Sebbene questi progressi permettano di ottenere un’elevata precisione media (mAP), spesso introducono strutture di tensori complesse che possono rendere leggermente più difficile l’esportazione in formati per dispositivi edge come ONNX o TensorRT, rispetto alle esportazioni semplificate native dei modelli Ultralytics.
Analisi delle prestazioni#
Nel confrontare questi modelli, gli sviluppatori devono bilanciare mAPval, velocità di inferenza e complessità computazionale (FLOPs). La tabella seguente mostra le prestazioni di entrambe le architetture valutate sul dataset COCO.
| Modello | dimensione (pixel) | mAPval 50-95 | Velocità CPU ONNX (ms) | Velocità T4 TensorRT10 (ms) | parametri (M) | FLOPs (B) |
|---|---|---|---|---|---|---|
| YOLOv7l | 640 | 51.4 | - | 6.84 | 36.9 | 104.7 |
| YOLOv7x | 640 | 53.1 | - | 11.57 | 71.3 | 189.9 |
| YOLOv5n | 640 | 28.0 | - | 1.12 | 1.9 | 4.5 |
| YOLOv5s | 640 | 37.4 | - | 1.92 | 7.2 | 16.5 |
| YOLOv5m | 640 | 45.4 | - | 4.03 | 21.2 | 49.0 |
| YOLOv5l | 640 | 49.0 | - | 6.61 | 46.5 | 109.1 |
| YOLOv5x | 640 | 50.7 | - | 11.89 | 86.7 | 205.7 |
Punti chiave#
- Limite massimo di accuratezza: YOLOv7x raggiunge l’accuratezza complessiva più elevata, con un notevole valore di 53.1 mAPval, risultando altamente competitivo negli scenari in cui l’obiettivo principale è massimizzare le prestazioni di rilevamento.
- Velocità ed efficienza: Ultralytics YOLOv5n è un prodigio di efficienza, con una latenza di inferenza rapidissima (1.12 ms su T4 TensorRT) e un ingombro di memoria ridotto, con appena 1.9M di parametri. È una scelta senza pari per le distribuzioni edge con forti vincoli.
- Equilibrio delle prestazioni: La serie YOLOv5 offre una gamma di modelli ben graduata. YOLOv5l rappresenta un ottimo compromesso: ha un’accuratezza leggermente inferiore a YOLOv7l, ma offre una pipeline di distribuzione estremamente matura.
I vantaggi dell’ecosistema Ultralytics#
L’architettura di un modello è solo metà dell’equazione: è l’ecosistema che la circonda a determinarne la reale utilità. È qui che i modelli Ultralytics si distinguono davvero.
Facilità d’uso: Ultralytics offre un’API Python unificata e molto intuitiva. Puoi addestrare, convalidare e distribuire modelli con pochissimo codice ripetitivo, grazie a un’ampia documentazione ufficiale. Ecosistema sottoposto a manutenzione attiva: Lo sviluppo continuo assicura aggiornamenti costanti, correzioni di bug e un’integrazione senza problemi con gli strumenti di monitoraggio moderni come Weights & Biases. Efficienza dell’addestramento: Grazie ai caricatori di dati ottimizzati e alla memorizzazione intelligente nella cache, YOLOv5 riduce drasticamente i tempi di addestramento. Inoltre, i pesi preaddestrati pronti all’uso accelerano il transfer learning in diversi ambiti.
Esempio di codice: addestramento semplificato#
Con il pacchetto Ultralytics, avviare un ciclo di addestramento è praticamente identico, indipendentemente dall’architettura scelta.
from ultralytics import YOLO
# Carica un modello YOLOv5 preaddestrato
model = YOLO("yolov5su.pt") # YOLOv5u: pesi YOLOv5 anchor-free per il pacchetto ultralytics
# Addestra il modello sul dataset di esempio COCO8
results = model.train(data="coco8.yaml", epochs=100, imgsz=640)
# Esporta il modello addestrato in formato ONNX per il deployment
success = model.export(format="onnx")Casi d'uso ideali#
Quando scegliere YOLOv7#
- Benchmark accademici: Ideale per i ricercatori che devono confrontare nuove tecniche con una baseline del 2022 ben documentata.
- Elaborazione cloud con GPU di fascia alta: Per le distribuzioni su potenti server, quando ottenere il valore mAP più alto possibile nelle scene affollate conta più della semplicità di esportazione.
Quando scegliere YOLOv5#
- Distribuzioni in produzione: Ideale per le applicazioni commerciali che richiedono elevata stabilità, semplici opzioni di distribuzione dei modelli e ampia compatibilità multipiattaforma.
- Dispositivi edge: Le varianti più piccole (YOLOv5n e YOLOv5s) funzionano molto bene su telefoni cellulari e sistemi embedded.
- Esigenze multi-task: Se il tuo progetto deve passare dal semplice rilevamento alla segmentazione delle istanze o alla classificazione utilizzando un framework unificato.
Cerchi versioni più recenti? Scopri Ultralytics YOLOv8 o Ultralytics YOLO11 per approfondire i progressi nel rilevamento anchor-free e nelle capacità di apprendimento multi-task.
La nuova generazione: Ultralytics YOLO26#
YOLOv5 e YOLOv7 occupano un posto importante nella storia dell’IA per la visione, ma il settore è in continua evoluzione. Rilasciato a gennaio 2026, Ultralytics YOLO26 rappresenta l’avanguardia assoluta della tecnologia di rilevamento degli oggetti e supera le generazioni precedenti in tutte le metriche.
YOLO26 introduce diverse funzionalità che cambiano radicalmente il paradigma:
- Architettura end-to-end senza NMS: Basandosi sui concetti introdotti nelle versioni precedenti, YOLO26 offre una head nativa end-to-end (
nms=False) che elimina la post-elaborazione con soppressione dei non massimi (NMS), riducendo i colli di bottiglia della latenza e semplificando notevolmente la logica di distribuzione. - Ottimizzatore MuSGD: Ispirato a Kimi K2 di Moonshot AI, questo innovativo ottimizzatore combina la stabilità del SGD standard con la spinta acceleratrice di Muon, portando direttamente nella visione artificiale le innovazioni nell’addestramento degli LLM.
- Maggiore velocità su CPU: Rimuovendo strategicamente la Distribution Focal Loss (DFL), YOLO26 raggiunge un’inferenza su CPU fino al 43% più veloce, diventando il campione indiscusso per le distribuzioni su dispositivi edge e IoT a basso consumo.
- ProgLoss + STAL: Queste funzioni di loss avanzate migliorano notevolmente il riconoscimento degli oggetti piccoli, fondamentale per le immagini aeree e la robotica di precisione.
- Miglioramenti specifici per attività: Include la loss di segmentazione semantica per generare maschere, la stima della log-verosimiglianza residua (RLE) per la stima della posa e una loss angolare specializzata per risolvere i complessi problemi relativi ai limiti delle bounding box orientate (OBB).
Conclusione#
YOLOv5 e YOLOv7 offrono entrambi soluzioni solide per il rilevamento degli oggetti in tempo reale. YOLOv7 rimane un’ottima scelta per la massima accuratezza su hardware con elevate capacità di calcolo, mentre YOLOv5 si distingue come lo strumento più adatto agli sviluppatori, offrendo un equilibrio eccezionale tra velocità, efficienza e un ecosistema di livello mondiale.
Tuttavia, per gli sviluppatori che vogliono rendere le proprie pipeline pronte per il futuro e ottenere la combinazione ideale di velocità, semplicità e accuratezza all’avanguardia, consigliamo vivamente di passare a Ultralytics YOLO26. Riunisce la leggendaria facilità d’uso della piattaforma Ultralytics con innovazioni architetturali rivoluzionarie.