Solución de problemas habituales de YOLO
Introducción
Esta guía sirve como ayuda integral para solucionar los problemas habituales que surgen al trabajar con YOLO26 en tus proyectos de Ultralytics. Resolver estos problemas puede ser pan comido con la orientación adecuada, lo que garantiza que tus proyectos sigan su curso sin retrasos innecesarios.
Watch: Ultralytics YOLO26 Common Issues | Installation Errors, Model Training Issues
Problemas comunes
Errores de instalación
Los errores de instalación pueden surgir por diversas razones, como versiones incompatibles, dependencias que faltan o configuraciones de entorno incorrectas. Primero, asegúrate de verificar lo siguiente:
- Estás usando Python 3.8 o una versión posterior, tal como se recomienda.
- Asegúrate de tener instalada la versión correcta de PyTorch (1.8 o posterior).
- Considera usar entornos virtuales para evitar conflictos.
- Sigue la guía de instalación oficial paso a paso.
Además, aquí tienes algunos problemas de instalación habituales a los que se enfrentan los usuarios, junto con sus respectivas soluciones:
-
Errores de importación o problemas de dependencias - Si recibes errores durante la importación de YOLO26 o tienes problemas relacionados con las dependencias, considera los siguientes pasos de solución de problemas:
-
Instalación desde cero: A veces, empezar con una instalación desde cero 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.
-
Actualiza regularmente: Asegúrate de usar la última versión de la biblioteca. Las versiones antiguas podrían no ser compatibles con las actualizaciones recientes, lo que puede provocar posibles conflictos o problemas.
-
Comprueba las dependencias: Verifica que todas las dependencias requeridas estén instaladas correctamente y que sean de versiones compatibles.
-
Revisa los cambios: Si inicialmente clonaste o instalaste una versión antigua, ten en cuenta que las actualizaciones importantes pueden afectar a la estructura o a las funcionalidades de la biblioteca. Consulta siempre la documentación oficial o los registros de cambios para comprender cualquier cambio importante.
-
Recuerda que mantener tus bibliotecas y dependencias actualizadas es fundamental para disfrutar de una experiencia fluida y sin errores.
-
-
Ejecución de YOLO26 en GPU - Si tienes problemas para ejecutar YOLO26 en la GPU, considera los siguientes pasos de solución de problemas:
-
Verifica la compatibilidad e instalación de CUDA: Asegúrate de que tu GPU sea compatible con CUDA y de que CUDA esté instalado correctamente. Usa el comando
nvidia-smipara comprobar el estado de tu GPU NVIDIA y la versión de CUDA. -
Comprueba la integración de PyTorch y CUDA: Asegúrate de que PyTorch pueda utilizar CUDA ejecutando
import torch; print(torch.cuda.is_available())en un terminal de Python. Si devuelve 'True', PyTorch está configurado para usar CUDA. -
Comprueba la compatibilidad de la GPU: El soporte para arquitecturas de GPU anteriores a Turing y capacidad de cómputo (SM) < 7.5 dejó de estar disponible desde cuDNN 9.11.0. Por lo tanto, si tienes una GPU más antigua, como una 1080Ti, es posible que debas usar una versión de PyTorch compilada con una versión anterior de CUDA/cuDNN. Puedes comprobar esto ejecutando
import torch; cap = torch.cuda.get_device_capability(0) if torch.cuda.is_available() else (0, 0); cudnn = torch.backends.cudnn.version() or 0; ok = "not compatible" if cudnn >= 91100 and (cap[0] < 7 or (cap[0] == 7 and cap[1] < 5)) else "should be ok"; print(f"Compute capability: SM {cap[0]}.{cap[1]}, cuDNN: {cudnn} => {ok}") -
Activación del entorno: Asegúrate de estar en el entorno correcto donde están instalados todos los paquetes necesarios.
-
Actualiza tus paquetes: Los paquetes desactualizados podrían no ser compatibles con tu GPU. Manténlos actualizados.
-
Configuración del programa: Comprueba si el programa o el código especifica el uso de la GPU. En YOLO26, esto podría estar en los ajustes o en la configuración.
-
Problemas durante el entrenamiento del modelo
Esta sección abordará los problemas comunes que surgen durante el entrenamiento y sus respectivas explicaciones y soluciones.
Verificación de los ajustes de configuración
Problema: No estás seguro de si los ajustes de configuración del archivo .yaml se están aplicando correctamente durante el entrenamiento del modelo.
Solución: Los ajustes de configuración del archivo .yaml deben aplicarse al usar la función model.train(). Para asegurarte de que estos ajustes se aplican correctamente, sigue estos pasos:
-
Confirma que la ruta a tu archivo de configuración
.yamles correcta. -
Asegúrate de pasar la ruta de tu archivo
.yamlcomo argumentodataal llamar amodel.train(), como se muestra a continuación:model.train(data="/path/to/your/data.yaml", batch=4)
Aceleración del entrenamiento con múltiples 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 la GPU. Para acelerar el entrenamiento con varias GPU, sigue estos pasos:
-
Asegúrate de tener varias GPU disponibles.
-
Modifica tu archivo de configuración
.yamlpara especificar el número de GPU que vas a usar, por ejemplo,gpus: 4. -
Aumenta el tamaño del lote en consecuencia para utilizar plenamente las múltiples GPU sin exceder los límites de memoria.
-
Modifica tu comando de entrenamiento para utilizar múltiples GPU:
# Adjust the batch size and other settings as needed to optimize training speed model.train(data="/path/to/your/data.yaml", batch=32)
Parámetros de monitorización continua
Problema: Quieres saber qué parámetros deben monitorizarse continuamente durante el entrenamiento, además de la pérdida (loss).
Solución: Aunque la pérdida es una métrica crucial que hay que vigilar, también es esencial realizar un seguimiento de otras métricas para la optimización del rendimiento del modelo. Algunas métricas clave que hay que vigilar durante el entrenamiento son:
- Precisión
- Recall
- Precisión media promedio (mAP)
Puedes acceder a estas métricas desde los registros de entrenamiento o utilizando herramientas como TensorBoard o wandb para la visualización. Implementar la parada anticipada (early stopping) basada en estas métricas puede ayudarte a conseguir mejores resultados.
Herramientas para realizar el seguimiento del progreso del entrenamiento
Problema: Buscas recomendaciones sobre herramientas para realizar el seguimiento del progreso del entrenamiento.
Solución: Para realizar el seguimiento 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 la pérdida, la precisión y mucho más. Puedes integrarlo con tu proceso de entrenamiento de YOLO26.
- Comet: Comet proporciona un kit de herramientas completo para el seguimiento y la comparación de experimentos. Te permite realizar un seguimiento de métricas, hiperparámetros e incluso pesos del modelo. La integración con modelos YOLO también es sencilla y te ofrece una visión completa de tu ciclo de experimentos.
- Plataforma Ultralytics: La Plataforma Ultralytics ofrece un entorno especializado para el seguimiento de modelos YOLO, proporcionándote una plataforma integral 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 es posible que quieras considerar las necesidades específicas de tu proyecto a la hora de elegir.
Cómo comprobar si el entrenamiento se está realizando en la GPU
Problema: El valor de 'device' en los registros de entrenamiento es 'null' y no estás seguro de si el entrenamiento se está realizando en la GPU.
Solución: Que el valor 'device' sea 'null' suele significar que el proceso de entrenamiento está configurado para utilizar automáticamente una GPU disponible, que es el comportamiento por defecto. Para asegurarte de que el entrenamiento se realice en una GPU específica, puedes establecer manualmente el valor 'device' en el índice de la GPU (por ejemplo, '0' para la primera GPU) en tu archivo de configuración .yaml:
device: 0Esto asignará explícitamente el proceso de entrenamiento a la GPU especificada. Si deseas entrenar en la CPU, establece 'device' en 'cpu'.
Mantén un ojo en la carpeta 'runs' para ver los registros y métricas y así monitorizar el progreso del entrenamiento de forma eficaz.
Consideraciones clave para un entrenamiento eficaz del modelo
Aquí tienes algunas cosas a tener en cuenta si te enfrentas a problemas relacionados con el entrenamiento del modelo.
Formato del conjunto de datos y etiquetas
- Importancia: Los cimientos de cualquier modelo de aprendizaje automático radican 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 cumplen el formato esperado. Es crucial verificar que las anotaciones sean precisas y de alta calidad. Unas anotaciones incorrectas o de baja calidad pueden descarrilar el proceso de aprendizaje del modelo, lo que daría lugar a resultados impredecibles.
Convergencia del modelo
- Importancia: Lograr la convergencia del modelo garantiza que el modelo ha aprendido lo suficiente de los datos de entrenamiento.
- Recomendación: Al entrenar un modelo 'desde cero', es vital asegurarse de que el modelo alcanza un nivel de convergencia satisfactorio. Esto podría requerir una mayor duración del entrenamiento, con más épocas, en comparación con cuando realizas un ajuste fino (fine-tuning) de 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 el modelo actualiza sus pesos durante el entrenamiento.
- Recomendación: Evalúa periódicamente si la tasa de aprendizaje y el tamaño del 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 obstaculizar el rendimiento del modelo.
Distribución de 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 regularmente la distribución de las 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.
Verificación cruzada con pesos preentrenados
- Importancia: Aprovechar los pesos preentrenados puede proporcionar un sólido punto de partida para el entrenamiento del modelo, especialmente cuando los datos son limitados.
- Recomendación: Como paso de diagnóstico, considera entrenar tu modelo usando 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' puede requerir más entrenamiento o ajustes.
Problemas relacionados con las predicciones del modelo
Esta sección abordará los problemas comunes que surgen durante la predicción del modelo.
Cómo obtener predicciones de recuadros delimitadores (bbox) con tu modelo personalizado YOLO26
Problema: Al ejecutar predicciones con un modelo YOLO26 personalizado, surgen retos con el formato y la visualización de las coordenadas del recuadro delimitador.
Solución:
-
Formato de coordenadas: YOLO26 proporciona las coordenadas del recuadro delimitador en valores de píxeles absolutos. Para convertirlas a coordenadas relativas (que van de 0 a 1), debes 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 del archivo: Para obtener el nombre del archivo de la imagen sobre la que estás realizando la predicción, accede a la ruta del archivo de imagen directamente desde el objeto de resultado dentro de tu bucle de predicción.
Filtrado de objetos en las predicciones de YOLO26
Problema: Enfrentas problemas sobre cómo filtrar y mostrar solo objetos específicos en los resultados de predicción al ejecutar YOLO26 usando la biblioteca Ultralytics.
Solución: Para detectar clases específicas usa el argumento classes para especificar las clases que quieres incluir en la salida. Por ejemplo, para detectar solo coches (suponiendo que 'coches' tienen el índice de clase 2):
yolo task=detect mode=segment model=yolo26n-seg.pt source='path/to/car.mp4' show=True classes=2Comprensión de las métricas de precisión en YOLO26
Problema: Confusión sobre la diferencia entre la precisión de recuadro (box), la precisión de máscara y la precisión de la matriz de confusión en YOLO26.
Solución: La precisión de recuadro mide la exactitud de los recuadros delimitadores predichos en comparación con los recuadros de verdad terrestre reales utilizando IoU (Intersection over Union) como métrica. La precisión de máscara evalúa la concordancia entre las máscaras de segmentación predichas y las máscaras de verdad terrestre en la clasificación de objetos a nivel de píxel. Por otro lado, la precisión de la matriz de confusión se centra en la precisión de la clasificación global en todas las clases y no tiene en cuenta la precisión geométrica de las predicciones. Es importante tener en cuenta que un recuadro delimitador puede ser geométricamente preciso (verdadero positivo) incluso si la predicción de la clase es errónea, lo que da lugar a diferencias entre la precisión de recuadro 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 utilizar diferentes métricas de evaluación en diversas tareas.
Extracción de las dimensiones de los objetos en YOLO26
Problema: Dificultad para recuperar la anchura y la altura de los objetos detectados en YOLO26, especialmente cuando se detectan varios objetos en una imagen.
Solución: Para recuperar las dimensiones del recuadro delimitador, utiliza primero el modelo YOLO26 de Ultralytics 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 pretrained YOLO26 model
model = YOLO("yolo26n.pt")
# Specify the source image
source = "https://ultralytics.com/images/bus.jpg"
# Make predictions
results = model.predict(source, save=True, imgsz=320, conf=0.25)
# 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 en el despliegue
Problemas de despliegue en GPU
Problema: Desplegar modelos en un entorno con múltiples GPU a veces puede dar lugar a comportamientos inesperados, como un uso de memoria inesperado, resultados incoherentes entre las GPU, etc.
Solución: Comprueba la inicialización por defecto de la GPU. Algunos marcos, como PyTorch, pueden inicializar las operaciones CUDA en una GPU por defecto antes de pasar a las GPU designadas. Para evitar inicializaciones por defecto inesperadas, especifica la GPU directamente durante el despliegue y la predicción. Después, utiliza herramientas para controlar el uso de la GPU y de la memoria para identificar cualquier anomalía en tiempo real. Además, asegúrate de estar usando la última versión del marco 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 encontrar errores o comportamientos inesperados.
Solución:
- Comprobación de compatibilidad: Asegúrate de que estás utilizando versiones de bibliotecas y marcos que sean compatibles entre sí. Las versiones que no coinciden pueden provocar errores inesperados durante la conversión.
- Reinicio del entorno: Si estás utilizando un entorno interactivo como Jupyter o Colab, considera 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 estés utilizando para la conversión. A menudo contiene directrices específicas y mejores prácticas para exportar modelos.
- Apoyo de la comunidad: Consulta el repositorio oficial de la biblioteca o marco de trabajo para ver problemas similares reportados por otros usuarios. Los mantenedores o la comunidad podrían haber proporcionado soluciones o alternativas en los hilos de discusión.
- Actualiza regularmente: Asegúrate de que estás utilizando la última versión de la herramienta o biblioteca. Los desarrolladores lanzan 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 soporte
Relacionarte con una comunidad de personas afines puede mejorar significativamente tu experiencia y éxito al trabajar con YOLO26. A continuación, te mostramos algunos canales y recursos que te pueden resultar útiles.
Foros y canales para obtener ayuda
GitHub Issues: El repositorio de YOLO26 en GitHub tiene una pestaña de Issues donde puedes hacer preguntas, informar de errores y sugerir nuevas funcionalidades. La comunidad y los mantenedores son activos aquí, y es un lugar estupendo para obtener ayuda con problemas específicos.
Servidor de Discord de Ultralytics: Ultralytics tiene un servidor de Discord donde puedes interactuar con otros usuarios y con los desarrolladores.
Documentación oficial y recursos
Documentación de Ultralytics YOLO26: La documentación oficial ofrece una visión general completa de YOLO26, junto con guías sobre instalación, uso y resolución de problemas.
Estos recursos deberían proporcionarte una base sólida para solucionar problemas y mejorar tus proyectos de YOLO26, así como para conectar con otras personas de la comunidad de YOLO26.
Conclusión
La resolución de problemas es una parte integral de cualquier proceso de desarrollo, y estar equipado con el conocimiento adecuado puede reducir significativamente el tiempo y el esfuerzo dedicados a resolver incidencias. Esta guía tiene como objetivo abordar los retos más comunes a los que se enfrentan los usuarios del modelo YOLO26 dentro del ecosistema de Ultralytics. Al entender y solucionar estos problemas comunes, puedes garantizar un progreso más fluido del proyecto y lograr mejores resultados con tus tareas de visión artificial.
Recuerda que la comunidad de Ultralytics es un recurso valioso. Interactuar con otros desarrolladores y expertos puede proporcionarte ideas y soluciones adicionales que podrían no estar cubiertas en la documentación estándar. Sigue siempre aprendiendo, experimentando y compartiendo tus experiencias para contribuir al conocimiento colectivo de la comunidad.
Preguntas frecuentes
¿Cómo resuelvo los errores de instalación con YOLO26?
Los errores de instalación a menudo pueden deberse a problemas de compatibilidad o a la falta de dependencias. Asegúrate de usar Python 3.8 o posterior y de tener instalado PyTorch 1.8 o posterior. Es beneficioso usar entornos virtuales para evitar conflictos. Para obtener 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 instalación limpia o actualiza la biblioteca a la versión más reciente.
¿Por qué mi modelo YOLO26 entrena lentamente en una sola GPU?
El entrenamiento en una sola GPU puede ser lento debido a tamaños de lote grandes o memoria insuficiente. Para acelerar el entrenamiento, utiliza varias GPU. Asegúrate de que tu sistema tenga varias GPU disponibles y ajusta tu archivo de configuración .yaml para especificar el número de GPU, por ejemplo, gpus: 4. Aumenta el tamaño del lote en consecuencia para utilizar completamente las GPU sin exceder los límites de memoria. Comando de ejemplo:
model.train(data="/path/to/your/data.yaml", batch=32)¿Cómo puedo asegurarme de que mi modelo YOLO26 está entrenando en la GPU?
Si el valor de 'device' aparece como 'null' en los registros de entrenamiento, generalmente significa que el proceso de entrenamiento está configurado para usar automáticamente una GPU disponible. Para asignar explícitamente una GPU específica, define el valor 'device' en tu archivo de configuración .yaml. Por ejemplo:
device: 0Esto configura el proceso de entrenamiento en la primera GPU. Consulta el comando nvidia-smi para confirmar tu configuración de CUDA.
¿Cómo puedo supervisar y realizar un seguimiento del progreso de entrenamiento de mi modelo YOLO26?
El seguimiento y la visualización del progreso de entrenamiento pueden gestionarse eficazmente mediante herramientas como TensorBoard, Comet y Ultralytics Platform. Estas herramientas te permiten registrar y visualizar métricas como la pérdida, la precisión, el recall y el mAP. Implementar la parada temprana basada en estas métricas también puede ayudar a lograr mejores resultados de entrenamiento.
¿Qué debo hacer si YOLO26 no reconoce el formato de mi conjunto de datos?
Asegúrate de que tu conjunto de datos y tus etiquetas se ajusten al formato esperado. Verifica que las anotaciones sean precisas y de alta calidad. Si tienes algún problema, consulta la guía de Recopilación y Anotación de Datos para conocer las mejores prácticas. Para obtener más orientación específica sobre conjuntos de datos, consulta la sección de Datasets en la documentación.