Ultralytics YOLO27:
Get Started

Логотип Comet ML для отслеживания экспериментов машинного обучения

YOLOv5 с Comet#

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

О Comet#

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

Отслеживай и визуализируй метрики модели в реальном времени, сохраняй гиперпараметры, наборы данных и контрольные точки модели, а также визуализируй предсказания модели с помощью пользовательских панелей Comet! 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:

Открыть в 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_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-му пакету данных за эпоху. В примере ниже мы сохраняем каждый второй пакет данных на каждой эпохе.

Примечание: загрузчик валидационных данных YOLOv5 использует размер пакета вдвое больше, чем при обучении (32 для --batch 16), поэтому частоту журналирования нужно настроить соответственно.

Вот пример проекта с использованием панели.

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#

Если ты хочешь хранить данные с помощью артефактов 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, укажи в переменной path файла набора данных yaml следующий URL-адрес ресурса артефакта:

# 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, что упрощает визуализацию перебора гиперпараметров в интерфейсе 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 предлагает несколько способов визуализировать результаты перебора. Посмотри на проект с завершённым перебором.

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

Часто задаваемые вопросы#

  • Создай бесплатный аккаунт на comet.com, открой настройки аккаунта и скопируй API-ключ. Экспортируй его как COMET_API_KEY или сохрани в файл .comet.config рядом с train.py.

  • Да. Задай COMET_MODE=offline, чтобы сохранить эксперимент в локальном архиве, а затем загрузи его с помощью comet upload path/to/archive.zip.

  • Запись контрольных точек по умолчанию отключена. Передай --save-period 1 (или другой интервал) в train.py, и каждая сохранённая контрольная точка будет загружаться в эксперимент.

  • Скопируй путь запуска из интерфейса Comet и начни обучение с python train.py --resume "comet://WORKSPACE/PROJECT/EXPERIMENT_ID". YOLOv5 восстановит контрольную точку, гиперпараметры и все артефакты набора данных Comet, а затем продолжит вести журнал в том же эксперименте.

Комментарии