Problema resuelto al detalle
-
Tamaño del mapa de salida para un mapa de entrada de 28×28 y kernel sobel-x de 3×3 6 pasos
La capa: un mapa de entrada de 28×28, un kernel Sobel-x de 3×3, paso 1, relleno mismo. Calcule el tamaño del mapa de salida y lo que cuesta una pasada en multiplicaciones-sumas; después, determine cuántas capas de este tipo deben apilarse antes de que un solo píxel de salida dependa de todos los píxeles de la imagen.
-
El relleno fija el tamaño, por lo que conviene resolverlo primero. El relleno mismo coloca un borde de ceros de un píxel alrededor del mapa, lo que es exactamente suficiente para que una ventana de 3×3 quede centrada en un píxel de la esquina en lugar de sobresalir del borde. El borde que necesita un kernel es la mitad de su tamaño, sin contar el centro.
-
Desplace la ventana a lo largo de una fila. Su borde izquierdo comienza en 0 y avanza según el paso hasta que su borde derecho alcanza el final de la fila con relleno, por lo que contar los píxeles de salida es un recuento de tipo poste y valla: el número de avances más 1 por la posición inicial. Con un paso de 1, el borde devuelve exactamente las 2 columnas que descuenta el kernel, de ahí el nombre de mismo.
-
Cada uno de los 784 píxeles de salida es una suma ponderada de 9 valores de entrada. Al sumar los pesos del filtro Sobel-x, estos se anulan dando 0, de modo que cualquier ventana cuyos 9 valores de entrada sean iguales devuelve exactamente 0, independientemente de lo brillante que sea esa región. El mapa se oscurece dondequiera que la imagen sea uniforme y solo responde donde la columna izquierda de la ventana difiere de la derecha.
-
El coste aritmético resulta ser: 9 multiplicaciones y acumulaciones por píxel de salida, un píxel de salida por posición de la ventana. El panel muestra ese recuento.
-
La profundidad es la parte interesante. Tras una capa, un píxel de salida ve 3 píxeles de entrada de ancho. Al añadir una segunda capa, cada uno de esos 3 píxeles era a su vez una ventana de 3; pero como las ventanas vecinas se solapan en 2 píxeles, la cobertura alcanza 5 píxeles, no 9. Cada capa adicional de 3×3 con paso 1 la amplía en exactamente 2.
-
Fije la cobertura para que abarque las 28 columnas y despeje la profundidad. Con 13 capas se alcanzan 27 columnas, quedándose a una de la totalidad; la 14.ª capa es la primera cuyos píxeles de salida pueden verse influidos por toda la imagen.
Respuesta
Salida de 28×28, 7056 multiplicaciones-sumas por capa y 14 capas antes de que un píxel vea la imagen completa. Ahora calcule lo que cuesta ese alcance. Las 14 capas apiladas requieren 14 × 9 = 126 multiplicaciones y acumulaciones por píxel de salida. Una sola capa que alcance la misma distancia necesitaría un kernel de 29×29, con 841 por píxel de salida: 6,7 veces más operaciones aritméticas para exactamente el mismo campo receptor. La profundidad proporciona alcance de forma mucho más económica que la anchura, motivo por el cual las redes de visión son secuencias largas de kernels de 3×3 en lugar de secuencias cortas de kernels grandes.
-
Referencias (1)
- Insight block 3 — the operation called convolution is cross-correlation: I. Goodfellow, Y. Bengio and A. Courville, Deep Learning, ch. 9. MIT Press, 2016. ISBN 978-0-262-03561-3 — "many machine learning libraries implement cross-correlation but call it convolution".