YOLO Vision 2026:

Comet ML logo for machine learning experiment tracking

YOLOv5 con Comet#

Esta guía cubre cómo usar YOLOv5 con Comet, una potente herramienta para realizar un seguimiento, comparar y optimizar experimentos de aprendizaje automático.

Acerca de Comet#

Comet crea herramientas que ayudan a científicos de datos, ingenieros y líderes de equipos a acelerar y optimizar modelos de machine learning y deep learning.

¡Haz un seguimiento y visualiza las métricas del modelo en tiempo real, guarda tus hiperparámetros, conjuntos de datos y puntos de control (checkpoints) del modelo, y visualiza las predicciones de tu modelo con los Comet Custom Panels! ¡Comet asegura que nunca pierdas de vista tu trabajo y facilita compartir resultados y colaborar en equipos de todos los tamaños!

Introducción#

Instala Comet#

pip install comet_ml

Configura las credenciales de Comet#

Existen dos formas de configurar Comet con YOLOv5.

Puedes configurar tus credenciales a través de variables de entorno:

Variables de entorno

export COMET_API_KEY=YOUR_API_KEY
export COMET_PROJECT_NAME=YOUR_COMET_PROJECT_NAME # This will default to 'yolov5'

O crea un archivo .comet.config en tu directorio de trabajo y configura tus credenciales allí:

Archivo de configuración de Comet

[comet]
api_key=YOUR_API_KEY
project_name=YOUR_COMET_PROJECT_NAME # This will default to 'yolov5'

Ejecuta el script de entrenamiento#

# Train YOLOv5s on COCO128 for 5 epochs
python train.py --img 640 --batch 16 --epochs 5 --data coco128.yaml --weights yolov5s.pt

¡Eso es todo! Comet registrará automáticamente tus hiperparámetros, argumentos de línea de comandos, y métricas de entrenamiento y validación. Puedes visualizar y analizar tus ejecuciones en la interfaz de usuario (UI) de Comet.

Comet dashboard showing YOLOv5 training metrics and experiment tracking

¡Prueba un ejemplo!#

Consulta un ejemplo de una ejecución completada aquí.

O mejor aún, pruébalo tú mismo en este Colab Notebook:

Open In Colab

Registro automático#

De forma predeterminada, Comet registrará los siguientes elementos:

Métricas#

  • Pérdida de caja (Box Loss), pérdida de objeto (Object Loss), pérdida de clasificación (Classification Loss) para los datos de entrenamiento y validación
  • Métricas mAP_0.5, mAP_0.5:0.95 para los datos de validación
  • Precision y Recall para los datos de validación

Parámetros#

  • Hiperparámetros del modelo
  • Todos los parámetros pasados a través de las opciones de línea de comandos

Visualizaciones#

  • Confusion Matrix de las predicciones del modelo en los datos de validación
  • Gráficos de las curvas PR y F1 para todas las clases
  • Correlograma de las etiquetas de clase

Configura el registro de Comet#

Comet puede configurarse para registrar datos adicionales, ya sea a través de flags de línea de comandos pasados al script de entrenamiento o mediante variables de entorno:

export COMET_MODE=online                           # Set whether to run Comet in 'online' or 'offline' mode. Defaults to online
export COMET_MODEL_NAME="yolov5"                   # Set the name for the saved model. Defaults to yolov5
export COMET_LOG_CONFUSION_MATRIX=false            # Set to disable logging a Comet Confusion Matrix. Defaults to true
export COMET_MAX_IMAGE_UPLOADS=30                  # Controls how many total image predictions to log to Comet. Defaults to 100.
export COMET_LOG_PER_CLASS_METRICS=true            # Set to log evaluation metrics for each detected class at the end of training. Defaults to false
export COMET_DEFAULT_CHECKPOINT_FILENAME="last.pt" # Set this if you would like to resume training from a different checkpoint. Defaults to 'last.pt'
export COMET_LOG_BATCH_LEVEL_METRICS=true          # Set this if you would like to log training metrics at the batch level. Defaults to false.
export COMET_LOG_PREDICTIONS=true                  # Set this to false to disable logging model predictions

Registro de puntos de control (checkpoints) con Comet#

El registro de modelos en Comet está desactivado de forma predeterminada. Para activarlo, pasa el argumento save-period al script de entrenamiento. Esto guardará los puntos de control registrados en Comet según el valor de intervalo proporcionado por save-period:

python train.py \
  --img 640 \
  --batch 16 \
  --epochs 5 \
  --data coco128.yaml \
  --weights yolov5s.pt \
  --save-period 1

Registro de predicciones del modelo#

Por defecto, las predicciones del modelo (imágenes, etiquetas de verdad terreno y cajas delimitadoras) se registrarán en Comet.

Puedes controlar la frecuencia de las predicciones registradas y las imágenes asociadas pasando el argumento de línea de comandos bbox_interval. Las predicciones se pueden visualizar utilizando el panel personalizado de Object Detection de Comet. Esta frecuencia corresponde a cada N-ésimo lote de datos por epoch. En el ejemplo siguiente, registramos cada segundo lote de datos para cada epoch.

Nota: El cargador de datos de validación de YOLOv5 tendrá un batch size predeterminado de 32, por lo que tendrás que configurar la frecuencia de registro en consecuencia.

Aquí tienes un proyecto de ejemplo que utiliza el panel

python train.py \
  --img 640 \
  --batch 16 \
  --epochs 5 \
  --data coco128.yaml \
  --weights yolov5s.pt \
  --bbox_interval 2

Control del número de imágenes de predicción registradas en Comet#

Al registrar predicciones desde YOLOv5, Comet registrará las imágenes asociadas a cada conjunto de predicciones. De forma predeterminada, se registra un máximo de 100 imágenes de validación. Puedes aumentar o disminuir este número utilizando la variable de entorno COMET_MAX_IMAGE_UPLOADS:

env COMET_MAX_IMAGE_UPLOADS=200 python train.py \
  --img 640 \
  --batch 16 \
  --epochs 5 \
  --data coco128.yaml \
  --weights yolov5s.pt \
  --bbox_interval 1

Registro de métricas a nivel de clase#

Usa la variable de entorno COMET_LOG_PER_CLASS_METRICS para registrar mAP, precision, recall y f1 para cada clase:

env COMET_LOG_PER_CLASS_METRICS=true python train.py \
  --img 640 \
  --batch 16 \
  --epochs 5 \
  --data coco128.yaml \
  --weights yolov5s.pt

Carga de un conjunto de datos en Comet Artifacts#

Si deseas almacenar tus datos usando Comet Artifacts, puedes hacerlo usando el indicador upload_dataset.

El conjunto de datos debe organizarse como se describe en la documentación de YOLOv5. El archivo de configuración del conjunto de datos yaml debe seguir el mismo formato que el del archivo coco128.yaml.

python train.py \
  --img 640 \
  --batch 16 \
  --epochs 5 \
  --data coco128.yaml \
  --weights yolov5s.pt \
  --upload_dataset

Puedes encontrar el conjunto de datos cargado en la pestaña Artifacts en tu espacio de trabajo de Comet:

Comet artifacts panel for dataset versioning

Puedes previsualizar los datos directamente en la interfaz de usuario de Comet:

Comet dataset preview and version history

Los artefactos tienen control de versiones y también admiten la adición de metadatos sobre el conjunto de datos. Comet registrará automáticamente los metadatos de tu archivo yaml del conjunto de datos:

Comet Artifact Metadata

Uso de un Artifact guardado#

Si deseas utilizar un conjunto de datos de Comet Artifacts, configura la variable path en tu archivo yaml del conjunto de datos para que apunte a la siguiente URL de recurso de Artifact:

# Contents of artifact.yaml file
path: "comet://WORKSPACE_NAME/ARTIFACT_NAME:ARTIFACT_VERSION_OR_ALIAS"

Luego, pasa este archivo a tu script de entrenamiento de la siguiente manera:

python train.py \
  --img 640 \
  --batch 16 \
  --epochs 5 \
  --data artifact.yaml \
  --weights yolov5s.pt

Los artefactos también te permiten rastrear el linaje de los datos a medida que fluyen a través de tu flujo de trabajo de experimentación. Aquí puedes ver un gráfico que te muestra todos los experimentos que han utilizado tu conjunto de datos cargado:

Comet Artifact Lineage Graph

Reanudación de una ejecución de entrenamiento#

Si tu ejecución de entrenamiento se interrumpe por cualquier motivo, por ejemplo, una conexión a internet interrumpida, puedes reanudarla usando el indicador resume y la ruta de ejecución (Run Path) de Comet.

La ruta de ejecución tiene el siguiente formato comet://WORKSPACE_NAME/PROJECT_NAME/EXPERIMENT_ID.

Esto restaurará la ejecución al estado previo a la interrupción, lo que incluye restaurar el modelo desde un punto de control, restaurar todos los hiperparámetros y argumentos de entrenamiento, y descargar los Artifacts del conjunto de datos de Comet si se utilizaron en la ejecución original. La ejecución reanudada continuará registrando en el experimento existente en la interfaz de usuario de Comet:

python train.py \
  --resume "comet://YOUR_RUN_PATH"

Búsqueda de hiperparámetros con el optimizador de Comet#

YOLOv5 también está integrado con el Optimizador de Comet, lo que facilita la visualización de barridos de hiperparámetros en la interfaz de usuario de Comet.

Configuración de un barrido del optimizador#

Para configurar el optimizador de Comet, tendrás que crear un archivo JSON con la información sobre el barrido. Se ha proporcionado un archivo de ejemplo en utils/loggers/comet/optimizer_config.json:

python utils/loggers/comet/hpo.py \
  --comet_optimizer_config "utils/loggers/comet/optimizer_config.json"

El script hpo.py acepta los mismos argumentos que train.py. Si deseas pasar argumentos adicionales a tu barrido, simplemente agrégalos después del script:

python utils/loggers/comet/hpo.py \
  --comet_optimizer_config "utils/loggers/comet/optimizer_config.json" \
  --save-period 1 \
  --bbox_interval 1

Visualización de resultados#

Comet ofrece varias formas de visualizar los resultados de tu barrido. Echa un vistazo a un proyecto con un barrido completado aquí.

Comet Hyperparameter Visualization

Colaboradores

Comentarios