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.
| Knob | Arti |
|---|---|
mosaic_prob | Probabilitas membangun sampel mosaic 4 gambar |
mixup_prob | Probabilitas memadukan sampel kedua |
hsv_prob | Probabilitas jitter warna HSV |
flip_prob | Probabilitas pembalikan horizontal |
degrees | Rentang rotasi acak untuk affine warp, dalam derajat |
translate | Fraksi translasi acak untuk affine warp |
mosaic_scale | Rentang skala acak untuk affine warp |
mixup_scale | Rentang skala jitter yang diterapkan pada gambar pasangan MixUp |
shear | Rentang shear acak untuk affine warp, dalam derajat |
perspective | Kekuatan 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 |
flipud | Probabilitas pembalikan vertikal |
no_aug_epochs | Epoch terakhir yang dilatih dengan augmentasi kuat dinonaktifkan |
auto_augment | Kebijakan AutoAugment classification: randaugment, autoaugment, atau augmix |
erasing | Probabilitas RandomErasing classification |
mixup | Probabilitas batch-MixUp classification, dengan soft label |
cutmix | Probabilitas 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.
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
| Status | Arti |
|---|---|
used | Knob mencapai pipeline pelatihan family dan mengubah sampel |
gated_by_mosaic | Knob hanya berlaku pada sampel yang melewati cabang mosaic, sehingga tidak pernah aktif ketika mosaic_prob == 0 |
ignored | Knob 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.
| Knob | Gaya YOLOX | YOLO-NAS | Gaya DETR | Classification | Semantic | Restore |
|---|---|---|---|---|---|---|
mosaic_prob | used | ignored | ignored | ignored | ignored | ignored |
mixup_prob | gated | used | ignored | ignored | ignored | ignored |
hsv_prob | used | used | ignored | ignored | ignored | ignored |
flip_prob | dipakai | dipakai | dipakai | dipakai | diabaikan | diabaikan |
degrees | gated | used | ignored | ignored | ignored | ignored |
translate | gated | used | ignored | ignored | ignored | ignored |
mosaic_scale | gated | used | ignored | ignored | ignored | ignored |
mixup_scale | gated | used | ignored | ignored | ignored | ignored |
shear | gated | used | ignored | ignored | ignored | ignored |
perspective | gated | used | ignored | ignored | ignored | ignored |
flipud | dipakai | dipakai | diabaikan | dipakai | diabaikan | diabaikan |
no_aug_epochs | used | used | used | used | used | used |
auto_augment | ignored | ignored | ignored | used | ignored | ignored |
erasing | ignored | ignored | ignored | used | ignored | ignored |
mixup | ignored | ignored | ignored | used | ignored | ignored |
cutmix | ignored | ignored | ignored | used | ignored | ignored |
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
| Arketipe | Family |
|---|---|
| Gaya YOLOX | yolox, yolo7, yolo9, yolo9_e2e, yolo9_p2, rtmdet, picodet, rtdetr, rtdetrv2, fomo |
| YOLO-NAS | yolonas, ppyoloe |
| Gaya DETR | dfine, gtr, domedetr, deim, deimv2, tinyformer, rtdetrv4, rfdetr, ec, dinov2 |
| Classification | resnet, convnext, convnextv2, mobilenetv4, efficientnetv2 |
| Semantic | segformer, unet, lingbotvision |
| Restore | nafnet |
Tiga puluh satu family dicakup. Family di luar list ini mengembalikan kumpulan ignored kosong, sehingga tidak ada peringatan yang dikeluarkan.
Deviasi
| Family | Perbedaan dari arketipe |
|---|---|
rtmdet | flipud diabaikan: transform-nya tidak memiliki flip vertikal |
picodet | flipud diabaikan |
rtdetr | flipud diabaikan |
rtdetrv2 | flipud diabaikan |
fomo | perspective dan flipud diabaikan |
ppyoloe | flipud diabaikan: resep sumbernya memakai rotasi 90 derajat acak sebagai gantinya |
gtr | mosaic_prob dan mixup_prob digunakan, selama mosaic_epochs epoch pertama; degrees, translate, dan mosaic_scale membentuk affine yang mengikuti mosaic |
ec | hsv_prob, degrees, dan translate digunakan, hanya untuk task="pose"; detect dan segment menggunakan resep fotometrik tetap |
dinov2 | Paket 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.
| Family | Knob | Arti |
|---|---|---|
yolo9, yolo9_e2e, yolo9_p2 | copy_paste | Probabilitas augmentasi instance copy-paste, khusus task="segment" |
yolo9, yolo9_e2e, yolo9_p2 | copy_paste_mode | Sumber copy-paste: flip mencerminkan sampel yang sama, mixup menggunakan sampel kedua |
yolo9, yolo9_e2e, yolo9_p2 | rot90 | Probabilitas rotasi acak 90 derajat |
rfdetr | copy_paste | Probabilitas copy-paste untuk task="segment", hanya mode flip |
rfdetr | copy_paste_mode | Mode sumber copy-paste untuk task="segment" |
rfdetr | crop_resize_prob | Probabilitas crop-resize acak dalam pipeline native |
dfine | crop_resize_prob | Probabilitas crop-resize acak, task="segment" |
ec | crop_resize_prob | Probabilitas crop-resize acak, task="segment" |
ec, yolonas | brightness_contrast_prob | Probabilitas jitter kecerahan dan kontras, task="pose" |
ec, yolonas | affine_prob | Probabilitas affine yang memperhitungkan keypoint, task="pose" |
rot90 berlaku untuk detect dan OBB pada yolo9.
Melakukan query pada spec
| Helper | Mengembalikan |
|---|---|
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.