Modelltraining mit Ultralytics YOLO
Einführung
Das Training eines Deep Learning-Modells besteht darin, ihm Daten zuzuführen und seine Parameter anzupassen, damit es präzise Vorhersagen treffen kann. Der Train-Modus in Ultralytics YOLO26 ist für ein effektives und effizientes Training von Objekterkennungsmodellen ausgelegt und nutzt die modernen Hardwarekapazitäten voll aus. Dieser Leitfaden behandelt alle Details, die du benötigst, um mit dem Training deiner eigenen Modelle unter Verwendung der robusten Funktionen von YOLO26 zu beginnen.
Watch: How to Train a YOLO model on Your Custom Dataset in Google Colab.
Warum Ultralytics YOLO für das Training wählen?
Hier sind einige überzeugende Gründe, sich für den Train-Modus von YOLO26 zu entscheiden:
- Effizienz: Hol das Beste aus deiner Hardware heraus, egal ob du ein Single-GPU-Setup verwendest oder über mehrere GPUs skalierst.
- Vielseitigkeit: Trainiere auf benutzerdefinierten Datensätzen sowie auf leicht verfügbaren wie COCO, VOC und ImageNet.
- Benutzerfreundlichkeit: Einfache und dennoch leistungsstarke CLI- und Python-Schnittstellen für ein unkompliziertes Trainingserlebnis.
- Flexibilität bei Hyperparametern: Eine breite Palette an anpassbaren Hyperparametern zur Feinabstimmung der Modellleistung. Für eine tiefergehende Kontrolle kannst du den Trainer selbst anpassen.
- Cloud-Training: Trainiere auf Cloud-GPUs über die Ultralytics Platform mit Metriken in Echtzeit und automatischem Checkpointing.
Hauptfunktionen des Train-Modus
Im Folgenden sind einige bemerkenswerte Funktionen des Train-Modus von YOLO26 aufgeführt:
- Automatischer Datensatz-Download: Standard-Datensätze wie COCO, VOC und ImageNet werden bei der ersten Verwendung automatisch heruntergeladen.
- Multi-GPU-Unterstützung: Skaliere deine Trainingsbemühungen nahtlos über mehrere GPUs, um den Prozess zu beschleunigen.
- Hyperparameter-Konfiguration: Die Option, Hyperparameter über YAML-Konfigurationsdateien oder CLI-Argumente zu ändern.
- Visualisierung und Überwachung: Echtzeit-Verfolgung der Trainingsmetriken und Visualisierung des Lernprozesses für bessere Erkenntnisse.
- YOLO26-Datensätze wie COCO, VOC, ImageNet und viele andere werden bei der ersten Verwendung automatisch heruntergeladen, z. B.
yolo train data=coco.yaml
Anwendungsbeispiele
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 bei Verfügbarkeit die GPU device=0 verwendet; andernfalls wird device='cpu' verwendet. Siehe den Abschnitt „Argumente“ weiter unten für eine vollständige Liste der Trainingsargumente.
Unter Windows kann ein RuntimeError auftreten, wenn das Training als Skript gestartet wird. Füge einen if __name__ == "__main__":-Block vor deinem Trainingscode hinzu, um dies zu beheben.
Das Gerät wird automatisch bestimmt. Wenn eine GPU verfügbar ist, wird sie verwendet (Standard-CUDA-Gerät 0); andernfalls startet 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
Multi-GPU-Training ermöglicht eine effizientere Nutzung der verfügbaren Hardwareressourcen durch Verteilung der Trainingslast auf mehrere GPUs. 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.
Um mit 2 GPUs zu trainieren, verwenden die CUDA-Geräte 0 und 1 die folgenden Befehle. Erweitere dies bei 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])Wenn du mehrere Geräte angibst (z. B. device=[0, 1]), startet Ultralytics intern eine neue Trainer-Instanz und führt torch.distributed.run im Hintergrund aus. Dies funktioniert nahtlos bei der Standard-CLI-Verwendung und unveränderten Python-Skripten.
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.pyTraining auf im Leerlauf befindlicher GPU
Das Training auf einer im Leerlauf befindlichen GPU ermöglicht die automatische Auswahl der am wenigsten ausgelasteten GPUs in Multi-GPU-Systemen, wodurch die Ressourcennutzung optimiert wird, ohne dass eine manuelle GPU-Auswahl erforderlich ist. Diese Funktion identifiziert verfügbare GPUs anhand von Auslastungsmetriken und VRAM-Verfügbarkeit.
Um automatisch die am wenigsten ausgelastete(n) GPU(s) für das Training auszuwählen und zu verwenden, verwende den Geräteparameter -1. Dies ist besonders nützlich in gemeinsam genutzten Rechenumgebungen 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:
- Niedrigeren aktuellen Auslastungsprozentsätzen
- Höherem verfügbaren Speicher (freier VRAM)
- Niedrigerer Temperatur und geringerem Stromverbrauch
Diese Funktion ist besonders wertvoll in gemeinsam genutzten Rechenumgebungen oder wenn mehrere Trainingsjobs für verschiedene Modelle ausgeführt werden. Sie passt sich automatisch an sich ändernde Systembedingungen an und stellt eine optimale Ressourcenzuweisung ohne manuelles Eingreifen sicher.
Apple Silicon MPS-Training
Mit der Unterstützung für Apple Silicon-Chips, die in die Ultralytics YOLO-Modelle integriert ist, ist es nun möglich, deine Modelle auf Geräten zu trainieren, die das leistungsstarke Framework Metal Performance Shaders (MPS) nutzen. MPS bietet eine hochleistungsfähige Möglichkeit, Berechnungs- und Bildverarbeitungsaufgaben auf dem benutzerdefinierten Silizium von Apple auszuführen.
Um das Training auf Apple Silicon-Chips zu aktivieren, solltest du 'mps' als dein Gerät angeben, wenn du den Trainingsprozess einleitest. Unten findest du ein Beispiel, wie du dies in Python und über die Befehlszeile tun kannst:
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. Für detailliertere Anleitungen und erweiterte Konfigurationsoptionen lies bitte die PyTorch MPS-Dokumentation.
Wiederaufnahme unterbrochener Trainings
Die Wiederaufnahme des Trainings von einem zuvor gespeicherten Zustand ist eine entscheidende Funktion bei der Arbeit mit Deep Learning-Modellen. Dies kann in verschiedenen Szenarien nützlich sein, z. B. 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 wieder aufgenommen wird, lädt Ultralytics YOLO die Gewichte aus dem zuletzt gespeicherten Modell und stellt außerdem den Optimiererzustand, den Lernraten-Scheduler und die Epochennummer wieder her. Dadurch kannst du den Trainingsprozess nahtlos an der Stelle fortsetzen, an der er unterbrochen wurde.
Du kannst das Training in Ultralytics YOLO einfach wieder aufnehmen, indem du das Argument resume auf True setzt, wenn du die train-Methode aufrufst, und den Pfad zu der .pt-Datei angibst, die die teilweise trainierten Modellgewichte enthält.
Unten findest du ein Beispiel für die Wiederaufnahme eines unterbrochenen Trainings mit Python und über die Befehlszeile:
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 train-Funktion das Training dort fort, wo es aufgehört hat, unter Verwendung des im 'path/to/last.pt'-Dateiformats gespeicherten Zustands. Wenn das Argument resume weggelassen oder auf False gesetzt wird, startet die train-Funktion eine neue Trainingseinheit.
Denk daran, dass Checkpoints standardmäßig am Ende jeder Epoche oder in festen Intervallen mithilfe des Arguments save_period gespeichert werden. Du musst also mindestens 1 Epoche abschließen, um einen Trainingslauf 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, Impuls und Gewichtungsabfall. Zusätzlich können die Wahl des Optimierers, der Verlustfunktion und die Zusammensetzung des Trainingsdatensatzes den Trainingsprozess beeinflussen. Eine sorgfältige Abstimmung und das Experimentieren mit diesen Einstellungen sind für die Leistungsoptimierung entscheidend.
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 Parameter mit param.ndim >= 2 (wie Faltungsgewichte) erhalten das Update im Muon-Stil zusammen mit SGD, während niedrigdimensionale Parameter wie Batch-Normalisierungsschichten und Bias-Begriffe beim Standard-SGD verbleiben.
Wenn optimizer=auto verwendet wird, wählt Ultralytics automatisch MuSGD für längere Trainingsläufe (typischerweise, wenn Iterationen > 10000). Bei kürzeren Läufen greift der Trainer auf AdamW zurück.
Anwendungsbeispiel:
yolo train model=yolo26n.pt data=coco8.yaml optimizer=MuSGDSiehe die Implementierung in ultralytics/optim/muon.py und die Logik zur automatischen Auswahl des Optimierers in BaseTrainer.build_optimizer.
| Argument | Typ | Standard | Beschreibung |
|---|---|---|---|
model | str | None | Gibt die Modelldatei für das Training an. Akzeptiert einen Pfad zu einem vortrainierten .pt Modell oder einer .yaml Konfigurationsdatei. Essenziell für die Definition der Modellstruktur oder Initialisierung der Gewichte. |
data | str | None | Pfad zur Datensatz-Konfigurationsdatei (z.B. coco8.yaml). Diese Datei enthält datensatzspezifische Parameter, einschließlich Pfaden zu Trainings- und Validierungsdaten, Klassennamen und Anzahl der Klassen. |
epochs | int | 100 | Gesamtzahl der Trainingsepochen. Jede Epoche repräsentiert einen vollständigen Durchlauf über den gesamten Datensatz. Die Anpassung dieses Wertes kann die Trainingsdauer und die Modellleistung beeinflussen. |
time | float | None | Maximale Trainingszeit in Stunden. Falls festgelegt, überschreibt dies das epochs-Argument, wodurch das Training automatisch nach der angegebenen Dauer gestoppt wird. Nützlich für zeitlich begrenzte Trainingsszenarien. |
patience | int | 100 | Anzahl der Epochen, die ohne Verbesserung der Validierungsmetriken gewartet wird, bevor das Training frühzeitig abgebrochen wird. Hilft, Overfitting zu vermeiden, indem das Training gestoppt wird, wenn die Leistung stagniert. |
batch | int oder float | 16 | Batchgröße mit drei Modi: als Ganzzahl festgelegt (z.B. batch=16), Auto-Modus für 60% GPU-Speicherauslastung (batch=-1) oder Auto-Modus mit angegebenem Auslastungsanteil (batch=0.70). |
imgsz | int | 640 | Zielbildgröße für das Training. Bilder werden auf Quadrate mit Seiten in der angegebenen Größe skaliert (wenn rect=False), wobei das Seitenverhältnis für YOLO Modelle beibehalten wird, nicht jedoch für RT-DETR. Beeinflusst die Modell-Genauigkeit und die rechnerische Komplexität. |
save | bool | True | Ermöglicht das Speichern von Trainings-Checkpoints und endgültigen Modellgewichten. Nützlich zum Fortsetzen des Trainings oder zur Modellbereitstellung. |
save_period | int | -1 | Häufigkeit des Speicherns von Modell-Checkpoints, angegeben in Epochen. Ein Wert von -1 deaktiviert diese Funktion. Nützlich zum Speichern von Zwischenmodellen während langer Trainingssitzungen. |
cache | bool | False | Aktiviert das Caching von Datensatzbildern im Arbeitsspeicher (True/ram), auf der Festplatte (disk) oder deaktiviert es (False). Verbessert die Trainingsgeschwindigkeit durch Reduzierung der Festplatten-I/O auf Kosten einer erhöhten Speicherauslastung. |
device | int oder str oder list | None | Gibt das/die Rechengerät(e) 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 oder device=npu:0) oder die automatische Auswahl der am wenigsten ausgelasteten GPU (device=-1) bzw. mehrerer inaktiver GPUs (device=[-1,-1]). |
workers | int | 8 | Anzahl der Worker-Threads für das Laden von Daten (pro RANK bei Multi-GPU-Training). Beeinflusst die Geschwindigkeit der Datenvorverarbeitung und die Einspeisung in das Modell, besonders nützlich bei Multi-GPU-Setups. |
project | str | None | Name des Projektverzeichnisses, in dem Trainingsausgaben gespeichert werden. Ermöglicht eine organisierte Speicherung verschiedener Experimente. |
name | str | None | Name des Trainingsdurchlaufs. Wird zur Erstellung eines Unterverzeichnisses innerhalb des Projektordners verwendet, in dem Trainingsprotokolle und -ausgaben gespeichert werden. |
exist_ok | bool | False | Wenn True, erlaubt es das Überschreiben eines existierenden Projekt-/Namensverzeichnisses. Nützlich für iterative Experimente, ohne vorherige Ausgaben manuell löschen zu müssen. |
pretrained | bool oder str | True | Bestimmt, ob das Training mit vortrainierten Gewichten gestartet werden soll. Kann ein boolescher Wert oder ein String-Pfad zu den zu ladenden Gewichten sein. pretrained=False trainiert mit zufällig initialisierten Gewichten bei Beibehaltung der Modellarchitektur. |
optimizer | str | 'auto' | Wahl des Optimierers für das Training. Optionen umfassen SGD, MuSGD, Adam, Adamax, AdamW, NAdam, RAdam, RMSProp oder auto für eine automatische Auswahl basierend auf der Modellkonfiguration. Beeinflusst Konvergenzgeschwindigkeit und Stabilität. |
seed | int | 0 | Setzt den Zufallsstartwert für das Training und stellt die Reproduzierbarkeit der Ergebnisse über verschiedene Durchläufe mit denselben Konfigurationen sicher. |
deterministic | bool | True | Erzwingt die Verwendung deterministischer Algorithmen, was die Reproduzierbarkeit sicherstellt, jedoch die Leistung und Geschwindigkeit aufgrund der Einschränkung auf nicht-deterministische Algorithmen beeinträchtigen kann. |
verbose | bool | True | Aktiviert die ausführliche Ausgabe während des Trainings und zeigt Fortschrittsbalken, epochenbasierte Metriken und zusätzliche Trainingsinformationen in der Konsole an. |
single_cls | bool | False | Behandelt alle Klassen in Datensätzen mit mehreren Klassen als eine einzige Klasse während des Trainings. Nützlich für binäre Klassifizierungsaufgaben oder wenn der Fokus eher auf der Objektpräsenz als auf der Klassifizierung liegt. |
classes | list[int] | None | Gibt eine Liste von Klassen-IDs an, auf denen trainiert werden soll. Nützlich, um bestimmte Klassen herauszufiltern und sich nur auf diese während des Trainings zu konzentrieren. |
rect | bool | False | Aktiviert die Strategie der minimalen Auffüllung—Bilder in einem Batch werden minimal aufgefüllt, um eine gemeinsame Größe zu erreichen, wobei die längste Seite imgsz entspricht. Kann Effizienz und Geschwindigkeit verbessern, kann aber die Genauigkeit des Modells beeinflussen. |
multi_scale | float | 0.0 | Variiert imgsz zufällig für jeden Batch um +/- multi_scale (z.B. 0.25 -> 0.75x bis 1.25x), abgerundet auf ein Vielfaches der Modell-Stride; 0.0 deaktiviert das Multi-Scale-Training. |
cos_lr | bool | False | Verwendet einen Kosinus-Lernratenplaner, der die Lernrate über die Epochen hinweg gemäß einer Kosinuskurve anpasst. Hilft bei der Verwaltung der Lernrate für eine bessere Konvergenz. |
close_mosaic | int | 10 | Deaktiviert Data Augmentation in den letzten N Epochen, um das Training vor dem Abschluss zu stabilisieren. Wenn du diesen Wert auf 0 setzt, wird diese Funktion deaktiviert. |
resume | bool | False | Setzt das Training vom zuletzt gespeicherten Checkpoint fort. Lädt automatisch Modellgewichte, Optimierer-Status und Epochenanzahl, um das Training nahtlos fortzusetzen. |
amp | bool | True | Aktiviert das Training mit automatischer Mixed Precision (AMP), was den Speicherverbrauch reduziert und das Training bei minimalem Einfluss auf die Genauigkeit möglicherweise beschleunigt. |
fraction | float | 1.0 | Gibt den Teil des Datensatzes an, der für das Training verwendet werden soll. Ermöglicht das Training auf einer Teilmenge des vollständigen Datensatzes, was für Experimente oder bei begrenzten Ressourcen nützlich ist. |
profile | bool | False | Aktiviert die Profilierung von ONNX- und TensorRT-Geschwindigkeiten während des Trainings, nützlich für die Optimierung der Modellbereitstellung. |
freeze | int oder list | None | Friert die ersten N Schichten des Modells oder spezifische Schichten nach Index ein, wodurch die Anzahl der trainierbaren Parameter reduziert wird. Nützlich für Fine-Tuning oder Transfer Learning. |
lr0 | float | 0.01 | Anfängliche Lernrate (z. B. SGD=1E-2, Adam=1E-3). Die Anpassung dieses Wertes ist entscheidend für den Optimierungsprozess, da sie beeinflusst, wie schnell die Modellgewichte aktualisiert werden. |
lrf | float | 0.01 | Finale Lernrate als Bruchteil der anfänglichen Rate = (lr0 * lrf), die in Verbindung mit Schedulern verwendet wird, um die Lernrate im Laufe der Zeit anzupassen. |
momentum | float | 0.937 | Momentum-Faktor für SGD oder beta1 für Adam-Optimierer, was die Einbeziehung vergangener Gradienten in das aktuelle Update beeinflusst. |
weight_decay | float | 0.0005 | L2-Regularisierung-Term, der große Gewichte bestraft, um Overfitting zu verhindern. |
warmup_epochs | float | 3.0 | Anzahl der Epochen für das Warmup der Lernrate, wodurch die Lernrate schrittweise von einem niedrigen Wert auf die anfängliche Lernrate erhöht wird, um das Training frühzeitig zu stabilisieren. |
warmup_momentum | float | 0.8 | Anfängliches Momentum für die Warmup-Phase, das sich über den Warmup-Zeitraum hinweg schrittweise an das eingestellte Momentum anpasst. |
warmup_bias_lr | float | 0.1 | Lernrate für Bias-Parameter während der Warmup-Phase, die hilft, das Modelltraining in den anfänglichen Epochen zu stabilisieren. |
box | float | 7.5 | Gewichtung der Box-Verlustkomponente in der Loss Function, die beeinflusst, wie viel Gewicht auf die genaue Vorhersage der Bounding Box-Koordinaten gelegt wird. |
cls | float | 0.5 | Gewichtung des Klassifizierungsverlusts in der gesamten Verlustfunktion, was die Bedeutung der korrekten Klassenvorhersage im Verhältnis zu anderen Komponenten beeinflusst. |
cls_pw | float | 0.0 | Potenz für die Klassengewichtung, um das Klassenungleichgewicht mithilfe der inversen Klassenhäufigkeit zu bewältigen. 0.0 deaktiviert die Klassengewichtung, 1.0 wendet die volle inverse Häufigkeitsgewichtung an. Werte zwischen 0 und 1 bieten eine teilweise Gewichtung. |
dfl | float | 1.5 | Gewichtung des Distribution Focal Loss, der in bestimmten YOLO-Versionen für die fein abgestufte Klassifizierung verwendet wird. |
pose | float | 12.0 | Gewichtung des Pose-Verlusts bei Modellen, die für die Pose-Schätzung trainiert wurden, was den Schwerpunkt auf die genaue Vorhersage von Pose-Keypoints beeinflusst. |
kobj | float | 1.0 | Gewichtung des Keypoint-Objectness-Verlusts in Pose-Schätzungsmodellen, um Detektionsvertrauen mit Pose-Genauigkeit in Einklang zu bringen. |
rle | float | 1.0 | Gewichtung des residualen Log-Likelihood-Schätzungsverlusts in Pose-Schätzungsmodellen, was die Präzision der Keypoint-Lokalisierung beeinflusst. |
angle | float | 1.0 | Gewichtung des Winkelverlusts in OBB-Modellen, was die Präzision von orientierten Bounding-Box-Winkelvorhersagen beeinflusst. |
nbs | int | 64 | Nominale Batch-Größe für die Normalisierung des Verlusts. |
overlap_mask | bool | True | Bestimmt, ob Objektmasken für das Training zu einer einzigen Maske zusammengeführt werden sollen oder für jedes Objekt separat bleiben. Bei Überlappungen wird beim Zusammenführen die kleinere Maske über die größere gelegt. |
mask_ratio | int | 4 | Downsample-Verhältnis für Segmentierungsmasken, das die Auflösung der während des Trainings verwendeten Masken beeinflusst. |
dropout | float | 0.0 | Dropout-Rate für die Regularisierung bei Klassifizierungsaufgaben, um Overfitting durch zufälliges Weglassen von Einheiten während des Trainings zu verhindern. |
val | bool | True | Aktiviert die Validierung während des Trainings, um eine regelmäßige Bewertung der Modellleistung auf einem separaten Datensatz zu ermöglichen. |
plots | bool | True | Erstellt und speichert Plots von Trainings- und Validierungsmetriken sowie Vorhersagebeispiele, um visuelle Einblicke in die Modellleistung und den Lernfortschritt zu bieten. |
compile | bool oder str | False | Aktiviert die PyTorch 2.x torch.compile Graphenkompilierung mit backend='inductor'. Akzeptiert True → "default", False → deaktiviert, oder einen String-Modus wie "default", "reduce-overhead", "max-autotune-no-cudagraphs". Greift bei Nichtunterstützung mit einer Warnung auf den Eager-Modus zurück. |
max_det | int | 300 | Gibt die maximale Anzahl an Objekten an, die während der Validierungsphase des Trainings beibehalten werden. |
Das batch-Argument kann auf drei Arten konfiguriert werden:
- Feste Batch-Größe: Lege einen Ganzzahlwert fest (z. B.
batch=16), der die Anzahl der Bilder pro Batch direkt angibt. - Auto-Modus (60 % GPU-Speicher): Verwende
batch=-1, um die Batch-Größe automatisch für eine CUDA-Speicherauslastung von ca. 60 % anzupassen. - Auto-Modus mit Auslastungsanteil: Lege einen Bruchteilwert fest (z. B.
batch=0.70), um die Batch-Größe basierend auf dem angegebenen Bruchteil der GPU-Speicherauslastung anzupassen. - OOM Auto-Wiederholung: Wenn während der ersten Epoche ein CUDA Out-of-Memory-Fehler auftritt, halbiert der Trainer automatisch die Batch-Größe und versucht es erneut (bis zu 3 Mal). Dies gilt nur für das Single-GPU-Training; das Multi-GPU-Training (DDP) löst den Fehler sofort aus.
Augmentierungseinstellungen und Hyperparameter
Augmentierungstechniken sind wesentlich für die Verbesserung der Robustheit und Leistung von YOLO-Modellen, indem sie Variabilität in die Trainingsdaten einbringen und dem Modell helfen, besser auf unbekannte Daten zu generalisieren. Die folgende Tabelle erläutert den Zweck und die Auswirkung jedes Augmentierungsarguments:
| Argument | Typ | Standard | Unterstützte Aufgaben | Bereich | Beschreibung |
|---|---|---|---|---|---|
hsv_h | float | 0.015 | detect, segment, pose, obb, classify | 0.0 - 1.0 | Passt den Farbton des Bildes um einen Bruchteil des Farbkreises an und führt Farbvariabilität ein. Hilft dem Modell, unter verschiedenen Lichtverhältnissen zu generalisieren. |
hsv_s | float | 0.7 | detect, segment, pose, obb, classify | 0.0 - 1.0 | Ändert die Sättigung des Bildes um einen Bruchteil, was die Intensität der Farben beeinflusst. Nützlich zur Simulation verschiedener Umgebungsbedingungen. |
hsv_v | float | 0.4 | detect, segment, pose, obb, classify | 0.0 - 1.0 | Ändert den Wert (Helligkeit) des Bildes um einen Bruchteil und hilft dem Modell, unter verschiedenen Lichtverhältnissen gut zu funktionieren. |
degrees | float | 0 | detect, segment, pose, obb | 0.0 - 180 | Dreht das Bild zufällig innerhalb des angegebenen Gradbereichs, was die Fähigkeit des Modells verbessert, Objekte in verschiedenen Ausrichtungen zu erkennen. |
translate | float | 0.1 | detect, segment, pose, obb | 0.0 - 1.0 | Verschiebt das Bild horizontal und vertikal um einen Bruchteil der Bildgröße, was beim Erlernen der Erkennung teilweise sichtbarer Objekte hilft. |
scale | float | 0.5 | detect, segment, pose, obb, classify | 0 - 1 | Skaliert das Bild um einen Verstärkungsfaktor, was Objekte in unterschiedlichen Entfernungen von der Kamera simuliert. |
shear | float | 0 | detect, segment, pose, obb | -180 - +180 | Scherung des Bildes um einen bestimmten Grad, was den Effekt nachahmt, dass Objekte aus verschiedenen Winkeln betrachtet werden. |
perspective | float | 0 | detect, segment, pose, obb | 0.0 - 0.001 | Wendet eine zufällige Perspektivtransformation auf das Bild an, was die Fähigkeit des Modells verbessert, Objekte im 3D-Raum zu verstehen. |
flipud | float | 0 | detect, segment, pose, obb, classify | 0.0 - 1.0 | Spiegelt das Bild mit der angegebenen Wahrscheinlichkeit vertikal und erhöht die Datenvariabilität, ohne die Merkmale des Objekts zu beeinträchtigen. |
fliplr | float | 0.5 | detect, segment, pose, obb, classify | 0.0 - 1.0 | Spiegelt das Bild mit der angegebenen Wahrscheinlichkeit horizontal, was nützlich ist, um symmetrische Objekte zu lernen und die Diversität des Datensatzes zu erhöhen. |
bgr | float | 0 | detect, segment, pose, obb | 0.0 - 1.0 | Tauscht die Bildkanäle von RGB auf BGR mit der angegebenen Wahrscheinlichkeit, was nützlich ist, um die Robustheit gegenüber falscher Kanalreihenfolge zu erhöhen. |
mosaic | float | 1 | detect, segment, pose, obb | 0.0 - 1.0 | Kombiniert vier Trainingsbilder zu einem, um verschiedene Szenenzusammensetzungen und Objektinteraktionen zu simulieren. Äußerst effektiv für das Verständnis komplexer Szenen. |
mixup | float | 0 | detect, segment, pose, obb | 0.0 - 1.0 | Vermischt zwei Bilder und ihre Beschriftungen, um ein zusammengesetztes Bild zu erstellen. Verbessert die Fähigkeit des Modells zur Verallgemeinerung durch die Einführung von Label-Rauschen und visueller Variabilität. |
cutmix | float | 0 | detect, segment, pose, obb | 0.0 - 1.0 | Kombiniert Teile zweier Bilder und erzeugt so eine teilweise Mischung, wobei unterschiedliche Bereiche erhalten bleiben. Erhöht die Robustheit des Modells durch die Schaffung von Verdeckungsszenarien. |
copy_paste | float | 0 | segment | 0.0 - 1.0 | Kopiert und fügt Objekte über Bilder hinweg ein, um die Anzahl der Objektinstanzen zu erhöhen. |
copy_paste_mode | str | flip | segment | - | Specifies the copy-paste strategy to use. Options include 'flip' and 'mixup'. |
auto_augment | str | randaugment | classify | - | Wendet eine vordefinierte Augmentierungsrichtlinie ('randaugment', 'autoaugment' oder 'augmix') an, um die Modellleistung durch visuelle Vielfalt zu verbessern. |
erasing | float | 0.4 | classify | 0.0 - 1.0 | Löscht während des Trainings zufällig Bereiche des Bildes, um das Modell dazu anzuregen, sich auf weniger offensichtliche Merkmale zu konzentrieren. |
augmentations | list | `` | detect, segment, pose, obb | - | Benutzerdefinierte Albumentations-Transformationen für fortgeschrittene Datenaugmentation (nur Python API). Akzeptiert eine Liste von Transformations-Objekten für spezialisierte Augmentierungsanforderungen. |
Diese Einstellungen können angepasst werden, um die spezifischen Anforderungen des Datensatzes und der jeweiligen Aufgabe zu erfüllen. Das Experimentieren mit verschiedenen Werten kann dabei helfen, die optimale Augmentierungsstrategie zu finden, die zur besten Modellleistung führt.
Weitere Informationen zu Trainings-Augmentierungsoperationen findest du im Referenzabschnitt.
Protokollierung
Beim Training eines YOLO26-Modells könnte es wertvoll für dich sein, die Leistung des Modells im Laufe der Zeit zu verfolgen. Hier kommt die Protokollierung ins Spiel. Ultralytics YOLO bietet Unterstützung für drei Arten von Loggern - Comet, ClearML und TensorBoard.
Um einen Logger zu verwenden, wähle ihn im Dropdown-Menü im obigen Code-Schnipsel aus und führe ihn aus. Der gewählte Logger wird installiert und initialisiert.
Comet
Comet ist eine Plattform, die es Datenwissenschaftlern und Entwicklern ermöglicht, Experimente und Modelle zu verfolgen, zu vergleichen, zu erklären und zu optimieren. Sie bietet Funktionen wie Metriken in Echtzeit, Code-Diffs und die Verfolgung von Hyperparametern.
So verwendest du Comet:
# pip install comet_ml
import comet_ml
comet_ml.init()Denke daran, dich auf der Website von Comet in deinem Konto anzumelden und deinen API-Schlüssel zu erhalten. Du musst diesen zu deinen Umgebungsvariablen oder deinem Skript hinzufügen, um deine Experimente zu protokollieren.
ClearML
ClearML ist eine Open-Source-Plattform, die das Nachverfolgen von Experimenten automatisiert und bei der effizienten Nutzung 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:
# pip install clearml
import clearml
clearml.browser_login()Nachdem du dieses Skript ausgeführt hast, musst du dich im Browser in 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, die durch ihn geleitet werden, anzuzeigen.
So verwendest du TensorBoard in Google Colab:
load_ext tensorboard
tensorboard --logdir ultralytics/runs # replace with 'runs' directoryUm TensorBoard lokal zu verwenden, führe den unten stehenden Befehl aus und zeige die Ergebnisse unter localhost:6006 an.
tensorboard --logdir ultralytics/runs # replace with 'runs' directoryDies lädt TensorBoard und leitet es in das Verzeichnis, 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 der von dir 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 für Verbesserungen zu identifizieren.
FAQ
Kann ich ohne lokale GPU trainieren?
Ja. Die Ultralytics Platform unterstützt Cloud-Training mit kostenlosen Guthaben für den Einstieg. Lade deinen Datensatz hoch, wähle ein Modell und eine GPU aus und trainiere direkt aus dem Browser heraus. Weitere Informationen findest du im Cloud-Trainingsleitfaden.
Wie trainiere ich ein Objekterkennungsmodell mit Ultralytics YOLO26?
Um ein Objekterkennungsmodell mit Ultralytics YOLO26 zu trainieren, kannst du entweder die Python API oder die CLI verwenden. Nachfolgend findest du ein Beispiel für beides:
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 Trainingseinstellungen.
Was sind die Hauptfunktionen des Train-Modus von Ultralytics YOLO26?
Die Hauptfunktionen des Train-Modus von Ultralytics YOLO26 umfassen:
- Automatischer Datensatz-Download: Lädt automatisch Standarddatensätze wie COCO, VOC und ImageNet 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 von Trainingsmetriken für bessere Einblicke.
Diese Funktionen machen das Training effizient und anpassbar an deine Bedürfnisse. Weitere Details findest du im Abschnitt Hauptfunktionen des Train-Modus.
Wie nehme ich das Training nach einer unterbrochenen Sitzung in Ultralytics YOLO26 wieder auf?
Um das Training nach einer unterbrochenen Sitzung wieder aufzunehmen, setze das Argument resume auf True und gib den Pfad zum zuletzt gespeicherten Checkpoint an.
from ultralytics import YOLO
# Load the partially trained model
model = YOLO("path/to/last.pt")
# Resume training
results = model.train(resume=True)Schau dir den Abschnitt über Wiederaufnahme unterbrochener Trainings für weitere Informationen an.
Wie trainiere ich ein Modell auf einem unausgewogenen Datensatz?
Klassenungleichgewicht tritt auf, wenn einige Klassen in deinen Trainingsdaten deutlich weniger Beispiele aufweisen als andere. Dies kann dazu führen, dass das Modell bei seltenen Klassen schlecht abschneidet. Ultralytics YOLO unterstützt die Klassengewichtung über das Argument cls_pw, um dieses Problem anzugehen.
Das Argument cls_pw steuert die Stärke der Klassengewichtung basierend auf der inversen Klassenhäufigkeit:
cls_pw=0.0(Standard): Deaktiviert die Klassengewichtungcls_pw=1.0: Wendet die volle inverse Häufigkeitsgewichtung an- Werte zwischen
0.0und1.0: Bieten eine teilweise Gewichtung bei moderatem Ungleichgewicht
Die Klassengewichte werden als (1.0 / class_counts) ^ cls_pw berechnet und so normalisiert, dass ihr Mittelwert 1.0 entspricht.
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)Beginne mit cls_pw=0.25 bei mäßig unausgewogenen Datensätzen und erhöhe den Wert auf 1.0, falls die seltenen Klassen immer noch eine unzureichende Leistung erbringen. Du kannst die berechneten Klassengewichte in den Trainingsprotokollen überprüfen, um die Gewichtsverteilung zu verifizieren.
Kann ich YOLO26-Modelle auf Apple-Silicon-Chips trainieren?
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.
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 Apple Silicon MPS Training.
Was sind die gängigen Trainingseinstellungen und wie konfiguriere ich sie?
Ultralytics YOLO26 ermöglicht es dir, eine Vielzahl von Trainingseinstellungen wie Batch-Größe, Lernrate, Epochen und mehr über Argumente zu konfigurieren. Hier ist ein kurzer Überblick:
| Argument | Standard | Beschreibung |
|---|---|---|
model | None | Pfad zur Modelldatei für das Training. |
data | None | Pfad zur Konfigurationsdatei des Datensatzes (z. B. coco8.yaml). |
epochs | 100 | Gesamtzahl der Trainingsepochen. |
batch | 16 | Batch-Größe, einstellbar als Ganzzahl oder im Auto-Modus. |
imgsz | 640 | Zielbildgröße für das Training. |
device | None | Rechengerät(e) für das Training wie cpu, 0, 0,1 oder mps. |
save | True | Aktiviert das Speichern von Trainings-Checkpoints und den finalen Modellgewichten. |
Für einen ausführlichen Leitfaden zu Trainingseinstellungen, siehe den Abschnitt Trainingseinstellungen.