Visión artificial

¿Qué es la visión artificial?

3 cosas que es necesario saber

Computer vision (visión artificial) es un conjunto de técnicas que permiten extraer información de imágenes, vídeos o nubes de puntos. La visión artificial incluye el reconocimiento de imágenes, la detección de objetos, el reconocimiento de actividades, la estimación de posiciones en 3D, el seguimiento de vídeo y la estimación de movimientos. Entre sus aplicaciones del mundo real se incluyen el reconocimiento facial para iniciar sesión en smartphones, la evasión de vehículos y peatones en vehículos autónomos, y la detección de tumores en resonancias magnéticas médicas. Para desarrollar técnicas de visión artificial se utilizan herramientas de software tales como MATLAB® y Simulink®.

Cómo funciona

La mayoría de las técnicas de visión artificial se desarrollan empleando un extenso conjunto de datos del mundo real y un flujo de trabajo de exploración de datos, entrenamiento de modelos y desarrollo de algoritmos. Los ingenieros de computer vision suelen modificar un conjunto de técnicas ya existentes para adaptarlas al problema específico en cuestión. A continuación, se describen los principales tipos de enfoques que se utilizan en los sistemas de visión artificial.

Técnicas basadas en Deep Learning

Los enfoques de Deep Learning en visión artificial son útiles para la detección de objetos, el reconocimiento de objetos, el enfoque de imágenes borrosas y la segmentación de escenas. Deep Learning implica entrenar redes neuronales convolucionales (CNN), que aprenden directamente de los datos con patrones a diferentes escalas. Entrenar CNN requiere un conjunto de gran tamaño de imágenes de entrenamiento o de nubes de puntos etiquetadas. La transferencia del aprendizaje utiliza redes previamente entrenadas para acelerar este proceso con menos datos de entrenamiento.

Segmentación semántica de una calle con Computer Vision Toolbox en MATLAB.

Segmentación semántica de una calle con Computer Vision Toolbox en MATLAB.

Técnicas basadas en características

Las técnicas de detección y extracción de características son algoritmos de visión artificial que identifican patrones o estructuras en imágenes y nubes de puntos para realizar alineación de imágenes, estabilización de vídeos, detección de objetos y mucho más. Los tipos de características de imágenes útiles incluyen bordes, esquinas o regiones de densidad uniforme. Estas características se pueden identificar con detectores tales como BRISK, SURF u ORB. En las nubes de puntos, se pueden utilizar extractores de histogramas de características de punto rápido (FPFH) o extractores de características basadas en valores propios.

Uso de la coincidencia de características para comparar la imagen de una nave espacial en movimiento con una imagen de referencia.

Uso de la coincidencia de características para comparar la imagen de una nave espacial en movimiento (imagen derecha) con una imagen de referencia (imagen izquierda). (Imagen cortesía de la NASA)

Procesamiento de imágenes

Las técnicas de procesamiento de imágenes suelen aplicarse como un paso de preprocesamiento en el flujo de trabajo de visión artificial. El tipo de preprocesamiento depende de la tarea. Estas son algunas técnicas de procesamiento de imágenes:

Detección de conos rojos utilizando la conversión de color rgb2hsv en MATLAB.

Detección de conos rojos utilizando la conversión de color rgb2hsv en MATLAB.

Procesamiento de nubes de puntos

Las nubes de puntos son un conjunto de puntos de datos en el espacio 3D que representan una forma o un objeto en 3D. El procesamiento de las nubes de puntos suele realizarse para preprocesar los datos y así prepararlos para los algoritmos de visión artificial que los analizarán. El procesamiento de las nubes de puntos generalmente implica:

Registro y combinación de nubes de puntos en 3D utilizando el punto iterativo más cercano (ICP) en MATLAB.

Registro y combinación de nubes de puntos en 3D utilizando el punto iterativo más cercano (ICP) en MATLAB.

Procesamiento de visión en 3D

Las técnicas de procesamiento de visión en 3D estiman la estructura en 3D de una escena utilizando varias imágenes capturadas con una cámara calibrada. Estas imágenes se suelen generar a partir de una cámara monocular o un par de cámaras estereoscópicas. Las técnicas de procesamiento de visión en 3D incluyen:

Reconstrucción en 3D de objetos utilizando la estructura a partir del movimiento (SfM) en MATLAB.

Reconstrucción en 3D de objetos utilizando la estructura a partir del movimiento (SfM) en MATLAB.

Por qué es importante

La visión artificial es esencial para una amplia gama de aplicaciones del mundo real. A continuación, se describen algunas de las más utilizadas.

Sistemas autónomos

Los sistemas autónomos aéreos o terrestres utilizan varios sensores que recopilan datos visuales o de nubes de puntos del entorno. Los sistemas utilizan estos datos con prestaciones de visión artificial, tales como localización y mapeo simultáneos (SLAM) y seguimiento, para crear mapas del entorno. Los sistemas autónomos pueden utilizar estos mapas para segmentar carreteras, senderos o edificios, así como para detectar y seguir personas y vehículos. Por ejemplo, BMW utiliza prestaciones de visión artificial en su sistema de asistencia al conductor Assisted Driving View (ADV) para representar e identificar el tipo de vehículos circundantes.

MATLAB ofrece soporte para pruebas de extremo a extremo del sistema de asistencia al conductor de BMW con datos del mundo real.

MATLAB ofrece soporte para pruebas de extremo a extremo del sistema de asistencia al conductor de BMW con datos del mundo real.

Aplicaciones industriales

La visión artificial se utiliza en la fabricación para aplicaciones de monitorización de la calidad de las piezas y mantenimiento de infraestructuras. Por ejemplo, Shell utilizó redes neuronales convolucionales regionales (R-CNN) entrenadas para identificar etiquetas en maquinaria. TimkenSteel también utilizó las mismas prestaciones para control de calidad, con objeto de detectar piezas de inferior calidad o defectuosas durante la fabricación.

Reconocimiento de etiquetas con OCR y Deep Learning en MATLAB.

Reconocimiento de etiquetas con OCR y Deep Learning en MATLAB.

Construcción y agricultura

La visión artificial se utiliza en la construcción y la agricultura para extraer información de datos de infraestructuras o terrenos capturados desde el aire. Prestaciones de visión artificial tales como el mapeo de firmas espectrales, la detección de objetos y la segmentación, se aplican para analizar imágenes, nubes de puntos o datos hiperespectrales de plataformas aéreas. Yachiyo Engineering en Japón utiliza estas prestaciones para detectar daños en puentes y presas con segmentación semántica. Los agricultores también analizan el estado de los cultivos con drones que capturan imágenes hiperespectrales de sus superficies agrarias.

Detección de daños en superficies de presas con SegNet en MATLAB.

Detección de daños en superficies de presas con SegNet en MATLAB.

Fotografía

El uso de la visión artificial en cámaras y smartphones ha crecido considerablemente en la última década. Estos dispositivos utilizan detección y seguimiento facial para centrarse en los rostros, y algoritmos de combinación para crear imágenes panorámicas. Además, integran reconocimiento óptico de caracteres (OCR) o escáneres de códigos de barras o códigos QR para acceder a información almacenada.

Creación de una imagen panorámica con técnicas de registro de imagen basadas en características en MATLAB.

Creación de una imagen panorámica con técnicas de registro de imagen basadas en características en MATLAB.

Visión artificial con MATLAB

En MATLAB, Image Processing Toolbox™, Computer Vision Toolbox™ y LiDAR Toolbox™ proporcionan apps, algoritmos y redes entrenadas que puede utilizar para desarrollar prestaciones de visión artificial. Puede importar datos de imágenes o nubes de puntos, preprocesarlos, y utilizar algoritmos integrados y redes de Deep Learning para analizarlos. Las toolboxes proporcionan ejemplos para iniciarse rápidamente.

Detección de defectos con MATLAB

Puede utilizar Computer Vision Toolbox para detectar anomalías y defectos en objetos tales como piezas de maquinaria o circuitos electrónicos, entre otros. Puede aumentar las probabilidades de detectar las características adecuadas comenzando con algoritmos de preprocesamiento de imágenes en Image Processing Toolbox, utilizando prestaciones tales como la corrección de la alineación, la segmentación por color y el ajuste de la intensidad de la imagen.

La detección de defectos suele lograrse con Deep Learning. Para proporcionar datos de entrenamiento para Deep Learning, puede utilizar las apps etiquetadoras de imagen, vídeos o LiDAR de MATLAB, que ayudan a etiquetar los datos creando máscaras de segmentación semántica o segmentación de instancias. Después, puede entrenar una red de Deep Learning desde cero o utilizar transferencia del aprendizaje. Luego, puede utilizar la red entrenada o una de las varias redes previamente entrenadas para clasificar los objetos en función de anomalías o defectos.

Detección de tuercas defectuosas con redes de Deep Learning entrenadas en MATLAB.

Detección de tuercas defectuosas con redes de Deep Learning entrenadas en MATLAB.

Detección y seguimiento de objetos con MATLAB

La detección y el seguimiento de objetos es uno de los usos más conocidos de la visión artificial para aplicaciones tales como detección de vehículos o personas, lectura de códigos de barras y detección de objetos en escenas. Puede utilizar Deep Network Designer para crear redes de Deep Learning en MATLAB destinadas a aplicaciones tales como detección de automóviles con YOLO v3. Primero, se cargan y preprocesan los datos de entrenamiento etiquetados; luego, se define y entrena la red de YOLO v3, y por último, se evalúa su precisión y tasa de fallos con respecto a los datos de validación (ground-truth). Después, se puede utilizar la red para detectar automóviles y mostrar cuadros delimitadores a su alrededor.

Detección de automóviles con YOLO v3 generada con Deep Network Designer en MATLAB.

Detección de automóviles con YOLO v3 generada con Deep Network Designer en MATLAB.

Uso de visión artificial y Simulink en la simulación de sistemas autónomos

Puede utilizar los resultados de la detección y el seguimiento de objetos de visión artificial en un sistema robótico o autónomo para tomar decisiones. El ejemplo del frenado de emergencia autónomo (AEB) con fusión de sensores demuestra lo fácil que resulta crear modelos de Simulink que integran prestaciones de visión artificial. El modelo tiene dos partes: un modelo de visión artificial y fusión de sensores para detectar obstáculos delante de un vehículo, y un sistema de advertencia de colisión frontal (FCW) para advertir al conductor y accionar el freno automáticamente. Esto muestra cómo se puede utilizar Simulink para integrar algoritmos de visión artificial en una simulación de sistemas más amplia.

Detección de objetos delante del vehículo con Simulink.

Detección de objetos delante del vehículo con Simulink.

Localización y mapeo con Computer Vision Toolbox

Puede utilizar la visión artificial en MATLAB para estimar la posición de cámaras y crear un mapa del entorno con localización y mapeo simultáneo visual (vSLAM), para crear modelos en 3D de los objetos con estructura a partir del movimiento (SfM), y para estimar la profundidad.

Puede estimar la posición de un par de cámaras estereoscópicas mientras crea un mapa del entorno con prestaciones integradas de MATLAB tales como imageDatastore y bagOfFeatures. El mapa se inicializa identificando características coincidentes entre el par de imágenes; después se estima la posición de la cámara y de las características en el mapa, y por último, se utiliza el ajuste de paquetes para precisar la posición y la orientación de la cámara a medida que se mueve por la escena.

Identificación de características coincidentes entre un par de cámaras estereoscópicas con ORB-SLAM2 en Computer Vision Toolbox.

Identificación de características coincidentes entre un par de cámaras estereoscópicas con ORB-SLAM2 en Computer Vision Toolbox.

Recuento de objetos

También se puede utilizar la visión artificial para contar los objetos de una imagen o un vídeo. En el ejemplo de recuento de células, se aplican operadores morfológicos para segmentar las células, identificar el centro de las células con análisis de blobs, y contar el número de centros identificados. Después, se repite este proceso para cada fotograma del vídeo.

Recuento de células en MATLAB con operadores morfológicos y análisis de blobs.

Recuento de células en MATLAB con operadores morfológicos y análisis de blobs.

Las apps de MATLAB, tales como Image Segmenter y Color Thresholder, proporcionan una interfaz de usuario interactiva para segmentar los objetos de una imagen. La app Image Region Analyzer ayuda a contar los objetos de una imagen y calcular sus propiedades, tales como área o centro de masas, entre otras.