YOLOv7 vs YOLOv5#
Quando si realizzano pipeline moderne di computer vision, scegliere la giusta architettura per il rilevamento degli oggetti è fondamentale per bilanciare accuratezza, velocità di inferenza e utilizzo delle risorse. Questo confronto completo esamina due modelli di grande rilievo nel campo della computer vision: YOLOv7 e Ultralytics YOLOv5.
Analizzando le differenze architetturali, le metriche di prestazione e gli scenari di deployment ideali, puntiamo ad aiutare sviluppatori e ricercatori a scegliere il modello migliore per i propri requisiti specifici.
Contesto e origini dei modelli#
Comprendere le origini di questi modelli fornisce il contesto per le loro filosofie progettuali e i casi d'uso target.
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 semplicità d'uso senza sacrificare le prestazioni. È diventato rapidamente uno standard del settore grazie al suo ecosistema estremamente snello e a 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 da Chien-Yao Wang, Alexey Bochkovskiy e Hong-Yuan Mark Liao dell'Institute of Information Science, Academia Sinica, Taiwan, il 6 luglio 2022, YOLOv7 si è concentrato molto su innovazioni architetturali come Extended Efficient Layer Aggregation Networks (E-ELAN) e una "bag-of-freebies" addestrabile per spingere lo stato dell'arte della precisione. I dettagli sono reperibili nel loro official Arxiv paper e nel YOLOv7 GitHub repository. Per un'integrazione senza interruzioni, dai un'occhiata alla Ultralytics YOLOv7 documentation.
Entrambi questi modelli sono completamente integrati nel pacchetto Python di Ultralytics, consentendoti di passare dall'uno all'altro semplicemente modificando la stringa del modello nel codice!
Innovazioni architetturali#
Progettazione di Ultralytics YOLOv5#
YOLOv5 utilizza un backbone CSPDarknet53 modificato abbinato a un collo di rete Path Aggregation Network (PANet). Questa progettazione è altamente ottimizzata per una rapida estrazione delle caratteristiche e per 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 batch size più grandi sulle GPU standard per uso consumer. Inoltre, il framework Ultralytics supporta nativamente un'ampia varietà di attività oltre ai normali riquadri delimitatori, 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 inoltre una testata ausiliaria per la supervisione intermedia durante l'addestramento. Sebbene questi progressi producano un'elevata precisione media (mAP), spesso introducono strutture tensoriali complesse che possono rendere leggermente più difficile l'esportazione in formati edge come ONNX o TensorRT rispetto alle esportazioni snelle 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 | 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 |
Punti chiave#
- Limite massimo di accuratezza: YOLOv7x raggiunge l'accuratezza complessiva più elevata, con un notevole 53.1 mAPval, risultando altamente competitivo negli scenari in cui massimizzare le prestazioni di rilevamento è l'obiettivo principale.
- Velocità ed efficienza: Ultralytics YOLOv5n è un capolavoro di efficienza: offre una latenza di inferenza rapidissima (1.12 ms su T4 TensorRT) con un ingombro di memoria ridotto e appena 2.6M parametri. Questo lo rende una scelta senza pari per i deployment edge con risorse fortemente limitate.
- Equilibrio delle prestazioni: La serie YOLOv5 offre una gamma eccezionale di modelli. YOLOv5l rappresenta un ottimo compromesso: ha un'accuratezza leggermente inferiore a YOLOv7l, ma offre una pipeline di deployment estremamente matura.
Il vantaggio dell'ecosistema Ultralytics#
L'architettura di un modello è solo metà dell'equazione; è l'ecosistema che la circonda a determinarne la reale validità nel mondo reale. È qui che i modelli Ultralytics brillano davvero.
Semplicità d'uso: Ultralytics offre un'API Python unificata e altamente intuitiva. Puoi addestrare, validare e distribuire modelli con una quantità minima di codice boilerplate, grazie a un'ampia documentazione ufficiale. Ecosistema ben mantenuto: Lo sviluppo attivo garantisce aggiornamenti costanti, correzioni di bug e un'integrazione senza complicazioni con strumenti moderni di tracking come Weights & Biases. Efficienza dell'addestramento: Utilizzando data loader ottimizzati e il caching intelligente, YOLOv5 riduce drasticamente i tempi di addestramento. Inoltre, i pesi preaddestrati pronti all'uso accelerano il transfer learning in vari domini.
Esempio di codice: addestramento semplificato#
Con il pacchetto Ultralytics, avviare un'esecuzione di addestramento è praticamente identico, indipendentemente dall'architettura scelta.
from ultralytics import YOLO
# Load a pre-trained YOLOv5 model (can easily swap to "yolov7.pt")
model = YOLO("yolov5s.pt")
# Train the model on the COCO8 example dataset
results = model.train(data="coco8.yaml", epochs=100, imgsz=640)
# Export the trained model to ONNX format for deployment
success = model.export(format="onnx")Casi d'uso ideali#
Quando scegliere YOLOv7#
- Benchmark accademico: Perfetto per i ricercatori che devono confrontare tecniche innovative con una baseline del 2022 ben documentata.
- Elaborazione cloud su GPU di fascia alta: Ideale per il deployment su hardware server potente, quando ottenere il mAP assolutamente più elevato in scene dense è più importante della semplicità di esportazione.
Quando scegliere YOLOv5#
- Deployment in produzione: Ideale per applicazioni commerciali che richiedono elevata stabilità, semplici opzioni di deployment del modello e ampia compatibilità multipiattaforma.
- Dispositivi edge: Le varianti più piccole (YOLOv5n e YOLOv5s) funzionano eccezionalmente bene su telefoni cellulari e sistemi embedded.
- Requisiti multitask: Se il tuo progetto deve evolvere dal semplice rilevamento alla stima della posa o alla segmentazione utilizzando un framework unificato.
Cerchi iterazioni più recenti? Valuta Ultralytics YOLOv8 o Ultralytics YOLO11 per ulteriori progressi nel rilevamento anchor-free e nelle capacità di apprendimento multitask.
La prossima generazione: Ultralytics YOLO26#
Sebbene YOLOv5 e YOLOv7 occupino un posto importante nella storia dell'AI per la computer vision, il panorama è in continua evoluzione. Rilasciato a gennaio 2026, Ultralytics YOLO26 rappresenta l'avanguardia assoluta della tecnologia di rilevamento degli oggetti, superando le generazioni precedenti sotto ogni metrica.
YOLO26 introduce diverse funzionalità capaci di cambiare paradigma:
- Progettazione end-to-end senza NMS: Basandosi sui concetti introdotti nelle iterazioni precedenti, YOLO26 è nativamente end-to-end. Questo elimina completamente il post-processing della soppressione non massima (NMS), riducendo drasticamente i colli di bottiglia della latenza e semplificando notevolmente la logica di deployment.
- Ottimizzatore MuSGD: Ispirato a Kimi K2 di Moonshot AI, questo ottimizzatore rivoluzionario combina la stabilità del SGD standard con il momentum accelerato di Muon, portando le innovazioni avanzate dell'addestramento degli LLM direttamente nella computer vision.
- Velocità CPU migliorata: Rimuovendo strategicamente la perdita focale della distribuzione (DFL), YOLO26 raggiunge un'inferenza su CPU fino al 43% più veloce, diventando il campione indiscusso per il deployment su dispositivi edge e dispositivi IoT a basso consumo.
- ProgLoss + STAL: Queste funzioni di perdita avanzate producono miglioramenti significativi nel riconoscimento degli oggetti piccoli, un aspetto fondamentale per le immagini aeree e la robotica di precisione.
- Miglioramenti specifici per attività: Include la perdita di segmentazione semantica per la generazione delle maschere, la stima log-verosimiglianza residua (RLE) per il tracking della posa e una perdita angolare specializzata per risolvere i complessi problemi dei bordi dei riquadri delimitatori orientati (OBB).
Conclusioni#
Sia YOLOv5 sia YOLOv7 offrono soluzioni solide per il rilevamento degli oggetti in tempo reale. YOLOv7 rimane una scelta eccellente per la pura accuratezza su hardware con elevate capacità computazionali, mentre YOLOv5 si distingue come lo strumento definitivo per gli sviluppatori, offrendo un equilibrio eccezionale tra velocità, efficienza e un ecosistema di livello mondiale.
Tuttavia, per gli sviluppatori che desiderano rendere le proprie pipeline a prova di futuro e ottenere la combinazione definitiva di velocità, semplicità e accuratezza all'avanguardia, consigliamo vivamente di migrare a Ultralytics YOLO26. Racchiude la leggendaria semplicità d'uso della piattaforma Ultralytics, offrendo al contempo innovazioni architetturali rivoluzionarie.