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
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 sí , 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 .
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 .
Paso dos:
como se prometió antes, estamos multiplicando y agregando el filtro con la imagen . Observe lasiguiente ecuación para una comprensión clara.
Paso tres:
Continúe esto hasta que el filtro se deslice en toda la imagen.
Nosotros continuamos esto hasta última diapositiva.
En breve :
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.
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.
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 .
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 “.
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.
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 .
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
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 .
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.
8. Complete de principio a fin CNN
Así que ya casi llegamos 🙂
- Convierta la imagen en una matriz de píxeles .
- Use la matriz de filtro para crear un producto de puntos y convolucionar .
- Aplique la agrupación (submuestreo) y experimente qué funciona bien. es decir, piscina máxima, piscina promedio, etc.
- Cree una capa densa totalmente conectada (donde cada neurona de entrada está conectada a cada neurona de salida )
- Esto no se ha cubierto en este artículo , pero se puede consultar este para obtener más información.
- 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 .
- 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 .
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:
- Estructuras de datos en Python: pilas, colas y dequesSeries de estructuras de datos en python que cubren pilas en python, colas en python y deque en python con su implementación desde cero.
- Estructuras de datos en Python – Arrays | Créalos desde ceroEstructuras de datos en python. Este artículo cubre las matrices en Python y la implementación de matrices desde cero. Esto también cubre la gestión de la memoria de la matriz.
- Redes neuronales recurrentes en pocas palabras | Guía A-Z¿Qué es una red neuronal recurrente? Un tipo especial de redes neuronales, también llamadas RNN, se usa ampliamente para tratar datos de secuencia.
- Redes neuronales de convolución en pocas palabras | Guía de la A a la ZLa red neuronal convolucional (ConvNet o CNN) es una red neuronal utilizada de manera efectiva para el reconocimiento y clasificación de imágenes. CNN no es menos que una caja mágica
- Clasificación lineal (regresión logística) utilizando reciente Tensorflow 2+En este artículo, implementamos la clasificación lineal utilizando la versión más reciente de Tensorflow. es decir, 2.2+ ¿Qué es la clasificación lineal ? Cuando los puntos de datos a clasificar son separables por una línea o, en términos más fáciles, podemos trazar una línea entre los registros de éxito y los registros de falla, lo llamamos Clasificador lineal . … Read More »Clasificación lineal (regresión logística) utilizando reciente Tensorflow 2+