16

Come viene eseguita l'operazione di convoluzione quando sul livello di ingresso sono presenti più canali? (ad esempio RGB)Reti neurali coattuzionali - Canali multipli

Dopo aver letto sull'architettura/implementazione di una CNN, capisco che ogni neurone in una mappa di caratteristiche fa riferimento a pixel NxM di un'immagine definita dalla dimensione del kernel. Ogni pixel viene quindi calcolato mediante il set di pesi NxM delle mappe di caratteristiche (il kernel/filtro), sommati e inseriti in una funzione di attivazione. Per una semplice immagine in scala di grigi, immagino l'operazione sarebbe qualcosa di aderire al seguente pseudo codice:

for i in range(0, image_width-kernel_width+1): 
    for j in range(0, image_height-kernel_height+1): 
     for x in range(0, kernel_width): 
      for y in range(0, kernel_height): 
       sum += kernel[x,y] * image[i+x,j+y] 

     feature_map[i,j] = act_func(sum) 
     sum = 0.0 

Tuttavia non capisco come estendere questo modello per gestire più canali. Sono necessari tre set di pesi separati per ogni mappa di caratteristiche, condivisa tra ciascun colore?

Riferimenti sezione di questo tutorial 'Pesi condivise': http://deeplearning.net/tutorial/lenet.html Ogni neurone in uno strato funzione mappa riferimenti m-1 con colori fa riferimento dai neuroni separati. Non capisco la relazione che stanno esprimendo qui. I kernel dei neuroni oi pixel e perché fanno riferimento a parti separate dell'immagine?

In base al mio esempio, sembrerebbe che un singolo kernel di neuroni sia esclusivo di una particolare regione in un'immagine. Perché hanno diviso il componente RGB su più regioni?

+0

Sto votando per chiudere questa domanda come off-topic perché appartiene a stats.stackexchange – jopasserat

risposta

27

Come viene eseguita l'operazione di convoluzione quando sono presenti più canali nello strato di ingresso? (Ad esempio RGB)

In tal caso si ha kernel uno 2D per canale di ingresso (a.k.a aereo).

Così si esegue ogni convoluzione (input 2D, kernel 2D) separatamente e si sommano i contributi che fornisce la mappa di funzionalità di output finale.

prega di fare riferimento alla diapositiva 64 di questa CVPR 2014 tutorial da Marc'Aurelio Ranzato:

enter image description here

sono tre set di pesi separati richiesti per caratteristica della mappa, condivise tra ogni colore?

Se si considera una determinata mappa funzione di uscita, si dispone di 3 x kernel 2D (cioè un kernel per ogni canale di ingresso). Ogni kernel 2D condivide gli stessi pesi lungo l'intero canale di input (R, G o B qui).

Quindi l'intero strato convoluzionale è un tensore 4D (nb. Piani di input x nb. Piani di output x kernel width x kernel height).

Perché hanno diviso il componente RGB su più regioni?

sopra descritto pensare ciascun R, G e B canale come separato aereo ingresso con il kernel 2D dedicato.

+0

Il kernel conv con 2D non è condiviso tra tutti e tre i canali?Thought conv layer è un tensore 1 * conv_kernel_num * kernel_width * kernel_height. Se il kernel conv non è condiviso tra i canali, potrei interpretare il kernel conv come un tensore kernel_width * kernel_height * channel_num (3 in questo caso)? – user2696499

Problemi correlati