Solución de problemas comunes de YOLO#
Esta guía cubre los problemas más comunes con los que te encontrarás al trabajar con Ultralytics YOLO26, agrupados según dónde ocurren: installation, model training, prediction y deployment. Salta a la categoría que coincida con tu error, o consulta las FAQ para obtener respuestas rápidas. Cada entrada indica el problema y una solución concreta que puedes aplicar directamente.
Watch: Ultralytics YOLO26 Common Issues | Installation Errors, Model Training Issues
Problemas comunes#
Errores de instalación#
Los errores de instalación pueden surgir debido a varias razones, como versiones incompatibles, dependencias faltantes o configuraciones de entorno incorrectas. Primero, asegúrate de comprobar 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 el uso de entornos virtuales para evitar conflictos.
- Sigue la official installation guide paso a paso.
Además, aquí tienes soluciones a problemas de instalación habituales.
Muchos errores de importación, GPU y exportación se solucionan simplemente actualizando. Ejecuta pip install -U ultralytics y confirma que tus versiones de PyTorch y CUDA sean compatibles antes de realizar una depuración más profunda.
Errores de importación o problemas de dependencias#
Si obtienes errores al importar YOLO26 o te encuentras con conflictos de dependencias, prueba estos pasos:
- Instalación limpia: Empezar con una instalación desde cero puede resolver problemas inesperados, especialmente tras actualizaciones que cambien la estructura o funcionalidad del paquete.
- Actualiza regularmente: Utiliza la última versión de la librería, ya que versiones antiguas podrían no ser compatibles con las actualizaciones recientes.
- Comprueba las dependencias: Verifica que todas las dependencias requeridas estén instaladas correctamente y que sean versiones compatibles.
- Revisa los cambios: Si instalaste una versión anterior, consulta la documentación oficial o el registro de cambios para entender cualquier cambio estructural importante.
Ejecutar YOLO26 en GPU#
Si tienes problemas para ejecutar YOLO26 en una GPU, considera los siguientes pasos de resolució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é correctamente instalado. Utiliza 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. - 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. Mantenlos actualizados.
- Configuración del programa: Comprueba si tu código solicita el uso de GPU. Puedes configurar el argumento
deviceal ejecutar el entrenamiento o la predicción (por ejemplo,device=0).
El soporte para arquitecturas de GPU anteriores a Turing —con capacidad de cómputo (SM) inferior a 7.5, como la 1080 Ti— fue eliminado en cuDNN 9.11.0. En una GPU antigua, es posible que necesites una versión de PyTorch compilada con una versión anterior de CUDA/cuDNN. Comprueba tu configuración con:
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}")Problemas de entrenamiento del modelo#
A continuación se cubren los problemas comunes de entrenamiento y sus 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 utilizar 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
.yamlsea correcta. -
Asegúrate de pasar la ruta de tu archivo
.yamlcomo el argumentodataal llamar amodel.train(), tal como se muestra a continuación:model.train(data="/path/to/your/data.yaml", batch=4)
Acelerar el entrenamiento con múltiples GPU#
Problema: El entrenamiento es lento en una sola GPU y quieres acelerar el proceso utilizando múltiples GPU.
Solución: Aumentar el batch size puede acelerar el entrenamiento, pero es fundamental tener en cuenta la capacidad de memoria de la GPU. Para acelerar el entrenamiento con multiple GPUs, sigue estos pasos:
-
Asegúrate de tener múltiples GPU disponibles.
-
Configura el argumento
devicecon una lista de índices de GPU, por ejemplo,device=[0,1,2,3]. -
Aumenta el tamaño del lote (batch size) en consecuencia para utilizar completamente las múltiples GPU sin superar 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, device=[0, 1, 2, 3])
Parámetros de monitorización continua#
Problema: Quieres saber qué parámetros deben monitorizarse continuamente durante el entrenamiento, aparte de la pérdida (loss).
Solución: Aunque la pérdida es una métrica crucial que se debe monitorizar, también es esencial realizar un seguimiento de otras métricas para la optimización del rendimiento del modelo. Algunas métricas clave que debes monitorizar durante el entrenamiento incluyen:
- Precisión
- Recall
- Mean Average Precision (mAP)
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 (early stopping) basada en estas métricas puede ayudarte a obtener mejores resultados.
Herramientas para realizar el seguimiento del progreso del entrenamiento#
Problema: Estás buscando 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 las métricas de entrenamiento, incluyendo la pérdida, la accuracy y más. Puedes integrarlo con tu proceso de entrenamiento de YOLO26.
- Comet: Comet ofrece un amplio conjunto de herramientas para el seguimiento y la comparación de experimentos. Te permite rastrear métricas, hiperparámetros e incluso los pesos del modelo. La integración con los modelos YOLO también es sencilla, lo que te proporciona una visión general completa de tu ciclo de experimentos.
- Ultralytics Platform: Ultralytics Platform ofrece un entorno especializado para el seguimiento de modelos YOLO, proporcionándote una plataforma centralizada para gestionar métricas, conjuntos de datos e incluso colaborar con tu equipo. Dado su enfoque específico en YOLO, ofrece opciones de seguimiento más personalizadas.
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 de 'device' sea 'null' normalmente significa que el proceso de entrenamiento está configurado para seleccionar automáticamente una GPU disponible, que es el comportamiento predeterminado. Para entrenar en una GPU específica, configura el argumento device cuando inicies el entrenamiento. device es un argumento de entrenamiento, por lo que configurarlo en el archivo .yaml de tu conjunto de datos no tiene ningun efecto:
from ultralytics import YOLO
# Load a model
model = YOLO("yolo26n.pt")
# Use GPU 0; device=[0, 1] for multiple GPUs, device="cpu" for CPU
model.train(data="path/to/data.yaml", device=0)Vigila la carpeta 'runs' para ver los registros y métricas y monitorizar el progreso del entrenamiento de forma eficaz.
Consideraciones clave para un entrenamiento eficaz del modelo#
Aquí tienes algunas cosas que debes tener en cuenta si te enfrentas a problemas relacionados con el entrenamiento del modelo.
Formato y etiquetas del conjunto de datos
- Importancia: La base de cualquier modelo de machine learning radica 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 cumplan con 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 conduce a resultados impredecibles.
Convergencia del modelo
- Importancia: Lograr la convergencia del modelo garantiza que este ha aprendido lo suficiente a partir de los training data.
- Recomendación: Al entrenar un modelo 'desde cero', es fundamental asegurarse de que el modelo alcance un nivel satisfactorio de convergencia. Esto puede requerir una duración de entrenamiento más prolongada, con más epochs, en comparación con cuando ajustas (fine-tuning) un modelo existente.
Learning Rate y tamaño de 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 regularmente 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 frecuente. 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 punto de partida sólido 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' podría requerir más entrenamiento o ajustes.
Problemas relacionados con las predicciones del modelo#
A continuación se cubren los problemas comunes encontrados durante la predicción del modelo y sus soluciones.
Obtener predicciones de cuadros delimitadores con tu modelo personalizado YOLO26#
Problema: Al ejecutar predicciones con un modelo YOLO26 personalizado, existen desafíos con el formato y la visualización de las coordenadas del cuadro delimitador (bounding box).
Solución:
-
Formato de coordenadas: YOLO26 proporciona coordenadas de cuadros delimitadores en valores de píxeles absolutos. Para convertirlas a coordenadas relativas (que van de 0 a 1), debes dividir 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 en la que estás prediciendo, accede a la ruta del archivo de imagen directamente desde el objeto de resultado dentro de tu bucle de predicción.
Filtrar objetos en predicciones de YOLO26#
Problema: Te enfrentas a problemas sobre cómo filtrar y mostrar solo objetos específicos en los resultados de la predicción al ejecutar YOLO26 usando la biblioteca Ultralytics.
Solución: Para detectar clases específicas, usa el argumento de clases para especificar las clases que deseas incluir en la salida. Por ejemplo, para detectar solo coches (suponiendo que 'coches' tiene el índice de clase 2):
yolo task=segment mode=predict model=yolo26n-seg.pt source='path/to/car.mp4' show=True classes=2Entender las métricas de precisión en YOLO26#
Problema: Confusión sobre la diferencia entre la precisión de cajas (box precision), la precisión de máscaras (mask precision) y la precisión de la confusion matrix en YOLO26.
Solución: La precisión de cajas mide la exactitud de las cajas delimitadoras predichas en comparación con las cajas reales (ground truth) utilizando IoU (Intersection over Union) como métrica. La precisión de 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 a nivel de píxel. Por otro lado, la precisión de la matriz de confusión se centra en la precisión general de clasificación en todas las clases y no tiene en cuenta la precisión geométrica de las predicciones. Es importante destacar que un bounding box puede ser geométricamente preciso (verdadero positivo) incluso si la predicción de la clase es incorrecta, lo que genera diferencias entre la precisión de cajas y la precisión de la matriz de confusión. Estas métricas evalúan distintos aspectos del rendimiento de un modelo, reflejando la necesidad de diferentes métricas de evaluación en diversas tareas.
Extraer dimensiones de objetos en YOLO26#
Problema: Dificultad para recuperar la longitud y la altura de los objetos detectados en YOLO26, especialmente cuando se detectan múltiples objetos en una imagen.
Solución: Para recuperar las dimensiones de las cajas delimitadoras, utiliza primero el modelo Ultralytics YOLO26 para predict objects en una imagen. A continuación, extrae la información de anchura y altura de las cajas delimitadoras 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 de despliegue#
Problemas de despliegue en GPU#
Problema: Desplegar modelos en un entorno de múltiples GPU a veces puede provocar comportamientos inesperados como un uso de memoria imprevisto, resultados inconsistentes entre GPU, etc.
Solución: Comprueba la inicialización predeterminada de la GPU. Algunos marcos, como PyTorch, podrían inicializar operaciones de CUDA en una GPU predeterminada antes de pasar a las GPU designadas. Para evitar inicializaciones predeterminadas inesperadas, especifica la GPU directamente durante el despliegue y la predicción. Luego, utiliza herramientas para monitorizar la utilización de la GPU y el uso de memoria para identificar cualquier anomalía en tiempo real. Además, asegúrate de estar usando la versión más reciente del marco o la biblioteca.
Problemas de conversión/exportación de modelos#
Problema: Durante el proceso de convertir o exportar modelos de aprendizaje automático a diferentes formatos o plataformas, los usuarios pueden encontrar errores o comportamientos inesperados.
Solución: Revisa los formatos compatibles y las opciones por formato en la documentación de Export mode, y luego repasa estas comprobaciones:
- Comprobación de compatibilidad: Asegúrate de estar 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 significativas. 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 la exportación de modelos.
- Soporte de la comunidad: Comprueba el repositorio oficial de la biblioteca o el marco en busca de problemas similares reportados por otros usuarios. Es posible que los mantenedores o la comunidad hayan proporcionado soluciones o alternativas en hilos de discusión.
- Actualiza regularmente: Asegúrate de estar usando la versión más reciente de la herramienta o biblioteca. Los desarrolladores lanzan actualizaciones con frecuencia 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#
Obtén ayuda y comparte soluciones a través de estos canales y recursos.
Foros y canales para obtener ayuda#
GitHub Issues: El repositorio de YOLO26 en GitHub tiene una Issues tab donde puedes hacer preguntas, reportar errores y sugerir nuevas características. La comunidad y los mantenedores son activos aquí, y es un gran lugar para obtener ayuda con problemas específicos.
Servidor de Discord de Ultralytics: Ultralytics tiene un Discord server donde puedes interactuar con otros usuarios y con los desarrolladores.
Documentación y recursos oficiales#
Ultralytics YOLO26 Docs: La official documentation ofrece una visión general y completa de YOLO26, junto con guías sobre instalación, uso y resolución de problemas.
Conclusión#
La mayoría de los problemas en YOLO26 se deben a unas pocas causas: discrepancias de versiones, formato de los conjuntos de datos y configuración de la GPU. Cuando un error no esté cubierto aquí, busca en la pestaña GitHub Issues o pregunta en el Discord server; es muy probable que alguien ya lo haya resuelto. Para problemas más complejos de training, consulta la guía Model Training Tips para obtener consejos prácticos sobre cómo conseguir mejores resultados con tus proyectos de computer vision.
FAQ#
Los errores de instalación a menudo pueden deberse a problemas de compatibilidad o dependencias faltantes. Asegúrate de usar Python 3.8 o posterior y de tener instalado PyTorch 1.8 o posterior. Es útil utilizar entornos virtuales para evitar conflictos. Para obtener una guía de instalación paso a paso, sigue nuestra official installation guide. Si encuentras errores de importación, prueba una instalación limpia o actualiza la biblioteca a la versión más reciente.
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 disponga de varias GPU y configura el argumento
device, por ejemplo,device=[0,1,2,3]. Aumenta el tamaño del lote en consecuencia para aprovechar al máximo las GPU sin superar los límites de memoria. Comando de ejemplo:model.train(data="/path/to/your/data.yaml", batch=32, device=[0, 1, 2, 3])Si el valor de 'device' muestra 'null' en los registros de entrenamiento, generalmente significa que el proceso de entrenamiento está configurado para seleccionar automáticamente una GPU disponible. Para asignar explícitamente una GPU específica, pasa el argumento
deviceal iniciar el entrenamiento, por ejemployolo train data=path/to/data.yaml device=0para la primera GPU. Consulta el comandonvidia-smipara confirmar tu configuración de CUDA.El seguimiento y la visualización del progreso del entrenamiento se pueden gestionar de manera eficiente a través de herramientas como TensorBoard, Comet y Ultralytics Platform. Estas herramientas te permiten registrar y visualizar métricas como la pérdida, la precision, el recall y el mAP. La implementación de early stopping basada en estas métricas también puede ayudar a lograr mejores resultados en el entrenamiento.
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 Data Collection and Annotation para conocer las mejores prácticas. Para obtener más orientación específica sobre conjuntos de datos, consulta la sección Datasets en la documentación.