Переглянути як Markdown

Матриця аугментацій

Установлення параметра аугментації не гарантує, що він потрапить до пайплайна. На цій сторінці зафіксовано, як кожне придатне до навчання сімейство обробляє кожен параметр 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 дорівнює нулю.

Архетипи пайплайнів

Кожне охоплене сімейство використовує один із шести пайплайнів із кількома відхиленнями для окремих сімейств, переліченими нижче.

ПараметрУ стилі YOLOXYOLO-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 і завершальну частину планувальника для решти.

Сімейства за архетипом

АрхетипСімейства
У стилі YOLOXyolox, yolo7, yolo9, yolo9_e2e, yolo9_p2, rtmdet, picodet, rtdetr, rtdetrv2, fomo
YOLO-NASyolonas
У стилі DETRdfine, domedetr, deim, deimv2, rtdetrv4, rfdetr, ec, dinov2
Класифікаціяresnet, convnext, mobilenetv4, efficientnetv2
Семантичнаsegformer
Відновленняnafnet

Охоплено двадцять п'ять сімейств. Для сімейства поза цим списком повертається порожній набір ігнорованих параметрів, тому попередження не виводиться.

Відхилення

СімействоВідмінність від архетипу
rtmdetflipud ігнорується: його перетворення не має вертикального віддзеркалення
picodetflipud ігнорується
rtdetrflipud ігнорується
rtdetrv2flipud ігнорується
fomoperspective і flipud ігноруються
echsv_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_p2copy_pasteІмовірність аугментації екземплярів копіюванням і вставленням лише для task="segment"
yolo9, yolo9_e2e, yolo9_p2copy_paste_modeДжерело копіювання та вставлення: flip віддзеркалює той самий зразок, mixup використовує другий зразок
yolo9, yolo9_e2e, yolo9_p2rot90Імовірність випадкового повороту на 90 градусів
rfdetrcopy_pasteІмовірність копіювання та вставлення для task="segment", лише режим flip
rfdetrcopy_paste_modeРежим джерела копіювання та вставлення для task="segment"
rfdetrcrop_resize_probІмовірність випадкового обрізання зі зміною розміру в рідному пайплайні
dfinecrop_resize_probІмовірність випадкового обрізання зі зміною розміру для task="segment"
eccrop_resize_probІмовірність випадкового обрізання зі зміною розміру для task="segment"
ec, yolonasbrightness_contrast_probІмовірність випадкової зміни яскравості й контрастності для task="pose"
ec, yolonasaffine_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 реалізує цю поведінку.

Список параметрів, стани, архетипи, відхилення окремих сімейств і допоміжні функції взято з libreyolo/data/augment/spec.py у v1.5.0. Відповідність цієї таблиці справжнім пайплайнам закріплено тестами tests/unit/test_augment_spec.py.