Modelli e piattaforme di IA
YOLOv9: Un Salto Avanti Nella Rilevazione di Oggetti in Tempo Reale
Rilevazione di oggetti ha visto un rapido avanzamento negli ultimi anni grazie agli algoritmi di apprendimento profondo come YOLO (You Only Look Once). L’ultima iterazione, YOLOv9, apporta miglioramenti significativi in termini di accuratezza, efficienza e applicabilità rispetto alle versioni precedenti. In questo post, esploreremo le innovazioni che rendono YOLOv9 un nuovo stato dell’arte per la rilevazione di oggetti in tempo reale.
Una Breve Introduzione alla Rilevazione di Oggetti
Prima di entrare nel dettaglio di cosa c’è di nuovo in YOLOv9, facciamo una breve panoramica di come funziona la rilevazione di oggetti. L’obiettivo della rilevazione di oggetti è identificare e localizzare oggetti all’interno di un’immagine, come ad esempio auto, persone o animali. È una capacità chiave per applicazioni come auto a guida autonoma, sistemi di sorveglianza e ricerca di immagini.
Il rilevatore prende un’immagine come input e produce rettangoli di delimitazione attorno agli oggetti rilevati, ciascuno con un’etichetta di classe associata. Dataset popolari come MS COCO forniscono migliaia di immagini etichettate per addestrare e valutare questi modelli.
Ci sono due principali approcci alla rilevazione di oggetti:
- Rilevatori a due stadi come Faster R-CNN generano prima proposte di regioni, poi classificano e raffinano i confini di ciascuna regione. Tendono ad essere più precisi ma più lenti.
- Rilevatori a un solo stadio come YOLO applicano un modello direttamente sull’immagine in un’unica passata. Scambiano una certa accuratezza per tempi di inferenza molto veloci.
YOLO ha fatto da pioniere nell’approccio a un solo stadio. Vediamo come è evoluto nel corso di molte versioni per migliorare l’accuratezza e l’efficienza.
Panoramica delle Precedenti Versioni di YOLO
La famiglia di modelli YOLO (You Only Look Once) è stata all’avanguardia nella rilevazione di oggetti veloce fin dalla pubblicazione della versione originale nel 2016. Ecco una rapida panoramica di come YOLO è progredito nel corso di molte iterazioni:
- YOLOv1 propose un modello unificato per prevedere rettangoli di delimitazione e probabilità di classe direttamente da immagini complete in un’unica passata. Ciò lo rese estremamente veloce rispetto ai modelli a due stadi precedenti.
- YOLOv2 migliorò la versione originale utilizzando la normalizzazione del batch per una maggiore stabilità, ancorando le caselle a varie scale e rapporti di aspetto per rilevare dimensioni multiple, e una varietà di altre ottimizzazioni.
- YOLOv3 aggiunse un nuovo estrattore di caratteristiche chiamato Darknet-53 con più strati e scorciatoie tra di essi, migliorando ulteriormente l’accuratezza.
- YOLOv4 combinò idee da altri rilevatori di oggetti e modelli di segmentazione per spingere l’accuratezza ancora più in alto mentre manteneva un’inferenza veloce.
- YOLOv5 riscrisse completamente YOLOv4 in PyTorch e aggiunse un nuovo backbone di estrazione delle caratteristiche chiamato CSPDarknet insieme a diverse altre migliorie.
- YOLOv6 continuò a ottimizzare l’architettura e il processo di addestramento, con modelli pre-addestrati su grandi dataset esterni per aumentare ulteriormente le prestazioni.
Quindi, in sintesi, le precedenti versioni di YOLO hanno raggiunto una maggiore accuratezza attraverso miglioramenti nell’architettura del modello, nelle tecniche di addestramento e nella pre-addestrazione. Ma mentre i modelli diventano più grandi e complessi, la velocità e l’efficienza iniziano a soffrire.
La Necessità di una Maggiore Efficienza
Molte applicazioni richiedono la rilevazione di oggetti in tempo reale su dispositivi con risorse di calcolo limitate. Mentre i modelli diventano più grandi e più computazionalmente intensivi, diventano impraticabili da distribuire.
Ad esempio, un’auto a guida autonoma deve rilevare oggetti a elevate frequenze di frame utilizzando i processori all’interno del veicolo. Una telecamera di sicurezza deve eseguire la rilevazione di oggetti sul proprio flusso video all’interno del proprio hardware incorporato. I telefoni e altri dispositivi consumer hanno vincoli di potenza e termici molto stretti.
Le versioni recenti di YOLO ottengono un’alta accuratezza con un gran numero di parametri e operazioni di moltiplicazione-addizione (FLOPs). Ma ciò si traduce in una riduzione della velocità, della dimensione e dell’efficienza energetica.
Ad esempio, YOLOv5-L richiede oltre 100 miliardi di FLOPs per elaborare una singola immagine 1280×1280. Ciò è troppo lento per molti casi d’uso in tempo reale. La tendenza di modelli sempre più grandi aumenta anche il rischio di overfitting e rende più difficile la generalizzazione.
Quindi, per espandere l’applicabilità della rilevazione di oggetti, abbiamo bisogno di modi per migliorare l’efficienza – ottenendo una maggiore accuratezza con meno parametri e calcoli. Vediamo le tecniche utilizzate in YOLOv9 per affrontare questa sfida.
YOLOv9 – Maggiore Accuratezza con Minore Risorse
I ricercatori dietro YOLOv9 si sono concentrati sull’miglioramento dell’efficienza per raggiungere prestazioni in tempo reale su una gamma più ampia di dispositivi. Hanno introdotto due innovazioni chiave:
- Una nuova architettura del modello chiamata General Efficient Layer Aggregation Network (GELAN) che massimizza l’accuratezza mentre minimizza i parametri e i FLOPs.
- Una tecnica di addestramento chiamata Programmable Gradient Information (PGI) che fornisce gradienti di apprendimento più affidabili, specialmente per modelli più piccoli.
Vediamo come ciascuna di queste innovazioni aiuta a migliorare l’efficienza.
Architettura più Efficienti con GELAN
L’architettura del modello stesso è critica per bilanciare l’accuratezza contro la velocità e l’utilizzo delle risorse durante l’inferenza. La rete neurale necessita di sufficiente profondità e larghezza per catturare caratteristiche rilevanti dalle immagini di input. Ma troppi strati o filtri portano a modelli lenti e gonfiati.
Gli autori hanno progettato GELAN specificamente per estrarre il massimo dell’accuratezza da un’architettura delle dimensioni più piccole possibili.
GELAN utilizza due blocchi principali impilati insieme:
- Blocchi di aggregazione di layer efficienti – Questi aggregano trasformazioni attraverso molteplici rami della rete per catturare caratteristiche multi-scala in modo efficiente.
- Blocchi computazionali – I blocchi CSPNet aiutano a propagare informazioni attraverso gli strati. Ogni blocco può essere sostituito in base ai vincoli computazionali.
Bilanciando e combinando attentamente questi blocchi, GELAN raggiunge un punto ottimale tra prestazioni, parametri e velocità. La stessa architettura modulare può essere scalata su o giù attraverso diverse dimensioni di modelli e hardware.
Gli esperimenti hanno mostrato che GELAN inserisce più prestazioni in modelli più piccoli rispetto alle precedenti architetture YOLO. Ad esempio, GELAN-Small con 7M parametri ha superato YOLOv7-Nano con 11M parametri. E GELAN-Medium con 20M parametri ha eseguito al pari dei modelli YOLOv7 medi che richiedevano 35-40M parametri.
Quindi, progettando un’architettura parametrizzata ottimizzata specificamente per l’efficienza, GELAN consente ai modelli di eseguire più velocemente e su dispositivi con risorse più limitate. Successivamente, vedremo come PGI li aiuta a eseguire meglio l’addestramento.
Miglior Addestramento con Programmable Gradient Information (PGI)
L’addestramento del modello è altrettanto importante per massimizzare l’accuratezza con risorse limitate. Gli autori di YOLOv9 hanno identificato problemi nell’addestramento di modelli più piccoli causati da informazioni di gradiente non affidabili.
Gradiente determina quanto i pesi del modello vengono aggiornati durante l’addestramento. Gradiente rumorosi o fuorvianti portano a una cattiva convergenza. Questo problema diventa più pronunciato per reti più piccole.
La tecnica di supervisione profonda affronta questo problema introducendo rami laterali aggiuntivi con perdite per propagare un segnale di gradiente migliore attraverso la rete. Ma tende a rompersi e causare divergenza per modelli più leggeri.

YOLOv9: Learning What You Want to Learn Using Programmable Gradient Information https://arxiv.org/abs/2402.13616
Per superare questa limitazione, YOLOv9 introduce Programmable Gradient Information (PGI). PGI ha due componenti principali:
- Rami reversibili ausiliari – Questi forniscono gradienti più puliti mantenendo connessioni reversibili con l’input utilizzando blocchi come RevCols.
- Integrazione del gradiente a più livelli – Questo evita la divergenza da rami laterali diversi che interferiscono. Combina i gradienti da tutti i rami prima di riportarli al modello principale.
Generando gradienti più affidabili, PGI migliora la convergenza dell’addestramento e l’efficienza su tutte le dimensioni dei modelli:
Gli esperimenti hanno mostrato che PGI ha migliorato l’accuratezza su tutte le configurazioni di YOLOv9 rispetto al baseline GELAN:
- +0.1-0.4% AP per YOLOv9-Small
- +0.5-0.6% AP per modelli YOLOv9 più grandi
Quindi, PGI consente ai modelli di eseguire meglio l’addestramento.
YOLOv9 Stabilisce un Nuovo Stato dell’Arte per l’Efficienza
Combinando gli avanzamenti architettonici di GELAN e le migliorie dell’addestramento di PGI, YOLOv9 raggiunge un’efficienza e prestazioni senza precedenti:
- Rispetto alle precedenti versioni di YOLO, YOLOv9 ottiene migliore accuratezza con il 10-15% di parametri e calcoli in meno. Ciò porta a miglioramenti significativi in termini di velocità e capacità su tutte le dimensioni dei modelli.
- YOLOv9 supera altri rilevatori di oggetti in tempo reale come YOLO-MS e RT-DETR in termini di efficienza dei parametri e FLOPs. Richiede molte meno risorse per raggiungere un determinato livello di prestazioni.
- I modelli YOLOv9 più piccoli superano addirittura modelli più grandi pre-addestrati come RT-DETR-X. Nonostante utilizzi il 36% di parametri in meno, YOLOv9-E raggiunge un AP del 55,6% attraverso architetture più efficienti.
Quindi, affrontando l’efficienza a livello di architettura e addestramento, YOLOv9 stabilisce un nuovo stato dell’arte per massimizzare le prestazioni all’interno di risorse limitate.
GELAN – Architettura Ottimizzata per l’Efficienza
YOLOv9 introduce una nuova architettura chiamata General Efficient Layer Aggregation Network (GELAN) che massimizza l’accuratezza all’interno di un budget di parametri minimo. Si basa su precedenti modelli YOLO ma ottimizza i vari componenti specificamente per l’efficienza.

YOLOv9: Learning What You Want to Learn Using Programmable Gradient Information https://arxiv.org/abs/2402.13616
Background su CSPNet e ELAN
Le versioni recenti di YOLO a partire dalla v5 hanno utilizzato backbone basati su Cross-Stage Partial Network (CSPNet) per una maggiore efficienza. CSPNet consente di aggregare mappe di caratteristiche attraverso rami di rete paralleli aggiungendo un sovraccarico minimo:
Ciò è più efficiente che semplicemente impilare strati serialmente, il che spesso porta a calcoli ridondanti e sovrapparametrizzazione.
YOLOv7 ha aggiornato CSPNet a Efficient Layer Aggregation Network (ELAN), che ha semplificato la struttura del blocco:
ELAN ha rimosso le connessioni shortcut tra gli strati a favore di un nodo di aggregazione all’uscita. Ciò ha ulteriormente migliorato l’efficienza dei parametri e dei FLOPs.
Generalizzazione di ELAN per Efficienza Flessibile
Gli autori hanno generalizzato ulteriormente ELAN per creare GELAN, il backbone utilizzato in YOLOv9. GELAN ha apportato modifiche chiave per migliorare la flessibilità e l’efficienza:
- Blocchi computazionali interscambiabili – Le precedenti versioni di ELAN avevano strati convoluzionali fissi. GELAN consente di sostituire qualsiasi blocco computazionale come ResNets o CSPNet, fornendo più opzioni architettoniche.
- Parametrizzazione della profondità – Profondità di blocco separate per il ramo principale rispetto al ramo aggregatore semplificano la regolazione dell’utilizzo delle risorse.
- Prestazioni stabili in diverse configurazioni – GELAN mantiene l’accuratezza con diversi tipi di blocchi e profondità, consentendo una scalabilità flessibile.
Questi cambiamenti rendono GELAN un solido ma configurabile backbone per massimizzare l’efficienza:
Gli esperimenti hanno mostrato che i modelli GELAN superano costantemente le precedenti architetture YOLO in termini di accuratezza per parametro:
- GELAN-Small con 7M parametri ha superato YOLOv7-Nano con 11M parametri
- GELAN-Medium ha eguagliato i modelli YOLOv7 medi più pesanti
Quindi, GELAN fornisce un backbone ottimizzato per scalare YOLO attraverso diversi obiettivi di efficienza. Successivamente, vedremo come PGI li aiuta a eseguire meglio l’addestramento.
PGI – Addestramento Migliorato per Tutte le Dimensioni dei Modelli
Mentre le scelte architettoniche influenzano l’efficienza durante l’inferenza, il processo di addestramento influisce anche sull’utilizzo delle risorse. YOLOv9 utilizza una nuova tecnica chiamata Programmable Gradient Information (PGI) per migliorare l’addestramento su diverse dimensioni e complessità dei modelli.
Il Problema dei Gradenti Non Affidabili
Durante l’addestramento, una funzione di perdita confronta le uscite del modello con le etichette di verità e calcola un gradiente di errore per aggiornare i parametri. Gradiente rumorosi o fuorvianti portano a una cattiva convergenza e efficienza.
Reti molto profonde esacerbano questo problema attraverso il collo di bottiglia dell’informazione – i gradenti provenienti da strati profondi vengono corrotti da segnali persi o compressi.
Supervisione profonda aiuta introducendo rami laterali ausiliari con perdite per fornire gradienti più puliti. Ma spesso si rompe per modelli più piccoli, causando interferenza e divergenza tra diversi rami.
Quindi, abbiamo bisogno di un modo per fornire gradienti affidabili che funzioni su tutte le dimensioni dei modelli, specialmente sui più piccoli.
Introduzione di Programmable Gradient Information (PGI)
Per affrontare i gradenti non affidabili, YOLOv9 propone Programmable Gradient Information (PGI). PGI ha due componenti principali progettati per migliorare la qualità del gradiente:
1. Rami reversibili ausiliari
Rami aggiuntivi forniscono connessioni reversibili indietro all’input utilizzando blocchi come RevCols. Ciò mantiene gradienti puliti evitando il collo di bottiglia dell’informazione.
2. Integrazione del gradiente a più livelli
Un blocco di fusione aggrega i gradienti da tutti i rami prima di riportarli al modello principale. Ciò previene la divergenza tra i rami.
Generando gradienti più affidabili, PGI migliora la convergenza dell’addestramento e l’efficienza su tutte le dimensioni dei modelli:
- Modelli leggeri traggono beneficio dalla supervisione profonda che non potevano utilizzare prima
- Modelli più grandi ottengono gradienti più puliti che consentono una migliore generalizzazione
Gli esperimenti hanno mostrato che PGI ha migliorato l’accuratezza per piccole e grandi configurazioni di YOLOv9 rispetto al baseline GELAN:
- +0.1-0.4% AP per YOLOv9-Small
- +0.5-0.6% AP per modelli YOLOv9 più grandi
Quindi, i gradienti programmabili di PGI consentono ai modelli di eseguire meglio l’addestramento.
YOLOv9 Stabilisce un Nuovo Stato dell’Arte per l’Accuratezza
Combinando i miglioramenti architettonici di GELAN e le migliorie dell’addestramento di PGI, YOLOv9 raggiunge nuovi risultati di stato dell’arte per la rilevazione di oggetti in tempo reale.
Gli esperimenti sul dataset COCO mostrano YOLOv9 che supera le precedenti versioni di YOLO, nonché altri rilevatori di oggetti in tempo reale come YOLO-MS, in accuratezza e efficienza:
Alcuni punti salienti:
- YOLOv9-Small supera YOLO-MS-Small con il 10% di parametri e calcoli in meno
- YOLOv9-Medium eguaglia i modelli YOLOv7 più pesanti utilizzando meno della metà delle risorse
- YOLOv9-Large supera YOLOv8-X con il 15% di parametri e il 25% di FLOPs in meno
In modo sorprendente, i modelli YOLOv9 più piccoli superano addirittura modelli più grandi di altri rilevatori che utilizzano la pre-addestrazione come RT-DETR-X. Nonostante abbia 4 volte meno parametri, YOLOv9-E supera RT-DETR-X in accuratezza.
Questi risultati dimostrano la superiore efficienza di YOLOv9. I miglioramenti consentono la rilevazione di oggetti ad alta accuratezza in più casi d’uso reali.
Punti Chiave sugli Aggiornamenti di YOLOv9
Riepiloghiamo alcuni degli aggiornamenti e delle innovazioni chiave che consentono a YOLOv9 di raggiungere nuove prestazioni di stato dell’arte:
- Architettura GELAN ottimizzata – Migliora l’efficienza dei parametri attraverso blocchi di aggregazione flessibili. Consente di scalare i modelli per diversi obiettivi.
- Informazione di gradiente programmabile – Fornisce gradienti affidabili attraverso connessioni reversibili e fusione. Migliora l’addestramento su tutte le dimensioni dei modelli.
- Maggiore accuratezza con meno risorse – Riduce i parametri e i calcoli del 10-15% rispetto a YOLOv8 con una migliore accuratezza. Consente un’inferenza più efficiente.
- Risultati superiori su tutte le dimensioni dei modelli – Stabilisce un nuovo stato dell’arte per configurazioni di modelli leggeri, medi e grandi. Superiore ai modelli pre-addestrati più pesanti.
- Applicabilità estesa – Una maggiore efficienza amplia i casi d’uso pratici, come la rilevazione di oggetti in tempo reale su dispositivi edge.
Affrontando direttamente l’accuratezza, l’efficienza e l’applicabilità, YOLOv9 porta la rilevazione di oggetti avanti per soddisfare esigenze reali diverse. Gli aggiornamenti forniscono una solida base per future innovazioni in questa fondamentale capacità di visione artificiale.












