Link to this sectionРецепт обучения YOLO26#
Link to this sectionВведение#
В этом руководстве задокументирован точный рецепт обучения, использованный для создания официальных предобученных чекпоинтов YOLO26 на COCO. Все представленные здесь гиперпараметры уже встроены в выпущенные .pt веса и могут быть просмотрены программно.
Понимание того, как обучались базовые модели, помогает тебе принимать более обоснованные решения при тонкой настройке: какие аугментации данных оставить, какие веса функции потерь скорректировать и какие настройки оптимизатора лучше всего подходят для размера твоего датасета.
Это руководство предназначено для специалистов, которые хотят понять, что легло в основу официальных чекпоинтов YOLO26 — не только архитектура, но и графики скорости обучения, конвейеры аугментации и веса потерь, которые определили их производительность. Используй эту информацию для принятия обоснованных решений при дообучении на своих данных.
Link to this sectionИзучение аргументов обучения#
Каждый чекпоинт Ultralytics хранит полную конфигурацию обучения, использованную для его создания. Ты можешь изучить эти настройки в любое время:
from ultralytics import YOLO
model = YOLO("yolo26n.pt")
print(model.ckpt["train_args"])Это работает для любого чекпоинта .pt — как для официальных релизов, так и для твоих собственных дообученных моделей. Полный список настраиваемых аргументов обучения см. в справочнике конфигурации обучения.
Link to this sectionОбзор обучения#
Все базовые модели YOLO26 были обучены на COCO при разрешении 640x640 с использованием оптимизатора MuSGD и размером батча 128. Модели были инициализированы из промежуточных предобученных весов и доработаны с помощью гиперпараметров, найденных путем эволюционного поиска. Полные логи обучения и метрики для каждой модели доступны на платформе Ultralytics:
Ключевые конструктивные решения для всех размеров:
- End-to-end обучение (
end2end=True) с головой one-to-one без NMS - Оптимизатор MuSGD, сочетающий SGD с ортогонализированными обновлениями в стиле Muon для весов свертки
- Интенсивная мозаичная аугментация (вероятность ~0.9-1.0), отключаемая на последних 10 эпохах (
close_mosaic=10) - Агрессивная аугментация масштаба (0.56-0.95) для обработки объектов разного размера
- Минимальный поворот/сдвиг для большинства размеров, поддерживающий низкие геометрические искажения
Link to this sectionГиперпараметры по размеру модели#
Link to this sectionОптимизатор и скорость обучения#
| Настройка | 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). Это отражает разную динамику сходимости маленьких и больших моделей — маленьким моделям нужны более агрессивные обновления для эффективного обучения.
Link to this sectionВеса функции потерь#
| Настройка | 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 смещают акцент на регрессию bounding box. Потеря классификации остается относительно постоянной для всех размеров.
Link to this sectionКонвейер аугментации#
Для подробного объяснения каждого метода см. руководство по аугментации данных 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 |
Более крупные модели в целом используют более агрессивную аугментацию (более высокие значения mixup, copy-paste и scale), так как они обладают большей емкостью и выигрывают от более сильной регуляризации. Модель N — единственный размер со значительной аугментацией поворота, сдвига и BGR.
Link to this sectionВнутренние параметры обучения#
Продвинутый уровень: параметры внутреннего конвейера
Чекпоинты также содержат параметры, которые использовались во внутреннем конвейере обучения, но не представлены как настраиваемые пользователем параметры в 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.
Link to this sectionРуководство по дообучению#
При дообучении YOLO26 на своем наборе данных тебе не нужно повторять весь рецепт предварительного обучения. Предобученные веса уже содержат знания об аугментации и оптимизации, полученные при обучении на COCO. Общие рекомендации по обучению см. в советах по обучению моделей.
Link to this sectionНачни с простого#
from ultralytics import YOLO
model = YOLO("yolo26n.pt")
results = model.train(data="your-dataset.yaml", epochs=100, imgsz=640)Дообучение с настройками по умолчанию — это сильный базовый вариант. Корректируй гиперпараметры только если у тебя есть на то веская причина.
Link to this sectionКогда вносить изменения#
Небольшие наборы данных (< 1000 изображений):
- Снизь силу аугментации:
mosaic=0.5,mixup=0.0,copy_paste=0.0 - Уменьши скорость обучения:
lr0=0.001 - Используй меньше эпох с ограничением:
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
Для автоматической оптимизации гиперпараметров обратись к руководству по настройке гиперпараметров.
Link to this sectionВыбор размера модели#
| Модель | Лучше всего подходит для | Рекомендации по размеру батча |
|---|---|---|
| YOLO26n | Периферийные устройства, мобильные устройства, работа в реальном времени на CPU | Большие батчи (64-128) на потребительских GPU |
| YOLO26s | Баланс скорости и точности | Средние батчи (32-64) |
| YOLO26m | Более высокая точность при умеренных вычислительных затратах | Маленькие батчи (16-32) |
| YOLO26l | Высокая точность при наличии GPU | Маленькие батчи (8-16) или несколько GPU |
| YOLO26x | Максимальная точность, развертывание на сервере | Маленькие батчи (4-8) или несколько GPU |
Информацию о вариантах экспорта и развертывания см. в руководстве по экспорту и вариантах развертывания модели.
Link to this sectionЧасто задаваемые вопросы (FAQ)#
Link to this sectionКак увидеть точные гиперпараметры, использованные для любой контрольной точки?#
Загрузи контрольную точку с помощью torch.load() и обратись к ключу train_args или используй model.ckpt["train_args"] с помощью API Ultralytics. Полные примеры см. в разделе Проверка аргументов обучения.
Link to this sectionПочему количество эпох различается для каждой модели?#
Более крупные модели сходятся быстрее на COCO, так как имеют большую емкость. Модели N потребовалось 245 эпох, тогда как модели X — всего 40. При дообучении на собственном наборе данных оптимальное количество эпох зависит от размера и сложности твоего набора данных, а не от размера модели. Используй раннюю остановку (patience), чтобы автоматически найти правильный момент для завершения.
Link to this sectionСтоит ли использовать MuSGD для дообучения?#
Когда установлен optimizer=auto (по умолчанию), Ultralytics автоматически выбирает MuSGD для длительных тренировок (>10 000 итераций) и AdamW для коротких. Если хочешь, можешь явно задать optimizer=MuSGD. Подробнее о выборе оптимизатора см. в документации по обучению.
Link to this sectionЧто такое muon_w, sgd_w, cls_w, o2m и topk в контрольной точке?#
Это внутренние параметры тренировочного конвейера, который создал базовые контрольные точки. Они хранятся для воспроизводимости, но не являются пользовательскими настройками в default.yaml. Тебе не нужно устанавливать их при дообучении. Подробности см. в разделе Внутренние параметры обучения.
Link to this sectionМогу ли я в точности повторить предварительное обучение с нуля?#
Контрольные точки были созданы с использованием внутренней ветки обучения с дополнительными функциями, отсутствующими в публичной кодовой базе (такими как настраиваемые веса o2m и cls_w). Ты можешь получить очень близкие результаты, используя гиперпараметры, описанные на этой странице в публичном пакете Ultralytics, но для точного воспроизведения требуется внутренняя ветка.