Ultralytics YOLO27:
Get Started

Modelltraining mit Ultralytics YOLO#

Ultralytics YOLO ecosystem and integrations

Einführung#

Beim Training eines Deep-Learning-Modells werden ihm Daten zugeführt und seine Parameter angepasst, damit es genaue Vorhersagen treffen kann. Der Trainingsmodus in Ultralytics YOLO26 wurde für ein effektives und effizientes Training von Objekterkennungsmodellen entwickelt und nutzt die Möglichkeiten moderner Hardware vollständig aus. Dieser Leitfaden behandelt alle Details, die du für den Einstieg ins Training eigener Modelle mit den umfangreichen Funktionen von YOLO26 benötigst. Wenn du Ultralytics noch nicht installiert hast, beginne mit dem Schnellstartleitfaden.

Sieh dir die Vorschau auf das noch nicht veröffentlichte YOLO27 an, um geplante Trainingsbeispiele zu entdecken.



Ansehen: So trainierst du ein YOLO-Modell mit deinem eigenen Datensatz in Google Colab.

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

Hier sind einige überzeugende Gründe für den Trainingsmodus von YOLO26:

  • Effizienz: Nutze deine Hardware optimal aus, egal ob du mit einer einzelnen GPU arbeitest oder auf mehrere GPUs skalierst.
  • Vielseitigkeit: Trainiere mit benutzerdefinierten Datensätzen und frei verfügbaren Datensätzen wie COCO, VOC und ImageNet.
  • Benutzerfreundlichkeit: Einfache, aber leistungsstarke CLI- und Python-Schnittstellen sorgen für unkompliziertes Training.
  • Flexible Hyperparameter: Eine große Auswahl an anpassbaren Hyperparametern ermöglicht die Feinabstimmung der Modellleistung. Für eine genauere Steuerung kannst du auch den Trainer selbst anpassen.
  • Cloud-Training: Trainiere auf Cloud-GPUs über die Ultralytics Platform mit Echtzeitmetriken und automatischer Speicherung von Prüfpunkten.

Wichtige Funktionen des Trainingsmodus#

Im Folgenden findest du einige bemerkenswerte Funktionen des Trainingsmodus von YOLO26:

  • Automatischer Datensatz-Download: Datensatzkonfigurationen mit einer Downloadquelle werden bei der ersten Verwendung automatisch heruntergeladen, z. B. yolo train data=coco8.yaml. Unterstützte Formate und Datensätze findest du in der Übersicht zu Datensätzen.
  • Unterstützung mehrerer GPUs: Skaliere dein Training nahtlos über mehrere GPUs, um den Vorgang zu beschleunigen.
  • Konfiguration von Hyperparametern: Du kannst Hyperparameter über YAML-Konfigurationsdateien oder CLI-Argumente ändern.
  • Visualisierung und Überwachung: Trainingsmetriken werden in Echtzeit erfasst und der Lernprozess wird zur besseren Auswertung visualisiert.

Anwendungsbeispiele#

Trainiere YOLO26n 100 Epochen lang mit dem COCO8-Datensatz und einer Bildgröße von 640. Das Trainingsgerät lässt sich mit dem Argument device festlegen. Wird kein Argument übergeben, kommt, sofern verfügbar, die GPU device=0 zum Einsatz; andernfalls wird device='cpu' verwendet. Eine vollständige Liste der Trainingsargumente findest du im Abschnitt „Argumente“ weiter unten.

Fehler bei der Mehrfachverarbeitung unter Windows

Unter Windows kann beim Starten des Trainings als Skript der Fehler RuntimeError auftreten. Füge vor deinem Trainingscode einen if __name__ == "__main__":-Block ein, um das Problem zu beheben.

Beispiel für Training mit einer GPU und mit CPU

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

from ultralytics import YOLO

# Ein Modell laden
model = YOLO("yolo26n.yaml")  # ein neues Modell aus YAML erstellen
model = YOLO("yolo26n.pt")  # ein vortrainiertes Modell laden (für das Training empfohlen)
model = YOLO("yolo26n.yaml").load("yolo26n.pt")  # aus YAML erstellen und Gewichte übertragen

# Das Modell trainieren
results = model.train(data="coco8.yaml", epochs=100, imgsz=640)

Training mit mehreren GPUs#

Beim Training mit mehreren GPUs wird die Trainingslast auf mehrere GPUs verteilt, sodass die verfügbaren Hardwareressourcen effizienter genutzt werden. Diese Funktion ist sowohl über die Python-API als auch über die Befehlszeilenschnittstelle verfügbar. Um das Training mit mehreren GPUs zu aktivieren, gib die IDs der gewünschten GPU-Geräte an.

Beispiel für Training mit mehreren GPUs

Verwende zum Training mit zwei GPUs, CUDA-Gerät 0 und 1, die folgenden Befehle. Bei Bedarf kannst du weitere GPUs hinzufügen.

from ultralytics import YOLO

# Ein Modell laden
model = YOLO("yolo26n.pt")  # ein vortrainiertes Modell laden (für das Training empfohlen)

# Das Modell mit zwei GPUs trainieren
results = model.train(data="coco8.yaml", epochs=100, imgsz=640, device=[0, 1])

# Das Modell mit den beiden am wenigsten ausgelasteten GPUs trainieren
results = model.train(data="coco8.yaml", epochs=100, imgsz=640, device=[-1, -1])
Unterstützung für mehrere GPUs unter Windows

Das Training mit mehreren GPUs funktioniert unter Windows nicht mit den offiziellen PyTorch-Wheels für torch>=2.4. Ultralytics startet DDP über torch.distributed.run; dabei erstellt der Rendezvous-Schritt ein TCPStore, das seit PyTorch 2.4 standardmäßig das libuv-Backend verwendet. Die offiziellen Windows-Wheels wurden jedoch ohne libuv erstellt. Das Training wird sofort mit folgendem Fehler beendet:

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

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

Training mit mehreren GPUs und benutzerdefiniertem Code

Wenn du mehrere Geräte angibst (z. B. device=[0, 1]), startet Ultralytics intern eine neue Trainerinstanz und führt im Hintergrund torch.distributed.run aus. Das funktioniert nahtlos bei der standardmäßigen Nutzung der CLI und bei unveränderten Python-Skripten.

Enthält dein Skript jedoch benutzerdefinierte Komponenten – etwa einen benutzerdefinierten Trainer, Validator, Datensatz oder eine Augmentierungspipeline –, können diese Objekte nicht automatisch serialisiert und an die DDP-Unterprozesse ü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-GPUs verwendet einen PyTorch-ROCm-Build mit der standardmäßigen Syntax device=0 oder device=cuda:0. Informationen zur ROCm-Installation, zum Training mit mehreren GPUs, zu AMP und zur MIGraphX-Inferenz exportierter Modelle findest du im AMD-Integrationsleitfaden.

Für das Training auf Intel-GPUs verwendest du device=xpu:0 oder mehrere XPU-IDs mit einem PyTorch-Build, der XCCL bereitstellt.

Training auf Huawei-Ascend-NPUs#

Ultralytics unterstützt Training und Validierung auf Huawei-Ascend-NPUs über torch_npu. Installiere miteinander kompatible Versionen von CANN, PyTorch und torch_npu, indem du der Installationsanleitung für die Ascend Extension for PyTorch folgst. Lade anschließend die CANN-Umgebung, bevor du Ultralytics startest:

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

model = YOLO("yolo26n.pt")

# Auf einer Ascend-NPU trainieren
results = model.train(data="coco8.yaml", epochs=100, imgsz=640, device="npu:0")

# Mit HCCL auf zwei Ascend-NPUs trainieren
results = model.train(data="coco8.yaml", epochs=100, imgsz=640, device="npu:0,1")

Die standardmäßigen Trainingsfunktionen, darunter AMP, Validierung, das Speichern von Prüfpunkten und das Fortsetzen des Trainings, verwenden die aktive NPU. AutoBatch ist für das Training mit einer einzelnen NPU verfügbar; bei mehreren NPU-IDs wird verteiltes Training über HCCL gestartet. Informationen zum Export und zur Bereitstellung von Modellen nach dem Training findest du im Integrationsleitfaden für Huawei Ascend.

Training auf wenig ausgelasteten GPUs#

Beim Training auf wenig ausgelasteten GPUs werden in Systemen mit mehreren GPUs automatisch die am wenigsten ausgelasteten GPUs ausgewählt. So wird die Ressourcennutzung ohne manuelle GPU-Auswahl optimiert. Diese Funktion ermittelt anhand der Auslastungswerte und des verfügbaren VRAM, welche GPUs verfügbar sind.

Beispiel für das Training auf wenig ausgelasteten GPUs

Verwende den Geräteparameter -1, um automatisch die am wenigsten ausgelastete GPU oder die am wenigsten ausgelasteten GPUs für das Training auszuwählen. Das ist besonders nützlich in gemeinsam genutzten Computerumgebungen oder auf Servern mit mehreren Benutzern.

from ultralytics import YOLO

# Ein Modell laden
model = YOLO("yolo26n.pt")  # ein vortrainiertes Modell laden (für das Training empfohlen)

# Mit der am wenigsten ausgelasteten GPU trainieren
results = model.train(data="coco8.yaml", epochs=100, imgsz=640, device=-1)

# Mit den beiden am wenigsten ausgelasteten GPUs trainieren
results = model.train(data="coco8.yaml", epochs=100, imgsz=640, device=[-1, -1])

Der Algorithmus zur automatischen Auswahl bevorzugt GPUs mit:

  1. geringerer aktueller Auslastung
  2. mehr verfügbarem Speicher (freiem VRAM)

Diese Funktion ist besonders in gemeinsam genutzten Computerumgebungen oder bei mehreren gleichzeitig laufenden Trainingsaufträgen für unterschiedliche Modelle nützlich. Sie passt sich automatisch an veränderte Systembedingungen an und sorgt so ohne manuelles Eingreifen für eine optimale Ressourcenzuweisung.

MPS-Training auf Apple Silicon#

Da die Ultralytics-YOLO-Modelle jetzt Apple-Silicon-Chips unterstützen, kannst du deine Modelle auf Geräten mit dem leistungsstarken Metal Performance Shaders (MPS)-Framework trainieren. MPS ermöglicht die leistungsstarke Ausführung von Berechnungen und Bildverarbeitungsaufgaben auf Apples speziell entwickelten Chips.

Um das Training auf Apple-Silicon-Chips zu aktivieren, gib beim Start des Trainings als Gerät „mps“ an. Im Folgenden findest du ein Beispiel für die Verwendung mit Python und über die Befehlszeile:

Beispiel für MPS-Training
from ultralytics import YOLO

# Ein Modell laden
model = YOLO("yolo26n.pt")  # ein vortrainiertes Modell laden (für das Training empfohlen)

# Das Modell mit MPS trainieren
results = model.train(data="coco8.yaml", epochs=100, imgsz=640, device="mps")

Durch die Nutzung der Rechenleistung der Apple-Silicon-Chips lassen sich Trainingsaufgaben effizienter verarbeiten. Eine ausführlichere Anleitung und erweiterte Konfigurationsoptionen findest du in der PyTorch-MPS-Dokumentation.

Unterbrochene Trainingsläufe fortsetzen#

Das Fortsetzen des Trainings aus einem zuvor gespeicherten Zustand ist bei der Arbeit mit Deep-Learning-Modellen eine wichtige Funktion. Das kann in verschiedenen Situationen hilfreich sein, etwa wenn der Trainingsprozess unerwartet unterbrochen wurde oder du ein Modell mit neuen Daten oder über weitere Epochen hinweg trainieren möchtest.

Wird das Training fortgesetzt, lädt Ultralytics YOLO die Gewichte des zuletzt gespeicherten Modells und stellt außerdem den Zustand des Optimierers, den Lernraten-Scheduler, die Epochenzahl und den Datensatz wieder her. So kannst du den Trainingsprozess nahtlos an der Stelle fortsetzen, an der er unterbrochen wurde. Übergib neben resume explizit data=, um mit einem anderen Datensatz statt mit dem des Checkpoints fortzufahren.

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

Unten findest du ein Beispiel dafür, wie du ein unterbrochenes Training mit Python und über die Befehlszeile fortsetzen kannst:

Beispiel zum Fortsetzen des Trainings
from ultralytics import YOLO

# Ein Modell laden
model = YOLO("path/to/last.pt")  # Modell mit teilweise abgeschlossenem Training laden

# Training fortsetzen
results = model.train(resume=True)

Wenn du resume=True setzt, setzt die Funktion train das Training anhand des im Dateipfad 'path/to/last.pt' gespeicherten Zustands an der Stelle fort, an der es unterbrochen wurde. Wenn das Argument resume weggelassen oder auf False gesetzt wird, startet die Funktion train eine neue Trainingssitzung.

Beachte, dass Checkpoints standardmäßig am Ende jeder Epoche oder in festen Abständen mithilfe des Arguments save_period gespeichert werden. Daher musst du mindestens eine Epoche abschließen, um einen Trainingslauf fortzusetzen.

Trainingseinstellungen#

Die Trainingseinstellungen für YOLO-Modelle umfassen verschiedene Hyperparameter und Konfigurationen, die während des Trainingsprozesses verwendet werden. Diese Einstellungen beeinflussen Leistung, Geschwindigkeit und Genauigkeit des Modells. Zu den wichtigsten Trainingseinstellungen zählen Stapelgröße, Lernrate, Impuls und Gewichtsabnahme. Auch die Wahl des Optimierers, der Verlustfunktion und die Zusammensetzung des Trainingsdatensatzes können den Trainingsprozess beeinflussen. Sorgfältiges Abstimmen und Ausprobieren dieser Einstellungen ist entscheidend, um die Leistung zu optimieren.

MuSGD-Optimierer#

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

Er wird für längere YOLO26-Trainingsläufe und größere Datensätze empfohlen, bei denen orthogonalisierte Muon-Aktualisierungen die Optimierung stabilisieren können.

Nur zweidimensionale lineare Gewichte und vierdimensionale Faltungsfilter (auf 2D umgeformt) erhalten zusammen mit SGD die Aktualisierung im Muon-Stil. Alle anderen Parameter, etwa Batch-Normalisierungsgewichte und Bias-Terme, bleiben bei standardmäßigem SGD.

Wird optimizer=auto verwendet, wählt Ultralytics bei längeren Trainingsläufen automatisch MuSGD aus (in der Regel, wenn iterations > 10000). Bei kürzeren Läufen verwendet der Trainer stattdessen AdamW. Im Modus auto wählt der Trainer auch die Lernrate aus, sodass ein vom Benutzer angegebenes lr0 ignoriert wird. Um diese Einstellungen manuell zu steuern, wähle explizit einen Optimierer aus, zum Beispiel optimizer=AdamW lr0=0.001.

Anwendungsbeispiel:

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

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

ArgumentTypStandardBeschreibung
modelstrNoneGibt die Modelldatei für das Training an. Akzeptiert einen Pfad zu einem vortrainierten .pt-Modell oder einer .yaml-Konfigurationsdatei. Unverzichtbar, um die Modellstruktur festzulegen oder Gewichte zu initialisieren.
datastrNonePfad zur Dataset-YAML-Datei (z. B. coco8.yaml), die die Pfade zu den Trainings- und Validierungsdaten, die Klassennamen und die Anzahl der Klassen enthält. Für die Klassifizierung wird stattdessen ein Dataset-Verzeichnis oder der Name eines integrierten Datensatzes angegeben (z. B. imagenet10).
epochsint100Gesamtzahl der Trainingsepochen. Jede Epoche entspricht einem vollständigen Durchlauf durch den gesamten Datensatz. Dieser Wert wirkt sich auf die Trainingsdauer und die Modellleistung aus.
timefloatNoneMaximale Trainingsdauer in Stunden. Wenn dieser Wert gesetzt ist, überschreibt er das Argument epochs und beendet das Training automatisch nach der angegebenen Dauer. Nützlich für Trainingsszenarien mit begrenzter Zeit.
patienceint100Anzahl der Epochen, die ohne Verbesserung der Validierungsmetriken abgewartet werden, bevor das Training vorzeitig beendet wird. Hilft, Überanpassung zu verhindern, indem das Training bei stagnierender Leistung beendet wird.
batchint oder float16Batchgröße mit drei Modi: als Ganzzahl festlegen (z. B. batch=16), automatischer Modus mit 60 % GPU-Speicherauslastung (batch=-1) oder automatischer Modus mit angegebener Auslastungsfraktion (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 YOLO-Modelle das Seitenverhältnis beibehalten, RT-DETR jedoch nicht. Beeinflusst die Genauigkeit und den Rechenaufwand 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 gespeichert werden, angegeben in Epochen. Der Wert -1 deaktiviert diese Funktion. Nützlich, um während langer Trainingsläufe Zwischenmodelle zu speichern.
cachebool oder strFalseAktiviert das Zwischenspeichern von Dataset-Bildern im Arbeitsspeicher (True/ram), auf der Festplatte (disk) oder deaktiviert es (False). Beschleunigt das Training durch weniger Festplatten-E/A, erhöht jedoch den Speicherbedarf.
deviceint oder str oder listNoneGibt das Rechengerät bzw. 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-Silicon (device=mps), Huawei-Ascend-NPU (device=npu:0 oder device=npu:0,1), Intel XPU (device=xpu:0), automatische Auswahl einer freien GPU (device=-1) oder mehrerer freier GPUs (device=[-1,-1]).
workersint8Anzahl der Worker-Threads für das Laden von Daten (pro RANK bei Multi-GPU-Training). Beeinflusst die Geschwindigkeit der Datenvorverarbeitung und der Datenzufuhr zum Modell; besonders nützlich bei Setups mit mehreren GPUs.
projectstrNoneName des Projektverzeichnisses, in dem die Trainingsausgaben gespeichert werden. Ermöglicht die geordnete Ablage verschiedener Experimente.
namestrNoneName des Trainingslaufs. Wird verwendet, um im Projektordner ein Unterverzeichnis für Trainingsprotokolle und -ausgaben anzulegen.
exist_okboolFalseWenn True, können ein vorhandenes Projekt-/Namensverzeichnis überschrieben werden. Nützlich für iterative Experimente, ohne vorherige Ausgaben manuell löschen zu müssen.
save_dirstrNoneGibt das genaue Verzeichnis an, in dem die Ausgaben des Laufs gespeichert werden, und überschreibt die Kombination project/name. Der Pfad wird unverändert verwendet und nicht automatisch hochgezählt, sodass aufeinanderfolgende Läufe dasselbe Verzeichnis nutzen.
pretrainedbool oder strTrueLegt fest, ob das Training mit vortrainierten Gewichten beginnt. Der Wert kann ein boolescher Wert oder ein Zeichenfolgenpfad zu ladenden Gewichten sein. pretrained=False trainiert mit zufällig initialisierten Gewichten und behält dabei die Modellarchitektur bei.
cls_remapboolTrueBeim Fine-Tuning über mehrere Datensätze hinweg werden Zeilen des vortrainierten Klassifizierungskopfs für übereinstimmende Klassennamen in das neue Modell kopiert. Überlappende Klassen behalten dadurch ihren erlernten Bias und – wenn die Breite des Kopfs unverändert bleibt – auch ihre Gewichte. Dies gilt sowohl bei unterschiedlicher Klassenanzahl als auch bei gleicher Klassenanzahl mit anderer Klassenreihenfolge.
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 Zufallsstartwert für das Training fest und gewährleistet so die Reproduzierbarkeit der Ergebnisse bei Läufen mit denselben Konfigurationen.
deterministicboolTrueErzwingt die Verwendung deterministischer Algorithmen und gewährleistet die Reproduzierbarkeit. Die Einschränkung nichtdeterministischer Algorithmen kann jedoch Leistung und Geschwindigkeit beeinträchtigen.
verboseboolTrueAktiviert ausführliche Ausgaben während des Trainings und zeigt Fortschrittsbalken, Metriken für jede Epoche und zusätzliche Trainingsinformationen in der Konsole an.
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 es darum geht, das Vorhandensein von Objekten statt deren Klassifizierung zu erkennen.
classeslist[int]NoneGibt eine Liste der Klassen-IDs an, mit denen trainiert werden soll. Nützlich, um Klassen herauszufiltern und sich beim Training auf bestimmte Klassen zu konzentrieren.
rectboolFalseAktiviert die minimale Auffüllstrategie: Bilder in einem Batch werden nur minimal aufgefüllt, bis sie dieselbe Größe haben; die längste Seite entspricht imgsz. Das kann Effizienz und Geschwindigkeit verbessern, aber die Modellgenauigkeit beeinträchtigen.
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 Modell-Strides; 0.0 deaktiviert das Training mit mehreren Skalen.
cos_lrboolFalseVerwendet einen Kosinus-Lernraten-Scheduler, der die Lernrate über die Epochen hinweg entlang einer Kosinuskurve anpasst. Unterstützt die Steuerung der Lernrate für eine bessere Konvergenz.
close_mosaicint10Deaktiviert die Mosaik-Datenerweiterung in den letzten N Epochen, um das Training vor dem Abschluss zu stabilisieren. Mit dem Wert 0 wird diese Funktion deaktiviert.
resumeboolFalseSetzt das Training ab dem zuletzt gespeicherten Prüfpunkt fort. Lädt automatisch Modellgewichte, Optimiererzustand und Epochenzahl und setzt das Training nahtlos fort.
ampbool oder strTrueLegt die Trainingsgenauigkeit fest: True oder "fp16" verwendet FP16, "bf16" BF16 auf unterstützten CUDA-Geräten und False oder "fp32" FP32.
quantizeint oder strNoneSetze den Wert auf 8 (oder "int8"), um ein quantisierungsbewusstes Training (QAT) für INT8 zu aktivieren. Dabei wird das Modell mit Fake-Quantisierung im Trainingsablauf feinabgestimmt, damit die Gewichte den INT8-Export tolerieren. Siehe quantisierungsbewusstes Training.
fractionfloat, int oder list1.0Teilmenge des Datensatzes als Verhältnis/Anzahl oder [train, val, test]-Liste. 1 steht für den vollständigen Split; Ganzzahlen über 1 geben die Anzahl der Bilder an. Nur beim optionalen Testeintrag bedeuten 0/0.0 „keine“. Bei Listen mit zwei Einträgen bleibt der Testdatensatz vollständig.
profileboolFalseAktiviert während des Trainings die Profilierung der ONNX- und TensorRT-Geschwindigkeiten, was für die Optimierung der Modellbereitstellung nützlich ist.
freezeint oder listNoneFriert die ersten N Schichten des Modells oder bestimmte Schichten anhand ihres Index oder Modulnamens ein (23.cv2, ohne vorangestelltes model.) und reduziert so die Anzahl der trainierbaren Parameter. Nützlich für Fine-Tuning oder Transferlernen.
lr0float0.01Anfängliche Lernrate (d. h. SGD=1E-2, Adam=1E-3). Wird beim Standardwert optimizer='auto' ignoriert; gib explizit einen Optimierer an, um sie zu verwenden.
lrffloat0.01Finale Lernrate als Anteil der anfänglichen Lernrate = (lr0 * lrf), die zusammen mit Schedulern zur Anpassung der Lernrate im Zeitverlauf verwendet wird.
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. Dabei wird die Lernrate schrittweise von einem niedrigen Wert auf die anfängliche Lernrate erhöht, um das Training zu Beginn zu stabilisieren.
warmup_momentumfloat0.8Anfänglicher Momentum-Wert für die Aufwärmphase, der während des Aufwärmens schrittweise an den eingestellten 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 explizit einen Optimierer an, um sie zu verwenden.
distill_modelstrNonePfad zu einem Prüfpunkt des Lehrermodells (z. B. yolo26x.pt) für die Wissensdestillation. Wenn dieser Wert gesetzt ist, wird das Schülermodell mit einem zusätzlichen Destillationsverlust trainiert, der sich am eingefrorenen Lehrermodell orientiert.
disfloat6.0Gewichtung des Destillationsverlusts, der zu den standardmäßigen Erkennungsverlusten hinzukommt. Höhere Werte verstärken den Einfluss der Merkmalsvorgaben des Lehrermodells.
boxfloat7.5Gewichtung der Box-Verlustkomponente in der Verlustfunktion, die bestimmt, wie stark die präzise Vorhersage der Koordinaten des Begrenzungsrahmens gewichtet wird.
clsfloat0.5Gewichtung des Klassifizierungsverlusts in der Gesamtverlustfunktion. Beeinflusst, wie wichtig eine korrekte Klassenvorhersage im Vergleich zu anderen Komponenten ist.
cls_pwfloat0.0Potenz zur Gewichtung von Klassen, um Klassenungleichgewicht anhand der inversen Klassenhäufigkeit auszugleichen. 0.0 deaktiviert die Klassengewichtung, 1.0 wendet die vollständige Gewichtung anhand der inversen Häufigkeit an. Werte zwischen 0 und 1 bewirken eine teilweise Gewichtung.
dflfloat1.5Gewichtung des Regressionsanteils für Box-Abstände: Distribution Focal Loss (DFL), wenn der Erkennungskopf reg_max > 1 verwendet, oder ein L1-Verlust auf normalisierten Box-Abständen bei DFL-freiem YOLO26 (reg_max: 1).
posefloat12.0Gewichtung des Posenschätzungsverlusts bei Modellen, die für die Posenschätzung trainiert werden. Beeinflusst, wie stark die präzise Vorhersage von Posenschlüsselpunkten gewichtet wird.
kobjfloat1.0Gewichtung des Objektivitätsverlusts für Schlüsselpunkte bei Posenschätzungsmodellen. Stimmt die Erkennungssicherheit auf die Genauigkeit der Posenschätzung ab.
rlefloat1.0Gewichtung des Verlusts der residualen Log-Likelihood-Schätzung in Posenschätzungsmodellen. Beeinflusst die Präzision der Lokalisierung von Schlüsselpunkten.
anglefloat1.0Gewichtung des Winkelverlusts in OBB-Modellen. Beeinflusst die Präzision der Winkelvorhersagen orientierter Begrenzungsrahmen.
dlogfloat1.0Gewichtung des skaleninvarianten logarithmischen Verlusts (SILog) in Modellen zur Tiefenschätzung; dieser Hauptterm bestimmt die Tiefengenauigkeit.
dgradfloat0.5Gewichtung des Gradientenverlusts in Modellen zur Tiefenschätzung. Bestraft Fehler an Tiefenkanten und fördert schärfere Oberflächengrenzen.
dlamfloat1.0Varianzfaktor des SILog-Verlusts in Modellen zur Tiefenschätzung. 1.0 macht den Verlust vollständig skaleninvariant, während 0.0 ihn auf den einfachen logarithmischen RMSE reduziert.
nbsint64Nominelle 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 separat beibehalten werden sollen. Bei Überlappungen wird die kleinere Maske beim Zusammenführen über die größere gelegt.
mask_ratioint4Verkleinerungsfaktor für Segmentierungsmasken, der die Auflösung der während des Trainings verwendeten Masken beeinflusst. Die Auflösung vorhergesagter Masken wird dadurch nicht verändert.
dropoutfloat0.0Dropout-Rate zur Regularisierung bei Klassifizierungsaufgaben. Verhindert Überanpassung, indem während des Trainings zufällig Einheiten ausgelassen werden.
valboolTrueAktiviert die Validierung während des Trainings und ermöglicht so die regelmäßige Bewertung der Modellleistung anhand eines separaten Datensatzes.
nmsbool, optionalNoneWählt den Inferenzkopf aus, der bei der Validierung jeder Epoche, der Auswahl von Prüfpunkten und dem vorzeitigen Abbruch verwendet wird. None oder True verwendet One-to-Many mit NMS; False verwendet, sofern verfügbar, den NMS-freien Kopf. Beide Köpfe behalten ihre Trainingsverluste bei.
plotsboolTrueErzeugt und speichert Diagramme der Trainings- und Validierungsmetriken sowie Vorhersagebeispiele und bietet so einen visuellen Einblick in Modellleistung und Lernfortschritt.
compilebool oder strFalseAktiviert die PyTorch-2.x-Graphkompilierung torch.compile mit backend='inductor'. Akzeptiert True → "default", False → deaktiviert oder einen Zeichenfolgenmodus wie "default", "reduce-overhead", "max-autotune-no-cudagraphs". Bei Nichtunterstützung wird mit einer Warnung auf den Eager-Modus zurückgegriffen.
channels_lastboolNoneVerwendet für Faltungen während des Trainings das Speicherformat channels_last (NHWC). None aktiviert es automatisch unter CUDA mit PyTorch 1.11 oder neuer, außer unter Windows, wo es sich als langsamer erwiesen hat. False deaktiviert es, und True fordert es explizit an. Beim Training auf CPU oder MPS wird immer NCHW verwendet (True wird ignoriert und eine Warnung ausgegeben).
max_detint300Maximale Anzahl der Erkennungen pro Bild während der Trainingsvalidierung. Bei detect, segment, pose und OBB wird der Standardwert 300 nur dann auf die höchste Anzahl beschrifteter Objekte in Training und Validierung erhöht, wenn diese Anzahl über 300 liegt. Andere Werte bleiben unverändert; bei Überschreiten des Grenzwerts wird eine Warnung ausgegeben.
Hinweis zu Einstellungen der Batchgröße

Das Argument batch lässt sich auf drei Arten konfigurieren:

  • Feste Stapelgröße: Lege einen ganzzahligen Wert fest (z. B. batch=16), um die Anzahl der Bilder pro Stapel direkt anzugeben.
  • Automatischer Modus (60 % GPU-Speicher): Verwende batch=-1, um die Stapelgröße automatisch so anzupassen, dass ungefähr 60 % des CUDA-Speichers genutzt werden.
  • Automatischer Modus mit Auslastungsanteil: Lege einen Anteil fest (z. B. batch=0.70), um die Stapelgröße anhand des angegebenen Anteils des GPU-Speicherverbrauchs anzupassen.
  • Automatischer Wiederholungsversuch bei Speichermangel: Tritt während der ersten Epoche ein CUDA-Speichermangel auf, halbiert der Trainer automatisch die Stapelgröße und versucht es erneut (bis zu dreimal). Dies gilt nur für das Training mit einer einzelnen GPU; beim Training mit mehreren GPUs (DDP) wird der Fehler sofort ausgelöst.
  • Keine passende Größe gefunden: Wenn keine Batchgröße ein verwendbares Profil ergibt, löst AutoBatch einen aussagekräftigen RuntimeError-Fehler aus, statt stillschweigend auf einen nicht passenden Standardwert zurückzugreifen.

Einstellungen und Hyperparameter für die Datenerweiterung#

Datenerweiterungsverfahren sind unverzichtbar, um die Robustheit und Leistung von YOLO-Modellen zu verbessern. Dazu bringen sie Abwechslung in die Trainingsdaten und helfen dem Modell, besser auf unbekannte Daten zu verallgemeinern. Die folgende Tabelle zeigt Zweck und Wirkung der einzelnen Argumente für die Datenerweiterung:

ArgumentTypStandardUnterstü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 sorgt so für Farbvariationen. Dies hilft dem Modell, auf unterschiedliche Lichtverhältnisse 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 so die Farbintensität. Dies eignet sich, um verschiedene Umgebungsbedingungen zu simulieren. 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, bei unterschiedlichen Lichtverhältnissen 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 so 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. Dadurch lernt das Modell, teilweise sichtbare Objekte zu erkennen.
scalefloat | tuple0.5detect, segment, semantic, depth, classify, pose, obb0 - 1 oder ein explizites Tupel (min, max) (nicht für classify)Skaliert das Bild mit einem Verstärkungsfaktor und simuliert so Objekte in verschiedenen Entfernungen zur Kamera.
shearfloat0detect, segment, semantic, depth, pose, obb-180 - +180Verzerrt das Bild um einen angegebenen Winkel und ahmt so 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 so die Fähigkeit des Modells, Objekte im dreidimensionalen 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 so die Datenvielfalt, ohne die Merkmale des Objekts zu verändern.
fliplrfloat0.5detect, segment, semantic, depth, classify, pose, obb0.0 - 1.0Spiegelt das Bild mit der angegebenen Wahrscheinlichkeit horizontal. Dies eignet sich zum Lernen symmetrischer Objekte und erhöht die Vielfalt des Datensatzes.
bgrfloat0detect, segment, semantic, depth, pose, obb0.0 - 1.0Vertauscht mit der angegebenen Wahrscheinlichkeit die Bildkanäle von RGB zu BGR. Dies erhöht die Robustheit gegenüber einer falschen Kanalreihenfolge.
mosaicfloat1detect, segment, semantic, pose, obb0.0 - 1.0Kombiniert vier Trainingsbilder zu einem und simuliert so 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 Beschriftungen zu einem zusammengesetzten Bild. Durch Rauschen in den Beschriftungen und visuelle Variationen verbessert sich die Generalisierungsfähigkeit des Modells.
cutmixfloat0detect, segment, semantic, pose, obb0.0 - 1.0Kombiniert Teile zweier Bilder zu einer teilweisen Überblendung, wobei die Bereiche unterscheidbar bleiben. Dadurch wird die Robustheit des Modells durch simulierte Verdeckungssituationen verbessert.
copy_pastefloat0segment, semantic, obb0.0 - 1.0Anteil der geeigneten Objekte, die eingefügt werden; flip spiegelt sie innerhalb des Bildes, während mixup diesen Wert auch als Wahrscheinlichkeit für die Anwendung über mehrere Bilder hinweg verwendet.
copy_paste_modestrflipsegment, semantic, obb-Gibt die zu verwendende Strategie copy-paste an. Zur Auswahl stehen '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 erweiterte Datenaugmentierung (nur Python-API). Akzeptiert eine Liste von Transformationsobjekten für spezielle Anforderungen an die Augmentierung.

Diese Einstellungen lassen sich an die jeweiligen Anforderungen des Datensatzes und der Aufgabe anpassen. Durch Ausprobieren verschiedener Werte findest du möglicherweise die optimale Strategie zur Datenerweiterung, mit der sich die beste Modellleistung erzielen lässt.

Information

Weitere Informationen zu den Datenerweiterungsoperationen beim Training findest du im Referenzabschnitt.

Protokollierung#

Trainingsmetriken, Diagramme und Checkpoints werden immer im Verzeichnis des Trainingslaufs gespeichert. Ultralytics überträgt sie außerdem an alle installierten und aktivierten Tools zur Experimentverfolgung: Comet, ClearML, TensorBoard, MLflow, Weights & Biases und DVCLive. Jeder Protokollierer wird über die Ultralytics-Einstellungen aktiviert oder deaktiviert, zum Beispiel mit yolo settings tensorboard=True. Die drei häufigsten Konfigurationen werden im Folgenden vorgestellt.

Comet#

Comet ist eine Plattform, auf der Datenwissenschaftler und Entwickler Experimente und Modelle verfolgen, vergleichen, erklären und optimieren können. Sie bietet Funktionen wie Metriken in Echtzeit, Codevergleiche und die Nachverfolgung von Hyperparametern.

So verwendest du Comet:

Beispiel
# pip install comet_ml
import comet_ml

comet_ml.login()

Melde dich auf der Website bei deinem Comet-Konto an und rufe deinen API-Schlüssel ab. Du musst ihn zu deinen Umgebungsvariablen oder deinem Skript hinzufügen, damit deine Experimente protokolliert werden.

ClearML#

ClearML ist eine Open-Source-Plattform, die die Nachverfolgung von Experimenten automatisiert und die effiziente gemeinsame Nutzung von Ressourcen unterstützt. Sie soll Teams dabei helfen, ihre ML-Arbeit effizienter zu verwalten, auszuführen und zu reproduzieren.

So verwendest du ClearML:

Beispiel
# pip install clearml
import clearml

clearml.browser_login()

Nachdem du dieses Skript ausgeführt hast, musst du dich im Browser bei deinem ClearML-Konto anmelden und deine Sitzung authentifizieren.

TensorBoard#

TensorBoard ist ein Visualisierungswerkzeug für TensorFlow. Damit kannst du deinen TensorFlow-Graphen visualisieren, quantitative Metriken zur Ausführung des Graphen darstellen und zusätzliche Daten wie die hindurchgeleiteten Bilder anzeigen.

So verwendest du TensorBoard in Google Colab:

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

Um TensorBoard lokal zu verwenden, führe den folgenden Befehl aus und rufe die Ergebnisse unter localhost:6006 auf.

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 Protokollierer eingerichtet hast, kannst du mit dem Modelltraining beginnen. Alle Trainingsmetriken werden automatisch auf der ausgewählten Plattform protokolliert. Du kannst die Protokolle abrufen, um die Leistung deines Modells im Zeitverlauf zu überwachen, verschiedene Modelle zu vergleichen und Verbesserungsmöglichkeiten zu erkennen.

Wie geht es weiter?#

Überprüfe dein trainiertes Modell anhand zurückgehaltener Daten, um seine Genauigkeit unter realen Bedingungen zu beurteilen, und exportiere es anschließend nach ONNX, TensorRT oder in ein anderes Format für die Bereitstellung. Trainierst du mit eigenen Daten statt mit COCO8? Formatiere sie zuerst mithilfe des Leitfadens zu Datensätzen.

Häufig gestellte Fragen#

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

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

    Beispiel für Training mit einer GPU und mit CPU
    from ultralytics import YOLO
    
    # Ein Modell laden
    model = YOLO("yolo26n.pt")  # ein vortrainiertes Modell laden (für das Training empfohlen)
    
    # Das Modell trainieren
    results = model.train(data="coco8.yaml", epochs=100, imgsz=640)

    Weitere Informationen findest du im Abschnitt Trainingseinstellungen.

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

    • Automatischer Datensatz-Download: Lädt standardisierte Datensätze wie COCO, VOC und ImageNet automatisch herunter.
    • Unterstützung mehrerer GPUs: Verteile das Training auf mehrere GPUs, um die Verarbeitung zu beschleunigen.
    • Konfiguration von Hyperparametern: Passe Hyperparameter über YAML-Dateien oder CLI-Argumente an.
    • Visualisierung und Überwachung: Verfolge Trainingsmetriken in Echtzeit und gewinne so bessere Einblicke.

    Diese Funktionen machen das Training effizient und an deine Anforderungen anpassbar. Weitere Informationen findest du im Abschnitt Wichtige Funktionen des Trainingsmodus.

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

    Beispiel zum Fortsetzen des Trainings
    from ultralytics import YOLO
    
    # Modell mit teilweise abgeschlossenem Training laden
    model = YOLO("path/to/last.pt")
    
    # Training fortsetzen
    results = model.train(resume=True)

    Weitere Informationen findest du im Abschnitt Unterbrochene Trainingsläufe fortsetzen.

  • Eine Klassenungleichverteilung liegt vor, wenn einige Klassen in deinen Trainingsdaten deutlich weniger Beispiele enthalten als andere. Dadurch kann das Modell seltene Klassen schlechter erkennen. Ultralytics YOLO unterstützt die Gewichtung von Klassen über das Argument cls_pw, um dieses Problem anzugehen.

    Das Argument cls_pw steuert die Stärke der Klassengewichtung anhand der inversen Klassenhäufigkeit:

    • cls_pw=0.0 (Standard): Deaktiviert die Klassengewichtung
    • cls_pw=1.0: Wendet die vollständige Gewichtung anhand der inversen Häufigkeit an
    • Werte zwischen 0.0 und 1.0: Ermöglichen eine teilweise Gewichtung bei mäßiger Ungleichverteilung

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

    Training mit unausgewogenem Datensatz
    from ultralytics import YOLO
    
    # Vortrainiertes Modell laden
    model = YOLO("yolo26n.pt")
    
    # Bei stark unausgewogenen Daten mit vollständiger Klassengewichtung trainieren
    results = model.train(data="custom.yaml", epochs=100, imgsz=640, cls_pw=1.0)
    
    # Oder bei mäßiger Ungleichverteilung teilweise gewichten (0.25)
    results = model.train(data="custom.yaml", epochs=100, imgsz=640, cls_pw=0.25)
    Tipp

    Beginne bei mäßig unausgewogenen Datensätzen mit cls_pw=0.25 und erhöhe den Wert auf 1.0, wenn die seltenen Klassen weiterhin schlechter abschneiden. In den Trainingsprotokollen kannst du die berechneten Klassengewichte überprüfen und so die Gewichtsverteilung kontrollieren.

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

    Beispiel für MPS-Training
    from ultralytics import YOLO
    
    # Vortrainiertes Modell laden
    model = YOLO("yolo26n.pt")
    
    # Modell auf einem Apple-Chip mit Apple Silicon trainieren (M1/M2/M3/M4)
    results = model.train(data="coco8.yaml", epochs=100, imgsz=640, device="mps")

    Weitere Informationen findest du im Abschnitt Training mit Apple Silicon und MPS.

  • Mit Ultralytics YOLO26 kannst du über Argumente verschiedene Trainingseinstellungen wie Stapelgröße, Lernrate, Epochen und mehr konfigurieren. Hier ein kurzer Überblick:

    ArgumentStandardBeschreibung
    modelNonePfad zur Modelldatei für das Training.
    dataNonePfad zur YAML-Datei des Datensatzes (z. B. coco8.yaml) oder bei der Klassifizierung zu einem Datensatzverzeichnis oder -namen (z. B. imagenet10).
    epochs100Gesamtzahl der Trainingsepochen.
    batch16Stapelgröße, die als Ganzzahl oder im automatischen Modus festgelegt werden kann.
    imgsz640Zielbildgröße für das Training.
    deviceNoneRechengerät(e) für das Training, zum Beispiel cpu, 0, 0,1 oder mps.
    saveTrueAktiviert das Speichern von Trainings-Checkpoints und den endgültigen Modellgewichten.

    Eine ausführliche Anleitung zu den Trainingseinstellungen findest du im Abschnitt Trainingseinstellungen.

Kommentare