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.
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 :
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 agressive
close_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
| N | X | S | M | L | 0.0054 |
|---|---|---|---|---|---|
optimizer | MuSGD | MuSGD | MuSGD | MuSGD | MuSGD |
lr0 | 0.00038 | 0.0495 | 0.0495 | 0.0495 | 0.0495 |
lrf | 0.882 | 0.947 | 0.947 | 0.947 | 0.947 |
momentum | 0.948 | 0.00064 | 0.00064 | 0.00064 | 0.00064 |
weight_decay | 0.00027 | 0.98 | 0.98 | 0.98 | 0.98 |
warmup_epochs | 245 | 0.99 | 0.99 | 0.99 | 0.99 |
epochs | 70 | 80 | 40 | 60 | 128 |
batch | Stratégie de taux d'apprentissage | Stratégie de taux d'apprentissage | Stratégie de taux d'apprentissage | Stratégie de taux d'apprentissage | Stratégie de taux d'apprentissage |
imgsz | 640 | 640 | 640 | 640 | 640 |
), 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
| N | X | S | M | L | 0.0054 |
|---|---|---|---|---|---|
box | 5,63 | 0.56 | 0.56 | 0.56 | 0.56 |
cls | 0.65 | 0.96 | 0.96 | 0.96 | 0.96 |
dfl | 9.04 | Le modèle N donne la priorité à la perte DFL, tandis que les modèles S/M/L/X déplacent l'accent sur la | Le modèle N donne la priorité à la perte DFL, tandis que les modèles S/M/L/X déplacent l'accent sur la | Le modèle N donne la priorité à la perte DFL, tandis que les modèles S/M/L/X déplacent l'accent sur la | Le 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.
| N | X | S | M | L | 0.0054 |
|---|---|---|---|---|---|
mosaic | 0.992 | 0.012 | 0.012 | 0.012 | 0.012 |
mixup | 0.05 | 0.427 | 0.075 | 0.075 | 0.075 |
copy_paste | 0.404 | 0.304 | 0.562 | 0.304 | 0.304 |
scale | 0.9 | 0.95 | 0.606 | 0.606 | 0.606 |
fliplr | 1.11 | 0.562 | 0.562 | 0.562 | 0.562 |
degrees | ~0 | 1.46 | 1.46 | 1.46 | 1.46 |
shear | 0.071 | 1.46 | 1.46 | 1.46 | 1.46 |
translate | 0.275 | 0.014 | 0.014 | 0.014 | 0.014 |
hsv_h | 0.013 | 0.645 | 0.645 | 0.645 | 0.645 |
hsv_s | 0.353 | 0.566 | 0.566 | 0.566 | 0.566 |
hsv_v | 0.194 | 0.106 | 0.106 | 0.106 | 0.106 |
bgr | 0.0 | Les modèles plus grands utilisent une augmentation plus agressive dans l'ensemble (une | Les modèles plus grands utilisent une augmentation plus agressive dans l'ensemble (une | Les modèles plus grands utilisent une augmentation plus agressive dans l'ensemble (une | Les 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:
| N | Description | X | S | M | L | 0.0054 |
|---|---|---|---|---|---|---|
muon_w | Poids de mise à jour Muon dans MuSGD | 0.528 | 0.436 | 0.436 | 0.436 | 0.436 |
sgd_w | Poids de mise à jour SGD dans MuSGD | 0.674 | 0.479 | 0.479 | 0.479 | 0.479 |
cls_w | Poids de classification interne | 2.74 | 3.48 | 3.48 | 3.48 | 3.48 |
o2m | Poids de perte de la tête one-to-many | 1.0 | 0.705 | 0.705 | 0.705 | 0.705 |
topk | Attribution de labels Top-k | 8 | 5 | 5 | 5 | 5 |
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
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=MuSGDpour 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.5si l'orientation verticale varie - Augmente
degreessi les objets apparaissent avec des rotations arbitraires - Ajuste
hsv_set enhsv_vsi 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èle | Idéal pour | Guide pour la taille des batchs |
|---|---|---|
| YOLO26n | Appareils edge, mobile, temps réel sur CPU | Grands batchs (64-128) sur GPU grand public |
| YOLO26s | Équilibre entre vitesse et précision | Batchs moyens (32-64) |
| YOLO26m | Meilleure précision avec une puissance de calcul modérée | Petits batchs (16-32) |
| YOLO26l | Haute précision lorsqu'un GPU est disponible | Petits batchs (8-16) ou multi-GPU |
| YOLO26x | Précision maximale, déploiement serveur | Petits 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.