YOLO Vision 2026:

Рецепт обучения YOLO26#

Введение#

В этом руководстве задокументирован точный рецепт обучения, использованный для создания официальных предварительно обученных контрольных точек YOLO26 на COCO. Каждый показанный здесь гиперпараметр уже встроен в выпущенные веса .pt вместе с журналом обучения по эпохам и ревизией кода запуска, причём всё это можно проверить программно.

Понимание того, что вошло в официальные контрольные точки, — не только архитектура, но и расписания скорости обучения, конвейеры аугментации и веса функции потерь, определившие их эффективность, — помогает принимать более обоснованные решения при дообучении: какие аугментации данных оставить, веса какой функции потерь изменить и какие настройки оптимизатора лучше всего подходят для твоего объёма данных.

Прочти статью, чтобы получить полную картину

На этой странице рассматриваются гиперпараметры, записанные в выпущенных контрольных точках. Чтобы понять их обоснование, включая архитектуру, изменения функции потерь и назначения меток, а также результаты абляционных исследований, прочти Ultralytics YOLO26: Unified Real-Time End-to-End Vision Models.

Обзор обучения#

Все базовые модели YOLO26 обучались в два этапа: предварительное обучение на Objects365v1 в течение 150 эпох, за которым следовало дообучение на COCO. Оба этапа выполнялись при разрешении 640x640 с оптимизатором MuSGD и размером пакета 128. Ни одна контрольная точка YOLO26 не обучалась на COCO со случайных весов, поэтому этап COCO короткий для большинства размеров, а его гиперпараметры были найдены с помощью эволюционного поиска. Полные журналы обучения и метрики для каждого размера модели хранятся внутри выпущенных контрольных точек и отображаются в виде графиков на Ultralytics Platform.

Ключевые особенности для всех размеров:

  • Предварительное обучение на Objects365 для каждого размера перед этапом COCO
  • Обучение с двумя «головами» с надзором «один ко многим» и «один к одному»; во время инференса по умолчанию используется NMS, а nms=False выбирает голову без NMS
  • Оптимизатор MuSGD, объединяющий SGD с ортогонализованными обновлениями в стиле Muon для матриц весов (двумерных линейных весов и четырёхмерных свёрточных фильтров, преобразуемых в двумерные)
  • Интенсивная мозаичная аугментация (вероятность ~0.9-1.0), отключаемая на последних эпохах (close_mosaic=8 при предварительном обучении, close_mosaic=10 на COCO)
  • Агрессивная аугментация масштаба (0.5-0.95) для обработки объектов разных размеров
  • Минимальные повороты и сдвиги для большинства размеров, чтобы геометрические искажения оставались небольшими

Этап 1: предварительное обучение на Objects365#

Каждая контрольная точка YOLO26 для COCO была дообучена из контрольной точки Objects365v1 того же размера. Эти предварительно обученные веса также опубликованы и задокументированы на странице датасета Objects365. Каждая контрольная точка COCO указывает начальные веса в конфигурации обучения, встроенной в файл .pt; в разделе Проверка аргументов обучения контрольной точки YOLO26 ниже показано, как их прочитать:

Контрольная точка COCOНачальные веса
yolo26n.ptyolo26n-objv1-150.pt
yolo26s.ptyolo26s-objv1-150.pt
yolo26m.ptyolo26m-objv1-150.pt
yolo26l.ptyolo26l-objv1-150.pt
yolo26x.ptyolo26x-objv1-150.pt

При предварительном обучении использовались в основном настройки по умолчанию, а не найденные значения. lr0, lrf, momentum, weight_decay, box и cls соответствуют default.yaml, а warmup_epochs, close_mosaic и dfl были переопределены. Настройки общие для всех размеров, за исключением warmup_epochs для X, силы аугментаций и внутренних весов MuSGD и головы, перечисленных после таблиц:

НастройкаЗначение
dataObjects365v1
epochs150
imgsz640
batch128
optimizerMuSGD
lr0 / lrf0.01 / 0.01
momentum0.937
weight_decay0.0005
warmup_epochs1 (2 для X)
close_mosaic8
box / cls / dfl7.5 / 0.5 / 6.0
АугментацияNSMLX
mosaic1.01.01.01.01.0
mixup0.00.050.150.150.2
copy_paste0.10.150.40.50.6
scale0.50.90.90.90.9

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

Расширенный раздел: внутренние параметры предварительного обучения

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

НастройкаNSMLX
muon_w0.450.50.450.450.5
sgd_w0.550.50.550.550.6
o2m0.10.10.11.01.0
Начни с весов Objects365

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

from ultralytics import YOLO

model = YOLO("yolo26s-objv1-150.pt")
results = model.train(data="your-dataset.yaml", epochs=100, imgsz=640)

Чтобы вместо этого повторить этап COCO, начни с тех же весов и передай значения оптимизатора, функции потерь и аугментаций этапа 2 для нужного размера из таблиц ниже. В этих таблицах пропущены небольшие аргументы, отличающиеся от значений по умолчанию, такие как warmup_momentum, warmup_bias_lr, perspective, flipud и cutmix, поэтому для получения точной конфигурации выведи train_args из контрольной точки. Внутренние параметры отклоняются выпущенным пакетом и требуют экспериментальной ветки.

Проверка аргументов обучения контрольной точки YOLO26#

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

Проверить аргументы обучения контрольной точки
from ultralytics import YOLO

model = YOLO("yolo26n.pt")
print(model.ckpt["train_args"])

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

batch: 128
...
box: 5.62767
...
close_mosaic: 10
cls: 0.56099
...
dfl: 9.03871
...
epochs: 245
...
lr0: 0.0054
lrf: 0.04952
...
optimizer: MuSGD

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

Просмотр кривых обучения#

train_args — не единственное, что хранится в контрольной точке. Каждая контрольная точка также содержит полный results.csv запуска по эпохам, который привёл к её созданию, вместе с итоговыми метриками валидации. Кривые для официальных контрольных точек YOLO26 опубликованы на Ultralytics Platform, а любой файл .pt можно перетащить в проект, чтобы построить график тех же данных; метаданные будут автоматически извлечены из файла.

Каждая контрольная точка охватывает этап, на котором она была создана, поэтому кривые COCO находятся в yolo26s.pt, а кривые Objects365 за 150 эпох — в yolo26s-objv1-150.pt.

Проверка ревизии кода#

ckpt["git"] содержит коммит, создавший контрольную точку, а эти коммиты находятся в общедоступных экспериментальных ветках репозитория Ultralytics, поэтому ты можешь проверить точный код обучения:

from ultralytics import YOLO

print(YOLO("yolo26n.pt").ckpt["git"])
# {'root': ..., 'branch': 'exp-main', 'commit': 'cb13d5f9cfbd6f299da3620c625f81d721dc2849', ...}
git fetch origin cb13d5f9cfbd6f299da3620c625f81d721dc2849
git checkout cb13d5f9cfbd6f299da3620c625f81d721dc2849

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

Гиперпараметры обучения YOLO26 для каждого размера модели#

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

Оптимизатор и скорость обучения#

Эти настройки оптимизатора и расписания использовались при дообучении на COCO для каждого размера; обрати внимание, насколько модель N отличается от остальных:

НастройкаNSMLX
optimizerMuSGDMuSGDMuSGDMuSGDMuSGD
lr00.00540.000380.000380.000380.00038
lrf0.04950.8820.8820.8820.882
momentum0.9470.9480.9480.9480.948
weight_decay0.000640.000270.000270.000270.00027
warmup_epochs0.980.990.990.990.99
epochs24570806040
batch128128128128128
imgsz640640640640640
Стратегия скорости обучения

Модель N использовала более высокую начальную скорость обучения с резким затуханием (lrf=0.0495), тогда как модели S/M/L/X использовали гораздо более низкую начальную LR с более плавным расписанием (lrf=0.882). Это отражает различия в динамике сходимости меньших и больших моделей: меньшим моделям нужны более агрессивные обновления для эффективного обучения.

Веса функции потерь#

Веса функции потерь балансируют три компонента функции потерь обнаружения — регрессию IoU ограничивающей рамки (box), классификацию (cls) и компонент регрессии расстояния до рамки (dfl). Обрати внимание: YOLO26 без DFL переиспользует коэффициент dfl для взвешивания потерь L1 по нормализованным расстояниям до рамок вместо distribution focal loss:

НастройкаNSMLX
box5.639.839.839.839.83
cls0.560.650.650.650.65
dfl9.040.960.960.960.96

Модель N отдаёт приоритет компоненту регрессии расстояния dfl, тогда как модели S/M/L/X смещают акцент на регрессию рамки на основе IoU. Потери классификации остаются относительно стабильными для всех размеров.

Конвейер аугментации#

Подробное объяснение каждой техники см. в руководстве по аугментации данных YOLO.

НастройкаNSMLX
mosaic0.9090.9920.9920.9920.992
mixup0.0120.050.4270.4270.427
copy_paste0.0750.4040.3040.4040.404
scale0.5620.90.950.950.95
fliplr0.6060.3040.3040.3040.304
degrees1.11~0~0~0~0
shear1.46~0~0~0~0
translate0.0710.2750.2750.2750.275
hsv_h0.0140.0130.0130.0130.013
hsv_s0.6450.3530.3530.3530.353
hsv_v0.5660.1940.1940.1940.194
bgr0.1060.00.00.00.0

Значения ~0, указанные ниже, в фактических контрольных точках меньше 0.01 (например, degrees=0.00012 для модели S), то есть аугментация практически отключена.

Для больших моделей в целом используются более агрессивные аугментации (более высокие mixup и масштабирование), поскольку у них больше ёмкость и они получают пользу от более сильной регуляризации. Модель N — единственный размер со значимыми аугментациями поворота, сдвига и BGR.

Внутренние параметры обучения#

Расширенный раздел: внутренние параметры конвейера

Контрольные точки также содержат параметры, использовавшиеся в экспериментальной ветке обучения, но не представленные как настраиваемые пользователем параметры в default.yaml:

НастройкаОписаниеNSMLX
muon_wВес обновления Muon в MuSGD0.5280.4360.4360.4360.436
sgd_wВес обновления SGD в MuSGD0.6740.4790.4790.4790.479
cls_wВнутренний вес классификации2.743.483.483.483.48
o2mВес потерь однократной и многократной головы1.00.7050.7050.7050.705
topkНазначение меток top-k85555

О том, что означают эти параметры при дообучении, см. в разделе FAQ об этих параметрах.

Дообучение YOLO26 на собственном датасете#

При дообучении YOLO26 на собственном датасете тебе не нужно воспроизводить весь рецепт предварительного обучения. Предварительно обученные веса уже содержат знания об аугментации и оптимизации, полученные при обучении на COCO. Дополнительные рекомендации по обучению см. в разделе Советы по обучению моделей.

Дообучение с настройками по умолчанию#

Дообучение со значениями по умолчанию
from ultralytics import YOLO

model = YOLO("yolo26n.pt")
results = model.train(data="your-dataset.yaml", epochs=100, imgsz=640)

Дообучение со значениями по умолчанию — надёжная базовая линия. Изменяй гиперпараметры только при наличии конкретной причины.

Когда изменять гиперпараметры YOLO26#

Небольшие датасеты (< 1 000 изображений):

  • Уменьши силу аугментации: mosaic=0.5, mixup=0.0, copy_paste=0.0
  • Уменьши скорость обучения и явно задай оптимизатор: optimizer=AdamW, lr0=0.001
  • Используй меньше эпох с параметром patience: epochs=50, patience=20
  • Рассмотри возможность заморозить слои backbone: freeze=10

Большие датасеты (> 50 000 изображений):

  • Точнее воспроизведи рецепт предварительного обучения
  • Рассмотри optimizer=MuSGD для более длительных запусков
  • Увеличь аугментацию: mosaic=1.0, mixup=0.3, scale=0.9

Изображения из специализированных областей (аэрофотосъёмка, медицина, подводная съёмка):

  • Увеличь flipud=0.5, если вертикальная ориентация меняется
  • Увеличь degrees, если объекты могут иметь произвольный угол поворота
  • Измени hsv_s и hsv_v, если условия освещения значительно отличаются от COCO

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

Выбор размера модели#

МодельОптимально дляРекомендации по размеру пакета
YOLO26nПограничные устройства, мобильные устройства, работа в реальном времени на CPUБольшие пакеты (64-128) на потребительских GPU
YOLO26sСбалансированная скорость и точностьСредние пакеты (32-64)
YOLO26mБолее высокая точность при умеренных вычислительных затратахМеньшие пакеты (16-32)
YOLO26lВысокая точность при наличии GPUНебольшие батчи (8–16) или несколько GPU
YOLO26xМаксимальная точность, развёртывание на сервереНебольшие батчи (4–8) или несколько GPU

Варианты экспорта и развёртывания см. в руководстве по экспорту и разделе Варианты развёртывания моделей.

Заключение#

Чекпоинты YOLO26 поставляются со встроенным полным рецептом обучения, поэтому точные гиперпараметры для каждого размера модели всегда доступны всего за один поиск train_args. Начни дообучение со значений по умолчанию, осознанно корректируй их с помощью таблиц на этой странице и проверяй каждое изменение на собственной валидационной выборке. Если по ходу работы возникнут вопросы, обратись к сообществу в репозитории Ultralytics на GitHub или на сервере Ultralytics в Discord.

Часто задаваемые вопросы#

  • Загрузи чекпоинт с помощью torch.load() и обратись к ключу train_args либо используй model.ckpt["train_args"] с API Ultralytics. Полные примеры см. в разделе Проверка параметров обучения чекпоинта YOLO26.

  • Каждый размер модели прошёл одинаковое предварительное обучение на Objects365 в течение 150 эпох, поэтому значения для COCO охватывают только этап дообучения. Более крупные модели сходятся на COCO за меньшее число этих эпох: 40 для X против 245 для N. Значения не являются строго монотонными (для S использовалось 70, для M — 80), поскольку были получены в результате поиска гиперпараметров для каждого размера. При дообучении на собственном наборе данных оптимальное число эпох зависит от размера и сложности набора данных, а не от размера модели. Используй раннюю остановку (patience), чтобы автоматически определить подходящий момент остановки.

  • Они относятся к экспериментальной ветке, в которой были созданы базовые чекпоинты, и записаны в train_args для воспроизводимости. Это не настраиваемые пользователем параметры в default.yaml, а их передача в model.train() вызывает ошибку недопустимого аргумента, поскольку выпущенный пакет их не считывает. При дообучении задавать их не нужно; значения для каждого размера модели см. в разделе Внутренние параметры обучения.

  • Нет. Каждый чекпоинт для COCO был дообучен на основе чекпоинта Objects365v1 того же размера, который уже прошёл 150 эпох обучения, как описано в разделе Этап 1: предварительное обучение на Objects365 и в статье о YOLO26. За опубликованными значениями не стоит запуск обучения на COCO с нуля, поэтому сравнение обучения с нуля с этими значениями некорректно.

  • Они находятся внутри чекпоинтов и представлены в виде графиков на Ultralytics Platform. Каждый чекпоинт сохраняет полный results.csv своего запуска для каждой эпохи, поэтому после добавления файла .pt в проект Platform графики потерь, динамики mAP и скоростей обучения строятся без какого-либо кода. См. раздел Просмотр кривых обучения. Для этапа Objects365 есть отдельный журнал в чекпоинтах yolo26*-objv1-150.pt.

  • Результаты будут близки к опубликованным метрикам, но не идентичны им. Для идентичной конфигурации переключись на коммит, записанный в чекпоинте, и обучай модель в этой ветке. См. раздел Проверка ревизии кода.

Комментарии