Ir al contenido

Comet

YOLOv5 con Comet

Esta guía cubrirá cómo usar YOLOv5 con Comet, una poderosa herramienta para rastrear, comparar y optimizar experimentos de aprendizaje automático.

Acerca de Comet

Comet crea herramientas que ayudan a los científicos de datos, ingenieros y líderes de equipo a acelerar y optimizar los modelos de aprendizaje automático y aprendizaje profundo.

¡Realice un seguimiento y visualice las métricas del modelo en tiempo real, guarde sus hiperparámetros, conjuntos de datos y puntos de control del modelo, y visualice las predicciones de su modelo con Comet Custom Panels! ¡Comet garantiza que nunca pierda el rastro de su trabajo y facilita el intercambio de resultados y la colaboración entre equipos de todos los tamaños!

Empezando

Instalar Comet

pip install comet_ml

Configurar las credenciales de Comet

Hay dos maneras de configurar Comet con YOLOv5.

Puede configurar sus 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 crear un .comet.config archivo en su directorio de trabajo y establezca sus 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'

Ejecutar 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 sus hiperparámetros, argumentos de línea de comandos y métricas de entrenamiento y validación. Puede visualizar y analizar sus ejecuciones en la interfaz de usuario de Comet.

Interfaz de usuario de Comet con entrenamiento de YOLOv5

¡Prueba un ejemplo!

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

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

Abrir en Colab

Registrar automáticamente

De forma predeterminada, Comet registrará los siguientes elementos:

Métricas

  • Pérdida de la caja delimitadora, pérdida del objeto, pérdida de clasificación para los datos de entrenamiento y validación
  • métricas mAP_0.5, mAP_0.5:0.95 para los datos de validación
  • Precisión 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 la línea de comandos

Visualizaciones

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

Configurar el registro de Comet

Comet se puede configurar para registrar datos adicionales, ya sea a través de flags de línea de comandos pasados al script de entrenamiento o a través de 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 con Comet

El registro de modelos en Comet está desactivado por defecto. Para activarlo, pase el save-period argumento al script de entrenamiento. Esto guardará los puntos de control registrados en Comet basándose en el valor del 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 ground truth y cajas delimitadoras) se registrarán en Comet.

Puede controlar la frecuencia de las predicciones registradas y las imágenes asociadas pasando el bbox_interval argumento de la línea de comandos. Las predicciones se pueden visualizar utilizando el Detección de objetos Panel personalizado de Comet. Esta frecuencia corresponde a cada N-ésimo lote de datos por época. En el siguiente ejemplo, estamos registrando cada segundo lote de datos para cada época.

Nota: El dataloader de validación de YOLOv5 tendrá por defecto un tamaño de lote de 32, por lo que tendrá que establecer la frecuencia de registro en consecuencia.

Aquí hay 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 las predicciones de 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. Puede aumentar o disminuir este número utilizando el COMET_MAX_IMAGE_UPLOADS variable de entorno:

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

Utilice el COMET_LOG_PER_CLASS_METRICS variable de entorno para registrar mAP, precisión, recall, 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 a los artefactos de Comet

Si desea almacenar sus datos utilizando Artefactos de Comet, puede hacerlo utilizando el upload_dataset indicador.

El conjunto de datos debe organizarse como se describe en el 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 archivo.

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

Puede encontrar el conjunto de datos cargado en la pestaña Artifacts en su Comet Workspace:

Pestaña de artefactos de Comet

Puede obtener una vista previa de los datos directamente en la interfaz de usuario de Comet:

Vista previa de datos de Comet

Los artefactos están versionados y también admiten la adición de metadatos sobre el conjunto de datos. Comet registrará automáticamente los metadatos de su conjunto de datos yaml archivo:

Metadatos de artefactos de Comet

Uso de un artefacto guardado

Si desea utilizar un conjunto de datos de Comet Artifacts, establezca la path variable en su conjunto de datos yaml archivo 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, pase este archivo a su 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:

Gráfico de linaje de artefactos de Comet

Reanudación de una ejecución de entrenamiento

Si su ejecución de entrenamiento se interrumpe por alguna razón, por ejemplo, una interrupción de la conexión a Internet, puede reanudar la ejecución utilizando el resume indicador y la ruta de ejecución de Comet.

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

Esto restaurará la ejecución a su estado anterior 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 artefactos del conjunto de datos de Comet si se utilizaron en la ejecución original. La ejecución reanudada continuará registrándose 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 los barridos de hiperparámetros en la interfaz de usuario de Comet.

Configuración de un barrido del optimizador

Para configurar el optimizador de Comet, deberá 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 hpo.py script acepta los mismos argumentos que train.py. Si desea pasar argumentos adicionales a su barrido, simplemente añádalos 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 su barrido. Eche un vistazo a un proyecto con un barrido completado aquí.

Visualización de hiperparámetros de Comet



📅 Creado hace 1 año ✏️ Actualizado hace 2 meses

Comentarios