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.
Siga y visualice las métricas del modelo en tiempo real, guarde los hiperparámetros, los conjuntos de datos y los puntos de control del modelo, y visualice las predicciones del modelo con los paneles personalizados deComet . Comet le garantiza que nunca perderá la pista de su trabajo y facilita el intercambio de resultados y la colaboración entre equipos de todos los tamaños.
Primeros pasos
Instale Comet
Configure Comet Credenciales
Hay dos formas de configurar Comet con YOLOv5.
Puede establecer sus 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 crear un .comet.config
en su directorio de trabajo y establezca allí sus credenciales.
Comet Archivo de configuración
[comet]
api_key=<Your Comet API Key>
project_name=<Your Comet Project Name> # This will default to 'yolov5'
Ejecutar el script de formación
# Train YOLOv5s on COCO128 for 5 epochs
python train.py --img 640 --batch 16 --epochs 5 --data coco128.yaml --weights yolov5s.pt
Comet registrará automáticamente los hiperparámetros, los argumentos de la línea de comandos y las métricas de entrenamiento y validación. Puede visualizar y analizar sus ejecuciones en la interfaz de usuario de Comet .
Pruebe un ejemplo
Vea aquí un ejemplo de un recorrido completo
O mejor aún, pruébalo tú mismo en este Cuaderno Colab
Registro automático
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 recuperación de 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
Configure Comet Logging
Comet puede configurarse para que registre datos adicionales a través de indicadores de línea de comandos que se pasan 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=<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, pase el parámetro save-period
al script de entrenamiento. Esto guardará los puntos de control registrados en Comet basándose en 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
Predicciones del modelo de registro
Por defecto, las predicciones del modelo (imágenes, etiquetas de la verdad sobre el terreno y cuadros delimitadores) se registrarán en Comet.
Puede controlar la frecuencia de las predicciones registradas y las imágenes asociadas pasando el parámetro bbox_interval
en la línea de comandos. Las predicciones pueden visualizarse utilizando Comet's Detección de objetos Panel personalizado. Esta frecuencia corresponde a cada enésimo lote de datos por época. En el ejemplo siguiente, estamos registrando cada segundo lote de datos para 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 deberá configurar la frecuencia de registro en consecuencia.
He aquí un proyecto de ejemplo en el que se 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 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. Puede 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 a nivel de clase
Utiliza el COMET_LOG_PER_CLASS_METRICS
para registrar mAP, precisión, retiradaf1 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
Cómo cargar un conjunto de datos en Comet Artifacts
Si desea almacenar sus datos utilizando Comet Artefactospuede hacerlo utilizando la función upload_dataset
bandera.
El conjunto de datos se organizará 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
Encontrará el conjunto de datos cargado en la pestaña Artefactos de su espacio de trabajo Comet .
Puede previsualizar los datos directamente en la interfaz de usuario Comet .
Los artefactos se versionan 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
Utilizar un artefacto guardado
Si desea utilizar un conjunto de datos de Comet Artifacts, defina la opción path
en su conjunto de datos yaml
para que apunte a la siguiente URL de recursos de artefactos.
# contents of artifact.yaml file
path: "comet://<workspace name>/<artifact name>:<artifact version or alias>"
A continuación, pase este archivo a su script de entrenamiento de la siguiente manera
Los artefactos también le permiten rastrear el linaje de los datos a medida que fluyen a través de su flujo de trabajo de experimentación. Aquí puedes ver un gráfico que muestra todos los experimentos que han utilizado tu conjunto de datos cargado.
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 la funció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 la restauración del modelo desde un punto de control, la restauración de todos los hiperparámetros y argumentos de entrenamiento y la descarga de 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 .
Búsqueda de hiperparámetros con el optimizador 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 Comet , tendrá 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 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
Ejecutar un barrido en paralelo
comet optimizer -j <set number of workers> utils/loggers/comet/hpo.py \
utils/loggers/comet/optimizer_config.json"
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í.