La operación de convolución, en pocas palabras, es una combinación de elementos de dos matrices. Mientras estas dos matrices estén de acuerdo en dimensiones, no debería haber un problema, y así puedo entender la motivación detrás de su consulta.
A.1 Sin embargo, la intención de convolución es codificar la matriz de datos de origen (imagen completa) en términos de un filtro o núcleo. Más específicamente, estamos tratando de codificar los píxeles en la vecindad de los píxeles de anclaje / fuente. Eche un vistazo a la figura a continuación:
Normalmente, consideramos que cada píxel de la imagen de origen es un píxel de anclaje / origen, pero no estamos obligados a hacerlo. De hecho, no es raro incluir una zancada, en la que los píxeles de anclaje / fuente están separados por un número específico de píxeles.
Bien, ¿cuál es el píxel fuente? Es el punto de anclaje en el que se centra el núcleo y estamos codificando todos los píxeles vecinos, incluido el píxel de anclaje / fuente. Como el núcleo tiene una forma simétrica (no simétrica en los valores del núcleo), hay un número igual (n) de píxeles en todos los lados (4- conectividad) del píxel de anclaje. Por lo tanto, cualquiera que sea este número de píxeles, la longitud de cada lado de nuestro núcleo de forma simétrica es 2 * n + 1 (cada lado del ancla + el píxel del ancla) y, por lo tanto, los filtros / núcleos siempre tienen un tamaño impar.
¿Qué pasa si decidimos romper con la 'tradición' y utilizamos núcleos asimétricos? Sufriría errores de alias, por lo que no lo hacemos. Consideramos que el píxel es la entidad más pequeña, es decir, no hay un concepto de subpíxel aquí.
A.2 El problema de límites se trata con diferentes enfoques: algunos lo ignoran, otros lo rellenan con ceros, algunos lo reflejan. Si no va a calcular una operación inversa, es decir, una deconvolución, y no está interesado en la reconstrucción perfecta de la imagen original, entonces no le importa la pérdida de información o la inyección de ruido debido al problema del límite. Por lo general, la operación de agrupación (agrupación promedio o agrupación máxima) eliminará sus artefactos de límite de todos modos. Entonces, siéntase libre de ignorar parte de su 'campo de entrada', su operación de agrupación lo hará por usted.
-
Zen de convolución:
En el dominio de procesamiento de señales de la vieja escuela, cuando una señal de entrada se enredaba o pasaba a través de un filtro, no había forma de juzgar a priori qué componentes de la respuesta convolucionada / filtrada eran relevantes / informativos y cuáles no. En consecuencia, el objetivo era preservar los componentes de la señal (todo ello) en estas transformaciones.
Estos componentes de señal son información. Algunos componentes son más informativos que otros. La única razón para esto es que estamos interesados en extraer información de nivel superior; Información pertinente a algunas clases semánticas. En consecuencia, esos componentes de señal que no proporcionan la información que nos interesa específicamente pueden ser eliminados. Por lo tanto, a diferencia de los dogmas de la vieja escuela sobre convolución / filtrado, somos libres de agrupar / podar la respuesta de convolución como nos da la gana. La forma en que tenemos ganas de hacerlo es eliminar rigurosamente todos los componentes de datos que no contribuyen a mejorar nuestro modelo estadístico.
1) Supongamos
input_field
que todo es cero excepto por una entrada en el índiceidx
. Un tamaño de filtro impar devolverá datos con un pico centrado alrededoridx
, un tamaño de filtro par no lo hará; considere el caso de un filtro uniforme con tamaño 2. La mayoría de las personas desean preservar la ubicación de los picos cuando filtran.2) Todo esto
input_field
es relevante para la convolución, pero los bordes deoutput_field
no pueden calcularse con precisión ya que los datos necesarios no están contenidosinput_field
. Si quiero calcular una respuesta para el primer elemento deoutput_field
, el filtro debe estar centrado en el primer elemento deinput_field
. Pero luego hay elementos de filtro que no corresponden a ningún elemento disponible deinput_field
. Hay varios trucos para adivinar los bordesoutput_field
.fuente
Para un filtro de tamaño impar, todos los píxeles de la capa anterior estarían simétricamente alrededor del píxel de salida. Sin esta simetría, tendremos que tener en cuenta las distorsiones en las capas que ocurren cuando se usa un núcleo de tamaño par. Por lo tanto, los filtros de kernel de tamaño par se omiten principalmente para promover la simplicidad de implementación. Si piensa en la convolución como una interpolación de los píxeles dados a un píxel central, no podemos interpolar a un píxel central utilizando un filtro de tamaño par.
fuente: https://towardsdatascience.com/deciding-optimal-filter-size-for-cnns-d6f7b56f9363
fuente