Перейти к содержанию

Comet

YOLOv5 с Comet

В этом руководстве будет рассказано, как использовать YOLOv5 с Comet, мощным инструментом для отслеживания, сравнения и оптимизации экспериментов машинного обучения.

О Comet

Comet разрабатывает инструменты, которые помогают специалистам по анализу данных, инженерам и руководителям команд ускорять и оптимизировать модели машинного обучения и глубокого обучения.

Отслеживайте и визуализируйте метрики модели в реальном времени, сохраняйте свои гиперпараметры, наборы данных и контрольные точки модели, а также визуализируйте прогнозы своей модели с помощью Comet Custom Panels! Comet гарантирует, что вы никогда не потеряете ход своей работы, и позволяет легко обмениваться результатами и сотрудничать между командами любого размера!

Начало работы

Установите Comet

pip install comet_ml

Настройка учетных данных 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

[comet]
api_key=YOUR_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.

Пользовательский интерфейс Comet с обучением YOLOv5

Попробуйте пример!

Ознакомьтесь с примером завершенного запуска здесь.

Или, что еще лучше, попробуйте сами в этой Colab Notebook:

Открыть в Colab

Автоматическое протоколирование

По умолчанию Comet будет регистрировать следующие элементы:

Метрики

  • Потери ограничивающего прямоугольника, потери объекта, потери классификации для обучения и данных валидации
  • Метрики mAP_0.5, mAP_0.5:0.95 для данных валидации
  • Точность и Полнота для данных валидации

Параметры

  • Гиперпараметры модели
  • Все параметры, переданные через параметры командной строки

Визуализации

  • Матрица ошибок предсказаний модели на проверочных данных
  • Графики кривых 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 Обнаружение объектов Пользовательская панель. Эта частота соответствует каждому N-му пакету данных на эпохи. В приведенном ниже примере мы регистрируем каждый второй пакет данных для каждой эпохи.

Примечание: Dataloader валидации YOLOv5 по умолчанию использует размер пакета, равный 32, поэтому вам потребуется соответствующим образом настроить частоту логирования.

Вот пример проекта, использующего Panel

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

Вы можете найти загруженный набор данных на вкладке Artifacts в вашей рабочей области Comet:

Вкладка артефактов Comet

Вы можете просмотреть данные непосредственно в пользовательском интерфейсе Comet:

Предварительный просмотр данных Comet

Артефакты версионируются, а также поддерживают добавление метаданных о наборе данных. Comet автоматически регистрирует метаданные из вашего набора данных. yaml файл:

Метаданные артефактов Comet

Использование сохраненного артефакта

Если вы хотите использовать набор данных из Comet Artifacts, установите path variable в вашем наборе данных yaml файл, чтобы указать следующий URL-адрес ресурса Artifact:

# Contents of artifact.yaml file
path: "comet://WORKSPACE_NAME>/ARTIFACT_NAME:ARTIFACT_VERSION_OR_ALIAS"

Затем передайте этот файл вашему скрипту обучения следующим образом:

python train.py \
  --img 640 \
  --batch 16 \
  --epochs 5 \
  --data artifact.yaml \
  --weights yolov5s.pt

Артефакты также позволяют отслеживать происхождение данных по мере их прохождения через ваш экспериментальный рабочий процесс. Здесь вы можете увидеть граф, показывающий все эксперименты, в которых использовался загруженный вами набор данных:

Граф происхождения артефактов Comet

Возобновление обучения модели

Если ваш процесс обучения прерван по какой-либо причине, например, из-за разрыва интернет-соединения, вы можете возобновить его, используя resume флаг и путь запуска Comet.

Путь запуска имеет следующий формат comet://WORKSPACE_NAME/PROJECT_NAME/EXPERIMENT_ID.

Это восстановит запуск в состояние до прерывания, которое включает в себя восстановление модели из контрольной точки, восстановление всех гиперпараметров и аргументов обучения, а также загрузку артефактов набора данных Comet, если они использовались в исходном запуске. Возобновленный запуск продолжит запись в существующий эксперимент в пользовательском интерфейсе Comet:

python train.py \
  --resume "comet://YOUR_RUN_PATH"

Поиск гиперпараметров с помощью Comet Optimizer

YOLOv5 также интегрирован с Comet's Optimizer, что упрощает визуализацию перебора гиперпараметров в Comet UI.

Настройка перебора оптимизатора

Чтобы настроить 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. Если вы хотите передать дополнительные аргументы в sweep, просто добавьте их после скрипта:

python utils/loggers/comet/hpo.py \
  --comet_optimizer_config "utils/loggers/comet/optimizer_config.json" \
  --save-period 1 \
  --bbox_interval 1

Визуализация результатов

Comet предоставляет несколько способов визуализации результатов вашего эксперимента. Взгляните на проект с завершенным экспериментом здесь.

Визуализация гиперпараметров Comet



📅 Создано 1 год назад ✏️ Обновлено 1 месяц назад

Комментарии