YOLOv5 с Comet
В этом руководстве рассказывается о том, как использовать YOLOv5 с Cometмощным инструментом для отслеживания, сравнения и оптимизации экспериментов в области машинного обучения.
О сайте Comet
Comet Создает инструменты, которые помогают ученым, инженерам и руководителям групп ускорить и оптимизировать модели машинного обучения и глубокого обучения.
Отслеживайте и визуализируйте показатели модели в реальном времени, сохраняйте гиперпараметры, наборы данных и контрольные точки модели, а также визуализируйте прогнозы модели с помощью пользовательских панелейComet ! Comet гарантирует, что вы никогда не потеряете контроль над своей работой, и позволяет легко делиться результатами и сотрудничать в командах любого размера!
Начало работы
Установите Comet
Настройка Comet Учетные данные
Существует два способа настройки Comet с помощью YOLOv5.
Вы можете задать свои учетные данные через переменные окружения:
Переменные среды
export COMET_API_KEY=YOUR_API_KEY
export COMET_PROJECT_NAME=YOUR_COMET_PROJECT_NAME # This will default to 'yolov5'
Или создайте .comet.config
файл в рабочем каталоге и установите там свои учетные данные:
Comet Файл конфигурации
Запустите сценарий обучения
# 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="yolov5" # 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=30 # 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="last.pt" # 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, 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"
Затем передайте этот файл вашему обучающему скрипту следующим образом:
Артефакты также позволяют отслеживать историю данных по мере их прохождения через рабочий процесс экспериментов. Здесь вы можете увидеть график, показывающий все эксперименты, в которых использовался загруженный вами набор данных:
Возобновление тренировочного забега
Если ваша тренировка прервалась по какой-либо причине, например, из-за разрыва соединения с Интернетом, вы можете возобновить ее, используя resume
флаг и Comet Run Path.
Путь выполнения имеет следующий формат comet://WORKSPACE_NAME/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 предоставляет несколько способов визуализации результатов зачистки. Взгляните на проект с завершенной зачисткой здесь.