YOLOv5 с Comet
В этом руководстве рассказывается о том, как использовать YOLOv5 с Comet
О сайте Comet
Comet Создает инструменты, которые помогают ученым, инженерам и руководителям групп ускорить и оптимизировать модели машинного обучения и глубокого обучения.
Отслеживайте и визуализируйте показатели модели в реальном времени, сохраняйте гиперпараметры, наборы данных и контрольные точки модели, а также визуализируйте прогнозы модели с помощью пользовательских панелейComet . 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 регистрируются следующие данные
Метрики
- Потеря коробки, потеря объекта, потеря классификации для обучающих и проверочных данных
- 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's Обнаружение объектов Пользовательская панель. Эта частота соответствует каждой 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, точность, отзыв, 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, что позволяет легко визуализировать развертки гиперпараметров в пользовательском интерфейсе 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"
Сайт 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 предоставляет несколько способов визуализации результатов зачистки. Взгляните на проект с завершенной зачисткой здесь