La diferencia entre la convolución ordinaria y la convolución separable en profundidad

La diferencia entre la convolución ordinaria y la convolución separable en profundidad

Este artículo proviene de: La diferencia entre la convolución ordinaria y la convolución separable en profundidad

1. El método de convolución de convolución ordinaria

La imagen original es 2D y el tamaño es 12x12. Como está en formato RGB, hay tres canales, lo que equivale a una imagen tridimensional. El formato de la imagen de entrada es: 12x12x3. El tamaño de la ventana del filtro es 5x5x3. En este caso, el tamaño de la imagen de salida resultante es 8x8x1 (el modo de relleno es válido).

inserte la descripción de la imagen aquí

Para una imagen de 12 × 12 píxeles y tres canales (forma 12 × 12 × 3), después de una capa convolucional con un núcleo de convolución de 5 × 5, el número de canales del núcleo de convolución debe ser el mismo que el número de canales de la imagen de entrada. El número de núcleos del producto determina el número de mapas de características de salida final, que es el canal de salida; suponiendo que el número de canales de salida es 1, la forma del núcleo de convolución es 3 × 5 × 5 × 1, y finalmente genera un mapa de características Si hay el mismo relleno, el tamaño es el mismo que la capa de entrada (12 × 12x1), si no, el tamaño se convierte en (8 × 8x1): 12x12x3 * 5x5x3x1 => 8x8x1

Cuando la convolución ordinaria ejecuta el proceso de convolución normal, un kernel de convolución solo puede obtener una característica. Como se muestra en la figura anterior, un kernel de convolución 3x5x5 puede obtener un mapa de características de salida de 8x8x1, que solo extrae un atributo de la imagen. Si lo desea para obtener Más atributos se requieren más filtros. Si desea obtener más atributos de la imagen, por ejemplo, necesita extraer 256 atributos, como se muestra en la siguiente figura:
inserte la descripción de la imagen aquí

12x12x3 * 5x5x3x256 => 8x8x256 , puede crear 256 núcleos de convolución para crear 256 imágenes de 8x8x1 y luego apilarlas para crear una salida de imagen de 8x8x256.
El problema con la convolución normal es que su núcleo de convolución está diseñado para todos los canales de la imagen (el número total de canales es la profundidad). Luego, cada vez que se requiera agregar un atributo de la imagen de detección, el kernel de convolución debe aumentarse en uno. Por lo tanto, para la convolución normal, el formato completo del kernel de convolución de una capa de convolución normal debe ser (número de canales de entrada x altura del kernel de convolución x ancho del kernel de convolución); el número total de parámetros de convolución = el número total de atributos x el tamaño del núcleo de convolución .

2. Convolución separable en profundidad

Las circunvoluciones separables en profundidad se abordan de manera diferente. El kernel de convolución normal es realizar la convolución en 3 canales al mismo tiempo . En otras palabras, 3 canales emiten un número después de una convolución.
La convolución separable en profundidad se divide en dos pasos:
(1) Convolucionar los tres canales con tres convoluciones, de modo que después de una convolución, se emitan tres números.
(2) Los tres números de salida se pasan a través de un núcleo de convolución 1x1x3 (núcleo puntual) para obtener un número. Entonces, la convolución separable en profundidad en realidad se realiza mediante dos convoluciones.
El primer paso es realizar la convolución en los tres canales por separado y generar los atributos de los tres canales:
inserte la descripción de la imagen aquí

El proceso de operación específico es el siguiente:
inserte la descripción de la imagen aquí

En el segundo paso, use el núcleo de convolución 1x1x3 para convolucionar los tres canales nuevamente. En este momento, la salida es la misma que la convolución normal, que es 8x8x1:
inserte la descripción de la imagen aquí

Este paso es el proceso de convolución normal, pero el tamaño del kernel de convolución es (3x1x1), y un kernel de convolución obtiene un mapa de características: 8x8x3 * 1x1x3x1 => 8x8x1.
Si desea extraer más atributos, debe diseñar más núcleos de convolución de 1x1x3 (la imagen se cita del sitio web original. Parece que el cubo de 8x8x256 debería dibujarse como 256 8x8x1, porque no están integrados y representan 256 atributos):
inserte la descripción de la imagen aquí

Se puede ver que si solo se extrae un atributo, el método de convolución separable en profundidad no es tan bueno como la convolución normal. A medida que se extraen más y más atributos, las circunvoluciones separables en profundidad pueden guardar más parámetros.

Referencia https://blog.csdn.net/evergreenswj/article/details/92764387

Supongo que te gusta

Origin blog.csdn.net/weixin_45768644/article/details/128285627
Recomendado
Clasificación