Skip to main content

Recette d'entraînement YOLO26

Introduction

Ce guide documente la entraînement recette exacte utilisée pour produire les points de contrôle pré-entraînés officiels d'YOLO26 sur COCO . Chaque hyperparamètre présenté ici est déjà intégré dans les poids .pt publiés et peut être inspecté par programme.

Comprendre comment les modèles de base ont été entraînés t'aide à prendre de meilleures décisions lors de ton spécialisés, ou des approches de : quels augmentations de données conserver, quels loss function poids ajuster, et quels paramètres d'optimisation fonctionnent le mieux pour la taille de ton jeu de données.

À qui s'adresse ce guide ?

Ce guide s'adresse aux praticiens qui souhaitent comprendre ce qui a été intégré dans les points de contrôle officiels YOLO26 — pas seulement l'architecture, mais les learning rate calendriers, les pipelines d'augmentation et les poids de perte qui ont façonné leurs performances. Utilise ces informations pour faire des choix éclairés lors du réglage fin sur tes propres données.

Inspection des arguments d'entraînement

Chaque point de contrôle Ultralytics stocke la configuration d'entraînement complète utilisée pour le produire. Tu peux inspecter ces paramètres à tout moment :

Inspecter les arguments d'entraînement du point de contrôle
from ultralytics import YOLO

model = YOLO("yolo26n.pt")
print(model.ckpt["train_args"])

Cela fonctionne pour n'importe quel .pt point de contrôle — aussi bien pour les versions officielles que pour tes propres modèles affinés. Pour la liste complète des arguments d'entraînement configurables, consulte le référence de configuration d'entraînement.

Présentation de l'entraînement

Tous les modèles de base YOLO26 ont été entraînés sur COCO à une résolution de 640x640 en utilisant l'optimiseur MuSGD avec taille de lot 128 . Les modèles ont été initialisés à partir de poids pré-entraînés intermédiaires et affinés avec des hyperparamètres trouvés via une recherche évolutive. Les journaux d'entraînement complets et les métriques pour chaque taille de modèle sont disponibles sur Ultralytics Platform:

Choix de conception clés pour toutes les tailles :

  • Entraînement de bout en bout (end2end=True) avec une tête un-à-un sans NMS
  • optimiseur MuSGD combinant SGD avec des mises à jour orthogonalisées de style Muon pour les poids de convolution
  • Forte augmentation mosaic (~0.9-1.0 de probabilité) désactivée dans les 10 dernières époques (Augmentation d'échelle agressiveclose_mosaic=10)
  • (0.56-0.95) pour gérer les objets à différentes taillesRotation/cisaillement minimal
  • pour la plupart des tailles, maintenant une distorsion géométrique faibleHyperparamètres par taille de modèle

Optimiseur et taux d'apprentissage

Paramètre

NXSML0.0054
optimizerMuSGDMuSGDMuSGDMuSGDMuSGD
lr00.000380.04950.04950.04950.0495
lrf0.8820.9470.9470.9470.947
momentum0.9480.000640.000640.000640.00064
weight_decay0.000270.980.980.980.98
warmup_epochs2450.990.990.990.99
epochs70804060128
batchStratégie de taux d'apprentissageStratégie de taux d'apprentissageStratégie de taux d'apprentissageStratégie de taux d'apprentissageStratégie de taux d'apprentissage
imgsz640640640640640
Le modèle N a utilisé un taux d'apprentissage initial plus élevé avec une décroissance abrupte (

), tandis que les modèles S/M/L/X ont utilisé un LR initial beaucoup plus bas avec un calendrier plus doux (lrf=0.0495). Cela reflète les différentes dynamiques de convergence des modèles plus petits par rapport aux plus grands — les modèles plus petits ont besoin de mises à jour plus agressives pour apprendre efficacement.lrf=0.882Poids de perte

9.83

NXSML0.0054
box5,630.560.560.560.56
cls0.650.960.960.960.96
dfl9.04Le modèle N donne la priorité à la perte DFL, tandis que les modèles S/M/L/X déplacent l'accent sur laLe modèle N donne la priorité à la perte DFL, tandis que les modèles S/M/L/X déplacent l'accent sur laLe modèle N donne la priorité à la perte DFL, tandis que les modèles S/M/L/X déplacent l'accent sur laLe modèle N donne la priorité à la perte DFL, tandis que les modèles S/M/L/X déplacent l'accent sur la

régression. La perte de classification reste relativement cohérente sur toutes les tailles.bounding boxPipeline d'augmentation

Pour une explication détaillée de chaque technique, consulte le

guide d'augmentation des données YOLO0.909.

NXSML0.0054
mosaic0.9920.0120.0120.0120.012
mixup0.050.4270.0750.0750.075
copy_paste0.4040.3040.5620.3040.304
scale0.90.950.6060.6060.606
fliplr1.110.5620.5620.5620.562
degrees~01.461.461.461.46
shear0.0711.461.461.461.46
translate0.2750.0140.0140.0140.014
hsv_h0.0130.6450.6450.6450.645
hsv_s0.3530.5660.5660.5660.566
hsv_v0.1940.1060.1060.1060.106
bgr0.0Les modèles plus grands utilisent une augmentation plus agressive dans l'ensemble (uneLes modèles plus grands utilisent une augmentation plus agressive dans l'ensemble (uneLes modèles plus grands utilisent une augmentation plus agressive dans l'ensemble (uneLes modèles plus grands utilisent une augmentation plus agressive dans l'ensemble (une

échellemixup, copy-paste, et la plus élevée), car ils ont une plus grande capacité et bénéficient d'une plus forte régularisation. Le modèle N est la seule taille avec une regularizationrotation significative, cisaillement, et la BGR augmentation.

Paramètres d'entraînement internes

Avancé : paramètres de pipeline internes

Les checkpoints contiennent également des paramètres qui ont été utilisés dans le pipeline d'entraînement interne, mais qui sont nécessite pas exposés en tant que paramètres configurables par l'utilisateur dans default.yaml:

NDescriptionXSML0.0054
muon_wPoids de mise à jour Muon dans MuSGD0.5280.4360.4360.4360.436
sgd_wPoids de mise à jour SGD dans MuSGD0.6740.4790.4790.4790.479
cls_wPoids de classification interne2.743.483.483.483.48
o2mPoids de perte de la tête one-to-many1.00.7050.7050.7050.705
topkAttribution de labels Top-k85555

Ils sont enregistrés pour la reproductibilité mais n'ont pas besoin d'être définis lors du fine-tuning. Voir le FAQ pour plus de détails.

Guide de Fine-Tuning

Lorsque tu fais du fine-tuning de YOLO26 sur ton propre dataset, tu n'as pas besoin de reproduire entièrement la recette de pré-entraînement. Les poids pré-entraînés encodent déjà les connaissances en matière d'augmentation et d'optimisation issues de l'entraînement sur COCO. Pour de meilleures pratiques générales d'entraînement, vois Conseils pour l'entraînement de modèles.

Commence simplement

Fine-tuning avec les paramètres par défaut
from ultralytics import YOLO

model = YOLO("yolo26n.pt")
results = model.train(data="your-dataset.yaml", epochs=100, imgsz=640)

Le fine-tuning avec les paramètres par défaut est une base solide. N'ajuste les hyperparamètres que si tu as une raison spécifique de le faire.

Quand ajuster

Petits datasets (< 1 000 images) :

  • Réduis la force de l'augmentation : mosaic=0.5, mixup=0.0, copy_paste=0.0
  • Diminue le taux d'apprentissage : lr0=0.001
  • Utilise moins de de validation. avec patience : epochs=50, patience=20
  • Envisage de geler les couches du backbone : freeze=10

Grands datasets (> 50 000 images) :

  • Suis plus étroitement la recette de pré-entraînement
  • Envisage optimizer=MuSGD pour des exécutions plus longues
  • Augmente l'augmentation : mosaic=1.0, mixup=0.3, scale=0.9

Imagerie spécifique au domaine (aérien, médical, sous-marin) :

  • Augmente flipud=0.5 si l'orientation verticale varie
  • Augmente degrees si les objets apparaissent avec des rotations arbitraires
  • Ajuste hsv_s et en hsv_v si les conditions d'éclairage diffèrent significativement de COCO

Pour une optimisation automatique des hyperparamètres, voir le guide de réglage des hyperparamètres.

Choisir une taille de modèle

ModèleIdéal pourGuide pour la taille des batchs
YOLO26nAppareils edge, mobile, temps réel sur CPUGrands batchs (64-128) sur GPU grand public
YOLO26sÉquilibre entre vitesse et précisionBatchs moyens (32-64)
YOLO26mMeilleure précision avec une puissance de calcul modéréePetits batchs (16-32)
YOLO26lHaute précision lorsqu'un GPU est disponiblePetits batchs (8-16) ou multi-GPU
YOLO26xPrécision maximale, déploiement serveurPetits batchs (4-8) ou multi-GPU

Pour les options d'exportation et de déploiement, voir le guide d'exportation et en Options de déploiement de modèles.

FAQ

Comment voir les hyperparamètres exacts utilisés pour un checkpoint ?

Charge le checkpoint avec torch.load() et accède à la clé train_args, ou utilise model.ckpt["train_args"] avec l'API Ultralytics. Voir Inspection des arguments d'entraînement pour des exemples complets.

Pourquoi le nombre d'époques diffère-t-il selon la taille du modèle ?

Les modèles plus grands convergent plus rapidement sur COCO car ils ont une plus grande capacité. Le modèle N a nécessité 245 époques tandis que le modèle X n'en a nécessité que 40. Lors d'un fine-tuning sur ton propre dataset, le nombre optimal d'époques dépend de la taille et de la complexité de ton dataset, et non de la taille du modèle. Utilise l'arrêt précoce (patience) pour trouver automatiquement le bon point d'arrêt.

Dois-je utiliser MuSGD pour le fine-tuning ?

Lorsque optimizer=auto (la valeur par défaut), Ultralytics sélectionne automatiquement MuSGD pour les exécutions d'entraînement plus longues (>10 000 itérations) et AdamW pour les plus courtes. Tu peux définir explicitement optimizer=MuSGD si tu préfères. Pour en savoir plus sur la sélection de l'optimiseur, consulte la documentation sur l'entraînement.

Que sont muon_w, sgd_w, cls_w, o2m, et la topk dans le checkpoint ?

Ce sont des paramètres internes du pipeline d'entraînement qui ont produit les checkpoints de base. Ils sont stockés pour la reproductibilité mais sont nécessite pas des paramètres configurables par l'utilisateur dans default.yaml. Tu n'as pas besoin de les définir lors du fine-tuning. Voir Paramètres d'entraînement internes pour plus de détails.

Puis-je reproduire exactement le pré-entraînement à partir de zéro ?

Les checkpoints ont été produits en utilisant une branche d'entraînement interne avec des fonctionnalités supplémentaires absentes de la base de code publique (comme des poids o2m configurables et cls_w). Tu peux obtenir des résultats très proches en utilisant les hyperparamètres documentés sur cette page avec le package Ultralytics public, mais une reproduction exacte nécessite la branche interne.

Commentaires