YOLOv7 vs YOLOv9#
Il panorama del rilevamento di oggetti in tempo reale si è evoluto rapidamente e ogni nuova iterazione ha migliorato le prestazioni sia sui dispositivi edge sia sui server cloud. Per valutare le architetture dei progetti di computer vision, gli sviluppatori confrontano spesso i benchmark consolidati con i design più recenti. Questa guida confronta due tappe importanti della famiglia YOLO: YOLOv7 e YOLOv9.
La guida esamina le architetture, le metriche di prestazione e gli scenari di distribuzione ideali per aiutarti a scegliere il modello più adatto alla tua applicazione, e mostra come la Ultralytics Platform e l'API Python semplificano l'addestramento, la convalida e la distribuzione dei modelli supportati, come YOLOv9.
Lignaggio dei modelli e specifiche tecniche#
Comprendere le origini e le filosofie progettuali di questi modelli fornisce un contesto essenziale per valutarne le capacità. Entrambi condividono le stesse radici di ricerca, ma affrontano colli di bottiglia architetturali diversi.
YOLOv7: pioniere dei bag-of-freebies#
Rilasciato a metà del 2022, YOLOv7 è diventato un'architettura molto utilizzata e ben ottimizzata. Ha introdotto la riparametrizzazione strutturale e un approccio basato su una «bag of freebies addestrabile» per mantenere elevate velocità di inferenza senza compromettere la precisione media (mAP).
- Autori: Chien-Yao Wang, Alexey Bochkovskiy e Hong-Yuan Mark Liao
- Organizzazione: Institute of Information Science, Academia Sinica, Taiwan
- Data: 6 luglio 2022
- arXiv: 2207.02696
- GitHub: WongKinYiu/yolov7
Innovazioni architetturali: YOLOv7 utilizza la rete Extended Efficient Layer Aggregation (E-ELAN), che consente al modello di apprendere caratteristiche più diversificate espandendo, rimescolando e unendo la cardinalità. Questo design garantisce un'eccellente utilizzazione della GPU e una bassa latenza di inferenza. Tuttavia, rispetto alle versioni moderne, può richiedere molta memoria durante le sessioni di addestramento complesse.
YOLOv9: risolvere il collo di bottiglia informativo#
Introdotto all'inizio del 2024 dallo stesso gruppo di ricerca, YOLOv9 affronta il «collo di bottiglia informativo» intrinseco alle reti neurali profonde. Quando i dati attraversano i livelli profondi, spesso si perdono dettagli cruciali. YOLOv9 mitiga il problema con nuovi componenti architetturali.
- Autori: Chien-Yao Wang e Hong-Yuan Mark Liao
- Organizzazione: Institute of Information Science, Academia Sinica, Taiwan
- Data: 21 febbraio 2024
- arXiv: 2402.13616
- GitHub: WongKinYiu/yolov9
Innovazioni architetturali: YOLOv9 introduce le informazioni programmabili sul gradiente (PGI) e la rete Generalized Efficient Layer Aggregation (GELAN). PGI assicura che i gradienti affidabili vengano conservati e reinseriti per aggiornare i pesi con precisione. GELAN massimizza l'efficienza dei parametri, consentendo a YOLOv9 di raggiungere un'elevata accuratezza con molti meno FLOPs rispetto ai modelli precedenti.
Analisi delle prestazioni#
Nella scelta tra le architetture, gli ingegneri IA devono bilanciare accuratezza, velocità di inferenza e costo computazionale. La tabella seguente evidenzia le differenze di prestazione tra questi modelli sul dataset COCO standard.
| Modello | dimensione (pixel) | mAPval50-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 |
| YOLOv9t | 640 | 38.3 | - | 2.3 | 2.0 | 7.7 |
| YOLOv9s | 640 | 46.8 | - | 3.54 | 7.2 | 26.7 |
| YOLOv9m | 640 | 51.4 | - | 6.43 | 20.1 | 76.8 |
| YOLOv9c | 640 | 53.0 | - | 7.16 | 25.5 | 102.8 |
| YOLOv9e | 640 | 55.6 | - | 16.77 | 58.1 | 192.5 |
Punti chiave#
- Efficienza dei parametri: YOLOv9m raggiunge l'accuratezza di YOLOv7l (51,4% mAP) utilizzando circa il 45% di parametri in meno (20,1 M contro 36,9 M). Questa riduzione semplifica la distribuzione di YOLOv9m sui dispositivi edge AI con memoria limitata.
- Distribuzioni su micro-dispositivi: la variante YOLOv9t (tiny) impiega 2,3 ms su una GPU T4 con TensorRT, risultando adatta agli ambienti con rigidi vincoli di tempo reale.
- Accuratezza massima: per le applicazioni in cui l'accuratezza è fondamentale, YOLOv9e raggiunge il 55,6% mAP, 2,5 punti in più rispetto a YOLOv7x.
YOLOv7 e YOLOv9 sono modelli capaci, ma YOLO26 è attualmente il modello Ultralytics consigliato per i nuovi progetti. Introduce un design nativo end-to-end senza NMS (opzionale tramite nms=False) che salta la post-elaborazione Non-Maximum Suppression (NMS) e offre un'inferenza su CPU fino al 43% più veloce (YOLO26n rispetto a YOLO11n). L'ottimizzatore MuSGD migliora la stabilità dell'addestramento, mentre ProgLoss + STAL (perdita progressiva e assegnazione delle etichette consapevole degli oggetti piccoli) migliora il rilevamento degli oggetti di piccole dimensioni.
I vantaggi di Ultralytics#
Scegliere un'architettura del modello è solo il primo passo. L'ecosistema software che circonda il modello determina la rapidità con cui puoi passare dal prototipo alla produzione. Integrare modelli supportati come YOLOv9 tramite l'API Python di Ultralytics offre notevoli vantaggi a sviluppatori e ricercatori.
Facilità d'uso ed efficienza dell'addestramento#
In passato, addestrare YOLOv7 richiedeva una preparazione complessa dei dati e script ampiamente personalizzati. Il framework Ultralytics gestisce questi dettagli, così gli sviluppatori possono passare da un'architettura all'altra, sperimentare con l'ottimizzazione degli iperparametri e usare pipeline integrate di aumento dei dati con poche modifiche al codice.
Ultralytics ottimizza anche l'uso della memoria durante l'addestramento e l'inferenza. Rispetto ai più pesanti modelli Transformer, come RT-DETR, le architetture Ultralytics YOLO in genere si addestrano più rapidamente e richiedono meno memoria CUDA, risultando pratiche sulle GPU di fascia consumer.
Esempio di codice: addestramento semplificato#
L'esempio eseguibile seguente addestra, convalida ed esporta un modello YOLOv9 con l'API Python di Ultralytics:
from ultralytics import YOLO
# Inizializza il modello (puoi sostituire 'yolov9c.pt' con 'yolo26n.pt')
model = YOLO("yolov9c.pt")
# Addestra il modello sul dataset di esempio COCO8
train_results = model.train(
data="coco8.yaml",
epochs=50,
imgsz=640,
device="0", # Usa la GPU 0, se disponibile
batch=16, # Dimensione del batch ottimizzata per ridurre l'uso della memoria
)
# Convalida le prestazioni del modello sul set di convalida
metrics = model.val()
# Esporta il modello addestrato in formato ONNX per il deployment
model.export(format="onnx")Versatilità in diverse attività#
Un ecosistema ben mantenuto offre anche accesso a più attività di computer vision. YOLOv7 è stato progettato principalmente per il rilevamento di oggetti (con successive diramazioni sperimentali per altre attività), mentre i moderni modelli Ultralytics supportano nativamente più attività. Puoi eseguire subito la segmentazione delle istanze, la classificazione delle immagini, la stima della posa e il rilevamento di Oriented Bounding Box (OBB).
Casi d'uso e applicazioni ideali#
La scelta tra YOLOv7 e YOLOv9 dipende spesso dai vincoli specifici del tuo settore e dalla disponibilità di hardware.
Quando usare YOLOv7#
- Distribuzioni edge legacy: per gli ambienti hardware già ottimizzati per l'architettura E-ELAN di YOLOv7, il modello resta una scelta valida per l'IoT industriale.
- Monitoraggio del traffico: gli elevati frame rate e la comprovata stabilità di YOLOv7 lo rendono adatto alle infrastrutture delle smart city e alla gestione del traffico in tempo reale.
- Integrazione nella robotica: navigare in ambienti dinamici richiede un'elaborazione a bassa latenza; è uno scenario in cui le varianti di YOLOv7 sono state ampiamente testate.
Quando usare YOLOv9#
- Imaging medico: PGI aiuta YOLOv9 a preservare i dettagli più fini nei livelli profondi, una caratteristica utile per attività di analisi delle immagini mediche come il rilevamento dei tumori.
- Analisi del commercio al dettaglio in ambienti affollati: per tracciare e contare gli articoli molto ravvicinati sugli scaffali, l'integrazione delle caratteristiche di YOLOv9 può migliorare l'accuratezza e ridurre i falsi negativi.
- Immagini aeree e riprese da droni: l'efficienza dei parametri di YOLOv9m consente di elaborare immagini ad alta risoluzione sui droni, favorendo la conservazione della fauna selvatica e il monitoraggio agricolo senza esaurire la batteria.
Conclusione#
YOLOv7 e YOLOv9 sono entrambi tappe importanti della famiglia YOLO. YOLOv7 ha introdotto ottimizzazioni essenziali per l'elaborazione in tempo reale, mentre YOLOv9 ha affrontato la perdita di informazioni nelle reti profonde per migliorare l'efficienza dei parametri.
Per i nuovi progetti, tuttavia, i modelli Ultralytics più recenti, come YOLO11 e YOLO26, offrono un equilibrio migliore tra velocità, accuratezza ed esperienza di sviluppo. Grazie all'ottimizzatore MuSGD e alla rimozione di Distribution Focal Loss (DFL) per una maggiore compatibilità hardware, YOLO26 è il modello consigliato da cui partire.
Commenti
Fai una domanda, condividi i tuoi risultati o aiuta qualcun altro.