Intelligenza artificiale
YOLOv9: Un Salto Avanti Nella Rilevazione di Oggetti in Tempo Reale
Rilevamento 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, porta 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 al Rilevamento di Oggetti
Prima di entrare nel dettaglio di cosa c’è di nuovo in YOLOv9, facciamo una breve panoramica di come funziona il rilevamento di oggetti. L’obiettivo del rilevamento 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 restituisce rettangoli di delimitazione intorno agli oggetti rilevati, ciascuno con un’etichetta di classe associata. Set di dati popolari come MS COCO forniscono migliaia di immagini etichettate per addestrare e valutare questi modelli.
Ci sono due principali approcci al rilevamento 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 parte di accuratezza per tempi di inferenza molto veloci.
YOLO ha fatto da pioniere nell’approccio a un solo stadio. Vediamo come è evoluto attraverso molteplici 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 della rilevazione di oggetti veloce dal momento in cui la versione originale è stata pubblicata nel 2016. Ecco una rapida panoramica di come YOLO è progredito attraverso molteplici 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ò il originale utilizzando la normalizzazione del batch per una migliore 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 loro, 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 estrattore di 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 set di dati esterni per aumentare ulteriormente le prestazioni.
Quindi, in sintesi, le versioni precedenti di YOLO raggiunsero una maggiore accuratezza attraverso miglioramenti dell’architettura del modello, tecniche di addestramento e pre-addestramento. Ma mentre i modelli diventano più grandi e complessi, la velocità e l’efficienza iniziano a soffrire.
La Necessità di una Migliore 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 ha bisogno di rilevare oggetti a elevate frequenze di frame utilizzando i processori all’interno del veicolo. Una telecamera di sicurezza ha bisogno di eseguire la rilevazione di oggetti sul proprio flusso video all’interno del proprio hardware incorporato. Telefoni e altri dispositivi consumer hanno vincoli di potenza e termici molto stretti.
Le versioni recenti di YOLO ottengono alta accuratezza con un gran numero di parametri e operazioni di moltiplicazione e aggiunta (FLOPs). Ma ciò si verifica a scapito 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 sovra-addestramento e rende più difficile la generalizzazione.
Quindi, per ampliare l’applicabilità della rilevazione di oggetti, abbiamo bisogno di modi per migliorare l’efficienza – ottenendo una migliore accuratezza con meno parametri e calcoli. Vediamo le tecniche utilizzate in YOLOv9 per affrontare questa sfida.
YOLOv9 – Migliore Accuratezza con Minore Risorse
I ricercatori dietro YOLOv9 si concentrarono sull’miglioramento dell’efficienza per raggiungere prestazioni in tempo reale su una gamma più ampia di dispositivi. Introdussero due innovazioni chiave:
- Un nuovo modello di architettura chiamato General Efficient Layer Aggregation Network (GELAN) che massimizza l’accuratezza mentre minimizza i parametri e le FLOPs.
- Una tecnica di addestramento chiamata Programmable Gradient Information (PGI) che fornisce gradienti di apprendimento più affidabili, specialmente per modelli più piccoli.
Vediamo come ciascuno di questi avanzamenti 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 progettarono GELAN specificamente per estrarre il massimo dell’accuratezza da un’architettura minima.
GELAN utilizza due principali blocchi costruttivi impilati insieme:
- Blocchi di Aggregazione di Strati Efficienti – Questi aggregano trasformazioni attraverso più rami della rete per catturare caratteristiche multi-scala in modo efficiente.
- Blocchi Computazionali – Blocchi CSPNet aiutano a propagare informazioni attraverso gli strati. Qualsiasi 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 verso l’alto o verso il basso attraverso diverse dimensioni di modelli e hardware.
Gli esperimenti mostrarono che GELAN inserisce più prestazioni in modelli più piccoli rispetto alle precedenti architetture YOLO. Ad esempio, GELAN-Small con 7M parametri superò YOLOv7-Nano con 11M parametri. E GELAN-Medium con 20M parametri si esibì allo stesso livello dei modelli YOLOv7 medio che richiedevano 35-40M parametri.
Quindi, progettando un’architettura parametrizzata specificamente ottimizzata per l’efficienza, GELAN consente ai modelli di eseguire più velocemente e su dispositivi con risorse più limitate. Successivamente, vedremo come PGI li aiuta ad addestrare meglio.
Miglior Addestramento con Programmable Gradient Information (PGI)
L’addestramento del modello è altrettanto importante per massimizzare l’accuratezza con risorse limitate. Gli autori di YOLOv9 identificarono problemi nell’addestramento di modelli più piccoli causati da informazioni di gradiente non affidabili.
Gradienti determinano quanto i pesi del modello vengono aggiornati durante l’addestramento. Gradienti 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 progettate per migliorare la qualità dei gradienti:
- Rami reversibili ausiliari – Questi forniscono connessioni reversibili indietro all’input utilizzando blocchi come RevCols. Ciò mantiene gradienti puliti evitando l’imbottigliamento delle informazioni.
- Integrazione dei gradienti a più livelli – Un blocco di fusione aggrega i gradienti da tutti i rami prima di alimentare il modello principale. Ciò previene la divergenza tra i rami.
Generando gradienti più affidabili, PGI migliora la convergenza e l’efficienza dell’addestramento su tutte le dimensioni dei modelli:
Gli esperimenti mostrarono che PGI migliorò l’accuratezza per piccole e grandi configurazioni di YOLOv9 rispetto al GELAN di base:
Quindi, PGI consente ai modelli di addestrare meglio.
YOLOv9 Stabilisce un Nuovo Stato dell’Arte per l’Efficienza
Combinando gli avanzamenti architettonici di GELAN con i miglioramenti dell’addestramento di PGI, YOLOv9 raggiunge prestazioni senza precedenti in termini di efficienza:
- Rispetto alle precedenti versioni di YOLO, YOLOv9 ottiene migliore accuratezza con il 10-15% di parametri in meno e il 25% di calcoli in meno. Ciò porta a miglioramenti significativi in velocità e capacità su tutte le dimensioni dei modelli.
- YOLOv9 supera altri rilevatori 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 sui 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 paralleli della rete mentre si aggiunge un sovraccarico minimo:
Ciò è più efficiente che semplicemente impilare strati in serie, il che spesso porta a calcoli ridondanti e sovra-parametrizzazione.
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 delle FLOPs.
Generalizzazione di ELAN per Flessibilità di Efficienza
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 – Precedentemente ELAN aveva 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 ramo principale rispetto al ramo aggregatore semplifica l’ottimizzazione dell’utilizzo delle risorse.
- Prestazioni stabili su 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 mostrarono che i modelli GELAN superarono costantemente le precedenti architetture YOLO in accuratezza per parametro:
- GELAN-Small con 7M parametri superò YOLOv7-Nano con 11M parametri
- GELAN-Medium si esibì allo stesso livello dei modelli YOLOv7 medio
Quindi, GELAN fornisce un backbone ottimizzato per scalare YOLO su diverse destinazioni di efficienza. Successivamente, vedremo come PGI li aiuta ad addestrare meglio.
PGI – Addestramento Migliorato per Tutte le Dimensioni dei Modelli
Mentre le scelte architettoniche influiscono sull’efficienza durante l’inferenza, il processo di addestramento influisce anche sull’utilizzo delle risorse del modello. YOLOv9 utilizza una nuova tecnica chiamata Programmable Gradient Information (PGI) per migliorare l’addestramento su diverse dimensioni e complessità dei modelli.
Il Problema dei Gradienti Non Affidabili
Durante l’addestramento, una funzione di perdita confronta le uscite del modello con etichette di verità di base e calcola un gradiente di errore per aggiornare i parametri. Gradienti rumorosi o fuorvianti portano a una cattiva convergenza e efficienza.
Reti molto profonde esacerbano questo problema attraverso l’imbottigliamento delle informazioni – i gradienti 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 a Programmable Gradient Information (PGI)
Per affrontare i gradienti non affidabili, YOLOv9 propone Programmable Gradient Information (PGI). PGI ha due componenti principali progettate per migliorare la qualità dei gradienti:
1. Rami reversibili ausiliari
Rami aggiuntivi forniscono connessioni reversibili indietro all’input utilizzando blocchi come RevCols. Ciò mantiene gradienti puliti evitando l’imbottigliamento delle informazioni.
2. Integrazione dei gradienti a più livelli
Un blocco di fusione aggrega i gradienti da tutti i rami prima di alimentare il modello principale. Ciò previene la divergenza tra i rami.
Generando gradienti più affidabili, PGI migliora la convergenza e l’efficienza dell’addestramento su tutte le dimensioni dei modelli:
- Modelli leggeri beneficiano della supervisione profonda che non potevano utilizzare prima
- Modelli più grandi ottengono gradienti più puliti che consentono una migliore generalizzazione
Gli esperimenti mostrarono che PGI migliorò l’accuratezza per piccole e grandi configurazioni di YOLOv9 rispetto al GELAN di base:
- +0.1-0.4% AP per YOLOv9-Small
- +0.5-0.6% AP per modelli YOLOv9 più grandi
Quindi, PGI consente ai modelli di addestrare meglio.
YOLOv9 Stabilisce un Nuovo Stato dell’Arte di Accuratezza
Combinando gli avanzamenti architettonici di GELAN e i miglioramenti dell’addestramento di PGI, YOLOv9 raggiunge nuovi risultati di stato dell’arte per la rilevazione di oggetti in tempo reale.
Gli esperimenti sul set di dati COCO mostrano YOLOv9 che supera le precedenti versioni di YOLO, nonché altri rilevatori in tempo reale come YOLO-MS, in accuratezza ed efficienza:
Alcuni punti salienti:
- YOLOv9-Small supera YOLO-MS-Small con il 10% di parametri e calcoli in meno
- YOLOv9-Medium si esibisce allo stesso livello dei modelli YOLOv7 più grandi 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, modelli YOLOv9 più piccoli superano addirittura modelli più grandi di altri rilevatori che utilizzano il pre-addestramento 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 una rilevazione di oggetti ad alta accuratezza in più casi d’uso reali.
Punti Chiave su 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 diverse destinazioni.
- Informazioni di gradiente programmabili – Fornisce gradienti di apprendimento più affidabili, migliorando l’addestramento su tutte le dimensioni dei modelli.
- Migliore 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ù grandi.
- Applicabilità ampliata – Una maggiore efficienza amplia i casi d’uso praticabili, come la rilevazione 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.


