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

Узнайте, как Ultralytics сотрудничает с Comet для оптимизации модели Ultralytics YOLOv5: отслеживание в реальном времени, оптимизация совместной работы и повышение воспроизводимости.
В Ultralytics мы коммерчески сотрудничаем с другими стартапами, чтобы помочь нам финансировать исследования и разработки наших замечательных инструментов с открытым исходным кодом, таких как YOLOv5, чтобы они оставались бесплатными для всех. Эта статья может содержать партнерские ссылки на этих партнеров.
Наш новый партнер, Comet, разрабатывает инструменты, которые помогают специалистам по обработке данных, инженерам и руководителям команд ускорять и оптимизировать модели машинного и глубокого обучения.
Comet — это мощный инструмент для отслеживания ваших моделей, наборов данных и метрик. Он даже регистрирует переменные вашей системы и среды, чтобы обеспечить воспроизводимость и плавную отладку для каждого запуска. Это как иметь виртуального помощника, который волшебным образом знает, какие заметки нужно вести. Отслеживайте и визуализируйте метрики модели в режиме реального времени, сохраняйте свои гиперпараметры, наборы данных и контрольные точки модели, а также визуализируйте прогнозы своей модели с помощью Comet Custom Panels!
Кроме того, Comet гарантирует, что вы никогда не потеряете результаты своей работы, и позволяет легко делиться результатами и сотрудничать в командах любого размера!
YOLOv5 — отличная отправная точка для вашего путешествия в мир компьютерного зрения. Чтобы улучшить производительность вашей модели и подготовить ее к производству, вам необходимо регистрировать результаты в инструменте отслеживания экспериментов, таком как Comet.
Интеграция Comet и YOLOv5 предлагает 3 основные функции:
В этом руководстве рассказывается, как использовать YOLOv5 с Comet.
Итак, готовы отслеживать свои эксперименты в режиме реального времени? Давайте начнем!
Pip install comet_ml
Существует два способа настройки Comet с помощью YOLOv5.
Вы можете установить свои учетные данные через переменные среды или создать файл .comet.config в своем рабочем каталоге и установить свои учетные данные там.
export COMET_API_KEY=export COMET_PROJECT_NAME= # По умолчанию будет использоваться 'yolov5'
[comet] api_key= project_name=<Your Comet API Key># This will default to 'yolov5'
# Обучение YOLOv5s на COCO128 в течение 5 эпохpython train.py --img 640 --batch 16 --epochs 5 --data coco128.yaml --weights yolov5s.pt
Вот и все!
Comet автоматически регистрирует ваши гиперпараметры, аргументы командной строки, метрики обучения и валидации. Вы можете визуализировать и анализировать свои запуски в пользовательском интерфейсе Comet.
Посмотрите пример завершенного запуска здесь.
Или, что еще лучше, попробуйте сами в этом блокноте Colab.
По умолчанию 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 отключено по умолчанию. Чтобы включить его, передайте аргумент 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
При регистрации прогнозов из 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, вы можете сделать это, используя флаг 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 набора данных, чтобы она указывала на следующий URL-адрес ресурса Artifact.
# содержимое файла artifact.yaml path: "comet:///:"
Затем передайте этот файл вашему скрипту обучения следующим образом:
python train.py \--img 640 \--batch 16 \--epochs 5 \--data artifact.yaml \--weights yolov5s.pt
Артефакты также позволяют отслеживать происхождение данных по мере их прохождения через ваш рабочий процесс экспериментов. Здесь вы можете увидеть график, показывающий все эксперименты, в которых использовался загруженный вами набор данных.
Если ваш процесс обучения прерван по какой-либо причине, например, из-за разрыва интернет-соединения, вы можете возобновить процесс, используя флаг resume и путь Comet Run.
Путь запуска имеет следующий формат: comet:////.
Это позволит восстановить состояние запуска до прерывания, включая восстановление модели из контрольной точки, восстановление всех гиперпараметров и аргументов обучения, а также загрузку артефактов набора данных Comet, если они использовались в исходном запуске. Возобновленный запуск продолжит ведение журнала в существующем эксперименте в пользовательском интерфейсе Comet.
python train.py \--resume "comet://"
YOLOv5 также интегрирован с Comet's Optimizer, что упрощает визуализацию перебора гиперпараметров в Comet UI.
Чтобы настроить 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 utils/loggers/comet/hpo.py \utils/loggers/comet/optimizer_config.json"
Comet предоставляет множество способов визуализации результатов вашей развертки. Взгляните на проект с завершенной разверткой здесь:
Начните использовать нашу интеграцию с Comet для управления, визуализации и оптимизации ваших моделей YOLOv5 — от тренировочных прогонов до мониторинга в рабочей среде.
И, конечно же, присоединяйтесь к сообществу Ultralytics – месту, где можно задавать вопросы и делиться советами по обучению, валидации и развертыванию YOLOv5.