Matriks augmentasi

Menetapkan knob augmentasi tidak menjamin nilainya mencapai pipeline. Halaman ini mencatat cara setiap family yang dapat dilatih memperlakukan setiap knob pada TrainConfig, menggunakan tabel deklaratif bawaan library sebagai satu-satunya sumber kebenaran.

Knob

Berikut adalah nama field TrainConfig, bukan ejaan CLI. train() dan CLI memetakan ejaan pendek ke field tersebut, sehingga mosaic menetapkan mosaic_prob.

KnobArti
mosaic_probProbabilitas membangun sampel mosaic 4 gambar
mixup_probProbabilitas memadukan sampel kedua
hsv_probProbabilitas jitter warna HSV
flip_probProbabilitas pembalikan horizontal
degreesRentang rotasi acak untuk affine warp, dalam derajat
translateFraksi translasi acak untuk affine warp
mosaic_scaleRentang skala acak untuk affine warp
mixup_scaleRentang skala jitter yang diterapkan pada gambar pasangan MixUp
shearRentang shear acak untuk affine warp, dalam derajat
perspectiveKekuatan projective warp yang ditambahkan ke affine warp: sudut kanvas bergeser ke dalam hingga min(perspective * 100, 0.2) kali setengah sisi kanvas, per sumbu; 0 menonaktifkan
flipudProbabilitas pembalikan vertikal
no_aug_epochsEpoch terakhir yang dilatih dengan augmentasi kuat dinonaktifkan
auto_augmentKebijakan AutoAugment classification: randaugment, autoaugment, atau augmix
erasingProbabilitas RandomErasing classification
mixupProbabilitas batch-MixUp classification, dengan soft label
cutmixProbabilitas batch-CutMix classification, dengan soft label

Empat yang terakhir adalah paket klasifikasi. Family deteksi mengabaikannya. train() dan CLI mengarahkan mixup ke pencampuran batch klasifikasi untuk pengklasifikasi dan ke mixup_prob untuk detektor.

Tanyakan langsung kepada spec
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"))

Tiga status

StatusArti
usedKnob mencapai pipeline pelatihan family dan mengubah sampel
gated_by_mosaicKnob hanya berlaku pada sampel yang melewati cabang mosaic, sehingga tidak pernah aktif ketika mosaic_prob == 0
ignoredKnob tidak pernah mencapai pipeline; menetapkannya tidak berpengaruh

ignored adalah status yang perlu diperiksa sebelum run karena tidak ada proses yang gagal. CLI memperingatkan jika parameter pelatihan yang ditetapkan secara eksplisit diabaikan oleh family terpilih, dan trainer memperingatkan ketika mixup_prob > 0 tidak dapat aktif karena family membatasi MixUp pada mosaic sementara mosaic_prob bernilai nol.

Arketipe pipeline

Setiap family yang dicakup mengikuti salah satu dari enam pipeline, dengan beberapa deviasi per family yang tercantum di bawah.

KnobGaya YOLOXYOLO-NASGaya DETRClassificationSemanticRestore
mosaic_probusedignoredignoredignoredignoredignored
mixup_probgatedusedignoredignoredignoredignored
hsv_probusedusedignoredignoredignoredignored
flip_probdipakaidipakaidipakaidipakaidiabaikandiabaikan
degreesgatedusedignoredignoredignoredignored
translategatedusedignoredignoredignoredignored
mosaic_scalegatedusedignoredignoredignoredignored
mixup_scalegatedusedignoredignoredignoredignored
sheargatedusedignoredignoredignoredignored
perspectivegatedusedignoredignoredignoredignored
flipuddipakaidipakaidiabaikandipakaidiabaikandiabaikan
no_aug_epochsusedusedusedusedusedused
auto_augmentignoredignoredignoredusedignoredignored
erasingignoredignoredignoredusedignoredignored
mixupignoredignoredignoredusedignoredignored
cutmixignoredignoredignoredusedignoredignored

Dalam pipeline bergaya YOLOX, preprocessing per sampel menerapkan jitter HSV dan flip, sedangkan affine warp dan MixUp hanya berjalan dalam cabang mosaic. YOLO-NAS menjalankan affine per sampel yang selalu aktif, mengabaikan mosaic, dan menerapkan MixUp secara independen dengan menggunakan kembali mosaic_scale sebagai rentang skala affine.

Pipeline gaya DETR adalah transformasi pass-through tanpa mosaic. Distorsi fotometrik, zoom-out, dan crop IoU merupakan konstanta resep, bukan pengaturan yang dapat dikonfigurasi, sehingga hsv_prob dan pengaturan geometri tidak memengaruhinya. Klasifikasi memakai flip_prob untuk pembalikan horizontal dan flipud untuk pembalikan vertikal. Jitter skala semantik dan HSV berasal dari atribut kelas family, bukan pengaturan konfigurasi, sedangkan pembalikan restorasi memasangkan operasi input dan target dengan probabilitas tetap 0.5.

no_aug_epochs dipatuhi di semua pipeline, tetapi yang dinonaktifkan berbeda: mosaic dan MixUp untuk gaya YOLOX, affine dan MixUp untuk YOLO-NAS, augmentasi fotometrik kuat dan crop serta bagian akhir learning rate untuk gaya DETR, dan augmentasi otomatis, erasing, MixUp, serta CutMix untuk klasifikasi. Crop dan pembalikan klasifikasi tetap aktif.

Family menurut arketipe

ArketipeFamily
Gaya YOLOXyolox, yolo7, yolo9, yolo9_e2e, yolo9_p2, rtmdet, picodet, rtdetr, rtdetrv2, fomo
YOLO-NASyolonas, ppyoloe
Gaya DETRdfine, gtr, domedetr, deim, deimv2, tinyformer, rtdetrv4, rfdetr, ec, dinov2
Classificationresnet, convnext, convnextv2, mobilenetv4, efficientnetv2
Semanticsegformer, unet, lingbotvision
Restorenafnet

Tiga puluh satu family dicakup. Family di luar list ini mengembalikan kumpulan ignored kosong, sehingga tidak ada peringatan yang dikeluarkan.

Deviasi

FamilyPerbedaan dari arketipe
rtmdetflipud diabaikan: transform-nya tidak memiliki flip vertikal
picodetflipud diabaikan
rtdetrflipud diabaikan
rtdetrv2flipud diabaikan
fomoperspective dan flipud diabaikan
ppyoloeflipud diabaikan: resep sumbernya memakai rotasi 90 derajat acak sebagai gantinya
gtrmosaic_prob dan mixup_prob digunakan, selama mosaic_epochs epoch pertama; degrees, translate, dan mosaic_scale membentuk affine yang mengikuti mosaic
echsv_prob, degrees, dan translate digunakan, hanya untuk task="pose"; detect dan segment menggunakan resep fotometrik tetap
dinov2Paket classification digunakan, hanya untuk task="classify"

ec dan dinov2 adalah family multi-task, sehingga sebuah knob ditandai ignored hanya ketika semua task family yang dapat dilatih mengabaikannya. Hal ini mencegah peringatan CLI keliru untuk satu task meski benar bagi task lain.

Dome-DETR mewarisi transform D-FINE tanpa perubahan. Satu hal yang tidak dapat diterimanya adalah pelatihan multi-scale, yang dinonaktifkan konfigurasinya, bukan spec augmentasinya.

Knob khusus family

Beberapa family memiliki knob augmentasi pada subclass TrainConfig sendiri, bukan pada base. CLI tidak menyediakannya; tetapkan melalui API Python.

FamilyKnobArti
yolo9, yolo9_e2e, yolo9_p2copy_pasteProbabilitas augmentasi instance copy-paste, khusus task="segment"
yolo9, yolo9_e2e, yolo9_p2copy_paste_modeSumber copy-paste: flip mencerminkan sampel yang sama, mixup menggunakan sampel kedua
yolo9, yolo9_e2e, yolo9_p2rot90Probabilitas rotasi acak 90 derajat
rfdetrcopy_pasteProbabilitas copy-paste untuk task="segment", hanya mode flip
rfdetrcopy_paste_modeMode sumber copy-paste untuk task="segment"
rfdetrcrop_resize_probProbabilitas crop-resize acak dalam pipeline native
dfinecrop_resize_probProbabilitas crop-resize acak, task="segment"
eccrop_resize_probProbabilitas crop-resize acak, task="segment"
ec, yolonasbrightness_contrast_probProbabilitas jitter kecerahan dan kontras, task="pose"
ec, yolonasaffine_probProbabilitas affine yang memperhitungkan keypoint, task="pose"

rot90 berlaku untuk detect dan OBB pada yolo9.

Melakukan query pada spec

HelperMengembalikan
aug_support(family)Tabel knob-ke-Support, atau None untuk family tidak dikenal
ignored_aug_params(family)Kumpulan nama knob yang diabaikan family; kosong untuk family tidak dikenal
uses_mosaic_gating(family)Apakah MixUp family hanya aktif pada sampel mosaic
display_name(family)Nama family yang ditampilkan kepada pengguna dalam peringatan
mixup_gating_warning(family, mosaic_prob, mixup_prob)Teks peringatan ketika MixUp tidak mungkin aktif, atau None

Support adalah named tuple berisi status dan note, dengan catatan yang menjelaskan alasan sebuah knob diabaikan atau dibatasi untuk family tersebut.

Gate mosaic

Untuk family bergaya YOLOX, mixup_prob=0.5 dengan mosaic_prob=0 menonaktifkan MixUp sepenuhnya karena MixUp hanya berlaku pada sampel mosaic. Kombinasi ini mudah terjadi ketika mosaic dinonaktifkan menjelang akhir pelatihan. Trainer mencatat peringatan yang menyebutkan family, dan mixup_gating_warning adalah fungsi murni di baliknya.

Daftar pengaturan, status, arketipe, perbedaan per family, dan fungsi helper dibaca dari libreyolo/data/augment/spec.py pada v1.6.0. Tabel itu dikunci ke pipeline aktual oleh tests/unit/test_augment_spec.py.