Рецепт обучения YOLO26
Введение
В этом руководстве подробно описан точный обучение рецепт, использованный для создания официальных YOLO26 предварительно обученных контрольных точек на COCO. Каждый гиперпараметр показанный здесь, уже встроен в выпущенные .pt веса и может быть проверен программно.
Понимание того, как обучались базовые модели, помогает принимать более обоснованные решения при дообучении: какие аугментации данных сохранить, какие веса функции потерь скорректировать и какие настройки оптимизатора лучше всего подходят для размера вашего набора данных.
Для кого это руководство?
Это руководство предназначено для специалистов, которые хотят понять, что легло в основу официальных контрольных точек YOLO26 — не только архитектуру, но и расписания скорости обучения, конвейеры аугментации и веса потерь, которые определили их производительность. Используйте эту информацию для принятия обоснованных решений при дообучении на собственных данных.
Проверка аргументов обучения
Каждая контрольная точка Ultralytics хранит полную конфигурацию обучения, использованную для ее создания. Вы можете просмотреть эти настройки в любое время:
Проверить аргументы обучения контрольной точки
from ultralytics import YOLO
model = YOLO("yolo26n.pt")
print(model.ckpt["train_args"])
import torch
# Load any official checkpoint
ckpt = torch.load("yolo26n.pt", map_location="cpu", weights_only=False)
# Print all training arguments
for k, v in sorted(ckpt["train_args"].items()):
print(f"{k}: {v}")
Это работает для любой .pt контрольной точки — как для официальных релизов, так и для ваших собственных дообученных моделей. Полный список настраиваемых аргументов обучения см. в разделе справочник по конфигурации обучения.
Обзор обучения
Все базовые модели YOLO26 были обучены на COCO с разрешением 640x640 с использованием оптимизатора MuSGD и размером пакета 128. Модели были инициализированы промежуточными предварительно обученными весами и доработаны с помощью гиперпараметров, найденных путем эволюционного поиска. Полные журналы обучения и метрики для каждого размера модели доступны на платформе Ultralytics:
Ключевые проектные решения для всех размеров:
- Сквозное обучение (
end2end=True) с головой типа «один к одному» без NMS - Оптимизатор MuSGD, объединяющий SGD с ортогонализованными обновлениями в стиле Muon для весов сверточных слоев
- Интенсивная аугментация mosaic (вероятность ~0.9-1.0) отключена в последние 10 эпох (
close_mosaic=10) - Агрессивная аугментация масштаба (0.56-0.95) для обработки объектов различных размеров
- Минимальное вращение/сдвиг для большинства размеров, с сохранением низкого уровня геометрических искажений
Гиперпараметры для каждого размера модели
Оптимизатор и скорость обучения
| Настройка | 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 использовали значительно более низкую начальную скорость обучения с более мягким графиком (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, в то время как модели S/M/L/X смещают акцент на регрессию ограничивающих рамок. Потеря классификации остается относительно постоянной для всех размеров.
Конвейер аугментации
Подробное объяснение каждой техники см. в руководстве по аугментации данных 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.
Внутренние параметры обучения
Дополнительно: параметры внутреннего конвейера
Контрольные точки также содержат параметры, которые использовались во внутреннем конвейере обучения, но не доступны как настраиваемые пользователем параметры в 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 на собственном наборе данных нет необходимости полностью воспроизводить рецепт предварительного обучения. Предварительно обученные веса уже содержат знания об аугментации и оптимизации, полученные в ходе обучения на COCO. Общие рекомендации по обучению моделей см. в разделе Советы по обучению моделей.
Начните с простого
Дообучение с параметрами по умолчанию
from ultralytics import YOLO
model = YOLO("yolo26n.pt")
results = model.train(data="your-dataset.yaml", epochs=100, imgsz=640)
yolo train model=yolo26n.pt data=your-dataset.yaml epochs=100 imgsz=640
Дообучение с параметрами по умолчанию является надежной отправной точкой. Изменяйте гиперпараметры только при наличии веской причины.
Когда корректировать
Small datasets (< 1,000 images):
- Снизить интенсивность аугментации:
mosaic=0.5,mixup=0.0,copy_paste=0.0 - Снизить скорость обучения:
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 |
Для получения информации о параметрах экспорта и развертывания см. руководство по экспорту и параметры развертывания модели.
Часто задаваемые вопросы
Как просмотреть точные гиперпараметры, использованные для любой контрольной точки?
Загрузите контрольную точку с помощью torch.load() и получите доступ к train_args ключу, или используйте model.ckpt["train_args"] с помощью API Ultralytics. См. Проверка аргументов обучения для полных примеров.
Почему количество эпох различается для каждого размера модели?
Более крупные модели быстрее сходятся на 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, но точное воспроизведение требует внутренней ветки.