Técnicas de preprocesamiento de datos para datos anotados de visión artificial
Introducción
Después de haber definido los objetivos del 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. Los datos limpios y coherentes son vitales para crear un modelo que funcione bien.
Ver: Cómo utilizar el preprocesamiento y el aumento de datos para mejorar la precisión del modelo en escenarios del mundo real 🚀
El preprocesamiento es un paso en el flujo de trabajo de un proyecto de visión artificial que incluye el cambio de tamaño de las imágenes, la normalización de los valores de los píxeles, el aumento del conjunto de datos y la división de los datos en conjuntos de entrenamiento, validación y prueba. ¡Exploremos las técnicas esenciales y las mejores prácticas para limpiar sus datos!
Importancia del preprocesamiento de datos
Ya estamos recopilando y anotando nuestros datos cuidadosamente teniendo en cuenta múltiples consideraciones. 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 preparar los datos en un formato adecuado para el entrenamiento que reduzca la carga computacional y ayude a mejorar el rendimiento del modelo. Estos son algunos problemas comunes en los datos sin procesar que aborda el preprocesamiento:
- Ruido: Variaciones irrelevantes o aleatorias en los datos.
- Inconsistencia: Variaciones en los tamaños, formatos y calidad de las imágenes.
- Desequilibrio: Distribución desigual de clases o categorías en el conjunto de datos.
Técnicas de preprocesamiento de datos
Uno de los primeros y más importantes pasos en el preprocesamiento de datos es el redimensionamiento. Algunos modelos están diseñados para manejar tamaños de entrada variables, pero muchos modelos requieren un tamaño de entrada consistente. Redimensionar las imágenes las uniformiza y reduce la complejidad computacional.
Redimensionar imágenes
Puedes cambiar el tamaño de 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íxeles más cercanos.
- Vecino más cercano: Asigna el valor del píxel más cercano sin promediar, lo que da como resultado una imagen en bloques pero una computación más rápida.
Para simplificar la tarea de cambiar el tamaño, puede utilizar las siguientes herramientas:
- OpenCV: Una biblioteca popular de visión artificial con amplias funciones para el procesamiento de imágenes.
- PIL (Pillow): Una biblioteca de imágenes de python para abrir, manipular y guardar archivos de imagen.
Con respecto a YOLO11, 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 cambiará el tamaño de las imágenes de entrada para 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 el cambio de tamaño es un paso de preprocesamiento necesario o si tu modelo puede manejar eficientemente imágenes de diferentes tamaños.
Normalización de los valores de los 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í hay algunas técnicas de normalización comunes:
- Escalado Mínimo-Máximo: Escala los valores de los píxeles a un rango de 0 a 1.
- Normalización de puntuación Z: Escala los valores de los píxeles basándose en su media y desviación estándar.
Con respecto a YOLO11, la normalización se maneja sin problemas como parte de su canalización de preprocesamiento durante el entrenamiento del modelo. YOLO11 realiza automáticamente varios pasos de preprocesamiento, incluida la conversión a RGB, el escalado de los valores de píxeles al rango [0, 1] y la normalización utilizando valores predefinidos de media y desviación estándar.
Dividir el 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 realiza para garantizar que el modelo pueda evaluarse 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.
Considere lo siguiente al dividir su conjunto de datos:
- Mantener la distribución de datos: Asegúrese de que la distribución de 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.
- Equilibrio de Clases: Para conjuntos de datos desequilibrados, considere 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 mediante la creación de versiones modificadas de las imágenes. Al aumentar sus datos, puede reducir el sobreajuste y mejorar la generalización del modelo.
Estos son algunos 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 a las variaciones y distorsiones en los datos de entrada. Esto incluye cambios en la iluminación, la orientación y la escala.
- Rentable: El aumento de datos es una forma rentable de aumentar la cantidad de datos de entrenamiento sin recopilar ni etiquetar datos nuevos.
- Mejor uso de los datos: Cada punto de datos disponible se utiliza al máximo potencial mediante la creación de nuevas variaciones
Métodos de aumento de datos
Las técnicas comunes de aumento incluyen volteo, rotación, escalado y ajustes de color. Varias bibliotecas, como Albumentations, Imgaug y ImageDataGenerator de TensorFlow, pueden generar estos aumentos.
Con respecto a YOLO11, puede aumentar su conjunto de datos personalizado modificando el archivo de configuración del conjunto de datos, un archivo .yaml. En este archivo, puede agregar una sección de aumento con parámetros que especifican cómo desea aumentar sus datos.
El repositorio Ultralytics YOLO11 admite una amplia gama de aumentos de datos. Puede aplicar varias transformaciones como:
- Recortes Aleatorios
- Volteo: Las imágenes se pueden voltear horizontal o verticalmente.
- Rotación: Las imágenes se pueden rotar en ángulos específicos.
- Distorsión
Además, puedes ajustar la intensidad de estas técnicas de aumento de datos a través de parámetros específicos para generar más variedad de datos.
Un caso práctico de preprocesamiento
Considere un proyecto destinado a desarrollar un modelo para detectar y clasificar diferentes tipos de vehículos en imágenes de tráfico utilizando YOLO11. Hemos recopilado imágenes de tráfico y las hemos anotado con cuadros delimitadores y etiquetas.
Aquí se muestra cómo sería cada paso del preprocesamiento para este proyecto:
- Redimensionamiento de imágenes: Dado que YOLO11 gestiona tamaños de entrada flexibles y realiza el redimensionamiento automáticamente, no es necesario el redimensionamiento manual. 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: YOLO11 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.
- División del conjunto de datos: Divida el conjunto de datos en conjuntos de entrenamiento (70%), validación (20%) y prueba (10%) utilizando herramientas como scikit-learn.
- Aumento de Datos: Modifique 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 ningún problema potencial 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 AED utiliza técnicas estadísticas y herramientas de visualización para comprender los patrones y las distribuciones en tus datos. Puedes identificar problemas como desequilibrios de clase o valores atípicos y tomar decisiones informadas sobre el preprocesamiento adicional de datos o los ajustes del entrenamiento del modelo.
Técnicas de EDA Estadística
Las técnicas estadísticas a menudo comienzan 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 su conjunto de datos de imágenes, como las distribuciones de intensidad de píxeles. Comprender estas estadísticas básicas le ayuda a comprender la calidad general y las características de sus datos, lo que le permite detectar cualquier irregularidad desde el principio.
Técnicas de EDA visual
Las visualizaciones son clave en el EDA para conjuntos de datos de imágenes. Por ejemplo, el análisis del desequilibrio de clases es otro aspecto vital del EDA. Ayuda a determinar si ciertas clases están subrepresentadas en su conjunto de datos. Visualizar la distribución de diferentes clases o categorías de imágenes mediante gráficos de barras puede revelar rápidamente cualquier desequilibrio. Del mismo modo, los valores atípicos pueden identificarse utilizando herramientas de visualización como los diagramas de caja, que resaltan las 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 sus resultados.
Las herramientas comunes para visualizaciones incluyen:
- Histogramas y diagramas de caja: Útiles para comprender 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: Eficaces 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.
Usando Ultralytics Explorer para EDA
Nota de la comunidad ⚠️
A partir de ultralytics>=8.3.10
, el soporte de Ultralytics Explorer ha quedado obsoleto. ¡Pero no se preocupe! Ahora puede acceder a funcionalidades similares e incluso mejoradas a través de Ultralytics HUB, nuestra intuitiva plataforma sin código diseñada para optimizar su flujo de trabajo. Con Ultralytics HUB, puede seguir explorando, visualizando y gestionando sus datos sin esfuerzo, todo ello sin escribir una sola línea de código. ¡Asegúrese de echarle un vistazo y aprovechar sus potentes funciones! 🚀
Para un enfoque más avanzado de EDA, puede utilizar la herramienta Ultralytics Explorer. Ofrece capacidades robustas para explorar conjuntos de datos de visión artificial. Al admitir la búsqueda semántica, las consultas SQL y la búsqueda de similitud vectorial, la herramienta facilita el análisis y la comprensión de sus datos. Con Ultralytics Explorer, puede crear incrustaciones para su conjunto de datos para encontrar imágenes similares, ejecutar consultas SQL para un análisis detallado y realizar búsquedas semánticas, todo a través de una interfaz gráfica fácil de usar.
Contacta con nosotros
Tener discusiones sobre su proyecto con otros entusiastas de la visión artificial puede brindarle nuevas ideas desde diferentes perspectivas. Aquí hay algunas formas excelentes de aprender, solucionar problemas y establecer contactos:
Canales para conectar con la comunidad
- Problemas en GitHub: Visita el repositorio de YOLO11 en GitHub y utiliza la pestaña de problemas para plantear preguntas, informar de errores y sugerir funciones. La comunidad y los mantenedores están ahí para ayudarte con cualquier problema que enfrentes.
- Servidor de Discord de Ultralytics: Únete al servidor de Discord de Ultralytics para conectar con otros usuarios y desarrolladores, obtener soporte, compartir conocimientos e intercambiar ideas.
Documentación oficial
- Documentación de Ultralytics YOLO11: Consulta la documentación oficial de YOLO11 para obtener guías exhaustivas e información valiosa sobre numerosas tareas y proyectos de visión artificial.
¡Su conjunto de datos está listo!
Los datos redimensionados, normalizados y aumentados correctamente 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 garantiza que los datos estén limpios, sean coherentes y tengan un formato óptimo para el entrenamiento del modelo. Al abordar problemas como el ruido, la incoherencia y el desequilibrio en los datos brutos, los pasos de preprocesamiento como el cambio de tamaño, la normalización, el aumento y la división del conjunto de datos ayudan a reducir la carga computacional y a mejorar el rendimiento del modelo. Para obtener más detalles, visita los pasos de un proyecto de visión artificial.
¿Cómo puedo utilizar Ultralytics YOLO para el aumento de datos?
Para la ampliación de datos con Ultralytics YOLO11, debes modificar el archivo de configuración del dataset (.yaml). En este archivo, puedes especificar varias técnicas de ampliación, como recortes aleatorios, volteos horizontales y ajustes de brillo. Esto puede hacerse de forma eficaz utilizando las configuraciones de entrenamiento explicadas aquí. La ampliación de datos ayuda a crear un dataset más robusto, reduce el sobreajuste y mejora 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 Mínimo-Máximo: Escala los valores de los píxeles a un rango de 0 a 1.
- Normalización de puntuación Z: Escala los valores de los píxeles basándose en su media y desviación estándar.
Para YOLO11, la normalización se gestiona automáticamente, incluyendo la conversión a RGB y el escalado del valor de los píxeles. Obtén más información en la sección de entrenamiento del modelo.
¿Cómo debo dividir mi conjunto de datos anotado para el entrenamiento?
Para dividir tu conjunto de datos, una práctica común es dividirlo en un 70% para entrenamiento, un 20% para validación y un 10% para pruebas. Es importante mantener la distribución de datos 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 una división eficiente del conjunto de datos. Consulta la guía detallada sobre la preparación del conjunto de datos.
¿Puedo manejar tamaños de imagen variables en YOLO11 sin redimensionamiento manual?
Sí, Ultralytics YOLO11 puede manejar tamaños de imagen variables a través del parámetro 'imgsz' durante el entrenamiento del modelo. Este parámetro asegura que las imágenes se redimensionen de manera 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, consulte la sección de entrenamiento del modelo.