web-dev-qa-db-fra.com

Comment une convolution est-elle calculée sur une image à trois canaux (RVB)?

Disons que nous avons une image monocanal (5x5)

A = [ 1 2 3 4 5
      6 7 8 9 2
      1 4 5 6 3
      4 5 6 7 4
      3 4 5 6 2 ]

Et un filtre K (2x2)

K = [ 1 1
      1 1 ]

Un exemple d'application de convolution (prenons le premier 2x2 de A) serait

1*1 + 2*1 + 6*1 + 7*1 = 16

C'est très simple. Mais introduisons un facteur de profondeur dans la matrice A, c'est-à-dire une image RVB avec 3 canaux ou même des couches conv dans un réseau profond (avec une profondeur = 512 peut-être). Comment l'opération de convolution se ferait-elle avec le même filtre? n travail similaire sera vraiment utile pour un boîtier RGB.

16
Aragorn

Ils seront exactement les mêmes que ceux que vous utilisez avec une seule image de canal, sauf que vous obtiendrez trois matrices au lieu d'une. This est une note de cours sur les principes fondamentaux de CNN, qui, je pense, pourrait vous être utile.

7
Lifu Huang

Disons que nous avons une image à 3 canaux (RVB) donnée par une matrice A

 
 A = [[[198 218 227] 
 [196 216 225] 
 [196 214 224] 
 ... 
 ... 
 [185 201 217] 
 [176 192 208] 
 [162 178 194]] 
 

et un flou kernal comme

 
 K = [[0.1111, 0.1111, 0.1111], 
 [0.1111, 0.1111, 0.1111], 
 [0.1111, 0.1111, 0.1111]] 
 
 #qui est en fait de 0,111 ~ = 1/9 
 

La convolution peut être représentée comme indiqué dans l'image ci-dessous convolution of RGB channel

Comme vous pouvez le voir sur l'image, chaque canal est alambiqué individuellement puis combiné pour former un pixel.

8
Muthukrishnan

Pour les entrées de type RVB, le filtre est en fait 2 * 2 * 3, chaque filtre correspondant à un canal de couleur, résultant en trois réponses de filtre. Ces trois totalisent un flux par biais et activation. enfin, c'est un pixel dans la carte de sortie.

7
flankechen