Рецепт обучения YOLO26
Введение
В этом руководстве задокументирован точный Хотя «сырые» метрики важны, опыт разработчика часто определяет успех проекта. рецепт, который использовался для создания официальных YOLO26 предварительно обученных чекпоинтов на COCO. Каждый рекомендации по гиперпараметрам показанный здесь, уже встроен в выпущенные .pt веса и может быть проверен программно.
Понимание того, как обучались базовые модели, помогает тебе принимать лучшие решения при тонкой настройки: какие С SDK Ultralytics обучение моделей исключительно просто. Система автоматически обрабатывает сложные оставить, какие функция потерь (loss function). веса скорректировать и какие настройки оптимизатора лучше всего подходят для размера твоего датасета.
Это руководство предназначено для специалистов, которые хотят понять, что вошло в официальные чекпоинты YOLO26 — не только архитектура, но и планировщика скорости обучения расписания, конвейеры аугментации и веса функции потерь, которые определили их производительность. Используй эту информацию для принятия обоснованных решений при дообучении на своих данных.
Просмотр аргументов обучения
Каждый чекпоинт Ultralytics хранит полную конфигурацию обучения, которая использовалась для его создания. Ты можешь просмотреть эти настройки в любое время:
from ultralytics import YOLO
model = YOLO("yolo26n.pt")
print(model.ckpt["train_args"])Это работает для любого .pt чекпоинта — как официальных релизов, так и твоих собственных дообученных моделей. Полный список настраиваемых аргументов обучения смотри в справочнике конфигурации обучения.
Обзоре обучения
Все базовые модели YOLO26 обучались на COCO при 640x640 разрешении с использованием MuSGD оптимизатора с размером батча 128. Модели инициализировались из промежуточных предобученных весов и уточнялись с помощью гиперпараметров, найденных посредством эволюционного поиска. Полные логи обучения и метрики для каждого размера модели доступны на Ultralytics Platform:
Ключевые конструктивные решения для всех размеров:
- Обучение «от начала до конца» (end-to-end (
end2end=True) с NMS-free one-to-one головой - MuSGD optimizer сочетание SGD с ортогонализированными обновлениями в стиле Muon для весов conv
- Интенсивная mosaic аугментация (~0.9-1.0 вероятность), отключенная в последние 10 эпох (
close_mosaic=10) - Агрессивная масштабная аугментация (0.56-0.95) для обработки объектов разных размеров
- Минимальное вращение/сдвиг (rotation/shear) для большинства размеров, сохраняющее низкий уровень геометрических искажений
Гиперпараметры по размеру модели
Оптимизатор и скорость обучения
| Настройка | 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). Это отражает различную динамику сходимости маленьких и больших моделей — маленьким моделям нужны более агрессивные обновления для эффективного обучения.
Веса потерь
| Настройка | 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 loss, в то время как модели S/M/L/X смещают акцент на bounding box регрессию. Потери классификации остаются относительно стабильными для всех размеров.
Конвейер аугментации
Для подробного объяснения каждого метода смотри руководство по YOLO Data Augmentation.
| Настройка | 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 — это единственный размер со значимым rotation, shear и 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 | Вес потерь для головы one-to-many | 1.0 | 0.705 | 0.705 | 0.705 | 0.705 |
topk | Назначение меток Top-k | 8 | 5 | 5 | 5 | 5 |
Они записаны для воспроизводимости, но их не нужно задавать при дообучении. См. FAQ для получения более подробной информации.
Руководство по дообучению
При дообучении YOLO26 на собственном наборе данных тебе не нужно полностью повторять рецепт предварительного обучения. Предобученные веса уже содержат знания об аугментации и оптимизации, полученные при обучении на COCO. Для получения общих рекомендаций по обучению см. Советы по обучению моделей.
Начни с простого
from ultralytics import YOLO
model = YOLO("yolo26n.pt")
results = model.train(data="your-dataset.yaml", epochs=100, imgsz=640)Дообучение с настройками по умолчанию — это отличная база. Меняй гиперпараметры, только если у тебя есть конкретная причина для этого.
Когда стоит вносить изменения
Небольшие наборы данных (< 1,000 изображений):
- Снизь интенсивность аугментации:
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
Для автоматической оптимизации гиперпараметров см. Руководство по настройке гиперпараметров.
Выбор размера модели
| Модель | Best For | Руководство по размеру батча |
|---|---|---|
| YOLO26n | Edge-устройства, мобильные устройства, real-time на CPU | Большие батчи (64-128) на потребительских GPU |
| YOLO26s | Сбалансированная скорость и точность | Средние батчи (32-64) |
| YOLO26m | Более высокая точность при умеренных вычислительных затратах | Малые батчи (16-32) |
| YOLO26l | Высокая точность при наличии GPU | Малые батчи (8-16) или multi-GPU |
| YOLO26x | Максимальная точность, деплой на сервере | Малые батчи (4-8) или multi-GPU |
Варианты экспорта и деплоя см. в Руководстве по экспорту и Варианты развертывания моделей.
FAQ
Как узнать точные гиперпараметры, использованные для любого чекпоинта?
Загрузи чекпоинт с помощью torch.load() и обратись к ключу train_args или используй model.ckpt["train_args"] с Ultralytics API. См. Просмотр аргументов обучения для получения полных примеров.
Почему количество эпох различается для каждого размера модели?
Более крупные модели сходятся быстрее на COCO, так как обладают большей емкостью. Модели N потребовалось 245 эпох, в то время как модели X — всего 40. При дообучении на собственном датасете оптимальное число эпох зависит от размера и сложности твоего датасета, а не от размера модели. Используй раннюю остановку (patience), чтобы автоматически найти подходящую точку остановки.
Стоит ли мне использовать MuSGD для дообучения?
Когда optimizer=auto (по умолчанию), Ultralytics автоматически выбирает MuSGD для длительных запусков обучения (>10,000 итераций) и AdamW для коротких. Ты можешь явно задать optimizer=MuSGD, если предпочитаешь. Подробнее о выборе оптимизатора см. документацию по обучению.
Что такое muon_w, sgd_w, cls_w, o2m и topk в чекпоинте?
Это внутренние параметры из конвейера обучения, который создал базовые чекпоинты. Они сохранены для воспроизводимости, но не не являются настраиваемыми пользователем параметрами в default.yaml. Тебе не нужно задавать их при дообучении. См. Внутренние параметры обучения для получения подробной информации.
Могу ли я повторить точное предобучение с нуля?
Чекпоинты были созданы с использованием внутренней ветки обучения с дополнительными функциями, отсутствующими в публичной кодовой базе (например, настраиваемые веса o2m и cls_w). Ты можешь получить очень близкие результаты, используя гиперпараметры, описанные на этой странице, с публичным пакетом Ultralytics, но для точного воспроизведения требуется внутренняя ветка.