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

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

Link to this sectionПопробуй сам!#
Ознакомься с примером завершенного запуска здесь.
Или, что еще лучше, попробуй сделать это самостоятельно в этом ноутбуке Colab.
Link to this sectionАвтоматическое логирование#
По умолчанию Comet будет логировать следующие элементы:
Link to this sectionМетрики#
- Box Loss, Object Loss и Classification Loss для данных обучения и валидации
- Метрики mAP_0.5 и mAP_0.5:0.95 для данных валидации
- Precision и Recall для данных валидации
Link to this sectionПараметры#
- Гиперпараметры модели
- Все параметры, переданные через опции командной строки
Link to this sectionВизуализации#
- Матрица ошибок (Confusion Matrix) для прогнозов модели на валидационных данных
- Графики кривых PR и F1 для всех классов
- Коррелограмма меток классов
Link to this sectionНастройка логирования 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 predictionsLink to this sectionЛогирование чекпоинтов в Comet#
Логирование моделей в Comet по умолчанию отключено. Чтобы включить его, передай аргумент save-period скрипту обучения. Это сохранит залогированные чекпоинты в Comet согласно значению интервала, указанному в save-period.
python train.py \
--img 640 \
--batch 16 \
--epochs 5 \
--data coco128.yaml \
--weights yolov5s.pt \
--save-period 1Link to this sectionЛогирование прогнозов модели#
По умолчанию прогнозы модели (изображения, метки 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 2Link to this sectionКонтроль количества прогнозируемых изображений, залогированных в 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 1Link to this sectionЛогирование метрик на уровне классов#
Используй переменную среды 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.ptLink to this sectionЗагрузка набора данных в 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-файла набора данных.

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

Link to this sectionВозобновление обучения#
Если твой процесс обучения был прерван по какой-либо причине, например, из-за сбоя интернет-соединения, ты можешь возобновить его, используя флаг resume и Comet Run Path.
The Run Path has the following format comet://<your workspace name>/<your project name>/<experiment id>.
Это восстановит состояние процесса перед прерыванием, что включает восстановление модели из чекпоинта, восстановление всех гиперпараметров и аргументов обучения, а также загрузку артефактов набора данных Comet, если они использовались в исходном запуске. Возобновленный запуск продолжит логирование в существующий эксперимент в интерфейсе Comet.
python train.py \
--resume "comet://<your run path>"Link to this sectionПоиск гиперпараметров с помощью оптимизатора Comet#
YOLOv5 также интегрирован с оптимизатором Comet, что упрощает визуализацию перебора гиперпараметров в интерфейсе Comet.
Link to this sectionНастройка перебора оптимизатора#
Чтобы настроить оптимизатор 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 1Link to this sectionПараллельный запуск перебора#
comet optimizer -j <num_workers> utils/loggers/comet/hpo.py \
utils/loggers/comet/optimizer_config.jsonComet предоставляет множество способов визуализации результатов твоего перебора. Взгляни на проект с завершенным перебором здесь:

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






