Как использовать Ultralytics YOLOv5 с Comet

Команда Ultralytics

5 минут чтения

11 октября 2022 г.

Узнайте, как Ultralytics сотрудничает с Comet для оптимизации модели Ultralytics YOLOv5: отслеживание в реальном времени, упрощенное сотрудничество и улучшенная воспроизводимость.

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

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

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

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

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

Интеграция Comet и YOLOv5 предлагает 3 основные функции:

  • Автоматическое ведение журнала и пользовательские функции ведения журнала
  • Сохранение наборов данных и моделей в качестве артефактов для отладки и воспроизводимости
  • Организация просмотра с помощью пользовательских панелей Comet


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

Ну что, готовы отслеживать свои эксперименты в режиме реального времени? Давайте начнем!

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

1. Установите Comet

Pip install comet_ml

2. Настройте учетные данные Comet

Существует два способа настройки Comet с YOLOv5.

Вы можете задать свои учетные данные через переменные окружения или создать файл .comet.config в рабочем каталоге и задать их там.


Переменные среды

export COMET_API_KEY=export COMET_PROJECT_NAME= # По умолчанию это будет 'yolov5'


Конфигурационный файл Comet

[comet] api_key= project_name=<Your Comet API Key># This will default to 'yolov5'

3. Запустите сценарий обучения

# Обучение YOLOv5s на COCO128 для 5 эпохspython train.py --img 640 --batch 16 --epochs 5 --data coco128.yaml --weights yolov5s.pt

Вот и все!

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

Эксперименты с YOLOv5 в Comet Dashboard

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

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

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

Автоматическое ведение журнала

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

Метрики

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

Параметры

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

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

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

Настройте ведение журнала Comet

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

export COMET_MODE=online # Установите, в каком режиме запускать Comet - 'online' или 'offline'. По умолчанию onlineexport COMET_MODEL_NAME= # Задайте имя для сохраненной модели. По умолчанию yolov5export COMET_LOG_CONFUSION_MATRIX=false # Установка отключения регистрации матрицы запутанности Comet. По умолчанию trueexport COMET_MAX_IMAGE_UPLOADS= # Контролирует, сколько всего предсказаний изображений нужно регистрировать в Comet. По умолчанию 100.export COMET_LOG_PER_CLASS_METRICS=true # Устанавливается для регистрации метрик оценки для каждого обнаруженного класса в конце обучения. По умолчанию falseexport COMET_DEFAULT_CHECKPOINT_FILENAME= # Установите это значение, если вы хотите возобновить обучение с другой контрольной точки. По умолчанию 'last.pt'export COMET_LOG_BATCH_LEVEL_METRICS=true # Установите это значение, если вы хотите регистрировать метрики тренировки на уровне партии. По умолчанию false.export COMET_LOG_PREDICTIONS=true # Установите значение false, чтобы отключить журналирование предсказаний модели.

Регистрация контрольных точек с помощью 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, поэтому вам придется установить соответствующую частоту регистрации.

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

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=200python 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

Если вы хотите хранить свои данные с помощью артефактов 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.

Вкладка "Артефакты кометы", YOLOv5

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

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

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

Метаданные журнала из YAML-файла в Comet, YOLOv5

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

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

# содержимое файла artifact.yaml Путь: "comet:///:"

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

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

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

Рабочий процесс экспериментов с кометами, YOLOv5

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

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

Путь выполнения имеет следующий формат comet:////.

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

python train.py \--resume "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 optimizer -j utils/loggers/comet/hpo.py \utils/loggers/comet/optimizer_config.json"

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

Визуализация результатов развертки в Comet, YOLOv5

Оставайтесь на связи

Начните использовать нашу интеграцию с Comet для управления, визуализации и оптимизации ваших моделей YOLOv5 - от тренировочных прогонов до мониторинга производства.

И, конечно, присоединяйтесь к сообществу Ultralytics - месту, где можно задать вопросы и поделиться советами по обучению, проверке и внедрению YOLOv5.

Давайте вместе построим будущее
искусственного интеллекта!

Начните свое путешествие в будущее машинного обучения

Начните бесплатно
Ссылка копируется в буфер обмена