Fundamentos de segmentación de imágenes - Principios de división de regiones y aplicaciones
Qué es la segmentación de imágenes - Comprender imágenes a nivel de píxel
La segmentación de imágenes asigna cada píxel de una imagen a una categoría o región específica, logrando comprensión a nivel de píxel. Es la tarea de reconocimiento más precisa en visión por computadora.
Tipos de segmentación:
- Segmentación semántica: Cada píxel recibe una etiqueta de categoría (cielo, carretera, edificio). No distingue entre diferentes instancias de la misma categoría
- Segmentación de instancias: No solo clasifica, sino que distingue individuos diferentes de la misma categoría (como diferenciar peatones distintos)
- Segmentación panóptica: Unificación de segmentación semántica + instancias. Todos los píxeles tienen categoría, y los objetos contables también tienen ID de instancia
Relación con otras tareas:
- Clasificación de imágenes: una etiqueta para toda la imagen
- Detección de objetos: localización a nivel de cuadro delimitador
- Segmentación de imágenes: localización a nivel de píxel (la más precisa)
Aplicaciones: Conducción autónoma (segmentación de carretera/peatones/vehículos), imágenes médicas (segmentación de órganos/lesiones), teledetección satelital (clasificación de cobertura terrestre), videoconferencias (separación persona/fondo), edición de imágenes (selección precisa).
Métodos clásicos - Segmentación por umbralización y detección de bordes
Antes del aprendizaje profundo, la segmentación de imágenes dependía principalmente de algoritmos diseñados manualmente, basados en valores de píxeles, gradientes o características de región.
Segmentación por umbral:
- Umbral global: Seleccionar un umbral T; píxeles con valor > T son primer plano, el resto es fondo
- Método de Otsu: Calcula automáticamente el umbral óptimo maximizando la varianza entre clases. OpenCV:
cv2.threshold(gray, 0, 255, cv2.THRESH_OTSU) - Umbral adaptativo: Cada píxel calcula su umbral según la vecindad local. Adecuado para iluminación desigual
Detección de bordes + contornos:
- Detección de bordes Canny para encontrar límites de objetos
- Búsqueda de contornos (
cv2.findContours) para extraer regiones cerradas - Adecuado para objetos de forma regular y alto contraste
Algoritmo Watershed: Trata la imagen como un terreno, "inundando" desde puntos marcados; donde las aguas se encuentran se forman los límites de segmentación. Adecuado para separar objetos en contacto (como células). Requiere puntos de marcado manuales o automáticos.
Limitaciones: Los métodos clásicos funcionan mal en escenas complejas (múltiples categorías, oclusión, variación de textura) y no pueden aprender información semántica.
Métodos de aprendizaje profundo - De FCN a U-Net y DeepLab
El aprendizaje profundo transformó completamente la segmentación de imágenes, logrando una precisión sin precedentes mediante aprendizaje de extremo a extremo.
FCN (2015): La primera red de segmentación de extremo a extremo. Reemplazó las capas totalmente conectadas de redes de clasificación por capas convolucionales, produciendo mapas de segmentación del mismo tamaño que la entrada. Pionera en la segmentación por aprendizaje profundo.
U-Net (2015):
- Estructura codificador-decodificador, arquitectura simétrica en forma de U
- Conexiones de salto que transfieren mapas de características del codificador al decodificador, preservando detalles espaciales
- Rendimiento excepcional en segmentación de imágenes médicas, entrenable con pocos datos
- Variantes: U-Net++, Attention U-Net, nnU-Net
Serie DeepLab:
- Convolución dilatada (Atrous Convolution): Amplía el campo receptivo sin reducir la resolución
- ASPP (Atrous Spatial Pyramid Pooling): Extracción de características multiescala
- DeepLabV3+: Codificador-decodificador + ASPP, una de las arquitecturas de segmentación general más potentes
- COCO segmentación panóptica mIoU > 60%
SAM (Segment Anything Model) - La revolución de la segmentación universal
SAM, publicado por Meta en 2023, es un hito en la segmentación de imágenes que logra capacidad de segmentación universal sin ejemplos previos (zero-shot).
Innovaciones clave:
- Segmentación por indicaciones: Especificar el objeto a segmentar mediante clics, selección rectangular o indicaciones de texto
- Generalización zero-shot: Sin necesidad de entrenamiento para categorías específicas, puede segmentar cualquier objeto
- Preentrenamiento a gran escala: Entrenado en el dataset SA-1B (11M imágenes, 1.1B máscaras)
Arquitectura:
- Codificador de imagen: ViT-H (Vision Transformer), extrae características de la imagen
- Codificador de indicaciones: Codifica información de puntos, cuadros, texto y otras indicaciones
- Decodificador de máscaras: Decodificador ligero que genera rápidamente máscaras de segmentación
SAM 2 (2024): Extensión a segmentación de video, soportando seguimiento y segmentación de objetos en la dimensión temporal. La segmentación interactiva de video en tiempo real se hace posible.
Aplicaciones: Edición interactiva de imágenes, herramientas de anotación automática, segmentación asistida de imágenes médicas, análisis de imágenes de teledetección. SAM redujo significativamente la barrera de entrada para tareas de segmentación.
Métricas de evaluación - Comprender IoU, mIoU y coeficiente Dice
La evaluación cuantitativa de la calidad de segmentación requiere métricas estandarizadas para comparar diferentes métodos y monitorear el rendimiento del modelo.
IoU (Intersection over Union):
IoU = Predicción ∩ Verdad / Predicción ∪ Verdad
- Rango [0, 1], donde 1 indica segmentación perfecta
- Se calcula por separado para cada categoría
- mIoU: Promedio de IoU de todas las categorías, la métrica de segmentación más utilizada
Coeficiente Dice:
Dice = 2 × |Predicción ∩ Verdad| / (|Predicción| + |Verdad|)
- Altamente correlacionado con IoU pero con valores numéricos más altos (Dice ≈ 2×IoU / (1+IoU))
- Más utilizado en segmentación de imágenes médicas
- Más sensible a objetos pequeños
Precisión de píxeles: Proporción de píxeles correctamente clasificados. Simple pero sensible al desequilibrio de clases (precisión inflada cuando el fondo domina).
Referencias de referencia: COCO segmentación panóptica SOTA mIoU > 60%; Cityscapes segmentación semántica SOTA mIoU > 85%; segmentación médica Dice > 0.9 generalmente se considera excelente.
Segmentación en el navegador - Implementación con TensorFlow.js y ONNX Runtime
Ejecutar modelos de segmentación en el navegador para lograr segmentación de imágenes en tiempo real sin necesidad de servidor.
Implementación con TensorFlow.js:
- BodyPix: Segmentación corporal y estimación de pose, adecuado para reemplazo de fondo en videoconferencias
- DeepLab: Segmentación semántica general, 20 categorías
- Carga:
const model = await deeplab.load({base: 'pascal'}) - Inferencia:
const result = await model.segment(image)
ONNX Runtime Web:
- Soporta más formatos de modelo, rendimiento generalmente superior a TensorFlow.js
- Aceleración con backends WebGL y WebGPU
- Puede ejecutar modelos ONNX exportados desde PyTorch
Consideraciones de rendimiento:
- Tamaño del modelo: Modelos ligeros (backbone MobileNet) 5-20MB, adecuados para Web
- Velocidad de inferencia: Entrada 512×512 aproximadamente 50-200ms (WebGL)
- WebGPU: 2-5 veces más rápido que WebGL, pero el soporte en navegadores aún se está expandiendo
Aplicaciones prácticas: Fondo virtual en videoconferencias (segmentación de personas en tiempo real); editor de fotos (selección interactiva de objetos); filtros AR (segmentación de rostro/cuerpo).