Saltar al contenido

Comet

YOLOv5 con Comet

En esta guía se explica cómo utilizar YOLOv5 con Comet

Acerca de Comet

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

Sigue y visualiza las métricas del modelo en tiempo real, guarda tus hiperparámetros, conjuntos de datos y puntos de control del modelo, y visualiza las predicciones de tu modelo con los paneles personalizados deComet . Comet se asegura de que nunca pierdas la pista de tu trabajo y facilita el intercambio de resultados y la colaboración entre equipos de todos los tamaños.

Cómo empezar

Instala Comet

pip install comet_ml

Configura las credenciales de Comet

Hay dos formas de configurar Comet con YOLOv5.

Puedes establecer tus credenciales mediante variables de entorno

Variables de entorno

export COMET_API_KEY=<Your Comet API Key>
export COMET_PROJECT_NAME=<Your Comet Project Name> # This will default to 'yolov5'

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

Comet Archivo de configuración

[comet]
api_key=<Your Comet 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, los argumentos de la línea de comandos y las métricas de entrenamiento y validación. Puedes visualizar y analizar tus ejecuciones en la interfaz de usuario Comet

yolo-ui

¡Prueba un ejemplo!

Echa un vistazo a un ejemplo de una carrera completada aquí

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

Abrir en Colab

Registra automáticamente

Por defecto, Comet registrará los siguientes elementos

Métricas

  • Pérdida de caja, Pérdida de objeto, Pérdida de clasificación para los datos de entrenamiento y validación
  • mAP_0,5, métrica 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 de las curvas PR y F1 de todas las clases
  • Correlograma de las etiquetas de clase

Configura Comet Registro

Comet puede configurarse para que registre datos adicionales mediante indicadores 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=<your model name> #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=<number of allowed images to upload to Comet> # 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=<your checkpoint filename> # 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, pasa la opción save-period 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

Predicciones del modelo de registro

Por defecto, las predicciones del modelo (imágenes, etiquetas de la verdad básica y cuadros delimitadores) se registrarán en Comet.

Puedes controlar la frecuencia de las predicciones registradas y las imágenes asociadas pasando la opción bbox_interval argumento de la línea de comandos. Las predicciones pueden visualizarse utilizando el Panel Personalizado de Detección de Objetos de Comet. Esta frecuencia corresponde a cada enésimo lote de datos por época. En el ejemplo siguiente, estamos registrando uno de cada dos lotes de datos por cada época.

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

He aquí 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

Controlar el 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. Por defecto, se registra un máximo de 100 imágenes de validación. Puedes aumentar o disminuir este número utilizando el botón 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 de nivel de clase

Utiliza 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

Subir un conjunto de datos a Comet Artifacts

Si quieres almacenar tus datos utilizando Comet Artefactospuedes hacerlo utilizando upload_dataset bandera.

El conjunto de datos debe organizarse de la forma descrita en el YOLOv5 documentación. La 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

Puedes encontrar el conjunto de datos cargado en la pestaña Artefactos de tu espacio de trabajo Comet . artefacto-1

Puedes previsualizar los datos directamente en la IU de Comet . artefacto-2

Los artefactos están versionados y también permiten añadir metadatos sobre el conjunto de datos. Comet registrará automáticamente los metadatos de tu conjunto de datos. yaml archivo artefacto-3

Utilizar un artefacto guardado

Si quieres utilizar un conjunto de datos de Comet Artifacts, establece la opción path variable en tu conjunto de datos yaml para que apunte a la siguiente URL del recurso Artefacto.

# contents of artifact.yaml file
path: "comet://<workspace name>/<artifact name>:<artifact version or alias>"

A continuación, 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 seguir 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. artefacto-4

Reanudar una carrera de entrenamiento

Si tu carrera de entrenamiento se interrumpe por cualquier motivo, por ejemplo, si se interrumpe la conexión a Internet, puedes reanudarla utilizando el botón resume y la ruta de ejecución Comet .

La Ruta de ejecución tiene el siguiente formato comet://<your workspace name>/<your 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 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 Comet

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

Configurar un barrido del optimizador

Para configurar el Optimizador 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"

En hpo.py acepta los mismos argumentos que train.py. Si deseas pasar argumentos adicionales a tu barrido, sólo tienes que añadirlos 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

Ejecutar un barrido en paralelo

comet optimizer -j <set number of workers> utils/loggers/comet/hpo.py \
  utils/loggers/comet/optimizer_config.json"

Visualizar los resultados

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

hiperparámetro-yolo



Creado 2023-11-12, Actualizado 2024-01-07
Autores: glenn-jocher (3), RizwanMunawar (1)

Comentarios