Serie CNN básica de aprendizaje profundo: computación de convolución

Cálculo de convolución

La convolución es un método de transformación integral en análisis matemático, y la forma discreta de convolución se utiliza en el procesamiento de imágenes. Lo que debe explicarse aquí es que en la red neuronal convolucional, la implementación de la capa convolucional es en realidad una operación de correlación cruzada definida en matemáticas , que es diferente de la definición de convolución en el análisis matemático. framework es consistente con el tutorial de redes neuronales convolucionales, y ambos usan operaciones de correlación cruzada como la definición de convolución.El proceso de cálculo específico se muestra en la figura.
inserte la descripción de la imagen aquí

Cálculo de correlación cruzada

Aunque la capa de convolución recibe su nombre de la operación de convolución , generalmente usamos la operación de correlación cruzada más intuitiva en la capa de convolución . En una capa convolucional bidimensional, una matriz de entrada bidimensional y una matriz de kernel (núcleo) bidimensional generan una matriz bidimensional a través de una operación de correlación cruzada. Usamos un ejemplo concreto para explicar el significado de la operación de correlación cruzada bidimensional. Como se muestra en la fig.

El kernel de convolución (kernel) también se denomina filtro (filtro) , suponiendo que la altura y el ancho del kernel de convolución son kh k_hkhy kw k_wkw, entonces se llamará kh × kw k_h \times k_wkh×kwConvolución, como 3 × 5 3 \times 53×5 convolución significa que el kernel de convolución tiene una altura de 3 y un ancho de 5.


  • Como se muestra en la imagen de arriba (a): el tamaño de la imagen de la izquierda es 3 × 3 3 \times 33×3 , lo que indica que los datos de entrada son una dimensión de3 × 3 3\times33×Una matriz bidimensional de 3 ; el tamaño de la imagen del medio es2 × 2 2\times22×2 , significa que una dimensión es2 × 2 2\times22×Una matriz bidimensional de 2 , a esta matriz bidimensional la llamamos núcleo de convolución. Primero alinee la esquina superior izquierda del núcleo de convolución con la esquina superior izquierda de los datos de entrada (es decir, la posición (0,0) de los datos de entrada), y multiplique cada elemento del núcleo de convolución con el elemento en los datos de entrada cuya posición le corresponde, y luego agregue la convolución para obtener el primer resultado de la salida de convolución:

                  0 × 1 + 1 × 2 + 2 × 4 + 3 × 5 = 25 0\veces1 + 1\veces2 + 2\veces4 + 3\veces5 = 250×1+1×2+2×4+3×5=25  (un)

Los métodos de cálculo de (b), (c) y (d) en la figura son los mismos que los anteriores, creo que las personas inteligentes no necesitan que les demuestre más.

El proceso de cálculo del kernel de convolución se puede expresar mediante la siguiente fórmula matemática, donde aaa representa la imagen de entrada,bbb representa el mapa de características de salida,www es el parámetro del kernel de convolución, todas son matrices bidimensionales.

                      segundo [ yo , j ] = ∑ tu , va [ yo + tu , j + v ] ⋅ w [ tu , v ] segundo[i,j] =\displaystyle \sum_{u,v}a[i + u, j +v]\cdot w[u,v]b [ yo ,j ]=tu _ _un [ yo+tu ,j+v ]w [ tu ,v ]

Por ejemplo, el tamaño del kernel de convolución en la figura anterior es 2 × 2 2\times22×2 , 则uupuedes tomar 0 y 1,vvv también puede tomar 0 y 1, es decir:

  segundo [ yo , j ] = un [ yo + 0 , j + 0 ] ⋅ w [ 0 , 0 ] + un [ yo + 0 , j + 1 ] ⋅ w [ 0 , 1 ] + un [ yo + 1 , j + 0 ] ⋅ w [ 1 , 0 ] + un [ yo + 1 , j + 1 ] ⋅ w [ 1 , 1 ] segundo[i,j] = un[i+0,j+0]\cdot w[0 ,0] + a[i+0,j+1]\cdot w[0,1] + a[i+1,j+0]\cdot w[1,0] +a[i+1,j+ 1]\cdot w[1,1]b [ yo ,j ]=un [ yo+0 ,j+0 ]w [ 0 ,0 ]+un [ yo+0 ,j+1 ]w [ 0 ,1 ]+un [ yo+1 ,j+0 ]w [ 1 ,0 ]+un [ yo+1 ,j+1 ]w [ 1 ,1 ]

Podemos verificar su corrección, cuando [ i , j ] [i,j][ yo ,j ] toman valores diferentes, si el resultado calculado de acuerdo con esta fórmula es consistente con el ejemplo de la figura anterior.

Complemento:
en una red neuronal convolucional, además del proceso de convolución descrito anteriormente, un operador de convolución también incluye la operación de agregar un término de sesgo. Por ejemplo, suponiendo que el sesgo es 1, el resultado del cálculo de convolución anterior es:
0 × 1 + 1 × 2 + 2 × 4 + 3 × 5 + 1 = 26 0\times1+1\times2+2\times4+ 3\veces5 +1=260×1+1×2+2×4+3×5+1=26

0 × 2 + 1 × 3 + 2 × 5 + 3 × 6 + 1 = 32 0\veces2+1\veces3+2\veces5+3\veces6 +1=320×2+1×3+2×5+3×6+1=32

0 × 4 + 1 × 5 + 2 × 7 + 3 × 8 + 1 = 44 0\times4+1\times5+2\times7+3\times8 +1=440×4+1×5+2×7+3×8+1=44

0 × 5 + 1 × 6 + 2 × 8 + 3 × 9 + 1 = 50 0\veces5+1\veces6+2\veces8+3\veces9 +1=500×5+1×6+2×8+3×9+1=50

práctica

Después de aprender el conocimiento, hagamos una pregunta para el próximo ejercicio que nos ayude a comprender completamente la operación de convolución.
Título: Calcule cuántas operaciones de multiplicación y suma hay en la convolución. La
forma de los datos de entrada es [ 10 , 3 , 224 , 224 ] [10,3,224,224][ 10 ,3 ,224 ,224 ] , núcleo de convoluciónkh = kw = 3 k_h = k_w = 3kh=kw=3 , el número de canales de salida es 64,paso = 1 paso = 1zancada _ _ _ _ _=1 , llenarph = pw = 1 p_h=p_w=1pagh=pagw=1 .
Entonces, para completar tal convolución, ¿cuántas operaciones de multiplicación y suma necesitas hacer en total?

  • Sugerencias
    Primero observe cuántas operaciones de multiplicación y suma se deben realizar para generar un píxel y luego calcule la cantidad total de operaciones requeridas.

Pasos de la pregunta:

  1. Primero considere la convolución bidimensional cuando solo hay un canal de entrada:
    suponiendo que la salida es B y la entrada es A, primero calcule un píxel de B,
    inserte la descripción de la imagen aquí
    entre los cuales hay un total de 9 multiplicaciones y 8 sumas.
    Pero generalmente las imágenes que ingresamos son RGB de tres canales, por lo que necesitamos calcular cada canal B 00 ( c = 0 ), B 00 ( c = 1 ), B 00 ( c = 2 ) B^{(c=0 ) }_{00},B^{(c=1)}_{00},B^{(c=2)}_{00}B00( c = 0 ),B00( c = 1 ),B00( c = 2 ), el número total de operaciones de multiplicación es 3 × 9 = 27 3\times9=273×9=27 , el número de operaciones de suma es3 × 8 = 24 3\times8=243×8=24 veces

  2. Luego agregue los valores de estos canales de entrada y agregue el parámetro de polarización bbb
    B 00 = B 00 ( c = 0 ) + B 00 ( c = 1 ) + B 00 ( c = 2 ) + b B_{00}=B^{(c=0)}_{00}+B^ {(c=1)}_{00}+B^{(c=2)}_{00}+bB00=B00( c = 0 )+B00( c = 1 )+B00( c = 2 )+b
    Como es necesario introducir 3 operaciones de suma adicionales, el número total final de operaciones de suma es24 + 3 = 27 24+3=2724+3=27
    De esto, se puede obtener que el número de operaciones de multiplicación requeridas para calcular un punto de píxel es 27, y el número de operaciones de suma también es 27.

  3. El tamaño del mapa de características de salida es [10, 64, 224, 224] [10,64,224,224][ 10 ,64 ,224 ,224 ] , el número total de operaciones de multiplicación requeridas es:
    27 × 10 × 64 × 224 × 224 = 867041280 27\times10\times64\times224\times224=86704128027×10×64×224×224=867041280
    El número de operaciones de suma es el mismo que el número de operaciones de multiplicación es 867041280.

Supongo que te gusta

Origin blog.csdn.net/m0_63007797/article/details/128714136
Recomendado
Clasificación