Redes Neuronales Convolucionales

Tres cosas que es necesario saber

¿Qué es una red neuronal convolucional?

Una red neuronal convolucional (CNN o ConvNet) es uno de los algoritmos más populares para Deep learning (aprendizaje profundo), que es un tipo de aprendizaje automático (machine learning) en el que un modelo aprende a realizar tareas de clasificación directamente a partir de imágenes, vídeos, textos o sonidos.

Las CNNs son especialmente útiles para localizar patrones en imágenes con el objetivo de reconocer objetos, caras y escenas. Aprenden directamente a partir de los datos de imágenes, utilizando patrones para clasificar las imágenes y eliminar la necesidad de una extracción manual de características.

Las aplicaciones que involucran reconocimiento de objetos y visión artificial (como los vehículos de conducción autónoma y las aplicaciones de reconocimiento facial) se basan fundamentalmente en las CNNs. En función de su aplicación, puede crear una CNN desde cero, o bien utilizar un modelo previamente entrenado con su conjunto de datos.

¿Qué hace que las CNNs sean tan útiles?

El uso de las CNNs para Deep learning se ha vuelto cada vez más popular debido a tres importantes factores:

  • Las CNNs eliminan la necesidad de una extracción manual de características: la propia CNN aprende directamente las características.
  • Las CNNs generan unos magníficos resultados de reconocimiento.
  • Las CNNs se pueden volver a entrenar para nuevas tareas de reconocimiento a partir de redes ya existentes.

Flujo de trabajo de Deep learning. Las imágenes se envían a la CNN, que aprende las características y clasifica los objetos de forma automática.

Las CNNs permiten avances en detección de objetos y reconocimiento de objetos

Las CNNs proporcionan una arquitectura óptima para el reconocimiento de imágenes y la detección de patrones. Combinadas con los avances producidos en las GPUs y el cálculo paralelo, las CNNs son una tecnología clave que sirve de base a nuevos desarrollos en la conducción autónoma y el reconocimiento facial.

Por ejemplo, algunas aplicaciones de Deep learning utilizan las CNNs para examinar miles de informes patológicos con el objetivo de detectar visualmente las células cancerosas. Las CNNs también permiten a los vehículos de conducción autónoma detectar objetos y aprender a diferenciar entre una señal vial y un peatón. 

Aprenda más

Cómo funcionan las CNNs

Una red neuronal convolucional puede tener 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 pasar de características muy simples, tales como el brillo y los bordes, a características más complejas que definen inequívocamente el objeto.

Las CNNs identifican y clasifican las características de imágenes, textos, sonidos y vídeos.

Aprendizaje de características, capas y clasificación

Al igual que otras redes neuronales, una CNN se compone de una capa de entrada, una capa de salida y muchas capas ocultas intermedias.

Estas capas realizan operaciones que alteran los datos con el objetivo de aprender las características específicas de esos datos. Tres de las capas más comunes son: convolución, activación (o ReLU) y agrupación.

  • La convolución hace pasar las imágenes de entrada a través de un conjunto de filtros convolucionales, y cada uno de ellos activa determinadas características de las imágenes.
  • La unidad lineal rectificada (ReLU) permite un entrenamiento más rápido y efectivo al asignar los valores negativos a cero y mantener los valores positivos. Esto a veces se conoce como activación, ya que solo las características activadas prosiguen su camino hacia la siguiente capa.
  • La agrupación simplifica la salida al llevar a cabo una disminución no lineal de la tasa de muestreo, lo que reduce el número de parámetros que necesita la red para aprender.

Estas operaciones se repiten a lo largo de decenas o cientos de capas, un proceso en el que cada capa aprende a identificar características diferentes.

Ejemplo de una red con muchas 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.

Capas de clasificación

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

La capa denominada de la próxima a la última es una capa totalmente conectada que genera 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 esté clasificando.

La capa final de la arquitectura de una CNN se trata de una capa de clasificación, como softmax, para generar la salida de clasificación. 

Aceleración de hardware con GPUs

Una red neuronal convolucional se entrena a partir de cientos, miles o incluso millones de imágenes. Cuando se trabaja con grandes cantidades de datos y complejas arquitecturas de red, las GPUs pueden reducir significativamente el tiempo de procesamiento necesario para entrenar un modelo. Una vez que se ha entrenado una CNN, se puede utilizar para aplicaciones en tiempo real, tales como la detección de peatones en los sistemas avanzados de conducción asistida (ADAS, por sus siglas en inglés).

Uso de MATLAB con una CNN

El uso de MATLAB® con Neural Network Toolbox™ le permite entrenar su propia CNN desde cero o utilizar un modelo previamente entrenado para realizar la transferencia del aprendizaje.

El método que elija dependerá de sus recursos disponibles y del tipo de aplicación que esté creando.

Para entrenar una red desde cero, el arquitecto debe definir el número de capas y filtros, así como otros parámetros. El entrenamiento desde cero de un modelo preciso también requiere ingentes cantidades de datos, del orden de millones de muestras, lo que puede llevar una enorme cantidad de tiempo.

Una alternativa habitual al entrenamiento de una CNN desde cero es utilizar un modelo previamente entrenado para extraer de forma automática las características de un nuevo conjunto de datos. Este método, conocido como transferencia del aprendizaje, es una forma práctica de aplicar el Deep learning sin necesidad de un vasto conjunto de datos y mucho tiempo de cálculo y entrenamiento. 

Entrenamiento desde cero

Para crear una red desde cero, debe determinar la configuración de la red. Este enfoque le proporciona el máximo nivel de control sobre la red y puede arrojar resultados impresionantes, pero requiere conocer perfectamente la estructura de una red neuronal y las numerosas opciones disponibles para los tipos de capas y su configuración.

Aunque en ocasiones los resultados en precisión puedan superar a los de la transferencia del aprendizaje (vea más abajo), este método suele requerir más imágenes para el entrenamiento, ya que la nueva red necesita muchos ejemplos del objeto para conocer la variación de características. Los tiempos de entrenamiento suelen ser más largos, y existen tantas combinaciones de capas de red que configurar una red desde cero puede llegar a ser una tarea abrumadora. Normalmente, al crear una red y organizar sus capas, sirve de ayuda utilizar como referencia otras configuraciones de red para aprovechar los valores que otros investigadores han demostrado que resultan útiles. 

Aprenda más

Uso de modelos previamente entrenados para la transferencia del aprendizaje

Ajustar de forma precisa una red previamente entrenada con la transferencia del aprendizaje suele ser mucho más rápido y fácil que entrenar una red desde cero. Requiere menor cantidad de datos y recursos computacionales. La transferencia del aprendizaje utiliza los conocimientos de un tipo de problema para solucionar otros problemas similares. Se empieza con una red previamente entrenada que luego se utiliza para aprender una nueva tarea.  Una de las ventajas de la transferencia del aprendizaje es que la red previamente entrenada ya ha aprendido un amplio conjunto de características. Estas características se pueden aplicar a una amplia variedad de tareas similares. Por ejemplo, puede aprovechar una red entrenada a partir de millones de imágenes y volver a entrenarla para una nueva clasificación de objetos utilizando solo unos cientos de imágenes.

Con Neural Network Toolbox, puede realizar la transferencia del aprendizaje con modelos de CNN previamente entrenados (como GoogLeNet, AlexNet, vgg16 y vgg19) y modelos procedentes de Caffe y TensorFlow-Keras.

Aprenda más

Aplicaciones que utilizan CNNs

Detección de objetos

La detección de objetos es el proceso de localizar y clasificar objetos presentes en imágenes y vídeos. Computer Vision System Toolbox™ proporciona estructuras de entrenamiento para crear detectores de objetos basados en Deep learning mediante R-CNN (CNN basada en regiones), Fast R-CNN y Faster R-CNN.

Puede utilizar las técnicas de Machine Learning de Statistics and Machine Learning Toolbox™ con Computer Vision System Toolbox para crear sistemas de reconocimiento de objetos.

Neural Network Toolbox ofrece funciones para crear y entrenar CNNs, así como realizar predicciones con un modelo de CNN entrenado.

Este ejemplo muestra cómo entrenar un detector de objetos utilizando deep learning y R-CNN (Regions with Convolutional Neural Networks).
Este ejemplo muestra cómo entrenar un detector de objetos utilizando una técnica de deep learning llamada R-CNN más rápida (Regiones con redes neuronales convolucionales).

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

Entre los productos que admiten la utilización de CNNs para análisis de imágenes se incluyen MATLAB®, Computer Vision System Toolbox™, Statistics and Machine Learning Toolbox™ y Neural Network Toolbox™.

Las redes neuronales convolucionales requieren Neural Network Toolbox. El entrenamiento y la predicción son soportados en una GPU habilitada para CUDA® con capacidad de cálculo 3.0 o superior. Se recomienda utilizar una GPU y se requiere Parallel Computing Toolbox™.

Referencia de software

Consiga una prueba gratuita

Treinta días de exploración a su alcance.

¿Tiene preguntas?

Hablar con un experto en Deep Learning.