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/exp

Sinopsis

bash
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

ArgumenDefaultArti
dataPath ke YAML dataset (format YOLO, mis. coco8.yaml). Wajib
modelyolox-sNama model atau path ke bobot
taskOverride task secara eksplisit: detect, segment, semantic, pose, classify, gaze, obb, point, depth
pretrainedtruePakai bobot pretrained. false membangun arsitekturnya dan melatih dari nol
allow_download_scriptsfalseIzinkan Python yang tertanam di blok download pada YAML dataset

Loop pelatihan

ArgumenDefaultArti
epochs300Epoch pelatihan
batch16Ukuran batch per perangkat
imgsz640Ukuran gambar pelatihan: 640 (persegi) atau 480x640 (tinggi x lebar)
deviceautoPerangkat: 0, cpu, mps, auto
workers4Worker dataloader
cachefalseCache gambar untuk mempercepat pemuatan data: ram, disk, true, false
seed0Seed acak
resumeLanjutkan pelatihan: true, atau path ke sebuah checkpoint
amptrueAutomatic Mixed Precision
amp_dtypefloat16Dtype AMP CUDA: float16 atau bfloat16
cuda_graphfalseTangkap forward dan backward pelatihan ke dalam CUDA graph. Hanya GPU tunggal dan family yang didukung; sisanya berjalan eager
lorafalseFine-tuning LoRA, untuk family transformer yang terdaftar di bagian Catatan
freezeBekukan layer: jumlah berupa integer, daftar indeks, atau nama modul

Distilasi

ArgumenDefaultArti
distill_modelTeacher: sebuah checkpoint detektor, atau id foundation teacher seperti dinov2 untuk distilasi fitur backbone
disBobot loss distilasi. Default yang dipublikasikan untuk tipe loss tersebut bila tidak diatur
distill_loss_typemgdLoss fitur untuk teacher detektor: mgd, cwd. Foundation teacher selalu memakai feat_mse

Optimizer

ArgumenDefaultArti
optimizersgdOptimizer: sgd, adam, adamw
lr00.01Learning rate (laju pembelajaran) awal
momentum0.937Momentum SGD, sekaligus koefisien momen pertama untuk optimizer Adam
weight_decay0.0005Regularisasi L2
nesterovtrueMomentum Nesterov

Scheduler

ArgumenDefaultArti
scheduleryoloxwarmcosTipe jadwal LR
warmup_epochs5Durasi warmup
warmup_lr_start0.0LR awal warmup
min_lr_ratio0.05Rasio LR minimum
lr_drop100Epoch penurunan LR bertahap untuk RF-DETR

Augmentasi

ArgumenDefaultArti
mosaic1.0Probabilitas mosaic
mixup1.0Probabilitas mixup
hsv_prob1.0Probabilitas jitter HSV
flip_prob0.5Probabilitas flip horizontal
degrees10.0Rentang rotasi, plus dan minus, dalam derajat
translate0.1Rasio translasi
shear2.0Sudut shear
mosaic_scale(0.1,2.0)Rentang skala mosaic
mixup_scale(0.5,1.5)Rentang skala mixup
no_aug_epochs15Matikan augmentasi pada N epoch terakhir

EMA

ArgumenDefaultArti
ematrueExponential Moving Average
ema_decay0.9998Faktor decay EMA

Validasi selama pelatihan

ArgumenDefaultArti
valtrueJalankan validasi selama pelatihan
eval_interval10Validasi setiap N epoch
max_det300Prediksi maksimum per gambar setelah NMS validasi
eval_max_detBatas evaluator COCO. Konvensi AP@100 pycocotools bila tidak diatur
faster_coco_evaltruePakai backend C++ faster-coco-eval untuk metrik COCO bila terpasang; kalau tidak, kembali ke pycocotools
save_plotsfalseSimpan plot validasi akhir selama pelatihan
patience50Patience early stopping. 0 mematikannya

Keluaran

ArgumenDefaultArti
projectruns/trainRoot direktori keluaran
nameexpNama eksperimen
exist_okfalsePakai ulang direktori keluaran yang sudah ada
save_period10Simpan checkpoint setiap N epoch
log_interval10Catat loss setiap N batch

Flag agent

ArgumenDefaultArti
jsonfalseKeluaran JSON ke stdout
quietfalseRedam stderr
dry_runfalseResolusi lalu cetak config tanpa menjalankannya
help_jsonfalseCetak skema perintah sebagai JSON lalu keluar

Contoh

Dasar
# 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
Periksa dulu config hasil resolusi
# 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=true
Run bernama dengan resep eksplisit
libreyolo 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=true

Catatan

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, SegFormer 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 untuk sebagian besar family; RF-DETR tidak bisa mematikan validasi lewat cara itu dan mencatat bahwa permintaan tersebut diabaikan.

Perilaku lain yang perlu diketahui

lora=true diterima oleh RF-DETR, D-FINE, DEIM, DEIMv2, RT-DETR v1, v2 dan v4, EC serta ConvNeXt. Family lain akan keluar dengan config_unsupported alih-alih melatih tanpa LoRA.

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 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.

Diverifikasi dengan LibreYOLO v1.5.0.