Augmentasi
Augmentasi dikonfigurasi melalui pengaturan pada TrainConfig, tetapi setiap family model menjalankan pipeline pelatihannya sendiri, dan pipeline tanpa cabang mosaic mengabaikan mosaic_prob, bukan mengaproksimasinya.
Mengatur pengaturan
Pengaturan augmentasi adalah argumen train() biasa.
from libreyolo import LibreYOLO model = LibreYOLO("LibreYOLO9s.pt")model.train( data="my-dataset.yaml", epochs=100, mosaic_prob=1.0, mixup_prob=0.15, hsv_prob=1.0, flip_prob=0.5, no_aug_epochs=15,)# CLI menulis mosaic_prob sebagai mosaic dan mixup_prob sebagai mixup.libreyolo train model=LibreYOLO9s.pt data=my-dataset.yaml \ epochs=100 mosaic=1.0 mixup=0.15 hsv_prob=1.0 \ flip_prob=0.5 no_aug_epochs=15Tiga pengaturan memiliki ejaan yang lebih pendek, yang diterima train() maupun
CLI: mosaic dipetakan ke mosaic_prob, fliplr ke flip_prob, dan pada
deteksi mixup dipetakan ke mixup_prob. Memberikan ejaan pendek beserta
field-nya dengan nilai berbeda akan memunculkan error. Pengaturan lain dieja sama
di keduanya.
Tiga status, bukan dua
Pengaruh suatu pengaturan bergantung pada family. Library menyimpan tabel deklaratif dengan tiga kemungkinan status.
used berarti pengaturan mencapai pipeline dan mengubah sampel. ignored
berarti pengaturan tidak pernah mencapai pipeline. gated_by_mosaic berarti
hanya berlaku pada sampel yang masuk cabang mosaic, sehingga tidak pernah aktif
jika mosaic_prob=0.
Status ketiga sering mengejutkan. Pada pipeline bergaya YOLOX, affine warp
berjalan pada kanvas mosaic dan MixUp mencampur sampel mosaic, sehingga
mosaic_prob=0 sekaligus menonaktifkan degrees, translate, shear,
perspective, mosaic_scale, mixup_prob, dan mixup_scale. Trainer mencatat
warning khusus untuk MixUp:
mixup_prob=0.15 has no effect for YOLOv9: mixup only applies to mosaic samplesand mosaic_prob=0. Set mosaic_prob > 0 to enable mixup.CLI juga memperingatkan tentang pengaturan yang diabaikan, hanya yang diketik:
Warning: RF-DETR ignores these parameters: degrees, mosaicEmpat bentuk pipeline
Family terbagi dalam empat pipeline pelatihan yang menentukan hampir semua jawaban.
Pipeline mosaic bergaya YOLOX menerapkan HSV jitter dan flip per sampel, lalu menjalankan affine serta MixUp dalam cabang mosaic. Pipeline ini mencakup YOLOX, YOLOv7, YOLOv9 beserta varian E2E dan P2, RTMDet, PicoDet, RT-DETR, RT-DETRv2, dan FOMO.
Pipeline pass-through bergaya DETR tidak memiliki mosaic atau affine warp.
Photometric distortion, zoom-out, dan IoU crop adalah konstanta resep, sehingga
hanya flip_prob serta no_aug_epochs yang aktif. Pipeline ini mencakup D-FINE,
Dome-DETR, DEIM, DEIMv2, RT-DETRv4, EC, dan RF-DETR dengan satu perubahan.
Pipeline klasifikasi ImageFolder memiliki kontrol augmentasi sendiri. flip_prob mengontrol pembalikan horizontal dengan default 0.5; fliplr adalah aliasnya.
YOLO-NAS memiliki bentuk tersendiri: tanpa mosaic, affine per sampel yang selalu
aktif, dan MixUp yang diterapkan secara independen. Nilai mosaic_scale digunakan
kembali sebagai rentang skala affine.
SegFormer, LingBot-Vision, dan NAFNet menjalankan pipeline khusus task dengan
randomisasi tetap. Untuk SegFormer dan LingBot-Vision, pengaturan aktif adalah atribut kelas semantic_scale_jitter
dan semantic_hsv_prob, bukan mosaic_scale serta hsv_prob. Crop dan flip
NAFNet merupakan operasi input-target berpasangan dengan probabilitas tetap 0,5.
Pengaturan yang dipatuhi setiap family
Tabel berikut adalah spesifikasi yang disertakan di
libreyolo/data/augment/spec.py dan diuji terhadap wiring pipeline sebenarnya.
Baca sumber itu, jangan menyimpulkan dari arsitektur.
from libreyolo.data.augment.spec import AUG_KNOBS, aug_support for knob, description in AUG_KNOBS.items(): support = aug_support("yolo9")[knob] print(f"{knob:16} {support.status:16} {support.note or description}")from libreyolo.data.augment.spec import ignored_aug_params print(sorted(ignored_aug_params("rfdetr")))Ringkasan per pipeline untuk pengaturan dasar:
| Pengaturan | Gaya YOLOX | YOLO-NAS | Gaya DETR | Classification |
|---|---|---|---|---|
mosaic_prob | digunakan | diabaikan | diabaikan | diabaikan |
mixup_prob | dibatasi mosaic | digunakan | diabaikan | diabaikan |
hsv_prob | digunakan | digunakan | diabaikan | diabaikan |
flip_prob | dipakai | dipakai | dipakai | dipakai |
flipud | dipakai | dipakai | diabaikan | dipakai |
degrees | dibatasi mosaic | digunakan | diabaikan | diabaikan |
translate | dibatasi mosaic | digunakan | diabaikan | diabaikan |
shear | dibatasi mosaic | digunakan | diabaikan | diabaikan |
perspective | dibatasi mosaic | digunakan | diabaikan | diabaikan |
mosaic_scale | dibatasi mosaic | digunakan | diabaikan | diabaikan |
mixup_scale | dibatasi mosaic | digunakan | diabaikan | diabaikan |
no_aug_epochs | digunakan | digunakan | digunakan | digunakan |
Pengecualian dalam kolom tersebut hanya mempersempit dukungan:
- RTMDet, PicoDet, RT-DETR, RT-DETRv2, dan FOMO tidak memiliki vertical flip,
sehingga
flipuddiabaikan. Wrapper mosaic FOMO juga tidak memiliki perspective. - Pipeline native RF-DETR tidak memiliki HSV jitter, sehingga
hsv_probdiabaikan. - EC mematuhi
hsv_prob,degrees, dantranslatehanya untuktask="pose", yang transform-nya memahami keypoint. Jalur detect dan segment memakai resep tetap. - DINOv2 mengikuti kolom gaya DETR untuk task detect dan semantic, lalu menambahkan
paket classification untuk
task="classify".
no_aug_epochs berstatus used di mana pun, tetapi maknanya berbeda. Pada pipeline mosaic, ini mematikan mosaic dan MixUp pada epoch terakhir. Pada pipeline gaya DETR, ini menghentikan augmentasi fotometrik, zoom-out, dan crop serta mengatur bagian akhir jadwal. Pada pipeline klasifikasi, ini menonaktifkan augmentasi otomatis, erasing, MixUp, dan CutMix; crop dan pembalikan tetap aktif.
perspective menambahkan projective warp di atas rotasi, skala, shear, dan translasi.
Setiap sudut kanvas bergeser ke dalam sejauh nilai acak hingga
min(perspective * 100, 0.2) kali setengah sisi kanvas, per sumbu, sehingga
perspective=0.001 menggeser sudut paling banyak 5 persen sisi pada resolusi apa
pun, dan setiap nilai dari 0.002 ke atas mencapai maksimum yang sama. Default 0
menjaga warp tetap affine, dan nilai negatif memunculkan ValueError saat sampel
pertama di-warp. YOLOv9 beserta varian E2E dan P2-nya, YOLOX, YOLOv7, YOLO-NAS,
PP-YOLOE, RTMDet, PicoDet, RT-DETR, dan RT-DETRv2 menerapkannya.
MixUp di pipeline mosaic YOLOv9, yang dipakai untuk melatih YOLOv9 beserta variannya, YOLOv7, RT-DETR, dan RT-DETRv2, menarik rasio blend dari Beta(1, 1), seragam pada [0, 1]. Wrapper mosaic YOLOX, yang dipakai YOLOX, RTMDet, dan PicoDet, melakukan blend pada 0.5 tetap.
Paket classification
Empat pengaturan mengendalikan pipeline classification dan tidak memengaruhi yang lain. Family deteksi mengabaikan keempatnya.
from libreyolo import LibreYOLO model = LibreYOLO("LibreConvNeXtt-cls.pt")model.train( data="my-classification-dataset", epochs=50, auto_augment="randaugment", erasing=0.25, mixup=0.2, cutmix=0.2,)auto_augment menerima "randaugment", "autoaugment", "augmix", atau
None. erasing adalah probabilitas RandomErasing. mixup dan cutmix adalah
probabilitas per batch yang menghasilkan soft label; paling banyak satu berjalan
per batch, dengan MixUp lebih dahulu, sehingga jumlah keduanya maksimal 1.
Keempatnya default nonaktif, sehingga pelatihan classification tidak berubah kecuali diminta.
train() dan CLI mengarahkan mixup berdasarkan task: klasifikasi memakai pencampuran batch, sedangkan deteksi memakai mixup_prob.
scale=0.5 berarti rentang area crop acak (0.5, 1.0); pasangan nilai eksplisit menetapkan kedua batas. crop_pct=None mempertahankan rasio pengubahan ukuran evaluasi family; penggantian nilai memengaruhi evaluasi pelatihan/validasi, sedangkan ekspor mempertahankan prapemrosesan native family.
CLI menyediakan auto_augment, erasing, cutmix, fliplr, dan flipud. mixup klasifikasi berarti pencampuran batch dan default-nya 0.0. Pembalikan horizontal default 0.5 dan vertikal 0.0. mixup + cutmix tidak boleh melebihi 1.
no_aug_epochs menonaktifkan augmentasi otomatis, erasing, MixUp, dan CutMix pada epoch terakhir, sambil mempertahankan crop dan pembalikan. Resep klasifikasi menetapkan bagian akhir ini ke 0 secara default.
Pengaturan khusus family
Sebagian pengaturan berada pada subclass konfigurasi family, sehingga hanya ada untuk family tersebut dan tidak memiliki flag CLI.
| Family | Pengaturan | Efek |
|---|---|---|
| YOLOv9, YOLOv9-E2E, YOLOv9-P2 | copy_paste | Probabilitas augmentasi instance copy-paste, hanya task="segment" |
| YOLOv9, YOLOv9-E2E, YOLOv9-P2 | copy_paste_mode | "flip" memakai ulang sampel yang dicerminkan, "mixup" mengambil sampel kedua |
| YOLOv9, YOLOv9-E2E, YOLOv9-P2 | rot90 | Probabilitas rotasi acak 90 derajat |
| YOLOv9, YOLOv9-E2E, YOLOv9-P2 | max_labels | Batas ground truth per gambar dalam transform pelatihan, default 300 |
| RF-DETR | copy_paste, copy_paste_mode | Copy-paste untuk task="segment", hanya mode "flip" |
| RF-DETR, D-FINE, EC | crop_resize_prob | Probabilitas random crop-resize |
| EC, YOLO-NAS | brightness_contrast_prob, affine_prob | Jitter jalur pose dan probabilitas affine yang memahami keypoint |
max_labels dapat menghilangkan data. Bounding box setelah batas dibuang dengan satu
peringatan, bukan error, sehingga imagery padat seperti foto aerial perlu menaikkan
nilainya. Memori penetapan label mengikuti gambar terpadat dalam batch, bukan batas
tersebut.
Mosaic dan MixUp dinonaktifkan untuk pelatihan oriented-bounding box tanpa memandang pengaturan karena augmentasi yang memahami sudut bounding box berotasi belum tersedia.
Terkait
- Hyperparameter untuk
no_aug_epochssebagai argumen schedule dan bagian laintrain(). - Dataset untuk format label yang digunakan transform ini.