Visión por computador
La visión artificial o visión por computador es un conjunto de técnicas que se ocupan de cómo procesos computacionales pueden obtener información de alto nivel de imágenes o videos digitales, intentando entender y automatizar tareas que el sistema de visión humano es capaz de realizar.
Estas técnicas incluyen adquirir, procesar, analizar y “comprender” imágenes con el fin de producir información numérica que pueda ser tratada por un ordenador. Ha de entenderse en este contexto el proceso de comprensión como la transformación de imágenes en información simbólica mediante el uso de técnicas basadas en la geometría, física, estadísticas o técnicas de aprendizaje.
El campo de aplicaciones de la visión por computador es extenso e incluye, por ejemplo:
- Clasificación de imágenes: es el proceso de distinguir si una imagen pertenece a una clase o no. Por ejemplo, distinguir entre imágenes que contienen señales de tráfico de imágenes que no contienen.
- Segmentación semántica de imágenes: consiste en dividir la imagen en diferentes zonas que tienen significados semánticos distintos, por ejemplo, distinguir entre personas y coches en una imagen determinada.
- Fotografía computacional: son las técnicas que extienden las capacidades de la fotografía digital, obteniendo como resultado una fotografía ordinaria, pero que no se podría haber tomado con una cámara tradicional. Por ejemplo, las técnicas de toma de imágenes con alto rango dinámico por los teléfonos inteligentes.
- Reconocimiento facial: es la identificación de personas en imágenes digitales, por ejemplo, para desbloquear los teléfonos inteligentes.
- Flujo óptico: es la detección del patrón de movimiento de diferentes objetos entre imágenes consecutivas teniendo encuentra el movimiento relativo entre el observador y la escena.
- Calibración de cámaras e imágenes: es la búsqueda de la relación entre la posición del pixel en el sensor de la cámara y la posición del punto en la escena y en el plano de la imagen, por ejemplo, para calcular distancias entre el sensor y los objetos de la escena.
Normalmente, un sistema de visión por computador puede incluir varias de estas técnicas y utilizarlas de forma conjunta para poder extraer la mayor información posible de las imágenes captadas.
Un ejemplo de un sistema de visión por computador que incluye varias de estas técnicas son los sistemas desarrollados para la conducción autónoma de vehículos, donde el sistema debe ser capaz de:
- Identificar las señales de tráfico en la escena e interpretarlas (segmentación y clasificación de imágenes).
- Identificar el resto de elementos de la escena: carretera, marcas viales, vehículos, etc. (segmentación de imágenes).
- Calcular distancias a los distintos objetos de la escena (técnicas de calibrado de imágenes).
- Calcular el movimiento relativo de elementos móviles en la escena (flujo óptico).
Es el resultado de todas estas técnicas, lo que permite a un sistema de conducción autónoma poder dirigir el vehículo de forma segura.
Nubes de puntos
Aunque de forma general hemos hablado de imágenes como los datos de entrada de las técnicas de visión por computador, existen modelos comprendidos dentro de esta área que trabajan con nubes de puntos.
Las nubes de puntos son un conjunto de puntos identificados por sus coordenadas X, Y, Z, que representan las superficies externas de los objetos. Típicamente estas nubes son obtenidas mediante escáneres tridimensionales, como el LiDAR.
Volviendo al ejemplo de los vehículos autónomos, muchos incluyen radares de tipo LiDAR que permiten obtener nubes de puntos del entorno y utilizan esta información para mejorar la navegación.
Segmentación semántica y clasificación de nubes de puntos
La explotación de estas nubes de puntos para segmentar la información y clasificar los distintos objetos detectados en ella, es una de las técnicas que recientemente ha recibido más atención en el mundo de la visión por computador.
Esta segmentación consiste en encontrar y clasificar grupos de puntos homogéneos, de tal forma que los puntos que pertenezcan al mismo grupo compartan las mismas propiedades.
El tratamiento de estas nubes de puntos para llevar a cabo el proceso de segmentación semántica y clasificación es complicado, ya que requiere disponer de nubes de puntos previamente clasificadas para que los sistemas de visión por computador puedan aprender a segmentar los distintos objetos y clasificarlos de forma correcta.
Este proceso de clasificación manual es uno de los grandes retos de la gran mayoría de aplicaciones de visión por computador, pues necesitan de un conjunto de datos amplio y etiquetado para poder aprender la relación entre la información extraída de las imágenes y las etiquetas que se quieren obtener.
En el caso de las nubes de puntos nos enfrentamos a retos adicionales, dado que estos conjuntos de datos suelen presentar un elevado número de puntos, en ocasiones decenas de millones, que presentan un alto nivel de redundancia, al representar un alto número de puntos el mismo objeto.
También suele existir un desequilibrio en la densidad de muestreo de los puntos, pues el LiDAR no es capaz de escanear con la misma frecuencia todas las zonas del entorno según el ángulo, posición relativa del objeto o la distancia a este.
Avances en la segmentación y clasificación
Este problema es de aplicación en la conducción de vehículos autónomos, pero también tiene otras aplicaciones como:
- Prospecciones forestales, para identificar el crecimiento de la vegetación y su avance.
- Mantenimiento de infraestructuras, para identificar el estado de infraestructuras de difícil acceso.
- Generación de mapas, tanto de edificaciones, como de otros elementos para realizar prospecciones.
- Generación de escenas tridimensionales clasificadas, para obtener mapas virtuales de entornos.
En todas estas aplicaciones, las técnicas ligadas al aprendizaje profundo son las que permiten obtener mejores resultados y se están proponiendo nuevas técnicas que muestran buenos resultados en los conjuntos de datos públicos y benchmarks, como los siguientes trabajos:
Kpconv: Flexible and deformable convolution for point clouds (Thomas, H. et al, 2019), el cual en el momento de su publicación presentó los mejores resultados obtenidos hasta entonces en cuatro conjuntos de datos públicos: ModelNet40, ShapeNetPart, Semantic3D y S3DIS. Aplicaron segmentación y clasificación de nubes de puntos tanto de escenas en exteriores como en interiores.
Posteriormente, el trabajo de Randla-net: Efficient semantic segmentation of large-scale point clouds (Hu, Q. et al., 2020) consiguió mejorar los resultados del anterior en la gran mayoría de conjuntos de datos y muy buenos resultados en el conjunto de datos SemanticKITTI donde se simula la detección de objetos por parte de un vehículo autónomo, tal y como se puede apreciar en el siguiente vídeo:
Finalmente, cabe mencionar también el trabajo de Point Transformer (Zhao, H., et al., 2021) que mejora los resultados de ambos trabajos anteriores mediante el uso de Transformers, una técnica de aprendizaje supervisado que está ofreciendo excelentes resultados en muchas áreas de aplicación como el procesado del lenguaje natural o la visión por computador y que en este caso demuestra la idoneidad de su aplicación en el procesado de nubes de puntos tridimensionales.
Como se puede ver, el campo está en pleno desarrollo. Todos los años se proponen nuevos enfoques que permiten obtener y mejorar los resultados hasta ahora obtenidos y que, de continuar a este ritmo, permitirá disponer de nuevas técnicas que permitan el uso de la segmentación y clasificación de nubes de puntos en aplicaciones de uso diario y que los vehículos autónomos sean una realidad.