Saltar al contenido

Solución de problemas comunes YOLO

YOLO Problemas comunes Imagen

Introducción

Esta guía es una ayuda completa para solucionar los problemas más comunes que surgen al trabajar con YOLO11 en tus proyectos de Ultralytics . Navegar a través de estos problemas puede ser pan comido con la orientación adecuada, garantizando que tus proyectos sigan su curso sin retrasos innecesarios.



Observa: Ultralytics Problemas comunes de YOLO11 | Errores de instalación, Problemas de formación de modelos

Problemas comunes

Errores de instalación

Los errores de instalación pueden deberse a varias razones, como versiones incompatibles, dependencias que faltan o configuraciones incorrectas del entorno. En primer lugar, comprueba que estás haciendo lo siguiente:

  • Estás utilizando Python 3.8 o posterior, como se recomienda.

  • Asegúrate de que tienes instalada la versión correcta de PyTorch (1.8 o posterior) instalada.

  • Considera la posibilidad de utilizar entornos virtuales para evitar conflictos.

  • Sigue paso a paso la guía oficial de instalación.

Además, aquí tienes algunos problemas comunes de instalación que han encontrado los usuarios, junto con sus respectivas soluciones:

  • Errores de importación o problemas de dependencias - Si obtienes errores durante la importación de YOLO11, o tienes problemas relacionados con las dependencias, considera los siguientes pasos para solucionar el problema:

    • Nueva instalación: A veces, empezar con una instalación nueva puede resolver problemas inesperados. Especialmente con bibliotecas como Ultralytics, donde las actualizaciones pueden introducir cambios en la estructura del árbol de archivos o en las funcionalidades.

    • Actualízate regularmente: Asegúrate de que utilizas la última versión de la biblioteca. Las versiones antiguas pueden no ser compatibles con las actualizaciones recientes, lo que puede provocar conflictos o problemas.

    • Comprueba las dependencias: Comprueba que todas las dependencias necesarias están correctamente instaladas y son de versiones compatibles.

    • Revisa los cambios: Si inicialmente clonaste o instalaste una versión anterior, ten en cuenta que las actualizaciones importantes pueden afectar a la estructura o las funcionalidades de la biblioteca. Consulta siempre la documentación oficial o los registros de cambios para comprender cualquier cambio importante.

    • Recuerda que mantener actualizadas tus bibliotecas y dependencias es crucial para una experiencia fluida y sin errores.

  • Ejecutar YOLO11 en GPU - Si tienes problemas para ejecutar YOLO11 en GPU, considera los siguientes pasos para solucionar el problema:

    • Comprueba la compatibilidad y la instalación de CUDA: Asegúrate de que tu GPU es compatible con CUDA y de que CUDA está correctamente instalado. Utiliza el nvidia-smi para comprobar el estado de tu versión de NVIDIA GPU y CUDA .

    • Comprueba PyTorch y CUDA Integración: Asegúrate de que PyTorch puede utilizar CUDA ejecutando import torch; print(torch.cuda.is_available()) en un terminal Python . Si devuelve "Verdadero", PyTorch está configurado para utilizar CUDA.

    • Activación del entorno: Asegúrate de que estás en el entorno correcto, donde están instalados todos los paquetes necesarios.

    • Actualiza tus paquetes: Los paquetes obsoletos pueden no ser compatibles con tu GPU. Mantenlos actualizados.

    • Configuración del programa: Comprueba si el programa o código especifica el uso de GPU . En YOLO11, esto puede estar en los ajustes o en la configuración.

Cuestiones de formación de modelos

En esta sección se abordarán los problemas habituales que se plantean durante la formación, así como sus respectivas explicaciones y soluciones.

Verificación de los ajustes de configuración

Edición: No estás seguro de si los ajustes de configuración del .yaml se aplican correctamente durante el entrenamiento del modelo.

Solución: Los ajustes de configuración de .yaml cuando utilices la función model.train() función. Para asegurarte de que estos ajustes se aplican correctamente, sigue estos pasos:

  • Confirma que la ruta a tu .yaml es correcto.
  • Asegúrate de pasar la ruta a tu .yaml como el archivo data al llamar a model.train()como se muestra a continuación:
model.train(data="/path/to/your/data.yaml", batch=4)

Acelerar el entrenamiento con varias GPU

Problema: El entrenamiento es lento en una sola GPU, y quieres acelerar el proceso utilizando varias GPU.

Solución: Aumentar el tamaño del lote puede acelerar el entrenamiento, pero es esencial tener en cuenta la capacidad de memoria de GPU . Para acelerar el entrenamiento con varias GPU, sigue estos pasos:

  • Asegúrate de que dispones de varias GPU.

  • Modifica tu archivo de configuración .yaml para especificar el número de GPUs a utilizar, por ejemplo, gpus: 4.

  • Aumenta el tamaño del lote en consecuencia para utilizar plenamente las múltiples GPUs sin sobrepasar los límites de memoria.

  • Modifica tu comando de entrenamiento para utilizar varias GPU:

# Adjust the batch size and other settings as needed to optimize training speed
model.train(data="/path/to/your/data.yaml", batch=32, multi_scale=True)

Parámetros de Monitorización Continua

Problema: Quieres saber qué parámetros deben controlarse continuamente durante el entrenamiento, aparte de la pérdida.

Solución: Aunque la pérdida es una métrica crucial que hay que controlar, también es esencial hacer un seguimiento de otras métricas para optimizar el rendimiento del modelo. Algunas métricas clave que hay que controlar durante el entrenamiento son

Puedes acceder a estas métricas desde los registros de entrenamiento o utilizando herramientas como TensorBoard o wandb para su visualización. Implementar una parada temprana basada en estas métricas puede ayudarte a conseguir mejores resultados.

Herramientas para seguir el progreso de la formación

Asunto: Estás buscando recomendaciones sobre herramientas para seguir el progreso del entrenamiento.

Solución: Para seguir y visualizar el progreso del entrenamiento, puedes considerar el uso de las siguientes herramientas:

  • TensorBoard: TensorBoard es una opción popular para visualizar métricas de entrenamiento, incluyendo pérdidas, precisión y más. Puedes integrarlo en tu proceso de entrenamiento YOLO11.
  • Comet: Comet proporciona un amplio conjunto de herramientas para el seguimiento y la comparación de experimentos. Te permite rastrear métricas, hiperparámetros e incluso pesos de modelos. La integración con los modelos de YOLO también es sencilla, proporcionándote una visión completa del ciclo de tu experimento.
  • Ultralytics HUB: Ultralytics HUB ofrece un entorno especializado para el seguimiento de modelos YOLO , proporcionándote una plataforma única para gestionar métricas, conjuntos de datos e incluso colaborar con tu equipo. Dado su enfoque adaptado a YOLO, ofrece opciones de seguimiento más personalizadas.

Cada una de estas herramientas ofrece su propio conjunto de ventajas, por lo que te conviene tener en cuenta las necesidades específicas de tu proyecto a la hora de elegir.

Cómo comprobar si la formación está teniendo lugar en el GPU

Problema: El valor de "dispositivo" en los registros de entrenamiento es "nulo", y no estás seguro de si se está produciendo el entrenamiento en GPU.

Solución: Que el valor "dispositivo" sea "nulo" suele significar que el proceso de entrenamiento está configurado para utilizar automáticamente un GPU disponible, que es el comportamiento por defecto. Para asegurarte de que el entrenamiento se produce en un GPU específico, puedes establecer manualmente el valor 'device' al índice GPU (por ejemplo, '0' para el primer GPU) en tu archivo de configuración .yaml:

device: 0

Esto asignará explícitamente el proceso de entrenamiento al GPU especificado. Si deseas entrenar en el CPU, establece 'dispositivo' en 'cpu'.

Echa un vistazo a la carpeta "recorridos" para ver los registros y las métricas para controlar eficazmente el progreso del entrenamiento.

Consideraciones clave para una formación eficaz del modelo

Aquí tienes algunas cosas que debes tener en cuenta, si te enfrentas a problemas relacionados con la formación de modelos.

Formato y etiquetas del conjunto de datos

  • Importancia: La base de cualquier modelo de aprendizaje automático reside en la calidad y el formato de los datos con los que se entrena.

  • Recomendación: Asegúrate de que tu conjunto de datos personalizado y sus etiquetas asociadas se ajustan al formato esperado. Es crucial verificar que las anotaciones son precisas y de alta calidad. Las anotaciones incorrectas o deficientes pueden desbaratar el proceso de aprendizaje del modelo, provocando resultados impredecibles.

Convergencia del modelo

  • Importancia: Alcanzar la convergencia del modelo garantiza que éste ha aprendido lo suficiente de los datos de entrenamiento.

  • Recomendación: Cuando se entrena un modelo "desde cero", es vital asegurarse de que el modelo alcanza un nivel satisfactorio de convergencia. Esto puede requerir una mayor duración del entrenamiento, con más épocas, en comparación con cuando estás ajustando un modelo existente.

Tasa de aprendizaje y tamaño del lote

  • Importancia: Estos hiperparámetros desempeñan un papel fundamental a la hora de determinar cómo actualiza el modelo sus pesos durante el entrenamiento.

  • Recomendación: Evalúa periódicamente si la tasa de aprendizaje y el tamaño de lote elegidos son óptimos para tu conjunto de datos específico. Los parámetros que no estén en armonía con las características del conjunto de datos pueden entorpecer el rendimiento del modelo.

Distribución por clases

  • Importancia: La distribución de las clases en tu conjunto de datos puede influir en las tendencias de predicción del modelo.

  • Recomendación: Evalúa periódicamente la distribución de clases dentro de tu conjunto de datos. Si hay un desequilibrio de clases, existe el riesgo de que el modelo desarrolle un sesgo hacia la clase más predominante. Este sesgo puede ser evidente en la matriz de confusión, donde el modelo podría predecir predominantemente la clase mayoritaria.

Comprobación cruzada con ponderaciones preentrenadas

  • Importancia: Aprovechar los pesos preentrenados puede proporcionar un punto de partida sólido para el entrenamiento del modelo, especialmente cuando los datos son limitados.

  • Recomendación: Como paso de diagnóstico, considera la posibilidad de entrenar tu modelo utilizando los mismos datos, pero inicializándolo con pesos preentrenados. Si este enfoque produce una matriz de confusión bien formada, podría sugerir que el modelo "desde cero" podría requerir más entrenamiento o ajustes.

En esta sección se abordarán los problemas habituales que se plantean durante la predicción de modelos.

Obtener predicciones de Bounding Box con tu modelo personalizado YOLO11

Problema: Al ejecutar predicciones con un modelo YOLO11 personalizado, hay problemas con el formato y la visualización de las coordenadas del cuadro delimitador.

Solución:

  • Formato de coordenadas: YOLO11 proporciona las coordenadas del cuadro delimitador en valores absolutos de píxeles. Para convertirlas en coordenadas relativas (que van de 0 a 1), tienes que dividirlas por las dimensiones de la imagen. Por ejemplo, supongamos que el tamaño de tu imagen es 640x640. Entonces harías lo siguiente
# Convert absolute coordinates to relative coordinates
x1 = x1 / 640  # Divide x-coordinates by image width
x2 = x2 / 640
y1 = y1 / 640  # Divide y-coordinates by image height
y2 = y2 / 640
  • Nombre de archivo: Para obtener el nombre del archivo de la imagen sobre la que estás prediciendo, accede a la ruta del archivo de la imagen directamente desde el objeto resultado dentro de tu bucle de predicción.

Filtrar objetos en las predicciones de YOLO11

Problema: Problemas con la forma de filtrar y mostrar sólo objetos específicos en los resultados de la predicción cuando se ejecuta YOLO11 utilizando la biblioteca Ultralytics .

Solución: Para detectar clases concretas, utiliza el argumento clases para especificar las clases que quieres incluir en la salida. Por ejemplo, para detectar sólo coches (suponiendo que "coches" tiene índice de clase 2):

yolo task=detect mode=segment model=yolo11n-seg.pt source='path/to/car.mp4' show=True classes=2

Comprender las métricas de precisión en YOLO11

Problema: Confusión sobre la diferencia entre precisión de la caja, precisión de la máscara y precisión de la matriz de confusión en YOLO11.

Solución: La precisión de las cajas mide la exactitud de las cajas delimitadoras predichas en comparación con las cajas reales utilizando IoU (Intersección sobre Unión) como métrica. La precisión de las máscaras evalúa la concordancia entre las máscaras de segmentación predichas y las máscaras reales en la clasificación de objetos por píxeles. La precisión de la matriz de confusión, en cambio, se centra en la precisión global de la clasificación en todas las clases y no tiene en cuenta la precisión geométrica de las predicciones. Es importante señalar que un cuadro delimitador puede ser geométricamente preciso (verdadero positivo) aunque la predicción de la clase sea errónea, lo que da lugar a diferencias entre la precisión del cuadro y la precisión de la matriz de confusión. Estas métricas evalúan aspectos distintos del rendimiento de un modelo, lo que refleja la necesidad de diferentes métricas de evaluación en diversas tareas.

Extraer las dimensiones de los objetos en YOLO11

Problema: Dificultad para recuperar la longitud y la altura de los objetos detectados en YOLO11, especialmente cuando se detectan varios objetos en una imagen.

Solución: Para recuperar las dimensiones de los recuadros delimitadores, utiliza primero el modelo Ultralytics YOLO11 para predecir objetos en una imagen. A continuación, extrae la información de anchura y altura de los recuadros delimitadores de los resultados de la predicción.

from ultralytics import YOLO

# Load a pre-trained YOLO11 model
model = YOLO("yolo11n.pt")

# Specify the source image
source = "https://ultralytics.com/images/bus.jpg"

# Make predictions
results = model.predict(source, save=True, imgsz=320, conf=0.5)

# Extract bounding box dimensions
boxes = results[0].boxes.xywh.cpu()
for box in boxes:
    x, y, w, h = box
    print(f"Width of Box: {w}, Height of Box: {h}")

Desafíos de la implantación

GPU Problemas de despliegue

Problema: Desplegar modelos en un entorno multiGPU puede provocar a veces comportamientos inesperados, como un uso inesperado de la memoria, resultados incoherentes entre GPUs, etc.

Solución: Comprueba la inicialización por defecto de GPU . Algunos frameworks, como PyTorch, pueden inicializar las operaciones de CUDA en un GPU por defecto antes de pasar a las GPU designadas. Para evitar inicializaciones predeterminadas inesperadas, especifica directamente el GPU durante la implantación y la predicción. Después, utiliza herramientas para controlar la utilización de GPU y el uso de memoria para identificar cualquier anomalía en tiempo real. Además, asegúrate de que estás utilizando la última versión del framework o de la biblioteca.

Problemas de conversión/exportación de modelos

Problema: Durante el proceso de conversión o exportación de modelos de aprendizaje automático a diferentes formatos o plataformas, los usuarios pueden encontrarse con errores o comportamientos inesperados.

Solución:

  • Comprobación de compatibilidad: Asegúrate de que utilizas versiones de bibliotecas y frameworks compatibles entre sí. Las versiones no coincidentes pueden provocar errores inesperados durante la conversión.

  • Reinicio del entorno: Si utilizas un entorno interactivo como Jupyter o Colab, considera la posibilidad de reiniciar tu entorno después de realizar cambios o instalaciones importantes. Un nuevo comienzo a veces puede resolver problemas subyacentes.

  • Documentación oficial: Consulta siempre la documentación oficial de la herramienta o biblioteca que utilices para la conversión. A menudo contiene directrices específicas y buenas prácticas para la exportación de modelos.

  • Apoyo de la comunidad: Busca en el repositorio oficial de la biblioteca o del framework problemas similares comunicados por otros usuarios. Los mantenedores o la comunidad pueden haber proporcionado soluciones o soluciones provisionales en hilos de discusión.

  • Actualízate regularmente: Asegúrate de que utilizas la última versión de la herramienta o biblioteca. Los desarrolladores publican con frecuencia actualizaciones que corrigen errores conocidos o mejoran la funcionalidad.

  • Prueba de forma incremental: Antes de realizar una conversión completa, prueba el proceso con un modelo o conjunto de datos más pequeño para identificar posibles problemas desde el principio.

Comunidad y apoyo

Participar en una comunidad de personas con ideas afines puede mejorar significativamente tu experiencia y tu éxito al trabajar con YOLO11. A continuación encontrarás algunos canales y recursos que pueden resultarte útiles.

Foros y canales para obtener ayuda

Problemas en GitHub: El repositorio de YOLO11 en GitHub tiene una pestaña Cuestiones donde puedes hacer preguntas, informar de errores y sugerir nuevas funciones. La comunidad y los mantenedores están activos aquí, y es un gran lugar para obtener ayuda con problemas específicos.

Ultralytics Servidor Discord: Ultralytics tiene un servidor Discord donde puedes interactuar con otros usuarios y con los desarrolladores.

Documentación y recursos oficiales

Ultralytics Documentación de YOLO11: La documentación oficial ofrece una visión completa de YOLO11, junto con guías sobre su instalación, uso y resolución de problemas.

Estos recursos deberían proporcionarte una base sólida para solucionar problemas y mejorar tus proyectos YOLO11, así como para conectar con otros miembros de la comunidad YOLO11.

Conclusión

La resolución de problemas es una parte integral de cualquier proceso de desarrollo, y estar equipado con los conocimientos adecuados puede reducir significativamente el tiempo y el esfuerzo dedicados a resolver problemas. Esta guía pretende abordar los problemas más comunes a los que se enfrentan los usuarios del modelo YOLO11 dentro del ecosistema Ultralytics . Si comprendes y abordas estos problemas comunes, podrás garantizar un progreso más fluido del proyecto y conseguir mejores resultados en tus tareas de visión por ordenador.

Recuerda que la comunidad Ultralytics es un recurso valioso. Colaborar con otros desarrolladores y expertos puede proporcionarte ideas y soluciones adicionales que podrían no estar incluidas en la documentación estándar. Sigue aprendiendo, experimentando y compartiendo tus experiencias para contribuir al conocimiento colectivo de la comunidad.

¡Feliz resolución de problemas!

PREGUNTAS FRECUENTES

¿Cómo resuelvo los errores de instalación con YOLO11?

Los errores de instalación pueden deberse a menudo a problemas de compatibilidad o a que faltan dependencias. Asegúrate de utilizar Python 3.8 o posterior y de tener instalado PyTorch 1.8 o posterior. Es conveniente utilizar entornos virtuales para evitar conflictos. Para una guía de instalación paso a paso, sigue nuestra guía oficial de instalación. Si encuentras errores de importación, intenta una nueva instalación o actualiza la biblioteca a la última versión.

¿Por qué el entrenamiento de mi modelo YOLO11 es lento en un solo GPU?

El entrenamiento en una sola GPU puede ser lento debido a los grandes tamaños de los lotes o a una memoria insuficiente. Para acelerar el entrenamiento, utiliza varias GPU. Asegúrate de que tu sistema dispone de varias GPUs y ajusta tu .yaml archivo de configuración para especificar el número de GPUs, por ejemplo, gpus: 4. Aumenta el tamaño del lote en consecuencia para utilizar plenamente las GPUs sin sobrepasar los límites de memoria. Ejemplo de comando:

model.train(data="/path/to/your/data.yaml", batch=32, multi_scale=True)

¿Cómo puedo asegurarme de que mi modelo YOLO11 está entrenando en GPU?

Si el valor "dispositivo" aparece como "nulo" en los registros de entrenamiento, generalmente significa que el proceso de entrenamiento está configurado para utilizar automáticamente un GPU disponible. Para asignar explícitamente un GPU específico, establece el valor 'dispositivo' en tu .yaml archivo de configuración. Por ejemplo:

device: 0

Esto establece el proceso de entrenamiento en el primer GPU. Consulta la nvidia-smi para confirmar la configuración de CUDA .

¿Cómo puedo controlar y seguir mi progreso en el entrenamiento del modelo YOLO11?

El seguimiento y la visualización del progreso del entrenamiento pueden gestionarse eficazmente mediante herramientas como TensorBoard, Comety Ultralytics HUB. Estas herramientas te permiten registrar y visualizar métricas como pérdida, precisión, recuerdo y mAP. Aplicar una parada temprana basada en estas métricas también puede ayudar a conseguir mejores resultados de entrenamiento.

¿Qué debo hacer si YOLO11 no reconoce el formato de mi conjunto de datos?

Asegúrate de que tu conjunto de datos y etiquetas se ajustan al formato esperado. Comprueba que las anotaciones son precisas y de calidad. Si tienes algún problema, consulta la guía de Recogida de datos y an otaciones para conocer las mejores prácticas. Para obtener más orientación específica sobre conjuntos de datos, consulta la sección Conjuntos de datos de la documentación.

📅 C reado hace 1 año ✏️ Actualizado hace 1 mes

Comentarios