libreyolo train

Entraîne un modèle sur un dataset et écrit les checkpoints, les métriques et les logs dans un répertoire de run. Chaque argument ci-dessous a une valeur par défaut issue de la définition de la commande, que la config d'entraînement propre à une famille de modèles peut remplacer.

Commande
libreyolo train
Requis
data
Sortie
Checkpoints, métriques et logs dans runs/train/exp

Synopsis

bash
libreyolo train data=<dataset.yaml> [model=<name|path>] [key=value ...]

Les arguments sont des paires key=value, et la forme POSIX fonctionne aussi : epochs=50 et --epochs 50 sont donc le même argument. Les booléens acceptent true et false : amp=false devient --no-amp là où le flag possède une forme négative.

Arguments

Modèle et données

ArgumentDéfautSignification
dataChemin vers le YAML du dataset (format YOLO, par exemple coco8.yaml). Requis
modelyolox-sNom du modèle ou chemin vers des poids
taskForçage explicite de la tâche : detect, segment, semantic, pose, classify, gaze, obb, point, depth
pretrainedtrueUtiliser des poids pré-entraînés. false construit l'architecture et entraîne à partir de zéro
allow_download_scriptsfalseAutoriser le Python embarqué dans les blocs de téléchargement du YAML de dataset

Boucle d'entraînement

ArgumentDéfautSignification
epochs300Époques d'entraînement
batch16Taille de batch par appareil
imgsz640Taille des images d'entraînement : 640 (carré) ou 480x640 (HxW)
deviceautoAppareil : 0, cpu, mps, auto
workers4Workers du dataloader
cachefalseMettre les images en cache pour accélérer le chargement des données : ram, disk, true, false
seed0Graine aléatoire
resumeReprendre l'entraînement : true, ou un chemin vers un checkpoint
amptruePrécision mixte automatique
amp_dtypefloat16dtype de l'AMP CUDA : float16 ou bfloat16
cuda_graphfalseCapturer les passes avant et arrière de l'entraînement dans des CUDA graphs. GPU unique, familles prises en charge uniquement ; les autres s'exécutent en mode eager
lorafalseFine-tuning LoRA, pour les familles transformer listées sous Notes
freezeGeler des couches : un nombre entier, une liste d'indices, ou des noms de modules

Distillation

ArgumentDéfautSignification
distill_modelEnseignant : un checkpoint de détecteur, ou un identifiant de modèle de fondation enseignant tel que dinov2 pour la distillation des caractéristiques du backbone
disPoids de la loss (fonction de perte) de distillation. La valeur par défaut publiée pour le type de loss si non défini
distill_loss_typemgdLoss de caractéristiques pour les enseignants détecteurs : mgd, cwd. Les enseignants de fondation utilisent toujours feat_mse

Optimiseur

ArgumentDéfautSignification
optimizersgdOptimiseur : sgd, adam, adamw
lr00.01Learning rate initial
momentum0.937Momentum de SGD, et coefficient du premier moment pour les optimiseurs Adam
weight_decay0.0005Régularisation L2
nesterovtrueMomentum de Nesterov

Scheduler

ArgumentDéfautSignification
scheduleryoloxwarmcosType de schedule du LR
warmup_epochs5Durée du warmup
warmup_lr_start0.0LR initial du warmup
min_lr_ratio0.05Ratio de LR minimal
lr_drop100Époque de baisse du LR par paliers pour RF-DETR

Augmentation

ArgumentDéfautSignification
mosaic1.0Probabilité du mosaic
mixup1.0Probabilité du mixup
hsv_prob1.0Probabilité du jitter HSV
flip_prob0.5Probabilité de retournement horizontal
degrees10.0Amplitude de rotation, en plus et en moins, en degrés
translate0.1Ratio de translation
shear2.0Angle de cisaillement
mosaic_scale(0.1,2.0)Plage d'échelle du mosaic
mixup_scale(0.5,1.5)Plage d'échelle du mixup
no_aug_epochs15Désactiver l'augmentation pendant les N dernières époques

EMA

ArgumentDéfautSignification
ematrueMoyenne mobile exponentielle
ema_decay0.9998Facteur de décroissance de l'EMA

Validation pendant l'entraînement

ArgumentDéfautSignification
valtrueValider pendant l'entraînement
eval_interval10Valider toutes les N époques
max_det300Nombre maximum de prédictions par image après le NMS de validation
eval_max_detPlafond de l'évaluateur COCO. La convention AP@100 de pycocotools si non défini
faster_coco_evaltrueUtiliser le backend C++ faster-coco-eval pour les métriques COCO s'il est installé ; repli sur pycocotools
save_plotsfalseEnregistrer les graphiques de validation finale pendant l'entraînement
patience50Patience de l'early stopping. 0 le désactive

Sortie

ArgumentDéfautSignification
projectruns/trainRacine du répertoire de sortie
nameexpNom de l'expérience
exist_okfalseRéutiliser un répertoire de sortie existant
save_period10Enregistrer un checkpoint toutes les N époques
log_interval10Journaliser la loss tous les N batchs

Flags agent

ArgumentDéfautSignification
jsonfalseSortie JSON sur stdout
quietfalseSupprimer stderr
dry_runfalseRésoudre et afficher la config sans exécuter
help_jsonfalseDumper le schéma de la commande en JSON et quitter

Exemples

Basique
# coco8.yaml est fourni avec le paquet et télécharge ses 8 images au premier usage.libreyolo train model=LibreYOLO9s.pt data=coco8.yaml epochs=10 imgsz=640 batch=8
Vérifier d'abord la config résolue
# Affiche ce que le run utiliserait, valeurs par défaut de la famille# incluses, et quitte sans entraîner ni charger de données.libreyolo train model=LibreDFINEn.pt data=coco8.yaml epochs=10 dry_run=true
Run nommé avec une recette explicite
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

Notes

Les valeurs par défaut ci-dessus ne sont pas toujours celles utilisées

Chaque famille de modèles porte sa propre config d'entraînement, et là où cette config diffère de la config de base, sa valeur remplace la valeur par défaut de la commande pour tout argument que vous n'avez pas défini explicitement. Définir l'argument vous-même l'emporte toujours. libreyolo cfg affiche les valeurs par défaut de base et les surcharges par famille, ce qui est le moyen de voir ce qu'une famille donnée utilisera réellement.

imgsz est l'argument pour lequel cela compte le plus. La valeur par défaut de la commande est 640, qui n'est pas l'entrée native de tous les checkpoints : les tailles de détection publiées pour RF-DETR sont 384, 512, 576 et 704, et les checkpoints YOLOX n et t sont en 416. RF-DETR et DEIMv2 sont traités en ne transmettant imgsz que s'il a été défini explicitement, si bien que leur propre taille reste sinon en vigueur. Les autres familles reçoivent la valeur telle quelle et s'entraînent à cette taille. FOMO est la famille stricte : chaque taille n'accepte que son entrée native (96, 192 et 224), donc un run FOMO exige que imgsz soit réglé en conséquence, sinon il s'arrête sur une erreur. RF-DETR impose en plus que la valeur soit divisible par sa taille de patch multipliée par son nombre de fenêtres, et signale les deux tailles légales les plus proches lorsque ce n'est pas le cas.

Les arguments qu'une famille ignore

Toutes les familles ne lisent pas tous les arguments, et c'est sur ceux d'augmentation que cela se voit. RF-DETR, D-FINE, DEIM, DEIMv2, RT-DETRv4 et DINOv2 s'entraînent via des pipelines pass-through sans mosaic, sans mixup et sans déformation affine, si bien que mosaic, mixup, hsv_prob, degrees, translate, shear, mosaic_scale et mixup_scale n'atteignent rien chez elles. EC partage ce pipeline mais lit bien hsv_prob, degrees et translate quand sa tâche est pose. Les familles de classification, SegFormer et NAFNet ignorent tout cet ensemble et flip_prob avec lui, parce que leur retournement s'applique à une probabilité fixe plutôt que configurable. YOLO-NAS ignore mosaic seul, puisqu'il augmente à la place avec une transformation affine par échantillon toujours active. RF-DETR en ignore trois autres au-delà de cette liste : optimizer, momentum et nesterov.

Définir l'un d'eux n'est pas une erreur. Le run écrit sur stderr une ligne qui nomme la famille et les arguments qu'elle ignorera, puis entraîne, et cette ligne est la liste faisant autorité pour la version installée. C'est aussi le seul signal, donc un run scripté avec quiet=true supprime cet avertissement en même temps que tout le reste sur stderr.

val=false est un cas voisin. Il met eval_interval à 0 pour la plupart des familles ; RF-DETR ne peut pas désactiver la validation ainsi et journalise qu'il a ignoré la demande.

Autres comportements à connaître

lora=true est accepté par RF-DETR, D-FINE, DEIM, DEIMv2, RT-DETR v1, v2 et v4, EC et ConvNeXt. Toute autre famille se termine avec config_unsupported plutôt que d'entraîner sans.

pretrained=false combiné avec resume est refusé pour les familles qui prennent en charge l'entraînement à partir de zéro, puisque les deux demandent des choses opposées.

mosaic et mixup sont les orthographes en ligne de commande des champs de config mosaic_prob et mixup_prob. Sur les familles dont le mixup ne s'applique qu'aux échantillons mosaic, mixup au-dessus de zéro avec mosaic à zéro ne se déclenche jamais, et le run le signale.

dry_run=true résout la référence du modèle, applique les valeurs par défaut de la famille et affiche la config avec laquelle il entraînerait. Il ne charge pas le dataset, c'est donc le moyen peu coûteux de confirmer qu'un argument a bien atteint la valeur que vous attendiez.

stdout porte l'objet de résultat final ; la progression et les avertissements vont sur stderr. Le code de sortie est 0 en cas de succès, 2 pour une erreur d'usage ou de configuration, 3 quand le dataset est introuvable ou illisible, 4 quand le modèle ne peut pas être chargé, et 1 pour les autres échecs d'exécution.

À voir aussi : libreyolo doctor pour vérifier un dataset avant de lancer un run, libreyolo monitor pour suivre un run dans le navigateur, libreyolo val pour mesurer le résultat.

Vérifié avec LibreYOLO v1.5.0.