libreyolo train
Melatih satu model pada satu dataset, lalu menulis checkpoint, metrik dan log ke sebuah direktori run. Setiap argumen di bawah punya nilai default dari definisi perintah, yang bisa diganti oleh config pelatihan milik family model itu sendiri.
- Perintah
libreyolo train- Wajib
data- Keluaran
- Checkpoint, metrik dan log di dalam runs/train/<name>; tanpa name=, nama run bawaan family itu sendiri, seperti yolo9_exp
Sinopsis
libreyolo train data=<dataset.yaml> [model=<name|path>] [key=value ...]Argumen berbentuk pasangan key=value, dan bentuk POSIX juga berlaku, jadi
epochs=50 dan --epochs 50 adalah argumen yang sama. Boolean menerima true
dan false: amp=false menjadi --no-amp pada flag yang punya bentuk negatif.
Argumen
Model dan data
| Argumen | Default | Arti |
|---|---|---|
data | Path ke YAML dataset (format YOLO, mis. coco8.yaml). Wajib | |
model | yolox-s | Nama model atau path ke bobot |
task | Override task secara eksplisit: detect, segment, semantic, pose, classify, gaze, obb, point, depth | |
pretrained | true | Pakai bobot pretrained. false membangun arsitekturnya dan melatih dari nol |
allow_download_scripts | false | Izinkan Python yang tertanam di blok download pada YAML dataset |
Loop pelatihan
| Argumen | Default | Arti |
|---|---|---|
epochs | 300 | Epoch pelatihan |
batch | 16 | Ukuran batch. Dengan beberapa GPU, ini adalah batch global yang dibagi rata ke semuanya |
imgsz | 640 | Ukuran gambar pelatihan: 640 (persegi) atau 480x640 (tinggi x lebar) |
device | auto | Perangkat: 0, cpu, mps, auto. Daftar GPU seperti 0,1 atau [0,1] melatih di GPU tersebut |
workers | 4 | Worker dataloader |
cache | false | Cache gambar untuk mempercepat pemuatan data: ram, disk, true, false |
seed | 0 | Seed acak |
resume | Lanjutkan pelatihan: true, atau path ke sebuah checkpoint | |
amp | true | Automatic Mixed Precision |
amp_dtype | float16 | Dtype AMP CUDA: float16 atau bfloat16 |
cuda_graph | false | Tangkap forward dan backward pelatihan ke dalam CUDA graph. Hanya GPU tunggal dan family yang didukung; sisanya berjalan eager |
compile | false | torch.compile jaringan pelatihan: true, false, default, reduce-overhead, max-autotune, max-autotune-no-cudagraphs. Hanya GPU CUDA tunggal; run lain dilatih eager disertai peringatan |
lora | false | Fine-tuning LoRA, untuk family transformer yang terdaftar di bagian Catatan |
freeze | Bekukan layer: jumlah berupa integer, daftar indeks, atau nama modul |
Distilasi
| Argumen | Default | Arti |
|---|---|---|
distill_model | Teacher: sebuah checkpoint detektor, atau id foundation teacher seperti dinov2 untuk distilasi fitur backbone | |
dis | Bobot loss distilasi. Default yang dipublikasikan untuk tipe loss tersebut bila tidak diatur | |
distill_loss_type | mgd | Loss fitur untuk teacher detektor: mgd, cwd. Foundation teacher selalu memakai feat_mse |
Optimizer
| Argumen | Default | Arti |
|---|---|---|
optimizer | sgd | Optimizer: sgd, adam, adamw |
lr0 | 0.01 | Learning rate (laju pembelajaran) awal |
momentum | 0.937 | Momentum SGD, sekaligus koefisien momen pertama untuk optimizer Adam |
weight_decay | 0.0005 | Regularisasi L2 |
nesterov | true | Momentum Nesterov |
clip_max_norm | Memotong norma L2 gradien ke nilai ini sebelum setiap langkah optimizer; 0 menonaktifkan pemotongan. Bila tidak diatur, nilai family yang berlaku |
Scheduler
| Argumen | Default | Arti |
|---|---|---|
scheduler | yoloxwarmcos | Tipe jadwal LR |
warmup_epochs | 5 | Durasi warmup |
warmup_lr_start | 0.0 | LR awal warmup |
min_lr_ratio | 0.05 | Rasio LR minimum |
lr_drop | 100 | Epoch penurunan LR bertahap untuk RF-DETR |
Augmentasi
| Argumen | Default | Arti |
|---|---|---|
mosaic | 1.0 | Probabilitas mosaic |
mixup | 1.0 | Probabilitas mixup |
hsv_prob | 1.0 | Probabilitas jitter HSV |
flip_prob | 0.5 | Probabilitas flip horizontal |
degrees | 10.0 | Rentang rotasi, plus dan minus, dalam derajat |
translate | 0.1 | Rasio translasi |
shear | 2.0 | Sudut shear |
mosaic_scale | (0.1,2.0) | Rentang skala mosaic |
mixup_scale | (0.5,1.5) | Rentang skala mixup |
no_aug_epochs | 15 | Matikan augmentasi pada N epoch terakhir |
EMA
| Argumen | Default | Arti |
|---|---|---|
ema | true | Exponential Moving Average |
ema_decay | 0.9998 | Faktor decay EMA |
Validasi selama pelatihan
| Argumen | Default | Arti |
|---|---|---|
val | true | Jalankan validasi selama pelatihan |
eval_interval | 10 | Validasi setiap N epoch, dan setelah epoch terakhir |
max_det | 300 | Prediksi maksimum per gambar setelah NMS validasi |
eval_max_det | Batas evaluator COCO. Konvensi AP@100 pycocotools bila tidak diatur | |
faster_coco_eval | true | Pakai backend C++ faster-coco-eval untuk metrik COCO bila terpasang; kalau tidak, kembali ke pycocotools |
save_plots | false | Simpan plot validasi akhir selama pelatihan |
patience | 50 | Patience early stopping. 0 mematikannya |
Keluaran
| Argumen | Default | Arti |
|---|---|---|
project | runs/train | Root direktori keluaran |
name | Nama eksperimen. Bila tidak diatur, run memakai nama yang dipakai train() family itu, seperti yolo9_exp atau dfine_exp | |
exist_ok | false | Pakai ulang direktori keluaran yang sudah ada |
save_period | 10 | Simpan checkpoint setiap N epoch |
log_interval | 10 | Catat loss setiap N batch |
Flag agent
| Argumen | Default | Arti |
|---|---|---|
json | false | Keluaran JSON ke stdout |
quiet | false | Redam stderr |
dry_run | false | Resolusi lalu cetak config tanpa menjalankannya |
help_json | false | Cetak skema perintah sebagai JSON lalu keluar |
| Argumen | Default | Arti |
|---|---|---|
min_samples | 0 | Batas minimum panjang epoch untuk dataset kecil: jika gambar lebih sedikit, ambil sebanyak ini sampel per epoch dengan pengembalian (0 = nonaktif) |
class_balanced | False | Pengambilan sampel repeat-factor gaya LVIS untuk dataset long-tail (default: nonaktif) |
cls_pw | 0.0 | Pangkat pembobotan invers frekuensi klasifikasi: 0 nonaktif, 1 penuh (bobot kelas rata-rata satu; tidak dapat digabung dengan class_weights=True) |
class_weights | False | Bobot loss klasifikasi lama yang dinormalisasi berdasarkan sampel (default: nonaktif) |
single_cls | False | Latih detektor yang didukung dengan semua label dipetakan ulang ke kelas 0 |
classes | None | Latih detektor yang didukung hanya pada ID kelas asli dataset ini, dipisahkan koma (misalnya '0,3,5'); kelas lain dibuang seolah tidak berlabel. ID dipertahankan, tidak dipadatkan |
average_best | 0 | Rata-ratakan N checkpoint terbaik secara seragam berdasarkan metrik yang dipantau ke weights/average.pt pada akhir pelatihan (0 = nonaktif) |
export_check | False | Ekspor ONNX sebelum epoch 1 dan hentikan proses jika ekspor gagal (default: nonaktif) |
precise_bn | 0 | Hitung ulang statistik berjalan BatchNorm dari sebanyak ini gambar pelatihan setelah epoch terakhir (0 = nonaktif) |
aux_weight | Khusus YOLO9: bobot loss cabang auxiliary PGI. Sebuah nilai memasang cabang baru dengan bobot itu, dan 0 hanya melatih head utama. Bila tidak diatur, cabang hanya dipasang dengan 0.25 jika bobot membawa tensor PGI atau run melatih dari nol | |
fliplr | None | Probabilitas pembalikan horizontal (alias ekosistem untuk flip_prob) |
flipud | 0.0 | Probabilitas pembalikan vertikal |
auto_augment | None | Kebijakan augmentasi otomatis klasifikasi: randaugment, autoaugment, augmix (default: tidak ada) |
erasing | 0.0 | Probabilitas RandomErasing klasifikasi, 0 <= erasing < 1 |
cutmix | 0.0 | Probabilitas CutMix klasifikasi (soft label) |
scale | 0.5 | Rentang area RandomResizedCrop klasifikasi: batas bawah float atau (min,max) eksplisit |
crop_pct | None | Rasio pengubahan ukuran evaluasi klasifikasi sebelum crop tengah (default: nilai native family model) |
plot_samples | 8 | Gambar sampel dalam plot sampel validasi: 0 untuk tanpa sampel, -1 untuk setiap gambar yang divalidasi (tidak mengubah metrik) |
Contoh
# coco8.yaml disertakan dalam paket dan mengunduh 8 gambarnya saat pertama dipakai.libreyolo train model=LibreYOLO9s.pt data=coco8.yaml epochs=10 imgsz=640 batch=8# Mencetak apa yang akan dipakai run ini, termasuk default family, lalu keluar# tanpa melatih atau memuat data.libreyolo train model=LibreDFINEn.pt data=coco8.yaml epochs=10 dry_run=truelibreyolo train model=LibreYOLO9s.pt data=coco8.yaml \ epochs=50 batch=8 optimizer=adamw lr0=0.001 weight_decay=0.0001 \ patience=20 save_period=5 project=runs/train name=yolo9s-coco8 exist_ok=trueCatatan
Default di atas tidak selalu jadi nilai yang dipakai
Setiap family model membawa config pelatihannya sendiri, dan di tempat config
itu berbeda dari config dasar, nilainya menggantikan default perintah untuk
setiap argumen yang tidak diatur secara eksplisit. Nilai yang diatur sendiri
selalu menang. libreyolo cfg mencetak default dasar berikut override
per family, dan itulah cara melihat apa yang benar-benar akan dipakai sebuah
family.
imgsz adalah argumen yang paling terdampak. Default perintahnya 640, dan
itu bukan input native setiap checkpoint: ukuran deteksi RF-DETR yang
dipublikasikan adalah 384, 512, 576 dan 704, sedangkan checkpoint YOLOX n dan
t memakai 416. RF-DETR dan DEIMv2 ditangani dengan hanya meneruskan imgsz
ketika nilainya diatur secara eksplisit, sehingga di luar itu ukuran mereka
sendiri yang tetap berlaku. Family lain menerima nilai apa adanya dan dilatih
pada ukuran tersebut. FOMO yang paling ketat: setiap ukuran hanya menerima
input native-nya (96, 192 dan 224), jadi run FOMO perlu imgsz yang cocok atau
prosesnya berhenti dengan error. RF-DETR juga menuntut nilainya habis dibagi
ukuran patch dikali jumlah window, dan melaporkan dua ukuran legal terdekat
bila tidak.
Argumen yang diabaikan sebuah family
Tidak setiap family membaca setiap argumen, dan argumen augmentasi adalah
tempat hal itu paling terlihat. RF-DETR, D-FINE, DEIM, DEIMv2, RT-DETRv4 dan
DINOv2 dilatih lewat pipeline pass-through tanpa mosaic, tanpa mixup dan tanpa
affine warp, jadi mosaic, mixup, hsv_prob, degrees, translate,
shear, mosaic_scale dan mixup_scale tidak mengenai apa pun di sana. EC
memakai pipeline yang sama tapi tetap membaca hsv_prob, degrees dan
translate ketika task-nya pose. Family klasifikasi mengabaikan kumpulan itu
kecuali mixup, yang bagi mereka berarti MixUp batch, dan mereka membaca
flip_prob. SegFormer, LingBot-Vision dan NAFNet mengabaikan seluruh kumpulan
itu berikut flip_prob, karena flip mereka berjalan pada probabilitas tetap, bukan
probabilitas yang bisa diatur. YOLO-NAS
hanya mengabaikan mosaic, sebab ia justru melakukan augmentasi dengan affine
per sampel yang selalu aktif. RF-DETR mengabaikan tiga argumen lagi di luar
daftar itu: optimizer, momentum dan nesterov.
Mengatur salah satunya bukan error. Run akan mencatat satu baris ke stderr yang
menyebut family dan argumen yang akan diabaikan, lalu melatih, dan baris itu
adalah daftar otoritatif untuk versi yang terpasang. Baris itu juga satu-satunya
sinyal, jadi run terskrip dengan quiet=true ikut meredam peringatan tersebut
bersama semua keluaran stderr lainnya.
val=false adalah kasus serupa. Nilai itu menetapkan eval_interval ke 0,
yang mematikan validasi selama pelatihan, termasuk pada epoch terakhir, dan run
tidak menulis best.pt.
Perilaku lain yang perlu diketahui
lora=true diterima oleh RF-DETR, D-FINE, DEIM, DEIMv2, RT-DETR v1, v2 dan v4,
EC, GTR serta ConvNeXt. Family lain akan keluar dengan config_unsupported
alih-alih melatih tanpa LoRA.
clip_max_norm diterima oleh family yang config pelatihannya mendeklarasikannya:
YOLOv9, YOLOv9-E2E dan YOLOv9-P2, dengan nilai bawaan 10, serta D-FINE,
Dome-DETR, DEIM, DEIMv2, TinyFormer, RT-DETR, RT-DETRv2, RT-DETRv4, RF-DETR,
DINOv2 dan GTR, dengan nilai bawaan 0.1. Family lain akan keluar dengan
config_unsupported, dan nilai negatif atau tidak hingga akan keluar dengan
config_type_error.
device=0,1 membangun model di GPU pertama dalam daftar dan meneruskan daftar
itu ke train(), yang memulai satu proses per GPU. Lihat
pelatihan multi-GPU.
RF-DETR tidak punya transfer dari detect ke segment. task=segment dengan
checkpoint segment RF-DETR memuat checkpoint itu apa pun nama berkasnya, karena
metadata checkpoint yang menentukan task-nya, sedangkan checkpoint deteksi
berhenti dengan error alih-alih melatih mask head yang belum terlatih.
pretrained=false yang digabung dengan resume ditolak pada family yang
mendukung pelatihan dari nol, karena keduanya meminta hal yang berlawanan.
mosaic dan mixup adalah penulisan versi baris perintah dari field config
mosaic_prob dan mixup_prob; pada model klasifikasi, mixup justru berarti
MixUp batch. Pada family yang mixup-nya hanya berlaku untuk
sampel mosaic, mixup di atas nol dengan mosaic bernilai nol tidak pernah
aktif, dan run akan memberi tahu hal itu.
dry_run=true meresolusi referensi model, menerapkan default family, dan
mencetak config yang akan dipakai untuk melatih. Perintah ini tidak memuat
dataset, jadi ini cara murah untuk memastikan sebuah argumen sampai pada nilai
yang diharapkan.
stdout membawa objek hasil akhir; progres dan peringatan dikirim ke stderr.
Kode keluar adalah 0 bila berhasil, 2 untuk error penggunaan atau
konfigurasi, 3 bila dataset tidak ditemukan atau tidak terbaca, 4 bila
model tidak bisa dimuat, dan 1 untuk kegagalan runtime lainnya.
Terkait: libreyolo doctor untuk memeriksa dataset sebelum
memutuskan menjalankan pelatihan, libreyolo monitor
untuk memantau run di browser, libreyolo val untuk mengukur
hasilnya.