Настраивайтесь на YOLO Vision 2025!
25 сентября 2025 г.
10:00 — 18:00 BST
Гибридное мероприятие
Yolo Vision 2024

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

Команда Ultralytics

5 мин чтения

11 октября 2022 г.

Узнайте, как 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_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 эпохpython train.py --img 640 --batch 16 --epochs 5 --data coco128.yaml --weights yolov5s.pt

Вот и все!

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

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

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

Посмотрите пример завершенного запуска здесь.

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

Автоматическое протоколирование

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

Метрики

  • Box Loss, Object Loss и Classification Loss для данных обучения и валидации
  • Метрики mAP_0.5, mAP_0.5:0.95 для данных валидации
  • Точность и полнота для данных валидации

Параметры

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

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

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

Настройка логирования Comet

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

export COMET_MODE=online # Установите режим работы Comet: 'online' или 'offline'. По умолчанию используется onlineexport COMET_MODEL_NAME= #Установите имя для сохраненной модели. По умолчанию yolov5export COMET_LOG_CONFUSION_MATRIX=false # Установите значение 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-му пакету данных за эпоху. В приведенном ниже примере мы регистрируем каждый 2-й пакет данных для каждой эпохи.

Примечание: Загрузчик данных валидации YOLOv5 по умолчанию использует размер пакета 32, поэтому вам придется соответствующим образом настроить частоту логирования.

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

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 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 в своей рабочей области Comet.

Вкладка Comet Artifacts, YOLOv5

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

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

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

Протоколирование метаданных из YAML-файла в Comet, YOLOv5

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

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

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

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

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

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

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

Возобновление обучения

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

Путь запуска имеет следующий формат: comet:////.

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

python train.py \--resume "comet://"

Поиск гиперпараметров с помощью Comet Optimizer

YOLOv5 также интегрирован с Comet's Optimizer, что упрощает визуализацию перебора гиперпараметров в Comet UI.

Настройка оптимизации Sweep

Чтобы настроить 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

Параллельный запуск Sweep

comet optimizer -j utils/loggers/comet/hpo.py \utils/loggers/comet/optimizer_config.json"

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

Визуализируйте результаты sweep в Comet, YOLOv5

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

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

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

Давайте строить будущее
ИИ вместе!

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

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