computer vision - libro - Redes neuronales convolucionales-Múltiples canales
redes neuronales convolucionales pdf (1)
¿Cómo se realiza la operación de convolución cuando hay múltiples canales presentes en la capa de entrada? (por ejemplo, RGB)
Después de leer un poco sobre la arquitectura / implementación de una CNN, entiendo que cada neurona en un mapa de características hace referencia a los píxeles NxM de una imagen, según lo define el tamaño del kernel. Cada píxel es factorizado por los mapas de características del conjunto de pesos NxM aprendidos (el núcleo / filtro), sumados e ingresados en una función de activación. Para una imagen de escala de grises simple, imagino que la operación sería algo que se adhiera al siguiente pseudo código:
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
Sin embargo, no entiendo cómo extender este modelo para manejar múltiples canales. ¿Se requieren tres conjuntos de pesos separados por mapa de características, compartidos entre cada color?
Referencia a la sección ''Pesos compartidos'' de este tutorial: http://deeplearning.net/tutorial/lenet.html Cada neurona en un mapa de características hace referencia a la capa m-1 con colores a los que se hace referencia desde neuronas separadas. No entiendo la relación que están expresando aquí. ¿Las neuronas son núcleos o píxeles y por qué hacen referencia a partes separadas de la imagen?
Basado en mi ejemplo, parecería que un núcleo de neuronas individuales es exclusivo de una región particular en una imagen. ¿Por qué han dividido el componente RGB en varias regiones?
¿Cómo se realiza la operación de convolución cuando hay múltiples canales presentes en la capa de entrada? (por ejemplo, RGB)
En tal caso, tiene un kernel 2D por canal de entrada (también conocido como plano).
Entonces, realiza cada convolución (entrada 2D, kernel 2D) por separado y suma las contribuciones que dan al mapa de características de salida final.
Consulte la diapositiva 64 de este tutorial de CVPR 2014 por Marc''Aurelio Ranzato :
¿Se requieren tres conjuntos de pesos separados por mapa de características, compartidos entre cada color?
Si considera un mapa de características de salida dado, tiene 3 x núcleos 2D (es decir, un núcleo por canal de entrada). Cada kernel 2D comparte los mismos pesos a lo largo de todo el canal de entrada (R, G o B aquí).
Así que toda la capa convolucional es un tensor 4D (nb. Planos de entrada x nb. Planos de salida x ancho del kernel x altura del kernel).
¿Por qué han dividido el componente RGB en varias regiones?
Tal como se detalla arriba, piense en cada canal R, G y B como un plano de entrada separado con su kernel 2D dedicado.