YOLOv5 с Comet
В этом руководстве мы расскажем о том, как использовать YOLOv5 с Comet
О сайте Comet
Comet Создает инструменты, которые помогают data-ученым, инженерам и руководителям команд ускорять и оптимизировать модели машинного обучения и глубокого обучения.
Отслеживай и визуализируй показатели модели в реальном времени, сохраняй свои гиперпараметры, наборы данных и контрольные точки модели, а также визуализируй предсказания модели с помощью 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 для тренировочных и проверочных данных
- mAP_0.5, mAP_0.5:0.95 метрики для валидационных данных.
- Precision и Recall для данных проверки
Параметры
- Гиперпараметры модели
- Все параметры, передаваемые через опции командной строки
Визуализации
- Матрица запутанности предсказаний модели на данных проверки
- Графики кривых 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
аргумент командной строки. Прогнозы можно визуализировать с помощью Comet'Object Detection Custom Panel'. Эта частота соответствует каждой N-й партии данных за эпоху. В примере ниже мы регистрируем каждую вторую порцию данных за каждую эпоху.
Примечание: По умолчанию даталоадер валидации YOLOv5 имеет размер партии 32, поэтому тебе придется настроить частоту записи логов соответствующим образом.
Вот пример проекта, в котором используется панель
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
Переменная окружения для регистрации mAP, precision, recall, f1 для каждого класса.
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 предоставляет несколько способов визуализировать результаты твоей зачистки. Посмотри на проект с завершенной зачисткой здесь