Transformatori DETR per il rilevamento degli oggetti

Transformatori DETR per il rilevamento e la trasformazione degli oggetti

Approfondimento e chiare spiegazioni sul paper “Rilevazione end-to-end con transformers”

Foto di Aditya Vyas su Unsplash

Nota: Questo articolo approfondisce il mondo intricato della Computer Vision, concentrandosi specificamente su Transformers e il Mechanismo di Attenzione. Si consiglia di essere familiari con i concetti chiave del paper “Attenzione è tutto ciò di cui hai bisogno”.

Un istante di storia

DETR, acronimo di DEtection TRansformer, ha aperto una nuova ondata nella rilevazione degli oggetti dalla sua concezione da parte di Nicolas Carion e del team di Facebook AI Research nel 2020.

Pur non avendo attualmente lo status di SOTA (State Of The Art), la riformulazione innovativa di DETR dei compiti di rilevazione degli oggetti ha influenzato significativamente modelli successivi, come CO-DETR, attualmente lo Stato dell’Arte nella Rilevazione degli Oggetti e Segmentazione delle Istanze.

Allontanandosi dal classico scenario del problema uno-a-molti, in cui ogni verità fondamentale corrisponde a una miriade di candidati ancorati, DETR introduce una prospettiva nuova considerando la rilevazione degli oggetti come un problema di previsione di un insieme, con una corrispondenza uno a uno tra le previsioni e la verità fondamentale, eliminando così la necessità di determinate tecniche di post-elaborazione.

Rinfrescati sulla Rilevazione degli Oggetti

La rilevazione degli oggetti è un campo della computer vision che si concentra sull’identificazione e la localizzazione degli oggetti all’interno di immagini o frame video. Oltre a classificare semplicemente un oggetto, fornisce un box delimitatore, indicando la posizione dell’oggetto nell’immagine, consentendo così ai sistemi di comprendere il contesto spaziale e il posizionamento dei vari oggetti identificati.

Segmentazione video YOLO5, fonte

La rilevazione degli oggetti è molto utile di per sé, ad esempio nel campo della guida autonoma, ma è anche un compito preliminare per la segmentazione delle istanze, dove si cerca di individuare un contorno più preciso degli oggetti, consentendo nel frattempo di differenziare le diverse istanze (a differenza della segmentazione semantica).

Demistificando la Non-Maximum Suppression (e sbarazzarsene)

Non-Maximum Suppression, immagine dell'autore

La Non-Maximum Suppression (NMS) è da tempo il fulcro degli algoritmi di rilevazione degli oggetti, svolgendo un ruolo indispensabile nel post-processing per raffinare le predizioni. Nei framework tradizionali di rilevazione degli oggetti, il modello propone una moltitudine di box delimitatori attorno a potenziali regioni oggetto, alcune delle quali inevitabilmente presentano notevole sovrapposizione (come si vede nell’immagine sopra).

La NMS affronta questo problema conservando il box delimitatore con il punteggio di oggettività previsto massimo e contemporaneamente sopprimendo i box circostanti che mostrano un alto grado di sovrapposizione, quantificato dalla metrica Intersection over Union (IoU). In particolare, dato un valore di soglia predefinito per l’IoU, la NMS seleziona in modo iterativo il box delimitatore con il punteggio di confidenza più alto e annulla quelli con IoU superiore a questa soglia, garantendo una singola e altamente affidabile previsione per oggetto

Malgrado la sua ubiquità, DETR (DEtection TRansformer) evita audacemente la convenzionale NMS, reinventando la rilevazione degli oggetti attraverso la formulazione del problema come previsione di un insieme.

Sfruttando i transformer, DETR predice direttamente un insieme di bounding box di dimensione fissa e elimina la necessità del tradizionale NMS, semplificando notevolmente il pipeline di rilevamento oggetti pur preservando, se non migliorando, le prestazioni del modello.

Approfondimento dell’architettura DETR

Nel quadro generale, DETR è

  • Un Codificatore di Immagini (in realtà è un doppio Codificatore di Immagini perché ci sono prima un Scheletro CNN e poi un Codificatore a Transformer per maggiore espressività)
  • Un Decoder a Transformer che produce le bounding box dalla codifica dell’immagine.
Architettura DETR, immagine dall'articolo

Andiamo nei dettagli di ogni parte:

  1. Scheletro:

Iniziamo da un’immagine iniziale con 3 canali di colore:

E questa immagine viene alimentata in uno scheletro che è una Rete Neurale Convoluzionale

I valori tipici che usiamo sono C = 2048 e H = W = H0 =W0 = 32

2. Codificatore a Transformer:

Il Codificatore a Transformer teoricamente non è obbligatorio, ma aggiunge maggiore espressività allo scheletro, e studi di ablation mostrano una migliorata performance.

Innanzitutto, una convoluzione 1×1 riduce la dimensione dei canali dalla mappa di attivazione ad alto livello f da C a una dimensione più piccola d.

Dopo la convoluzione

Ma come sapete, i Transformer mappano una sequenza di vettori di input in una sequenza di vettori di output, quindi è necessario ridurre la dimensione spaziale:

Dopo aver ridotto la dimensione spaziale

Ora siamo pronti per alimentare ciò al Codificatore a Transformer.

È importante notare che il Codificatore a Transformer utilizza solo il meccanismo di auto-attenzione.

Ecco fatto per la Parte di Codifica dell’Immagine!

Ulteriori dettagli sul Decoder, Immagine dall'articolo

3. Decoder a Transformer:

Questa parte è la più difficile da capire, resistete, se capite questa, capite la maggior parte dell’articolo.

Il Decoder utilizza una combinazione di meccanismi di auto-attenzione e inter-attenzione. Viene alimentato con N interrogazioni di oggetti e ogni interrogazione sarà trasformata in una bounding box e una classe in uscita.

Come appare una previsione di una bounding box?

In realtà è composta da 2 componenti.

  • Una bounding box ha alcune coordinate (x1, y1, x2, y2) per identificare la bounding box.
  • Una classe (ad esempio gabbiano, ma può anche essere vuota)

È importante notare che N è fisso. Significa che DETR prevede sempre esattamente N bounding box. Ma alcune di esse possono essere vuote. Dobbiamo solo assicurarci che N sia abbastanza grande da coprire abbastanza oggetti nelle immagini.

Quindi il meccanismo di inter-attenzione può attendere le caratteristiche dell’immagine prodotte dalla parte di Codifica (Scheletro + Codificatore a Transformer).

Se non siete sicuri del meccanismo, questo schema dovrebbe chiarire le cose:

Meccanismo di attenzione dettagliato, immagine dall'articolo

Nell’architettura originale Transformer produciamo un token e poi utilizziamo una combinazione di self-attention e cross-attention per produrre il token successivo e ripetere il processo. Ma qui non abbiamo bisogno di questa formulazione ricorrente, possiamo semplicemente produrre tutti gli output contemporaneamente in modo da poter sfruttare il parallelismo.

La principale innovazione: Bipartite Matching Loss

Come detto in precedenza, DETR produce esattamente N output (bboxes + classe). Ma ogni output corrisponde solamente ad una ground truth. Se ricordate bene, questo è il punto principale, non vogliamo applicare alcun post-processing per filtrare le box sovrapposte.

Bipartite Matching, Immagine dell'autore

Vogliamo essenzialmente associare ogni previsione alla ground truth più vicina. Quindi stiamo effettivamente cercando una corrispondenza biunivoca tra l’insieme delle previsioni e l’insieme delle ground truth, che minimizza una perdita totale.

Allora come definiamo questa perdita?

1. La perdita di matching (perdita pairwise)

Abbiamo innanzitutto bisogno di definire una perdita di matching, che corrisponde alla perdita tra una box di previsione e una box di ground truth:

E questa perdita è divisa in 2 componenti:

  • La perdita di classificazione (la classe prevista all’interno della bounding box è la stessa della ground truth)
  • La perdita della bounding box (la bounding box è vicina alla ground truth)
Matching Loss

E più precisamente per la componente della bounding box ci sono 2 sotto-componenti:

  • Perdita di Intersezione sopra Unione (IOU)
  • Perdita L1 (differenza assoluta tra le coordinate)

2. Perdita Totale della Corrispondenza Biunivoca

Per calcolare la perdita totale, sommiamo semplicemente su tutte le N istanze:

Quindi fondamentalmente il nostro problema è trovare la corrispondenza biunivoca che minimizza la perdita totale:

Riformulazione del problema

Considerazioni sulle Prestazioni

Prestazioni di DETR vs Faster RCNN
  • DETR: Questo si riferisce al modello originale, che utilizza un trasformatore per la rilevazione degli oggetti e un ResNet-50 come base.
  • DETR-R101: Questa è una variante di DETR che utilizza una base ResNet-101 al posto di ResNet-50. Qui, “R101” si riferisce a “ResNet-101”.
  • DETR-DC5: Questa versione di DETR utilizza lo stadio C5 dilatato modificato nella base ResNet-50, migliorando le prestazioni del modello sugli oggetti più piccoli grazie all’aumentata risoluzione delle caratteristiche.
  • DETR-DC5-R101: Questa variante combina entrambe le modifiche. Utilizza una base ResNet-101 e include lo stadio C5 dilatato, beneficiando sia della rete più profonda che dell’aumentata risoluzione delle caratteristiche.

DETR supera nettamente i baselines sugli oggetti di grandi dimensioni, molto probabilmente grazie ai calcoli non locali consentiti dal transformer. Ma interessantemente, DETR ottiene prestazioni inferiori sugli oggetti di piccole dimensioni.

Perché il meccanismo di attenzione è così potente in questo caso?

Attenzione su istanze sovrapposte, immagine tratta dall'articolo

Molto interessante, possiamo notare che nel caso delle istanze sovrapposte, il meccanismo di attenzione è in grado di separare correttamente le singole istanze come mostrato nell’immagine sopra.

Meccanismo di attenzione sulle estremità

È anche molto interessante notare che l’attenzione è concentrata sulle estremità degli oggetti per produrre il bounding box, esattamente ciò che ci aspettiamo.

In conclusione

DETR non è solo un modello; è un cambio di paradigma, che trasforma il rilevamento degli oggetti da un problema di uno-a-molti in un problema di previsione di insiemi, utilizzando in modo efficace le innovazioni dell’architettura del Transformer.

Sono state apportate migliorie dalla sua creazione, con modelli come DETR++ e CO-DETR che ora sono alla guida come Stato dell’Arte nella segmentazione delle istanze e nel rilevamento degli oggetti nel dataset COCO.

Grazie per la lettura! Prima di andare:

GitHub – FrancoisPorcher/awesome-ai-tutorials: La migliore raccolta di tutorial di intelligenza artificiale per farti diventare…

La migliore raccolta di tutorial di intelligenza artificiale per farti diventare un boss della Data Science! – GitHub…

github.com

Dovresti ricevere i miei articoli nella tua casella di posta. Iscriviti qui.

Se desideri avere accesso ad articoli premium su VoAGI, ti basta una membership di $5 al mese. Se ti registri con il mio link, mi stai supportando con una parte della tua quota senza costi aggiuntivi.

Se hai trovato questo articolo interessante e utile, considera di seguirmi e di lasciare un applauso per ottenere contenuti approfonditi! Il tuo supporto mi aiuta a continuare a produrre contenuti che contribuiscono alla nostra comprensione collettiva.

Riferimenti

  • “End-to-End Object Detection with Transformers” di Nicolas Carion, Francisco Massa, Gabriel Synnaeve, Nicolas Usunier, Alexander Kirillov e Sergey Zagoruyko. Puoi leggerlo integralmente su arXiv.
  • Zong, Z., Song, G., & Liu, Y. (Anno di pubblicazione). DETRs with Collaborative Hybrid Assignments Training. https://arxiv.org/pdf/2211.12860.pdf.
  • Dataset COCO