YOLO – You Only Look Once
Introduzione: Perché YOLO è importante
Immagina di camminare per una strada affollata, dove decine di persone e veicoli si muovono in tutte le direzioni. Improvvisamente, un’auto autonoma si avvicina e deve decidere rapidamente come navigare tra tutti gli oggetti che la circondano, come pedoni, ciclisti e altri veicoli. La capacità di riconoscere e classificare questi oggetti in tempo reale è essenziale per evitare incidenti e garantire la sicurezza. Qui entra in gioco YOLO (You Only Look Once), uno degli algoritmi di visione artificiale più potenti per il riconoscimento degli oggetti. YOLO permette a un sistema di riconoscere molteplici oggetti in una sola immagine con estrema velocità, un compito fondamentale in scenari dinamici e complessi.
Perché scegliere YOLO
YOLO è una delle scelte più potenti ed efficienti per il riconoscimento degli oggetti, e lo è per una serie di motivi. A differenza di altri algoritmi che suddividono il compito in più passaggi, YOLO guarda all’intera immagine in un solo passaggio, prevedendo simultaneamente le coordinate di bounding box e le classi degli oggetti. Questo approccio lo rende molto più veloce rispetto ad altri metodi.
- Velocità e Precisione: YOLO è estremamente veloce e può elaborare centinaia di immagini al secondo, rendendolo ideale per applicazioni che richiedono risposte in tempo reale, come il riconoscimento di ostacoli per auto autonome o la sorveglianza in ambienti affollati.
- Unico Passaggio: Mentre altri algoritmi possono richiedere diverse fasi (come il riconoscimento dell’oggetto e la successiva classificazione), YOLO esegue tutto in un singolo passaggio, riducendo notevolmente i tempi di elaborazione.
- Scalabilità: YOLO è altamente scalabile, adattabile a una vasta gamma di oggetti e contesti, dalla classificazione di oggetti in un negozio al riconoscimento di persone in ambienti pubblici. Può essere facilmente addestrato su nuovi dataset, il che lo rende un’opzione versatile per molte applicazioni pratiche.
In confronto a soluzioni concorrenti, come SSD (Single Shot Multibox Detector) o Faster R-CNN, YOLO è più veloce ma mantiene una buona precisione, risultando quindi una scelta preferita in molte applicazioni real-time dove è cruciale un bilanciamento tra velocità e accuratezza.
Come funziona YOLO?
L’algoritmo YOLO divide l’immagine in una griglia. Ogni cella della griglia è responsabile del rilevamento degli oggetti che cadono al suo interno. Ogni cella predice:
- La probabilità che la cella contenga un oggetto.
- Le coordinate della posizione dell’oggetto (in termini di box di delimitazione).
- La probabilità di ogni classe di oggetto per quella cella.
Il modello quindi usa queste previsioni per identificare oggetti nell’immagine. Il processo può essere suddiviso nelle seguenti fasi:
- Divisione dell’immagine: L’immagine di input viene suddivisa in una griglia di dimensioni prefissate (ad esempio, 7×7, 13×13, ecc.).
- Predizione per cella: Ogni cella della griglia predice un numero fisso di box di delimitazione (bounding boxes). Ogni box ha:
- Le coordinate del centro (x, y).
- La larghezza e l’altezza.
- La probabilità che l’oggetto sia presente nel box.
- La probabilità per ciascuna classe di oggetto.
- Filtraggio delle predizioni: Dopo che il modello ha fatto le predizioni per tutte le celle della griglia, vengono filtrate le predizioni meno confidenti, lasciando solo quelle con probabilità elevate.
- Non-Maximum Suppression (NMS): Una volta che sono stati selezionati i box di delimitazione, viene eseguito un processo chiamato Non-Maximum Suppression (NMS), che rimuove i box ridondanti, mantenendo solo quello con la massima probabilità per ogni oggetto.
Dettaglio su Bounding Boxes e Deformable Ports Model
Bounding Boxes in YOLO
Nel contesto di YOLO, le bounding boxes (o scatole di delimitazione) sono utilizzate per rappresentare la posizione di un oggetto all’interno di un’immagine. Ogni box è rappresentata da 4 coordinate:
- Centro della box: Le coordinate (x, y) indicano il centro della bounding box.
- Larghezza e altezza: La dimensione della box, data da
w
(larghezza) eh
(altezza). - Confidenza: La probabilità che la box contenga un oggetto, calcolata come il prodotto della probabilità dell’oggetto e l’area della box.
- Classe dell’oggetto: La probabilità che un oggetto appartenente a una determinata classe (ad esempio, una persona, una macchina, ecc.) si trovi dentro la box.
Ogni griglia di YOLO predice queste informazioni per ogni cella. La predizione del box di delimitazione è basata sul concetto di soglia di confidenza. Quando una cella della griglia rileva un oggetto, calcola una previsione delle coordinate del box e della probabilità che l’oggetto sia effettivamente presente, insieme alla probabilità di ciascuna classe.
Deformable Ports Model (DPM)
Il Deformable Ports Model (DPM) è un’estensione del modello di rilevamento che permette una maggiore flessibilità nell’adattamento delle posizioni degli oggetti. In YOLO, l’idea principale di Deformable Ports è quella di rendere le bounding boxes più adattabili ai cambiamenti nelle forme degli oggetti, rispetto a una rigidità fissa nelle previsioni. Questo aiuta YOLO a gestire oggetti che possano essere deformati o presentare posizioni inconsuete.
In pratica, il modello DPM introduce dei “porti deformabili” per ogni box di delimitazione, consentendo un allineamento dinamico degli oggetti durante la fase di rilevamento, migliorando la gestione di oggetti deformabili o di forme variabili.
Questo approccio può essere particolarmente utile in contesti come:
- Rilevamento di oggetti deformabili: Come stoffe, tende o altri oggetti che cambiano forma.
- Scene complesse: In cui gli oggetti possono sovrapporsi o avere orientamenti non convenzionali.
Il modello DPM consente un miglior allineamento della box di delimitazione agli oggetti reali, riducendo gli errori nelle previsioni di localizzazione.
Architettura di YOLO
YOLO utilizza una rete neurale convoluzionale (CNN) per effettuare le predizioni. L’architettura della rete è generalmente composta da tre parti principali:
- Feature Extraction: Una serie di strati convoluzionali che estraggono le caratteristiche rilevanti dall’immagine di input.
- Fully Connected Layers: Strati completamente connessi che mappano le caratteristiche estratte alle previsioni finali (box di delimitazione e probabilità di classe).
- Output Layer: Il livello finale che fornisce le predizioni di box, probabilità di oggetti e probabilità di classe.
Passaggi di YOLO: Dall’input alla Predizione
- Input dell’immagine:
L’immagine viene ricevuta dal modello e viene preprocessata per adattarsi alle dimensioni specificate, ad esempio 416×416 o 608×608. Il modello lavora con immagini di dimensioni fisse per uniformare il processo di addestramento e inferenza. - Divisione in griglia SxS:
L’immagine preprocessata viene divisa in una griglia di dimensioneSxS
. Ogni cella della griglia è responsabile per predire un numero fisso di bounding boxes. - Predizione delle bounding boxes per cella:
Ogni cella della griglia predice:- Coordinate (x, y, larghezza, altezza) per il centro del box, e (w, h) per la larghezza e altezza..
- Un valore di confidenza: la probabilità che la cella contenga un oggetto.
- Probabilità per ogni classe di oggetto: Una probabilità per ciascuna classe di oggetto (ad esempio, persona, auto, ecc.).
- Rilevamento degli oggetti:
- Ogni cella predice più bounding boxes (ad esempio, 5) per oggetti che potrebbero trovarsi al suo interno.
- Per ogni box, viene calcolata una confidenza, che rappresenta la probabilità che un oggetto sia presente nel box.
- La confidenza viene combinata con la probabilità di ciascuna classe per determinare quale oggetto è più probabile che sia presente in quella box.
- Filtraggio delle predizioni:
- Thresholding: Le celle che hanno una bassa probabilità di contenere un oggetto (inferiore a una soglia predefinita)
- Ogni cella che supera la soglia predice quindi una delle possibili classi di oggetti con la più alta probabilità.
- Non-Maximum Suppression (NMS):
- Il passo finale consiste nell’applicare Non-Maximum Suppression per eliminare le predizioni ridondanti. Se più box predicono lo stesso oggetto, viene mantenuto solo il box con la confidenza più alta.
- Questo passo è essenziale per ridurre la duplicazione di rilevamenti e affinare la localizzazione degli oggetti.
Griglia SxS e Possibilità
La griglia SxS
determina il numero di celle in cui l’immagine viene suddivisa. Il valore di S
influisce direttamente sul numero di predizioni che il modello può fare. Ad esempio:
- Una griglia di 7×7 produrrà 49 celle, ognuna delle quali predice un numero fisso di bounding boxes.
- Aumentare il valore di
S
porta a una griglia più fine e quindi a più celle e potenzialmente più predizioni per oggetti piccoli. Tuttavia, può anche aumentare i falsi positivi se il modello non è ben allenato.
La dimensione della griglia è bilanciata con la risoluzione dell’immagine e la capacità di rilevare oggetti di dimensioni diverse. Una griglia troppo piccola potrebbe non essere in grado di catturare dettagli piccoli, mentre una troppo grande potrebbe non essere efficiente per oggetti di dimensioni maggiori.
Conclusione
YOLO è un potente strumento di rilevamento degli oggetti che bilancia velocità e accuratezza. La sua capacità di operare in tempo reale lo rende ideale per applicazioni in cui le risposte rapide sono cruciali. Con l’evoluzione del modello, YOLO continua a essere uno dei metodi di rilevamento più utilizzati nel campo della visione artificiale.