Meet YOLO26: next-gen vision AI.

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

Link to this sectionYOLOv5 с Comet#

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

Link to this sectionО Comet#

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

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

Link to this sectionНачало работы#

Link to this sectionУстановка Comet#

pip install comet_ml

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

Link to this sectionЗапуск скрипта обучения#

# 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 и отслеживанием экспериментов

Link to this sectionПопробуй пример!#

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

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

Open In Colab

Link to this sectionАвтоматическое логирование#

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

Link to this sectionМетрики#

  • Box Loss, Object Loss, Classification Loss для данных обучения и валидации
  • Метрики mAP_0.5, mAP_0.5:0.95 для данных валидации
  • Precision и Recall для данных валидации

Link to this sectionПараметры#

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

Link to this sectionВизуализации#

  • Матрица ошибок (Confusion Matrix) предсказаний модели на данных валидации
  • Графики для PR- и F1-кривых по всем классам
  • Коррелограмма меток классов

Link to this sectionНастройка логирования 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

Link to this sectionЛогирование контрольных точек (checkpoints) с помощью 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

Link to this sectionЛогирование предсказаний модели#

По умолчанию предсказания модели (изображения, метки ground truth и ограничивающие рамки/bbox) будут логироваться в Comet.

Ты можешь управлять частотой логирования предсказаний и связанных с ними изображений, передав аргумент командной строки bbox_interval. Предсказания можно визуализировать с помощью пользовательской панели Object Detection в Comet. Эта частота соответствует каждому N-му пакету данных на эпоху. В примере ниже мы логируем каждый 2-й пакет данных для каждой эпохи.

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

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

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

Link to this sectionУправление количеством изображений с предсказаниями, логируемыми в 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

Link to this sectionЛогирование метрик на уровне классов#

Используй переменную окружения 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

Link to this sectionЗагрузка набора данных в Comet Artifacts#

Если ты хочешь хранить свои данные с помощью Comet Artifacts, ты можешь сделать это с помощью флага upload_dataset.

Набор данных должен быть организован так, как описано в документации YOLOv5. Файл конфигурации yaml набора данных должен соответствовать формату файла coco128.yaml.

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

Ты можешь найти загруженный набор данных на вкладке Artifacts в своем рабочем пространстве (Workspace) Comet:

Панель артефактов Comet для версионирования наборов данных

Ты можешь просмотреть данные напрямую в интерфейсе Comet:

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

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

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

Link to this sectionИспользование сохраненного артефакта#

Если ты хочешь использовать набор данных из Comet Artifacts, установи переменную 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

Link to this sectionВозобновление процесса обучения#

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

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

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

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

Link to this sectionПоиск гиперпараметров с помощью Comet Optimizer#

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

Link to this sectionНастройка перебора (Sweep) оптимизатора#

Чтобы настроить 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

Link to this sectionВизуализация результатов#

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

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

Авторы

Комментарии