Visión por computador y redes neuronales [Artículo de colaboración]

Visión por computador y redes neuronales [Artículo de colaboración]

17 noviembre 2020 0 Por Alvaro

Alguna vez te has preguntado ¿Cómo hace Google para reconocer tu rostro? ¿Cómo hace Tesla para que sus coches puedan ser autónomos? ¿Cómo funciona el desbloqueo facial? ¿Cómo la policía china y británica encuentran delincuentes con cámaras de seguridad? o ¿Cómo detectar cáncer con imágenes?

Todo esto se consigue gracias a la visión por computador, donde frecuentemente, se utilizan redes neuronales convolucionales, pero sin entrar muy a fondo ¿Qué es una Red Neuronal?

Una Red Neuronal artificial es un modelo computacional que imita el funcionamiento de las redes neuronales de organismos vivos: un conjunto de neuronas conectadas entre sí que trabajan en conjunto. Con la experiencia las neuronas van creando y reforzando ciertas correcciones para aprender de manera supervisada, pueden llegar a realizar tareas complejas, difícilmente tratables con algoritmos clásicos.

En la inteligencia artificial las redes neuronales sobresalen en tareas como la visión por computador o todo lo relativo con tratamiento de señales (voz a texto, texto a voz, identificación de patrones en audios, etc).

Dentro de las redes neuronales se encuentran las redes neuronales convolucionales, un tipo de redes neuronales que imitan al córtex visual del ojo humano para identificar características en las entradas de datos que en definitiva hacen que pueda identificar objetos y “ver”.

 

CIFAR10

La redes neuronales convolucionales las hemos aplicado al dataset CIFAR10. Es un dataset creado por el instituto Canadiense de Investigaciones Avanzadas que contiene 60.000 imágenes cuadradas de tamaño 32 x 32 en espacio de 3 canales RGB con 10 clases distintas:

El objetivo es identificar correctamente cada una de las imágenes dentro de la clase correspondiente usando redes neuronales convolucionales y algunas técnicas para mejorar las predicciones.

Arquitectura de la Red Neuronal

  • Capa de entrada: donde entran todos los píxeles de la imagen en 3 dimensiones, haciendo referencia a cada color (red, green, blue)
  • Capas convolucionales: son capas que detectan las características de la imagen, pueden detectar la textura, tonalidad, forma, línea, entre otros, como si fueran unos filtros, para tener los atributos de cada imagen, así facilitan la clasificación en las capas posteriores.
  • Pooling o agrupamientos: esta operación sirve para reducir el tamaño de la imagen, y se extraen solamente los valores más representativos para optimizar los cálculos de la red neuronal.
  • Flattening: cambia el formato para que pueda ser leído por las capas de neuronas posteriores.
  • Capas de neuronas: es una capa regular de neuronas donde cada una incluye pesos y una función de activación. Es aquí donde ocurre la clasificación de las imágenes, pues aprenden a relacionar los atributos de las otras capas con la predicción.
  • Capa de salida: devuelve una probabilidad para cada uno de los valores, en este caso el tamaño es 10 porque son las posibles categorías.

Cuidado con el sobreajuste u overfitting

Las redes neuronales son capaces de memorizar los datos de entrenamiento haciendo predicciones muy precisas sobre los mismos. Muchas veces el problema es que no aprenden la lógica subyacente, es decir, no son capaces de generalizar sobre datos que no han visto antes. Esto se conoce como overfitting o sobreajuste y es uno de los mayores problemas de un Data Scientist. En este caso para combatir el overfitting tenemos una serie de herramientas que nos ayudan a mejorar el modelo.

Dropout

Es una técnica de regularización, por tanto, nos ayuda a evitar el overfitting. Consiste en seleccionar una cantidad de neuronas de manera aleatoria e ignorarlas durante cada fase del entrenamiento, esto crea un modelo más robusto que puede generalizar mejor ya que así limitan su dependencia.

Big Data no tan Big

Uno de los problemas de las redes neuronales es que requieren una gran cantidad de datos para generalizar bien al realizar el entrenamiento. Por tanto, como se está trabajando con imágenes existe una oportunidad muy grande para expandir el dataset y hacer un modelo más potente, se conoce como Data Augmentation o datos aumentados.

Data Augmentation

Consiste en generar artificialmente datos por medio de pequeñas perturbaciones en las imágenes originales para que a partir de una imagen podamos tener otras, esto nos permite aumentar tanto el tamaño como la diversidad de nuestro set de datos de entrenamiento. Pueden ser imágenes descentradas, invirtiendo los ejes, más oscuras o claras, movidas hacia un eje, con zoom, con otras tonalidades, entre otros.

De esta manera el dataset incrementa de manera considerable y así evita el overfitting, ya que ahora la red neuronal está teniendo mayor número de imágenes distintas en cuenta. En el ejemplo en cada fase de entrenamiento de la Red Neuronal va a ver coches en diferentes posiciones y va a aprender de manera más correcta lo que es un coche y lo que no, y así podrá generalizar y tendremos un modelo más robusto.

Las posibilidades de aumentar los datos están definidas por la creatividad y el framework que estés utilizando, es importante recalcar que se han de realizar perturbaciones que permitan que la imagen conserve el sentido original de la misma, sino estará tan alterada que no se podrá reconocer el objeto por un humano y mucho menos por un ordenador.

Ejemplo: La imagen de un camión que está tan alterada que no se visualiza correctamente.

Transfer Learning

Es una técnica avanzada pero muy utilizada en los proyectos de visión por computador. A grandes rasgos se fundamenta en una red neuronal ya entrenada para una tarea similar que se puede usar como punto de partida para otras tareas. Estos modelos han sido entrenados sobre sets de datos mucho más grandes que los que pudiéramos tener, son desarrollados por expertos y son de libre uso, por tanto, hacer uso de ellos tiene varias ventajas como que se necesitan menos datos de entrenamiento y generalizan mejor, como por ejemplo son Alexnet y VGG16.

Por motivos didácticos normalmente usamos los modelos desde 0, y los entrenamos sin ningún conocimiento previo, eventualmente estos aprenden los patrones, la diferencia con el transfer learning es que estos ya “han visto el mundo” solo hace falta adaptarlos y afinarlos para nuestro uso particular.

Diferentes usos de Inteligencia Artificial

Existen grandes posibilidades para implementar proyectos de inteligencia artificial con Deep Learning en las empresas, ya que no solamente sirve para la visión por computador sino también para hacer predicciones, prevenir fraude, reconocer y generar texto. Es importante recalcar el papel que tiene en startups donde el núcleo de negocio reside en una solución que implica inteligencia artificial.

Ahora mismo por el COVID-19 se están desarrollando este tipo de proyectos para identificar si una persona tiene o no puesta una mascarilla o si respetan la distancia de seguridad en un territorio determinado.

 

 

En conclusión, cada red neuronal de acuerdo al problema tendrá una estructura diferente y requiere de un profesional para que la logre adecuar a la situación de manera óptima. No es nada banal escoger qué parámetros utilizar, si hacer uso o no de transfer learning o data augmentation, ni cuál es la profundidad que tiene que tener ya que se requiere de altos conocimientos y una base matemática para llevarlo a cabo.

Artículo modificado a partir de un original de la escuela Nuclio Digital School.

¿Te ha parecido útil este artículo?

¡Comparte!