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

Ultralytics YOLO ecosystem and integrations

Введение

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



Watch: How to Train a YOLO model on Your Custom Dataset in Google Colab.

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

Вот несколько веских причин выбрать режим обучения (Train mode) в YOLO26:

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

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

Ниже приведены некоторые примечательные особенности режима обучения (Train mode) в YOLO26:

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

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

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

Ошибка многопроцессорности в Windows

В Windows ты можешь получить RuntimeError при запуске обучения в виде скрипта. Добавь блок if __name__ == "__main__": перед своим кодом обучения, чтобы решить эту проблему.

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

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

from ultralytics import YOLO

# Load a model
model = YOLO("yolo26n.yaml")  # build a new model from YAML
model = YOLO("yolo26n.pt")  # load a pretrained model (recommended for training)
model = YOLO("yolo26n.yaml").load("yolo26n.pt")  # build from YAML and transfer weights

# Train the model
results = model.train(data="coco8.yaml", epochs=100, imgsz=640)

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

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

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

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

from ultralytics import YOLO

# Load a model
model = YOLO("yolo26n.pt")  # load a pretrained model (recommended for training)

# Train the model with 2 GPUs
results = model.train(data="coco8.yaml", epochs=100, imgsz=640, device=[0, 1])

# Train the model with the two most idle GPUs
results = model.train(data="coco8.yaml", epochs=100, imgsz=640, device=[-1, -1])
Обучение на нескольких GPU с пользовательским кодом

Когда ты указываешь несколько устройств (например, device=[0, 1]), Ultralytics внутренне запускает новый экземпляр трейнера и выполняет torch.distributed.run в фоновом режиме. Это беспрепятственно работает для стандартного использования CLI и неизмененных Python-скриптов.

Однако, если твой скрипт содержит пользовательские компоненты, такие как собственный трейнер, валидатор, набор данных или конвейер аугментации, эти объекты не могут быть автоматически сериализованы и переданы в подпроцессы DDP. В этом случае ты должен запустить свой скрипт напрямую с помощью torch.distributed.run:

python -m torch.distributed.run --nproc_per_node 2 your_training_script.py

Обучение на простаивающих GPU

Обучение на простаивающих GPU позволяет автоматически выбирать наименее используемые GPU в системах с несколькими GPU, оптимизируя использование ресурсов без ручного выбора GPU. Эта функция определяет доступные GPU на основе метрик использования и доступности VRAM.

Пример обучения на простаивающих GPU

Чтобы автоматически выбирать и использовать самый простаивающий GPU(ы) для обучения, используй параметр устройства -1. Это особенно полезно в общих вычислительных средах или на серверах с несколькими пользователями.

from ultralytics import YOLO

# Load a model
model = YOLO("yolo26n.pt")  # load a pretrained model (recommended for training)

# Train using the single most idle GPU
results = model.train(data="coco8.yaml", epochs=100, imgsz=640, device=-1)

# Train using the two most idle GPUs
results = model.train(data="coco8.yaml", epochs=100, imgsz=640, device=[-1, -1])

Алгоритм автоматического выбора отдает приоритет GPU с:

  1. Более низким текущим процентом использования
  2. Более высоким объемом доступной памяти (свободная VRAM)
  3. Более низкой температурой и энергопотреблением

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

Обучение на Apple Silicon MPS

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

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

Пример обучения MPS
from ultralytics import YOLO

# Load a model
model = YOLO("yolo26n.pt")  # load a pretrained model (recommended for training)

# Train the model with MPS
results = model.train(data="coco8.yaml", epochs=100, imgsz=640, device="mps")

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

Возобновление прерванного обучения

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

При возобновлении обучения Ultralytics YOLO загружает веса из последней сохраненной модели, а также восстанавливает состояние оптимизатора, планировщик скорости обучения и номер эпохи. Это позволяет тебе беспрепятственно продолжить процесс обучения с того места, где он был остановлен.

Ты можешь легко возобновить обучение в Ultralytics YOLO, установив аргумент resume в True при вызове метода train и указав путь к файлу .pt, содержащему частично обученные веса модели.

Ниже приведен пример того, как возобновить прерванное обучение с помощью Python и через командную строку:

Пример возобновления обучения
from ultralytics import YOLO

# Load a model
model = YOLO("path/to/last.pt")  # load a partially trained model

# Resume training
results = model.train(resume=True)

Установив resume=True, функция train продолжит обучение с того места, где оно остановилось, используя состояние, сохраненное в файле 'path/to/last.pt'. Если аргумент resume пропущен или установлен в False, функция train начнет новый сеанс обучения.

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

Настройки обучения

Настройки обучения для моделей YOLO включают различные гиперпараметры и конфигурации, используемые в процессе обучения. Эти настройки влияют на производительность, скорость и точность модели. Ключевые настройки обучения включают размер пакета (batch size), скорость обучения (learning rate), импульс (momentum) и затухание веса (weight decay). Кроме того, выбор оптимизатора, функции потерь и состав набора данных для обучения могут повлиять на процесс обучения. Тщательная настройка и эксперименты с этими параметрами имеют решающее значение для оптимизации производительности.

Оптимизатор MuSGD

В YOLO26 MuSGD — это гибридный оптимизатор, который сочетает стандартные обновления SGD с ортогонализированными обновлениями в стиле Muon.

Он рекомендуется для более длительных прогонов обучения YOLO26 и больших наборов данных, где ортогонализированные обновления Muon могут помочь стабилизировать оптимизацию.

Только параметры с param.ndim >= 2 (например, сверточные веса) получают обновление в стиле Muon вместе с SGD, в то время как параметры с меньшей размерностью, такие как слои пакетной нормализации и члены смещения, остаются на стандартном SGD.

Когда используется optimizer=auto, Ultralytics автоматически выбирает MuSGD для более длительных прогонов обучения (обычно когда итераций > 10000). Для более коротких прогонов трейнер возвращается к AdamW.

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

yolo train model=yolo26n.pt data=coco8.yaml optimizer=MuSGD

См. реализацию в ultralytics/optim/muon.py и логику автоматического выбора оптимизатора в BaseTrainer.build_optimizer.

АргументТипПо умолчаниюОписание
modelstrNoneУказывает файл модели для обучения. Принимает путь либо к предобученной модели .pt, либо к файлу конфигурации .yaml. Необходимо для определения структуры модели или инициализации весов.
datastrNoneПуть к файлу конфигурации набора данных (например, coco8.yaml). Этот файл содержит специфические для набора данных параметры, включая пути к обучающим и validation data, названия классов и количество классов.
epochsint100Общее количество эпох обучения. Каждая epoch представляет собой полный проход по всему набору данных. Настройка этого значения может повлиять на продолжительность обучения и производительность модели.
timefloatNoneМаксимальное время обучения в часах. Если задано, этот параметр переопределяет аргумент epochs, позволяя обучению автоматически остановиться по истечении указанного времени. Полезно для сценариев обучения с ограничением по времени.
patienceint100Количество эпох, которое нужно подождать без улучшения метрик валидации перед тем, как досрочно остановить обучение. Помогает предотвратить overfitting, останавливая обучение, когда производительность перестает расти.
batchint или float16Batch size с тремя режимами: целое число (например, batch=16), автоматический режим для использования 60% памяти GPU (batch=-1) или автоматический режим с указанной долей использования (batch=0.70).
imgszint640Целевой размер изображения для обучения. Изображения изменяются до квадратных сторон, равных указанному значению (если rect=False), сохраняя соотношение сторон для моделей YOLO, но не для RT-DETR. Влияет на точность модели и вычислительную сложность.
saveboolTrueВключает сохранение чекпоинтов обучения и финальных весов модели. Полезно для возобновления обучения или model deployment.
save_periodint-1Частота сохранения чекпоинтов модели в эпохах. Значение -1 отключает эту функцию. Полезно для сохранения промежуточных моделей во время длительных сеансов обучения.
cacheboolFalseВключает кэширование изображений набора данных в памяти (True/ram), на диске (disk) или отключает его (False). Улучшает скорость обучения за счет уменьшения операций ввода-вывода на диске ценой повышенного использования памяти.
deviceint или str или listNoneУказывает вычислительное устройство (или устройства) для обучения: один GPU (device=0), несколько GPU (device=[0,1]), CPU (device=cpu), MPS для Apple silicon (device=mps), Huawei Ascend NPU (device=npu или device=npu:0), или автовыбор наиболее свободного GPU (device=-1) или нескольких свободных GPU (device=[-1,-1]).
workersint8Количество потоков-воркеров для загрузки данных (на RANK в случае обучения на нескольких GPU). Влияет на скорость предварительной обработки данных и подачи их в модель, особенно полезно в конфигурациях с несколькими GPU.
projectstrNoneНазвание директории проекта, куда сохраняются результаты обучения. Позволяет организованно хранить разные эксперименты.
namestrNoneНазвание запуска обучения. Используется для создания поддиректории внутри папки проекта, где хранятся логи и результаты обучения.
exist_okboolFalseЕсли True, позволяет перезаписывать существующую директорию проекта/имени. Полезно для итеративных экспериментов без необходимости вручную очищать предыдущие результаты.
pretrainedbool или strTrueОпределяет, начинать ли обучение с предобученных весов. Может быть логическим значением или строковым путем к весам для загрузки. pretrained=False запускает обучение со случайной инициализацией весов при сохранении архитектуры модели.
optimizerstr'auto'Выбор оптимизатора для обучения. Опции включают SGD, MuSGD, Adam, Adamax, AdamW, NAdam, RAdam, RMSProp или auto для автоматического выбора на основе конфигурации модели. Влияет на скорость сходимости и стабильность.
seedint0Устанавливает случайное зерно (seed) для обучения, обеспечивая воспроизводимость результатов при повторных запусках с теми же конфигурациями.
deterministicboolTrueПринудительно использует детерминированный алгоритм, обеспечивая воспроизводимость, но может повлиять на производительность и скорость из-за ограничения на использование недетерминированных алгоритмов.
verboseboolTrueВключает подробный вывод во время обучения, отображая прогресс-бары, метрики за эпоху и дополнительную информацию об обучении в консоли.
single_clsboolFalseРассматривает все классы в многоклассовых наборах данных как один класс во время обучения. Полезно для задач бинарной классификации или когда основное внимание уделяется наличию объекта, а не его классификации.
classeslist[int]NoneУказывает список ID классов для обучения. Полезно для фильтрации и концентрации внимания только на определенных классах во время обучения.
rectboolFalseВключает стратегию минимального дополнения (padding)—изображения в батче минимально дополняются до общего размера, при этом самая длинная сторона равна imgsz. Может повысить эффективность и скорость, но может повлиять на точность модели.
multi_scalefloat0.0Случайное изменение imgsz в каждом батче на +/- multi_scale (например, 0.25 -> от 0.75x до 1.25x) с округлением до кратных значений шага модели; 0.0 отключает многомасштабное обучение.
cos_lrboolFalseИспользует косинусный планировщик learning rate, корректируя скорость обучения по косинусной кривой на протяжении эпох. Помогает управлять скоростью обучения для лучшей сходимости.
close_mosaicint10Отключает мозаичную data augmentation в последних N эпохах для стабилизации обучения перед завершением. Установка значения 0 отключает эту функцию.
resumeboolFalseВозобновляет обучение с последнего сохраненного чекпоинта. Автоматически загружает веса модели, состояние оптимизатора и счетчик эпох, продолжая обучение без сбоев.
ampboolTrueВключает обучение с автоматической Mixed Precision (AMP), уменьшая использование памяти и, возможно, ускоряя обучение с минимальным влиянием на точность.
fractionfloat1.0Указывает долю набора данных для обучения. Позволяет обучать модель на подмножестве полного набора данных, что полезно для экспериментов или при ограниченных ресурсах.
profileboolFalseВключает профилирование скорости ONNX и TensorRT во время обучения, что полезно для оптимизации развертывания модели.
freezeint или listNoneЗамораживает первые N слоев модели или указанные слои по индексу, уменьшая количество обучаемых параметров. Полезно для дообучения или transfer learning.
lr0float0.01Начальная скорость обучения (т.е. SGD=1E-2, Adam=1E-3). Корректировка этого значения критически важна для процесса оптимизации, так как она влияет на скорость обновления весов модели.
lrffloat0.01Конечная скорость обучения как доля от начальной = (lr0 * lrf), используется совместно с планировщиками для коррекции скорости обучения с течением времени.
momentumfloat0.937Коэффициент импульса (momentum) для SGD или beta1 для Adam optimizers, влияющий на учет прошлых градиентов при текущем обновлении.
weight_decayfloat0.0005L2 regularization член, штрафующий большие веса для предотвращения переобучения.
warmup_epochsfloat3.0Количество эпох для «разогрева» скорости обучения, постепенно увеличивающее её от малого значения до начальной скорости для стабилизации обучения на раннем этапе.
warmup_momentumfloat0.8Начальный импульс для фазы разогрева, постепенно подстраивающийся до установленного значения в течение периода разогрева.
warmup_bias_lrfloat0.1Скорость обучения для параметров смещения (bias) во время фазы разогрева, помогающая стабилизировать обучение модели в начальные эпохи.
boxfloat7.5Вес компонента потерь bbox в loss function, влияющий на то, насколько сильно учитывается точность предсказания координат bounding box.
clsfloat0.5Вес функции потерь классификации в общей функции потерь, влияющий на важность правильного предсказания класса относительно других компонентов.
cls_pwfloat0.0Степень для взвешивания классов, чтобы справиться с дисбалансом классов с помощью обратной частоты классов. 0.0 отключает взвешивание классов, 1.0 применяет полное обратное частотное взвешивание. Значения от 0 до 1 обеспечивают частичное взвешивание.
dflfloat1.5Вес Distribution Focal Loss, используемый в некоторых версиях YOLO для более тонкой классификации.
posefloat12.0Вес функции потерь позы в моделях, обученных для оценки позы, влияющий на акцент при точном предсказании ключевых точек позы.
kobjfloat1.0Вес функции потерь объектности ключевых точек в моделях оценки позы, балансирующий уверенность обнаружения и точность позы.
rlefloat1.0Вес функции потерь оценки остаточного логарифмического правдоподобия в моделях оценки позы, влияющий на точность локализации ключевых точек.
anglefloat1.0Вес функции потерь угла в моделях obb, влияющий на точность предсказания угла ориентированного ограничивающего прямоугольника.
nbsint64Номинальный размер батча для нормализации потерь.
overlap_maskboolTrueОпределяет, должны ли маски объектов объединяться в одну маску для обучения или оставаться отдельными для каждого объекта. В случае перекрытия при объединении меньшая маска накладывается поверх большей.
mask_ratioint4Коэффициент даунсэмплинга (уменьшения разрешения) для сегментационных масок, влияющий на разрешение масок, используемых во время обучения.
dropoutfloat0.0Коэффициент dropout для регуляризации в задачах классификации, предотвращающий переобучение путем случайного исключения нейронов во время обучения.
valboolTrueВключает валидацию во время обучения, позволяя периодически оценивать производительность модели на отдельном наборе данных.
plotsboolTrueСоздает и сохраняет графики метрик обучения и валидации, а также примеры предсказаний, предоставляя визуальное представление о производительности модели и прогрессе обучения.
compilebool или strFalseВключает компиляцию графа PyTorch 2.x torch.compile с использованием backend='inductor'. Принимает True"default", False → отключает, или строковый режим, например "default", "reduce-overhead", "max-autotune-no-cudagraphs". При поддержке возвращается к eager-режиму с предупреждением.
max_detint300Указывает максимальное количество объектов, сохраняемых во время фазы валидации обучения.
Примечание к настройкам размера батча

Аргумент batch может быть настроен тремя способами:

  • Фиксированный размер пакета: Установи целое значение (например, batch=16), напрямую указывающее количество изображений в пакете.
  • Автоматический режим (60% памяти GPU): Используй batch=-1 для автоматической настройки размера пакета для достижения примерно 60% использования памяти CUDA.
  • Автоматический режим с долей использования: Установи дробное значение (например, batch=0.70) для настройки размера пакета на основе указанной доли использования памяти GPU.
  • Автоматический повтор при OOM: Если во время первой эпохи происходит ошибка CUDA out-of-memory, трейнер автоматически уменьшает размер пакета вдвое и повторяет попытку (до 3 раз). Это применимо только к обучению на одном GPU; обучение на нескольких GPU (DDP) вызовет ошибку немедленно.

Настройки аугментации и гиперпараметры

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

АргументТипПо умолчаниюПоддерживаемые задачиДиапазонОписание
hsv_hfloat0.015detect, segment, pose, obb, classify0.0 - 1.0Регулирует оттенок изображения на долю цветового круга, внося вариативность цвета. Помогает модели обобщать данные при различных условиях освещения.
hsv_sfloat0.7detect, segment, pose, obb, classify0.0 - 1.0Изменяет насыщенность изображения на дробную величину, влияя на интенсивность цветов. Полезно для симуляции различных условий окружающей среды.
hsv_vfloat0.4detect, segment, pose, obb, classify0.0 - 1.0Изменяет значение (яркость) изображения на дробную величину, помогая модели хорошо работать при различных условиях освещения.
degreesfloat0detect, segment, pose, obb0.0 - 180Случайно поворачивает изображение в указанном диапазоне градусов, улучшая способность модели распознавать объекты при различных ориентациях.
translatefloat0.1detect, segment, pose, obb0.0 - 1.0Перемещает изображение по горизонтали и вертикали на долю размера изображения, помогая учиться обнаруживать частично видимые объекты.
scalefloat0.5detect, segment, pose, obb, classify0 - 1Масштабирует изображение с коэффициентом усиления, имитируя объекты на разных расстояниях от камеры.
shearfloat0detect, segment, pose, obb-180 - +180Наклоняет изображение на указанный угол, имитируя эффект просмотра объектов под разными углами.
perspectivefloat0detect, segment, pose, obb0.0 - 0.001Применяет случайную перспективную трансформацию к изображению, улучшая способность модели понимать объекты в 3D-пространстве.
flipudfloat0detect, segment, pose, obb, classify0.0 - 1.0Переворачивает изображение вверх ногами с указанной вероятностью, увеличивая вариативность данных, не влияя на характеристики объекта.
fliplrfloat0.5detect, segment, pose, obb, classify0.0 - 1.0Переворачивает изображение слева направо с указанной вероятностью, полезно для изучения симметричных объектов и увеличения разнообразия набора данных.
bgrfloat0detect, segment, pose, obb0.0 - 1.0Переключает каналы изображения с RGB на BGR с указанной вероятностью, полезно для повышения устойчивости к неправильному порядку каналов.
mosaicfloat1detect, segment, pose, obb0.0 - 1.0Объединяет четыре тренировочных изображения в одно, симулируя различные композиции сцен и взаимодействия объектов. Высокоэффективно для понимания сложных сцен.
mixupfloat0detect, segment, pose, obb0.0 - 1.0Смешивает два изображения и их метки, создавая составное изображение. Улучшает способность модели к обобщению за счет внесения шума меток и визуальной вариативности.
cutmixfloat0detect, segment, pose, obb0.0 - 1.0Комбинирует части двух изображений, создавая частичное смешение при сохранении четких областей. Повышает устойчивость модели путем создания сценариев окклюзии.
copy_pastefloat0segment0.0 - 1.0Копирует и вставляет объекты между изображениями для увеличения количества экземпляров объектов.
copy_paste_modestrflipsegment-Определяет используемую стратегию copy-paste. Варианты включают 'flip' и 'mixup'.
auto_augmentstrrandaugmentclassify-Применяет предопределенную политику аугментации ('randaugment', 'autoaugment' или 'augmix') для повышения производительности модели за счет визуального разнообразия.
erasingfloat0.4classify0.0 - 1.0Случайным образом стирает области изображения во время обучения, чтобы побудить модель фокусироваться на менее очевидных признаках.
augmentationslist``detect, segment, pose, obb-Пользовательские трансформации Albumentations для продвинутой аугментации данных (только через Python API). Принимает список объектов трансформации для специализированных задач аугментации.

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

Информация

Для получения дополнительной информации об операциях аугментации при обучении см. справочный раздел.

Логирование

При обучении модели YOLO26 тебе может быть полезно отслеживать производительность модели во времени. Именно здесь на помощь приходит логирование. Ultralytics YOLO поддерживает три типа логгеров - Comet, ClearML и TensorBoard.

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

Comet

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

Чтобы использовать 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 # replace with 'runs' directory

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

Пример
tensorboard --logdir ultralytics/runs # replace with 'runs' directory

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

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

Часто задаваемые вопросы (FAQ)

Могу ли я тренироваться без локального GPU?

Да. Платформа Ultralytics поддерживает облачное обучение с бесплатными кредитами для начала работы. Загрузи свой набор данных, выбери модель и GPU и тренируйся прямо из браузера. Подробности см. в руководстве по облачному обучению.

Как обучить модель обнаружения объектов с помощью Ultralytics YOLO26?

Чтобы обучить модель обнаружения объектов с помощью Ultralytics YOLO26, ты можешь использовать либо Python API, либо CLI. Ниже приведен пример для обоих вариантов:

Пример обучения на одном GPU и CPU
from ultralytics import YOLO

# Load a model
model = YOLO("yolo26n.pt")  # load a pretrained model (recommended for training)

# Train the model
results = model.train(data="coco8.yaml", epochs=100, imgsz=640)

Для получения более подробной информации обратись к разделу Настройки обучения.

Каковы основные особенности режима обучения Ultralytics YOLO26?

К основным особенностям режима обучения Ultralytics YOLO26 относятся:

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

Эти функции делают обучение эффективным и адаптируемым к твоим потребностям. Более подробную информацию см. в разделе Ключевые особенности режима обучения.

Как возобновить обучение после прерванного сеанса в Ultralytics YOLO26?

Чтобы возобновить обучение после прерванного сеанса, установи аргумент resume в значение True и укажи путь к последнему сохраненному чекпоинту.

Пример возобновления обучения
from ultralytics import YOLO

# Load the partially trained model
model = YOLO("path/to/last.pt")

# Resume training
results = model.train(resume=True)

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

Как обучить модель на несбалансированном наборе данных?

Дисбаланс классов возникает, когда в твоих тренировочных данных для некоторых классов значительно меньше примеров, чем для других. Это может привести к тому, что модель будет плохо работать на редких классах. Ultralytics YOLO поддерживает взвешивание классов через аргумент cls_pw для решения этой проблемы.

Аргумент cls_pw управляет силой взвешивания классов на основе обратной частоты классов:

  • cls_pw=0.0 (по умолчанию): отключает взвешивание классов
  • cls_pw=1.0: применяет полное взвешивание по обратной частоте
  • Значения от 0.0 до 1.0: обеспечивают частичное взвешивание для умеренного дисбаланса

Веса классов вычисляются как (1.0 / class_counts) ^ cls_pw и нормализуются так, чтобы их среднее значение было равно 1.0.

Обучение на несбалансированном наборе данных
from ultralytics import YOLO

# Load a pretrained model
model = YOLO("yolo26n.pt")

# Train with full class weighting for severely imbalanced data
results = model.train(data="custom.yaml", epochs=100, imgsz=640, cls_pw=1.0)

# Or use partial weighting (0.25) for moderate imbalance
results = model.train(data="custom.yaml", epochs=100, imgsz=640, cls_pw=0.25)
Совет

Начни с cls_pw=0.25 для умеренно несбалансированных наборов данных и увеличь до 1.0, если редкие классы по-прежнему показывают низкие результаты. Ты можешь проверить вычисленные веса классов в логах обучения, чтобы убедиться в правильности распределения весов.

Могу ли я тренировать модели YOLO26 на чипах Apple silicon?

Да, Ultralytics YOLO26 поддерживает обучение на чипах Apple silicon с использованием фреймворка Metal Performance Shaders (MPS). Укажи 'mps' в качестве своего тренировочного устройства.

Пример обучения MPS
from ultralytics import YOLO

# Load a pretrained model
model = YOLO("yolo26n.pt")

# Train the model on Apple silicon chip (M1/M2/M3/M4)
results = model.train(data="coco8.yaml", epochs=100, imgsz=640, device="mps")

Для получения более подробной информации обратись к разделу Обучение на Apple Silicon через MPS.

Какие существуют общие настройки обучения и как их сконфигурировать?

Ultralytics YOLO26 позволяет конфигурировать множество параметров обучения, таких как размер батча (batch size), скорость обучения (learning rate), эпохи и многое другое с помощью аргументов. Вот краткий обзор:

АргументПо умолчаниюОписание
modelNoneПуть к файлу модели для обучения.
dataNoneПуть к файлу конфигурации набора данных (например, coco8.yaml).
epochs100Общее количество эпох обучения.
batch16Размер батча, настраивается как целое число или в автоматическом режиме.
imgsz640Целевой размер изображения для обучения.
deviceNoneВычислительное устройство (устройства) для обучения, например cpu, 0, 0,1 или mps.
saveTrueВключает сохранение чекпоинтов обучения и финальных весов модели.

Для получения подробного руководства по настройкам обучения изучи раздел Настройки обучения.

Комментарии