Técnicas de preprocesamiento de datos para datos anotados de visión artificial#
La preparación de datos convierte imágenes brutas y anotadas en entradas limpias y coherentes que un modelo de computer vision necesita para entrenar correctamente. Con Ultralytics YOLO26, las operaciones principales con píxeles (conversión a RGB, escala a [0, 1] y redimensionamiento) se ejecutan automáticamente dentro del proceso de entrenamiento, por lo que el trabajo restante consiste en dividir tu conjunto de datos correctamente, equilibrar las clases y elegir las aumentaciones. Esta guía cubre esas técnicas esenciales: redimensionamiento, normalización, división de conjuntos de datos, aumentación de datos y análisis exploratorio de datos (EDA).
Watch: How to Use Data Preprocessing and Augmentation to Improve Model Accuracy in Real-World Scenarios 🚀
Este paso se realiza después de haber definido los objetivos de tu proyecto y recopilado y anotado tus datos, y se sitúa al principio del flujo de trabajo del proyecto de computer vision.
Por qué es importante el preprocesamiento#
El preprocesamiento prepara tus datos en un formato que reduce la carga computacional y mejora el rendimiento del modelo. Aborda tres problemas comunes en los datos crudos:
- Ruido: Variaciones irrelevantes o aleatorias en los datos.
- Inconsistencia: Variaciones en el tamaño, formato y calidad de las imágenes.
- Desequilibrio: Distribución desigual de clases o categorías a lo largo del dataset.
Técnicas de preprocesamiento#
Las técnicas principales son el redimensionamiento, la normalización, la división del dataset y la aumentación. Con YOLO26, las dos primeras son automáticas, mientras que la división y la aumentación son donde tus elecciones importan más.
Cambiar el tamaño de las imágenes#
Muchos modelos requieren un tamaño de entrada consistente, por lo que el redimensionamiento hace que las imágenes sean uniformes y reduce la complejidad computacional. Dos métodos de interpolación comunes son:
- Interpolación bilineal: Suaviza los valores de los píxeles calculando un promedio ponderado de los cuatro píxeles más cercanos.
- Vecino más cercano: Copia el valor del píxel más cercano sin promediar; es más rápido, pero produce una imagen con efecto de bloques.
Librerías como OpenCV y PIL (Pillow) proporcionan estas funciones, pero con YOLO26 normalmente no redimensionas de forma manual. El argumento imgsz durante el entrenamiento del modelo se encarga de ello: cuando se establece en un valor como 640, YOLO escala cada imagen para que su dimensión más larga sea de 640 píxeles manteniendo la relación de aspecto, y luego rellena el lado más corto (gris por defecto, valor 114) para alcanzar una entrada cuadrada 640 × 640.
Normalización de los valores de píxel#
La normalización escala los valores de los píxeles a un rango estándar, lo cual ayuda al modelo a converger más rápido durante el entrenamiento. Dos técnicas comunes son:
- Escalado mín-máx: Escala los valores de los píxeles a un rango de 0 a 1.
- Normalización por puntuación Z: Escala los valores de los píxeles según su media y desviación estándar.
YOLO26 gestiona la normalización automáticamente como parte de su proceso de preparación: convierte las imágenes a RGB y escala los valores de los píxeles al rango [0, 1] dividiendo por 255 (escala mín-máx). YOLO no aplica por defecto la normalización de media y desviación estándar (puntuación z) al estilo de ImageNet, por lo que no se requiere ningún paso de normalización manual.
División del conjunto de datos#
Dividir los datos en conjuntos de entrenamiento, validación y prueba te permite evaluar el modelo en datos no vistos y medir su generalización. Una división común es del 70% para entrenamiento, 20% para validación y 10% para prueba. Herramientas como scikit-learn o TensorFlow hacen que esto sea sencillo.
Ten en cuenta estos puntos al dividir:
- Mantén la distribución de clases: Asegúrate de que cada clase esté representada proporcionalmente en los conjuntos de entrenamiento, validación y prueba.
- Equilibra las clases: Para datasets desequilibrados, considera el sobremuestreo (oversampling) de la clase minoritaria o el submuestreo (undersampling) de la clase mayoritaria, solo dentro del conjunto de entrenamiento.
Divide el dataset antes de aplicar cualquier aumentación u otro preprocesamiento, y aplica esas transformaciones solo al conjunto de entrenamiento. Aumentar antes de dividir permite que la información de las imágenes de validación o prueba influya en el entrenamiento, produciendo puntuaciones engañosamente altas que colapsan ante datos del mundo real.
Aumentación del dataset#
La aumentación de datos aumenta artificialmente el tamaño de un conjunto de datos creando versiones modificadas de las imágenes existentes. Ayuda a reducir el sobreajuste y mejora la generalización, aportando varios beneficios:
- Modelos más robustos: Las variaciones en iluminación, orientación y escala hacen que el modelo sea resistente a distorsiones del mundo real.
- Rentable: Amplías el conjunto de entrenamiento sin tener que recopilar y etiquetar nuevos datos.
- Mejor uso de los datos: Cada imagen anotada produce múltiples variaciones de entrenamiento.
Con YOLO26, la aumentación se controla mediante argumentos de entrenamiento pasados a model.train() o los indicadores CLI equivalentes, y no editando el YAML del conjunto de datos, que define metadatos como rutas, nombres de clases y divisiones. Las aumentaciones integradas incluyen:
- Mosaic, MixUp y CutMix (
mosaic,mixup,cutmix): Combinan varias imágenes en una única muestra de entrenamiento. - Volteos (
fliplr,flipud): Reflejan las imágenes horizontal o verticalmente. - Transformaciones geométricas (
degrees,translate,scale,shear,perspective): Rotan, desplazan, amplían y deforman imágenes. - Variación de color HSV (
hsv_h,hsv_s,hsv_v): Varían el tono, la saturación y el brillo. - Copiar y pegar (
copy_paste): Pega objetos entre imágenes para segmentación.
from ultralytics import YOLO
model = YOLO("yolo26n.pt")
# Augmentation is configured with training arguments, not the dataset YAML
model.train(data="coco8.yaml", epochs=10, hsv_h=0.015, fliplr=0.5, mosaic=1.0, degrees=10.0)Para consultar la lista completa de argumentos de aumentación y sus valores predeterminados, consulta la referencia de configuración de aumentación y la guía de aumentación de datos de YOLO dedicada. Si el paquete albumentations está instalado, YOLO también activa automáticamente sus aumentaciones integradas basadas en Albumentations.
Un estudio de caso: Preprocesamiento para detección de vehículos#
Imagina un proyecto para detectar y clasificar vehículos en imágenes de tráfico con YOLO26, partiendo de imágenes anotadas con cuadros delimitadores y etiquetas. Así es como se ve cada decisión de preparación:
- Redimensionamiento: Sin trabajo manual: YOLO26 redimensiona a
imgszdurante el entrenamiento. - Normalización: Sin trabajo manual: YOLO26 escala los valores de los píxeles a
[0, 1]automáticamente. - División: Divide el dataset en 70% de entrenamiento, 20% de validación y 10% de prueba, manteniendo la distribución de clases consistente en todas las divisiones.
- Aumentación: Establece argumentos de entrenamiento adecuados para escenas de tráfico; por ejemplo,
fliplrpara invariancia de dirección,hsv_vpara iluminación diurna/nocturna ymosaicpara densidades de objetos variadas.
Con estas decisiones tomadas, el dataset está listo para el Análisis Exploratorio de Datos (EDA).
Análisis Exploratorio de Datos (EDA)#
El EDA utiliza estadísticas y visualizaciones para revelar patrones y distribuciones en tus datos, ayudándote a detectar problemas como el desequilibrio de clases o valores atípicos antes de entrenar.
Técnicas estadísticas de EDA#
El EDA estadístico comienza con métricas básicas (media, mediana, desviación estándar y rango) calculadas sobre propiedades como las distribuciones de intensidad de píxeles. Estas dan una visión general rápida de la calidad de tu dataset y detectan irregularidades desde el principio.
Técnicas visuales de EDA#
Las visualizaciones revelan patrones que las estadísticas resumidas omiten, como el desequilibrio de clases y valores atípicos. Las herramientas comunes incluyen:
- Histogramas y diagramas de caja: Muestran la distribución de los valores de los píxeles y marcan los valores atípicos en las distribuciones de intensidad o características.
- Gráficos de barras: Revelan el desequilibrio de clases comparando cuántos ejemplos tiene cada clase.
- Gráficos de dispersión: Exploran las relaciones entre características de las imágenes o anotaciones.
- Mapas de calor: Visualizan las distribuciones de intensidad de píxeles o la distribución espacial de las anotaciones en las imágenes.
Plataforma Ultralytics para EDA#
Para un enfoque sin código para EDA, sube tu conjunto de datos a Ultralytics Platform. La pestaña Charts del conjunto de datos genera automáticamente visualizaciones clave de EDA: distribución de divisiones, recuentos principales de clases, histogramas de ancho/alto de imagen y mapas de calor 2D de las posiciones de las anotaciones y las dimensiones de la imagen. La pestaña Images te permite explorar tus datos en vistas de cuadrícula, compactas o de tabla con superposiciones de anotaciones, lo que facilita detectar ejemplos mal etiquetados o clases desequilibradas sin escribir código.
Conclusión#
Los datos divididos, normalizados y aumentados correctamente reducen el ruido y mejoran la generalización, transformando una colección de imágenes brutas en un conjunto de entrenamiento fiable. Con tu conjunto de datos preparado, el siguiente paso es entrenar tu modelo. Si te surgen dudas por el camino, pregunta a la comunidad en el repositorio de GitHub de Ultralytics o en el servidor de Discord de Ultralytics.
FAQ#
La preparación garantiza que tus datos estén limpios, sean coherentes y tengan un formato optimizado para el entrenamiento. Al abordar el ruido, la incoherencia y el desequilibrio de clases en los datos brutos, pasos como el redimensionamiento, la normalización, la aumentación y la división de conjuntos de datos reducen la carga computacional y mejoran el rendimiento del modelo. Consulta los pasos de un proyecto de computer vision para ver cómo encaja en el flujo de trabajo general.
Configura la aumentación mediante los argumentos de entrenamiento, no el YAML del conjunto de datos. Pasa argumentos como
fliplr,mosaic,hsv_hydegreesamodel.train()(o los indicadores CLI equivalentes) para establecer la probabilidad y la intensidad de cada transformación. Estos se definen en la configuración de aumentación y se explican en la guía de aumentación de datos de YOLO.Las dos técnicas más comunes son el escalado min-max (reescalar píxeles a un rango de 0 a 1) y la normalización de puntuación z (reescalar según la media y la desviación estándar). YOLO26 aplica el escalado min-max automáticamente (convirtiendo imágenes a RGB y dividiendo los valores de píxel por 255), por lo que no necesitas un paso de normalización manual. No aplica la normalización de puntuación z por defecto.
Una práctica común es el 70% para entrenamiento, el 20% para validación y el 10% para prueba. Mantén la distribución de clases en las tres divisiones y evita la fuga de datos aplicando la aumentación únicamente al conjunto de entrenamiento después de la división. Herramientas como scikit-learn o TensorFlow gestionan la división de forma eficiente. Consulta la guía de recopilación y anotación de datos para la preparación previa del conjunto de datos.
Sí. El argumento
imgszredimensiona las imágenes durante el entrenamiento y la inferencia para que su dimensión más larga coincida con el tamaño especificado (p. ej., 640 píxeles) manteniendo la relación de aspecto, y luego rellena el lado más corto. No necesitas redimensionar las imágenes tú mismo; consulta la documentación de entrenamiento del modelo para obtener más detalles.