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

В Ultralytics мы сотрудничаем с другими стартапами на коммерческой основе, чтобы финансировать исследования и разработку наших замечательных инструментов с открытым исходным кодом, таких как YOLOv5, и сохранять их бесплатными для всех. Эта статья может содержать партнерские ссылки на эти компании.
Наш новейший партнер, Comet, создает инструменты, которые помогают дата-сайентистам, инженерам и тимлидам ускорять и оптимизировать модели машинного и глубокого обучения.
Comet — мощный инструмент для отслеживания твоих моделей, датасетов и метрик. Он даже записывает системные переменные и переменные окружения, чтобы обеспечить воспроизводимость и удобную отладку каждого запуска. Это как иметь виртуального помощника, который волшебным образом знает, какие заметки вести. Отслеживай и визуализируй метрики моделей в реальном времени, сохраняй гиперпараметры, датасеты и чекпоинты моделей, а также визуализируй предсказания модели с помощью Comet Custom Panels!
Кроме того, Comet гарантирует, что ты никогда не потеряешь результаты своей работы, и позволяет легко делиться ими и сотрудничать командам любого размера!
YOLOv5 — отличная отправная точка для твоего пути в компьютерном зрении. Чтобы улучшить производительность модели и подготовить ее к продакшену, тебе нужно логировать результаты в инструменте отслеживания экспериментов вроде Comet.
Интеграция Comet и YOLOv5 предлагает 3 основные функции:
- Функции автоматического и пользовательского логирования
- Сохранение наборов данных и моделей в виде артефактов для отладки и обеспечения воспроизводимости
- Организация твоего рабочего пространства с помощью пользовательских панелей Comet
В этом руководстве мы расскажем, как использовать YOLOv5 с Comet.
Итак, готов отслеживать свои эксперименты в реальном времени? Давай начнем!
Начало работы#
Установи Comet#
pip install comet_mlНастрой учетные данные 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'Запусти скрипт обучения#
# 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 будет логировать следующие элементы:
Метрики#
- Box Loss, Object Loss и Classification Loss для данных обучения и валидации
- Метрики mAP_0.5 и mAP_0.5:0.95 для данных валидации
- Precision и Recall для данных валидации
Параметры#
- Гиперпараметры модели
- Все параметры, переданные через опции командной строки
Визуализации#
- Матрица ошибок (Confusion Matrix) для прогнозов модели на валидационных данных
- Графики кривых 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Логирование прогнозов модели#
По умолчанию прогнозы модели (изображения, метки ground truth и ограничивающие рамки) будут логироваться в Comet. Ты можешь контролировать частоту логирования прогнозов и связанных с ними изображений, передав аргумент командной строки bbox_interval. Прогнозы можно визуализировать с помощью пользовательской панели Comet Object Detection. Эта частота соответствует каждому N-ному пакету (батчу) данных за эпоху. В примере ниже мы логируем каждый 2-й батч данных для каждой эпохи.
Примечание: Загрузчик валидационных данных YOLOv5 по умолчанию использует размер пакета (batch size) 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, 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 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 автоматически залогирует метаданные из твоего YAML-файла набора данных.

Использование сохраненного артефакта#
Если ты хочешь использовать набор данных из Comet Artifacts, установи переменную path в твоем YAML-файле набора данных, чтобы она указывала на следующий 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 Run Path.
Путь запуска (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, тебе нужно создать JSON-файл с информацией о переборе (sweep).
Пример файла предоставлен в 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.






