Ultralytics YOLO27:

Modelltraining mit Ultralytics YOLO#

Ultralytics YOLO ecosystem and integrations

Einleitung#

Das Training eines Deep-Learning-Modells besteht darin, ihm Daten zuzuführen und seine Parameter anzupassen, damit es präzise Vorhersagen treffen kann. Der Trainingsmodus in Ultralytics YOLO26 ist für ein effektives und effizientes Training von Objekterkennungsmodellen entwickelt worden und nutzt moderne Hardware-Fähigkeiten vollständig aus. Dieser Leitfaden soll alle Details abdecken, die du benötigst, um mit dem Training deiner eigenen Modelle über den robusten Funktionsumfang von YOLO26 zu beginnen. Falls du Ultralytics noch nicht installiert hast, beginne mit dem Schnellstart-Leitfaden.

Sieh dir die unveröffentlichte YOLO27-Vorschau für geplante Trainingsbeispiele an.



Watch: How to Train a YOLO model on Your Custom Dataset in Google Colab.

Warum solltest du Ultralytics YOLO für das Training wählen?#

Hier sind einige überzeugende Gründe, sich für den Trainingsmodus von YOLO26 zu entscheiden:

  • Effizienz: Hole das Beste aus deiner Hardware heraus, ganz gleich, ob du ein Setup mit einer einzelnen GPU verwendest oder auf mehrere GPUs skalierst.
  • Vielseitigkeit: Trainiere auf benutzerdefinierten Datensätzen zusätzlich zu frei verfügbaren Datensätzen wie COCO, VOC und ImageNet.
  • Benutzerfreundlichkeit: Einfache und dennoch leistungsstarke CLI- und Python-Schnittstellen für ein unkompliziertes Trainingserlebnis.
  • Hyperparameter-Flexibilität: Eine breite Palette an anpassbaren Hyperparametern zur Feinabstimmung der Modellleistung. Für eine tiefgreifendere Kontrolle kannst du den Trainer anpassen.
  • Cloud-Training: Trainiere auf Cloud-GPUs über die Ultralytics Platform mit Metriken in Echtzeit und automatischer Erstellung von Prüfpunkten.

Hauptfunktionen des Trainingsmodus#

Die folgenden Punkte sind einige nennenswerte Funktionen des Trainingsmodus von YOLO26:

  • Automatischer Datensatz-Download: Datensatzkonfigurationen mit einer Download-Quelle werden bei der ersten Verwendung automatisch heruntergeladen, z. B. yolo train data=coco8.yaml. Siehe die Datensatz-Übersicht für unterstützte Formate und Datensätze.
  • Multi-GPU-Unterstützung: Skaliere deine Trainingsbemühungen nahtlos über mehrere GPUs hinweg, um den Prozess zu beschleunigen.
  • Hyperparameter-Konfiguration: Die Option, Hyperparameter über YAML-Konfigurationsdateien oder CLI-Argumente zu modifizieren.
  • Visualisierung und Überwachung: Echtzeit-Verfolgung der Trainingsmetriken und Visualisierung des Lernprozesses für bessere Einblicke.

Verwendungsbeispiele#

Trainiere YOLO26n auf dem COCO8-Datensatz für 100 Epochen bei einer Bildgröße von 640. Das Trainingsgerät kann über das Argument device angegeben werden. Wenn kein Argument übergeben wird, wird die GPU device=0 verwendet, sofern sie verfügbar ist; andernfalls wird device='cpu' verwendet. Siehe den Abschnitt „Argumente“ unten für eine vollständige Liste der Trainingsargumente.

Fehler bei der Multiprozessverarbeitung unter Windows

Unter Windows erhältst du beim Starten des Trainings als Skript möglicherweise ein RuntimeError. Füge einen if __name__ == "__main__":-Block vor deinem Trainingscode hinzu, um dies zu beheben.

Beispiel für das Training mit einer einzelnen GPU und CPU

Das Gerät wird automatisch ermittelt. Wenn eine GPU verfügbar ist, wird sie verwendet (Standard-CUDA-Gerät 0); andernfalls beginnt das Training auf der CPU.

from ultralytics import YOLO

# Load a model
model = YOLO("yolo26n.yaml")  # build a new model from YAML
model = YOLO("yolo26n.pt")  # load a pretrained model (recommended for training)
model = YOLO("yolo26n.yaml").load("yolo26n.pt")  # build from YAML and transfer weights

# Train the model
results = model.train(data="coco8.yaml", epochs=100, imgsz=640)

Multi-GPU-Training#

Das Multi-GPU-Training ermöglicht eine effizientere Nutzung der verfügbaren Hardwareressourcen, indem die Trainingslast auf mehrere GPUs verteilt wird. Diese Funktion ist sowohl über die Python-API als auch über die Befehlszeilenschnittstelle verfügbar. Um das Multi-GPU-Training zu aktivieren, gib die GPU-Geräte-IDs an, die du verwenden möchtest.

Beispiel für Multi-GPU-Training

Verwende die folgenden Befehle, um mit 2 GPUs (CUDA-Geräte 0 und 1) zu trainieren. Erweitere dies nach Bedarf auf weitere GPUs.

from ultralytics import YOLO

# Load a model
model = YOLO("yolo26n.pt")  # load a pretrained model (recommended for training)

# Train the model with 2 GPUs
results = model.train(data="coco8.yaml", epochs=100, imgsz=640, device=[0, 1])

# Train the model with the two most idle GPUs
results = model.train(data="coco8.yaml", epochs=100, imgsz=640, device=[-1, -1])
Multi-GPU-Unterstützung unter Windows

Das Multi-GPU-Training funktioniert unter Windows mit den offiziellen PyTorch-Paketen für torch>=2.4 nicht. Ultralytics startet DDP über torch.distributed.run, dessen Rendezvous-Schritt ein TCPStore aufbaut, das seit PyTorch 2.4 standardmäßig das libuv-Backend verwendet, und die offiziellen Windows-Pakete werden ohne libuv erstellt. Das Training wird sofort abgebrochen mit:

RuntimeError: use_libuv was requested but PyTorch was built without libuv support

Das Festlegen von USE_LIBUV=0 behebt dies nicht, da das Rendezvous den TCPStore direkt erstellt und dieser Codepfad die Variable niemals liest. Trainiere unter Linux oder WSL2, um mehrere GPUs zu nutzen, oder trainiere unter Windows auf einer einzelnen GPU mit device=0.

Multi-GPU-Training mit benutzerdefiniertem Code

Wenn du mehrere Geräte angibst (z. B. device=[0, 1]), erstellt Ultralytics intern eine neue Trainer-Instanz und führt torch.distributed.run im Hintergrund aus. Dies funktioniert nahtlos für die Standard-CLI-Nutzung und unmodifizierte Python-Skripte.

Wenn dein Skript jedoch benutzerdefinierte Komponenten enthält – wie einen benutzerdefinierten Trainer, Validator, Datensatz oder eine Augmentierungspipeline –, können diese Objekte nicht automatisch serialisiert und an die DDP-Subprozesse übertragen werden. In diesem Fall musst du dein Skript direkt mit torch.distributed.run starten:

python -m torch.distributed.run --nproc_per_node 2 your_training_script.py

Das Training auf AMD GPU verwendet einen PyTorch ROCm-Build mit der Standard-Syntax device=0 oder device=cuda:0. Weitere Informationen zur Installation und zum aktuellen Unterstützungsstatus von MIGraphX, DirectML und Ryzen AI NPU findest du im AMD integration guide.

Das Training mit Intel-GPUs verwendet device=xpu:0 oder mehrere XPU-IDs mit einem PyTorch-Build, der XCCL bereitstellt.

Training mit Huawei Ascend NPU#

Ultralytics unterstützt das Training und die Validierung auf Huawei Ascend NPUs über torch_npu. Installiere zueinander kompatible CANN-, PyTorch- und torch_npu-Versionen gemäß dem Ascend Extension for PyTorch installation guide und lade anschließend die CANN-Umgebung, bevor du Ultralytics startest:

source /usr/local/Ascend/ascend-toolkit/set_env.sh
Beispiel für das Training mit Ascend NPU
from ultralytics import YOLO

model = YOLO("yolo26n.pt")

# Train on one Ascend NPU
results = model.train(data="coco8.yaml", epochs=100, imgsz=640, device="npu:0")

# Train across two Ascend NPUs with HCCL
results = model.train(data="coco8.yaml", epochs=100, imgsz=640, device="npu:0,1")

Die Standard-Trainingsfunktionen, einschließlich AMP, Validierung, Prüfpunkterstellung (Checkpointing) und Fortsetzung (Resume), nutzen die aktive NPU. AutoBatch ist für das Training mit einer NPU verfügbar, während mehrere NPU-IDs ein verteiltes Training über HCCL starten. Informationen zum Modellexport und zur Bereitstellung nach dem Training findest du im Huawei Ascend integration guide.

Training auf im Leerlauf befindlichen GPUs#

Das Training auf im Leerlauf befindlichen GPUs ermöglicht die automatische Auswahl der am wenigsten ausgelasteten GPUs in Multi-GPU-Systemen und optimiert so die Ressourcennutzung ohne manuelle GPU-Auswahl. Diese Funktion identifiziert verfügbare GPUs basierend auf Auslastungsmetriken und der VRAM-Verfügbarkeit.

Beispiel für das Training auf im Leerlauf befindlichen GPUs

Um die am stärksten im Leerlauf befindlichen GPU(s) für das Training automatisch auszuwählen und zu verwenden, verwende den Geräteparameter -1. Dies ist besonders nützlich in gemeinsam genutzten Umgebungen oder auf Servern mit mehreren Benutzern.

from ultralytics import YOLO

# Load a model
model = YOLO("yolo26n.pt")  # load a pretrained model (recommended for training)

# Train using the single most idle GPU
results = model.train(data="coco8.yaml", epochs=100, imgsz=640, device=-1)

# Train using the two most idle GPUs
results = model.train(data="coco8.yaml", epochs=100, imgsz=640, device=[-1, -1])

Der Algorithmus zur automatischen Auswahl priorisiert GPUs mit:

  1. Niedrigeren aktuellen Auslastungsprozentsätzen
  2. Höherem verfügbarem Speicher (freier VRAM)
  3. Niedrigerer Temperatur und geringerem Stromverbrauch

Diese Funktion ist besonders wertvoll in gemeinsam genutzten Umgebungen oder beim Ausführen mehrerer Trainingsaufträge für verschiedene Modelle. Sie passt sich automatisch an sich ändernde Systembedingungen an und sorgt so für eine optimale Ressourcenzuweisung ohne manuelles Eingreifen.

Training mit Apple Silicon MPS#

Mit der in die Ultralytics YOLO-Modelle integrierten Unterstützung für Apple Silicon-Chips ist es nun möglich, deine Modelle auf Geräten zu trainieren, die das leistungsstarke Metal Performance Shaders (MPS)-Framework nutzen. MPS bietet eine hochperformante Möglichkeit zur Ausführung von Rechen- und Bildverarbeitungsaufgaben auf dem kundenspezifischen Silizium von Apple.

Um das Training auf Apple Silicon-Chips zu aktivieren, solltest du beim Initiieren des Trainingsprozesses 'mps' als dein Gerät angeben. Unten siehst du ein Beispiel dafür, wie du dies in Python und über die Befehlszeile tun kannst:

Beispiel für das MPS-Training
from ultralytics import YOLO

# Load a model
model = YOLO("yolo26n.pt")  # load a pretrained model (recommended for training)

# Train the model with MPS
results = model.train(data="coco8.yaml", epochs=100, imgsz=640, device="mps")

Während die Rechenleistung der Apple Silicon-Chips genutzt wird, ermöglicht dies eine effizientere Verarbeitung der Trainingsaufgaben. Ausführlichere Anleitungen und erweiterte Konfigurationsoptionen findest du in der PyTorch MPS-Dokumentation.

Fortsetzen unterbrochener Trainings#

Das Fortsetzen des Trainings aus einem zuvor gespeicherten Zustand ist eine entscheidende Funktion bei der Arbeit mit Deep-Learning-Modellen. Dies kann in verschiedenen Szenarien nützlich sein, beispielsweise wenn der Trainingsprozess unerwartet unterbrochen wurde oder wenn du das Training eines Modells mit neuen Daten oder für weitere Epochen fortsetzen möchtest.

Wenn das Training fortgesetzt wird, lädt Ultralytics YOLO die Gewichte des zuletzt gespeicherten Modells und stellt zudem den Optimizer-Zustand, den Learning Rate-Scheduler, die Epochennummer und den Datensatz wieder her. Dadurch kannst du den Trainingsprozess nahtlos dort fortsetzen, wo du ihn unterbrochen hast. Übergib einen expliziten data= zusammen mit resume, um das Training stattdessen auf einem anderen Datensatz als dem des Checkpoints fortzusetzen.

Du kannst das Training in Ultralytics YOLO ganz einfach fortsetzen, indem du das Argument resume beim Aufruf der Methode train auf True setzt und den Pfad zu der Datei .pt angibst, die die teilweise trainierten Modellgewichte enthält.

Unten siehst du ein Beispiel dafür, wie du ein unterbrochenes Training mit Python und über die Befehlszeile fortsetzt:

Beispiel für das Fortsetzen des Trainings
from ultralytics import YOLO

# Load a model
model = YOLO("path/to/last.pt")  # load a partially trained model

# Resume training
results = model.train(resume=True)

Durch das Setzen von resume=True setzt die Funktion train das Training dort fort, wo es unterbrochen wurde, und verwendet dabei den Zustand, der in der Datei 'path/to/last.pt' gespeichert ist. Wenn das Argument resume weggelassen oder auf False gesetzt wird, startet die Funktion train eine neue Trainingseinheit.

Denke daran, dass Prüfpunkte standardmäßig am Ende jeder Epoche oder in festen Intervallen über das Argument save_period gespeichert werden. Du musst also mindestens 1 Epoche abschließen, um einen Trainingsdurchlauf fortzusetzen.

Trainings-Einstellungen#

Die Trainingseinstellungen für YOLO-Modelle umfassen verschiedene Hyperparameter und Konfigurationen, die während des Trainingsprozesses verwendet werden. Diese Einstellungen beeinflussen die Leistung, Geschwindigkeit und Genauigkeit des Modells. Zu den wichtigsten Trainingseinstellungen gehören Batch-Größe, Lernrate, Momentum und Gewichtungsabfall. Darüber hinaus können die Wahl des Optimierers, der Verlustfunktion und die Zusammensetzung des Datensatzes für das Training den Trainingsprozess beeinflussen. Eine sorgfältige Abstimmung und Experimente mit diesen Einstellungen sind entscheidend für die Leistungsoptimierung.

MuSGD-Optimierer#

In YOLO26 ist MuSGD ein hybrider Optimierer, der standardmäßige SGD-Updates mit orthogonalisierten Updates im Muon-Stil kombiniert.

Er wird für längere YOLO26-Trainingsläufe und größere Datensätze empfohlen, bei denen orthogonalisierte Muon-Updates zur Stabilisierung der Optimierung beitragen können.

Nur 2D-lineare Gewichte und 4D-Faltungsfilter (zu 2D umgeformt) erhalten das Update im Muon-Stil zusammen mit SGD, während alle anderen Parameter, wie Batch-Normalisierungsgewichte und Bias-Terme, beim Standard-SGD verbleiben.

Wenn optimizer=auto verwendet wird, wählt Ultralytics automatisch MuSGD für längere Trainingsläufe (typischerweise bei Iterationen > 10000). Bei kürzeren Läufen greift der Trainer auf AdamW zurück.

Beispiel für die Verwendung:

yolo train model=yolo26n.pt data=coco8.yaml optimizer=MuSGD

Siehe die Implementierung in ultralytics/optim/muon.py und die Logik zur automatischen Optimiererauswahl in BaseTrainer.build_optimizer.

ArgumentTypStandardwertBeschreibung
modelstrNoneGibt die Modelldatei für das Training an. Akzeptiert einen Pfad zu einem vortrainierten .pt-Modell oder einer .yaml-Konfigurationsdatei. Dies ist entscheidend für die Definition der Modellstruktur oder die Initialisierung der Gewichte.
datastrNonePfad zur YAML-Datei des Datensatzes (z. B. coco8.yaml), die die Pfade zu den Validierungsdaten und Trainingsdaten, Klassennamen sowie die Anzahl der Klassen enthält. Für die Klassifizierung wird stattdessen ein Datensatzverzeichnis oder der Name eines integrierten Datensatzes (z. B. imagenet10) verwendet.
epochsint100Gesamtzahl der Trainingsepochen. Jede Epoche stellt einen vollständigen Durchlauf über den gesamten Datensatz dar. Eine Anpassung dieses Werts kann Trainingsdauer und Modellleistung beeinflussen.
timefloatNoneMaximale Trainingszeit in Stunden. Wenn dieser Wert gesetzt ist, überschreibt er das Argument epochs und ermöglicht das automatische Beenden des Trainings nach der angegebenen Dauer. Nützlich für zeitlich begrenzte Trainingsszenarien.
patienceint100Anzahl der Epochen, die ohne Verbesserung der Validierungsmetriken abgewartet werden, bevor das Training vorzeitig beendet wird. Hilft, Überanpassung zu verhindern, indem das Training beendet wird, sobald sich die Leistung nicht mehr verbessert.
batchint oder float16Batchgröße mit drei Modi: Festlegung als Ganzzahl (z. B. batch=16), automatischer Modus für eine Auslastung des GPU-Speichers von 60 % (batch=-1) oder automatischer Modus mit einem angegebenen Auslastungsanteil (batch=0.70).
imgszint640Zielbildgröße für das Training. Bilder werden auf Quadrate mit Seitenlängen entsprechend dem angegebenen Wert skaliert (wenn rect=False), wobei das Seitenverhältnis für YOLO-Modelle, nicht jedoch für RT-DETR, beibehalten wird. Beeinflusst die Genauigkeit und die Rechenkomplexität des Modells.
saveboolTrueAktiviert das Speichern von Trainingsprüfpunkten und den finalen Modellgewichten. Nützlich, um das Training fortzusetzen oder das Modell bereitzustellen.
save_periodint-1Häufigkeit, mit der Modellprüfpunkte in Epochen gespeichert werden. Der Wert -1 deaktiviert diese Funktion. Nützlich zum Speichern von Zwischenmodellen während langer Trainingsläufe.
cacheboolFalseAktiviert das Zwischenspeichern von Datensatzbildern im Arbeitsspeicher (True/ram), auf der Festplatte (disk) oder deaktiviert es (False). Beschleunigt das Training durch Verringerung der Festplatten-E/A, erhöht jedoch den Speicherverbrauch.
deviceint oder str oder listNoneGibt die Rechengeräte für das Training an: eine einzelne GPU (device=0), mehrere GPUs (device=[0,1]), CPU (device=cpu), MPS für Apple-Chips (device=mps), Huawei Ascend NPU (device=npu:0 oder device=npu:0,1) oder die automatische Auswahl einer freien GPU (device=-1) beziehungsweise mehrerer freier GPUs (device=[-1,-1]).
workersint8Anzahl der Worker-Threads zum Laden von Daten (pro RANK beim Multi-GPU-Training). Beeinflusst die Geschwindigkeit der Datenvorverarbeitung und der Zuführung zum Modell und ist besonders bei Konfigurationen mit mehreren GPUs nützlich.
projectstrNoneName des Projektverzeichnisses, in dem die Trainingsergebnisse gespeichert werden. Ermöglicht die übersichtliche Speicherung verschiedener Experimente.
namestrNoneName des Trainingslaufs. Wird zum Erstellen eines Unterverzeichnisses im Projektordner verwendet, in dem Trainingsprotokolle und Ergebnisse gespeichert werden.
exist_okboolFalseWenn True, erlaubt dies das Überschreiben eines vorhandenen Projekt-/Namensverzeichnisses. Nützlich für iterative Experimente, ohne vorherige Ergebnisse manuell löschen zu müssen.
save_dirstrNoneGibt das genaue Verzeichnis an, in dem die Ergebnisse des Laufs gespeichert werden, und überschreibt die Kombination project/name. Der Pfad wird unverändert verwendet und nicht automatisch nummeriert, sodass aufeinanderfolgende Läufe dasselbe Verzeichnis wiederverwenden.
pretrainedbool oder strTrueLegt fest, ob das Training mit vortrainierten Gewichten begonnen werden soll. Kann ein boolescher Wert oder ein Zeichenkettenpfad zu den zu ladenden Gewichten sein. pretrained=False trainiert mit zufällig initialisierten Gewichten, wobei die Modellarchitektur erhalten bleibt.
cls_remapboolTrueBeim Feinabstimmen über mehrere Datensätze hinweg werden Zeilen des vortrainierten Klassifizierungskopfs in das neue Modell kopiert, sofern die Klassennamen übereinstimmen. Dadurch behalten überlappende Klassen ihre gelernten Bias-Werte sowie ihre Gewichte, wenn die Breite des Kopfs unverändert bleibt. Dies gilt unabhängig davon, ob sich die Klassenanzahl unterscheidet oder bei gleicher Anzahl eine andere Klassenreihenfolge vorliegt.
optimizerstr'auto'Auswahl des Optimierers für das Training. Zu den Optionen gehören SGD, MuSGD, Adam, Adamax, AdamW, NAdam, RAdam, RMSProp oder auto, um anhand der Anzahl der Trainingsiterationen AdamW oder MuSGD auszuwählen. Beeinflusst Konvergenzgeschwindigkeit und -stabilität.
seedint0Legt den Zufalls-Seed für das Training fest und stellt die Reproduzierbarkeit der Ergebnisse bei Läufen mit denselben Konfigurationen sicher.
deterministicboolTrueErzwingt die Verwendung deterministischer Algorithmen und gewährleistet dadurch Reproduzierbarkeit, kann jedoch aufgrund des Verzichts auf nichtdeterministische Algorithmen Leistung und Geschwindigkeit beeinträchtigen.
verboseboolTrueAktiviert eine ausführliche Ausgabe während des Trainings, die Fortschrittsbalken, Metriken pro Epoche und zusätzliche Trainingsinformationen in der Konsole anzeigt.
single_clsboolFalseBehandelt beim Training alle Klassen in Datensätzen mit mehreren Klassen als eine einzige Klasse. Nützlich für binäre Klassifizierungsaufgaben oder wenn der Fokus auf dem Vorhandensein von Objekten statt auf ihrer Klassifizierung liegt.
classeslist[int]NoneGibt eine Liste von Klassen-IDs an, mit denen trainiert werden soll. Nützlich, um bestimmte Klassen herauszufiltern und den Fokus auf sie zu beschränken.
rectboolFalseAktiviert die Strategie für minimale Auffüllung: Bilder in einem Batch werden so wenig wie möglich aufgefüllt, bis sie eine gemeinsame Größe erreichen, wobei die längste Seite imgsz entspricht. Dies kann Effizienz und Geschwindigkeit verbessern, aber die Modellgenauigkeit beeinflussen.
multi_scalefloat0.0Variiert imgsz in jedem Batch zufällig um +/- multi_scale (z. B. 0.25 -> 0.75x bis 1.25x) und rundet auf Vielfache des Modellschritts; 0.0 deaktiviert das Training mit mehreren Maßstäben.
cos_lrboolFalseVerwendet einen Lernraten-Scheduler nach einer Kosinuskurve, der die Lernrate über die Epochen anpasst. Hilft dabei, die Lernrate für eine bessere Konvergenz zu steuern.
close_mosaicint10Deaktiviert die mosaikartige Datenerweiterung in den letzten N Epochen, um das Training vor dem Abschluss zu stabilisieren. Der Wert 0 deaktiviert diese Funktion.
resumeboolFalseSetzt das Training vom zuletzt gespeicherten Prüfpunkt fort. Lädt automatisch Modellgewichte, Optimiererstatus und Epochenzähler und setzt das Training nahtlos fort.
ampbool oder strTrueLegt die Trainingspräzision fest: True oder "fp16" verwendet FP16, "bf16" verwendet BF16 auf unterstützten CUDA-Geräten und False oder "fp32" verwendet FP32.
quantizeint oder strNoneSetze dies auf 8 (oder "int8") für INT8 Quantization-Aware Training (QAT), das mit Fake-Quantization im Trainingskreislauf feinabstimmt, damit die Gewichte den INT8-Export tolerieren. Siehe Quantization-Aware Training.
fractionfloat, int oder list1.0Teilmenge des Datensatzes als Verhältnis/Anzahl oder als [train, val, test]-Liste. 1 bedeutet den vollständigen Split, Ganzzahlen über 1 geben Bildanzahlen an, und nur der optionale Testeintrag akzeptiert 0/0.0 für keine Daten. Listen mit zwei Einträgen behalten den vollständigen Testsatz bei.
profileboolFalseAktiviert während des Trainings die Profilerstellung für ONNX- und TensorRT-Geschwindigkeiten und ist nützlich zur Optimierung der Modellbereitstellung.
freezeint oder listNoneFriert die ersten N Schichten des Modells oder bestimmte Schichten anhand ihres Index oder Modulnamens ein (23.cv2, ohne das führende model.) und reduziert dadurch die Anzahl trainierbarer Parameter. Nützlich für Feinabstimmung oder Transferlernen.
lr0float0.01Anfängliche Lernrate (d. h. SGD=1E-2, Adam=1E-3). Die Anpassung dieses Werts ist für den Optimierungsprozess entscheidend, da sie beeinflusst, wie schnell die Modellgewichte aktualisiert werden.
lrffloat0.01Endgültige Lernrate als Anteil der anfänglichen Lernrate = (lr0 * lrf), die zusammen mit Schedulern verwendet wird, um die Lernrate im Zeitverlauf anzupassen.
momentumfloat0.937Momentum-Faktor für SGD oder Beta1 für Adam-Optimierer, der beeinflusst, wie stark vergangene Gradienten in die aktuelle Aktualisierung einfließen.
weight_decayfloat0.0005L2-Regularisierung, die große Gewichte bestraft, um Überanpassung zu verhindern.
warmup_epochsfloat3.0Anzahl der Epochen für das Aufwärmen der Lernrate, bei dem die Lernrate schrittweise von einem niedrigen Wert auf die anfängliche Lernrate erhöht wird, um das Training zu Beginn zu stabilisieren.
warmup_momentumfloat0.8Anfänglicher Momentum-Wert für die Aufwärmphase, der im Verlauf der Aufwärmphase schrittweise an den festgelegten Momentum-Wert angepasst wird.
warmup_bias_lrfloat0.1Lernrate für Bias-Parameter während der Aufwärmphase, die zur Stabilisierung des Modelltrainings in den ersten Epochen beiträgt. Wird unter dem Standardwert optimizer='auto' automatisch auf 0.0 gesetzt; gib daher einen Optimierer explizit an, um diese Einstellung zu verwenden.
distill_modelstrNonePfad zu einem Prüfpunkt des Lehrermodells (z. B. yolo26x.pt) für Wissensdestillation. Wenn dieser Wert gesetzt ist, wird das Schülermodell mit einem zusätzlichen Destillationsverlust trainiert, der vom eingefrorenen Lehrermodell gesteuert wird.
disfloat6.0Gewichtung des Destillationsverlusts, der zu den standardmäßigen Erkennungsverlusten hinzugefügt wird. Höhere Werte erhöhen den Einfluss der Merkmalsführung durch das Lehrermodell.
boxfloat7.5Gewichtung der Box-Verlustkomponente in der Verlustfunktion, die beeinflusst, wie stark die genaue Vorhersage von Begrenzungsrahmen-Koordinaten berücksichtigt wird.
clsfloat0.5Gewichtung des Klassifizierungsverlusts im Gesamtverlust, die die Bedeutung der korrekten Klassenvorhersage im Verhältnis zu anderen Komponenten beeinflusst.
cls_pwfloat0.0Potenz für die Klassengewichtung zum Umgang mit Klassenungleichgewicht mithilfe der inversen Klassenhäufigkeit. 0.0 deaktiviert die Klassengewichtung, 1.0 wendet die vollständige Gewichtung mit inverser Häufigkeit an. Werte zwischen 0 und 1 bewirken eine teilweise Gewichtung.
dflfloat1.5Gewichtung des Regressionsbegriffs für die Boxdistanz: Distribution Focal Loss (DFL), wenn der Erkennungskopf reg_max > 1 verwendet, oder ein L1-Verlust für normalisierte Boxdistanzen bei DFL-freiem YOLO26 (reg_max: 1).
posefloat12.0Gewichtung des Posenschadens in für Posenschätzung trainierten Modellen, die beeinflusst, wie stark die genaue Vorhersage von Pose-Keypoints berücksichtigt wird.
kobjfloat1.0Gewichtung des Objektivitätsverlusts der Keypoints in Posenschätzungsmodellen, die Erkennungskonfidenz und Posengenauigkeit ausbalanciert.
rlefloat1.0Gewichtung des Verlusts für die Schätzung der verbleibenden Log-Likelihood in Posenschätzungsmodellen, die die Genauigkeit der Keypoint-Lokalisierung beeinflusst.
anglefloat1.0Gewichtung des Winkelverlusts in OBB-Modellen, die die Genauigkeit der Winkelvorhersagen orientierter Begrenzungsrahmen beeinflusst.
dlogfloat1.0Gewichtung des logarithmischen, skaleninvarianten Verlusts (SILog) in Tiefenschätzungsmodellen; dies ist der primäre Term für die Tiefengenauigkeit.
dgradfloat0.5Gewichtung des Gradientenverlusts in Tiefenschätzungsmodellen, die Fehler an Tiefenkanten bestraft und schärfere Oberflächengrenzen fördert.
dlamfloat1.0Faktor für die Varianzgewichtung des SILog-Verlusts in Tiefenschätzungsmodellen. 1.0 macht den Verlust vollständig skaleninvariant, während 0.0 ihn auf den einfachen Log-RMSE reduziert.
nbsint64Nominale Batchgröße zur Normalisierung des Verlusts.
overlap_maskboolTrueLegt fest, ob Objektmasken für das Training zu einer einzigen Maske zusammengeführt oder für jedes Objekt getrennt beibehalten werden sollen. Bei Überlappungen wird beim Zusammenführen die kleinere Maske über die größere gelegt.
mask_ratioint4Verkleinerungsverhältnis für Segmentierungsmasken, das die Auflösung der während des Trainings verwendeten Masken beeinflusst.
dropoutfloat0.0Dropout-Rate zur Regularisierung bei Klassifizierungsaufgaben, die Überanpassung verhindert, indem während des Trainings zufällig Einheiten ausgelassen werden.
valboolTrueAktiviert die Validierung während des Trainings und ermöglicht die regelmäßige Bewertung der Modellleistung anhand eines separaten Datensatzes.
nmsbool, optionalNoneWählt den Inferenz-Kopf aus, der für die Epochenvalidierung, die Checkpoint-Auswahl und das Early Stopping verwendet wird. None oder True verwendet One-to-Many mit NMS; False verwendet den NMS-freien Kopf, sofern verfügbar. Beide Köpfe behalten ihre Trainingsverluste bei.
plotsboolTrueErzeugt und speichert Diagramme der Trainings- und Validierungsmetriken sowie Beispiele für Vorhersagen und bietet dadurch visuelle Einblicke in Modellleistung und Lernfortschritt.
compilebool oder strFalseAktiviert die Graphkompilierung mit torch.compile von PyTorch 2.x über backend='inductor'. Akzeptiert True"default", False → Deaktivierung oder einen Zeichenkettenmodus wie "default", "reduce-overhead", "max-autotune-no-cudagraphs". Bei fehlender Unterstützung wird mit einer Warnung auf den Eager-Modus zurückgefallen.
channels_lastboolNoneVerwendet das Speicherformat channels_last (NHWC) für Faltungen beim Training. None aktiviert es automatisch auf CUDA mit PyTorch 1.11 oder neuer, außer unter Windows, wo es langsamer gemessen wurde. False deaktiviert es, und True fordert es explizit an. PyTorch 1.10 und älter, CPU und MPS bleiben standardmäßig bei NCHW.
max_detint300Maximale Detektionen pro Bild während des Trainings und der Validierung. Bei detect, segment, pose und OBB erhöht sich der Standardwert von 300 nur dann auf die Anzahl der mit einem Label versehenen Objekte im Train/Val-Datensatz, wenn diese Anzahl 300 überschreitet. Andere Werte bleiben unverändert; das Überschreiten des Limits löst eine Warnung aus.
Hinweis zu Batchgrößen-Einstellungen

Das Argument batch kann auf drei Arten konfiguriert werden:

  • Feste Batch-Größe: Lege einen ganzzahligen Wert fest (z. B. batch=16), der die Anzahl der Bilder pro Batch direkt angibt.
  • Automatischer Modus (60 % GPU-Speicher): Verwende batch=-1, um die Batch-Größe automatisch für eine CUDA-Speicherauslastung von ca. 60 % anzupassen.
  • Automatischer Modus mit Auslastungsanteil: Lege einen Bruchwert fest (z. B. batch=0.70), um die Batch-Größe basierend auf dem angegebenen Anteil der GPU-Speichernutzung anzupassen.
  • OOM-Auto-Wiederholung: Wenn während der ersten Epoche ein CUDA-Speicherüberlauffehler (Out of Memory) auftritt, halbiert der Trainer die Batch-Größe automatisch und versucht es erneut (bis zu 3 Mal). Dies gilt nur für das Training mit einer einzelnen GPU; das Multi-GPU-Training (DDP) löst den Fehler sofort aus.
  • Keine passende Größe gefunden: Wenn keine mögliche Batchgröße ein nutzbares Profil erzeugt, löst AutoBatch einen eindeutigen RuntimeError aus, statt stillschweigend auf einen nicht passenden Standardwert zurückzufallen.

Augmentierungseinstellungen und Hyperparameter#

Augmentierungstechniken sind unerlässlich, um die Robustheit und Leistung von YOLO-Modellen zu verbessern, indem Variabilität in die Trainingsdaten eingebracht wird, was dem Modell hilft, besser auf ungesehene Daten zu verallgemeinern. Die folgende Tabelle beschreibt den Zweck und die Wirkung der einzelnen Augmentierungsargumente:

ArgumentTypStandardwertUnterstützte AufgabenBereichBeschreibung
hsv_hfloat0.015detect, segment, semantic, depth, classify, pose, obb0.0 - 1.0Passt den Farbton des Bildes um einen Anteil des Farbkreises an und führt dadurch Farbvariabilität ein. Hilft dem Modell, unter verschiedenen Lichtbedingungen zu generalisieren. Für classify gilt dies nur, wenn auto_augment=None.
hsv_sfloat0.7detect, segment, semantic, depth, classify, pose, obb0.0 - 1.0Ändert die Sättigung des Bildes um einen Anteil und beeinflusst dadurch die Farbintensität. Nützlich zur Simulation verschiedener Umgebungsbedingungen. Für classify gilt dies nur, wenn auto_augment=None.
hsv_vfloat0.4detect, segment, semantic, depth, classify, pose, obb0.0 - 1.0Ändert den Wert (die Helligkeit) des Bildes um einen Anteil und hilft dem Modell dadurch, unter verschiedenen Lichtbedingungen gute Ergebnisse zu erzielen. Für classify gilt dies nur, wenn auto_augment=None.
degreesfloat0detect, segment, semantic, depth, pose, obb0.0 - 180Dreht das Bild zufällig innerhalb des angegebenen Winkelbereichs und verbessert dadurch die Fähigkeit des Modells, Objekte in verschiedenen Ausrichtungen zu erkennen.
translatefloat0.1detect, segment, semantic, depth, pose, obb0.0 - 1.0Verschiebt das Bild horizontal und vertikal um einen Anteil der Bildgröße und unterstützt dadurch das Lernen, teilweise sichtbare Objekte zu erkennen.
scalefloat | tuple0.5detect, segment, semantic, depth, classify, pose, obb0 - 1 oder ein explizites (min, max)-Tupel (nicht für classify)Skaliert das Bild mit einem Verstärkungsfaktor und simuliert dadurch Objekte in unterschiedlichen Entfernungen von der Kamera.
shearfloat0detect, segment, semantic, depth, pose, obb-180 - +180Verzerrt das Bild um den angegebenen Winkel und ahmt dadurch den Effekt nach, dass Objekte aus verschiedenen Blickwinkeln betrachtet werden.
perspectivefloat0detect, segment, semantic, depth, pose, obb0.0 - 0.001Wendet eine zufällige perspektivische Transformation auf das Bild an und verbessert dadurch die Fähigkeit des Modells, Objekte im 3D-Raum zu verstehen.
flipudfloat0detect, segment, semantic, depth, classify, pose, obb0.0 - 1.0Dreht das Bild mit der angegebenen Wahrscheinlichkeit auf den Kopf und erhöht dadurch die Datenvariabilität, ohne die Eigenschaften des Objekts zu verändern.
fliplrfloat0.5detect, segment, semantic, depth, classify, pose, obb0.0 - 1.0Spiegelt das Bild mit der angegebenen Wahrscheinlichkeit von links nach rechts und ist nützlich, um symmetrische Objekte zu lernen und die Vielfalt des Datasets zu erhöhen.
bgrfloat0detect, segment, semantic, depth, pose, obb0.0 - 1.0Vertauscht die Bildkanäle mit der angegebenen Wahrscheinlichkeit von RGB zu BGR und erhöht dadurch die Robustheit gegenüber einer falschen Kanalreihenfolge.
mosaicfloat1detect, segment, semantic, pose, obb0.0 - 1.0Kombiniert vier Trainingsbilder zu einem und simuliert dadurch unterschiedliche Szenenzusammensetzungen und Objektinteraktionen. Besonders wirksam für das Verständnis komplexer Szenen.
mixupfloat0detect, segment, semantic, pose, obb0.0 - 1.0Mischt zwei Bilder und ihre Bezeichnungen und erstellt dadurch ein zusammengesetztes Bild. Verbessert die Generalisierungsfähigkeit des Modells durch das Einführen von Bezeichnungsrauschen und visueller Variabilität.
cutmixfloat0detect, segment, pose, obb0.0 - 1.0Kombiniert Teile zweier Bilder und erstellt dadurch eine teilweise Mischung bei gleichzeitiger Beibehaltung klar abgegrenzter Bereiche. Verbessert die Robustheit des Modells durch das Erzeugen von Verdeckungsszenarien.
copy_pastefloat0segment, obb0.0 - 1.0Anteil der geeigneten Objekte, die eingefügt werden; flip spiegelt sie innerhalb des Bildes, während mixup den Wert zusätzlich als Wahrscheinlichkeit für die bildübergreifende Anwendung verwendet.
copy_paste_modestrflipsegment, obb-Gibt die zu verwendende copy-paste-Strategie an. Zu den Optionen gehören 'flip' und 'mixup'.
auto_augmentstrrandaugmentclassify-Wendet eine vordefinierte Augmentierungsrichtlinie ('randaugment', 'autoaugment' oder 'augmix') an, um die Modellleistung durch visuelle Vielfalt zu verbessern.
erasingfloat0.4classify0.0 - 1.0Löscht während des Trainings zufällig Bildbereiche, damit sich das Modell auf weniger offensichtliche Merkmale konzentriert.
augmentationslistNonedetect, segment, semantic, depth, pose, obb-Benutzerdefinierte Albumentations-Transformationen für fortgeschrittene Datenaugmentierung (nur Python-API). Akzeptiert eine Liste von Transformationsobjekten für spezielle Augmentierungsanforderungen.

Diese Einstellungen können angepasst werden, um den spezifischen Anforderungen des jeweiligen Datensatzes und der Aufgabe gerecht zu werden. Das Experimentieren mit verschiedenen Werten kann dabei helfen, die optimale Augmentierungsstrategie zu finden, die zu der besten Modellleistung führt.

Info

Weitere Informationen zu Trainings-Augmentierungsoperationen findest du im Referenzabschnitt.

Protokollierung#

Trainingsmetriken, Diagramme und Prüfpunkte werden immer in das Ausführungsverzeichnis geschrieben, und Ultralytics streamt sie zudem an jeden installierten und aktivierten Experiment-Tracker: Comet, ClearML, TensorBoard, MLflow, Weights & Biases und DVCLive. Jeder Logger wird über die Ultralytics settings umgeschaltet, zum Beispiel yolo settings tensorboard=True. Die drei gängigsten Setups werden unten gezeigt.

Comet#

Comet ist eine Plattform, die es Data Scientists und Entwicklern ermöglicht, Experimente und Modelle zu verfolgen, zu vergleichen, zu erklären und zu optimieren. Sie bietet Funktionalitäten wie Metriken in Echtzeit, Code-Diffs und die Verfolgung von Hyperparametern.

So verwendest du Comet:

Beispiel
# pip install comet_ml
import comet_ml

comet_ml.init()

Denke daran, dich auf deren Website in deinem Comet-Konto anzumelden und deinen API-Schlüssel abzurufen. Du musst diesen zu deinen Umgebungsvariablen oder deinem Skript hinzufügen, um deine Experimente zu protokollieren.

ClearML#

ClearML ist eine Open-Source-Plattform, die die Verfolgung von Experimenten automatisiert und bei der effizienten Freigabe von Ressourcen hilft. Sie wurde entwickelt, um Teams dabei zu unterstützen, ihre ML-Arbeit effizienter zu verwalten, auszuführen und zu reproduzieren.

So verwendest du ClearML:

Beispiel
# pip install clearml
import clearml

clearml.browser_login()

Nach dem Ausführen dieses Skripts musst du dich im Browser bei deinem ClearML-Konto anmelden und deine Sitzung authentifizieren.

TensorBoard#

TensorBoard ist ein Visualisierungs-Toolkit für TensorFlow. Es ermöglicht dir, deinen TensorFlow-Graphen zu visualisieren, quantitative Metriken zur Ausführung deines Graphen zu plotten und zusätzliche Daten wie Bilder anzuzeigen, die ihn durchlaufen.

So verwendest du TensorBoard in Google Colab:

Beispiel
%load_ext tensorboard
tensorboard --logdir ultralytics/runs # replace with 'runs' directory

Führe den folgenden Befehl aus, um TensorBoard lokal zu verwenden, und zeige die Ergebnisse unter localhost:6006 an.

Beispiel
tensorboard --logdir ultralytics/runs # replace with 'runs' directory

Dadurch wird TensorBoard geladen und auf das Verzeichnis verwiesen, in dem deine Trainingsprotokolle gespeichert sind.

Nachdem du deinen Logger eingerichtet hast, kannst du mit dem Training deines Modells fortfahren. Alle Trainingsmetriken werden automatisch auf deiner gewählten Plattform protokolliert, und du kannst auf diese Protokolle zugreifen, um die Leistung deines Modells im Laufe der Zeit zu überwachen, verschiedene Modelle zu vergleichen und Bereiche mit Verbesserungspotenzial zu identifizieren.

Wie geht es weiter?#

Validiere dein trainiertes Modell anhand von zurückgehaltenen Daten, um seine Genauigkeit in der Praxis zu überprüfen, und exportiere es dann nach ONNX, TensorRT oder in ein anderes Bereitstellungsformat. Trainierst du mit deinen eigenen Daten statt mit COCO8? Formatiere sie zuerst mit dem Datensatz-Leitfaden.

FAQ#

  • Ja. Das Cloud-Training auf der Ultralytics Platform beinhaltet kostenlose Guthaben für den Einstieg. Lade deinen Datensatz hoch, wähle ein Modell und eine GPU aus und trainiere direkt über den Browser.

  • Um ein Objekterkennungsmodell mit Ultralytics YOLO26 zu trainieren, kannst du entweder die Python-API oder die CLI verwenden. Unten findest du ein Beispiel für beide:

    Beispiel für das Training mit einer einzelnen GPU und CPU
    from ultralytics import YOLO
    
    # Load a model
    model = YOLO("yolo26n.pt")  # load a pretrained model (recommended for training)
    
    # Train the model
    results = model.train(data="coco8.yaml", epochs=100, imgsz=640)

    Weitere Details findest du im Abschnitt Trainings-Einstellungen.

  • Zu den Hauptfunktionen des Trainingsmodus von Ultralytics YOLO26 gehören:

    • Automatischer Datensatz-Download: Lädt Standard-Datensätze wie COCO, VOC und ImageNet automatisch herunter.
    • Multi-GPU-Unterstützung: Skaliere das Training über mehrere GPUs hinweg für eine schnellere Verarbeitung.
    • Hyperparameter-Konfiguration: Passe Hyperparameter über YAML-Dateien oder CLI-Argumente an.
    • Visualisierung und Überwachung: Echtzeit-Verfolgung der Trainingsmetriken für bessere Einblicke.

    Diese Funktionen machen das Training effizient und an deine Bedürfnisse anpassbar. Weitere Details findest du im Abschnitt Hauptfunktionen des Trainingsmodus.

  • Um das Training nach einer unterbrochenen Sitzung fortzusetzen, setze das Argument resume auf True und gib den Pfad zum zuletzt gespeicherten Checkpoint an.

    Beispiel für das Fortsetzen des Trainings
    from ultralytics import YOLO
    
    # Load the partially trained model
    model = YOLO("path/to/last.pt")
    
    # Resume training
    results = model.train(resume=True)

    Weitere Informationen findest du im Abschnitt zum Fortsetzen unterbrochener Trainings.

  • Klassenhäufigkeitsungleichgewichte treten auf, wenn einige Klassen in deinen Trainingsdaten deutlich weniger Beispiele aufweisen als andere. Dies kann dazu führen, dass das Modell bei seltenen Klassen eine schlechte Leistung zeigt. Ultralytics YOLO unterstützt die Klassen Gewichtung über das Argument cls_pw, um dieses Problem zu beheben.

    Das Argument cls_pw steuert die Stärke der Klassen Gewichtung basierend auf der inversen Klassenhäufigkeit:

    • cls_pw=0.0 (Standard): Deaktiviert die Klassen Gewichtung
    • cls_pw=1.0: Wendet eine vollständige inverse Häufigkeitsgewichtung an
    • Werte zwischen 0.0 und 1.0: Bieten eine partielle Gewichtung für ein moderates Ungleichgewicht

    Die Klassengewichte werden als (1.0 / class_counts) ^ cls_pw berechnet und so normalisiert, dass ihr Mittelwert 1,0 ergibt.

    Training mit einem unausgewogenen Datensatz
    from ultralytics import YOLO
    
    # Load a pretrained model
    model = YOLO("yolo26n.pt")
    
    # Train with full class weighting for severely imbalanced data
    results = model.train(data="custom.yaml", epochs=100, imgsz=640, cls_pw=1.0)
    
    # Or use partial weighting (0.25) for moderate imbalance
    results = model.train(data="custom.yaml", epochs=100, imgsz=640, cls_pw=0.25)
    Tipp

    Beginne mit cls_pw=0.25 für mäßig unausgewogene Datensätze und erhöhe den Wert auf 1.0, falls die seltenen Klassen weiterhin eine schlechte Leistung zeigen. Du kannst die berechneten Klassengewichte in den Trainingsprotokollen überprüfen, um die Gewichtsverteilung zu verifizieren.

  • Ja, Ultralytics YOLO26 unterstützt das Training auf Apple-Silicon-Chips unter Verwendung des Frameworks Metal Performance Shaders (MPS). Gib 'mps' als dein Trainingsgerät an.

    Beispiel für das MPS-Training
    from ultralytics import YOLO
    
    # Load a pretrained model
    model = YOLO("yolo26n.pt")
    
    # Train the model on Apple silicon chip (M1/M2/M3/M4)
    results = model.train(data="coco8.yaml", epochs=100, imgsz=640, device="mps")

    Weitere Details findest du im Abschnitt zum Apple Silicon MPS Training.

  • Mit Ultralytics YOLO26 kannst du eine Vielzahl von Trainingseinstellungen wie Batch-Größe, Lernrate, Epochen und mehr über Argumente konfigurieren. Hier ist eine kurze Übersicht:

    ArgumentStandardwertBeschreibung
    modelNonePfad zur Modelldatei für das Training.
    dataNonePfad zum Dataset-YAML (z. B. coco8.yaml) oder ein Dataset-Verzeichnis bzw. -Name (z. B. imagenet10) für die Klassifikation.
    epochs100Gesamtzahl der Trainingsepochen.
    batch16Batch-Größe, anpassbar als Ganzzahl oder im automatischen Modus.
    imgsz640Zielbildgröße für das Training.
    deviceNoneRechengerät(e) für das Training wie cpu, 0, 0,1 oder mps.
    saveTrueErmöglicht das Speichern von Trainings-Checkpoints und finalen Modellgewichten.

    Einen detaillierten Leitfaden zu den Trainingseinstellungen findest du im Abschnitt Train Settings.

Kommentare