Aprendizaje profundo: convolución separable en profundidad

1. Convolución separable en profundidad (Convolución separable en profundidad)
Algunas redes ligeras, como mobilenet, tendrán una convolución separable en profundidad, que se combina en profundidad (DW) y en punto (PW). Se utiliza para extraer el mapa de características. En comparación con las operaciones de convolución convencionales, la cantidad de parámetros y el costo de operación son relativamente bajos\color{blue}{La cantidad de parámetros y el costo de operación son relativamente bajos}El número de parámetros y el costo computacional son relativamente bajos .

2. Operación de convolución convencional
Para una entrada de 5x5x3, si desea obtener un mapa de características de 3x3x4, entonces la forma del kernel de convolución es 3x3x3x4, si relleno = 1, entonces el mapa de características de salida es 5x5x4.
inserte la descripción de la imagen aquí
Hay 4 filtros en la capa convolucional, cada filtro contiene 3 núcleos y el tamaño de cada núcleo es 3×3. Por lo tanto, el número de parámetros de la capa convolucional se puede calcular mediante la siguiente fórmula (es decir: núcleo de convolución W x núcleo de convolución H x número de canales de entrada x número de canales de salida): N_std = 4 × 3 × 3 × 3 = 108 cantidad de cálculo (
es decir: núcleo de convolución W x núcleo de convolución H x (imagen W-convolución kernel W+1) x (imagen H-convolución kernel H+1) x número de canales de entrada x número de canales de salida, con relleno = 0, sin relleno Para demostración, la salida es 3 3 4, si se llena el núcleo de convolución W x núcleo de convolución H x (imagen W-convolución kernel W+2P+1) x (imagen H-convolución kernel H+2P+1) x entrada Número de canales x número de canales de salida): C_std = 3 × 3 × (5 - 2) × (5 - 2) × 3 × 4 = 972 3. Convolución separable en profundidad La convolución separable en profundidad se divide principalmente en dos
procesos
, Son la convolución en profundidad y la convolución en punto.

  • Convolución canal por canal (Depthwise Convolution)

Un kernel de convolución de Depthwise Convolution es responsable de un canal, y un canal está convolucionado por un solo kernel de convolución. El número de canales de mapas de características generados por este proceso es exactamente el mismo que el número de canales de entrada.
Una imagen de entrada en color de tres canales y 5 × 5 píxeles (forma 5 × 5 × 3), la convolución en profundidad primero se somete a la primera operación de convolución y DW se realiza completamente en un plano bidimensional. El número de núcleos de convolución es el mismo que el número de canales en la capa anterior (correspondencia uno a uno entre canales y núcleos de convolución). Por lo tanto, una imagen de tres canales se procesa para generar tres mapas de características (si hay el mismo relleno, el tamaño es el mismo que el de la capa de entrada, que es 5×5), como se muestra en la figura a continuación. (La forma del kernel de convolución es: kernel de convolución W x kernel de convolución H x número de canales de entrada)
inserte la descripción de la imagen aquí
Uno de los filtros solo contiene un kernel con un tamaño de 3×3, y el número de parámetros en la parte de convolución se calcula como siguiente (es decir: Núcleo de convolución Wx Núcleo de convolución Hx número de canales de entrada): N_profundidad = 3 × 3 × 3 = 27
La cantidad de cálculo es (es decir: Núcleo de convolución W x Núcleo de convolución H x (imagen W-núcleo de convolución W+1) x (Núcleo de convolución H de imagen H+1) x número de canales de entrada): C_profundidad=3 x 3 x (5 - 2) x (5 - 2) x 3 = 243 El número de mapas de características después de completar la convolución en profundidad y el número de
capas de entrada El número de canales es el mismo y el mapa de funciones no se puede ampliar. Además, esta operación realiza de forma independiente operaciones de convolución en cada canal de la capa de entrada y no utiliza de manera efectiva la información de características de diferentes canales en la misma posición espacial. Por lo tanto, se necesita Pointwise Convolution para combinar estos mapas de características para generar un nuevo mapa de características.

  • Convolución puntual

La operación de Pointwise Convolution es muy similar a la operación de convolución convencional, el tamaño de su kernel de convolución es 1×1×M, y M es el número de canales en la capa anterior. Por lo tanto, la operación de convolución ponderará y combinará los mapas del paso anterior en la dirección de profundidad para generar un nuevo mapa de características. Hay varios núcleos de convolución y varios mapas de características de salida. (La forma del kernel de convolución es: 1 x 1 x número de canales de entrada x número de canales de salida)
inserte la descripción de la imagen aquí
Dado que se usa el método de convolución 1×1, el número de parámetros involucrados en la convolución en este paso se puede calcular como (que es, : 1 x 1 x número de canales de entrada x número de canales de salida): N_pointwise = 1 × 1 × 3 × 4 = 12
cantidad de cálculo (es decir: 1 x 1 x capa característica W x capa característica H x número de entrada canales x número de canales de salida): C_pointwise = 1 × 1 × 3 × 3 × 3 × 4 = 108
Después de Pointwise Convolution, también se emiten 4 mapas de características, que son las mismas que las dimensiones de salida de la convolución convencional.
4. Comparación de parámetros
Recuerde que el número de parámetros de convolución convencional es:
N_std = 4 × 3 × 3 × 3 = 108
Los parámetros de Convolución separable se obtienen sumando dos partes:
N_profundidad = 3 × 3 × 3 = 27
N_punto = 1 × 1 × 3 × 4 = 12
N_separables = N_en profundidad + N_en puntos = 39
Con la misma entrada, también se obtienen 4 mapas de características, y el número de parámetros de convolución separable es aproximadamente 1/3 del de convolución convencional. Por lo tanto, bajo la premisa de la misma cantidad de parámetros, la cantidad de capas de la red neuronal que utilizan la convolución separable se puede hacer más profunda.
5. Comparación de cálculo
Recordemos que el cálculo de convolución convencional es:
C_std =3 3 (5-2)*(5-2) 3 4=972
El cálculo de Convolución Separable se obtiene sumando dos partes:
C_profundidad=3x3x (5- 2)x(5-2)x3=243
C_pointwise = 1 × 1 × 3 × 3 × 3 × 4 = 108
C_separable = C_ depthwise + C_pointwise = 351
misma entrada, también obtenga 4 mapas de características, convolución separable La cantidad de cálculo es aproximadamente 1/3 de la convolución regular. Por lo tanto, con la misma cantidad de cálculo, la convolución separable en profundidad puede aumentar el número de capas de la red neuronal.

Referencia:
convolución separable en profundidad

Supongo que te gusta

Origin blog.csdn.net/weixin_40826634/article/details/128199814
Recomendado
Clasificación