Modelltraining mit Ultralytics YOLO
Einführung
Das Training eines Deep-Learning-Modells beinhaltet die Zufuhr von Daten und die Anpassung seiner Parameter, damit es präzise Vorhersagen treffen kann. Der Train-Modus in Ultralytics YOLO26 wurde für ein effektives und effizientes Training von Objekterkennungsmodellen entwickelt und nutzt die Möglichkeiten moderner Hardware voll aus. Dieser Leitfaden deckt alle Details ab, 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: Hole das Beste aus deiner Hardware heraus, egal ob du ein Single-GPU-Setup nutzt oder auf mehrere GPUs skalierst.
- Vielseitigkeit: Trainiere auf benutzerdefinierten Datensätzen zusätzlich zu 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 anpassbarer Hyperparameter 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 Echtzeitmetriken 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.
- Konfiguration der Hyperparameter: 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 Einblicke.
- YOLO26-Datensätze wie COCO, VOC, ImageNet und viele andere werden bei der ersten Verwendung automatisch heruntergeladen, d. h.
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 die GPU device=0 verwendet, falls verfügbar; andernfalls wird device='cpu' genutzt. Siehe den Abschnitt „Argumente“ unten für eine vollständige Liste der Trainingsargumente.
Unter Windows erhältst du möglicherweise einen RuntimeError, wenn du das Training als Skript startest. 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 diese 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, indem die Trainingslast auf mehrere GPUs verteilt wird. Diese Funktion ist sowohl über die Python-API als auch über das Command-Line-Interface verfügbar. Um das Multi-GPU-Training zu aktivieren, gib die IDs der GPU-Geräte 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 Standard-CLI-Nutzung und unveränderten Python-Skripten.
Wenn dein Skript jedoch benutzerdefinierte Komponenten enthält – wie einen benutzerdefinierten Trainer, Validator, Datensatz oder eine Augmentierungs-Pipeline –, 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.pyIdle GPU-Training
Idle GPU-Training ermöglicht die automatische Auswahl der am wenigsten ausgelasteten GPUs in Multi-GPU-Systemen und optimiert die Ressourcennutzung ohne manuelle GPU-Auswahl. Diese Funktion identifiziert verfügbare GPUs basierend auf Auslastungsmetriken und VRAM-Verfügbarkeit.
Um die am stärksten im Leerlauf befindliche(n) GPU(s) automatisch für das Training auszuwählen und zu verwenden, verwende den Geräteparameter -1. Dies ist besonders nützlich in gemeinsamen 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 geteilten Rechenumgebungen oder beim Ausführen mehrerer Trainingsjobs für verschiedene Modelle. Sie passt sich automatisch an sich ändernde Systembedingungen an und stellt eine optimale Ressourcenzuweisung ohne manuelles Eingreifen sicher.
Apple Silicon MPS-Training
Mit der in 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 Framework Metal Performance Shaders (MPS) nutzen. MPS bietet eine hochperformante Möglichkeit zur Ausführung von Rechen- und Bildverarbeitungsaufgaben auf dem eigenen Silizium von Apple.
Um das Training auf Apple-Silicon-Chips zu aktivieren, solltest du 'mps' als dein Gerät angeben, wenn du den Trainingsprozess startest. 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")Durch die Nutzung der Rechenleistung der Apple-Silicon-Chips ermöglicht dies eine effizientere Verarbeitung der Trainingsaufgaben. Für detailliertere Anleitungen und erweiterte Konfigurationsoptionen lies bitte die PyTorch MPS-Dokumentation.
Fortsetzen unterbrochener Trainings
Das Fortsetzen des Trainings von einem zuvor gespeicherten Zustand ist eine entscheidende Funktion bei der Arbeit mit Deep-Learning-Modellen. Dies kann in verschiedenen Szenarien praktisch 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 vom zuletzt gespeicherten Modell und stellt auch den Zustand des Optimierers, den Lernraten-Scheduler und die Epochennummer wieder her. Dies ermöglicht es dir, den Trainingsprozess nahtlos dort fortzusetzen, wo er unterbrochen wurde.
You can easily resume training in Ultralytics YOLO by setting the resume argument to True when calling the train method, and specifying the path to the .pt file containing the partially trained model weights.
Nachfolgend findest du ein Beispiel, wie man ein unterbrochenes Training mit Python und über die Befehlszeile fortsetzt:
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 unterbrochen wurde, unter Verwendung des im 'path/to/last.pt'-Dateipfad gespeicherten Zustands. Wenn das resume-Argument weggelassen oder auf False gesetzt wird, startet die train-Funktion eine neue Trainingssitzung.
Denk daran, dass Checkpoints standardmäßig am Ende jeder Epoche oder in festen Intervallen mithilfe des save_period-Arguments gespeichert werden. Du musst also mindestens 1 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 die Leistung, Geschwindigkeit und Genauigkeit des Modells. Zu den wichtigsten Trainingseinstellungen gehören Batchgröße, Lernrate, Momentum und Weight Decay. Zusätzlich können die Wahl des Optimierers, der Verlustfunktion und die Zusammensetzung des Trainingsdatensatzes den Trainingsprozess beeinflussen. Sorgfältiges Tuning und Experimentieren mit diesen Einstellungen sind entscheidend für die Optimierung der Leistung.
MuSGD-Optimierer
In YOLO26 ist MuSGD ein hybrider Optimierer, der standardmäßige SGD-Updates mit Muon-artigen orthogonalisierten Updates kombiniert.
Er wird für längere YOLO26-Trainingsläufe und größere Datensätze empfohlen, bei denen orthogonalisierte Muon-Updates helfen können, die Optimierung zu stabilisieren.
Nur Parameter mit param.ndim >= 2 (wie Faltungsgewichte) erhalten das Muon-artige Update zusammen mit SGD, während niedrigdimensionale Parameter wie Batch-Normalisierungsschichten und Bias-Terme beim Standard-SGD verbleiben.
Wenn optimizer=auto verwendet wird, wählt Ultralytics automatisch MuSGD für längere Trainingsläufe (normalerweise wenn Iterationen > 10000). Für kürzere Läufe greift der Trainer auf AdamW zurück.
Beispiel für die Verwendung:
yolo train model=yolo26n.pt data=coco8.yaml optimizer=MuSGDSiehe die Implementierung in ultralytics/optim/muon.py und die Logik zur automatischen Optimiererauswahl 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 | Gesamtanzahl 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 gesetzt, überschreibt dies das epochs-Argument, wodurch das Training nach der angegebenen Dauer automatisch stoppt. Nützlich für zeitlich begrenzte Trainingsszenarien. |
patience | int | 100 | Anzahl der Epochen, die ohne Verbesserung der Validierungsmetriken gewartet wird, bevor das Training vorzeitig abgebrochen wird. Hilft, Overfitting zu verhindern, indem das Training gestoppt wird, wenn die Leistung stagniert. |
batch | int oder float | 16 | Batchgröße, mit drei Modi: als Ganzzahl gesetzt (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 Seitenlängen entsprechend dem angegebenen Wert skaliert (falls rect=False), wobei das Seitenverhältnis für YOLO-Modelle beibehalten wird, jedoch nicht für RT-DETR. Beeinflusst die Genauigkeit und die Rechenkomplexität des Modells. |
save | bool | True | Aktiviert das Speichern von Trainings-Checkpoints und finalen Modellgewichten. Nützlich zum Fortsetzen des Trainings oder für die 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 Speicher (True/ram), auf der Festplatte (disk) oder deaktiviert es (False). Verbessert die Trainingsgeschwindigkeit durch Reduzierung der Festplatten-I/O auf Kosten einer höheren 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 automatische Auswahl der am wenigsten ausgelasteten GPU (device=-1) bzw. mehrerer ungenutzter GPUs (device=[-1,-1]) |
workers | int | 8 | Anzahl der Worker-Threads für das Laden der Daten (pro RANK bei Multi-GPU-Training). Beeinflusst die Geschwindigkeit der Datenvorverarbeitung und die Zufuhr zum Modell, besonders nützlich in Multi-GPU-Setups. |
project | str | None | Name des Projektverzeichnisses, in dem Trainingsergebnisse gespeichert werden. Ermöglicht eine organisierte Ablage verschiedener Experimente. |
name | str | None | Name des Trainingslaufs. Wird zum Erstellen eines Unterverzeichnisses innerhalb des Projektordners verwendet, in dem Trainingsprotokolle und Ergebnisse 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 begonnen werden soll. Kann ein boolescher Wert oder ein Pfad-String zu zu ladenden Gewichten sein. pretrained=False trainiert mit zufällig initialisierten Gewichten unter 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 Random Seed für das Training, um die Reproduzierbarkeit der Ergebnisse über verschiedene Läufe mit denselben Konfigurationen sicherzustellen. |
deterministic | bool | True | Erzwingt die Verwendung deterministischer Algorithmen, was die Reproduzierbarkeit sicherstellt, aber 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, wodurch Fortschrittsbalken, Metriken pro Epoche und zusätzliche Trainingsinformationen in der Konsole angezeigt werden. |
single_cls | bool | False | Behandelt alle Klassen in Multi-Klassen-Datensätzen während des Trainings als eine einzige Klasse. Nützlich für binäre Klassifizierungsaufgaben oder wenn der Fokus auf der Anwesenheit eines Objekts liegt anstatt auf der Klassifizierung. |
classes | list[int] | None | Gibt eine Liste von Klassen-IDs an, auf denen trainiert werden soll. Nützlich, um Klassen herauszufiltern und sich während des Trainings nur auf bestimmte Klassen zu konzentrieren. |
rect | bool | False | Aktiviert die Strategie der minimalen Auffüllung (Padding)—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 jedoch die Modellgenauigkeit beeinflussen. |
multi_scale | float | 0.0 | Variiere imgsz pro Batch zufällig um +/- multi_scale (z. B. 0.25 -> 0.75x bis 1.25x), gerundet auf Vielfache der Modell-Stride; 0.0 deaktiviert das Multi-Scale-Training. |
cos_lr | bool | False | Nutzt einen Cosine-Learning Rate-Scheduler, der die Lernrate über die Epochen hinweg gemäß einer Cosinus-Kurve anpasst. Hilft bei der Steuerung der Lernrate für eine bessere Konvergenz. |
close_mosaic | int | 10 | Deaktiviert die Mosaic-Datenaugmentierung in den letzten N Epochen, um das Training vor dem Abschluss zu stabilisieren. Die Einstellung auf 0 deaktiviert diese Funktion. |
resume | bool | False | Setzt das Training vom letzten gespeicherten Checkpoint aus 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 Anteil des Datensatzes an, der für das Training verwendet werden soll. Ermöglicht das Training auf einer Teilmenge des vollständigen Datensatzes, nützlich für Experimente oder bei begrenzten Ressourcen. |
profile | bool | False | Aktiviert das Profiling 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 die angegebenen Schichten nach Index ein, was die Anzahl der trainierbaren Parameter reduziert. Nützlich für Fine-Tuning oder Transfer Learning. |
lr0 | float | 0.01 | Anfängliche Lernrate (d. h. SGD=1E-2, Adam=1E-3). Die Anpassung dieses Wertes ist entscheidend für den Optimierungsprozess und beeinflusst, wie schnell die Modellgewichte aktualisiert werden. |
lrf | float | 0.01 | Endgültige Lernrate als Bruchteil der anfänglichen Rate = (lr0 * lrf), die in Verbindung mit Schedulern verwendet wird, um die Lernrate im Zeitverlauf anzupassen. |
momentum | float | 0.937 | Momentum-Faktor für SGD oder beta1 für Adam optimizers, 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 Learning-Rate-Warmup, wobei 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 schrittweise auf das eingestellte Momentum einpendelt. |
warmup_bias_lr | float | 0.1 | Lernrate für Bias-Parameter während der Warmup-Phase, die hilft, das Modelltraining in den ersten Epochen zu stabilisieren. |
box | float | 7.5 | Gewichtung der Box-Loss-Komponente in der Loss-Funktion, die beeinflusst, wie stark der Fokus auf der präzisen Vorhersage der Bounding Box-Koordinaten liegt. |
cls | float | 0.5 | Gewichtung des Klassifizierungsverlusts in der gesamten Loss-Funktion, die die Wichtigkeit korrekter Klassenvorhersagen im Verhältnis zu anderen Komponenten beeinflusst. |
cls_pw | float | 0.0 | Exponent für die Klassengewichtung, um Klassenungleichgewichte mithilfe der inversen Klassenhäufigkeit zu behandeln. 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 feinmaschige Klassifizierung verwendet wird. |
pose | float | 12.0 | Gewichtung des Pose-Loss in Modellen, die für Pose-Estimation trainiert wurden, was den Fokus auf die präzise Vorhersage von Pose-Keypoints beeinflusst. |
kobj | float | 1.0 | Gewichtung des Keypoint-Objectness-Loss in Pose-Estimation-Modellen, die das Gleichgewicht zwischen Erkennungskonfidenz und Pose-Genauigkeit hält. |
rle | float | 1.0 | Gewichtung des Residual Log-Likelihood Estimation Loss in Pose-Estimation-Modellen, die die Präzision der Keypoint-Lokalisierung beeinflusst. |
angle | float | 1.0 | Gewichtung des Angle-Loss in obb-Modellen, die die Präzision von orientierten Bounding-Box-Winkelvorhersagen beeinflusst. |
nbs | int | 64 | Nominale Batch-Größe für die Normalisierung des Loss. |
overlap_mask | bool | True | Bestimmt, ob Objektmasken für das Training zu einer einzigen Maske zusammengeführt oder für jedes Objekt separat gehalten werden sollen. Bei Überlappung 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 zur Regularisierung bei Klassifizierungsaufgaben, die Overfitting durch zufälliges Weglassen von Einheiten während des Trainings verhindert. |
val | bool | True | Aktiviert die Validierung während des Trainings, was eine regelmäßige Bewertung der Modellleistung auf einem separaten Datensatz ermöglicht. |
plots | bool | True | Erstellt und speichert Diagramme der Trainings- und Validierungsmetriken sowie Vorhersagebeispiele, was visuelle Einblicke in die Modellleistung und den Lernfortschritt bietet. |
compile | bool oder str | False | Aktiviert die PyTorch 2.x torch.compile Graphen-Kompilierung mit backend='inductor'. Akzeptiert True → "default", False → deaktiviert, oder einen String-Modus wie "default", "reduce-overhead", "max-autotune-no-cudagraphs". Fällt bei Nichtunterstützung mit einer Warnung auf 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 Batchgröße: Setze einen Ganzzahlwert (z. B.
batch=16), der die Anzahl der Bilder pro Batch direkt angibt. - Auto-Modus (60 % GPU-Speicher): Verwende
batch=-1, um die Batchgröße automatisch auf etwa 60 % CUDA-Speicherauslastung anzupassen. - Auto-Modus mit Auslastungsanteil: Setze einen Bruchteilwert (z. B.
batch=0.70), um die Batchgröße basierend auf dem angegebenen Anteil der GPU-Speicherauslastung anzupassen. - OOM Auto-Retry: Wenn während der ersten Epoche ein CUDA-Out-of-Memory-Fehler auftritt, halbiert der Trainer automatisch die Batchgröße und versucht es erneut (bis zu 3 Mal). Dies gilt nur für Single-GPU-Training; Multi-GPU-Training (DDP) löst den Fehler sofort aus.
Augmentierungseinstellungen und Hyperparameter
Augmentierungstechniken sind wesentlich, um die Robustheit und Leistung von YOLO-Modellen zu verbessern, 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 Wirkung 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 Farbrads an und bringt Farbvariabilität ein. Hilft dem Modell, bei 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 und beeinflusst die Intensität der Farben. Nützlich, um verschiedene Umgebungsbedingungen zu simulieren. |
hsv_v | float | 0.4 | detect, segment, pose, obb, classify | 0.0 - 1.0 | Ändert den Wert (Helligkeit) des Bildes um einen Bruchteil, was dem Modell hilft, 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 und hilft dabei, teilweise sichtbare Objekte zu erkennen. |
scale | float | 0.5 | detect, segment, pose, obb, classify | 0 - 1 | Skaliert das Bild um einen Verstärkungsfaktor und simuliert Objekte in unterschiedlichen Entfernungen von der Kamera. |
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 und verbessert die Fähigkeit des Modells, 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, was die Datenvariabilität erhöht, ohne die Eigenschaften 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, nützlich zum Lernen symmetrischer Objekte und zur Erhöhung der Vielfalt des Datensatzes. |
bgr | float | 0 | detect, segment, pose, obb | 0.0 - 1.0 | Tauscht die Bildkanäle mit der angegebenen Wahrscheinlichkeit von RGB auf BGR, nützlich zur Erhöhung der Robustheit gegenüber inkorrekter Kanalreihenfolge. |
mosaic | float | 1 | detect, segment, pose, obb | 0.0 - 1.0 | Kombiniert vier Trainingsbilder zu einem und simuliert so verschiedene Szenenkompositionen und Objektinteraktionen. Sehr effektiv für das Verständnis komplexer Szenen. |
mixup | float | 0 | detect, segment, pose, obb | 0.0 - 1.0 | Mischt zwei Bilder und ihre Beschriftungen zu einem zusammengesetzten Bild. Verbessert die Generalisierungsfähigkeit des Modells durch das Einführen von Label-Rauschen und visueller Variabilität. |
cutmix | float | 0 | detect, segment, pose, obb | 0.0 - 1.0 | Kombiniert Teile von zwei Bildern, wodurch eine teilweise Mischung entsteht, während unterschiedliche Bereiche erhalten bleiben. Erhöht die Robustheit des Modells durch die Erstellung von Verdeckungsszenarien. |
copy_paste | float | 0 | segment | 0.0 - 1.0 | Kopiert und fügt Objekte in Bilder ein, um die Anzahl der Objektinstanzen zu erhöhen. |
copy_paste_mode | str | flip | segment | - | Legt die zu verwendende copy-paste-Strategie fest. Zu den Optionen gehören 'flip' und '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 Bildbereiche, um das Modell dazu zu bringen, sich auf weniger offensichtliche Merkmale zu konzentrieren. |
augmentations | list | `` | detect, segment, pose, obb | - | Benutzerdefinierte Albumentations-Transformationen für fortgeschrittene Datenaugmentierung (nur Python API). Akzeptiert eine Liste von Transformations-Objekten für spezialisierte Augmentierungsanforderungen. |
Diese Einstellungen können angepasst werden, um den spezifischen Anforderungen des Datensatzes und der anstehenden Aufgabe gerecht zu werden. Das Experimentieren mit verschiedenen Werten kann dabei helfen, die optimale Augmentierungsstrategie zu finden, die zur besten Modellleistung führt.
Weitere Informationen zu Trainings-Augmentierungsvorgängen findest du im Referenzabschnitt.
Protokollierung
Beim Training eines YOLO26-Modells kann es nützlich sein, die Leistung des Modells im Zeitverlauf 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 aus dem Dropdown-Menü im obigen Code-Schnipsel aus und führe ihn aus. Der gewählte Logger wird dann 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 Echtzeit-Metriken, Code-Diffs und die Nachverfolgung von Hyperparametern.
So verwendest du Comet:
# pip install comet_ml
import comet_ml
comet_ml.init()Denke daran, dich auf deren Website bei deinem Comet-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 Tracking von Experimenten automatisiert und bei der effizienten gemeinsamen 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()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 über die Ausführung deines Graphen zu plotten und zusätzliche Daten wie Bilder anzuzeigen, die ihn durchlaufen.
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 folgenden Befehl aus und betrachte die Ergebnisse unter localhost:6006.
tensorboard --logdir ultralytics/runs # replace with 'runs' directoryDies lädt TensorBoard und leitet es in das Verzeichnis, in dem deine Trainingsprotokolle gespeichert sind.
Nach der Einrichtung deines Loggers 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 Zeitverlauf zu überwachen, verschiedene Modelle zu vergleichen und Verbesserungspotenziale zu identifizieren.
FAQ
Kann ich ohne eine lokale GPU trainieren?
Ja. Die Ultralytics Platform unterstützt Cloud-Training mit kostenlosen Credits für den Einstieg. Lade deinen Datensatz hoch, wähle ein Modell und eine GPU aus und trainiere direkt im Browser. Siehe den Leitfaden für Cloud-Training für weitere Details.
Wie trainiere ich ein Objekterkennungsmodell mit Ultralytics YOLO26?
Um ein Objekterkennungsmodell mit Ultralytics YOLO26 zu trainieren, kannst du entweder die Python API oder das 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 Standard-Datensä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 an deine Bedürfnisse anpassbar. Weitere Details findest du im Abschnitt Hauptfunktionen des Train-Modus.
Wie setze ich das Training nach einer unterbrochenen Sitzung in Ultralytics YOLO26 fort?
Um das Training nach einer unterbrochenen Sitzung fortzusetzen, setze das resume-Argument 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)Überprüfe den Abschnitt über Fortsetzen von unterbrochenen Trainings für weitere Informationen.
Wie trainiere ich ein Modell mit einem unausgewogenen Datensatz?
Klassenungleichgewicht tritt auf, wenn einige Klassen in deinen Trainingsdaten deutlich weniger Beispiele haben 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 vollständige 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 für mäßig unausgewogene Datensätze und erhöhe den Wert auf 1.0, wenn die seltenen Klassen immer noch eine schlechte 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 Datensatz-Konfigurationsdatei (z. B. coco8.yaml). |
epochs | 100 | Gesamtzahl der Trainingsepochen. |
batch | 16 | Batch-Größe, als Ganzzahl oder im Auto-Modus anpassbar. |
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 endgültigen Modellgewichten. |
Für einen ausführlichen Leitfaden zu den Trainingseinstellungen, sieh dir den Abschnitt Trainingseinstellungen an.