WOT

Friday, October 30, 2020

Roadmap to Computer Vision - Hoja de ruta a la visión por computador

 


 
Roadmap to Computer Vision

 

This article is a translation of the original that appears on KDnuggets: 

https://www.kdnuggets.com/2020/10/roadmap-computer-vision.html

Thank you very much for allowing its publication in Spanish.

Muchas gracias por permitir su publicación en español. 

 

 

 

Hoja de ruta de la visión por computador

 


 

Share

Etiquetas: Computer VisionConvolutional Neural NetworksData PreprocessingNeural Networks



Disfrute de esta introducción sobre los pasos más importantes que componen un sistema de visión por computador, comenzando por cómo se procesan previamente las imágenes, siguiendo por cómo se extraen las características y finalmente cómo se realizan las predicciones.


 

Autor: Pier Paolo Ippolito, Universidad de Southampton

 


 

 

Foto de Ennio Dybeli en Unsplash

 

Introducción

 
La visión por computador (VC) es hoy en día una de las principales aplicaciones de la inteligencia artificial (por ejemplo el reconocimiento de imágenes, el seguimiento de objetos, la clasificación multietiqueta). En este artículo, le acompañaré a través de algunos de los pasos más importantes que componen un sistema de visión por computador.

 

La siguiente es una presentación estándar del flujo de trabajo de un sistema de visión por computador:

1.    Se introduce un conjunto de imágenes en el sistema.

 

2.    Se utiliza un extractor de características para extraer y preprocesar las características de las imágenes.

3.    Un sistema de aprendizaje automático hace uso de las características extraídas para entrenar un modelo y hacer predicciones.

 

A continuación, analizaremos brevemente algunos de los principales procesos que tienen lugar en cada uno de estos tres pasos.

 

Introducción de imágenes en el sistema

 
Al intentar implementar un sistema de VC, debemos tener en cuenta dos componentes principales: el hardware de adquisición de imágenes y el software de procesamiento de las mismas. Uno de los principales requisitos para implementar un sistema VC es probar su robustez. Nuestro sistema debería, de hecho, ser invariable a los cambios ambientales (como cambios en la iluminación, orientación, escalado) y ser capaz de realizar la tarea diseñada de manera repetida. Para satisfacer estos requisitos, podría ser necesario aplicar algún tipo de restricción al hardware o al software de nuestro sistema (por ejemplo, controlar de forma remota el entorno de iluminación).

 

Una vez que un dispositivo hardware adquiere una imagen, hay muchas formas posibles de representar numéricamente los colores (espacios de color) dentro de un sistema de software. Dos de los espacios de color más conocidos son RGB (rojo, verde, azul) y HSV (tono, saturación, valor). Una de las principales ventajas de usar un espacio de color HSV es que al tomar solo los componentes HS podemos hacer que la iluminación de nuestro sistema sea invariable (Figura 1).

 


Figura 1: espacios de color RGB versus HSV [1]

 

Extractor de características

 

Preprocesado de imágenes

 
Una vez que una imagen entra en el sistema y se representa usando un espacio de color, podemos aplicar diferentes operadores a la imagen para mejorar su representación:

 

Operadores de puntos: utilizamos todos los puntos de una imagen para crear una versión transformada de la imagen original (para hacer explícito el contenido dentro de una imagen, sin cambiar su contenido). Algunos ejemplos de operadores de puntos son: normalización de intensidad, ecualización de histogramas y umbralización. Los operadores de puntos se usan comúnmente para ayudar a que las personas visualicen mejor una imagen, pero no necesariamente ofrecen alguna ventaja para un sistema de visión por computadoro.

 

Operadores de grupo: en este caso, tomamos un grupo de puntos de la imagen original para crear un único punto en la versión transformada de la imagen. Este tipo de operación se realiza normalmente mediante una convolución. Se pueden usar diferentes tipos de kernels que se convolucionan con la imagen para obtener y transformar nuestro resultado (Figura 2). Algunos ejemplos son: promedio directo, promedio gaussiano y filtro de la mediana. La aplicación de una operación de convolución a una imagen puede dar como resultado la disminución de la cantidad de ruido en la imagen y mejorar el suavizado (aunque esto también puede terminar borrando ligeramente la imagen). Dado que estamos usando un grupo de puntos para crear un único punto nuevo en la nueva imagen, las dimensiones de la nueva imagen serán necesariamente menores que la original. Una solución a este problema es aplicar rellenos con ceros (estableciendo los valores de los píxeles a cero) o utilizando una plantilla más pequeña en el borde de la imagen. Una de las principales limitaciones del uso de la convolución es su velocidad de ejecución cuando se trabaja con plantillas de gran tamaño. Una posible solución a este problema es utilizar en su lugar la transformada de Fourier.

 

 


Figure 2: Convolución del kernel

 

Una vez preprocesada una imagen, podemos aplicar técnicas más avanzadas para intentar extraer los bordes y las formas en la imagen mediante distintos métodos, como la detección de bordes de primer orden (por ejemplo, el operador de Prewitt, el operador de Sobel o el detector de borde Canny) y las transformaciones de Hough.

 

 Extracción de características

Una vez preprocesada una imagen, existen 4 tipos principales de morfologías de características que se pueden extraer de la misma mediante el uso de un extractor de características:

  • Características globales: toda la imagen se analiza como una unidad y el extractor de características entrega un único vector de características. Un sencillo ejemplo de una característica global puede ser un histograma de valores de pixeles agrupados.
  • Características basadas en cuadrículas o bloques: la imagen se divide en diferentes bloques y las características se extraen de cada uno de los bloques. Una de las principales técnicas que se utilizan para extraer características de los bloques de una imagen es Dense SIFT (Scale Invariant Feature Transform). Este tipo de características se utiliza principalmente para entrenar modelos de aprendizaje automático.
  • Características basadas en la región: la imagen se segmenta en diferentes regiones (por ejemplo, utilizando técnicas como la creación de umbrales o K-Means Clustering y luego se conectan en segmentos utilizando Connected Components) y se extraen las características de cada una de estas regiones. Las características se pueden extraer mediante el uso de técnicas de descripción de regiones y límites (como son Moments y Chain Codes).
  • Características locales: se detectan varios puntos de interés únicos en la imagen y las características se extraen analizando los píxeles vecinos a los puntos de interés. Dos de los principales tipos de puntos de interés que se pueden extraer de una imagen son las esquinas y las manchas, que se pueden extraer mediante métodos como el detector Harris & Stephens y el Laplacian of Gaussians. Las características finalmente se pueden extraer de los puntos de interés detectados mediante el uso de técnicas como SIFT (Scale Invariant Feature Transform). Las características locales se utilizan normalmente para hacer coincidir imágenes con el objetivo de crear una reconstrucción panorámica / 3D o para recuperar imágenes de una base de datos.

 

Una vez extraído un conjunto de características discriminatorias, podemos usarlas para entrenar un modelo de aprendizaje automático para hacer inferencias. Los descriptores de características se pueden aplicar fácilmente en Python utilizando bibliotecas como OpenCV.

 

Aprendizaje automático

 
Uno de los principales conceptos utilizados en la visión por computador para clasificar una imagen es el Bag of Visual Words (BoVW) (bolsa de palabras visuales). Para elaborar una bolsa de palabras visuales, primero necesitamos crear un vocabulario extrayendo todas las características de un conjunto de imágenes (por ejemplo, usando características basadas en cuadrículas o características locales). Sucesivamente, podemos contar la cantidad de veces que aparece una característica extraída en una imagen y elaborar un histograma de frecuencia a partir de los resultados. Utilizando el histograma de frecuencia como plantilla básica, finalmente podemos clasificar si una imagen pertenece a la misma clase o no comparando sus histogramas (Figura 3).

 

Este proceso se puede resumir en los siguientes pasos:

  1. Primero elaboramos un vocabulario extrayendo las diferentes características de un conjunto de datos de imágenes usando algoritmos de extracción de características como SIFT y Dense SIFT.
  2. En segundo lugar, agrupamos todas las características de nuestro vocabulario usando algoritmos como K-Means o DBSCAN y usamos los centroides del grupo para resumir nuestra distribución de datos.
  3. Finalmente, podemos elaborar un histograma de frecuencia a partir de cada imagen contando el número de veces que aparecen en la imagen diferentes características del vocabulario.

 

Entonces, las imágenes nuevas se pueden clasificar repitiendo este mismo proceso para cada imagen que queremos clasificar, y a continuación usamos cualquier algoritmo de clasificación para averiguar qué imagen en el vocabulario se parece más a la imagen de prueba.

 


 

Figura 3: Bolsa de palabras visuales [2]

 

Actualmente, gracias a las arquitecturas de redes neuronales artificiales, como las redes neuronales convolucionales (RNC) and redes neuronales artificiales recurrentes (RNAR), ha sido posible idear un flujo de trabajo alternativo para la visión por computador (Figure 4).

 


Figure 4: Computer Vision Workflow [3]

 

En este caso, el algoritmo de aprendizaje profundo incorpora los pasos de extracción de características y clasificación del flujo de trabajo de visión por computador. Cuando se utilizan redes neuronales convolucionales, cada capa de la red neuronal aplica las diferentes técnicas de extracción de características según se hayan descrito (por ejemplo, la capa 1 detecta bordes, la capa 2 encuentra formas en una imagen, la capa 3 segmenta la imagen, etc.) antes de proporcionar los vectores de características al clasificador de capa densa.

Otras aplicaciones del aprendizaje automático en la visión por computadora incluyen áreas como la clasificación de múltiples etiquetas y el reconocimiento de objetos. En Multilabel Classification (clasificación multietiqueta), nuestro objetivo es elaborar un modelo capaz de identificar correctamente cuántos objetos hay en una imagen y a qué clase pertenecen. En Object Recognition (reconocimiento de objetos), en cambio, nuestro objetivo es llevar este concepto un paso más allá al identificar también la posición de los diferentes objetos en la imagen.

 

Contacto

 
Si quiere estar al día en mis últimos artículos y proyectos,
sígame en Medium y suscríbase a mi lista de correo. Estos son mis datos de contacto:

·         Linkedin

·         Personal Blog

·         Personal Website

·         Medium Profile

·         GitHub

·         Kaggle

 

Bibliografía

 
[1] Robot modular que se utiliza para limpiador de playas, Felippe Roza. Researchgate. Se accede en: 
https://www.researchgate.net/figure/RGB-left-and-HSV-right-color-spaces_fig1_310474598
[2] Bolsa de palabras visuales en OpenCV, Vision & Graphics Group. Jan Kundrac. Se accede en:
https://vgg.fiit.stuba.sk/2015-02/bag-of-visual-words-in-opencv/
[3] Aprendizaje profundo vs. visión tradicional por computador. Haritha Thilakarathne, NaadiSpeaks.

Se accede en: https://naadispeaks.wordpress.com/2018/08/12/deep-learning-vs-traditional-computer-vision/

 
Biografía: 
Pier Paolo Ippolito es estudiante de último año de maestría en inteligencia artificial en la Universidad de Southampton. Es un entusiasta de la inteligencia artificial, es científico de datos y desarrollador de RPA.

Original. Publicado de nuevo con el correspondiente permiso.

Enlaces relacionados:

·         Roadmap to Natural Language Processing (NLP)

·         Accelerated Computer Vision: A Free Course From Amazon

·         Computer Vision Recipes: Best Practices and Examples

No comments:

Post a Comment