YOLO Vision 2026:

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

Ultralytics YOLO ecosystem and integrations

Введение#

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



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

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

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

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

Основные функции режима Train#

Ниже представлены некоторые примечательные функции режима Train в YOLO26:

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

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

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

Обучение на AMD GPU использует сборку PyTorch ROCm со стандартным синтаксисом device=0 или device=cuda:0. См. руководство по интеграции с AMD для получения информации об установке и текущем статусе поддержки MIGraphX, DirectML и Ryzen AI NPU.

Обучение на Intel GPU использует device=xpu:0 или несколько идентификаторов XPU со сборкой PyTorch, предоставляющей XCCL.

Обучение на NPU Huawei Ascend#

Ultralytics поддерживает обучение и валидацию на Huawei Ascend NPU через torch_npu. Установи взаимосовместимые версии CANN, PyTorch и torch_npu, следуя руководству по установке расширения Ascend для PyTorch, а затем инициализируй окружение CANN перед запуском Ultralytics:

source /usr/local/Ascend/ascend-toolkit/set_env.sh
Пример обучения на NPU Ascend
from ultralytics import YOLO

model = YOLO("yolo26n.pt")

# Train on one Ascend NPU
results = model.train(data="coco8.yaml", epochs=100, imgsz=640, device="npu:0")

# Train across two Ascend NPUs with HCCL
results = model.train(data="coco8.yaml", epochs=100, imgsz=640, device="npu:0,1")

Стандартные функции обучения, включая AMP, валидацию, создание чекпоинтов и возобновление, используют активный NPU. AutoBatch доступен для обучения на одном NPU, в то время как несколько идентификаторов NPU запускают распределенное обучение через HCCL. См. руководство по интеграции с Huawei Ascend для экспорта модели и ее развертывания после обучения.

Обучение на простаивающем 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), моментум и затухание веса (weight decay). Кроме того, выбор оптимизатора, функции потерь и состава обучающего набора данных может повлиять на процесс обучения. Тщательная настройка и эксперименты с этими параметрами имеют решающее значение для оптимизации производительности.

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

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

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

Только двумерные линейные веса и четырехмерные сверточные фильтры (приведенные к двумерному виду) получают обновление в стиле 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Путь к YAML-файлу датасета (например, coco8.yaml), который содержит пути к обучающим и данным валидации, имена классов и количество классов. Для классификации вместо этого указывается каталог датасета или встроенное имя датасета (например, imagenet10).
epochsint100Общее количество эпох обучения. Каждая эпоха представляет собой один полный проход по всему датасету. Изменение этого значения может повлиять на продолжительность обучения и производительность модели.
timefloatNoneМаксимальное время обучения в часах. Если задано, этот аргумент переопределяет аргумент epochs, позволяя обучению автоматически остановиться по истечении указанного времени. Полезно для сценариев обучения с ограничениями по времени.
patienceint100Количество эпох ожидания без улучшения метрик валидации перед ранней остановкой обучения. Помогает предотвратить переобучение, останавливая обучение при плато производительности.
batchint или float16Размер батча с тремя режимами: задается как целое число (например, batch=16), авторежим для использования 60% памяти GPU (batch=-1) или авторежим с указанной долей использования (batch=0.70).
imgszint640Целевой размер изображения для обучения. Изображения изменяются до квадратов со сторонами, равными указанному значению (если rect=False), сохраняя соотношение сторон для моделей YOLO, но не для RT-DETR. Влияет на точность модели и вычислительную сложность.
saveboolTrueВключает сохранение контрольных точек обучения и финальных весов модели. Полезно для возобновления обучения или развертывания модели.
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:0 или device=npu:0,1), либо автоматический выбор простаивающего GPU (device=-1) или нескольких простаивающих GPU (device=[-1,-1]).
workersint8Количество потоков-воркеров для загрузки данных (на каждый RANK при обучении на нескольких GPU). Влияет на скорость предварительной обработки данных и подачи их в модель, что особенно полезно в конфигурациях с несколькими GPU.
projectstrNoneИмя директории проекта, куда сохраняются результаты обучения. Позволяет организованно хранить различные эксперименты.
namestrNoneИмя запуска обучения. Используется для создания подпапки внутри папки проекта, где хранятся логи и результаты обучения.
exist_okboolFalseЕсли True, разрешает перезапись существующей директории project/name. Полезно для итеративных экспериментов без необходимости вручную очищать предыдущие результаты.
save_dirstrNoneЗадает точную директорию для сохранения результатов запуска, переопределяя комбинацию project/name. Путь используется как есть без автоинкремента, поэтому последовательные запуски используют ту же директорию.
pretrainedbool или strTrueОпределяет, начинать ли обучение с предобученных весов. Может быть булевым значением или строковым путем к загружаемым весам. pretrained=False выполняет обучение со случайным образом инициализированными весами с сохранением архитектуры модели.
cls_remapboolTrueПри дообучении на разных наборах данных копирует строки предобученной головы классификации в новую модель везде, где названия классов совпадают, поэтому пересекающиеся классы сохраняют свое изученное смещение, а также свои веса, если ширина головы не изменилась. Применяется независимо от того, отличаются ли количества классов или совпадают при другом порядке классов.
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Использует планировщик скорости обучения на основе косинуса, регулируя скорость обучения по косинусному кривой в течение эпох. Помогает управлять скоростью обучения для лучшей сходимости.
close_mosaicint10Отключает мозаичную аугментацию данных в последние N эпох для стабилизации обучения перед завершением. Установка значения 0 отключает эту функцию.
resumeboolFalseВозобновляет обучение с последней сохраненной контрольной точки. Автоматически загружает веса модели, состояние оптимизатора и счетчик эпох, продолжая обучение без сбоев.
ampboolTrueВключает обучение с автоматической смешанной точностью (AMP), снижая использование памяти и возможно ускоряя обучение с минимальным влиянием на точность.
fractionfloat1.0Указывает долю набора данных для использования при обучении. Позволяет обучать на подмножестве полного набора данных, что полезно для экспериментов или при ограниченных ресурсах.
profileboolFalseВключает профилирование скорости ONNX и TensorRT во время обучения, полезно для оптимизации развертывания модели.
freezeint или listNoneЗамораживает первые N слоев модели или указанные слои по индексу, уменьшая количество обучаемых параметров. Полезно для дообучения или трансферного обучения.
lr0float0.01Начальная скорость обучения (т.е. SGD=1E-2, Adam=1E-3). Регулировка этого значения имеет решающее значение для процесса оптимизации, влияя на то, как быстро обновляются веса модели.
lrffloat0.01Финальная скорость обучения как доля от начальной скорости = (lr0 * lrf), используется в сочетании с планировщиками для изменения скорости обучения со временем.
momentumfloat0.937Коэффициент моментума для SGD или beta1 для оптимизаторов Adam, влияющий на учет прошлых градиентов при текущем обновлении.
weight_decayfloat0.0005Член L2-регуляризации, наказывающий за большие веса для предотвращения переобучения.
warmup_epochsfloat3.0Количество эпох для разогрева (warmup) скорости обучения, постепенно увеличивающее ее от малого значения до начального для ранней стабилизации обучения.
warmup_momentumfloat0.8Начальный импульс для фазы разогрева, постепенно корректирующийся до установленного значения в течение периода разогрева.
warmup_bias_lrfloat0.1Скорость обучения для параметров смещения (bias) во время фазы разогрева, помогающая стабилизировать обучение модели в начальные эпохи.
distill_modelstrNoneПуть к контрольной точке модели-учителя (например, yolo26x.pt) для дистилляции знаний. Если задано, модель-ученик обучается с дополнительной потерей дистилляции под руководством замороженного учителя.
disfloat6.0Вес функции потерь дистилляции, добавляемой к стандартным потерям детекции. Более высокие значения увеличивают влияние направляющих признаков учителя.
boxfloat7.5Вес компонента потерь рамок в функции потерь, влияющий на то, какое внимание уделяется точному прогнозированию координат ограничивающей рамки.
clsfloat0.5Вес потерь классификации в общей функции потерь, влияющий на важность правильного предсказания класса по отношению к другим компонентам.
cls_pwfloat0.0Степень взвешивания классов для борьбы с дисбалансом классов с использованием обратной частоты классов. 0.0 отключает взвешивание классов, 1.0 применяет полное взвешивание по обратной частоте. Значения от 0 до 1 обеспечивают частичное взвешивание.
dflfloat1.5Вес функции потерь distribution focal loss (DFL) — компонента локализации bounding box, который регрессирует расстояния до границ рамки.
posefloat12.0Вес потерь позы в моделях для оценки позы, влияющий на акцент при точном прогнозировании ключевых точек позы.
kobjfloat1.0Вес потерь объектности ключевых точек в моделях оценки позы, балансирующий уверенность обнаружения с точностью позы.
rlefloat1.0Вес потерь остаточной оценки логарифмического правдоподобия в моделях оценки позы, влияющий на точность локализации ключевых точек.
anglefloat1.0Вес потерь угла в моделях obb, влияющий на точность предсказаний угла ориентированного ограничивающего прямоугольника.
dlogfloat1.0Вес масштабно-инвариантной логарифмической (SILog) функции потерь в моделях оценки глубины, основной фактор, определяющий точность глубины.
dgradfloat0.5Вес градиентных потерь в моделях оценки глубины, штрафующий за ошибки на границах глубин и стимулирующий более резкие границы поверхностей.
dlamfloat1.0Фактор фокусировки дисперсии потерь SILog в моделях оценки глубины. 1.0 делает потери полностью инвариантными к масштабу, в то время как 0.0 сводит их к обычному log-RMSE.
nbsint64Номинальный размер пакета для нормализации потерь.
overlap_maskboolTrueОпределяет, должны ли маски объектов объединяться в одну общую маску для обучения или оставаться отдельными для каждого объекта. В случае перекрытия, меньшая маска накладывается поверх большей при объединении.
mask_ratioint4Коэффициент уменьшения разрешения (downsample) для масок сегментации, влияющий на разрешение масок, используемых при обучении.
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) с предупреждением.
channels_lastboolFalseИспользует формат памяти channels_last (NHWC) для сверток во время обучения, ускоряя работу GPU с CUDA Tensor Core без изменения результатов. Автоматически игнорируется на CPU и MPS, где он не дает преимуществ.
max_detint300Указывает максимальное количество объектов, сохраняемых во время фазы валидации обучения.
Примечание по настройкам размера пакета (Batch-size)

Аргумент 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, semantic, depth, classify, pose, obb0.0 - 1.0Корректирует цветовой тон изображения на долю цветового круга, внося вариативность цветов. Помогает модели обобщать данные при различных условиях освещения.
hsv_sfloat0.7detect, segment, semantic, depth, classify, pose, obb0.0 - 1.0Изменяет насыщенность изображения на долю, влияя на интенсивность цветов. Полезно для симуляции различных условий окружающей среды.
hsv_vfloat0.4detect, segment, semantic, depth, classify, pose, obb0.0 - 1.0Модифицирует значение (яркость) изображения на долю, помогая модели хорошо работать при различных условиях освещения.
degreesfloat0detect, segment, semantic, depth, pose, obb0.0 - 180Случайно поворачивает изображение в заданном диапазоне градусов, улучшая способность модели распознавать объекты в различных ориентациях.
translatefloat0.1detect, segment, semantic, depth, pose, obb0.0 - 1.0Сдвигает изображение по горизонтали и вертикали на часть размера изображения, помогая учиться обнаруживать частично видимые объекты.
scalefloat0.5detect, segment, semantic, depth, classify, pose, obb0 - 1Масштабирует изображение с коэффициентом усиления, имитируя объекты на разном расстоянии от камеры.
shearfloat0detect, segment, semantic, depth, pose, obb-180 - +180Наклоняет изображение на заданный градус, имитируя эффект просмотра объектов под разными углами.
perspectivefloat0detect, segment, semantic, depth, pose, obb0.0 - 0.001Применяет случайное перспективное преобразование к изображению, улучшая способность модели понимать объекты в 3D-пространстве.
flipudfloat0detect, segment, semantic, depth, classify, pose, obb0.0 - 1.0Переворачивает изображение вверх ногами с заданной вероятностью, увеличивая вариативность данных, не затрагивая характеристики объекта.
fliplrfloat0.5detect, segment, semantic, depth, classify, pose, obb0.0 - 1.0Переворачивает изображение слева направо с заданной вероятностью, что полезно для изучения симметричных объектов и повышения разнообразия набора данных.
bgrfloat0detect, segment, semantic, depth, pose, obb0.0 - 1.0Меняет каналы изображения с RGB на BGR с заданной вероятностью, полезно для повышения устойчивости к неправильному порядку каналов.
mosaicfloat1detect, segment, semantic, pose, obb0.0 - 1.0Объединяет четыре изображения для обучения в одно, имитируя различные композиции сцен и взаимодействия объектов. Очень эффективно для понимания сложных сцен.
mixupfloat0detect, segment, semantic, 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Случайным образом стирает области изображения во время обучения, чтобы побудить модель фокусироваться на менее очевидных признаках.
augmentationslistNonedetect, segment, semantic, 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 — это платформа с открытым исходным кодом, которая автоматизирует отслеживание экспериментов и помогает эффективно делиться ресурсами. Она создана для того, чтобы помочь командам более эффективно управлять своими задачами в области машинно обучения, выполнять их и воспроизводить.

Чтобы использовать 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 и направит его в директорию, где сохранены логи твоего обучения.

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

Что дальше#

Проверь (выполни валидацию) свою обученную модель на отложенных данных, чтобы оценить ее точность в реальных условиях, а затем экспортируй ее в ONNX, TensorRT или другой формат развертывания. Обучаешься на собственных данных вместо COCO8? Сначала отформатируй их с помощью руководства по датасетам.

FAQ#

Можно ли обучаться без локального GPU?#

Да. Облачное обучение на платформе Ultralytics Platform включает бесплатные кредиты для начала работы. Загрузи свой датасет, выбери модель и 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Путь к YAML-файлу датасета (например, coco8.yaml) либо директория или имя датасета (например, imagenet10) для классификации.
epochs100Общее количество эпох обучения.
batch16Размер пакета (batch size), настраиваемый как целое число или в автоматическом режиме.
imgsz640Целевой размер изображения для обучения.
deviceNoneВычислительное(-ые) устройство(-а) для обучения, такое как cpu, 0, 0,1 или mps.
saveTrueВключает сохранение контрольных точек обучения и весов финальной модели.

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

Комментарии