20. Preparación de datasets de imágenes

20.1 Introducción

Una red convolucional puede ser muy buena en teoría, pero si el dataset está mal construido, el resultado final será pobre. En visión por computadora, la calidad del conjunto de datos suele ser tan importante como la arquitectura del modelo.

Preparar un dataset no consiste solo en juntar muchas imágenes. Implica definir el problema correctamente, recolectar ejemplos representativos, etiquetarlos bien, limpiarlos, organizarlos y dividirlos de forma adecuada para entrenamiento, validación y prueba.

En este tema veremos cómo se prepara un dataset de imágenes de manera seria, qué errores conviene evitar y por qué esta etapa tiene un impacto enorme sobre el rendimiento real del sistema.

20.2 ¿Qué es un dataset de imágenes?

Un dataset de imágenes es un conjunto organizado de ejemplos visuales que se utiliza para entrenar, validar y evaluar modelos. Cada imagen suele estar acompañada de algún tipo de anotación o etiqueta.

La forma de esa etiqueta depende de la tarea:

  • En clasificación: una o más clases.
  • En detección: cajas y clases.
  • En segmentación: máscaras.
  • En pose: puntos clave.

Por eso, preparar un dataset implica mucho más que almacenar archivos de imagen en una carpeta.

20.3 El dataset como representación del problema

Un dataset no es una colección neutra de imágenes. Es una representación del problema real que queremos resolver. Si esa representación está incompleta, sesgada o mal etiquetada, el modelo aprenderá justamente esas limitaciones.

Por ejemplo, si entrenamos un clasificador de frutas solo con imágenes tomadas en estudio, podría fallar al enfrentarse a frutas reales en una cocina, un supermercado o un entorno con iluminación distinta.

El modelo no aprende “el problema real”. Aprende el problema tal como está representado en el dataset.

20.4 Primer paso: definir bien la tarea

Antes de recolectar datos conviene definir con precisión qué tarea vamos a resolver. Esto incluye preguntas como:

  • ¿Es clasificación, detección o segmentación?
  • ¿Qué clases incluirá el problema?
  • ¿Qué nivel de precisión se necesita?
  • ¿Cuál será el entorno real de uso?
  • ¿Qué casos deben considerarse positivos y negativos?

Una mala definición inicial suele generar datasets inconsistentes, etiquetas ambiguas y objetivos poco claros.

20.5 Recolección de imágenes

Una vez definido el problema, hay que reunir imágenes representativas. Las fuentes pueden ser variadas:

  • Captura propia con cámaras o celulares.
  • Repositorios públicos.
  • Datasets abiertos.
  • Sistemas internos de una organización.
  • Imágenes sintéticas generadas artificialmente.

Lo importante no es solo la cantidad, sino la diversidad y la relevancia de los ejemplos.

20.6 Representatividad del dataset

Un buen dataset debe reflejar las variaciones reales del problema. Eso incluye:

  • Diferentes iluminaciones.
  • Distintos fondos.
  • Variaciones de escala y ángulo.
  • Ejemplos fáciles y difíciles.
  • Condiciones de ruido o compresión plausibles.

Si el dataset solo contiene casos ideales, el modelo probablemente fallará en producción.

20.7 Cantidad versus calidad

Es tentador pensar que más imágenes siempre significan un mejor dataset. En la práctica, la calidad de los ejemplos y de las etiquetas importa muchísimo. Un conjunto pequeño pero bien curado puede ser más útil que uno enorme y caótico.

Esto no significa que la cantidad no importe. Sí importa. Pero su valor depende de la calidad y representatividad de lo que se recolecta.

20.8 Etiquetado de imágenes

Una vez reunidas las imágenes, hay que anotarlas. El etiquetado es una de las etapas más delicadas de todo el proceso, porque el modelo aprenderá directamente de esas etiquetas.

Según la tarea, el etiquetado puede consistir en:

  • Asignar una clase.
  • Dibujar bounding boxes.
  • Pintar máscaras.
  • Marcar puntos clave.

Las anotaciones deben ser consistentes, claras y alineadas con la definición exacta del problema.

20.9 Importancia de una guía de etiquetado

Cuando varias personas etiquetan, conviene definir una guía explícita. Esa guía debe responder preguntas como:

  • ¿Qué cuenta como ejemplo válido?
  • ¿Cómo se manejan casos ambiguos?
  • ¿Qué hacer con objetos parcialmente visibles?
  • ¿Dónde empieza y termina una caja?

Una guía reduce inconsistencias y mejora la calidad del dataset.

20.10 Calidad de etiquetas

Las etiquetas incorrectas son uno de los problemas más dañinos para un dataset. Algunos errores frecuentes son:

  • Clases mal asignadas.
  • Cajas mal posicionadas.
  • Máscaras incompletas.
  • Casos difíciles mal resueltos.
  • Inconsistencias entre anotadores.

Un modelo potente entrenado con etiquetas pobres puede aprender patrones erróneos o volverse inestable.

20.11 Limpieza del dataset

Después de recolectar y etiquetar, conviene limpiar el dataset. Esta etapa puede incluir:

  • Eliminar imágenes corruptas.
  • Quitar duplicados.
  • Corregir etiquetas erróneas.
  • Descartar ejemplos irrelevantes.
  • Normalizar nombres y estructura de archivos.

La limpieza mejora la consistencia y evita que el entrenamiento se contamine con errores fáciles de prevenir.

20.12 Duplicados y fugas de información

Un problema especialmente importante es la presencia de imágenes duplicadas o casi duplicadas repartidas entre entrenamiento y prueba. Esto produce una fuga de información que puede inflar artificialmente las métricas.

El modelo parece generalizar bien, pero en realidad solo está viendo versiones casi idénticas de ejemplos ya conocidos.

Si imágenes muy similares aparecen en entrenamiento y test, la evaluación deja de reflejar el desempeño real del modelo.

20.13 Partición en entrenamiento, validación y prueba

Una práctica estándar consiste en dividir el dataset en tres subconjuntos:

  • Train: para ajustar los pesos del modelo.
  • Validation: para ajustar decisiones de entrenamiento e hiperparámetros.
  • Test: para medir rendimiento final en ejemplos no vistos.

Esta separación es fundamental para evaluar de forma honesta la capacidad de generalización.

20.14 Proporciones habituales

No existe una única división correcta, pero algunas proporciones frecuentes son:

  • 70% entrenamiento, 15% validación, 15% prueba.
  • 80% entrenamiento, 10% validación, 10% prueba.

La mejor elección depende del tamaño total del dataset y de cuánta precisión queramos en la evaluación.

20.15 Estratificación y balance por clases

Si el problema es de clasificación, conviene que la partición respete aproximadamente la distribución de clases. Esto se llama estratificación.

Además, es importante mirar si el dataset está balanceado. Un conjunto donde una clase domina fuertemente puede producir modelos sesgados que aprendan a predecir casi siempre la clase mayoritaria.

20.16 Desbalance de clases

El desbalance aparece cuando algunas clases tienen muchos más ejemplos que otras. Esto puede ser problemático porque el modelo recibe más señales de unas clases que de otras.

Algunas estrategias para manejarlo son:

  • Recolectar más ejemplos de clases minoritarias.
  • Aplicar data augmentation selectiva.
  • Usar pesos en la función de pérdida.
  • Submuestrear clases dominantes en ciertos casos.

La solución concreta depende del problema, pero primero hay que detectar el desbalance.

20.17 Formato y organización en carpetas

Para clasificación, una organización muy común es por carpetas:

dataset/
  train/
    gatos/
    perros/
  val/
    gatos/
    perros/
  test/
    gatos/
    perros/

Esta estructura es simple y funciona muy bien con herramientas como torchvision.datasets.ImageFolder.

20.18 Formatos de anotación más complejos

En tareas como detección y segmentación, ya no alcanza con carpetas por clase. Se necesitan formatos más expresivos. Algunos esquemas comunes incluyen:

  • Archivos CSV o TXT con rutas y etiquetas.
  • JSON con anotaciones estructuradas.
  • Formatos tipo COCO.
  • Formatos tipo Pascal VOC.

Más adelante, cuando tratemos detección y segmentación, estos formatos cobrarán mucha más importancia.

20.19 Resolución y tamaño de imagen

No todas las imágenes del dataset tienen por qué venir con el mismo tamaño. Sin embargo, para entrenar modelos suele ser necesario normalizar la resolución de entrada o definir un pipeline de resize.

Esto implica decidir:

  • Qué tamaño usar.
  • Si se preservará o no la relación de aspecto.
  • Si se usará padding, crop o resize directo.

Estas decisiones afectan tanto la eficiencia como la calidad de la representación visual.

20.20 Calidad de imagen

También conviene analizar la calidad visual del dataset:

  • ¿Hay imágenes borrosas?
  • ¿Hay compresión excesiva?
  • ¿La iluminación varía demasiado?
  • ¿Existen imágenes rotadas o mal orientadas?
  • ¿Hay ruido extremo o artefactos?

No siempre estas variaciones deben eliminarse. A veces representan justamente la realidad del problema y el modelo debe aprender a lidiar con ellas. La decisión depende del escenario final de uso.

20.21 Metadatos y trazabilidad

Un buen dataset no solo contiene imágenes. También suele incluir metadatos útiles, como:

  • Origen de la imagen.
  • Fecha de captura.
  • Dispositivo o cámara.
  • Etiquetador.
  • Versión del dataset.

Esta información ayuda a auditar, depurar y evolucionar el conjunto de datos con el tiempo.

20.22 Versionado del dataset

Cuando el dataset cambia, conviene versionarlo. Si se agregan imágenes, se corrigen etiquetas o se eliminan duplicados, es importante saber exactamente con qué versión se entrenó cada modelo.

Esto mejora la reproducibilidad y evita confusiones al comparar resultados entre experimentos.

20.23 Sesgo en los datos

Un dataset puede estar sesgado de muchas maneras:

  • Fondos demasiado homogéneos.
  • Clases asociadas a contextos específicos.
  • Subrepresentación de ciertos casos.
  • Etiquetas influenciadas por decisiones humanas inconsistentes.

El problema del sesgo es que el modelo puede aprender correlaciones espurias en lugar del patrón que realmente nos interesa.

20.24 Datasets pequeños y estrategias realistas

No siempre contamos con miles o millones de imágenes. En muchos proyectos reales el dataset es moderado o pequeño. En esos casos conviene:

  • Cuidar mucho la calidad.
  • Usar data augmentation.
  • Aplicar transfer learning.
  • Evitar splits poco representativos.

Un dataset pequeño bien preparado puede seguir siendo muy valioso si el problema está bien definido.

20.25 Revisión manual y análisis exploratorio

Antes de entrenar, conviene mirar una muestra del dataset de forma manual. Esto ayuda a detectar problemas que no siempre aparecen en tablas o métricas:

  • Etiquetas incorrectas.
  • Ejemplos fuera de dominio.
  • Inconsistencias visuales.
  • Archivos dañados.

La inspección visual sigue siendo una herramienta muy poderosa en preparación de datasets.

20.26 Ejemplo práctico de estructura de trabajo

Un flujo típico de preparación de dataset puede ser:

  1. Definir el problema y las clases.
  2. Recolectar imágenes representativas.
  3. Etiquetarlas con una guía clara.
  4. Eliminar errores y duplicados.
  5. Analizar distribución y balance.
  6. Particionar en train, validation y test.
  7. Guardar una versión estable del dataset.

Este flujo no es rígido, pero resume bastante bien la lógica general.

20.27 Qué debes recordar de este tema

  • La calidad del dataset es una de las variables más importantes de todo proyecto de visión por computadora.
  • Un dataset debe representar bien el problema real, no solo acumular muchas imágenes.
  • La definición correcta de la tarea y de las etiquetas es fundamental.
  • Hay que limpiar, revisar y dividir cuidadosamente el conjunto en train, validation y test.
  • El desbalance, los duplicados y las fugas entre particiones pueden distorsionar seriamente los resultados.
  • La organización y el versionado del dataset mejoran reproducibilidad y mantenimiento.

20.28 Conclusión

Preparar un dataset de imágenes es una tarea mucho más estratégica de lo que suele parecer al principio. No es una etapa administrativa ni secundaria: es una parte central del diseño del sistema.

Un modelo aprende exactamente aquello que el dataset le enseña. Por eso, reunir imágenes representativas, etiquetarlas bien, evitar fugas y organizar el conjunto con criterio tiene un impacto directo sobre la calidad final del proyecto.

En el próximo tema estudiaremos el data augmentation para imágenes, una técnica muy importante para enriquecer datasets y mejorar la capacidad de generalización de los modelos.