libreyolo train
Навчає одну модель на одному датасеті та записує контрольні точки, метрики й логи в каталог запуску. Кожен аргумент нижче має типове значення з визначення команди, яке може замінити власна конфігурація навчання сімейства моделей.
- Команда
libreyolo train- Обов'язково
data- Результат
- Контрольні точки, метрики й логи в runs/train/exp
Синопсис
libreyolo train data=<dataset.yaml> [model=<name|path>] [key=value ...]Аргументи задаються парами key=value, і POSIX-форма теж працює, тому epochs=50
і --epochs 50 означають той самий аргумент. Логічні значення приймають true
і false: amp=false перетворюється на --no-amp там, де прапорець має
заперечну форму.
Аргументи
Модель і дані
| Аргумент | Типове значення | Опис |
|---|---|---|
data | Шлях до YAML датасету (формат YOLO, напр. coco8.yaml). Обов'язковий | |
model | yolox-s | Назва моделі або шлях до ваг |
task | Явне перевизначення задачі: detect, segment, semantic, pose, classify, gaze, obb, point, depth | |
pretrained | true | Використовувати попередньо навчені ваги. false будує архітектуру й навчає з нуля |
allow_download_scripts | false | Дозволити вбудований Python у блоках завантаження в YAML датасету |
Цикл навчання
| Аргумент | Типове значення | Опис |
|---|---|---|
epochs | 300 | Епохи навчання |
batch | 16 | Розмір батча на пристрій |
imgsz | 640 | Розмір зображення для навчання: 640 (квадрат) або 480x640 (HxW) |
device | auto | Пристрій: 0, cpu, mps, auto |
workers | 4 | Робочі процеси завантажувача даних |
cache | false | Кешувати зображення, щоб прискорити завантаження даних: ram, disk, true, false |
seed | 0 | Випадкове зерно |
resume | Продовжити навчання: true або шлях до контрольної точки | |
amp | true | Автоматична змішана точність |
amp_dtype | float16 | Тип даних CUDA AMP: float16 або bfloat16 |
cuda_graph | false | Захоплювати прямий і зворотний проходи навчання у графи CUDA. Лише один GPU й лише підтримувані сімейства; решта працює в режимі eager |
lora | false | Донавчання LoRA для трансформерних сімейств, перелічених у розділі «Примітки» |
freeze | Заморозити шари: ціла кількість, список індексів або назви модулів |
Дистиляція
| Аргумент | Типове значення | Опис |
|---|---|---|
distill_model | Учитель: контрольна точка детектора або ідентифікатор фундаментального вчителя, наприклад dinov2, для дистиляції ознак бекбона | |
dis | Вага функції втрат дистиляції. Якщо не задано, діє опубліковане типове значення для цього типу втрат | |
distill_loss_type | mgd | Втрати на ознаках для вчителів-детекторів: mgd, cwd. Фундаментальні вчителі завжди використовують feat_mse |
Оптимізатор
| Аргумент | Типове значення | Опис |
|---|---|---|
optimizer | sgd | Оптимізатор: sgd, adam, adamw |
lr0 | 0.01 | Початкова швидкість навчання |
momentum | 0.937 | Момент SGD і коефіцієнт першого моменту для оптимізаторів Adam |
weight_decay | 0.0005 | L2-регуляризація |
nesterov | true | Момент Нестерова |
Планувальник
| Аргумент | Типове значення | Опис |
|---|---|---|
scheduler | yoloxwarmcos | Тип розкладу LR |
warmup_epochs | 5 | Тривалість розігріву |
warmup_lr_start | 0.0 | Початковий LR розігріву |
min_lr_ratio | 0.05 | Мінімальне співвідношення LR |
lr_drop | 100 | Епоха ступінчастого зниження LR для RF-DETR |
Аугментація
| Аргумент | Типове значення | Опис |
|---|---|---|
mosaic | 1.0 | Імовірність mosaic |
mixup | 1.0 | Імовірність mixup |
hsv_prob | 1.0 | Імовірність HSV-джитера |
flip_prob | 0.5 | Імовірність горизонтального віддзеркалення |
degrees | 10.0 | Діапазон обертання, плюс і мінус, у градусах |
translate | 0.1 | Коефіцієнт зсуву |
shear | 2.0 | Кут скошування |
mosaic_scale | (0.1,2.0) | Діапазон масштабу mosaic |
mixup_scale | (0.5,1.5) | Діапазон масштабу mixup |
no_aug_epochs | 15 | Вимкнути аугментацію на останні N епох |
EMA
| Аргумент | Типове значення | Опис |
|---|---|---|
ema | true | Експоненційне ковзне середнє |
ema_decay | 0.9998 | Коефіцієнт згасання EMA |
Валідація під час навчання
| Аргумент | Типове значення | Опис |
|---|---|---|
val | true | Валідувати під час навчання |
eval_interval | 10 | Валідувати кожні N епох |
max_det | 300 | Максимум передбачень на зображення після NMS у валідації |
eval_max_det | Обмеження оцінювача COCO. Якщо не задано, діє домовленість pycocotools AP@100 | |
faster_coco_eval | true | Використовувати C++-бекенд faster-coco-eval для метрик COCO, якщо його встановлено; інакше повертається до pycocotools |
save_plots | false | Зберігати підсумкові графіки валідації під час навчання |
patience | 50 | Терпіння ранньої зупинки. 0 вимикає її |
Вивід
| Аргумент | Типове значення | Опис |
|---|---|---|
project | runs/train | Корінь каталогу виводу |
name | exp | Назва експерименту |
exist_ok | false | Повторно використати наявний каталог виводу |
save_period | 10 | Зберігати контрольну точку кожні N епох |
log_interval | 10 | Записувати втрати в лог кожні N батчів |
Прапорці для агентів
| Аргумент | Типове значення | Опис |
|---|---|---|
json | false | Вивід JSON у stdout |
quiet | false | Придушити stderr |
dry_run | false | Визначити й надрукувати конфігурацію без виконання |
help_json | false | Вивести схему команди як JSON і вийти |
Приклади
# coco8.yaml постачається разом з пакетом і завантажує свої 8 зображень при першому використанні.libreyolo train model=LibreYOLO9s.pt data=coco8.yaml epochs=10 imgsz=640 batch=8# Друкує те, що використає запуск, включно з типовими значеннями сімейства,# і завершується без навчання та завантаження даних.libreyolo train model=LibreDFINEn.pt data=coco8.yaml epochs=10 dry_run=truelibreyolo train model=LibreYOLO9s.pt data=coco8.yaml \ epochs=50 batch=8 optimizer=adamw lr0=0.001 weight_decay=0.0001 \ patience=20 save_period=5 project=runs/train name=yolo9s-coco8 exist_ok=trueПримітки
Наведені вище типові значення використовуються не завжди
Кожне сімейство моделей несе власну конфігурацію навчання, і там, де вона
відрізняється від базової, її значення замінює типове значення команди для
будь-якого аргументу, який ви не задали явно. Якщо ви задаєте аргумент самі,
перемагає ваше значення. libreyolo cfg друкує базові типові значення та
перевизначення для кожного сімейства, і саме так можна побачити, що конкретне
сімейство використає насправді.
Найбільше це стосується imgsz. Типове значення команди дорівнює 640, і воно
не збігається з рідним входом кожної контрольної точки: опубліковані розміри
виявлення для RF-DETR становлять 384, 512, 576 і 704, а контрольні точки YOLOX
n і t працюють на 416. Для RF-DETR і DEIMv2 imgsz передається далі лише
тоді, коли його задано явно, тож інакше залишається чинним їхній власний розмір.
Іншим сімействам значення передається як є, і вони навчаються саме на ньому.
Найсуворіше поводиться FOMO: кожен розмір приймає лише свій рідний вхід (96, 192
і 224), тому для запуску FOMO потрібно задати відповідний imgsz, інакше запуск
зупиняється з помилкою. RF-DETR додатково вимагає, щоб значення ділилося на
розмір патча, помножений на кількість вікон, і повідомляє два найближчі
допустимі розміри, коли це не так.
Аргументи, які сімейство ігнорує
Не кожне сімейство читає кожен аргумент, і найпомітніше це на аугментаційних.
RF-DETR, D-FINE, DEIM, DEIMv2, RT-DETRv4 і DINOv2 навчаються через наскрізні
пайплайни без mosaic, без mixup і без афінного викривлення, тому mosaic,
mixup, hsv_prob, degrees, translate, shear, mosaic_scale і
mixup_scale там ні на що не впливають. EC використовує той самий пайплайн, але
все ж читає hsv_prob, degrees і translate, коли працює із задачею
оцінювання пози. Класифікаційні сімейства, SegFormer і NAFNet ігнорують увесь
цей набір, а разом з ним і flip_prob, бо їхнє віддзеркалення виконується з
фіксованою, а не з налаштовуваною ймовірністю. YOLO-NAS ігнорує лише mosaic,
оскільки замість нього аугментує завжди увімкненим афінним перетворенням для
кожного зразка. RF-DETR ігнорує ще три понад цей список: optimizer, momentum
і nesterov.
Задати один з них не є помилкою. Запуск виводить у stderr рядок з назвою
сімейства та аргументами, які він проігнорує, потім навчає, і саме цей рядок дає
авторитетний список для встановленої версії. Він також є єдиним сигналом, тому
скриптовий запуск із quiet=true придушує це попередження разом з усім іншим у
stderr.
Схожим чином поводиться val=false. Для більшості сімейств він встановлює
eval_interval у 0; RF-DETR не може так вимкнути валідацію й повідомляє, що
проігнорував запит.
Інша поведінка, яку варто знати
lora=true приймають RF-DETR, D-FINE, DEIM, DEIMv2, RT-DETR v1, v2 і v4, EC та
ConvNeXt. Будь-яке інше сімейство завершується з config_unsupported, замість
навчатися без нього.
pretrained=false у поєднанні з resume відхиляється для сімейств, які
підтримують навчання з нуля, оскільки ці два аргументи вимагають протилежного.
mosaic і mixup пишуться так у командному рядку, а в конфігурації їм
відповідають поля mosaic_prob і mixup_prob. У сімействах, де mixup
застосовується лише до зразків mosaic, mixup більший за нуль із mosaic на
нулі ніколи не спрацьовує, і запуск про це повідомляє.
dry_run=true визначає посилання на модель, застосовує типові значення
сімейства й друкує конфігурацію, з якою відбувалося б навчання. Він не завантажує
датасет, тому це дешевий спосіб переконатися, що аргумент отримав очікуване
значення.
stdout несе підсумковий об'єкт результату; прогрес і попередження йдуть у stderr.
Код виходу дорівнює 0 в разі успіху, 2 у разі помилки використання або
конфігурації, 3, коли датасет не вдається знайти чи прочитати, 4, коли не
вдається завантажити модель, і 1 для інших збоїв під час виконання.
Пов'язане: libreyolo doctor, щоб перевірити датасет перед
запуском, libreyolo monitor, щоб стежити за запуском у
браузері, libreyolo val, щоб виміряти результат.