¿Cuál es la diferencia entre convolución dilatada y deconvolución?


11

Estas dos operaciones de convolución son muy comunes en el aprendizaje profundo en este momento.

Leí sobre la capa convolucional dilatada en este artículo: WAVENET: UN MODELO GENERATIVO PARA AUDIO CRUDO

y De-convolution se encuentra en este documento: Redes completamente convolucionales para la segmentación semántica

Ambos parecen muestrear la imagen pero ¿cuál es la diferencia?

Respuestas:


9

En una especie de términos mecanicistas / pictóricos / basados ​​en imágenes:

Dilatación: ### VER COMENTARIOS, TRABAJANDO EN LA CORRECCIÓN DE ESTA SECCIÓN

La dilatación es en gran medida lo mismo que la convolución común (francamente, también lo es la deconvolución), excepto que introduce huecos en sus núcleos, es decir, mientras que un núcleo estándar normalmente se deslizaría sobre secciones contiguas de la entrada, su contraparte dilatada puede, por ejemplo, "encierra" una sección más grande de la imagen, mientras que solo tiene tantos pesos / entradas como la forma estándar.

(Tenga en cuenta bien, mientras que la dilatación inyecta ceros en su núcleo para disminuir más rápidamente las dimensiones faciales / resolución de su salida, transponer convolución inyecta ceros en su entrada para aumentar la resolución de su salida).

Para hacer esto más concreto, tomemos un ejemplo muy simple:
Digamos que tiene una imagen de 9x9, x sin relleno. Si toma un núcleo estándar de 3x3, con zancada 2, el primer subconjunto de interés de la entrada será x [0: 2, 0: 2], y el núcleo considerará los nueve puntos dentro de estos límites. Luego barrería sobre x [0: 2, 2: 4] y así sucesivamente.

Claramente, la salida tendrá dimensiones faciales más pequeñas, específicamente 4x4. Por lo tanto, las neuronas de la siguiente capa tienen campos receptivos en el tamaño exacto de estos pases de granos. Pero si necesita o desea neuronas con más conocimiento espacial global (p. Ej., Si una característica importante solo se puede definir en regiones más grandes que esta), necesitará convolver esta capa por segunda vez para crear una tercera capa en la que el campo receptivo efectivo sea alguna unión de las capas anteriores rf.

Pero si no desea agregar más capas y / o siente que la información que se transmite es excesivamente redundante (es decir, sus campos receptivos de 3x3 en la segunda capa solo llevan una cantidad "2x2" de información distinta), puede usar Un filtro dilatado. Seamos extremos acerca de esto por claridad y digamos que usaremos un filtro 9x9 3-dialated. Ahora, nuestro filtro "rodeará" toda la entrada, por lo que no tendremos que deslizarla en absoluto. Sin embargo, solo tomaremos 3x3 = 9 puntos de datos de la entrada, x , típicamente:

x [0,0] U x [0,4] U x [0,8] U x [4,0] U x [4,4] U x [4,8] U x [8,0] U x [8,4] U x [8,8]

Ahora, la neurona en nuestra próxima capa (solo tendremos una) tendrá datos que "representan" una porción mucho más grande de nuestra imagen, y nuevamente, si los datos de la imagen son altamente redundantes para los datos adyacentes, bien podríamos haber preservado el misma información y aprendí una transformación equivalente, pero con menos capas y menos parámetros. Creo que, dentro de los límites de esta descripción, está claro que, aunque puede definirse como remuestreo, estamos aquí reduciendo la muestra para cada núcleo.


Zancada fraccionada o transpuesta o "deconvolución":

Este tipo sigue siendo una convolución en el fondo. La diferencia es, nuevamente, que nos moveremos de un volumen de entrada más pequeño a un volumen de salida más grande. OP no planteó preguntas sobre qué es el muestreo ascendente, por lo que ahorraré un poco de amplitud, esta vez y pasaré directamente al ejemplo relevante.

En nuestro caso de 9x9 de antes, digamos que ahora queremos aumentar la muestra a 11x11. En este caso, tenemos dos opciones comunes: podemos tomar un kernel 3x3 y con zancada 1 y barrerlo sobre nuestra entrada 3x3 con 2 rellenos para que nuestro primer pase esté sobre la región [left-pad-2: 1, above-pad-2: 1] luego [left-pad-1: 2, above-pad-2: 1] y así sucesivamente.

Alternativamente, también podemos insertar relleno entre los datos de entrada y barrer el núcleo sobre él sin tanto relleno. Claramente, a veces nos preocuparemos con los mismos puntos de entrada más de una vez para un solo núcleo; Aquí es donde el término "zancada fraccional" parece más razonado. Creo que la siguiente animación (tomada de aquí y basada (creo) fuera de este trabajo ayudará a aclarar las cosas a pesar de ser de diferentes dimensiones. La entrada es azul, los ceros y el relleno inyectados en blanco, y la salida en verde:

conv transpuesta, la entrada es azul, la salida verde

Por supuesto, nos ocupamos de todos los datos de entrada en lugar de la dilatación que puede o no ignorar algunas regiones por completo. Y dado que claramente estamos terminando con más datos de los que comenzamos, "muestreo".

Le animo a leer el excelente documento al que me vinculé para obtener una definición y explicación más abstracta y sólida de la convolución de transposición, así como para aprender por qué los ejemplos compartidos son formas ilustrativas pero en gran medida inapropiadas para calcular realmente la transformación representada.


1
Tenga en cuenta que no soy un experto, solo alguien que recientemente tuvo que distinguir estos conceptos yo mismo. Avíseme si hay errores directos o simplificaciones excesivas que podrían socavar la corrección general de las respuestas. ¡Gracias!
Doug Brummell

Doug Brummel Wow explica muy bien. Yo tenía la misma idea . Me gustaría saber su opinión sobre la aplicación de convolución dilatada, ¿Cómo debemos comenzar a aplicar esto en CNN? ¿Deberíamos primero realizar una convolución normal y luego aplicar una conolución dilatada? Otra cosa: la convolución dilatada puede perder información si no ponemos a cero la almohadilla. Entonces, ¿creo que deberíamos aplicar una convolución dilatada después de algunas capas de convenets normales?
Shamane Siriwardhana

Creo que la idea estándar es aumentar la cantidad de dilatación hacia adelante, comenzando con filtros regulares sin dilatar para l = 1, avanzando hacia filtros de 2 y luego 3 dilatados, y así sucesivamente a medida que avanza a través de la profundidad de su red. Esto le permite asegurarse de que todos los datos en una capa se pasen a la siguiente (lo que incluye, lo que es más importante, a la red misma) mientras permite una disminución de muestras exponencialmente más rápida con cada capa pero sin parámetros de aumento. El objetivo es amplios campos receptivos sin sacrificar la inclusión de datos. Y sí, la atención al relleno debe ser importante desde el principio.
Doug Brummell

Consulte [este documento] ( arxiv.org/pdf/1511.07122.pdf ), se menciona anteriormente y proporciona una buena parte de lo que he leído sobre el tema.
Doug Brummell

Otra cosa, ese documento afirma que no hay pérdida de resolución en un esquema de dilatación tan creciente ... Supongo que desconfío de otras pérdidas que podría cubrir bajo "resolución". Por supuesto, si puede reemplazar un montón de capas conv con otras menos dilatadas y mantener la precisión, excelente, absolutamente debería. Pero para mí (y tendré que volver a los libros sobre esto), pienso en las posibles pérdidas en el caso en el que desde el principio diseñas con dilatación ...
Doug Brummell

5

Aunque ambos parecen estar haciendo lo mismo, que consiste en muestrear una capa, hay un margen claro entre ellos.

Primero hablamos de convolución dilatada

Encontré este bonito blog sobre el tema anterior. Entonces, como entendí, esto es más como explorar los puntos de datos de entrada de una manera amplia . O aumentar el campo receptivo de la operación de convolución.

Aquí hay un diagrama de convolución dilatada del artículo .

Imagen 3

Esto es más una convolución normal, pero ayuda a capturar más y más contexto global de los píxeles de entrada sin aumentar el tamaño de los parámetros. Esto también puede ayudar a aumentar el tamaño espacial de la salida. Pero lo principal aquí es que esto aumenta el tamaño del campo receptivo exponencialmente con el número de capas. Esto es muy común en el campo de procesamiento de señales.

Este blog realmente explica qué hay de nuevo en la convolución dilatada y cómo se compara con la convolución normal.

Blog: Convoluciones dilatadas y convoluciones factorizadas de Kronecker

Ahora explicaré qué es la deconvolución

Esto se llama convolución transpuesta. Esto es igual a la función que utilizamos para la convolución en la retropropagación.

Simplemente en backprop distribuimos gradientes de una neurona en el mapa de características de salida a todos los elementos en los campos receptivos, luego también sumamos los gradientes donde coincidieron con los mismos elementos receptivos

Aquí hay un buen recurso con fotos .

Entonces, la idea básica es que la deconvolución funciona en el espacio de salida. No ingresa píxeles. Intentará crear dimensiones espaciales más amplias en el mapa de salida. Esto se utiliza en redes neuronales totalmente convolucionales para la segmentación semántica .

Entonces, más de la deconvolución es una capa de muestreo ascendente que se puede aprender.

Intenta aprender a muestrear mientras se combina con la pérdida final

Esta es la mejor explicación que encontré para la deconvolución. Conferencia 13 en cs231, de 21.21 en adelante .


¿Le importaría explicar cómo la convolución dilatada ayuda a aumentar el tamaño espacial de la salida? Parece requerir incluso más relleno que las circunvoluciones tradicionales, por lo tanto, peor con respecto al tamaño de salida.
wlnirvana
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.