Técnicas de preprocesamiento de datos para datos de visión artificial anotados

Introducción

Después de definir los objetivos de tu proyecto de visión artificial y de haber recopilado y anotado los datos, el siguiente paso es preprocesar los datos anotados y prepararlos para el entrenamiento del modelo. Unos datos limpios y coherentes son vitales para crear un modelo que funcione bien.



Watch: How to Use Data Preprocessing and Augmentation to Improve Model Accuracy in Real-World Scenarios 🚀

El preprocesamiento es un paso en el flujo de trabajo de un proyecto de visión artificial que incluye cambiar el tamaño de las imágenes, normalizar los valores de los píxeles, aumentar el conjunto de datos y dividir los datos en conjuntos de entrenamiento, validación y prueba. ¡Exploremos las técnicas esenciales y las mejores prácticas para limpiar tus datos!

Importancia del preprocesamiento de datos

Ya estamos recopilando y anotando nuestros datos cuidadosamente con varias consideraciones en mente. Entonces, ¿qué hace que el preprocesamiento de datos sea tan importante para un proyecto de visión artificial? Bueno, el preprocesamiento de datos consiste en conseguir que tus datos tengan un formato adecuado para el entrenamiento que reduzca la carga computacional y ayude a mejorar el rendimiento del modelo. Aquí tienes algunos problemas comunes en los datos sin procesar que el preprocesamiento soluciona:

  • 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 las clases o categorías en el conjunto de datos.

Técnicas de preprocesamiento de datos

Uno de los pasos principales y más importantes en el preprocesamiento de datos es cambiar el tamaño (redimensionar). Algunos modelos están diseñados para manejar tamaños de entrada variables, pero muchos requieren un tamaño de entrada constante. Redimensionar las imágenes las hace uniformes y reduce la complejidad computacional.

Redimensionar imágenes

Puedes redimensionar tus imágenes utilizando los siguientes métodos:

  • Interpolación bilineal: Suaviza los valores de los píxeles tomando un promedio ponderado de los cuatro valores de píxel más cercanos.
  • Vecino más cercano: Asigna el valor del píxel más cercano sin promediar, lo que lleva a una imagen pixelada pero con un cálculo más rápido.

Para hacer que redimensionar sea una tarea más sencilla, puedes usar las siguientes herramientas:

  • OpenCV: Una biblioteca popular de visión artificial con funciones extensas para el procesamiento de imágenes.
  • PIL (Pillow): Una biblioteca de Python Imaging Library para abrir, manipular y guardar archivos de imagen.

Con respecto a YOLO26, el parámetro 'imgsz' durante el entrenamiento del modelo permite tamaños de entrada flexibles. Cuando se establece en un tamaño específico, como 640, el modelo redimensionará las imágenes de entrada de forma que su dimensión más grande sea de 640 píxeles, manteniendo la relación de aspecto original.

Al evaluar las necesidades específicas de tu modelo y conjunto de datos, puedes determinar si redimensionar es un paso de preprocesamiento necesario o si tu modelo puede manejar eficientemente imágenes de tamaños variables.

Normalización de valores de píxeles

Otra técnica de preprocesamiento es la normalización. La normalización escala los valores de los píxeles a un rango estándar, lo que ayuda a una convergencia más rápida durante el entrenamiento y mejora el rendimiento del modelo. Aquí tienes algunas técnicas de normalización comunes:

  • Escalado Min-Max: Escala los valores de los píxeles a un rango de 0 a 1.
  • Normalización Z-Score: Escala los valores de los píxeles basándose en su media y desviación estándar.

Con respecto a YOLO26, la normalización se maneja sin problemas como parte de su tubería de preprocesamiento durante el entrenamiento del modelo. YOLO26 realiza automáticamente varios pasos de preprocesamiento, incluida la conversión a RGB, el escalado de los valores de píxel al rango [0, 1] y la normalización utilizando valores predefinidos de media y desviación estándar.

División del conjunto de datos

Una vez que hayas limpiado los datos, estarás listo para dividir el conjunto de datos. La división de los datos en conjuntos de entrenamiento, validación y prueba se hace para asegurar que el modelo pueda ser evaluado con datos no vistos para evaluar su rendimiento de generalización. Una división común es 70% para entrenamiento, 20% para validación y 10% para pruebas. Existen varias herramientas y bibliotecas que puedes utilizar para dividir tus datos, como scikit-learn o TensorFlow.

Considera lo siguiente al dividir tu conjunto de datos:

  • Mantener la distribución de los datos: Asegúrate de que la distribución de los datos de las clases se mantenga en los conjuntos de entrenamiento, validación y prueba.
  • Evitar la fuga de datos: Normalmente, el aumento de datos se realiza después de dividir el conjunto de datos. El aumento de datos y cualquier otro preprocesamiento solo deben aplicarse al conjunto de entrenamiento para evitar que la información de los conjuntos de validación o prueba influya en el entrenamiento del modelo.
  • Equilibrar clases: Para conjuntos de datos desequilibrados, considera técnicas como el sobremuestreo de la clase minoritaria o el submuestreo de la clase mayoritaria dentro del conjunto de entrenamiento.

¿Qué es el aumento de datos?

El paso de preprocesamiento de datos más comúnmente discutido es el aumento de datos. El aumento de datos aumenta artificialmente el tamaño del conjunto de datos creando versiones modificadas de las imágenes. Al aumentar tus datos, puedes reducir el sobreajuste y mejorar la generalización del modelo.

Aquí tienes otros beneficios del aumento de datos:

  • Crea un conjunto de datos más robusto: El aumento de datos puede hacer que el modelo sea más robusto ante variaciones y distorsiones en los datos de entrada. Esto incluye cambios en la iluminación, orientación y escala.
  • Económico: El aumento de datos es una forma rentable de aumentar la cantidad de datos de entrenamiento sin tener que recopilar y etiquetar nuevos datos.
  • Mejor uso de los datos: Cada punto de datos disponible se utiliza al máximo de su potencial creando nuevas variaciones.

Métodos de aumento de datos

Las técnicas de aumento comunes incluyen volteo, rotación, escalado y ajustes de color. Varias bibliotecas, como Albumentations, Imgaug y ImageDataGenerator de TensorFlow, pueden generar estos aumentos.

Overview of Data Augmentations

Con respecto a YOLO26, puedes aumentar tu conjunto de datos personalizado modificando el archivo de configuración del conjunto de datos, un archivo .yaml. En este archivo, puedes añadir una sección de aumento con parámetros que especifiquen cómo quieres aumentar tus datos.

El repositorio Ultralytics YOLO26 admite una amplia gama de aumentos de datos. Puedes aplicar varias transformaciones como:

  • Recortes aleatorios
  • Volteo: Las imágenes pueden voltearse horizontal o verticalmente.
  • Rotación: Las imágenes pueden rotarse en ángulos específicos.
  • Distorsión

Además, puedes ajustar la intensidad de estas técnicas de aumento a través de parámetros específicos para generar más variedad de datos.

Un estudio de caso de preprocesamiento

Considera un proyecto cuyo objetivo sea desarrollar un modelo para detectar y clasificar diferentes tipos de vehículos en imágenes de tráfico utilizando YOLO26. Hemos recopilado imágenes de tráfico y las hemos anotado con cuadros delimitadores y etiquetas.

Aquí tienes cómo sería cada paso de preprocesamiento para este proyecto:

  • Redimensionar imágenes: Dado que YOLO26 maneja tamaños de entrada flexibles y realiza el redimensionamiento automáticamente, no es necesario hacerlo manualmente. El modelo ajustará el tamaño de la imagen de acuerdo con el parámetro 'imgsz' especificado durante el entrenamiento.
  • Normalización de valores de píxeles: YOLO26 normaliza automáticamente los valores de los píxeles a un rango de 0 a 1 durante el preprocesamiento, por lo que no es necesario hacerlo.
  • División del conjunto de datos: Divide el conjunto de datos en conjuntos de entrenamiento (70%), validación (20%) y prueba (10%) utilizando herramientas como scikit-learn.
  • Aumento de datos: Modifica el archivo de configuración del conjunto de datos (.yaml) para incluir técnicas de aumento de datos como recortes aleatorios, volteos horizontales y ajustes de brillo.

Estos pasos aseguran que el conjunto de datos esté preparado sin problemas potenciales y esté listo para el Análisis Exploratorio de Datos (EDA).

Técnicas de Análisis Exploratorio de Datos

Después de preprocesar y aumentar tu conjunto de datos, el siguiente paso es obtener información a través del Análisis Exploratorio de Datos. El EDA utiliza técnicas estadísticas y herramientas de visualización para entender los patrones y distribuciones en tus datos. Puedes identificar problemas como desequilibrios de clase o valores atípicos y tomar decisiones informadas sobre más preprocesamiento de datos o ajustes en el entrenamiento del modelo.

Técnicas estadísticas de EDA

Las técnicas estadísticas suelen comenzar con el cálculo de métricas básicas como la media, la mediana, la desviación estándar y el rango. Estas métricas proporcionan una visión general rápida de las propiedades de tu conjunto de datos de imágenes, como las distribuciones de intensidad de los píxeles. Entender estas estadísticas básicas te ayuda a captar la calidad general y las características de tus datos, permitiéndote detectar cualquier irregularidad desde el principio.

Técnicas visuales de EDA

Las visualizaciones son clave en el EDA para conjuntos de datos de imágenes. Por ejemplo, el análisis de desequilibrio de clases es otro aspecto vital del EDA. Ayuda a determinar si ciertas clases están infrarrepresentadas en tu conjunto de datos. Visualizar la distribución de diferentes clases o categorías de imágenes usando gráficos de barras puede revelar rápidamente cualquier desequilibrio. De manera similar, los valores atípicos pueden identificarse utilizando herramientas de visualización como los diagramas de caja, que resaltan anomalías en la intensidad de los píxeles o las distribuciones de características. La detección de valores atípicos evita que los puntos de datos inusuales sesguen tus resultados.

Las herramientas comunes para visualizaciones incluyen:

  • Histogramas y diagramas de caja: Útiles para entender la distribución de los valores de los píxeles e identificar valores atípicos.
  • Gráficos de dispersión: Útiles para explorar las relaciones entre las características de la imagen o las anotaciones.
  • Mapas de calor: Efectivos para visualizar la distribución de las intensidades de los píxeles o la distribución espacial de las características anotadas dentro de las imágenes.

Uso de la plataforma Ultralytics para EDA

Para un enfoque sin código para el EDA, sube tu conjunto de datos a la Plataforma Ultralytics. La pestaña Charts (Gráficos) del conjunto de datos genera automáticamente las visualizaciones descritas anteriormente: distribución de la división, recuentos de clases principales, 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 (Imágenes) te permite explorar tus datos en vistas de cuadrícula, compactas o de tabla con superposiciones de anotaciones, facilitando la detección de ejemplos mal etiquetados o clases desequilibradas sin escribir ni una sola línea de código.

Contacta y conecta

Debatir sobre tu proyecto con otros entusiastas de la visión artificial puede darte nuevas ideas desde diferentes perspectivas. Aquí tienes algunas formas geniales de aprender, solucionar problemas y establecer contactos:

Canales para conectar con la comunidad

  • GitHub Issues: Visita el repositorio YOLO26 de GitHub y utiliza la pestaña de Issues para plantear preguntas, informar de errores y sugerir funciones. La comunidad y los mantenedores están ahí para ayudar con cualquier problema que encuentres.
  • Servidor de Discord de Ultralytics: Únete al servidor de Discord de Ultralytics para conectar con otros usuarios y desarrolladores, obtener ayuda, compartir conocimientos e intercambiar ideas.

Documentación oficial

  • Documentación de YOLO26 de Ultralytics: Consulta la documentación oficial de YOLO26 para obtener guías completas y perspectivas valiosas sobre numerosas tareas y proyectos de visión artificial.

¡Tu conjunto de datos está listo!

Los datos correctamente redimensionados, normalizados y aumentados mejoran el rendimiento del modelo al reducir el ruido y mejorar la generalización. Siguiendo las técnicas de preprocesamiento y las mejores prácticas descritas en esta guía, puedes crear un conjunto de datos sólido. Con tu conjunto de datos preprocesado listo, puedes proceder con confianza a los siguientes pasos de tu proyecto.

Preguntas frecuentes

¿Cuál es la importancia del preprocesamiento de datos en los proyectos de visión artificial?

El preprocesamiento de datos es esencial en los proyectos de visión artificial porque asegura que los datos sean limpios, coherentes y tengan un formato óptimo para el entrenamiento del modelo. Al abordar problemas como el ruido, la inconsistencia y el desequilibrio en los datos sin procesar, los pasos de preprocesamiento como redimensionar, normalizar, aumentar y dividir el conjunto de datos ayudan a reducir la carga computacional y mejorar el rendimiento del modelo. Para más detalles, visita los pasos de un proyecto de visión artificial.

¿Cómo puedo usar Ultralytics YOLO para el aumento de datos?

Para el aumento de datos con Ultralytics YOLO26, debes modificar el archivo de configuración del conjunto de datos (.yaml). En este archivo, puedes especificar varias técnicas de aumento como recortes aleatorios, volteos horizontales y ajustes de brillo. Esto se puede hacer de manera efectiva utilizando las configuraciones de entrenamiento explicadas aquí. El aumento de datos ayuda a crear un conjunto de datos más robusto, reducir el sobreajuste y mejorar la generalización del modelo.

¿Cuáles son las mejores técnicas de normalización de datos para datos de visión artificial?

La normalización escala los valores de los píxeles a un rango estándar para una convergencia más rápida y un mejor rendimiento durante el entrenamiento. Las técnicas comunes incluyen:

  • Escalado Min-Max: Escala los valores de los píxeles a un rango de 0 a 1.
  • Normalización Z-Score: Escala los valores de los píxeles basándose en su media y desviación estándar.

Para YOLO26, la normalización se maneja automáticamente, incluyendo la conversión a RGB y el escalado de los valores de los píxeles. Aprende más sobre esto en la sección de entrenamiento del modelo.

¿Cómo debo dividir mi conjunto de datos anotados para el entrenamiento?

Para dividir tu conjunto de datos, una práctica común es dividirlo en un 70% para entrenamiento, 20% para validación y 10% para pruebas. Es importante mantener la distribución de las clases en estas divisiones y evitar la fuga de datos realizando el aumento solo en el conjunto de entrenamiento. Utiliza herramientas como scikit-learn o TensorFlow para dividir el conjunto de datos de forma eficiente. Consulta la guía detallada sobre la preparación de conjuntos de datos.

¿Puedo manejar diferentes tamaños de imagen en YOLO26 sin redimensionar manualmente?

Sí, Ultralytics YOLO26 puede manejar diferentes tamaños de imagen a través del parámetro 'imgsz' durante el entrenamiento del modelo. Este parámetro asegura que las imágenes se redimensionen para que su dimensión más grande coincida con el tamaño especificado (por ejemplo, 640 píxeles), manteniendo la relación de aspecto. Para un manejo de entrada más flexible y ajustes automáticos, consulta la sección de entrenamiento del modelo.

Comentarios