Рецепт обучения YOLO26#
Введение#
В этом руководстве описан точный рецепт обучения, использованный для получения официальных предобученных чекпоинтов YOLO26 на датасете COCO. Каждый показанный здесь гиперпараметр уже встроен в выпущенные веса .pt и может быть проверен программно.
Понимание того, что вошло в официальные чекпоинты (не только архитектура, но и расписания скорости обучения, конвейеры аугментации и веса потерь, которые сформировали их производительность), помогает тебе принимать более правильные решения при тонкой настройке: какие аугментации данных оставить, какие веса функции потерь скорректировать и какие настройки оптимизатора лучше всего подходят под размер твоего датасета.
Обзор обучения#
Все базовые модели YOLO26 были обучены на COCO при разрешении 640x640 с использованием оптимизатора MuSGD и batch size 128. Вместо запуска с нуля со случайными весами в рамках одного прогона модели инициализировались промежуточными предварительно обученными весами и дорабатывались с помощью гиперпараметров, найденных посредством evolutionary search. Полные логи обучения и метрики для каждого размера модели доступны на Ultralytics Platform.
Основные проектные решения для всех размеров:
- Сквозное обучение (end-to-end) (
end2end=True) с головой один-к-одному без NMS - Оптимизатор MuSGD, объединяющий SGD с ортогонализированными обновлениями в стиле Muon для весовых матриц (2D линейные веса и 4D сверточные фильтры, которые изменяются до 2D)
- Интенсивная мозаичная аугментация (mosaic) (вероятность ~0.9–1.0), отключаемая на последних 10 эпохах (
close_mosaic=10) - Агрессивная аугментация масштабирования (0.56-0.95) для обработки объектов разных размеров
- Минимальный поворот/сдвиг для большинства размеров, сохраняющий низкий уровень геометрических искажений
Проверка аргументов обучения чекпоинта 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 — как для официальных релизов, так и для твоих собственных дообученных моделей. Полный список настраиваемых аргументов обучения см. в справочнике по конфигурации обучения.
Гиперпараметры обучения YOLO26 по размеру модели#
В таблицах ниже рецепт сгруппирован по категориям: оптимизатор и расписание, веса потерь и аугментация. Каждое значение взято прямо из 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 на нормализованных расстояниях рамок, а не фокальных потерь распределения:
| Настройка | 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, copy-paste и масштаб), так как у них больше емкость и они извлекают пользу из более сильной регуляризации. Модель 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 - Снизь скорость обучения:
lr0=0.001 - Используй меньше эпох с терпением (patience):
epochs=50,patience=20 - Рассмотри возможность заморозки слоев бэкбона:
freeze=10
Большие наборы данных (> 50 000 изображений):
- Придерживайся рецепта предварительного обучения более точно
- Рассмотри
optimizer=MuSGDдля более долгих запусков - Увеличь аугментацию:
mosaic=1.0,mixup=0.3,scale=0.9
Специфические предметные области (аэрофотосъемка, медицина, подводная съемка):
- Увеличь
flipud=0.5, если вертикальная ориентация различается - Увеличь
degrees, если объекты появляются под произвольными углами поворота - Настрой
hsv_sиhsv_v, если условия освещения существенно отличаются от COCO
Для автоматической оптимизации гиперпараметров см. руководство по настройке гиперпараметров.
Выбор размера модели#
| Модель | Лучший выбор для | Рекомендации по размеру пакета (Batch Size) |
|---|---|---|
| YOLO26n | Edge-устройства, мобильные устройства, работа в реальном времени на CPU | Большие пакеты (64-128) на потребительских GPU |
| YOLO26s | Баланс скорости и точности | Средние пакеты (32-64) |
| YOLO26m | Более высокая точность при умеренных вычислительных затратах | Малые пакеты (16-32) |
| YOLO26l | Высокая точность при наличии GPU | Малые пакеты (8-16) или многопроцессорные конфигурации (multi-GPU) |
| YOLO26x | Максимальная точность, серверное развертывание | Малые пакеты (4-8) или многопроцессорные конфигурации (multi-GPU) |
Варианты экспорта и развертывания описаны в руководстве по экспорту и в разделе Варианты развертывания моделей.
Заключение#
Чекпоинты YOLO26 поставляются со встроенным полным рецептом обучения, поэтому точные гиперпараметры для каждого размера модели всегда доступны на расстоянии одного поиска train_args. Начни тонкую настройку с дефолтных значений, целенаправленно вноси изменения, используя таблицы на этой странице, и проверяй каждое изменение на своем валидационном наборе. Если по ходу дела возникают вопросы, задай их сообществу в репозитории Ultralytics на GitHub или на сервере Ultralytics в Discord.
FAQ#
Загрузи чекпоинт с помощью
torch.load()и обратись к ключуtrain_argsлибо используйmodel.ckpt["train_args"]с API Ultralytics. Полные примеры см. в разделе Проверка аргументов обучения чекпоинтов YOLO26.Более крупным моделям, как правило, требовалось меньше эпох на COCO, потому что их большая емкость ускоряет сходимость: модель X обучалась 40 эпох против 245 для N, хотя количество не является строго монотонным (S использовала 70, M — 80). При тонкой настройке на твоем собственном датасете оптимальное количество эпох зависит от размера и сложности твоего датасета, а не от размера модели. Используйте раннюю остановку (
patience), чтобы автоматически найти правильную точку останова.Обычно тебе не нужно выбирать: с дефолтным
optimizer=autoUltralytics автоматически выбирает MuSGD для долгих запусков обучения (>10 000 итераций) и AdamW для более коротких. При желании ты можешь явно задатьoptimizer=MuSGD. Подробнее о том, как работает MuSGD, см. в документации по обучению.Это внутренние параметры конвейера обучения, который создал базовые чекпоинты, записанные в
train_argsдля воспроизводимости. Они не являются настраиваемыми пользователем параметрами вdefault.yaml, и их передача вmodel.train()вызывает ошибку недопустимого аргумента — публичный пакет их не читает. Тебе не нужно задавать их при тонкой настройке; их значения для каждого размера модели см. во внутренних параметрах обучения.Не совсем: чекпоинты были созданы с использованием внутренней ветки обучения с дополнительными функциями, отсутствующими в публичной кодовой базе (например, настраиваемые веса
o2mиcls_w). Ты можешь получить очень близкие результаты, используя гиперпараметры, документированные на этой странице с публичным пакетом Ultralytics, но для точного воспроизведения требуется внутренняя ветка.