Перейти к содержанию

Обучение моделей с помощью Ultralytics YOLO

Экосистема и интеграции Ultralytics YOLO

Введение

Обучение глубокой обучающей модели включает в себя подачу данных и настройку её параметров, так чтобы она могла делать точные прогнозы. Режим обучения в Ultralytics YOLOv8 предназначен для эффективного и результативного обучения моделей обнаружения объектов с полным использованием возможностей современной аппаратуры. Это руководство нацелено на описание всех деталей, необходимых для начала обучения ваших моделей с использованием богатого набора функций YOLOv8.



Смотреть: Как обучить модель YOLOv8 на вашем настраиваемом наборе данных в Google Colab.

Почему стоит выбрать Ultralytics YOLO для обучения?

Вот несколько убедительных причин использовать режим Train YOLOv8:

  • Эффективность: Используйте максимум возможностей вашего оборудования, будь то настройка с одним GPU или распределение нагрузки на несколько GPU.
  • Универсальность: Обучайте на настраиваемых наборах данных, помимо уже доступных, таких как COCO, VOC и ImageNet.
  • Дружелюбный интерфейс: Простой, но мощный интерфейс командной строки (CLI) и Python для прямолинейного опыта обучения.
  • Гибкость гиперпараметров: Широкий спектр настраиваемых гиперпараметров для тонкой настройки производительности модели.

Ключевые особенности режима Train

Вот некоторые заметные особенности режима Train YOLOv8:

  • Автоматическая загрузка набора данных: Стандартные наборы данных, такие как COCO, VOC и ImageNet, загружаются автоматически при первом использовании.
  • Поддержка многих GPU: Масштабируйте усилия по обучению без проблем на нескольких GPU, чтобы ускорить процесс.
  • Настройка гиперпараметров: Возможность изменения гиперпараметров через файлы конфигурации YAML или аргументы CLI.
  • Визуализация и мониторинг: Отслеживание метрик обучения в реальном времени и визуализация процесса обучения для лучшего понимания.

Совет

  • Наборы данных YOLOv8, такие как COCO, VOC, ImageNet и многие другие, автоматически загружаются при первом использовании, например, yolo train data=coco.yaml

Примеры использования

Обучение YOLOv8n на наборе данных COCO128 в течение 100 эпох с размером изображения 640. Устройство для обучения может быть указано с помощью аргумента device. Если аргумент не передан, будет использоваться GPU device=0, если доступен, в противном случае будет использоваться device=cpu. Смотрите раздел Аргументы ниже для полного списка аргументов обучения.

Пример обучения на одном GPU и CPU

Устройство определяется автоматически. Если доступен GPU, то он будет использован, иначе обучение начнется на CPU.

from ultralytics import YOLO

# Загрузить модель
model = YOLO('yolov8n.yaml')  # создать новую модель из YAML
model = YOLO('yolov8n.pt')  # загрузить предобученную модель (рекомендуется для обучения)
model = YOLO('yolov8n.yaml').load('yolov8n.pt')  # создать из YAML и перенести веса

# Обучить модель
results = model.train(data='coco128.yaml', epochs=100, imgsz=640)
# Создать новую модель из YAML и начать обучение с нуля
yolo detect train data=coco128.yaml model=yolov8n.yaml epochs=100 imgsz=640

# Начать обучение с предобученной модели *.pt
yolo detect train data=coco128.yaml model=yolov8n.pt epochs=100 imgsz=640

# Создать новую модель из YAML, перенести предобученные веса и начать обучение
yolo detect train data=coco128.yaml model=yolov8n.yaml pretrained=yolov8n.pt epochs=100 imgsz=640

Обучение на нескольких GPU

Обучение на нескольких GPU позволяет более эффективно использовать доступные аппаратные ресурсы, распределяя нагрузку по обучению на несколько GPU. Эта функция доступна как через Python API, так и через командный интерфейс. Чтобы включить обучение на нескольких GPU, укажите идентификаторы устройств GPU, которые вы хотите использовать.

Пример обучения на нескольких GPU

Чтобы обучить с использованием 2 GPU, устройств CUDA 0 и 1 используйте следующие команды. Расширьте до дополнительных GPU по мере необходимости.

from ultralytics import YOLO

# Загрузить модель
model = YOLO('yolov8n.pt')  # загрузить предобученную модель (рекомендуется для обучения)

# Обучить модель с использованием 2 GPU
results = model.train(data='coco128.yaml', epochs=100, imgsz=640, device=[0, 1])
# Начать обучение с предобученной модели *.pt используя GPU 0 и 1
yolo detect train data=coco128.yaml model=yolov8n.pt epochs=100 imgsz=640 device=0,1

Обучение на Apple M1 и M2 с использованием MPS

С интеграцией поддержки чипов Apple M1 и M2 в модели Ultralytics YOLO теперь можно обучать ваши модели на устройствах, использующих мощную платформу Metal Performance Shaders (MPS). MPS предлагает производительный способ выполнения вычислений и задач обработки изображений на пользовательских кремниевых чипах Apple.

Чтобы запустить обучение на чипах Apple M1 и M2, вы должны указать 'mps' в качестве вашего устройства при запуске процесса обучения. Ниже приведены примеры использования Python и командной строки:

Пример обучения с MPS

from ultralytics import YOLO

# Загрузить модель
model = YOLO('yolov8n.pt')  # загрузить предобученную модель (рекомендуется для обучения)

# Обучить модель с использованием MPS
results = model.train(data='coco128.yaml', epochs=100, imgsz=640, device='mps')
# Начать обучение с предобученной модели *.pt используя MPS
yolo detect train data=coco128.yaml model=yolov8n.pt epochs=100 imgsz=640 device=mps

Используя вычислительные возможности чипов M1/M2, это позволяет более эффективно обрабатывать задачи обучения. Для более подробного руководства и расширенных параметров конфигурации, пожалуйста, обратитесь к документации PyTorch MPS.

Логирование

В процессе обучения модели YOLOv8 вы можете найти ценным отслеживание производительности модели со временем. Здесь на помощь приходит логирование. YOLO от Ultralytics поддерживает три типа логгеров - Comet, ClearML и TensorBoard.

Чтобы использовать логгер, выберите его из выпадающего меню в приведенном выше примере кода и запустите его. Выбранный логгер будет установлен и инициализирован.

Comet

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

Чтобы использовать Comet:

Пример

# pip install comet_ml
import comet_ml

comet_ml.init()

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

ClearML

ClearML - это открытая платформа, которая автоматизирует отслеживание экспериментов и помогает в эффективном обмене ресурсами. Она предназначена для помощи командам в управлении, выполнении и воспроизведении их работы в области ML более эффективно.

Чтобы использовать ClearML:

Пример

# pip install clearml
import clearml

clearml.browser_login()

После запуска этого скрипта вам нужно будет войти в вашу учетную запись ClearML в браузере и аутентифицировать вашу сессию.

TensorBoard

TensorBoard - это инструмент визуализации для TensorFlow. Он позволяет вам визуализировать граф TensorFlow, выводить количественные метрики о выполнении вашего графа и показывать дополнительные данные, такие как изображения, проходящие через него.

Чтобы использовать TensorBoard в Google Colab:

Пример

load_ext tensorboard
tensorboard --logdir ultralytics/runs  # заменить на директорию 'runs'

Чтобы использовать TensorBoard локально, запустите приведенную ниже команду и просмотрите результаты по адресу http://localhost:6006/.

Пример

tensorboard --logdir ultralytics/runs  # заменить на директорию 'runs'

Это загрузит TensorBoard и направит его к каталогу, где сохраняются ваши журналы обучения.

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


Created 2023-11-13, Updated 2023-11-18
Authors: glenn-jocher (2)

Комментарии