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

В Ultralytics мы на коммерческой основе сотрудничаем с другими стартапами, чтобы финансировать исследования и разработку наших отличных инструментов с открытым исходным кодом, таких как YOLOv5, и сохранять их бесплатными для всех. Эта статья может содержать партнёрские ссылки на этих партнёров.
Наш новейший партнёр, Comet, разрабатывает инструменты, которые помогают специалистам по данным, инженерам и руководителям команд ускорять и оптимизировать модели машинного обучения и глубокого обучения.
Comet — мощный инструмент для отслеживания моделей, наборов данных и метрик. Он также записывает системные переменные и переменные окружения, чтобы обеспечить воспроизводимость и упростить отладку каждого запуска. Это всё равно что виртуальный ассистент, который каким-то образом знает, какие заметки нужно сохранять. Отслеживай и визуализируй метрики моделей в реальном времени, сохраняй гиперпараметры, наборы данных и контрольные точки моделей, а также визуализируй предсказания моделей с помощью Comet Custom Panels!
Кроме того, Comet помогает никогда не терять результаты работы и упрощает обмен результатами и совместную работу в командах любого размера!
YOLOv5 — отличная отправная точка для изучения компьютерного зрения. Чтобы повысить производительность модели и подготовить её к работе в продакшене, тебе потребуется записывать результаты в инструменте отслеживания экспериментов, таком как 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.

Попробуй сам!#
Посмотри пример завершённого запуска здесь.
А ещё лучше — попробуй сам в этом блокноте 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=<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 Object Detection. Эта частота соответствует каждому 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#
Если ты хочешь хранить данные с помощью 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 в твоём рабочем пространстве 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. Если ты хочешь передать дополнительные аргументы своему перебору, просто добавь их после скрипта.
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 предлагает множество способов визуализации результатов перебора. Посмотри проект с завершённым перебором здесь:

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









