Skip to content

Redes neuronales de convolución en pocas palabras | Guía de la A a la Z

featuredIMG

Hola lector, estoy bastante seguro de que estás ansioso por aprender visión por computadora y aquí para comenzar con las redes neuronales de Convolution. Siempre soñé con las redes neuronales de convolución (CNN) como muy elegantes . Quizás tenía razón en parte . Hoy, después de saber cómo funcionan, sinceramente siento que uno tiene que apreciar el pensamiento detrás de este algoritmo mágico . Este artículo intenta explicar las redes neuronales convolucionales en términos simples y simples.

Cuando el mundo de la tecnología siguió las formas tradicionales de manejar los datos visuales (imágenes, videos, etc.), Yann LeCun ideó un simpleSin embargo, es un método revolucionario para tratar con imágenes . Eso es redes neuronales de convolución.

Saltemos al viaje de “lo que yo llamo una cáscara de nuez de CNN” 😛

Un truco secreto para recordar conceptos en Data Science es visualizar lo mismo en nuestra mente.


1. Requisito previo para comprender CNN

conv_blur
Un ejemplo de convolución – 
Desenfoque de imagen usando un filtro

Bien, ¡esa foto fue solo para mostrarte lo que puede hacer una convolución !
No caigas en la tentación de desplazarte hacia abajo, suponiendo que la explicación de CNN se te pase por la cabeza . El requisito previo para comprender esta publicación es bastante básico .

¿Conoces la suma y la multiplicación ? Espero que  , ya que estás aquí leyendo este artículo hoy 😀.

Si desea comprender las circunvoluciones, solo tiene que saber 3 cosas principales:
1: Matriz y sus operaciones, como transformar , remodelaretc
2: adición .
3: Multiplicación .

¿Suena fácil ? Si lo es! Usando estos 3 conceptos y algunas ideas innovadoras reales de Yann LeCun, ¡tenemos una manera fácil pero más confiable de manejar datos en movimiento hoy! Un ejemplo en vivo de grandes cosas se basa en conceptos básicos simples pero altamente efectivos.

Entonces, si tiene alguna idea sobre la matriz , la suma y la multiplicación , estamos listos para continuar. Si esto no motivapara continuar, con convoluciones uno podría lograr transformaciones de imágenes de photoshop como una en la foto de arriba y definitivamente no se limita a, pero mucho más. ¡Entonces comencemos !


2. ¿Qué es una convolución?

Convolución en el término laico es hazaña u re extracción en una imagen.

Aplicamos el llamado ‘ filtro ‘ (nuevamente una matriz ) en la imagen y sacamos características relevantes que tienen sentido para nuestras predicciones .

Un ejemplo de convolución: 
borde detectado mediante un filtro

Para un niño de secundaria , podemos decir esto como:

1: Tomamos una imagen , la convertimos en una matriz de píxeles .
2: Seleccione una matriz (elegida al azar) de tamaño digamos 2 * 2 o 3 * 3 y haga un producto DOT con salida de 1 arriba.

Eso debería ser. Eso es convoluciones en términos simples .

Por si acaso, te preguntas qué son los píxeles, por ejemplo, cómo las neuronas son un bloque básico de nuestro cerebro , cada imagen está hecha de un montón de píxeles . Consulte este enlace para un interesante corto sin embargo, una rápida explicación de cómo son píxeles y las imágenes relacionadas.


3. ¿Cómo funciona la convolución?

Las imágenes a continuación hablan más que mil palabras. Como discutimos anteriormente , tomamos una matriz (llamada filtro ) y luego la multiplicamos con imágenes (convertidas a píxeles ). El resultado se parece a uno a continuación.


Paso uno:
Recogemos una imagen y la convertimos en una matriz de píxeles . Y luego recogemos un filtro . Aquí tomamos una matriz 2 * 2.

Recuerde : no hay una regla para seleccionar las dimensiones del filtro . Es nuestra suposición la que mejora con la experiencia. Perogeneralmente se prefiere la matriz 2 * 2 o 3 * 3 .

Image (Left) dot  Filter(Right)

Paso dos:
como se prometió antes, estamos multiplicando y agregando el filtro con la imagen . Observe lasiguiente ecuación para una comprensión clara.

Image (Left) dot  Filter(middle) = Output

Paso tres:
Continúe esto hasta que el filtro se deslice en toda la imagen.

Image (Left) dot  Filter(middle) = Output
Image (Left) dot  Filter(middle) = Output
Image (Left) dot  Filter(middle) = Output

Nosotros continuamos esto hasta última diapositiva.

Image (Left) dot  Filter(middle) = Output

En breve :


convimg

4. Comprender las formas y un seudocódigo CNN enérgico

La mayor confusión que todos enfrentan en el mundo de las redes neuronales de convolución es la forma de las matrices . La matriz tiene cierta forma durante la entrada, se cambia a otra cosa debido a operaciones matemáticas y, cuando sale , nuevamente cambian de forma .

Conocemos input_height (No de filas en una matriz) y input_width (No de columnas en una matriz). Además de estos, lo más importante para recordar en las redes ConV es output_height y output_width . Esto se aplica a la salida a cada capa involucrada en la red.

convPsuedoCode

Lo anterior es el pseudocódigo para una operación de convolución . En resumen, este código ayuda a implementar todos los avances que vemos de un filtro que se demuestra en las imágenes de arriba. es decir, que no nos llevan a un punto producto de matrices seguido de adición .

En álgebra lineal, podemos acortar el pseudocódigo anterior como una ecuación a continuación. Es bueno entenderlo, pero recordar la ecuación no es obligatorio.

Linear al

5. ¿Qué es el relleno?

La mayoría de las veces necesitamos que el tamaño de la imagen de entrada sea ​​igual al tamaño de la imagen de salida . Pero cuando aplicamos una multiplicación de filtro , normalmente perdemos dimensiones. Puede ver la dimensión de salida en la imagen gif arriba donde la matriz 5 * 5 se reduce a 3 * 3 .

Para mantener intactas las dimensiones , es decir, para mantener las dimensiones de entrada frente a salida según las necesidades del usuario , utilizamos un concepto de relleno . Otro lugar importante donde el relleno ayuda es cuando tenemos imágenes de

dimensión desigual Digamos que tenemos nuestras fotos de la infancia tomadas de diferentes cámaras y pocas son en blanco y negro y pocas en color . Para hacer convoluciones , necesitamos meterlo en una matriz de las mismas dimensiones . Esto se logra mediante el relleno .

Padding a pic
Imagen acolchada con blancos frente a las zancadas del filtro

La porción blanca que vemos es acolchada . Usualmente hacemos esto agregando ceros a la matriz.
Nota : Cualquier cosa multiplicada por cero es cero, por lo que no jugará un papel ni alterará nada en el proceso de convolución existente .

En el escenario del mundo real, cuando implementamos cualquier convolución usando keras o flujo de tensor , lo precargamos con un parámetro llamado ” modo “.

mode
mode

De los 3 valores para el modo anterior, los siguientes 2 son ampliamente utilizados.
1: Válido : no rellenamos la imagen de entrada con ceros.
2: Mismo : rellenamos suficientes ceros a la matriz de imagen de entrada para que la dimensión de entrada sea igual a la salida.

Así es como se ve (3) el relleno completo y rara vez se usa. Esto da como resultado una imagen de salida más grande que una dimensión de una imagen de entrada.

fullpadding
relleno completo en la matriz de imagen de entrada


En realidad tenemos bibliotecas que manejan todas estas operaciones de pad. Solo tenemos que saber qué podemos usar para obtener los mejores resultados.

6. Convoluciones 1D vs 2D vs 3D

Cuando se trata de datos 1D, 2D o 3D, la única diferencia en convoluciones es la forma de la matriz de entrada seguida de la forma de los filtros que se ajustan en consecuencia según las dimensiones .

Consulte las imágenes a continuación para obtener imágenes claras .

Entonces hablemos de nuestras actividades diarias . Escuchamos música , vemos series de televisión , series de Netflix , utilizamos reloj inteligente durante los ejercicios, etc.

Así que, sin saberlo, todos los días tratamos con todo tipo de datos . es decir, señal de un reloj inteligente – Datos 1D seguidos de imágenes en blanco y negro – Datos 2D seguidos de imágenes en color – Datos 3D .

Entonces, ¿cuál es la diferencia entre estos 3? y cómo son diferentes las convoluciones en 1Dvs 2D vs 3D ?
Siga para una comprensión visual .

“1D versus 2D CNN” by Nils Ackermann is licensed under Creative Commons
“1D versus 2D CNN” por Nils Ackermann tiene licencia Creative Commons


La imagen de arriba explica un control deslizante de filtro 1D (en datos de texto) frente a una imagen en blanco y negro usando un control deslizante de filtro 2D . Observamos la diferencia en los patrones de deslizamiento , 1D se desliza en 1 dirección seguido de 2D que se desliza en 2 direcciones (moviéndose a la derecha seguido de abajo )

Consulte este enlace para un interesante corto sin embargo, una rápida explicación de cómo las imágenes pueden ser 2D o 3D basado en cierta features.3

2D Filters
Datos 2D vs Filtros 2D
3D Filters
Datos 3D vs Filtros 3D

Estas imágenes rápidas nos muestran cómo varían los filtros con las dimensiones de los datos . Esto concluye nuestro primer concepto importante de filtros.
Un rápido para llevar : Las dimensiones de los filtros dependen de las dimensiones de los datos de entrada nos proponemos a convolución sucesivamente.

7. ¿Qué es la agrupación?

La segunda magia sobre CNN (después de los filtros) es la agrupación . Agrupar en términos simples significa, considerar una matriz M.
O bien tomamos un máximo (agrupación máxima) de M, min (agrupación mínima) de M, promedio (agrupación promedio) de M.

El concepto es simple y directo pero muy efectivo en retener información importante que es importante para los resultados finales .

maxpool
avgpool

La agrupación nos ayuda de 2 maneras:

  • Reduzca la dimensión de entrada y conserve solo las características importantes
  • Ayuda a identificar una imagen independientemente de su posición en una imagen.
    Mira la imagen a continuación. Tanto la imagen son del alfabeto ‘ A ‘. Pero ‘ A ‘ no está en la misma ubicación. La agrupación ayuda a cubrir esto y, sin embargo, identifica dónde está el alfabeto ‘ A ‘. Este es un golpe maestro ya que ayuda a identificar cualquier imagen independientemente de cualquier posición.
poolbenifits


8. Complete de principio a fin CNN

cnn1
fuente: wikimedia (licencia de uso libre)

Así que ya casi llegamos 🙂

  1. Convierta la imagen en una matriz de píxeles .
  2. Use la matriz de filtro para crear un producto de puntos y convolucionar .
  3. Aplique la agrupación (submuestreo) y experimente qué funciona bien. es decir, piscina máxima, piscina promedio, etc.
  4. Cree una capa densa totalmente conectada (donde cada neurona de entrada está conectada a cada neurona de salida )
    1. Esto no se ha cubierto en este artículo , pero se puede consultar este para obtener más información.
    2. En términos simples, la capa totalmente conectada (también llamada capa densa ) tiene cada nodo de entrada que tiene una conexión con cada nodo de salida de la siguiente capa .
  5. La etapa final será la salida .

Nota: Los puntos 2 y 3 anteriores se pueden repetir cualquier cantidad de veces dentro de la arquitectura . No hay un conjunto de reglas que nos pida que usemos números específicos, pero al final del día todo es un juego de seguimiento y error . Necesitamos rastrear la mejor arquitectura de error que nos da los resultados deseados 

En el diagrama anterior, los pasos 2 y 3 se repiten 
dos veces .
summary

9. Toma final

La tecnología ha recorrido un largo camino desde que se utilizó CNN por primera vez. A pesar de los nuevos hallazgos, CNN sigue siendo un galán incluso hoy en día para el análisis de datos en movimiento (audio, video).

Un último punto me gustaría que sepas es, en el mundo real, los módulos como tensorflow , Keras y pytorch nos da una readymade manera de poner en práctica todos los pasos que hemos discutido anteriormente.
Aunque puede implementar todo esto desde cero , hoy en día en el mundo corporativo raramente pasamos tiempo escribiendo códigos como científicos de datos. Siéntase libre de probarlo usted mismo para obtener un sólidoaferrarse a todos y cada uno de los conceptos en detalle.

Gracias por leer !

Es posible que no te pierdas estas emocionantes publicaciones: