Intro a las redes neuronales convolucionales

Image for post
Image for post

Autoras: Sarahí Silva — Estefanía Freire

Las redes neuronales convolucionales es un algoritmo de Deep Learning que está diseñado para trabajar con imágenes, tomando estas como input, asignándole importancias (pesos) a ciertos elementos en la imagen para así poder diferenciar unos de otros. Este es uno de los principales algoritmos que ha contribuido en el desarrollo y perfeccionamiento del campo de Visión por computadora.
Las redes convolucionales contienen varias hidden layers, donde las primeras puedan detectar líneas, curvas y así se van especializando hasta poder reconocer formas complejas como un rostro, siluetas, etc. Las tareas comunes de este tipo de redes son:
Detección o categorización de objetos, clasificación de escenas y clasificación de imágenes en general.
La red toma como entrada los pixeles de una imagen. Si tenemos una imagen con apenas 28×28 pixeles de alto y ancho, eso equivale a 784 neuronas. Y eso es si sólo tenemos 1 color (escala de grises). Si tuviéramos una imagen a color, necesitaríamos 3 canales (red, green, blue) y entonces usamos 28x28x3 = 2352 neuronas de entrada. Esa es nuestra capa de entrada.

Image for post
Image for post

Pero antes es necesario normalizar la “data”, es decir que nuestros pixeles que ahora tienen valores entre 0 y 255, tengan valores entre 0 y 1, podemos lograrlo dividiendo cada uno de los pixeles al valor más alto que estos tienen es decir 255.

Kernel

El kernel en las redes convolucionales se considera como el filtro que se aplica a una imagen para extraer ciertas características importantes o patrones de esta.
Por ejemplo si tenemos una imagen como la siguiente.

Image for post
Image for post

Aplicando el filtro o kernel se mostrará de la siguiente forma.

Image for post
Image for post

Entre las características importantes para lo que sirve el kernel son detectar bordes, enfoque, desenfoque, entre otros. Esto se logra al realizar la convolución entre la imagen y el kernel.

Convolución

Uno de los procesos más distintivos de estas redes son las convoluciones. El cual consiste en tomar un grupo de píxeles de la imagen de entrada e ir realizando un producto escalar con un kernel. El kernel recorrerá todas las neuronas de entrada y obtendremos una nueva matriz, la cual será una de las hidden layers. En el caso de que la imagen sea de color se tendrán 3 kernels del mismo tamaño que se sumarán para obtener una imagen de salida.

Image for post
Image for post

Convolución con imágenes en escala de grises.

Para este proceso tenemos una imagen y el kernel, con la finalidad que el filtro o kernel recorra toda la imagen (pixel).Por lo general, el kernel es de menor tamaño que la imagen.
La convolución permite multiplicar el kernel con la porción de imagen escogida, se realiza la multiplicación tal como indica la imagen y luego el kernel se va desplazando por esta razón es un proceso iterativo.

Image for post
Image for post

Siguiente desplazamiento y se vuelve a multiplicar.

Image for post
Image for post

Y así sucesivamente hasta completar todo.

Image for post
Image for post

Convolución con imágenes RGB.

Las imágenes de color se representan con 3 planos R(red),G(green),B(blue) y al combinarse se ven todas las mezclas de colores.
Por lo que ahora el filtro también será de 3 planos.

Image for post
Image for post

La convolución suele ser similar al de escala de grises pero ahora el filtro de 3 capas le corresponde a un pixel(capa) correspondiente. Aunque la imagen de entrada es de 3 planos, la imagen resultante será de de 1 plano.

Image for post
Image for post

Se hace el proceso iterativo mencionado anteriormente, hasta completar todo.

Image for post
Image for post

Padding

Es una operación que se usa en las redes convolucionales. El padding se aplica agregando píxeles de valor cero alrededor de la imagen original.
Tiene dos usos:
El primero es para que al realizar la convolución la imagen resultante sea de igual tamaño que la imagen original.
El segundo es cuando se tiene información relevante en las esquinas de la imagen por lo que al realizar convolución el filtro pasa más por el centro de la imagen que en las esquinas, por lo que se aplica el padding para tener la información más relevante cerca del centro.

Image for post
Image for post

Intro a la transferencia de aprendizaje

La transferencia de aprendizaje es una técnica que permite a un algoritmo de machine learning mejorar sus capacidades de aprendizaje en un dataset, exponiendolo previamente a uno totalmente diferente. Es decir se hace uso de una red pre entrenada, así no necesitaremos hacer uso de una gran cantidad de datos ni nos tomará tanto tiempo el entrenar nuestra red.
Si el conjunto de datos original con el que se entrenó la red neuronal pre entrenada es suficientemente grande y general, entonces los features aprendidos permiten al modelo pre entrenado actuar como un modelo genérico del mundo visual y, así, lograr encontrar características que definan ciertos objetos dentro de las imágenes lo que lo hace ser aplicable fuera de otros campos a más del que fue pre entrenado.
Específicamente, en el caso de la visión por computador, muchos modelos previamente entrenados (muchos entrenados en el conjunto de datos ImageNet) ahora están disponibles públicamente para su descarga y se pueden usar para crear potentes modelos de visión con muy pocos datos.

Image for post
Image for post

Referencias

¿Cómo funcionan las Convolutional Neural Networks? Visión por Ordenador
Deep learning: Redes convolucionales
Las redes convolucionales
Redes neuronales convolucionales
Data Augmentation y Transfer Learning

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store