Redes neuronales convolucionales

 

Redes neuronales convolucionales

3 cosas que necesita saber

Una red neuronal convolucional (CNN o ConvNet) es una arquitectura de red para deep learning que aprende directamente de los datos, sin necesidad de extraer características manualmente.

Estas redes son particularmente útiles para encontrar patrones en imágenes para reconocer objetos, caras y escenas. También resultan eficaces para clasificar datos sin imágenes, tales como datos de audio, series temporales y señales.

Las aplicaciones que utilizan reconocimiento de objetos y visión artificial, tales como las aplicaciones para vehículos autónomos y para reconocimiento facial, dependen en gran medida de CNN.

Por qué son útiles las CNN

El uso de CNN con deep learning es popular debido a tres factores importantes. Las CNN:

  • Aprenden características directamente sin necesidad de extraerlas manualmente.
  • Generan resultados de reconocimiento altamente precisos.
  • Se pueden volver a entrenar para nuevas tareas de reconocimiento, lo que permite aprovechar las redes preexistentes.

Las CNN proporcionan una arquitectura óptima para descubrir y aprender características principales en imágenes y datos de series temporales. Las CNN son una tecnología clave en aplicaciones tales como:

  • Imágenes médicas: las CNN pueden examinar miles de informes patológicos para detectar visualmente la presencia o ausencia de células cancerosas en las imágenes.
  • Procesamiento de audio: la detección de palabras clave se puede utilizar en cualquier dispositivo con un micrófono para detectar cuándo se pronuncia una palabra o frase determinada ("Oye Siri"). Las CNN pueden aprender y detectar con precisión la palabra clave e ignorar todas las demás frases, independientemente del entorno.
  • Detección de señales de stop: la conducción autónoma se basa en CNN para detectar con precisión la presencia de una señal u otro objeto y tomar decisiones basadas en el resultado.
  • Generación de datos sintéticos: utilizando redes generativas antagónicas (GAN), se pueden producir nuevas imágenes para su uso en aplicaciones de deep learning, tales como reconocimiento facial y conducción autónoma.

Más información

Cómo funcionan las CNN

Una red neuronal convolucional puede disponer de decenas o cientos de capas que aprenden a detectar diferentes características de una imagen. Se aplican filtros a cada imagen de entrenamiento con distintas resoluciones, y la salida de cada imagen convolucionada se emplea como entrada para la siguiente capa. Los filtros pueden variar desde características muy simples, tales como el brillo y los bordes, hasta más complejas, como las características que definen el objeto de manera única.

Aprendizaje de características, capas y clasificación

Al igual que otras redes neuronales, una CNN está compuesta por una capa de entrada, una capa de salida y muchas capas intermedias ocultas.

Estas capas realizan operaciones que alteran los datos con el objetivo de aprender características específicas de dichos datos. Las 3 capas más frecuentes son: convolución, activación o ReLU, y pooling.

  • Convolución: somete las imágenes de entrada a un conjunto de filtros convolucionales, cada uno de los cuales activa ciertas características de las imágenes.
  • Unidad lineal rectificada (ReLU): permite un entrenamiento más rápido y eficaz al asignar los valores negativos a cero y mantener los valores positivos. También se lo denomina activación, dado que solo las características activadas pasan a la siguiente capa.
  • Pooling: simplifica la salida al disminuir la tasa de muestreo no lineal, reduciendo así el número de parámetros que la red necesita aprender.

Estas operaciones se repiten en decenas o cientos de capas, de modo que cada capa aprende a identificar diferentes características.

Ejemplo de una red con varias capas convolucionales. Se aplican filtros a cada imagen de entrenamiento con distintas resoluciones, y la salida de cada imagen convolucionada se emplea como entrada para la siguiente capa.

Valores de peso y sesgo compartidos

Al igual que una red neuronal tradicional, una CNN consta de neuronas con pesos y sesgos. El modelo aprende estos valores durante el proceso de entrenamiento y los actualiza continuamente con cada nuevo ejemplo de entrenamiento. Sin embargo, en el caso de las CNN, los valores de pesos y sesgos son los mismos para todas las neuronas ocultas en una capa concreta.

Esto significa que todas las neuronas ocultas detectan la misma característica, como un borde o una mancha, en diferentes regiones de la imagen. Esto hace que la red tolere la traslación de objetos en una imagen. Por ejemplo, una red entrenada para reconocer automóviles podrá hacerlo dondequiera que se encuentre el automóvil en la imagen.

Capas de clasificación

Después de aprender las características en varias capas, la arquitectura de una CNN pasa a la clasificación.

La penúltima capa está totalmente conectada y proporciona como salida un vector de K dimensiones, donde K es el número de clases que la red será capaz de predecir. Este vector contiene las probabilidades para cada clase de cualquier imagen que se clasifique.

La capa final de la arquitectura de CNN utiliza una capa de clasificación, como softmax, para proporcionar la salida de clasificación.

Diseño y entrenamiento de CNN con MATLAB

MATLAB® con Deep Learning Toolbox™ permite diseñar, entrenar y desplegar CNN.

MATLAB ofrece un amplio conjunto de modelos previamente entrenados por la comunidad de usuarios de deep learning que se pueden utilizar para aprender e identificar características de un conjunto de datos nuevo. Este método, llamado transferencia del aprendizaje, es una forma práctica de aplicar deep learning sin necesidad de empezar desde cero. Modelos tales como GoogLeNet, AlexNet e Inception ofrecen un punto de partida para explorar deep learning, aprovechando arquitecturas comprobadas creadas por expertos.

Diseño y entrenamiento de redes

Deep Network Designer permite importar modelos previamente entrenados o crear nuevos modelos desde cero.

App Deep Network Designer para crear, visualizar y editar redes de deep learning interactivamente.

También puede entrenar redes directamente en la app y supervisar el entrenamiento con gráficas de métricas de precisión, pérdida y validación.

Uso de modelos previamente entrenados para la transferencia del aprendizaje

Por lo general, ajustar una red previamente entrenada con transferencia del aprendizaje suele ser mucho más rápido y fácil que entrenarla desde cero, ya que requiere una cantidad mínima de datos y recursos computacionales. La transferencia del aprendizaje utiliza el conocimiento de un tipo de problema para resolver otros problemas similares. Se empieza con una red previamente entrenada y se utiliza para aprender una nueva tarea. Una ventaja de la transferencia del aprendizaje es que la red previamente entrenada ya ha aprendido un gran conjunto de características. Estas características se pueden aplicar a una amplia gama de tareas similares. Por ejemplo, puede tomar una red entrenada con millones de imágenes y volver a entrenarla para clasificar nuevos objetos utilizando solo cientos de imágenes.

Aceleración de hardware por GPU

Una red neuronal convolucional se entrena con cientos, miles o incluso millones de imágenes. Cuando se trabaja con grandes cantidades de datos y arquitecturas de red complejas, las GPU pueden acelerar significativamente el tiempo de procesamiento para entrenar un modelo.

GPU NVIDIA®, que acelera tareas con alta carga computacional, como deep learning.

Más información


Aplicaciones que utilizan CNN

Detección de objetos

La detección de objetos es el proceso de localizar y clasificar objetos en imágenes y vídeos. Computer Vision Toolbox™ proporciona marcos de entrenamiento para crear detectores de objetos basados en deep learning con YOLO y Faster R-CNN.

Detección de objetos con deep learning

Este ejemplo muestra cómo entrenar un detector de objetos con deep learning y R-CNN (regiones con redes neuronales convolucionales).

Detección de palabras clave

La detección de palabras clave es un ejemplo de aplicación de voz a texto, que reconoce ciertas palabras o frases clave, y las interpreta como una directriz. Algunos ejemplos frecuentes son activar dispositivos y encender luces.

Detección de palabras clave con deep learning

Este ejemplo muestra cómo usar MATLAB para identificar y detectar la presencia de comandos de voz en audio, y su uso en tecnología de asistencia de voz.

Segmentación semántica

Las CNN se utilizan en segmentación semántica para identificar cada píxel de la imagen con una etiqueta de clase correspondiente. La segmentación semántica se puede utilizar en aplicaciones tales como conducción autónoma, inspección industrial, clasificación del terreno e imágenes médicas. Las redes neuronales convolucionales son la base para crear una red de segmentación semántica.

Segmentación semántica con deep learning

Este ejemplo muestra cómo usar MATLAB para crear una red de segmentación semántica, que identifica cada píxel de la imagen con una etiqueta correspondiente.

MATLAB proporciona herramientas y funcionalidades para todo lo relacionado con deep learning. Utilice CNN para ampliar sus flujos de trabajo en procesamiento de señales, visión artificial, comunicaciones y radar.


Cómo obtener más información sobre las CNN

Entre los productos que soportan el uso de CNN para el análisis de imágenes se incluyen MATLABComputer Vision Toolbox™Statistics and Machine Learning Toolbox™Deep Learning Toolbox.

Las redes neuronales convolucionales requieren Deep Learning Toolbox. Una GPU CUDA® con capacidad de cálculo 3.0 o superior soporta el entrenamiento y la predicción. El uso de una GPU es muy recomendable, y requiere Parallel Computing Toolbox™.

Vídeos

Ejemplos y procedimientos

Referencias de software