Матриця аугментацій
Установлення параметра аугментації не гарантує, що він потрапить до пайплайна. На цій сторінці зафіксовано, як кожне придатне до навчання сімейство обробляє кожен параметр TrainConfig, на основі декларативної таблиці, яку бібліотека постачає як єдине джерело істини.
Параметри
Це назви полів TrainConfig, а не варіанти написання в CLI. CLI зіставляє з
ними власні псевдоніми, тому --mosaic установлює mosaic_prob.
| Параметр | Значення |
|---|---|
mosaic_prob | Імовірність створення мозаїчного зразка з 4 зображень |
mixup_prob | Імовірність домішування другого зразка |
hsv_prob | Імовірність випадкової зміни кольорів HSV |
flip_prob | Імовірність горизонтального віддзеркалення |
degrees | Діапазон випадкового повороту для афінного перетворення в градусах |
translate | Частка випадкового зміщення для афінного перетворення |
mosaic_scale | Діапазон випадкового масштабу для афінного перетворення |
mixup_scale | Діапазон випадкового масштабу, застосований до партнерського зображення MixUp |
shear | Діапазон випадкового зсуву для афінного перетворення в градусах |
perspective | Величина проєктивного викривлення для афінного перетворення |
flipud | Імовірність вертикального віддзеркалення |
no_aug_epochs | Останні епохи навчання з вимкненою сильною аугментацією |
auto_augment | Політика AutoAugment для класифікації: randaugment, autoaugment або augmix |
erasing | Імовірність RandomErasing для класифікації |
mixup | Імовірність пакетного MixUp для класифікації з м'якими мітками |
cutmix | Імовірність пакетного CutMix для класифікації з м'якими мітками |
Останні чотири утворюють пакет класифікації. Сімейства виявлення їх ігнорують.
mixup доступний лише в API: --mixup у CLI є псевдонімом параметра
mixup_prob для виявлення.
from libreyolo.data.augment.spec import ( AUG_KNOBS, aug_support, ignored_aug_params, uses_mosaic_gating,) print(sorted(AUG_KNOBS)) table = aug_support("yolo9")print(table["mixup_prob"].status, table["mixup_prob"].note) print(sorted(ignored_aug_params("dfine")))print(uses_mosaic_gating("yolo9"), uses_mosaic_gating("yolonas"))Три стани
| Стан | Значення |
|---|---|
used | Параметр потрапляє до пайплайна навчання сімейства та змінює зразки |
gated_by_mosaic | Параметр застосовується лише до зразків, що пройшли гілку мозаїки, тому за mosaic_prob == 0 він ніколи не спрацьовує |
ignored | Параметр ніколи не потрапляє до пайплайна; його встановлення нічого не змінює |
Стан ignored варто перевірити перед запуском, оскільки помилки не виникає.
CLI попереджає, коли явно заданий параметр навчання ігнорується вибраним
сімейством, а засіб навчання попереджає, коли mixup_prob > 0 не може
спрацювати, бо сімейство дозволяє MixUp лише для мозаїки, а mosaic_prob дорівнює нулю.
Архетипи пайплайнів
Кожне охоплене сімейство використовує один із шести пайплайнів із кількома відхиленнями для окремих сімейств, переліченими нижче.
| Параметр | У стилі YOLOX | YOLO-NAS | У стилі DETR | Класифікація | Семантична | Відновлення |
|---|---|---|---|---|---|---|
mosaic_prob | використовується | ігнорується | ігнорується | ігнорується | ігнорується | ігнорується |
mixup_prob | залежить від мозаїки | використовується | ігнорується | ігнорується | ігнорується | ігнорується |
hsv_prob | використовується | використовується | ігнорується | ігнорується | ігнорується | ігнорується |
flip_prob | використовується | використовується | використовується | ігнорується | ігнорується | ігнорується |
degrees | залежить від мозаїки | використовується | ігнорується | ігнорується | ігнорується | ігнорується |
translate | залежить від мозаїки | використовується | ігнорується | ігнорується | ігнорується | ігнорується |
mosaic_scale | залежить від мозаїки | використовується | ігнорується | ігнорується | ігнорується | ігнорується |
mixup_scale | залежить від мозаїки | використовується | ігнорується | ігнорується | ігнорується | ігнорується |
shear | залежить від мозаїки | використовується | ігнорується | ігнорується | ігнорується | ігнорується |
perspective | залежить від мозаїки | використовується | ігнорується | ігнорується | ігнорується | ігнорується |
flipud | використовується | використовується | ігнорується | ігнорується | ігнорується | ігнорується |
no_aug_epochs | використовується | використовується | використовується | використовується | використовується | використовується |
auto_augment | ігнорується | ігнорується | ігнорується | використовується | ігнорується | ігнорується |
erasing | ігнорується | ігнорується | ігнорується | використовується | ігнорується | ігнорується |
mixup | ігнорується | ігнорується | ігнорується | використовується | ігнорується | ігнорується |
cutmix | ігнорується | ігнорується | ігнорується | використовується | ігнорується | ігнорується |
У пайплайні стилю YOLOX попереднє оброблення окремих зразків застосовує випадкову
зміну HSV і віддзеркалення, тоді як афінне перетворення та MixUp виконуються
лише в гілці мозаїки. Натомість YOLO-NAS виконує постійно ввімкнене афінне
перетворення для кожного зразка, ігнорує мозаїку й незалежно застосовує MixUp,
повторно використовуючи mosaic_scale як діапазон афінного масштабу.
Пайплайн у стилі DETR є наскрізним перетворенням без мозаїки. Його фотометричне
спотворення, віддалення та обрізання за IoU є константами рецепта, а не
налаштовуваними параметрами, тому hsv_prob і геометричні параметри до нього не
потрапляють. Пайплайн класифікації використовує перетворення ImageFolder із
фіксованою ймовірністю горизонтального віддзеркалення 0.5 замість flip_prob.
Випадкова зміна масштабу й HSV для семантичної сегментації походять з атрибутів
класу сімейства, а не з параметрів конфігурації. Віддзеркалення під час
відновлення є пов'язаними операціями над вхідними й цільовими даними з
фіксованою ймовірністю 0.5.
no_aug_epochs враховується всюди, хоча вимикає різні функції: мозаїку та MixUp
у стилі YOLOX, афінне перетворення та MixUp у YOLO-NAS, сильні фотометричні
аугментації й обрізання разом із завершальною частиною швидкості навчання в стилі
DETR і завершальну частину планувальника для решти.
Сімейства за архетипом
| Архетип | Сімейства |
|---|---|
| У стилі YOLOX | yolox, yolo7, yolo9, yolo9_e2e, yolo9_p2, rtmdet, picodet, rtdetr, rtdetrv2, fomo |
| YOLO-NAS | yolonas |
| У стилі DETR | dfine, domedetr, deim, deimv2, rtdetrv4, rfdetr, ec, dinov2 |
| Класифікація | resnet, convnext, mobilenetv4, efficientnetv2 |
| Семантична | segformer |
| Відновлення | nafnet |
Охоплено двадцять п'ять сімейств. Для сімейства поза цим списком повертається порожній набір ігнорованих параметрів, тому попередження не виводиться.
Відхилення
| Сімейство | Відмінність від архетипу |
|---|---|
rtmdet | flipud ігнорується: його перетворення не має вертикального віддзеркалення |
picodet | flipud ігнорується |
rtdetr | flipud ігнорується |
rtdetrv2 | flipud ігнорується |
fomo | perspective і flipud ігноруються |
ec | hsv_prob, degrees і translate використовуються лише для task="pose"; detect і segment застосовують фіксовані фотометричні рецепти |
dinov2 | Пакет класифікації використовується лише для task="classify" |
ec і dinov2 є багатозадачними сімействами, тому параметр позначається як
ігнорований, лише якщо його ігнорують усі придатні до навчання завдання цього
сімейства. Завдяки цьому попередження CLI ніколи не є правильним для одного
завдання й помилковим для іншого.
Dome-DETR успадковує перетворення D-FINE без змін. Єдиною непідтримуваною функцією є багатомасштабне навчання, яке вимикається його конфігурацією, а не специфікацією аугментації.
Параметри окремих сімейств
Деякі сімейства мають параметри аугментації у власному підкласі TrainConfig,
а не в базовому. CLI не надає до них доступу; задавайте їх через Python API.
| Сімейство | Параметр | Значення |
|---|---|---|
yolo9, yolo9_e2e, yolo9_p2 | copy_paste | Імовірність аугментації екземплярів копіюванням і вставленням лише для task="segment" |
yolo9, yolo9_e2e, yolo9_p2 | copy_paste_mode | Джерело копіювання та вставлення: flip віддзеркалює той самий зразок, mixup використовує другий зразок |
yolo9, yolo9_e2e, yolo9_p2 | rot90 | Імовірність випадкового повороту на 90 градусів |
rfdetr | copy_paste | Імовірність копіювання та вставлення для task="segment", лише режим flip |
rfdetr | copy_paste_mode | Режим джерела копіювання та вставлення для task="segment" |
rfdetr | crop_resize_prob | Імовірність випадкового обрізання зі зміною розміру в рідному пайплайні |
dfine | crop_resize_prob | Імовірність випадкового обрізання зі зміною розміру для task="segment" |
ec | crop_resize_prob | Імовірність випадкового обрізання зі зміною розміру для task="segment" |
ec, yolonas | brightness_contrast_prob | Імовірність випадкової зміни яскравості й контрастності для task="pose" |
ec, yolonas | affine_prob | Імовірність афінного перетворення з урахуванням ключових точок для task="pose" |
rot90 застосовується до detect і OBB у yolo9.
Запити до специфікації
| Допоміжна функція | Повертає |
|---|---|
aug_support(family) | Таблицю відповідності параметрів до Support або None для невідомого сімейства |
ignored_aug_params(family) | Набір назв параметрів, які сімейство ігнорує; порожній для невідомого сімейства |
uses_mosaic_gating(family) | Чи спрацьовує MixUp сімейства лише для мозаїчних зразків |
display_name(family) | Зрозумілу користувачу назву сімейства, яку використано в попередженнях |
mixup_gating_warning(family, mosaic_prob, mixup_prob) | Текст попередження, якщо MixUp ніколи не може спрацювати, інакше None |
Support є іменованим кортежем зі status і note, де примітка пояснює, чому
параметр ігнорується або залежить від мозаїки для цього сімейства.
Шлюз мозаїки
Для сімейства в стилі YOLOX поєднання mixup_prob=0.5 з mosaic_prob=0
повністю вимикає MixUp, оскільки MixUp застосовується лише до мозаїчних зразків.
Таке поєднання легко отримати, якщо вимкнути мозаїку наприкінці навчання. Засіб
навчання записує попередження з назвою сімейства, а чиста функція
mixup_gating_warning реалізує цю поведінку.