Programme d'entraînement YOLO26
Introduction
Ce guide décrit en détail formation recette utilisée pour élaborer le produit officiel YOLO26 points de contrôle pré-entraînés sur COCO. Chaque hyperparamètre Ce qui est présenté ici est déjà intégré dans la version publiée .pt leurs pondérations et peuvent être consultées par programmation.
Comprendre comment les modèles de base ont été entraînés vous aide à prendre de meilleures décisions lors du réglage fin: quelles augmentations de données conserver, quels poids de la fonction de perte ajuster et quels paramètres d'optimiseur conviennent le mieux à la taille de votre ensemble de données.
À qui s'adresse ce guide ?
Ce guide s'adresse aux professionnels qui souhaitent comprendre les éléments qui ont été intégrés aux checkpoints officiels de YOLO26 — non seulement l'architecture, mais aussi les programmes de taux d'apprentissage, les pipelines d'augmentation et les pondérations de perte qui ont déterminé leurs performances. Utilisez ces informations pour faire des choix éclairés lors du réglage fin sur vos propres données.
Vérification des arguments de formation
Chaque Ultralytics conserve la configuration d'entraînement complète utilisée pour sa création. Vous pouvez consulter ces paramètres à tout moment :
Vérifier les arguments de formation des points de contrôle
from ultralytics import YOLO
model = YOLO("yolo26n.pt")
print(model.ckpt["train_args"])
import torch
# Load any official checkpoint
ckpt = torch.load("yolo26n.pt", map_location="cpu", weights_only=False)
# Print all training arguments
for k, v in sorted(ckpt["train_args"].items()):
print(f"{k}: {v}")
Cela fonctionne pour n'importe quel .pt point de contrôle — qu'il s'agisse des versions officielles ou de vos propres modèles optimisés. Pour obtenir la liste complète des paramètres d'entraînement configurables, consultez le Guide de configuration de la formation.
Présentation de la formation
Tous les modèles de base YOLO26 ont été entraînés sur COCO une résolution de 640 × 640, à l'aide de l'optimiseur MuSGD avec une taille de lot de 128. Les modèles ont été initialisés à partir de poids pré-entraînés intermédiaires, puis affinés à l'aide d'hyperparamètres déterminés par une recherche évolutive. Les journaux d'entraînement complets et les métriques pour chaque taille de modèle sont disponibles sur Ultralytics :
Principaux choix de conception pour toutes les tailles :
- Formation complète (
end2end=True) avec un système de contrôle de la tête individuel NMS - Optimiseur MuSGD combinant SGD des mises à jour orthogonalisées de type Muon pour les poids des réseaux convolutifs
- Augmentation importante de la mosaïque (probabilité d'environ 0,9 à 1,0) désactivé au cours des 10 dernières époques (
close_mosaic=10) - Agrandissement agressif (0,56-0,95) pour traiter des objets de différentes tailles
- Rotation et cisaillement minimaux pour la plupart des dimensions, ce qui permet de limiter la distorsion géométrique
Hyperparamètres en fonction de la taille du modèle
Optimiseur et taux d'apprentissage
| Paramètre | N | S | M | L | X |
|---|---|---|---|---|---|
optimizer | MuSGD | MuSGD | MuSGD | MuSGD | MuSGD |
lr0 | 0.0054 | 0.00038 | 0.00038 | 0.00038 | 0.00038 |
lrf | 0.0495 | 0.882 | 0.882 | 0.882 | 0.882 |
momentum | 0.947 | 0.948 | 0.948 | 0.948 | 0.948 |
weight_decay | 0.00064 | 0.00027 | 0.00027 | 0.00027 | 0.00027 |
warmup_epochs | 0.98 | 0.99 | 0.99 | 0.99 | 0.99 |
epochs | 245 | 70 | 80 | 60 | 40 |
batch | 128 | 128 | 128 | 128 | 128 |
imgsz | 640 | 640 | 640 | 640 | 640 |
Stratégie de taux d'apprentissage
Le modèle N utilisait un taux d'apprentissage initial plus élevé avec une décroissance rapide (lrf=0.0495), tandis que les modèles S/M/L/X utilisaient un LR initial bien plus faible avec un programme plus progressif (lrf=0.882). Cela reflète les différences dans la dynamique de convergence entre les petits modèles et les grands modèles : les petits modèles nécessitent des mises à jour plus fréquentes pour apprendre efficacement.
Poids perdus
| Paramètre | N | S | M | L | X |
|---|---|---|---|---|---|
box | 5.63 | 9.83 | 9.83 | 9.83 | 9.83 |
cls | 0.56 | 0.65 | 0.65 | 0.65 | 0.65 |
dfl | 9.04 | 0.96 | 0.96 | 0.96 | 0.96 |
Le modèle N privilégie la perte DFL, tandis que les modèles S/M/L/X mettent davantage l'accent sur la régression du cadre de détection. La perte de classification reste relativement constante pour toutes les tailles.
Pipeline d'augmentation
Pour une explication détaillée de chaque technique, consultez le guide sur l'augmentationYOLO .
| Paramètre | N | S | M | L | X |
|---|---|---|---|---|---|
mosaic | 0.909 | 0.992 | 0.992 | 0.992 | 0.992 |
mixup | 0.012 | 0.05 | 0.427 | 0.427 | 0.427 |
copy_paste | 0.075 | 0.404 | 0.304 | 0.404 | 0.404 |
scale | 0.562 | 0.9 | 0.95 | 0.95 | 0.95 |
fliplr | 0.606 | 0.304 | 0.304 | 0.304 | 0.304 |
degrees | 1.11 | ~0 | ~0 | ~0 | ~0 |
shear | 1.46 | ~0 | ~0 | ~0 | ~0 |
translate | 0.071 | 0.275 | 0.275 | 0.275 | 0.275 |
hsv_h | 0.014 | 0.013 | 0.013 | 0.013 | 0.013 |
hsv_s | 0.645 | 0.353 | 0.353 | 0.353 | 0.353 |
hsv_v | 0.566 | 0.194 | 0.194 | 0.194 | 0.194 |
bgr | 0.106 | 0.0 | 0.0 | 0.0 | 0.0 |
Les modèles de plus grande taille recourent globalement à des techniques d'augmentation plus agressives ( mixup, copier-coller et mise à l'échelle plus poussés), car ils disposent d'une plus grande capacité et bénéficient d'une régularisation plus forte. Le modèle N est la seule taille à utiliser de manière significative les augmentations par rotation, cisaillement et BGR.
Paramètres de formation interne
Avancé : paramètres internes du pipeline
Les points de contrôle contiennent également des paramètres qui ont été utilisés dans le pipeline d'entraînement interne, mais qui sont pas proposés sous forme de paramètres configurables par l'utilisateur dans default.yaml:
| Paramètre | Description | N | S | M | L | X |
|---|---|---|---|---|---|---|
muon_w | Mise à jour du poids des muons dans MuSGD | 0.528 | 0.436 | 0.436 | 0.436 | 0.436 |
sgd_w | SGD du poids SGD dans MuSGD | 0.674 | 0.479 | 0.479 | 0.479 | 0.479 |
cls_w | Pondération interne | 2.74 | 3.48 | 3.48 | 3.48 | 3.48 |
o2m | Poids de la perte de charge « un-à-plusieurs » | 1.0 | 0.705 | 0.705 | 0.705 | 0.705 |
topk | Attribution des étiquettes « Top-k » | 8 | 5 | 5 | 5 | 5 |
Ces paramètres sont enregistrés à des fins de reproductibilité, mais il n'est pas nécessaire de les définir lors du réglage fin. Consultez la FAQ pour plus de détails.
Conseils pour affiner les réglages
Lorsque vous affinez YOLO26 sur votre propre ensemble de données, il n'est pas nécessaire de reproduire intégralement la procédure de pré-entraînement. Les poids pré-entraînés intègrent déjà les connaissances en matière d'augmentation et d'optimisation issues de COCO . Pour connaître les meilleures pratiques générales en matière d'entraînement, consultez la section « Conseils pour l'entraînement des modèles ».
Commencez simplement
Régler 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)
yolo train model=yolo26n.pt data=your-dataset.yaml epochs=100 imgsz=640
Le réglage fin à partir des valeurs par défaut constitue une excellente base de départ. Ne modifiez les hyperparamètres que si vous avez une raison précise de le faire.
Quand procéder à un réglage
Small datasets (< 1,000 images):
- Réduire la force d'augmentation :
mosaic=0.5,mixup=0.0,copy_paste=0.0 - Taux d'apprentissage plus faible :
lr0=0.001 - Utilisez moins epochs avec patience :
epochs=50,patience=20 - Envisagez de geler les couches de base :
freeze=10
Ensembles de données volumineux (> 50 000 images) :
- Suivre plus fidèlement la recette de pré-entraînement
- Réfléchissez
optimizer=MuSGDpour les courses plus longues - Augmentation de la taille :
mosaic=1.0,mixup=0.3,scale=0.9
Images spécifiques à certains domaines (aériennes, médicales, sous-marines) :
- Augmenter
flipud=0.5si l'orientation verticale varie - Augmenter
degreessi les objets apparaissent avec des rotations arbitraires - Régler
hsv_sethsv_vsi les conditions d'éclairage diffèrent considérablement de celles de COCO
Pour l'optimisation automatisée des hyperparamètres, consultez le guide « Réglage des hyperparamètres ».
Choisir la taille d'un modèle
| Modèle | Idéal pour | Recommandations concernant la taille des lots |
|---|---|---|
| YOLO26n | Appareils en périphérie, mobiles, en temps réel sur CPU | Grands lots (64 à 128) sur des cartes graphiques grand public |
| YOLO26s | Un équilibre entre vitesse et précision | Lot de taille moyenne (32 à 64) |
| YOLO26m | Une plus grande précision avec une puissance de calcul modérée | Petits lots (16 à 32) |
| YOLO26l | Haute précision lorsque GPU disponible | Petits lots (8 à 16) ou configurationGPU |
| YOLO26x | Précision maximale, déploiement sur serveur | Petits lots (4 à 8) ou configurationGPU |
Pour en savoir plus sur les options d'exportation et de déploiement, consultez le guide d'exportation et les options de déploiement des modèles.
FAQ
Comment puis-je consulter les hyperparamètres exacts utilisés pour un point de contrôle donné ?
Charger le point de contrôle avec torch.load() et accéder à la train_args touche, ou utilisez model.ckpt["train_args"] avec l'Ultralytics . Voir Vérification des arguments de formation pour des exemples complets.
Pourquoi le nombre d'époques diffère-t-il selon la taille du modèle ?
Les modèles plus volumineux convergent plus rapidement sur COCO ils disposent d'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 du réglage fin sur votre propre ensemble de données, le nombre optimal d'époques dépend de la taille et de la complexité de votre ensemble de données, et non de la taille du modèle. Utilisez l'arrêt précoce (patience) pour déterminer automatiquement le point d'arrêt approprié.
Dois-je utiliser MuSGD pour le réglage fin ?
Quand optimizer=auto (par défaut), Ultralytics sélectionne Ultralytics MuSGD pour les sessions d'entraînement plus longues (>10 000 itérations) et AdamW pour les plus courts. Vous pouvez définir explicitement optimizer=MuSGD si vous préférez. Pour en savoir plus sur le choix de l'optimiseur, consultez le documentation de formation.
Quels sont muon_w, sgd_w, cls_w, o2m, et topk au poste de contrôle ?
Il s'agit de paramètres internes issus du pipeline d'entraînement qui a généré les points de contrôle de base. Ils sont conservés à des fins de reproductibilité, mais sont pas paramètres configurables par l'utilisateur dans default.yaml. Il n'est pas nécessaire de les définir lors du réglage fin. Voir Paramètres de formation interne pour plus de détails.
Puis-je reproduire exactement le pré-entraînement en partant de zéro ?
Les points de contrôle ont été créés à partir d'une branche de développement interne comportant des fonctionnalités supplémentaires qui ne figurent pas dans le code source public (telles que la configuration o2m les poids et cls_w). Vous pouvez obtenir des résultats très proches en utilisant les hyperparamètres décrits sur cette page avec le Ultralytics public Ultralytics , mais une reproduction exacte nécessite la branche interne.