Deep Learning per l’Object Detection

[Slide](C:\UNI\Magistrale\visione\13 - Deep learning for Object detection.pdf)

Indice


Object Detection

Definizione

L’object detection è il task che consiste nel localizzare e classificare tutti gli oggetti di interesse presenti in un’immagine. L’output non è una singola etichetta (come nella classificazione) ma un insieme di bounding box — ciascuna con le coordinate e una classe associata.

In pratica: dato uno scatto di una strada, l’object detector deve restituire “pedone a sinistra in alto”, “auto al centro”, “bici in basso a destra” — con rettangoli precisi attorno a ciascun oggetto. È un problema molto più difficile della classificazione perché il numero e la posizione degli oggetti sono variabili.

Le sfide principali:

  • Oggetti di scale diverse nella stessa immagine (un semaforo lontano e un’auto vicina)
  • Occlusioni parziali tra oggetti
  • Numero variabile di oggetti per immagine
  • Necessità di essere veloci per applicazioni in tempo reale

Valutazione delle Prestazioni

Average Precision (AP)

Per valutare la qualità di un detector su una singola classe si usa l’Average Precision, che aggrega precisione e recall al variare della soglia di confidenza.

Prima, due concetti necessari:

  • Una detection è un True Positive (TP) se la bounding box ha IoU con una ground truth della classe corretta
  • IoU (Intersection over Union): tra box predetta e ground truth

Definizione

L’Average Precision è l’area sotto la curva Precision-Recall ottenuta variando la soglia di confidenza del detector. Un AP di 1.0 significa detection perfetta per quella classe.

In pratica: un detector produce molte predizioni con diversi livelli di confidenza. Abbassando la soglia si accettano più box (recall sale, precisione scende). L’AP sintetizza questa tradeoff in un unico numero.

mean Average Precision (mAP)

Definizione

La mean AP (mAP) è la media delle AP su tutte le classi da riconoscere. È la metrica standard per confrontare detector su benchmark come COCO e PASCAL VOC.

Note

Su COCO si riporta spesso la mAP calcolata su più soglie IoU (da 0.5 a 0.95 con passo 0.05), che premia detector con box molto precise. Su PASCAL VOC si usa tradizionalmente IoU = 0.5.


Framework Generale

La maggior parte dei detector, sia classici che profondi, segue lo stesso schema concettuale in tre fasi.

Region Proposal

Si genera un insieme di regioni candidate dell’immagine che potrebbero contenere un oggetto. L’obiettivo è avere un recall alto (non perdere oggetti veri) pur limitando il numero di regioni da analizzare.

Object Prediction

Per ogni regione candidata si determina:

  • Classe: quale oggetto contiene (o “sfondo” se non c’è nulla)
  • Bounding box refinement: aggiustamento fine delle coordinate della box (la region proposal è approssimativa)

Non-Maximum Suppression (NMS)

Definizione

La Non-Maximum Suppression è un algoritmo post-processing che elimina le detection ridondanti: se più box si sovrappongono molto (IoU alto) e si riferiscono alla stessa classe, viene tenuta solo quella con confidenza più alta.

In pratica: un detector produce tipicamente decine di box per lo stesso oggetto. NMS le riduce a una sola, quella “migliore”. È applicata alla fine di qualunque detector.


Sliding Windows e Image Pyramids

L’approccio più semplice per la localizzazione è far scorrere una finestra di dimensione fissa sull’immagine e classificare ogni patch. Per gestire oggetti di scale diverse si usa una image pyramid: l’immagine viene ridimensionata a più scale e su ciascuna scala si applica la sliding window.

Warning

Il costo computazionale è proibitivo: per ogni scala, ogni posizione e ogni proporzione di finestra occorre eseguire una classificazione. Con reti profonde, questo approccio è impraticabile senza ottimizzazioni significative.


R-CNN

R-CNN (Girshick et al., 2014) è il primo detector basato su CNN. Separa nettamente la fase di generazione delle regioni dalla fase di classificazione.

Definizione

La Selective Search è un algoritmo classico (non deep) che genera ~2000 region proposals per immagine raggruppando pixel simili per colore, texture e forma in modo gerarchico bottom-up.

Rispetto alla sliding window, Selective Search è molto più efficiente: genera poche regioni ma con alto recall — quasi nessun oggetto reale viene mancato.

Classificazione per Regione

Per ogni regione proposta da Selective Search, R-CNN:

  1. Ridimensiona la patch a una dimensione fissa (es. )
  2. Estrae feature passandola attraverso una CNN pre-addestrata (estrattore di feature)
  3. Classifica le feature con un classificatore SVM per ogni classe
  4. Affina le coordinate della bounding box con un regressore lineare

Limiti di R-CNN

  • Lento: la CNN viene eseguita ~2000 volte per immagine (una volta per ogni region proposal)
  • Storage: le feature di tutte le regioni devono essere salvate su disco per addestrare gli SVM
  • Training in più fasi: CNN, SVM e regressore vengono addestrati separatamente

Fast R-CNN

Fast R-CNN (Girshick, 2015) risolve il principale collo di bottiglia di R-CNN: invece di estrarre feature da ogni regione separatamente, passa l’intera immagine una sola volta attraverso la CNN e poi proietta le region proposals sulla feature map risultante.

Region of Interest Pooling

Definizione

Il RoI Pooling è un layer che estrae un vettore di feature di dimensione fissa da una regione arbitraria della feature map, dividendo la regione in una griglia di celle e applicando max pooling su ciascuna.

In pratica: la CNN elabora l’immagine una volta sola producendo una feature map . Per ogni region proposal (proiettata sulla feature map), il RoI Pooling estrae un vettore di dimensione fissa — indipendentemente dalla forma della regione originale. Questo elimina il ridimensionamento delle patch e rende il tutto circa 25× più veloce di R-CNN.

Multi-task Loss

Fast R-CNN addestra classificatore e regressore congiuntamente con una loss unica:

  • : cross-entropy per la classificazione della regione
  • : Smooth L1 loss per la regressione delle coordinate della bounding box

Questo elimina la pipeline separata di R-CNN e migliora le prestazioni perché i due obiettivi si co-addestrare.

Note

Il collo di bottiglia di Fast R-CNN è ora la Selective Search, che gira su CPU e richiede ~2 secondi per immagine.


Faster R-CNN

Faster R-CNN (Ren et al., 2015) risolve l’ultimo collo di bottiglia integrando la generazione delle region proposals dentro la rete stessa.

Region Proposal Network

Definizione

La Region Proposal Network (RPN) è una piccola rete fully convoluzionale che, condividendo la feature map con il detector principale, genera region proposals direttamente su GPU.

La RPN scorre la feature map con una piccola finestra e, per ogni posizione, predice:

  • Se quella posizione contiene un oggetto (objectness score)
  • Le coordinate di anchor box — box di dimensioni e proporzioni predefinite (es. 3 scale × 3 proporzioni = 9 anchor per posizione)

Le anchor rappresentano ipotesi a priori sulle possibili dimensioni degli oggetti. La RPN impara a dire “c’è un oggetto qui” e “aggiusta questa anchor così”.

In pratica: Faster R-CNN può girare a ~5 fps (vs. ~0.5 fps di Fast R-CNN), con le region proposals generate in ~10ms invece di ~2s.


Multi-stage vs Single-stage

Definizione

I detector multi-stage (come Faster R-CNN) separano la generazione di region proposals dalla classificazione finale. I detector single-stage (come YOLO e SSD) effettuano entrambe le operazioni in un unico passaggio sulla rete.

Multi-stageSingle-stage
AccuratezzaGeneralmente più altaLeggermente inferiore
VelocitàPiù lentaPiù veloce, adatta al real-time
ComplessitàPipeline più articolataArchitettura più semplice

Confronto tra Detector

Le principali architetture di object detection possono essere lette come una progressiva riduzione del costo computazionale: da detector multi-stage molto accurati ma lenti, fino a detector single-stage pensati per il real-time.

ReteTipoArchitetturaConcetto nuovoDifferenza principale
R-CNNMulti-stageSelective Search + CNN + SVM + regressore boxPrima object detection con CNNMolto accurata per l’epoca, ma lenta perché esegue la CNN su ogni proposta
Fast R-CNNMulti-stageCNN su immagine intera + RoI Pooling + multi-task lossCondivisione feature map e RoI PoolingMolto più veloce di R-CNN, ma dipende ancora da Selective Search
Faster R-CNNMulti-stageCNN condivisa + RPN + RoI Pooling + detection headRegion Proposal Network e anchor boxGenera proposte dentro la rete, eliminando Selective Search
YOLOSingle-stageGriglia , predizione diretta di box e classiDetection come regressione unicaMolto veloce e adatta al real-time, meno precisa su oggetti piccoli o vicini
SSDSingle-stageVGG-16 + feature map multi-scala + default boxDefault box e predictor multi-scalaPiù robusta di YOLO v1 sulle scale diverse, ancora real-time
RetinaNetSingle-stageResNet + FPN + detection headFocal LossSingle-stage accurato quanto i multi-stage, risolve lo sbilanciamento foreground/background
FPNComponente / neckPiramide top-down + connessioni lateraliFeature multi-scala semanticheMigliora detection di oggetti piccoli e a scale diverse

Lettura Comparativa dei Detector

R-CNN è il primo detector basato su CNN. Usa Selective Search per generare circa 2000 region proposals per immagine. Ogni regione viene ridimensionata, passata in una CNN per estrarre feature, classificata con SVM e rifinita con un regressore lineare per la bounding box. Il limite principale è che la CNN viene eseguita una volta per ogni proposta, quindi il sistema è molto lento e richiede un training in più fasi.

Fast R-CNN risolve il collo di bottiglia principale di R-CNN: invece di passare ogni regione nella CNN, elabora l’intera immagine una sola volta e poi proietta le region proposals sulla feature map. Il RoI Pooling estrae da ogni regione un vettore di dimensione fissa. Classificazione e regressione della box vengono addestrate insieme con una multi-task loss.

Faster R-CNN elimina la Selective Search introducendo la Region Proposal Network. La RPN scorre sulla feature map condivisa e, per ogni posizione, predice objectness score e offset rispetto ad alcune anchor box. In questo modo la generazione delle proposte diventa parte della rete ed è eseguita su GPU.

YOLO (You Only Look Once) è un detector single-stage. L’immagine viene divisa in una griglia e ogni cella predice bounding box, confidence e probabilità di classe per gli oggetti il cui centro cade nella cella. Il vantaggio è la velocità, perché tutta la detection avviene con un solo forward pass; il limite di YOLO v1 è la difficoltà con oggetti piccoli o molto vicini.

SSD (Single Shot MultiBox Detector) è single-stage come YOLO, ma usa feature map a scale multiple. Le feature map ad alta risoluzione sono usate per oggetti piccoli, quelle a bassa risoluzione per oggetti grandi. Ogni posizione predice offset rispetto a default box predefinite e probabilità di classe. Questo lo rende più robusto alle variazioni di scala rispetto a YOLO v1.

RetinaNet affronta il problema principale dei detector single-stage: lo sbilanciamento tra tantissime anchor di background e poche anchor positive. La Focal Loss riduce il peso degli esempi facili e concentra il training sugli esempi difficili. In questo modo RetinaNet mantiene la semplicità single-stage ma raggiunge accuratezze competitive con i multi-stage.

FPN (Feature Pyramid Network) non è un detector completo, ma un componente usato da molti detector moderni. Combina feature profonde, più semantiche ma a bassa risoluzione, con feature superficiali, più dettagliate ma meno semantiche. Il percorso top-down e le connessioni laterali producono feature multi-scala di qualità uniforme, molto utili per rilevare oggetti piccoli.


YOLO

YOLO (You Only Look Once, Redmon et al., 2016) reformula l’object detection come un unico problema di regressione: da pixel a coordinate di bounding box e probabilità di classe, in un solo passaggio.

Architettura (YOLOv1):

  • 24 layer convoluzionali
  • 4 layer di max pooling
  • 2 layer fully connected

Idea chiave: l’immagine viene divisa in una griglia (es. ). Ogni cella della griglia è responsabile di predire gli oggetti il cui centro cade in quella cella. Per ogni cella si predice:

  • bounding box (con coordinate e confidence)
  • Le probabilità di classe condizionate alla presenza di un oggetto

Tutto questo viene prodotto dall’unico passaggio forward della rete, che restituisce un tensore .

Limiti di YOLO v1

  • Difficoltà con oggetti molto piccoli o molto vicini (ogni cella predice solo box)
  • Localizzazione meno precisa rispetto ai detector multi-stage

SSD

SSD (Single Shot MultiBox Detector, Liu et al., 2016) combina l’efficienza single-stage di YOLO con l’uso di feature map a scale multiple per gestire meglio oggetti di dimensioni diverse.

Architettura:

  • Backbone VGG-16 (troncato dopo il layer conv5_3)
  • 4 layer convoluzionali extra a risoluzione decrescente
  • 6 layer convolutional predictor (uno per ogni scala di feature map)

Default Box

Definizione

Le default box (analoghe alle anchor di Faster R-CNN) sono box di dimensioni e proporzioni predefinite associate a ogni posizione di ogni feature map. SSD predice offset rispetto alle default box, non coordinate assolute.

Ogni layer predictor opera su una feature map diversa: i layer iniziali (alta risoluzione) gestiscono oggetti piccoli, i layer finali (bassa risoluzione) gestiscono oggetti grandi.

Convolutional Predictor

Per ogni cella di ogni feature map, un piccolo filtro convoluzionale predice:

  • Le probabilità di classe (più sfondo) per ogni default box
  • I 4 offset per affinare la default box

Il totale delle predizioni viene filtrato con NMS per produrre le detection finali.

Note

SSD raggiunge 59 fps su immagini con mAP competitiva su PASCAL VOC, rendendolo uno dei detector real-time più usati prima dell’avvento delle versioni successive di YOLO.


RetinaNet

RetinaNet (Lin et al., 2017) è un detector single-stage che risolve il principale problema dei detector a stadio singolo: lo squilibrio estremo tra background e oggetti reali durante il training.

Architettura:

  • ResNet come backbone
  • Feature Pyramid Network come collo di bottiglia multi-scala
  • 1 detection head condiviso (classification + box regression)

Il problema: su migliaia di anchor, pochissime contengono oggetti reali. La loss dei tanti “facili” background domina il training, impedendo alla rete di imparare sui casi difficili.

La soluzione è la Focal Loss:

Il fattore riduce il peso degli esempi “facili” (sfondo classificato correttamente con alta confidenza), concentrando il training sugli esempi difficili.

Feature Pyramid Network

Definizione

La Feature Pyramid Network (FPN) costruisce una piramide di feature map a scale multiple combinando le feature di diversi strati della backbone tramite connessioni laterali e un percorso top-down.

In pratica: la backbone produce feature map a risoluzioni decrescenti (più profondi = più semantici ma meno risoluti). FPN aggiunge un percorso top-down che “riporta” semantica agli strati superficiali ad alta risoluzione tramite upsampling e somma con le feature laterali.

Il risultato è una piramide di feature map che combinano alta risoluzione (utile per oggetti piccoli) e alta semantica (utile per classificare). Ogni livello della piramide viene usato per rilevare oggetti della scala corrispondente.

Note

FPN è diventata un componente standard di quasi tutti i detector moderni: Faster R-CNN + FPN, YOLO v3+, SSD migliorato. La sua capacità di rilevare oggetti a scale diverse con feature di qualità uniforme è il principale contributo.