Logo de CursoIA
CursoIA Curso de Inteligencia Artificial

Segmentación de imágenes, Unidad 9 — Preparación de datos para segmentación, 9.2 — Data augmentation específico ·

Buenas prácticas

Buenas prácticas para la data augmentation en segmentación de imágenes

Introducción

La preparación de datos es una etapa crucial en cualquier proyecto de machine learning, y en particular en segmentación de imágenes. La data augmentation (aumento de datos) es un proceso que permite generar nuevas muestras a partir de las existentes, añadiendo variaciones para aumentar la diversidad del conjunto de entrenamiento. Esto es especialmente importante en segmentación de imágenes porque:

  1. Aumenta el tamaño del dataset: Aumentando el número de muestras disponibles, mejoramos la capacidad del modelo para aprender características robustas y generalizables.
  2. Mejora la resistencia al overfitting: Una mayor variedad de ejemplos ayuda a evitar que el modelo se ajuste demasiado a los datos de entrenamiento específicos.
  3. Mejora la representatividad: La data augmentation permite simular diferentes condiciones y situaciones, mejorando la capacidad del modelo para generalizar.

En esta guía, exploraremos cómo aplicar efectivamente la data augmentation en segmentación de imágenes, identificamos las trampas comunes y ofrecemos un checklist práctico para asegurar un buen rendimiento.

Explicación principal

Ejemplo básico: Aumento de datos con rotación

Vamos a considerar una muestra simple de imagen en segmentación de máscaras. En este ejemplo, usaremos la biblioteca albumentations en Python:

from albumentations import Compose, Rotate, ImageOnlyTransform
import numpy as np

# Definición del transformador
transform = Compose([
    Rotate(limit=90),
])

# Datos originales (píxel 2D)
img = np.random.rand(100, 100)

# Aplicación de la rotación
augmented_img = transform(image=img)['image']

print(augmented_img.shape)  # Salida: (100, 100)

Errores típicos / trampas

Aunque la data augmentation es útil, también se pueden cometer errores que afectan negativamente el rendimiento del modelo. Algunas de las trampas más comunes incluyen:

  1. Falta de variabilidad suficiente: Si no hay suficientes transformaciones aplicadas, el modelo puede sobreajustarse a los datos disponibles.
  2. Distorsión en la máscara: En segmentación, es crucial que las máscaras también sean transformadas correctamente para mantener la relación entre imagen y máscara.
  3. Repetición excesiva de ejemplos: Generar ejemplos demasiado similares puede resultar en underfitting.

Ejemplo de error: Máscaras no rotadas

# Máscara original (píxel 2D)
mask = np.zeros((100, 100))
center_x, center_y = 50, 50
radius = 30
for i in range(mask.shape[0]):
    for j in range(mask.shape[1]):
        if ((i - center_x)**2 + (j - center_y)**2) < radius**2:
            mask[i][j] = 1

# Aplicación de la rotación sin transformar la máscara
transform_mask = Rotate(limit=90)(image=img, mask=mask)['image']
print((mask == transform_mask).all())  # Salida: False

Checklist accionable para la data augmentation en segmentación de imágenes

  1. Definir una variedad adecuada de transformaciones: Asegúrate de que las transformaciones cubran un rango amplio de variaciones, incluyendo rotación, zoom, distorsión y ruido.
  2. Sincronizar la transformación de imagen con la máscara: Utiliza bibliotecas como albumentations para asegurarte de que la máscara también sea transformada correctamente.
  3. Evita repetir ejemplos innecesariamente: Configura los parámetros de data augmentation para evitar generar ejemplos muy similares.
  4. Comprueba el rendimiento del modelo con y sin data augmentation: Asegúrate de que la data augmentation no esté deteriorando el rendimiento del modelo.
  5. Valida manualmente algunos ejemplos: Siempre es útil revisar manualmente algunas muestras transformadas para asegurarte de que son adecuadas.

Siguientes pasos

  1. Explorar más bibliotecas y herramientas: A parte de albumentations, considera también imgaug en Python.
  2. Ajustar parámetros con cuidado: Experimenta con diferentes combinaciones y valores para los parámetros de data augmentation.
  3. Documentar procesos y resultados: Mantén un registro detallado de las transformaciones aplicadas y su impacto en el rendimiento del modelo.

Siguiendo estas prácticas, puedes asegurar que tu conjunto de datos es diverso y representativo, lo cual es crucial para una segmentación eficaz.

Contacto

Indica tu objetivo (ChatGPT, RAG, agentes, automatización) y tu stack (web/backend).