Solución de problemas comunes YOLO
Introducción
Esta guía es una ayuda completa para solucionar los problemas más comunes que surgen al trabajar con YOLO11 en sus proyectos de Ultralytics . Navegar por estos problemas puede ser pan comido con la orientación adecuada, asegurando que sus proyectos se mantengan en marcha sin retrasos innecesarios.
Observa: Ultralytics YOLO11 Problemas comunes | 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, falta de dependencias o configuración incorrecta del entorno. En primer lugar, compruebe que está haciendo lo siguiente:
- Estás utilizando Python 3.8 o posterior, como se recomienda.
- Asegúrese de que tiene instalada la versión correcta de PyTorch (1.8 o posterior).
- Considere la posibilidad de utilizar entornos virtuales para evitar conflictos.
- Sigue paso a paso la guía oficial de instalación.
Además, aquí hay algunos problemas comunes de instalación que los usuarios han encontrado, junto con sus respectivas soluciones:
-
Errores de importación o problemas de dependencias - Si obtiene errores durante la importación de YOLO11, o tiene problemas relacionados con las dependencias, considere los siguientes pasos para la solución de problemas:
-
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.
-
Compruebe las dependencias: Compruebe que todas las dependencias necesarias están correctamente instaladas y son de versiones compatibles.
-
Revise 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.
-
Recuerde que mantener actualizadas sus bibliotecas y dependencias es crucial para una experiencia fluida y sin errores.
-
-
Ejecutar YOLO11 en GPU - Si tiene problemas para ejecutar YOLO11 en GPU, considere los siguientes pasos para la solución de problemas:
-
Compruebe la compatibilidad y la instalación de CUDA: Asegúrese de que su GPU es compatible con CUDA y de que CUDA está correctamente instalado. Utilice la
nvidia-smi
para comprobar el estado de sus versiones NVIDIA GPU y CUDA . -
Compruebe PyTorch y CUDA Integración: Asegúrese de que PyTorch puede utilizar CUDA ejecutando
import torch; print(torch.cuda.is_available())
en un terminal Python . Si devuelve 'True', 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.
-
Actualice sus paquetes: Los paquetes obsoletos pueden no ser compatibles con su GPU. Manténgalos actualizados.
-
Configuración del programa: Compruebe si el programa o código especifica el uso de GPU . En YOLO11, esto podría estar en los ajustes o la configuración.
-
Cuestiones de formación de modelos
En esta sección se abordarán los problemas más comunes que se plantean durante la formación y sus respectivas explicaciones y soluciones.
Verificación de los ajustes de configuración
Edición: No está seguro de si los ajustes de configuración del .yaml
se aplican correctamente durante el entrenamiento del modelo.
Solución: Los parámetros de configuración del .yaml
cuando se utilice la función model.train()
función. Para asegurarse de que estos ajustes se aplican correctamente, siga estos pasos:
- Confirme que la ruta a su
.yaml
es correcto. - Asegúrese de pasar la ruta a su
.yaml
como el archivodata
al llamar amodel.train()
como se muestra a continuación:
Aceleración del entrenamiento con varias GPU
Problema: El entrenamiento es lento en una sola GPU, y quieres acelerar el proceso usando múltiples GPUs.
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úrese de que dispone 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 aprovechar al máximo las múltiples GPU sin sobrepasar los límites de memoria.
- Modifica tu comando de entrenamiento para utilizar múltiples GPUs:
# 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: Desea 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 de las métricas clave que hay que controlar durante el entrenamiento son:
- Precisión
- Recall
- Precisión media (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 basada en estas métricas puede ayudarte a conseguir mejores resultados.
Herramientas de seguimiento de la formación
Problema: Está buscando recomendaciones sobre herramientas para seguir el progreso de la formación.
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érdida, precisión y más. Puedes integrarlo con tu proceso de entrenamiento YOLO11 .
- Comet: Comet proporciona un amplio conjunto de herramientas para el seguimiento y la comparación de experimentos. Le permite rastrear métricas, hiperparámetros e incluso pesos de modelos. La integración con los modelos de YOLO también es sencilla, lo que le proporciona una visión completa de su ciclo de experimentos.
- Ultralytics HUB: Ultralytics HUB ofrece un entorno especializado para el seguimiento de modelos YOLO , proporcionándole una plataforma única para gestionar métricas, conjuntos de datos e incluso colaborar con su equipo. Dado que se centra en YOLO, ofrece opciones de seguimiento más personalizadas.
Cada una de estas herramientas ofrece sus propias ventajas, por lo que conviene tener en cuenta las necesidades específicas de su 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 formación es "nulo" y no está seguro de si la formación se está realizando en GPU.
Solución: Si el valor "device" es "null", significa que el proceso de formación está configurado para utilizar automáticamente un GPU disponible, que es el comportamiento predeterminado. Para asegurarse de que el entrenamiento se produce en un GPU específico, puede establecer manualmente el valor "device" en el índice GPU (por ejemplo, "0" para el primer GPU) en su archivo de configuración .yaml:
Esto asignará explícitamente el proceso de entrenamiento al GPU especificado. Si desea entrenar en CPU, establezca 'dispositivo' en 'cpu'.
Echa un vistazo a la carpeta de "carreras" para ver los registros y las métricas para supervisar eficazmente el progreso del entrenamiento.
Consideraciones clave para una formación eficaz de los modelos
A continuación le indicamos algunos aspectos que debe tener en cuenta si se enfrenta a problemas relacionados con la formación de modelos.
Formato y etiquetas de los conjuntos 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úrese de que su 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 y provocar resultados impredecibles.
Convergencia de modelos
- 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 la puesta a punto 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 actualiza el modelo sus pesos durante el entrenamiento.
- Recomendación: Evalúe periódicamente si la tasa de aprendizaje y el tamaño del lote elegidos son óptimos para su 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 por clases
- Importancia: La distribución de las clases en su conjunto de datos puede influir en las tendencias de predicción del modelo.
- Recomendación: Evalúe periódicamente la distribución de las clases en su conjunto de datos. Si hay un desequilibrio de clases, existe el riesgo de que el modelo desarrolle un sesgo hacia la clase más prevalente. 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, considere la posibilidad de entrenar su 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.
Cuestiones relacionadas con las predicciones de los modelos
En esta sección se abordarán los problemas más comunes a los que se enfrentan los modelos de predicción.
Obtención de predicciones Bounding Box con su modelo personalizado YOLO11
Problema: Al ejecutar predicciones con un modelo personalizado de YOLO11 , surgen 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 (de 0 a 1), hay que dividirlas por las dimensiones de la imagen. Por ejemplo, digamos que el tamaño de su imagen es 640x640. En ese caso, haga 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 de archivo de la imagen que está prediciendo, acceda a la ruta del archivo de imagen directamente desde el objeto de resultado dentro de su bucle de predicción.
Filtrado de objetos en YOLO11 Predicciones
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 específicas utilice el argumento clases para especificar las clases que desea incluir en la salida. Por ejemplo, para detectar sólo coches (suponiendo que 'coches' tiene índice de clase 2):
Comprender las métricas de precisión en YOLO11
Problema: Confusión sobre la diferencia entre precisión de caja, precisión de máscara y precisión de matriz de confusión en YOLO11.
Solución: La precisión de los recuadros mide la exactitud de los recuadros predichos en comparación con los recuadros 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, por su parte, 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.
Extracción de dimensiones de 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, utilice primero el modelo Ultralytics YOLO11 para predecir objetos en una imagen. A continuación, extraiga la información de anchura y altura de los cuadros 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}")
Retos de la implantación
GPU Problemas de implantación
Problema: El despliegue de modelos en un entorno multiGPU a veces puede dar lugar a comportamientos inesperados como el uso inesperado de memoria, resultados inconsistentes a través de 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 predeterminado antes de pasar a las GPU designadas. Para evitar inicializaciones predeterminadas inesperadas, especifique GPU directamente durante la implantación y la predicción. A continuación, utiliza herramientas para supervisar la utilización de GPU y el uso de la 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 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 estás utilizando versiones de librerías y frameworks compatibles entre sí. Las versiones no compatibles pueden provocar errores inesperados durante la conversión.
- Reinicio del entorno: Si utilizas 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: Consulte siempre la documentación oficial de la herramienta o biblioteca que utilice para la conversión. Suele contener directrices específicas y buenas prácticas para la exportación de modelos.
- Apoyo de la comunidad: Busca en el repositorio oficial de la librería o framework problemas similares reportados por otros usuarios. Es posible que los responsables o la comunidad hayan proporcionado soluciones o soluciones provisionales en hilos de discusión.
- Actualícese con regularidad: Asegúrese de que está utilizando la última versión de la herramienta o biblioteca. Los desarrolladores publican con frecuencia actualizaciones que corrigen errores conocidos o mejoran la funcionalidad.
- Realice pruebas graduales: Antes de realizar una conversión completa, pruebe 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 su experiencia y su éxito al trabajar con YOLO11. A continuación encontrará algunos canales y recursos que pueden resultarle útiles.
Foros y canales de ayuda
Problemas en GitHub: El repositorio YOLO11 en GitHub tiene una pestaña de Problemas donde puedes hacer preguntas, informar de 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.
Ultralytics Servidor Discord: Ultralytics tiene un servidor Discord donde puedes interactuar con otros usuarios y con los desarrolladores.
Documentación y recursos oficiales
Ultralytics YOLO11 Documentación: La documentación oficial ofrece una visión completa de YOLO11, junto con guías sobre la instalación, el uso y la resolución de problemas.
Estos recursos deberían proporcionar una base sólida para solucionar problemas y mejorar sus proyectos de YOLO11 , así como para conectar con otras personas de la comunidad de 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 la resolución de 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 . Al comprender y abordar estos problemas comunes, puede garantizar un progreso más fluido del proyecto y lograr mejores resultados con sus tareas de visión por ordenador.
Recuerde que la comunidad Ultralytics es un recurso valioso. Colaborar con otros desarrolladores y expertos puede aportar ideas y soluciones que quizá no estén recogidas 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 la falta de dependencias. Asegúrese 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 obtener una guía de instalación paso a paso, sigue nuestra guía de instalación oficial. Si encuentras errores de importación, intenta una nueva instalación o actualiza la biblioteca a la última versión.
¿Por qué es lento el entrenamiento de mi modelo YOLO11 en un único GPU?
El entrenamiento en una sola GPU puede ser lento debido a lotes de gran tamaño o a una memoria insuficiente. Para acelerar el entrenamiento, utilice varias GPU. Asegúrese de que su sistema dispone de varias GPU y ajuste su .yaml
archivo de configuración para especificar el número de GPUs, por ejemplo, gpus: 4
. Aumente el tamaño del lote en consecuencia para aprovechar al máximo las GPUs sin sobrepasar los límites de memoria. Ejemplo de comando:
¿Cómo puedo asegurarme de que mi modelo YOLO11 se está entrenando en GPU?
Si el valor de "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, establezca el valor 'device' en su .yaml
archivo de configuración. Por ejemplo:
Esto pone en marcha el proceso de formación en la primera GPU. Consulte el nvidia-smi
para confirmar la configuración de CUDA .
¿Cómo puedo controlar y seguir el progreso de mi formación en el modelo YOLO11 ?
El seguimiento y la visualización del progreso del entrenamiento pueden gestionarse eficazmente mediante herramientas como TensorBoard, Comety Ultralytics HUB. Estas herramientas permiten registrar y visualizar métricas como pérdida, precisión, recuperación y mAP. La implementación de la detención temprana basada en estas métricas también puede ayudar a lograr mejores resultados de formación.
¿Qué debo hacer si YOLO11 no reconoce el formato de mi conjunto de datos?
Asegúrese de que el conjunto de datos y las etiquetas se ajustan al formato previsto. Compruebe que las anotaciones son precisas y de calidad. Si tiene algún problema, consulte la guía de Recogida de datos y anotación para conocer las mejores prácticas. Para obtener más información sobre conjuntos de datos específicos, consulte la sección Conjuntos de datos de la documentación.