Rilevamento efficiente degli oggetti con modelli SSD e YoLO: una guida completa per principianti (Parte 3) |  di Raghav Bali |  Marzo 2024

 | Intelligenza-Artificiale

In questa serie di guide per principianti sui modelli di rilevamento di oggetti, abbiamo finora trattato i nozioni di base sul rilevamento di oggetti (parte I) e il Famiglia R-CNN di modelli di rilevamento di oggetti (Seconda parte). Ci concentreremo ora su alcuni dei più famosi rilevamento di oggetti a fase singola modelli in questo articolo. Questi modelli migliorano drasticamente la velocità di inferenza rispetto ai rilevatori multistadio, ma non raggiungono il mAP e altri parametri di rilevamento. Entriamo nei dettagli di questi modelli.

IL Rilevatore multiscatola a scatto singolo (SSD) l'architettura è stata presentata da Liu et. al. nel 2016 come modello di rilevamento di oggetti a fase singola altamente performante. Questo articolo ha presentato un modello altrettanto performante (in termini di mAP) quanto Faster R-CNN ma più veloce con un buon margine sia per le attività di formazione che per quelle di inferenza.

La differenza principale tra la famiglia R-CNN e gli SSD è la componente di proposta della regione mancante (RPN). La famiglia di modelli SSD non parte da un algoritmo di ricerca selettiva o da un RPN per trovare le ROI. SSD adotta un approccio convoluzionale per lavorare su questo compito di rilevamento degli oggetti. Produce un numero predefinito di riquadri di delimitazione e i corrispondenti punteggi di classe come output finale. Inizia con una grande rete pre-addestrata come VGG-16 che viene troncata prima dell'inizio di qualsiasi livello di classificazione. Questa è definita rete di base nella terminologia SSD. La rete di base è seguita da un'unica struttura ausiliaria per produrre gli output richiesti. Di seguito sono riportati i componenti chiave:

  • Mappe di caratteristiche multiscala: la struttura ausiliaria dopo la rete di base è una sequenza di strati convoluzionali. Questi livelli riducono progressivamente la scala o la risoluzione delle mappe delle caratteristiche. Ciò è utile per rilevare oggetti di dimensioni diverse (rispetto all'immagine). La rete SSD adotta un approccio convoluzionale per definire i punteggi delle classi nonché i valori di offset relativi per i riquadri di delimitazione. Ad esempio, la rete utilizza un filtro 3x3xp su una mappa delle caratteristiche di mxnxp, dove p è il numero di canali. Il modello produce un output per ogni cella di mxn a cui viene applicato il filtro.
  • Caselle di ancoraggio predefinite: La rete fa uso di una serie di riquadri di ancoraggio predefiniti (a diverse scale e proporzioni). Per una data mappa di caratteristiche di dimensione mxn, per ciascuna cella viene applicato un numero k di tali riquadri di ancoraggio predefiniti. Queste caselle di ancoraggio predefinite sono definite priori nel caso degli SSD. Per ciascun elemento precedente in ciascuna cella, il modello genera punteggi di classe c e 4 coordinate per i riquadri di delimitazione. Pertanto, in totale per una mappa di caratteristiche di dimensione mxn il modello genera un totale di (c+4)kmn output. Questi output sono generati da mappe di caratteristiche prese da diverse profondità della rete, che rappresentano la chiave per gestire oggetti di dimensioni multiple in un unico passaggio.

La Figura 1 illustra l'architettura di alto livello per SSD con la rete di base come VGG-16 seguita da livelli convoluzionali ausiliari per assistere con mappe di funzionalità multiscala.

Figura 1: Architettura SSD di alto livello basata su VGG-16.  L'architettura mostra livelli di funzionalità aggiuntivi aggiunti per rilevare oggetti di dimensioni diverse.
Figura 1: Architettura SSD di alto livello basata su VGG-16. L'architettura mostra livelli di funzionalità aggiuntivi aggiunti per rilevare oggetti di dimensioni diverse. Fonte: Autore

Come mostrato nella Figura 1, il modello genera un totale di 8732 previsioni che vengono poi analizzate tramite l'algoritmo di soppressione non massima per ottenere infine un riquadro di delimitazione per oggetto identificato. Nel documento, gli autori presentano parametri prestazionali (FPS e mAP) per due varianti, SSD-300 e SSD-512, dove il numero indica la dimensione dell'immagine in input. Entrambe le varianti sono più veloci e ugualmente performanti (in termini di mAP) rispetto alle R-CNN con SSD-300 che raggiungono molti più FPS rispetto a SSD-512.

Come abbiamo appena discusso, SSD produce un numero molto elevato di output per mappa di funzionalità. Ciò crea un enorme squilibrio tra classi positive e negative (per garantire la copertura, il numero di falsi positivi è molto elevato). Per gestire questa e alcune altre sfumature, gli autori descrivono in dettaglio tecniche come mining negativo duro E aumento dei dati. Incoraggio i lettori a leggere questo documento ben redatto per maggiori dettagli.

Nel 2016, un'altra popolare architettura di rilevamento di oggetti a stadio singolo è stata presentata da Redmon et. al. nel loro articolo intitolato “Guardi solo una volta: rilevamento di oggetti unificato e in tempo reale“. Questa architettura è nata più o meno nello stesso periodo dell'SSD ma ha adottato un approccio leggermente diverso per affrontare il rilevamento degli oggetti utilizzando un modello a fase singola. Proprio come la famiglia R-CNN, anche la classe di modelli YOLO si è evoluta nel corso degli anni con versioni successive che migliorano quella precedente. Cerchiamo innanzitutto di comprendere gli aspetti chiave di questo lavoro.

YOLO si ispira al GoogleNet Architettura per la classificazione delle immagini. Similmente a GoogleNet, YOLO utilizza 24 livelli convoluzionali pre-addestrati sul set di dati ImageNet. La rete preaddestrata utilizza immagini di addestramento di dimensioni 224×224 ma, una volta addestrato, il modello viene utilizzato con input riscalati di dimensioni 448×448. Questo ridimensionamento è stato eseguito per garantire che il modello raccolga oggetti piccoli e grandi senza problemi. Si inizia dividendo l'immagine di input in una griglia S x S (il documento menziona una griglia di 7×7 per il set di dati PASCAL VOC). Ogni cella nella griglia prevede B riquadri di delimitazione, il relativo punteggio di oggettività insieme al punteggio di confidenza per ciascuna classe. Pertanto, in modo simile a SSD, ciascuna cella nel caso YOLO restituisce 4 coordinate dei riquadri di delimitazione più un punteggio di oggettività seguito dalle probabilità di previsione della classe C. In totale, otteniamo output S x S x (Bx5 +C) per immagine di input. Il numero di riquadri di delimitazione dell'output è estremamente elevato, simile agli SSD. Questi vengono ridotti a un singolo riquadro di delimitazione per oggetto utilizzando l'algoritmo NMS. La Figura 2 illustra la configurazione generale di YOLO.

Figura 2: Architettura YOLO di alto livello che utilizza 24 livelli convoluzionali seguiti da alcuni livelli completamente connessi per la previsione finale.
Figura 2: Architettura YOLO di alto livello che utilizza 24 livelli convoluzionali seguiti da alcuni livelli completamente connessi per la previsione finale. Fonte: Autore

Come mostrato nella figura 2, la presenza di strati completamente connessi in YOLO è in contrasto con SSD, che ha un design interamente convoluzionale. YOLO è costruito utilizzando un framework open source chiamato Darknet e vanta una velocità di inferenza di 45 FPS. La sua velocità va a scapito della precisione di rilevamento. In particolare, YOLO presenta limitazioni quando si tratta di identificare oggetti più piccoli e nei casi in cui gli oggetti si sovrappongono.

YOLOv2 o YOLO-9000 è arrivato l'anno successivo (2017) con la capacità di rilevare 9000 oggetti (da cui il nome) a 45-90 fotogrammi al secondo! Una delle modifiche minori apportate è stata l'aggiunta di un passaggio aggiuntivo prima di ridimensionare semplicemente gli input a 448×448. Invece, gli autori hanno aggiunto un ulteriore passaggio in cui, una volta addestrato il modello di classificazione originale (con dimensione di input 224×224), ridimensionano l'input a 448×448 e lo ottimizzano leggermente. Ciò consente al modello di adattarsi meglio a una risoluzione maggiore e quindi di migliorare il rilevamento di oggetti più piccoli. Inoltre, il modello convoluzionale utilizzato è una CNN a 30 strati. La seconda modifica consisteva nell'utilizzare le scatole di ancoraggio e questa implementazione tenta di ottenere la dimensione e il numero calcolati in base alle caratteristiche dei dati di addestramento (questo è in contrasto con SSD che utilizza semplicemente un elenco predefinito di scatole di ancoraggio). La modifica finale è stata l'introduzione dell'addestramento multiscala, ovvero invece di limitarsi all'addestramento per una determinata dimensione, l'autore ha addestrato il modello a diverse risoluzioni per aiutare il modello ad apprendere le caratteristiche di oggetti di dimensioni diverse. Le modifiche hanno contribuito a migliorare in buona misura le prestazioni del modello (vedere il documento per numeri esatti ed esperimenti).

YOLOv3 è stato presentato nel 2018 per superare la carenza di mAP di YOLOv2. Questa terza iterazione del modello utilizzava una rete convoluzionale più profonda con 53 strati rispetto ai 24 della versione iniziale. Altri 53 livelli vengono impilati sopra il modello pre-addestrato per l'attività di rilevamento. Utilizza anche blocchi residui, connessioni saltate e livelli di up-sampling per migliorare le prestazioni in generale (si noti che al momento del rilascio delle prime due versioni, alcuni di questi concetti non erano ancora comunemente utilizzati). Per gestire meglio oggetti di dimensioni diverse, questa versione effettua previsioni a diverse profondità della rete. L'architettura YOLOv3 è illustrata nella figura 3 come riferimento.

Figura 3: Architettura di alto livello YOLOv3 con Darknet-53 e rami di previsione multiscala.
Figura 3: Architettura di alto livello YOLOv3 con Darknet-53 e rami di previsione multiscala. Fonte: Autore

Come mostrato nella figura 3, il modello si dirama dal livello 79 e fa previsioni ai livelli 82, 94 e 106 alle scale 13×13, 26×26 e 52×52 rispettivamente per oggetti di grandi, medie e piccole dimensioni. Il modello utilizza 9 scatole di ancoraggio, 3 per ciascuna scala per gestire anche forme diverse. Ciò a sua volta aumenta il numero totale di previsioni effettuate dal modello per oggetto. Il passaggio finale è l'applicazione dell'NMS per ridurre l'output a un solo riquadro di delimitazione per oggetto rilevato. Un altro cambiamento chiave introdotto con YOLOv3 è stato l'uso della perdita sigmoidea per il rilevamento delle classi al posto del softmax. Questa modifica aiuta nella gestione degli scenari in cui abbiamo oggetti sovrapposti.

Mentre l'autore originale del modello YOLO, Joseph Redmon, ha cessato il suo lavoro rilevamento di oggetti(1)la comunità complessiva della visione artificiale non si è fermata. C'è stata una versione successiva chiamata YOLOv4 nel 2020 seguito da un altro fork intitolato YOLOv5 poche settimane dopo (si prega di notare che non esiste un documento/pubblicazione ufficiale con i dettagli di questo lavoro). Sebbene ci siano domande aperte sul fatto che queste versioni successive debbano portare il nome YOLO, è interessante vedere le idee perfezionate e portate avanti. Al momento della stesura di questo articolo, YOLOv8 è già disponibile per uso generale mentre YOLOv9 sta spingendo ulteriormente l’efficienza e altri parametri di riferimento.

Con questo si conclude il nostro brief sui diversi modelli di rilevamento di oggetti, sia multistadio che singolo stadio. Abbiamo trattato i componenti chiave e i principali contributi per comprendere meglio questi modelli. Esistono numerose altre implementazioni come Rete SPP, RetinaNetecc. che hanno un approccio diverso al compito di rilevamento degli oggetti. Sebbene diverse, le idee sono comunque conformi al quadro generale di cui abbiamo discusso in questa serie. Nel prossimo articolo sporcheremo le mani con alcuni modelli di rilevamento di oggetti.

Fonte: towardsdatascience.com

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *