YOLOv5 с Comet
В этом руководстве мы расскажем о том, как использовать YOLOv5 с Comet
О сайте Comet
Comet builds tools that help data scientists, engineers, and team leaders accelerate and optimize machine learning and deep learning models.
Отслеживай и визуализируй показатели модели в реальном времени, сохраняй свои гиперпараметры, наборы данных и контрольные точки модели, а также визуализируй предсказания модели с помощью Comet Custom Panels! Comet позволяет тебе никогда не терять контроль над своей работой и легко делиться результатами и сотрудничать в командах любого размера!
Начало работы
Установи Comet
Настрой Comet учетные данные
Есть два способа настроить Comet с помощью YOLOv5.
Ты можешь задать свои учетные данные либо через переменные окружения
Переменные окружения
export COMET_API_KEY=<Your Comet API Key>
export COMET_PROJECT_NAME=<Your Comet Project Name> # This will default to 'yolov5'
Или создай .comet.config
файл в твоей рабочей директории и установи там свои учетные данные.
Comet Файл конфигурации
[comet]
api_key=<Your Comet API Key>
project_name=<Your Comet Project Name> # This will default to 'yolov5'
Запустите сценарий тренировки
# Train YOLOv5s on COCO128 for 5 epochs
python train.py --img 640 --batch 16 --epochs 5 --data coco128.yaml --weights yolov5s.pt
Вот и все! Comet будет автоматически регистрировать твои гиперпараметры, аргументы командной строки, метрики обучения и проверки. Ты можешь визуализировать и анализировать свои прогоны в пользовательском интерфейсе Comet .
Испытай пример!
Посмотри пример завершенного заезда здесь
А еще лучше - попробуй сам в этом блокноте Colab.
Записывайся в журнал автоматически
По умолчанию Comet будет записывать в журнал следующие элементы
Метрика
- Box Loss, Object Loss, Classification Loss for the training and validation data
- mAP_0.5, mAP_0.5:0.95 метрики для валидационных данных.
- Precision и Recall для данных проверки
Параметры
- Гиперпараметры модели
- Все параметры, передаваемые через опции командной строки
Визуализации
- Confusion Matrix of the model predictions on the validation data
- Графики кривых PR и F1 для всех классов
- Коррелограмма меток классов
Настройте ведение журнала Comet
Comet можно настроить на регистрацию дополнительных данных либо через флаги командной строки, передаваемые тренировочному скрипту, либо через переменные окружения.
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
Регистрация контрольных точек с помощью Comet
Ведение журнала моделей на Comet по умолчанию отключено. Чтобы включить его, передай параметр save-period
аргумент в тренировочном скрипте. Это позволит сохранять зарегистрированные контрольные точки на Comet в зависимости от значения интервала, заданного параметром save-period
python train.py \
--img 640 \
--batch 16 \
--epochs 5 \
--data coco128.yaml \
--weights yolov5s.pt \
--save-period 1
Предсказания модели логгинга
По умолчанию предсказания модели (изображения, метки истинности и ограничительные рамки) будут записываться в журнал Comet.
Ты можешь управлять частотой регистрации предсказаний и связанных с ними изображений, передавая параметр bbox_interval
command line argument. Predictions can be visualized using Comet's Обнаружение объектов Custom Panel. This frequency corresponds to every Nth batch of data per epoch. In the example below, we are logging every 2nd batch of data for each epoch.
Note: The YOLOv5 validation dataloader will default to a batch size of 32, so you will have to set the logging frequency accordingly.
Вот пример проекта, в котором используется панель
python train.py \
--img 640 \
--batch 16 \
--epochs 5 \
--data coco128.yaml \
--weights yolov5s.pt \
--bbox_interval 2
Управление количеством изображений предсказаний, регистрируемых в журнале Comet
При регистрации предсказаний с сайта YOLOv5, Comet будут регистрироваться изображения, связанные с каждым набором предсказаний. По умолчанию в журнал записывается не более 100 проверочных изображений. Ты можешь увеличить или уменьшить это число с помощью команды 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
Регистрация показателей уровня класса
Используй COMET_LOG_PER_CLASS_METRICS
environment variable to log mAP, precision, recall, f1 for each class.
env COMET_LOG_PER_CLASS_METRICS=true python train.py \
--img 640 \
--batch 16 \
--epochs 5 \
--data coco128.yaml \
--weights yolov5s.pt
Загрузка набора данных на Comet Artifacts
Если ты хочешь хранить свои данные с помощью Comet АртефактыТы можешь сделать это с помощью upload_dataset
флаг.
Набор данных должен быть организован так, как описано в YOLOv5 документация. Конфигурация набора данных yaml
Файл должен иметь тот же формат, что и файл coco128.yaml
файл.
python train.py \
--img 640 \
--batch 16 \
--epochs 5 \
--data coco128.yaml \
--weights yolov5s.pt \
--upload_dataset
Загруженный набор данных ты можешь найти на вкладке "Артефакты" в своем рабочем пространстве Comet .
Ты можешь предварительно просмотреть данные прямо в пользовательском интерфейсе Comet .
Артефакты версионируются, а также поддерживают добавление метаданных о наборе данных. Comet будет автоматически регистрировать метаданные из твоего набора данных. yaml
файл
Использование сохраненного артефакта
Если ты хочешь использовать набор данных с сайта Comet Artifacts, установи path
переменная в твоем наборе данных yaml
файл, чтобы он указывал на следующий URL ресурса артефакта.
# contents of artifact.yaml file
path: "comet://<workspace name>/<artifact name>:<artifact version or alias>"
Затем передай этот файл в свой обучающий скрипт следующим образом
Артефакты также позволяют тебе проследить за тем, как данные проходят через твой рабочий процесс Experimentation. Здесь ты можешь увидеть график, который показывает все эксперименты, в которых использовался загруженный тобой набор данных.
Возобновление тренировочного забега
Если твоя тренировка прервалась по какой-либо причине, например, из-за разрыва интернет-соединения, ты можешь возобновить ее, используя resume
флаг и Comet Run Path.
Путь выполнения имеет следующий формат comet://<your workspace name>/<your project name>/<experiment id>
.
Это вернет прогон в состояние, в котором он находился до прерывания, что включает в себя восстановление модели из контрольной точки, восстановление всех гиперпараметров и аргументов обучения, а также загрузку артефактов набора данных Comet , если они использовались в исходном прогоне. Возобновленный прогон будет продолжать вести логи в существующем эксперименте в пользовательском интерфейсе Comet .
Поиск гиперпараметров с помощью оптимизатора Comet
YOLOv5 Он также интегрирован с Comet's Optimizer, что позволяет легко визуализировать развертки гиперпараметров в пользовательском интерфейсе Comet .
Настройка развертки оптимизатора
Чтобы настроить Comet Optimizer, тебе нужно будет создать JSON-файл с информацией о развертке. Пример файла был предоставлен в utils/loggers/comet/optimizer_config.json
python utils/loggers/comet/hpo.py \
--comet_optimizer_config "utils/loggers/comet/optimizer_config.json"
The hpo.py
Скрипт принимает те же аргументы, что и train.py
. Если ты хочешь передать дополнительные аргументы своей зачистке, просто добавь их после скрипта.
python utils/loggers/comet/hpo.py \
--comet_optimizer_config "utils/loggers/comet/optimizer_config.json" \
--save-period 1 \
--bbox_interval 1
Параллельное выполнение зачистки
comet optimizer -j <set number of workers> utils/loggers/comet/hpo.py \
utils/loggers/comet/optimizer_config.json"
Визуализация результатов
Comet предоставляет несколько способов визуализировать результаты твоей зачистки. Посмотри на проект с завершенной зачисткой здесь