YOLOv9: un balzo in avanti nella tecnologia di rilevamento degli oggetti#
YOLOv9 segna un significativo progresso nel rilevamento degli oggetti in tempo reale, introducendo tecniche rivoluzionarie come le Informazioni programmabili sul gradiente (PGI) e la Rete generalizzata di aggregazione efficiente dei layer (GELAN). Questo modello dimostra notevoli miglioramenti in termini di efficienza, accuratezza e adattabilità, stabilendo nuovi benchmark sul dataset MS COCO. Il progetto YOLOv9, pur essendo stato sviluppato da un team open source indipendente, si basa sulla solida base di codice fornita da Ultralytics YOLOv5, dimostrando lo spirito collaborativo della comunità di ricerca sull'IA.
Watch: YOLOv9 Training on Custom Data using Ultralytics | Industrial Package Dataset

Introduzione a YOLOv9#
Nella ricerca del rilevamento ottimale degli oggetti in tempo reale, YOLOv9 si distingue per il suo approccio innovativo alla risoluzione delle sfide legate alla perdita di informazioni, tipiche delle reti neurali profonde. Integrando PGI e la versatile architettura GELAN, YOLOv9 non solo aumenta la capacità di apprendimento del modello, ma garantisce anche la conservazione delle informazioni cruciali durante il processo di rilevamento, ottenendo così accuratezza e prestazioni eccezionali.
Innovazioni principali di YOLOv9#
I progressi di YOLOv9 si basano in larga misura sulla gestione delle sfide causate dalla perdita di informazioni nelle reti neurali profonde. Il Principio del collo di bottiglia informativo e l'uso innovativo delle Funzioni reversibili sono elementi centrali del suo design e garantiscono che YOLOv9 mantenga elevati livelli di efficienza e accuratezza.
Principio del collo di bottiglia informativo#
Il Principio del collo di bottiglia informativo rivela una sfida fondamentale del deep learning: quando i dati attraversano i layer successivi di una rete, aumenta il rischio di perdita di informazioni. Questo fenomeno è rappresentato matematicamente come:
I(X, X) >= I(X, f_theta(X)) >= I(X, g_phi(f_theta(X)))dove I indica l'informazione mutua, mentre f e g rappresentano funzioni di trasformazione con parametri theta e phi, rispettivamente. YOLOv9 affronta questa sfida implementando le Informazioni programmabili sul gradiente (PGI), che contribuiscono a preservare i dati essenziali lungo la profondità della rete, garantendo una generazione del gradiente più affidabile e, di conseguenza, una migliore convergenza e prestazioni del modello.
Funzioni reversibili#
Il concetto di Funzioni reversibili è un altro elemento fondamentale del design di YOLOv9. Una funzione è considerata reversibile se può essere invertita senza alcuna perdita di informazioni, come espresso da:
X = v_zeta(r_psi(X))con psi e zeta come parametri rispettivamente della funzione reversibile e della sua funzione inversa. Questa proprietà è cruciale per le architetture di deep learning, poiché consente alla rete di mantenere un flusso completo di informazioni, permettendo così aggiornamenti più accurati dei parametri del modello. YOLOv9 integra funzioni reversibili nella propria architettura per ridurre il rischio di degradazione delle informazioni, soprattutto nei layer più profondi, garantendo la conservazione dei dati critici per le attività di rilevamento degli oggetti.
Impatto sui modelli leggeri#
Affrontare la perdita di informazioni è particolarmente importante per i modelli leggeri, che spesso hanno un numero insufficiente di parametri e sono soggetti a perdere informazioni significative durante il processo feedforward. L'architettura di YOLOv9, attraverso l'uso di PGI e delle funzioni reversibili, garantisce che, anche con un modello semplificato, le informazioni essenziali necessarie per un rilevamento accurato degli oggetti vengano conservate e utilizzate efficacemente.
Informazioni programmabili sul gradiente (PGI)#
PGI è un concetto innovativo introdotto in YOLOv9 per contrastare il problema del collo di bottiglia informativo, garantendo la conservazione dei dati essenziali attraverso i layer profondi della rete. Ciò consente di generare gradienti affidabili, facilitando aggiornamenti accurati del modello e migliorando le prestazioni complessive di rilevamento.
Rete generalizzata di aggregazione efficiente dei layer (GELAN)#
GELAN rappresenta un progresso architetturale strategico che consente a YOLOv9 di ottenere un utilizzo superiore dei parametri e una maggiore efficienza computazionale. Il suo design permette l'integrazione flessibile di diversi blocchi computazionali, rendendo YOLOv9 adattabile a un'ampia gamma di applicazioni senza sacrificare velocità o accuratezza.

Benchmark di YOLOv9#
Il benchmarking di YOLOv9 con Ultralytics consiste nella valutazione delle prestazioni del tuo modello addestrato e validato in scenari reali. Questo processo include:
- Valutazione delle prestazioni: valutazione della velocità e dell'accuratezza del modello.
- Formati di esportazione: test del modello con diversi formati di esportazione per garantire il rispetto degli standard necessari e buone prestazioni in vari ambienti.
- Supporto del framework: Fornitura di un framework completo all'interno del pacchetto Ultralytics per facilitare queste valutazioni e garantire risultati coerenti e affidabili.
Eseguendo il benchmarking, puoi assicurarti che il tuo modello non solo funzioni bene in ambienti di test controllati, ma mantenga anche prestazioni elevate nelle applicazioni pratiche del mondo reale.
Watch: How to Benchmark the YOLOv9 Model Using the Ultralytics Python Package
Prestazioni sul dataset MS COCO#
Le prestazioni di YOLOv9 sul dataset COCO esemplificano i suoi significativi progressi nel rilevamento degli oggetti in tempo reale, stabilendo nuovi benchmark per diverse dimensioni del modello. La Tabella 1 presenta un confronto completo dei rilevatori di oggetti in tempo reale all'avanguardia, illustrando l'efficienza e l'accuratezza superiori di YOLOv9.
Le varianti di YOLOv9, dalla variante minima t al modello esteso e, dimostrano miglioramenti non solo nell'accuratezza (metriche mAP), ma anche nell'efficienza, grazie a un numero ridotto di parametri e a minori esigenze computazionali (FLOPs). Questa tabella evidenzia la capacità di YOLOv9 di offrire un'elevata precisione mantenendo o riducendo il sovraccarico computazionale rispetto alle versioni precedenti e ai modelli concorrenti.
A confronto, YOLOv9 mostra notevoli vantaggi:
- Modelli leggeri: YOLOv9s supera YOLO MS-S in termini di efficienza dei parametri e carico computazionale, ottenendo al contempo un miglioramento dello 0,4∼0,6% in AP.
- Modelli medi e grandi: YOLOv9m e YOLOv9e mostrano progressi significativi nel bilanciare il compromesso tra complessità del modello e prestazioni di rilevamento, offrendo riduzioni rilevanti di parametri e calcoli a fronte di una maggiore accuratezza.
In particolare, il modello YOLOv9c evidenzia l'efficacia delle ottimizzazioni dell'architettura. Funziona con il 42% di parametri in meno e il 21% di richiesta computazionale in meno rispetto a YOLOv7 AF, ottenendo comunque un'accuratezza comparabile e dimostrando i significativi miglioramenti di efficienza di YOLOv9. Inoltre, il modello YOLOv9e stabilisce un nuovo standard per i modelli grandi, con il 15% di parametri in meno e il 25% di richiesta computazionale in meno rispetto a YOLOv8x, oltre a un miglioramento incrementale dell'1,7% in AP.
Questi risultati mostrano i progressi strategici di YOLOv9 nella progettazione dei modelli, sottolineandone la maggiore efficienza senza compromettere la precisione essenziale per le attività di rilevamento degli oggetti in tempo reale. Il modello non solo amplia i limiti delle metriche di prestazione, ma sottolinea anche l'importanza dell'efficienza computazionale, rendendolo uno sviluppo fondamentale nel campo della visione artificiale.
Conclusioni#
Rilasciato nel febbraio 2024, YOLOv9 ha rappresentato uno sviluppo fondamentale nel rilevamento degli oggetti in tempo reale, offrendo miglioramenti significativi in termini di efficienza, accuratezza e adattabilità. Affrontando sfide critiche attraverso soluzioni innovative come PGI e GELAN, YOLOv9 ha stabilito nuovi benchmark al momento del rilascio. Sebbene da allora siano stati rilasciati modelli più recenti come YOLO11 e YOLO26, con ulteriori miglioramenti, le innovazioni architetturali di YOLOv9 continuano a influenzare il settore.
Esempi di utilizzo#
Questo esempio fornisce semplici esempi di addestramento e inferenza di YOLOv9. Per la documentazione completa su queste e altre modalità, consulta le pagine della documentazione Predict, Train, Val ed Export.
I modelli *.pt preaddestrati con PyTorch, così come i file di configurazione *.yaml, possono essere passati alla classe YOLO() per creare un'istanza del modello in Python:
from ultralytics import YOLO
# Build a YOLOv9c model from scratch
model = YOLO("yolov9c.yaml")
# Build a YOLOv9c model from pretrained weight
model = YOLO("yolov9c.pt")
# Display model information (optional)
model.info()
# Train the model on the COCO8 example dataset for 100 epochs
results = model.train(data="coco8.yaml", epochs=100, imgsz=640)
# Run inference with the YOLOv9c model on the 'bus.jpg' image
results = model("path/to/bus.jpg")Attività e modalità supportate#
La serie YOLOv9 offre una gamma di modelli, ciascuno ottimizzato per il rilevamento degli oggetti ad alte prestazioni. Questi modelli soddisfano esigenze computazionali e requisiti di accuratezza diversi, rendendoli versatili per un'ampia gamma di applicazioni.
| Modello | Nomi dei file | Attività | Addestramento | Convalida | Inferenza | Esportazione |
|---|---|---|---|---|---|---|
| YOLOv9 | yolov9t.pt yolov9s.pt yolov9m.pt yolov9c.pt yolov9e.pt | Rilevamento degli oggetti | ✅ | ✅ | ✅ | ✅ |
| YOLOv9-seg | yolov9c-seg.pt yolov9e-seg.pt | Segmentazione delle istanze | ✅ | ✅ | ✅ | ✅ |
Questa tabella fornisce una panoramica dettagliata delle varianti del modello YOLOv9, evidenziandone le capacità nelle attività di rilevamento degli oggetti e la compatibilità con diverse modalità operative, come Inferenza, Validazione, Addestramento ed Esportazione. Questo supporto completo garantisce che tu possa sfruttare appieno le capacità dei modelli YOLOv9 in un'ampia gamma di scenari di rilevamento degli oggetti.
L'addestramento dei modelli YOLOv9 richiederà più risorse e più tempo rispetto al modello YOLOv8 di dimensioni equivalenti.
Citazioni e ringraziamenti#
Desideriamo riconoscere il contributo degli autori di YOLOv9 per i loro importanti apporti nel campo del rilevamento degli oggetti in tempo reale:
@inproceedings{wang2024yolov9,
title={YOLOv9: Learning What You Want to Learn Using Programmable Gradient Information},
author={Wang, Chien-Yao and Yeh, I-Hau and Liao, Hong-Yuan Mark},
booktitle={Computer Vision -- ECCV 2024},
pages={1--21},
year={2024},
organization={Springer Nature Switzerland}
}L'articolo ufficiale su YOLOv9 è stato pubblicato negli atti Springer di ECCV 2024, con un preprint su arXiv. Gli autori hanno reso il loro lavoro pubblico e la base di codice è disponibile su GitHub. Apprezziamo i loro sforzi nel far progredire il settore e nel rendere il loro lavoro accessibile a una comunità più ampia.
FAQ#
YOLOv9 introduce tecniche rivoluzionarie come le Informazioni programmabili sul gradiente (PGI) e la Rete generalizzata di aggregazione efficiente dei layer (GELAN). Queste innovazioni affrontano le sfide legate alla perdita di informazioni nelle reti neurali profonde, garantendo elevata efficienza, accuratezza e adattabilità. PGI preserva i dati essenziali tra i layer della rete, mentre GELAN ottimizza l'utilizzo dei parametri e l'efficienza computazionale. Scopri di più sulle innovazioni principali di YOLOv9 che hanno stabilito nuovi benchmark sul dataset MS COCO.
YOLOv9 supera i rilevatori di oggetti in tempo reale all'avanguardia, ottenendo maggiore accuratezza ed efficienza. Sul dataset COCO, i modelli YOLOv9 mostrano punteggi mAP superiori per diverse dimensioni, mantenendo o riducendo il sovraccarico computazionale. Ad esempio, YOLOv9c raggiunge un'accuratezza comparabile con il 42% di parametri in meno e il 21% di richiesta computazionale in meno rispetto a YOLOv7 AF. Esplora i confronti delle prestazioni per metriche dettagliate.
Puoi addestrare un modello YOLOv9 usando sia comandi Python sia della CLI. Per Python, istanzia un modello usando la classe
YOLOe chiama il metodotrain:from ultralytics import YOLO # Build a YOLOv9c model from pretrained weights and train model = YOLO("yolov9c.pt") results = model.train(data="coco8.yaml", epochs=100, imgsz=640)Per l'addestramento tramite CLI, esegui:
yolo train model=yolov9c.yaml data=coco8.yaml epochs=100 imgsz=640Scopri di più sugli esempi di utilizzo per l'addestramento e l'inferenza.
YOLOv9 è progettato per ridurre la perdita di informazioni, un aspetto particolarmente importante per i modelli leggeri, spesso soggetti a perdere informazioni significative. Integrando le Informazioni programmabili sul gradiente (PGI) e le funzioni reversibili, YOLOv9 garantisce la conservazione dei dati essenziali, migliorando l'accuratezza e l'efficienza del modello. Questo lo rende particolarmente adatto alle applicazioni che richiedono modelli compatti ad alte prestazioni. Per ulteriori dettagli, consulta la sezione sull'impatto di YOLOv9 sui modelli leggeri.
YOLOv9 supporta diverse attività, tra cui il rilevamento degli oggetti e la segmentazione delle istanze. È compatibile con diverse modalità operative, come inferenza, validazione, addestramento ed esportazione. Questa versatilità rende YOLOv9 adattabile a diverse applicazioni di visione artificiale in tempo reale. Consulta la sezione sulle attività e modalità supportate per ulteriori informazioni.