YOLO26-Trainingsrezept#
Einführung#
Dieser Leitfaden dokumentiert das genaue Trainings-Rezept, mit dem die offiziellen vortrainierten YOLO26-Checkpoints für COCO erstellt wurden. Jeder hier gezeigte Hyperparameter ist bereits in den veröffentlichten .pt-Gewichten enthalten, zusammen mit dem Trainingsprotokoll pro Epoche und der Code-Revision des Laufs. All das lässt sich programmatisch untersuchen.
Wenn du weißt, was in die offiziellen Checkpoints eingeflossen ist – nicht nur die Architektur, sondern auch die Lernraten, Augmentierungspipelines und Verlustgewichte, die ihre Leistung geprägt haben –, kannst du beim Fine-Tuning bessere Entscheidungen treffen: welche Datenaugmentierungen du beibehältst, welche Gewichte der Verlustfunktion du anpasst und welche Optimierereinstellungen sich für die Größe deines Datensatzes am besten eignen.
Diese Seite behandelt die in den veröffentlichten Checkpoints gespeicherten Hyperparameter. Die Hintergründe dazu – darunter die Architektur, Änderungen an Verlustfunktion und Labelzuweisung sowie die Ablationsstudien – findest du im Paper Ultralytics YOLO26: Einheitliche Echtzeit-End-to-End-Vision-Modelle.
Trainingsübersicht#
Alle YOLO26-Basismodelle wurden in zwei Phasen trainiert: Vortraining mit Objects365v1 über 150 Epochen, gefolgt von Fine-Tuning mit COCO. Beide Phasen liefen mit einer Auflösung von 640x640, dem Optimierer MuSGD und einer Batchgröße von 128. Kein YOLO26-Checkpoint wurde mit zufälligen Gewichten auf COCO trainiert. Deshalb ist die COCO-Phase bei den meisten Modellgrößen kurz. Die Hyperparameter für die COCO-Phase wurden durch evolutionäre Suche ermittelt. Die vollständigen Trainingsprotokolle und Metriken für jede Modellgröße sind in den veröffentlichten Checkpoints gespeichert und werden als Diagramme auf der Ultralytics-Plattform dargestellt.
Wichtige Designentscheidungen für alle Modellgrößen:
- Vortraining mit Objects365 jeder Modellgröße vor der COCO-Phase
- Training mit zwei Heads mit One-to-Many- und One-to-One-Supervision; bei der Inferenz wird standardmäßig NMS verwendet, während
nms=Falseden NMS-freien Head auswählt - MuSGD-Optimierer, der SGD mit Muon-ähnlichen orthogonalisierten Updates für Gewichtsmatrizen kombiniert (lineare 2D-Gewichte und 4D-Faltungsfilter, die in 2D umgeformt werden)
- Starke Mosaic-Augmentierung (~0.9-1.0 Wahrscheinlichkeit), die in den letzten Epochen deaktiviert wird (
close_mosaic=8beim Vortraining,close_mosaic=10auf COCO) - Starke Skalierungsaugmentierung (0.5-0.95), um Objekte unterschiedlicher Größe zu verarbeiten
- Minimale Rotation und Scherung bei den meisten Modellgrößen, um geometrische Verzerrungen gering zu halten
Phase 1: Vortraining mit Objects365#
Jeder YOLO26-COCO-Checkpoint wurde mit einem Objects365v1-Checkpoint derselben Größe feinabgestimmt. Diese vortrainierten Gewichte wurden ebenfalls veröffentlicht und sind auf der Objects365-Datensatzseite dokumentiert. Jeder COCO-Checkpoint nennt seine Ausgangsgewichte in der Trainingskonfiguration, die in der Datei .pt eingebettet ist. Im Folgenden wird unter Trainingsargumente des YOLO26-Checkpoints untersuchen gezeigt, wie du diese ausliest:
| COCO-Checkpoint | Ausgangsgewichte |
|---|---|
yolo26n.pt | yolo26n-objv1-150.pt |
yolo26s.pt | yolo26s-objv1-150.pt |
yolo26m.pt | yolo26m-objv1-150.pt |
yolo26l.pt | yolo26l-objv1-150.pt |
yolo26x.pt | yolo26x-objv1-150.pt |
Beim Vortraining wurden größtenteils Standardeinstellungen statt durch Suche ermittelter Werte verwendet. lr0, lrf, momentum, weight_decay, box und cls stimmen mit default.yaml überein, während warmup_epochs, close_mosaic und dfl überschrieben wurden. Abgesehen von warmup_epochs bei X, den Augmentierungsstärken und den internen MuSGD- und Head-Gewichten, die nach den Tabellen aufgeführt sind, gelten für alle Modellgrößen dieselben Einstellungen:
| Einstellung | Wert |
|---|---|
data | Objects365v1 |
epochs | 150 |
imgsz | 640 |
batch | 128 |
optimizer | MuSGD |
lr0 / lrf | 0.01 / 0.01 |
momentum | 0.937 |
weight_decay | 0.0005 |
warmup_epochs | 1 (2 für X) |
close_mosaic | 8 |
box / cls / dfl | 7.5 / 0.5 / 6.0 |
| Augmentierung | N | S | M | L | X |
|---|---|---|---|---|---|
mosaic | 1.0 | 1.0 | 1.0 | 1.0 | 1.0 |
mixup | 0.0 | 0.05 | 0.15 | 0.15 | 0.2 |
copy_paste | 0.1 | 0.15 | 0.4 | 0.5 | 0.6 |
scale | 0.5 | 0.9 | 0.9 | 0.9 | 0.9 |
Diese Tabellen enthalten die Einstellungen, die das Vortraining beeinflussen, aber nicht die vollständige Konfiguration. Die Checkpoints speichern über 100 Argumente. Gib daher wie unten gezeigt train_args aus, um die maßgebliche Liste zu erhalten.
Erweitert: interne Parameter des Vortrainings
Beim Vortraining wurden außerdem ähnliche Parameter experimenteller Branches variiert wie unter Interne Trainingsparameter beschrieben. cls_w hatte bei allen Modellgrößen den Wert 1.0:
| Einstellung | N | S | M | L | X |
|---|---|---|---|---|---|
muon_w | 0.45 | 0.5 | 0.45 | 0.45 | 0.5 |
sgd_w | 0.55 | 0.5 | 0.55 | 0.55 | 0.6 |
o2m | 0.1 | 0.1 | 0.1 | 1.0 | 1.0 |
Du benötigst den Objects365-Datensatz nicht, um Stage 1 erneut zu verwenden. Die vortrainierten Checkpoints werden wie jedes andere Ultralytics-Asset automatisch heruntergeladen, sodass du sie mit deinem eigenen Datensatz feinabstimmen kannst:
from ultralytics import YOLO
model = YOLO("yolo26s-objv1-150.pt")
results = model.train(data="your-dataset.yaml", epochs=100, imgsz=640)Um stattdessen die COCO-Stage erneut auszuführen, beginne mit denselben Gewichten und übergib für diese Modellgröße die Optimizer-, Loss- und Augmentierungswerte aus Stage 2 aus den Tabellen unten. In diesen Tabellen fehlen kleinere, nicht standardmäßige Argumente wie warmup_momentum, warmup_bias_lr, perspective, flipud und cutmix. Gib daher train_args aus dem Checkpoint aus, um die exakte Konfiguration zu erhalten. Das veröffentlichte Paket weist die internen Parameter zurück; du benötigst dafür den experimentellen Branch.
Trainingsargumente des YOLO26-Checkpoints untersuchen#
Jeder Ultralytics-Checkpoint speichert die vollständige Trainingskonfiguration, mit der er erstellt wurde. Du kannst also jede Zahl auf dieser Seite selbst überprüfen:
from ultralytics import YOLO
model = YOLO("yolo26n.pt")
print(model.ckpt["train_args"])Die Ausgabe listet die vollständige Konfiguration mit über 100 Einträgen auf, einschließlich aller auf dieser Seite dokumentierten Rezeptwerte. Ein Auszug für yolo26n.pt:
batch: 128
...
box: 5.62767
...
close_mosaic: 10
cls: 0.56099
...
dfl: 9.03871
...
epochs: 245
...
lr0: 0.0054
lrf: 0.04952
...
optimizer: MuSGDDas funktioniert mit jedem .pt-Checkpoint – sowohl mit offiziellen Releases als auch mit deinen eigenen feinabgestimmten Modellen. Die vollständige Liste der konfigurierbaren Trainingsargumente findest du in der Referenz zur Trainingskonfiguration.
Trainingskurven anzeigen#
train_args ist nicht das Einzige, was gespeichert wird. Jeder Checkpoint enthält außerdem das vollständige results.csv des Laufs, mit dem er erstellt wurde, sowie dessen abschließende Validierungsmetriken. Die Kurven der offiziellen YOLO26-Checkpoints werden auf der Ultralytics Platform veröffentlicht. Jede .pt-Datei kann auf ein Projekt gezogen und dort abgelegt werden, um dieselben Daten grafisch darzustellen; die Metadaten werden dabei automatisch aus der Datei ausgelesen.
Jeder Checkpoint umfasst die Stage, in der er erstellt wurde. Die COCO-Kurven befinden sich daher in yolo26s.pt, die 150-Epochen-Kurven von Objects365 in yolo26s-objv1-150.pt.
Codeversion überprüfen#
ckpt["git"] speichert den Commit, mit dem der Checkpoint erstellt wurde. Diese Commits befinden sich auf öffentlichen experimentellen Branches des Ultralytics-Repositorys, sodass du den exakten Trainingscode auschecken kannst:
from ultralytics import YOLO
print(YOLO("yolo26n.pt").ckpt["git"])
# {'root': ..., 'branch': 'exp-main', 'commit': 'cb13d5f9cfbd6f299da3620c625f81d721dc2849', ...}git fetch origin cb13d5f9cfbd6f299da3620c625f81d721dc2849
git checkout cb13d5f9cfbd6f299da3620c625f81d721dc2849Experimentelle Branches enthalten Arbeiten, die es nie in main geschafft haben, beispielsweise konfigurierbare o2m und cls_w. Das Training mit main und den unten dokumentierten Hyperparametern liefert keine bitgenauen Ergebnisse, liegt aber nur vernachlässigbar weit von den veröffentlichten Metriken entfernt.
YOLO26-Trainingshyperparameter nach Modellgröße#
Dies sind die Werte aus Stage 2, die auf die Objects365-Gewichte oben angewendet werden. Die Tabellen unten ordnen das Rezept nach Kategorien: Optimizer und Zeitplan, Loss-Gewichte und Augmentierung. Jeder Wert stammt direkt aus dem in den veröffentlichten Checkpoints eingebetteten train_args.
Optimizer und Lernrate#
Diese Optimizer- und Zeitplaneinstellungen bestimmten die COCO-Feinabstimmung für jede Größe. Beachte, dass sich das N-Modell von den anderen unterscheidet:
| Einstellung | 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 |
Das N-Modell verwendete eine höhere anfängliche Lernrate mit starkem Abfall (lrf=0.0495), während die Modelle S/M/L/X eine deutlich niedrigere anfängliche Lernrate mit einem sanfteren Zeitplan verwendeten (lrf=0.882). Das spiegelt die unterschiedlichen Konvergenzdynamiken kleinerer und größerer Modelle wider: Kleinere Modelle benötigen aggressivere Aktualisierungen, um effektiv zu lernen.
Loss-Gewichte#
Die Loss-Gewichte gleichen die drei Komponenten des Detektions-Losses aus: die IoU-Regression der Bounding Box (box), die Klassifizierung (cls) und einen Regressionsterm für Boxabstände (dfl). Beachte, dass das DFL-freie YOLO26 den Gain dfl neu verwendet, um einen L1-Loss auf normalisierte Boxabstände statt des Distribution Focal Loss zu gewichten:
| Einstellung | 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 |
Das N-Modell gewichtet den Distanzregressionsterm dfl höher, während die Modelle S/M/L/X den Schwerpunkt auf die IoU-basierte Boxregression verlagern. Der Klassifizierungs-Loss bleibt bei allen Größen relativ ähnlich.
Augmentierungspipeline#
Eine ausführliche Erläuterung der einzelnen Techniken findest du im Leitfaden zur YOLO-Datenaugmentierung.
| Einstellung | 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 |
Die im Checkpoint tatsächlich hinterlegten Werte für ~0 liegen unter 0,01 (zum Beispiel degrees=0.00012 für das S-Modell) – die Augmentierung ist damit praktisch deaktiviert.
Größere Modelle verwenden insgesamt stärkere Augmentierung (höhere MixUp- und Skalierungswerte), da sie über mehr Kapazität verfügen und von stärkerer Regularisierung profitieren. Das N-Modell ist die einzige Größe mit nennenswerter Rotation, Scherung und BGR-Augmentierung.
Interne Trainingsparameter#
Erweitert: interne Pipelineparameter
Die Checkpoints enthalten außerdem Parameter, die im experimentellen Trainingsbranch verwendet wurden, aber in default.yaml nicht als benutzerkonfigurierbare Einstellungen verfügbar sind:
| Einstellung | Beschreibung | N | S | M | L | X |
|---|---|---|---|---|---|---|
muon_w | Muon-Aktualisierungsgewicht in MuSGD | 0.528 | 0.436 | 0.436 | 0.436 | 0.436 |
sgd_w | SGD-Aktualisierungsgewicht in MuSGD | 0.674 | 0.479 | 0.479 | 0.479 | 0.479 |
cls_w | Internes Klassifizierungsgewicht | 2.74 | 3.48 | 3.48 | 3.48 | 3.48 |
o2m | Loss-Gewicht des One-to-many-Heads | 1.0 | 0.705 | 0.705 | 0.705 | 0.705 |
topk | Top-k-Labelzuweisung | 8 | 5 | 5 | 5 | 5 |
Was diese Parameter bei der Feinabstimmung bedeuten, erfährst du im FAQ-Eintrag zu diesen Parametern.
YOLO26 mit deinem eigenen Datensatz feinabstimmen#
Wenn du YOLO26 mit deinem eigenen Datensatz feinabstimmst, musst du das vollständige Vortrainingsrezept nicht nachbilden. Die vortrainierten Gewichte enthalten bereits das Wissen aus der COCO-Trainingsaugmentierung und -optimierung. Allgemeine Empfehlungen zum Training findest du unter Tipps zum Modelltraining.
Mit Standardeinstellungen feinabstimmen#
from ultralytics import YOLO
model = YOLO("yolo26n.pt")
results = model.train(data="your-dataset.yaml", epochs=100, imgsz=640)Die Feinabstimmung mit Standardeinstellungen ist eine solide Ausgangsbasis. Passe Hyperparameter nur an, wenn es dafür einen konkreten Grund gibt.
Wann solltest du YOLO26-Hyperparameter anpassen?#
Kleine Datensätze (< 1.000 Bilder):
- Verringere die Stärke der Augmentierung:
mosaic=0.5,mixup=0.0,copy_paste=0.0 - Verringere die Lernrate und gib einen Optimizer explizit an:
optimizer=AdamW,lr0=0.001 - Verwende weniger Epochen und lege einen Patience-Wert fest:
epochs=50,patience=20 - Ziehe in Betracht, Backbone-Schichten einzufrieren:
freeze=10
Große Datensätze (> 50.000 Bilder):
- Orientiere dich stärker am Vortrainingsrezept
- Ziehe
optimizer=MuSGDfür längere Trainingsläufe in Betracht - Erhöhe die Augmentierung:
mosaic=1.0,mixup=0.3,scale=0.9
Domänenspezifische Bilder (Luftaufnahmen, medizinische Bilder, Unterwasseraufnahmen):
- Erhöhe
flipud=0.5, wenn die vertikale Ausrichtung variiert - Erhöhe
degrees, wenn Objekte in beliebigen Drehungen auftreten - Passe
hsv_sundhsv_van, wenn sich die Lichtverhältnisse deutlich von COCO unterscheiden
Eine automatisierte Optimierung von Hyperparametern wird im Leitfaden zur Hyperparameteroptimierung beschrieben.
Modellgröße auswählen#
| Modell | Am besten geeignet für | Empfehlungen zur Batchgröße |
|---|---|---|
| YOLO26n | Edge-Geräte, Mobilgeräte, Echtzeitbetrieb auf der CPU | Große Batches (64–128) auf GPUs für Endverbraucher |
| YOLO26s | Ausgewogenes Verhältnis von Geschwindigkeit und Genauigkeit | Mittlere Batches (32–64) |
| YOLO26m | Höhere Genauigkeit bei moderatem Rechenaufwand | Kleinere Batches (16–32) |
| YOLO26l | Hohe Genauigkeit, wenn eine GPU verfügbar ist | Kleine Batches (8–16) oder mehrere GPUs |
| YOLO26x | Maximale Genauigkeit, Bereitstellung auf Servern | Kleine Batches (4–8) oder mehrere GPUs |
Export- und Bereitstellungsoptionen findest du im Exportleitfaden und unter Optionen zur Modellbereitstellung.
Fazit#
Die YOLO26-Checkpoints enthalten das vollständige Trainingsrezept, sodass du die exakten Hyperparameter für jede Modellgröße jederzeit mit einer Abfrage von train_args findest. Beginne die Feinabstimmung mit den Standardeinstellungen, passe sie anhand der Tabellen auf dieser Seite gezielt an und überprüfe jede Änderung mit deinem eigenen Validierungsdatensatz. Wenn du Fragen hast, wende dich an die Community im Ultralytics-GitHub-Repository oder auf dem Ultralytics-Discord-Server.
Häufig gestellte Fragen#
Lade den Checkpoint mit
torch.load()und greife auf den Schlüsseltrain_argszu, oder verwendemodel.ckpt["train_args"]mit der Ultralytics API. Vollständige Beispiele findest du unter Trainingsargumente des YOLO26-Checkpoints untersuchen.Jede Modellgröße erhielt dieselben 150 Epochen Vortraining mit Objects365. Die COCO-Epochenzahlen beziehen sich daher nur auf die Feinabstimmung. Größere Modelle konvergieren mit COCO in weniger Epochen: 40 für X gegenüber 245 für N. Die Zahlen steigen nicht strikt monoton (S verwendete 70, M 80), da sie aus der Hyperparametersuche für die jeweilige Größe hervorgingen. Bei der Feinabstimmung mit deinem eigenen Datensatz hängt die optimale Epochenzahl von Größe und Komplexität deines Datensatzes ab, nicht von der Modellgröße. Mit Early Stopping (
patience) findest du automatisch den passenden Abbruchzeitpunkt.Diese Parameter stammen aus dem experimentellen Branch, mit dem die Basis-Checkpoints erstellt wurden, und sind zur Reproduzierbarkeit in
train_argsfestgehalten. Sie sind indefault.yamlkeine benutzerkonfigurierbaren Einstellungen. Wenn du sie anmodel.train()übergibst, wird ein Fehler wegen eines ungültigen Arguments ausgelöst, da das veröffentlichte Paket sie nicht ausliest. Bei der Feinabstimmung musst du sie nicht festlegen. Die Werte für die einzelnen Modellgrößen findest du unter Interne Trainingsparameter.Nein. Jeder COCO-Checkpoint wurde aus einem Objects365v1-Checkpoint derselben Größe feinabgestimmt, der bereits 150 Epochen trainiert worden war. Das wird unter Stage 1: Vortraining mit Objects365 und im YOLO26-Paper beschrieben. Den veröffentlichten Zahlen liegt kein COCO-Lauf von Grund auf zugrunde. Ein Vergleich mit diesen Zahlen wäre daher nicht gleichwertig.
Sie befinden sich in den Checkpoints und sind auf der Ultralytics Platform grafisch dargestellt. Jeder Checkpoint speichert das vollständige
results.csvseines Laufs. Wenn du eine.pt-Datei auf ein Platform-Projekt ziehst, werden Loss-Werte, mAP-Verlauf und Lernraten ohne zusätzlichen Code grafisch dargestellt. Weitere Informationen findest du unter Trainingskurven anzeigen. Die Objects365-Stage hat ein eigenes Protokoll in denyolo26*-objv1-150.pt-Checkpoints.Du wirst nahe an die veröffentlichten Metriken herankommen, aber sie nicht exakt reproduzieren. Für ein identisches Setup checke den im Checkpoint festgehaltenen Commit aus und trainiere auf diesem Branch. Weitere Informationen findest du unter Codeversion überprüfen.