Перейти к содержанию

Рецепт обучения 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) для обработки объектов различных размеров
  • Минимальное вращение/сдвиг для большинства размеров, с сохранением низкого уровня геометрических искажений

Гиперпараметры для каждого размера модели

Оптимизатор и скорость обучения

НастройкаNSMLX
optimizerMuSGDMuSGDMuSGDMuSGDMuSGD
lr00.00540.000380.000380.000380.00038
lrf0.04950.8820.8820.8820.882
momentum0.9470.9480.9480.9480.948
weight_decay0.000640.000270.000270.000270.00027
warmup_epochs0.980.990.990.990.99
epochs24570806040
batch128128128128128
imgsz640640640640640

Стратегия скорости обучения

Модель N использовала более высокую начальную скорость обучения с крутым затуханием (lrf=0.0495), в то время как модели S/M/L/X использовали значительно более низкую начальную скорость обучения с более мягким графиком (lrf=0.882). Это отражает различную динамику сходимости меньших по сравнению с большими моделями — меньшим моделям требуются более агрессивные обновления для эффективного обучения.

Веса потерь

НастройкаNSMLX
box5.639.839.839.839.83
cls0.560.650.650.650.65
dfl9.040.960.960.960.96

Модель N отдает приоритет потере DFL, в то время как модели S/M/L/X смещают акцент на регрессию ограничивающих рамок. Потеря классификации остается относительно постоянной для всех размеров.

Конвейер аугментации

Подробное объяснение каждой техники см. в руководстве по аугментации данных YOLO.

НастройкаNSMLX
mosaic0.9090.9920.9920.9920.992
mixup0.0120.050.4270.4270.427
copy_paste0.0750.4040.3040.4040.404
scale0.5620.90.950.950.95
fliplr0.6060.3040.3040.3040.304
degrees1.11~0~0~0~0
shear1.46~0~0~0~0
translate0.0710.2750.2750.2750.275
hsv_h0.0140.0130.0130.0130.013
hsv_s0.6450.3530.3530.3530.353
hsv_v0.5660.1940.1940.1940.194
bgr0.1060.00.00.00.0

Большие модели используют более агрессивную аугментацию в целом (более высокие значения MixUp, copy-paste и scale), поскольку они обладают большей емкостью и выигрывают от более сильной регуляризации. Модель N — единственный размер с существенной аугментацией вращения, сдвига и BGR.

Внутренние параметры обучения

Дополнительно: параметры внутреннего конвейера

Контрольные точки также содержат параметры, которые использовались во внутреннем конвейере обучения, но не доступны как настраиваемые пользователем параметры в default.yaml:

НастройкаОписаниеNSMLX
muon_wВес обновления Muon в MuSGD0.5280.4360.4360.4360.436
sgd_wВес обновления SGD в MuSGD0.6740.4790.4790.4790.479
cls_wВнутренний вес классификации2.743.483.483.483.48
o2mВес функции потерь для головы типа «один ко многим»1.00.7050.7050.7050.705
topkНазначение меток Top-k85555

Они записываются для воспроизводимости, но не требуют установки при дообучении. Дополнительную информацию см. в разделе 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, но точное воспроизведение требует внутренней ветки.



📅 Создано 5 дней назад ✏️ Обновлено 4 дней назад
Y-T-Gdependabotraimbekovm

Комментарии