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

Comet

YOLOv5 с Comet

В этом руководстве рассказывается о том, как использовать YOLOv5 с Comet

О сайте Comet

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

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

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

Установите Comet

pip install comet_ml

Настройка 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 .

yolo-ui

Испытайте пример!

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

А еще лучше - попробуйте сами в этом блокноте Colab.

Open In 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 . артефакт-1

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

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

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

Если вы хотите использовать набор данных с сайта 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

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

Возобновление тренировочного забега

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

Путь выполнения имеет следующий формат comet://<your workspace name>/<your project name>/<experiment id>.

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

python train.py \
--resume "comet://<your run path>"

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

гиперпараметр -yolo

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

Комментарии