Segmentación semántica de imágenes utilizando Transformers de predicción densa

Segmentación semántica de imágenes con Transformers de predicción densa

Introducción

Este artículo analizará una técnica de visión por computadora llamada Segmentación Semántica de Imágenes. Aunque esto suena complejo, lo vamos a desglosar paso a paso, y presentaremos un concepto emocionante de segmentación semántica de imágenes, que es una implementación que utiliza Transformadores de Predicción Densa o DPTs, en resumen, de las colecciones de Hugging Face. El uso de DPTs introduce una nueva fase de visión por computadora con capacidades poco comunes.

Objetivos de aprendizaje

  • Comparación de DPTs vs. la comprensión convencional de las conexiones a distancia.
  • Implementación de la segmentación semántica utilizando la predicción de profundidad con DPT en Python.
  • Explorar los diseños de DPTs, entendiendo sus rasgos únicos.

Este artículo fue publicado como parte del Data Science Blogathon.

¿Qué es la segmentación semántica de imágenes?

Imagínese tener una imagen y querer etiquetar cada píxel de acuerdo a lo que representa. Esa es la idea detrás de la segmentación semántica de imágenes. Se puede utilizar en visión por computadora para distinguir un automóvil de un árbol o para separar partes de una imagen; todo esto se trata de etiquetar inteligentemente los píxeles. Sin embargo, el verdadero desafío radica en entender el contexto y las relaciones entre los objetos. Comparemos esto con el enfoque, permítanme decirlo, antiguo de manejar imágenes.

Redes neuronales convolucionales (CNNs)

El primer avance fue utilizar Redes Neuronales Convolucionales para abordar tareas que involucran imágenes. Sin embargo, las CNNs tienen limitaciones, especialmente para capturar conexiones a larga distancia en imágenes. Imaginemos si intentamos comprender cómo diferentes elementos en una imagen interactúan entre sí a través de largas distancias, ahí es donde las CNNs tradicionales tienen dificultades. Aquí es donde celebramos a los DPTs. Estos modelos, basados en la poderosa arquitectura de transformers, exhiben capacidades para capturar asociaciones. Veremos los DPTs a continuación.

¿Qué son los Transformadores de Predicción Densa (DPTs)?

Para entender este concepto, imaginemos combinar el poder de los Transformers, que solíamos conocer en tareas de NLP, con el análisis de imágenes. Eso es precisamente lo que representan los Transformadores de Predicción Densa. Son como superdetectives en el mundo de las imágenes. Tienen la capacidad no solo de etiquetar píxeles en imágenes, sino también de predecir la profundidad de cada píxel, lo que proporciona información sobre qué tan lejos está cada objeto de la imagen. Veremos esto a continuación.

Herramientas de la Arquitectura DPT

Los DPTs se presentan en diferentes tipos, cada uno con sus capas de “encoder” y “decoder”. Veamos dos populares aquí:

  • DPT-Swin-Transformer: Imagínalo como un megatransformador con 10 capas de “encoder” y 5 capas de “decoder”. Es excelente para entender las relaciones entre elementos a diferentes niveles en la imagen.
  • DPT-ResNet: Este es como un detective inteligente con 18 capas de “encoder” y 5 capas de “decoder”. Sobresale en detectar conexiones entre objetos distantes manteniendo la estructura espacial de la imagen.

Características clave

He aquí un vistazo más cercano de cómo funcionan los DPTs utilizando algunas características clave:

  • Extracción jerárquica de características: Al igual que las redes neuronales convolucionales tradicionales (CNNs), los DPTs extraen características de la imagen de entrada. Sin embargo, siguen un enfoque jerárquico donde la imagen se divide en diferentes niveles de detalle. Es esta jerarquía la que ayuda a capturar tanto el contexto local como global, permitiendo al modelo entender las relaciones entre objetos a diferentes escalas.
  • Mecanismo de autoatención: Esta es la columna vertebral de los DPTs, inspirada en la arquitectura original del Transformer, que permite al modelo capturar dependencias a largo plazo dentro de la imagen y aprender relaciones complejas entre píxeles. Cada píxel considera la información de todos los demás píxeles, lo que brinda al modelo una comprensión holística de la imagen.

Demostración de segmentación semántica de imágenes utilizando DPTs en Python

A continuación veremos una implementación de DPTs. Primero, configuremos nuestro entorno instalando las bibliotecas no preinstaladas en Colab. Puede encontrar el código para esto aquí o en https://github.com/inuwamobarak/semantic-segmentation

Primero, instalamos y configuramos nuestro entorno.

!pip install -q git+https://github.com/huggingface/transformers.git

A continuación, preparamos el modelo en el que queremos entrenar.

## Definir modelo# Importar DPTForSemanticSegmentation de la biblioteca Transformersfrom transformers import DPTForSemanticSegmentation# Crear el modelo DPTForSemanticSegmentation y cargar los pesos pre-entrenados# El modelo "Intel/dpt-large-ade" es un modelo a gran escala entrenado en el conjunto de datos ADE20Kmodelo = DPTForSemanticSegmentation.from_pretrained("Intel/dpt-large-ade")

Ahora cargamos y preparamos una imagen que queremos utilizar para la segmentación.

# Importar la clase de imagen del módulo PIL (Python Imaging Library)from PIL import Imageimport requests# URL de la imagen a descargarurl = 'https://img.freepik.com/free-photo/happy-lady-hugging-her-white-friendly-dog-while-walking-park_171337-19281.jpg?w=740&t=st=1689214254~exp=1689214854~hmac=a8de6eb251268aec16ed61da3f0ffb02a6137935a571a4a0eabfc959536b03dd'# El parámetro `stream=True` asegura que la respuesta no se descargue de inmediato, sino que se mantenga en la memoriareponse = requests.get(url, stream=True)# Crear la clase de imagenimage = Image.open(response.raw)# Mostrar imagenimage

from torchvision.transforms import Compose, Resize, ToTensor, Normalize# Establecer la altura y el ancho deseados para la imagen de entradanet_h = net_w = 480# Definir una serie de transformaciones de imagentransform = Compose([        # Cambiar el tamaño de la imagen        Resize((net_h, net_w)),        # Convertir la imagen en un tensor de PyTorch        ToTensor(),        # Normalizar la imagen        Normalize(mean=[0.5, 0.5, 0.5], std=[0.5, 0.5, 0.5]),    ])

El siguiente paso será aplicar algunas transformaciones a la imagen.

# Transformar la imagen de entradapixel_values = transform(image)pixel_values = pixel_values.unsqueeze(0)

A continuación, realizamos un pase hacia adelante.

import torch# Desactivar el cálculo del gradiente.with torch.no_grad():    # Realizar un pase hacia adelante a través del modelo    outputs = model(pixel_values)    # Obtener los logits (predicciones sin procesar) de la salida    logits = outputs.logits

Ahora imprimimos la imagen como una serie de matrices. A continuación, convertiremos esto en una imagen con la predicción semántica.

import torch# Interpolar los logits al tamaño original de la imagenprediction = torch.nn.functional.interpolate(    logits,    size=image.size[::-1],  # Invertir el tamaño de la imagen original (ancho, altura)    mode="bicubic",    align_corners=False)# Convertir los logits en predicciones de clasificaciónprediction = torch.argmax(prediction, dim=1) + 1# Squeeze del tensor de predicción para eliminar dimensionesprediction = prediction.squeeze()# Mover el tensor de predicción a la CPU y convertirlo en un array de numpyprediction = prediction.cpu().numpy()

Realizamos la predicción semántica ahora.

from PIL import Image# Convertir el array de predicción en una imagenpredicted_seg = Image.fromarray(prediction.squeeze().astype('uint8'))# Aplicar el mapa de colores a la imagen de segmentación predichapredicted_seg.putpalette(adepallete)# Mezclar la imagen original y la imagen de segmentación predichaconjunta = Image.blend(image, predicted_seg.convert("RGB"), alpha=0.5)

Aquí tenemos nuestra imagen con la semántica que se está prediciendo. Puedes experimentar con tus propias imágenes. Ahora veamos algunas evaluaciones que se han aplicado a los DPT.

Evaluaciones de rendimiento en DPTs

Los DPTs se han probado en una variedad de trabajos de investigación y artículos, y se han utilizado en diferentes conjuntos de datos de imágenes como Cityscapes, PASCAL VOC y ADE20K, y tienen un mejor rendimiento que los modelos CNN tradicionales. Los enlaces a este conjunto de datos y al artículo de investigación se encuentran en la sección de enlaces a continuación.

En Cityscapes, DPT-Swin-Transformer obtuvo un 79,1% en la métrica de intersección sobre la unión media (mIoU). En PASCAL VOC, DPT-ResNet alcanzó un mIoU del 82,8%, un nuevo punto de referencia. Estas puntuaciones son un testimonio de la capacidad de los DPTs para comprender las imágenes en profundidad.

El futuro de los DPTs y lo que nos espera

Los DPTs representan una nueva era en la comprensión de las imágenes. La investigación en DPTs está cambiando la forma en que vemos e interactuamos con las imágenes y brinda nuevas posibilidades. En pocas palabras, la segmentación semántica de imágenes con DPTs es un avance que está cambiando la forma en que decodificamos las imágenes y definitivamente hará más en el futuro. Desde etiquetas de píxeles hasta comprensión de la profundidad, los DPTs representan lo que es posible en el mundo de la visión por computadora. Veamos más en detalle.

Estimación precisa de la profundidad

Una de las contribuciones más significativas de los DPTs es la predicción de la información de profundidad a partir de las imágenes. Este avance tiene aplicaciones como la reconstrucción de escenas en 3D, la realidad aumentada y la manipulación de objetos. Esto proporcionará una comprensión crucial de la disposición espacial de los objetos dentro de una escena.

Segmentación semántica y predicción de profundidad simultáneas

Los DPTs pueden proporcionar tanto la segmentación semántica como la predicción de profundidad en un marco unificado. Esto permite una comprensión holística de las imágenes, lo que permite aplicaciones tanto para la información semántica como para el conocimiento de la profundidad. Por ejemplo, en la conducción autónoma, esta combinación es vital para una navegación segura.

Reducción de los esfuerzos de recopilación de datos

Los DPTs tienen el potencial de reducir la necesidad de una extensa etiquetación manual de datos de profundidad. Las imágenes de entrenamiento con mapas de profundidad pueden aprender a predecir la profundidad sin requerir anotaciones de profundidad píxel por píxel. Esto reduce significativamente el costo y el esfuerzo asociados con la recopilación de datos.

Comprensión de escenas

Permiten a las máquinas comprender su entorno en tres dimensiones, lo cual es crucial para que los robots naveguen e interactúen de manera efectiva. En industrias como la fabricación y la logística, los DPTs pueden facilitar la automatización al permitir que los robots manipulen objetos con una comprensión más profunda de las relaciones espaciales.

Los Dense Prediction Transformers están remodelando el campo de la visión por computadora al proporcionar información precisa de la profundidad junto con una comprensión semántica de las imágenes. Sin embargo, abordar desafíos relacionados con la estimación detallada de la profundidad, la generalización, la estimación de la incertidumbre, la mitigación de sesgos y la optimización en tiempo real será vital para realizar completamente el impacto transformador de los DPTs en el futuro.

Conclusión

La segmentación semántica de imágenes utilizando Dense Prediction Transformers es un viaje que combina la etiquetación de píxeles con una comprensión espacial. La combinación de los DPTs con la segmentación semántica de imágenes abre una emocionante avenida en la investigación de la visión por computadora. Este artículo ha tratado de desvelar las complejidades subyacentes de los DPTs, desde su arquitectura hasta su destreza en rendimiento y su potencial prometedor para remodelar el futuro de la segmentación semántica en la visión por computadora.

Puntos clave

  • Los DPTs van más allá de los píxeles para comprender el contexto espacial y predecir las profundidades.
  • Los DPTs superan a los reconocimientos de imágenes tradicionales capturando la distancia y los conocimientos en 3D.
  • Los DPTs redefinen la percepción de las imágenes, permitiendo una comprensión más profunda de los objetos y las relaciones.

Preguntas frecuentes

Enlaces:

Los medios mostrados en este artículo no son propiedad de Analytics Vidhya y se utilizan a discreción del autor.

We will continue to update Zepes; if you have any questions or suggestions, please contact us!

Share:

Was this article helpful?

93 out of 132 found this helpful

Discover more

Inteligencia Artificial

Una introducción práctica a los LLMs

Este es el primer artículo de una serie sobre el uso de Modelos de Lenguaje Grande (LLMs) en la práctica. Aquí daré u...

Inteligencia Artificial

Aprendamos IA juntos - Boletín de la Comunidad Towards AI #3

Buenos días, entusiastas de la IA! Estoy emocionado de compartir el episodio de podcast de esta semana, en el que cha...

Inteligencia Artificial

Enfoque de IA produce un perro robótico 'inteligente atléticamente

Un equipo internacional de investigadores ha desarrollado un algoritmo basado en visión que permite a los robots cuad...

Inteligencia Artificial

Stability AI lanza el primer modelo japonés de visión y lenguaje

La creación y formulación de un modelo único y completo capaz de manejar una variedad de tareas definidas por el usua...

Ciencia de Datos

Aprendizaje Profundo en Sistemas de Recomendación Una introducción.

Los sistemas de recomendación se encuentran entre las aplicaciones de Aprendizaje Automático industrial de más rápido...