Come aggiungere funzionalità non immagine lungo le immagini laterali come input delle CNN


14

Sto addestrando una rete neurale convoluzionale per classificare le immagini in condizioni di nebbia (3 classi). Tuttavia, per ciascuna delle circa 150.000 immagini ho anche quattro variabili meteorologiche disponibili che potrebbero aiutare a prevedere le classi delle immagini. Mi chiedevo come avrei potuto aggiungere le variabili meteorologiche (ad es. Temperatura, velocità del vento) alla struttura esistente della CNN in modo che potesse aiutare nella classificazione.

Un modo a cui posso già pensare è quello di creare un'altra (piccola) rete neurale feedforward accanto alla CNN e quindi concatenare le uscite degli strati CNN e gli strati nascosti della rete neurale non immagine l'uno con l'altro sul livello denso.

Il secondo modo che mi viene in mente è solo di contattare queste funzionalità al livello denso. Tuttavia, in questo caso, le variabili non di immagine (credo) saranno solo in grado di fare previsioni lineari.

Esistono altri modi (migliori) per includere nel modello le funzioni non di immagine? E quale sarebbe il metodo consigliabile considerando la quantità di dati che ho?

Un'altra domanda che ho è se dovrei sbloccare o meno gli strati convoluzionali mentre mi alleno con queste caratteristiche non di immagine? Questi strati di un Resnet-18 (che sono stati inizializzati come pre-addestrati su ImageNet) sono già stati perfezionati usando le immagini. La mia ipotesi è che dovrei tenerli congelati e sbloccare solo il livello denso poiché è solo qui che le caratteristiche non dell'immagine entrano in "contatto" con le caratteristiche dell'immagine (non prima nella CNN). Se sbaglio, per favore, dillo!


potresti modellare la distribuzione di join tra funzionalità aggiuntive e immagini tramite alcuni modelli generativi come GAN, VAE. allora potresti ottenere le variabili latenti e usarle con un criterio supervisionato
Fadi Bakoura

Anch'io sono in una situazione simile. Sto usando una pila di immagini del cielo negli ultimi 15 minuti per cercare di prevedere l'output dei pannelli solari vicino alla telecamera 15 minuti nel futuro. Di recente ho deciso di mettere in gioco diverse caratteristiche meteorologiche (una per ogni immagine come nel tuo caso). Il tuo primo suggerimento ha funzionato molto meglio del secondo (di aggiungere direttamente funzioni non grafiche al livello denso). Per essere precisi, il secondo suggerimento ha portato a problemi con la normalizzazione. Ho scoperto che per qualche motivo non posso ancora spiegare, il livello di Batchnorm non è stato in grado di normalizzare la grafica
Vignesh Venugopal,

@VigneshVenugopal, per favore, citami nei commenti, altrimenti non posso essere avvisato. Qual'è la tua domanda? :)
Media,

Come posso concatenare la velocità, l'acceleratore e l'angolo di sterzata alle mie reti? Potresti spiegare di denso quanti densi aggiungere? Cosa dipende da questo?
Nasrinzaghari,

Risposte:


10

La mia soluzione è come la tua prima raccomandazione, ma con lievi modifiche.

  1. Costruisci i tuoi strati convoluzionali e impilarli fino allo strato piatto. Questa rete dovrebbe essere alimentata con i dati dell'immagine.
  2. Appiattisci le tue mappe di attivazione
  3. Costruisci una rete completamente connessa con il numero desiderato di neuroni e strati.
  4. Concatenare le uscite dello strato appiattito della rete convoluzionale e della rete completamente connessa.
  5. aggiungi alcuni strati densi e collegali all'ultimo livello che rappresenta le tue classi.

È possibile utilizzare le normali funzioni di costo per questa architettura.


In Keras, puoi farlo con i Concatenate()livelli?
Leevo,

Sì. Dovresti concatenarli per metterli uno accanto all'altro.
Media

Devo usare Concatenate()o concatenate()livelli? Non posso dire la differenza
Leevo

Dipende dal modo in cui vuoi creare la tua rete. A proposito, puoi vedere l'elenco degli argomenti di ciascuno. Differiscono. Potresti anche dare un'occhiata qui .
Media
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.