¿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®.
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.
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.
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:
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:
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:
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.
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.
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.
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.
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 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.
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.
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.
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.
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.