Как использовать Ultralytics YOLOv5 с Comet
Узнай, как Ultralytics сотрудничает с Comet для оптимизации моделей Ultralytics YOLOv5: отслеживание в реальном времени, эффективная совместная работа и повышенная воспроизводимость.
Nuvola Ladi5 мин. чтения
В Ultralytics мы сотрудничаем с другими стартапами на коммерческой основе, чтобы финансировать исследования и разработку наших инструментов с открытым исходным кодом, таких как YOLOv5, и сохранять их бесплатными для всех. Эта статья может содержать партнерские ссылки на этих партнеров.
Наш новый партнёр, Comet, разрабатывает инструменты, которые помогают специалистам по данным, инженерам и руководителям команд ускорять и оптимизировать модели машинного и глубокого обучения.
Comet — мощный инструмент для отслеживания моделей, наборов данных и метрик. Он также записывает переменные системы и среды, обеспечивая воспроизводимость и упрощая отладку каждого запуска. Отслеживай метрики модели и визуализируй их в реальном времени, сохраняй гиперпараметры, наборы данных и контрольные точки модели, а также визуализируй предсказания модели с помощью пользовательских панелей Comet!
Кроме того, Comet помогает не терять результаты работы, легко делиться ими и сотрудничать с командами любого размера!
YOLOv5 — отличная отправная точка в мире компьютерного зрения. Чтобы повысить производительность модели и подготовить её к использованию в production, нужно записывать результаты в инструмент отслеживания экспериментов, например Comet.
Интеграция Comet и YOLOv5 предлагает 3 основные возможности:
- Автоматическое журналирование и возможность настраивать журналирование
- Сохранение наборов данных и моделей в виде артефактов для отладки и обеспечения воспроизводимости
- Настройка представления с помощью пользовательских панелей Comet
В этом руководстве рассказывается, как использовать YOLOv5 с Comet.
Готов отслеживать эксперименты в реальном времени? Начнём!
Начало работы#
1. Установи Comet#
pip install comet_ml2. Настрой учётные данные Comet#
Настроить Comet для работы с YOLOv5 можно двумя способами.
Можно указать учётные данные в переменных среды или создать файл .comet.config в рабочем каталоге и указать их в нём.
Переменные среды#
export COMET_API_KEY=<Your API Key>
export COMET_PROJECT_NAME=<Your Comet Project Name> # This will default to 'yolov5'Файл конфигурации Comet#
[comet]
api_key=<Your API Key>
project_name=<Your Comet Project Name> # This will default to 'yolov5'3. Запусти скрипт обучения#
# Train YOLOv5s on COCO128 for 5 epochs
python train.py --img 640 --batch 16 --epochs 5 --data coco128.yaml --weights yolov5s.ptВот и всё!
Comet автоматически записывает гиперпараметры, аргументы командной строки, метрики обучения и валидации. В интерфейсе Comet можно визуализировать и анализировать запуски.

Попробуй сам!#
Посмотри пример завершённого запуска.
А ещё лучше — попробуй сам в блокноте YOLOv5 для Colab.
Автоматическое журналирование#
По умолчанию Comet записывает следующие данные:
Метрики#
- Потери для BBox, объектов и классификации на обучающих и валидационных данных
- Метрики mAP50, mAP50-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=<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 для обнаружения объектов. Частота задаёт, какой по счёту пакет данных записывается в каждой эпохе. В примере ниже записывается каждый второй пакет данных каждой эпохи.
Примечание: по умолчанию загрузчик валидационных данных 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#
Чтобы хранить данные с помощью артефактов 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 автоматически запишет метаданные из YAML-файла набора данных.

Использование сохранённого артефакта#
Если хочешь использовать набор данных из Comet Artifacts, укажи в YAML-файле набора данных переменную path, содержащую 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Артефакты также позволяют отслеживать происхождение данных по мере их прохождения через рабочий процесс экспериментов. Здесь можно посмотреть граф со всеми экспериментами, в которых использовался загруженный набор данных.

Возобновление обучения#
Если обучение прервалось по какой-либо причине, например из-за проблем с интернет-соединением, его можно возобновить с помощью флага resume и пути запуска Comet.
Путь запуска имеет следующий формат: comet://<your workspace name>/<your project name>/<experiment id>.
Это восстановит состояние запуска на момент перед прерыванием: модель будет восстановлена из контрольной точки, все гиперпараметры и аргументы обучения будут возвращены к прежним значениям, а артефакты датасета Comet будут загружены, если они использовались в исходном запуске. Возобновлённый запуск продолжит записывать данные в существующий эксперимент в интерфейсе Comet.
python train.py \
--resume "comet://<your run path>"Поиск гиперпараметров с помощью Comet Optimizer#
YOLOv5 также интегрирован с Comet Optimizer, поэтому визуализировать перебор гиперпараметров в интерфейсе 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. Чтобы передать дополнительные аргументы в sweep, просто добавь их после скрипта.
python utils/loggers/comet/hpo.py \
--comet_optimizer_config "utils/loggers/comet/optimizer_config.json" \
--save-period 1 \
--bbox_interval 1Параллельный запуск перебора#
comet optimizer -j <num_workers> utils/loggers/comet/hpo.py \
utils/loggers/comet/optimizer_config.jsonComet предлагает множество способов визуализировать результаты sweep. Посмотри на проект с завершённым sweep:

Оставайся на связи#
Начни использовать нашу интеграцию с Comet, чтобы управлять моделями YOLOv5, визуализировать их и оптимизировать — от запусков обучения до мониторинга в эксплуатации.
И, конечно, присоединяйся к сообществу Ultralytics — здесь можно задавать вопросы и делиться советами по обучению, валидации и развёртыванию YOLOv5.
Автор
Комментарии
Задай вопрос, поделись результатами или помоги кому-нибудь.










