Por qué las convoluciones siempre usan números impares como filter_size


13

Si echamos un vistazo al 90-99% de los artículos publicados usando una CNN (ConvNet). La gran mayoría de ellos usa el tamaño de filtro de números impares : {1, 3, 5, 7} para los más utilizados.

Esta situación puede generar algún problema: con estos tamaños de filtro, generalmente la operación de convolución no es perfecta con un relleno de 2 (relleno común) y algunos bordes del campo input_ se pierden en el proceso ...

Pregunta1: ¿Por qué usar solo números impares para los tamaños de filtro de convoluciones?

Pregunta 2: ¿Es realmente un problema omitir una pequeña parte del input_field durante la convolución? ¿Por qué tan / no?

Respuestas:


14

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: ingrese la descripción de la imagen aquí 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.


Gracias por su explicación, pero ¿no es más fácil entender esto mirando la definición de convolución en términos matemáticos? en.wikipedia.org/wiki/Convolution#Discrete_convolution Porque aquí vemos que siempre tendremos m términos a izquierda y derecha del origen ... por lo tanto, esto siempre resultará en una cantidad desigual.
zwep

@zwep De acuerdo! Los foros de preguntas y respuestas no reemplazan las enciclopedias; sino simplemente suplementarlos. Sin embargo, una perspectiva más amplia para su comentario: la definición generalmente es la mejor opción revisada por pares entre las opciones disponibles; No es verdad del evangelio. Sin embargo, las reglas primero deben aprenderse antes de romperlas, para que pueda comunicarse claramente a la comunidad exactamente cómo y por qué lo hace de manera diferente. Las razones y las opciones alternativas detrás de una determinada definición se encuentran en trabajos de investigación y generalmente no en una enciclopedia.
Dynamic Stardust

5

1) Supongamos input_fieldque todo es cero excepto por una entrada en el índice idx. Un tamaño de filtro impar devolverá datos con un pico centrado alrededor idx, 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_fieldes relevante para la convolución, pero los bordes de output_fieldno pueden calcularse con precisión ya que los datos necesarios no están contenidos input_field. Si quiero calcular una respuesta para el primer elemento de output_field, el filtro debe estar centrado en el primer elemento de input_field. Pero luego hay elementos de filtro que no corresponden a ningún elemento disponible de input_field. Hay varios trucos para adivinar los bordes output_field.


2

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.

Por qué los filtros de tamaño par no funcionan

fuente: https://towardsdatascience.com/deciding-optimal-filter-size-for-cnns-d6f7b56f9363

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.