Рецепт обучения 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.pt | yolo26n-objv1-150.pt |
yolo26s.pt | yolo26s-objv1-150.pt |
yolo26m.pt | yolo26m-objv1-150.pt |
yolo26l.pt | yolo26l-objv1-150.pt |
yolo26x.pt | yolo26x-objv1-150.pt |
При предварительном обучении использовались в основном настройки по умолчанию, а не найденные значения. lr0, lrf, momentum, weight_decay, box и cls соответствуют default.yaml, а warmup_epochs, close_mosaic и dfl были переопределены. Настройки общие для всех размеров, за исключением warmup_epochs для X, силы аугментаций и внутренних весов MuSGD и головы, перечисленных после таблиц:
| Настройка | Значение |
|---|---|
data | Objects365v1 |
epochs | 150 |
imgsz | 640 |
batch | 128 |
optimizer | MuSGD |
lr0 / lrf | 0.01 / 0.01 |
momentum | 0.937 |
weight_decay | 0.0005 |
warmup_epochs | 1 (2 для X) |
close_mosaic | 8 |
box / cls / dfl | 7.5 / 0.5 / 6.0 |
| Аугментация | N | S | M | L | X |
|---|---|---|---|---|---|
mosaic | 1.0 | 1.0 | 1.0 | 1.0 | 1.0 |
mixup | 0.0 | 0.05 | 0.15 | 0.15 | 0.2 |
copy_paste | 0.1 | 0.15 | 0.4 | 0.5 | 0.6 |
scale | 0.5 | 0.9 | 0.9 | 0.9 | 0.9 |
Эти таблицы охватывают настройки, определяющие предварительное обучение, но не всю конфигурацию. В контрольных точках записано более 100 аргументов, поэтому выведи train_args, как показано ниже, чтобы получить полный авторитетный список.
Расширенный раздел: внутренние параметры предварительного обучения
При предварительном обучении также изменялись экспериментальные параметры ветки того же типа, что описаны в разделе Внутренние параметры обучения. Значение cls_w составляло 1.0 для каждого размера:
| Настройка | N | S | M | L | X |
|---|---|---|---|---|---|
muon_w | 0.45 | 0.5 | 0.45 | 0.45 | 0.5 |
sgd_w | 0.55 | 0.5 | 0.55 | 0.55 | 0.6 |
o2m | 0.1 | 0.1 | 0.1 | 1.0 | 1.0 |
Тебе не нужен датасет 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 отличается от остальных:
| Настройка | N | S | M | L | X |
|---|---|---|---|---|---|
optimizer | MuSGD | MuSGD | MuSGD | MuSGD | MuSGD |
lr0 | 0.0054 | 0.00038 | 0.00038 | 0.00038 | 0.00038 |
lrf | 0.0495 | 0.882 | 0.882 | 0.882 | 0.882 |
momentum | 0.947 | 0.948 | 0.948 | 0.948 | 0.948 |
weight_decay | 0.00064 | 0.00027 | 0.00027 | 0.00027 | 0.00027 |
warmup_epochs | 0.98 | 0.99 | 0.99 | 0.99 | 0.99 |
epochs | 245 | 70 | 80 | 60 | 40 |
batch | 128 | 128 | 128 | 128 | 128 |
imgsz | 640 | 640 | 640 | 640 | 640 |
Модель N использовала более высокую начальную скорость обучения с резким затуханием (lrf=0.0495), тогда как модели S/M/L/X использовали гораздо более низкую начальную LR с более плавным расписанием (lrf=0.882). Это отражает различия в динамике сходимости меньших и больших моделей: меньшим моделям нужны более агрессивные обновления для эффективного обучения.
Веса функции потерь#
Веса функции потерь балансируют три компонента функции потерь обнаружения — регрессию IoU ограничивающей рамки (box), классификацию (cls) и компонент регрессии расстояния до рамки (dfl). Обрати внимание: YOLO26 без DFL переиспользует коэффициент dfl для взвешивания потерь L1 по нормализованным расстояниям до рамок вместо distribution focal loss:
| Настройка | N | S | M | L | X |
|---|---|---|---|---|---|
box | 5.63 | 9.83 | 9.83 | 9.83 | 9.83 |
cls | 0.56 | 0.65 | 0.65 | 0.65 | 0.65 |
dfl | 9.04 | 0.96 | 0.96 | 0.96 | 0.96 |
Модель N отдаёт приоритет компоненту регрессии расстояния dfl, тогда как модели S/M/L/X смещают акцент на регрессию рамки на основе IoU. Потери классификации остаются относительно стабильными для всех размеров.
Конвейер аугментации#
Подробное объяснение каждой техники см. в руководстве по аугментации данных YOLO.
| Настройка | N | S | M | L | X |
|---|---|---|---|---|---|
mosaic | 0.909 | 0.992 | 0.992 | 0.992 | 0.992 |
mixup | 0.012 | 0.05 | 0.427 | 0.427 | 0.427 |
copy_paste | 0.075 | 0.404 | 0.304 | 0.404 | 0.404 |
scale | 0.562 | 0.9 | 0.95 | 0.95 | 0.95 |
fliplr | 0.606 | 0.304 | 0.304 | 0.304 | 0.304 |
degrees | 1.11 | ~0 | ~0 | ~0 | ~0 |
shear | 1.46 | ~0 | ~0 | ~0 | ~0 |
translate | 0.071 | 0.275 | 0.275 | 0.275 | 0.275 |
hsv_h | 0.014 | 0.013 | 0.013 | 0.013 | 0.013 |
hsv_s | 0.645 | 0.353 | 0.353 | 0.353 | 0.353 |
hsv_v | 0.566 | 0.194 | 0.194 | 0.194 | 0.194 |
bgr | 0.106 | 0.0 | 0.0 | 0.0 | 0.0 |
Значения ~0, указанные ниже, в фактических контрольных точках меньше 0.01 (например, degrees=0.00012 для модели S), то есть аугментация практически отключена.
Для больших моделей в целом используются более агрессивные аугментации (более высокие mixup и масштабирование), поскольку у них больше ёмкость и они получают пользу от более сильной регуляризации. Модель N — единственный размер со значимыми аугментациями поворота, сдвига и BGR.
Внутренние параметры обучения#
Расширенный раздел: внутренние параметры конвейера
Контрольные точки также содержат параметры, использовавшиеся в экспериментальной ветке обучения, но не представленные как настраиваемые пользователем параметры в default.yaml:
| Настройка | Описание | N | S | M | L | X |
|---|---|---|---|---|---|---|
muon_w | Вес обновления Muon в MuSGD | 0.528 | 0.436 | 0.436 | 0.436 | 0.436 |
sgd_w | Вес обновления SGD в MuSGD | 0.674 | 0.479 | 0.479 | 0.479 | 0.479 |
cls_w | Внутренний вес классификации | 2.74 | 3.48 | 3.48 | 3.48 | 3.48 |
o2m | Вес потерь однократной и многократной головы | 1.0 | 0.705 | 0.705 | 0.705 | 0.705 |
topk | Назначение меток top-k | 8 | 5 | 5 | 5 | 5 |
О том, что означают эти параметры при дообучении, см. в разделе 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.Результаты будут близки к опубликованным метрикам, но не идентичны им. Для идентичной конфигурации переключись на коммит, записанный в чекпоинте, и обучай модель в этой ветке. См. раздел Проверка ревизии кода.