Software Engineering Institute
A tal fine, la Defense Innovation Unit (DIU) ha recentemente lanciato la xView 2018 Detection Challenge, che è stata condotta dal Pentagono in collaborazione con la National Geospatial-Intelligence Agency, per cercare usi innovativi delle tecniche di computer vision per individuare più accuratamente le immagini nelle immagini satellitari. Come descritto in questo post sul blog, ho lavorato con un team di ricercatori nella sfida xView che ci ha fatto guadagnare un quinto posto. Questa attività è il nostro ultimo sforzo nell’utilizzare l’apprendimento automatico e l’intelligenza artificiale per assistere il governo federale con gli sforzi HADR.
Deep Learning and Satellite Imagery
La scansione delle immagini satellitari per rilevare immagini ed edifici e altri oggetti dallo spazio è diventata una priorità per il governo, ma è spesso un processo lento e minuzioso intrapreso dagli analisti che introduce anche il potenziale di errore umano. Anche con set di dati ad alta risoluzione e classificazione, le sfide possono emergere quando gli analisti incontrano problemi di archiviazione, larghezza di banda e memoria.
Lo stato dell’arte per la visione computerizzata via satellite è rappresentato dalle reti neurali computazionali, che sono state efficaci nel ragionamento sulle immagini satellitari. La mia prima incursione in questo campo è stata con la Functional Map of the World (FMOW) Challenge di IARPA. In collaborazione con l’Applied Physics Laboratory della John Hopkins University, IARPA ha creato un set di dati di più di 1 milione di immagini satellitari multispettrali di siti sulla superficie terrestre da più di 200 paesi. Ogni immagine nel set di dati conteneva almeno un esempio di una struttura o di un oggetto terrestre che rientrava in una delle 63 categorie (62 classi e 1 per la falsa rilevazione) come “struttura militare”, “fienile” o “cantiere”
Il nostro obiettivo era quello di vedere se potevamo ottenere un prototipo funzionale e funzionante con ragionevole precisione. Come descritto in un documento sul nostro lavoro, abbiamo applicato diversi approcci di deep learning utilizzando molti tipi di reti neurali convoluzionali:
Abbiamo avuto tre approcci principali per FMOW:
1) Utilizzando una rete neurale convoluzionale profonda (CNN) (con un’architettura come DenseNet o RetinaNet) pre-addestrata su vari set di dati come un estrattore di caratteristiche generali in tandem con una CNN superficiale che ha imparato caratteristiche specifiche di immagini satellitari. Questi verrebbero combinati usando strati completamente connessi e infine produrrebbero un vettore softmax di lunghezza 63.
2) Addestrare un insieme di classificatori binari “uno contro tutti”
3) “Barando” e usando dati di convalida che contengono falsi rilevamenti, potremmo addestrare una macchina vettoriale di supporto (SVM) che ha imparato a distinguere tra falsi rilevamenti e dati “reali”, poi usare il metodo 1 solo sui dati reali.
Alla fine, il nostro primo metodo è stato quello di maggior successo ed è stata l’architettura del modello che abbiamo iterato più volte per mettere a punto per la sfida.
Costruendo la Functional Map of the World
Costruendo la Functional Map of the World (FMoW), la sfida xView applica la computer vision alla crescente quantità di immagini disponibili dallo spazio in modo da poter comprendere il mondo visivo in nuovi modi e affrontare una serie di importanti applicazioni. Nella ricerca di algoritmi per automatizzare potenzialmente la visione al computer di immagini satellitari, l’xView Challenge fornisce ai concorrenti uno dei più grandi set di dati di immagini satellitari disponibili al pubblico e chiede loro di
- ridurre la risoluzione minima per il rilevamento
- migliorare l’efficienza di apprendimento
- consentire la scoperta di più classi di oggetti
- migliorare il rilevamento di classi a grana fine
Oltre a me, il team dell’xView Challenge comprendeva il 2° Ten. Alex Fulton, uno studente laureato presso lo U.S. Air Force Institute of Technology e l’Information Networking Institute della Carnegie Mellon University; e Kaylene Stocking, uno studente universitario presso l’Università di Pittsburgh.
La xView Challenge si è rivelata una competizione ideale per il nostro lavoro nel Centro di Tecnologia Emergente del SEI, che si concentra sull’identificazione, dimostrazione, estensione e applicazione di nuove tecnologie per soddisfare le esigenze critiche del governo. Promuoviamo la consapevolezza del governo e la conoscenza di queste tecnologie emergenti e la loro applicazione, oltre a modellare e sfruttare la ricerca accademica e industriale. L’xView Challenge ci ha permesso di esplorare diversi approcci alla computer vision che volevamo convalidare.
Il resto del post, che è estratto dal rapporto tecnico che abbiamo presentato come parte della nostra partecipazione alla sfida, evidenzia estratti del nostro lavoro nell’xView Challenge.
Pulizia dei dati
Il set di dati xView è grande – 1 milione di immagini di oggetti con 60 classi e una risoluzione di 0,3 metri – ed etichettato usando annotazioni crowd-sourced per le bounding box e le classi. Il documento che DIUx ha incluso per accompagnare il rilascio del dataset, xView: Objects in Context in Overhead Imagery, discute che le tecniche di raccolta per natura hanno accettato un livello di rumorosità nei dati.
Nella nostra analisi, la quantità di dati etichettati in modo errato e le caselle di contorno rumorose erano abbastanza significative da influenzare l’addestramento generale del modello. Abbiamo esplorato diverse tecniche per la pulizia dei dati e alla fine abbiamo deciso che qualsiasi tecnica che abbiamo implementato sarebbe stata inattuabile dati i vincoli di calendario della sfida. Abbiamo quindi deciso di accettare qualsiasi perdita di precisione che sarebbe stata il risultato dei dati rumorosi.
Elaborazione dei dati tramite Chipping
A causa delle dimensioni dell’immagine e della densità degli oggetti, abbiamo incontrato delle difficoltà quando abbiamo cercato di passare l’intera immagine in una rete neurale. Come descritto nel documento che abbiamo presentato con il nostro set di dati, il modello di base di xView ha tentato di dividere ogni immagine in piastrelle di dimensioni più piccole utilizzando strategie di chipping, utilizzando più dimensioni di chip a 300 px2, 400 px2, e 500 px2 in un modello (multi-res). Abbiamo sperimentato l’approccio multi-res, ma ha destabilizzato il nostro processo di apprendimento, quindi siamo rimasti con una dimensione di chip di 300 px2.
Abbiamo anche sperimentato una semplice tecnica di chipping che prevedeva la sovrapposizione dei chip vicini di una quantità proporzionale alla dimensione del chip (50 per cento), che ha fornito un aumento del 15 per cento nella precisione del rilevamento e si è anche dimostrato più fattibile per l’uso con grandi immagini satellitari.
Abbiamo basato il nostro ragionamento sul fatto che la linea di base ha funzionato significativamente più velocemente del limite di tempo imposto dalla competizione e la nostra osservazione che le prestazioni di rilevamento degli oggetti sono diminuite significativamente in prossimità dei bordi di ogni chip
Abbiamo migliorato ulteriormente il modello lasciando che gli oggetti vicini al centro del confine tra due chip sovrapposti fossero rilevati da entrambi i chip. Invece di contare due volte le rilevazioni sovrapposte, abbiamo prima utilizzato la soppressione non massima per garantire che solo la previsione più sicura venisse emessa.
Suppressione non massima
Abbiamo riscontrato casi in cui i nostri modelli emettevano più caselle sovrapposte sullo stesso oggetto, il che ha portato a una precisione media totale inferiore (mAP). Per risolvere questo problema, abbiamo usato la soppressione non-max per mantenere solo il box più grande, che si adattava sufficientemente all’oggetto.
Aumento dei dati
Aumentare la quantità di dati disponibili tramite l’aumento è una pratica comune nella comunità della computer vision. Il nostro team ha sperimentato varie combinazioni casuali di incrementi per chip a più epoche di allenamento per valutare come il nostro modello ha funzionato con le varianti dei dati, tra cui le seguenti:
- capovolgimenti orizzontali
- capovolgimenti verticali
- conversioni da RGP a spazio dei grigi
- fluttuazioni di luminosità
- regolazioni del contrasto
- distorsioni della tinta
- saturazione aggiustamenti
- distorsioni del colore
- distorsioni del riquadro di delimitazione
- sospensione a un rapporto di aspetto fisso
- sottrazioni medie dei canali
- rotazioni
di questi aumenti, i capovolgimenti orizzontali, i capovolgimenti verticali e i ritagli a un rapporto di aspetto fisso hanno portato al più alto aumento della precisione del modello e del mAP. Abbiamo scartato gli altri aumenti, che hanno portato a guadagni minimi o negativi nelle prestazioni.
Squilibri dei dati
Come mostrato nella tabella seguente, il set di dati fornito da xView era altamente squilibrato, con conseguente processo di apprendimento distorto che ha impedito ai modelli di imparare rappresentazioni accurate di classi non comuni.
Tabella 1: Conteggi delle classi…
CLASS COUNT
Building 287,074
Bus 6,316
Railway Vehicle 17
Un approccio di campionamento casuale avrebbe gravemente sottorappresentato la classe dei veicoli ferroviari, così abbiamo usato un approccio di campionamento inversamente proporzionale, in cui i chip sottorappresentati sono stati sovracampionati dalla loro proporzione inversa nel dataset. Il sovracampionamento è un approccio comune e ci ha fornito una buona stabilità di apprendimento nelle classi sottorappresentate.
Sviluppo di modelli personalizzati
Per fornire un approccio flessibile, define-by-config – invece di scrivere codice per creare un modello, modificare un file di configurazione, che contiene solo parametri, e quel file costruirà automaticamente un modello e lo addestrerà – per creare modelli scalabili, DIUx ha fornito una linea di base che è stata creata utilizzando l’API di rilevamento degli oggetti TensorFlow (TF-ODAPI).
Abbiamo anche sviluppato modelli personalizzati utilizzando TensorFlow e Keras per ospitare funzioni di perdita personalizzate, architetture diverse e vari tipi di preallenamento, abbiamo dovuto guardare al di fuori della TF-OD API.
In generale, la TF-OD API ci ha permesso di creare modelli funzionali e modificare vari parametri e architetture di modelli. Tuttavia, per costruire funzionalità che non sono coperte dal caso d’uso medio, abbiamo trovato necessario scavare più a fondo nel codice personalizzato utilizzando TensorFlow e Keras.
Due delle architetture più comuni per la localizzazione e la classificazione simultanea sono il rilevatore Single Shot MultiBox (SSD) e You Only Look Once (YOLO). La TF-ODAPI fornisce funzionalità per modificare i parametri di entrambe queste architetture e funziona relativamente bene sul set di dati.
Abbiamo anche esplorato oltre la TF-ODAPI e, utilizzando TensorFlow e Keras, abbiamo sperimentato architetture come Retinanet, Faster R-CNN, YOLOv3 e altri modelli personalizzati. Alla fine, una variante di SSD ci ha fornito i migliori risultati. YOLO ha funzionato bene in termini di mAP quando lo abbiamo parametrizzato con un gran numero di anchor box.
Figura 4: Matrice di confusione per SSD. Figura 5: Matrice di confusione per YOLO.
Nelle figure 4 e 5 qui sopra, è importante notare gli alti livelli di confusione intracategoria sia in SSD che in YOLO. In particolare, questi modelli possono classificare cose come auto vs. edificio molto bene, ma all’interno delle categorie si comporta meno che idealmente. Questa limitazione è una funzione della sfida stessa, ed è chiaro che non è stata affrontata efficacemente dai nostri approcci.
Sfide nel preallenamento
Il preallenamento è un passo importante e necessario nell’uso del deep learning per ottenere una maggiore precisione di classificazione nelle immagini satellitari. Il nostro team ha identificato un dataset parallelo chiamato “DOTA: A Large-scale Dataset for Object Detection in Aerial Images” che forniva 15 classi per localizzare e classificare oltre con caselle che non erano allineate in asse, a differenza di xView. Il nostro obiettivo era quello di imparare le caratteristiche generali delle classi da DOTA, per poi continuare l’addestramento su xView con un vettore di output più grande per ospitare le sue 60 classi e sperare di osservare un grande guadagno in accuratezza.
Il pre-addestramento su DOTA, tuttavia, non è stato un successo. Mentre siamo stati in grado di ottenere mAP fino a 0,75 su quel set di dati, abbiamo spesso ottenuto risultati peggiori della linea di base una volta trasferiti a xView. Tuttavia, abbiamo osservato un urto nel nostro punteggio F1. Poiché non era la metrica da battere, non abbiamo perseguito ulteriormente questa linea di esplorazione. Il pre-addestramento su un set di dati più grande come ImageNet non ci ha fornito nemmeno guadagni in mAP.
Guardando avanti
L’uso del deep learning nelle immagini satellitari non solo aiuta a identificare dove si verificano le crisi, ma aiuta anche i soccorritori a salvare vite umane. Il nostro obiettivo con xView era quello di dimostrare che è possibile costruire un prototipo molto grande in un tempo relativamente piccolo per risolvere gli obiettivi della missione.
Il successo del nostro approccio è stato convalidato dal sistema di punteggio dell’xView Challenge che ha assegnato automaticamente un punteggio alle candidature in base alla precisione della classificazione.
Il DIU ha dichiarato in un recente comunicato stampa di aver già iniziato a testare gli algoritmi vincitori dell’xView Challenge sulla scia dell’uragano Florence, aiutando il personale di emergenza a identificare rapidamente aree allagate e strade impraticabili.