Visión por Computador con Redes Neuronales

Tiempo de lectura: 5 minutos

Te invitamos a leer la experiencia de Alejandro Tinto, alumno de la primera edición del programa, en la que detalla el desarrollo de uno de los proyectos que ha realizado y su experiencia obtenida con el Máster de Data Science en Nuclio Digital School.

Visión por computador

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?

¿Cuál es el funcionamiento del desbloqueo facial?

¿Cómo funcionan los modelos de generación de imágenes como DALL-E Mini?

¿La policía china y británica encuentran delincuentes con cámaras de seguridad?

¿Es posible 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?

 

¿Qué son las redes neuronales?

Red Neuronal artificial

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, que no podrían ser realizadas mediante la programación clásica basada en reglas.

En la inteligencia artificial las redes neuronales sobresalen en tareas que antes eran imposibles de realizar como la visión por computador, el reconocimiento de voz, predicciones bursátiles, generación de texto y prevención de fraude.

 

Red Neuronal convolucional

Por tanto, a grandes rasgos una Red Neuronal Convolucional es un tipo de Red Neuronal que imita 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

En el Máster de Data Science en Nuclio Digital School hemos aprendido a usar Redes Neuronales Convolucionales para clasificar imágenes, y lo hemos aplicado en uno de los proyectos desarrollados, el 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 diferentes clases: 

El objetivo es identificar correctamente cada una de las imágenes dentro de la clase correspondiente usando Redes Neuronales Convolucionales y usar algunas técnicas para potenciar 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 la red que memoriza! (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 o Abandonos

Es una técnica de regularización, por tanto, evita 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 pueda 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 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 realizar 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á “viendo más mundo”. 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. Todo este contenido lo podrás aprender de manera práctica e intensiva con el máster en Nuclio Digital School.

Conoce la #NUCLIOEXPERIENCE de Alejandro Tinto: