Zum Inhalt springen

Modelltraining mit Ultralytics YOLO

Ultralytics YOLO Ökosystem und Integrationen

Einführung

Das Training eines Deep-Learning-Modells beinhaltet das Einspeisen von Daten und das Anpassen seiner Parameter, sodass es genaue Vorhersagen treffen kann. Der Trainingsmodus in Ultralytics YOLO11 ist für ein effektives und effizientes Training von Objekterkennungsmodellen konzipiert und nutzt die Möglichkeiten moderner Hardware voll aus. Dieser Leitfaden soll alle Details abdecken, die Sie benötigen, um mit dem Training Ihrer eigenen Modelle mit den robusten Funktionen von YOLO11 zu beginnen.



Ansehen: Wie man ein YOLO-Modell auf Ihrem benutzerdefinierten Datensatz in Google Colab trainiert.

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

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

  • Effizienz: Holen Sie das Beste aus Ihrer Hardware heraus, egal ob Sie eine Single-GPU-Konfiguration verwenden oder über mehrere GPUs skalieren.
  • Vielseitigkeit: Trainieren Sie mit benutzerdefinierten Datensätzen zusätzlich zu den bereits verfügbaren wie COCO, VOC und ImageNet.
  • Benutzerfreundlich: Einfache, aber leistungsstarke CLI- und Python-Schnittstellen für eine unkomplizierte Trainingserfahrung.
  • Flexibilität der Hyperparameter: Eine breite Palette anpassbarer Hyperparameter zur Feinabstimmung der Modellleistung.

Hauptmerkmale des Trainingsmodus

Im Folgenden sind einige bemerkenswerte Funktionen des YOLO11-Trainingsmodus aufgeführt:

  • Automatischer Datensatz-Download: Standarddatensätze wie COCO, VOC und ImageNet werden bei der ersten Verwendung automatisch heruntergeladen.
  • Multi-GPU-Unterstützung: Skalieren Sie Ihre Trainingsbemühungen nahtlos über mehrere GPUs, um den Prozess zu beschleunigen.
  • Hyperparameter-Konfiguration: Die Möglichkeit, Hyperparameter über YAML-Konfigurationsdateien oder CLI-Argumente zu ändern.
  • Visualisierung und Überwachung: Echtzeit-Verfolgung von Trainingsmetriken und Visualisierung des Lernprozesses für bessere Einblicke.

Tipp

  • YOLO11-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 YOLO11n auf dem COCO8-Datensatz für 100 Epochen bei einer Bildgröße von 640. Das Trainingsgerät kann mit dem device Argument angegeben werden. Wenn kein Argument übergeben wird, wird die GPU device=0 verwendet, falls verfügbar, andernfalls wird die device='cpu' CPU verwendet. Weitere Informationen finden Sie im Abschnitt Argumente weiter unten.

Windows Multi-Processing Fehler

Unter Windows erhalten Sie möglicherweise eine RuntimeError beim Starten des Trainings als Skript. Fügen Sie ein if __name__ == "__main__": Blockieren Sie dies vor Ihrem Trainingscode, um das Problem zu beheben.

Einzel-GPU- und CPU-Trainingsbeispiel

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

from ultralytics import YOLO

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

# Train the model
results = model.train(data="coco8.yaml", epochs=100, imgsz=640)
# Build a new model from YAML and start training from scratch
yolo detect train data=coco8.yaml model=yolo11n.yaml epochs=100 imgsz=640

# Start training from a pretrained *.pt model
yolo detect train data=coco8.yaml model=yolo11n.pt epochs=100 imgsz=640

# Build a new model from YAML, transfer pretrained weights to it and start training
yolo detect train data=coco8.yaml model=yolo11n.yaml pretrained=yolo11n.pt 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 die Befehlszeilenschnittstelle verfügbar. Um das Multi-GPU-Training zu aktivieren, geben Sie die GPU-Geräte-IDs an, die Sie verwenden möchten.

Multi-GPU-Trainingsbeispiel

Um mit 2 GPUs, CUDA-Geräten 0 und 1, zu trainieren, verwenden Sie die folgenden Befehle. Erweitern Sie bei Bedarf auf zusätzliche GPUs.

from ultralytics import YOLO

# Load a model
model = YOLO("yolo11n.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])
# Start training from a pretrained *.pt model using GPUs 0 and 1
yolo detect train data=coco8.yaml model=yolo11n.pt epochs=100 imgsz=640 device=0,1

# Use the two most idle GPUs
yolo detect train data=coco8.yaml model=yolo11n.pt epochs=100 imgsz=640 device=-1,-1

GPU-Training im Leerlauf

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

Beispiel für GPU-Training im Leerlauf

Um automatisch die am wenigsten ausgelastete(n) GPU(s) für das Training auszuwählen und zu verwenden, nutzen Sie die -1 device-Parameter. Dies ist besonders nützlich in gemeinsam genutzten Rechenumgebungen oder auf Servern mit mehreren Benutzern.

from ultralytics import YOLO

# Load a model
model = YOLO("yolov8n.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])
# Start training using the single most idle GPU
yolo detect train data=coco8.yaml model=yolov8n.pt epochs=100 imgsz=640 device=-1

# Start training using the two most idle GPUs
yolo detect train data=coco8.yaml model=yolov8n.pt epochs=100 imgsz=640 device=-1,-1

Der Algorithmus zur automatischen Auswahl priorisiert GPUs mit:

  1. Niedrigere aktuelle Auslastungsprozentsätze
  2. Höherer verfügbarer Speicher (freier VRAM)
  3. Niedrigere Temperatur und geringerer Stromverbrauch

Diese Funktion ist besonders wertvoll in gemeinsam genutzten Rechenumgebungen oder bei der Ausführung mehrerer Trainingsaufträge für verschiedene Modelle. Sie passt sich automatisch an sich ändernde Systembedingungen an und gewährleistet eine optimale Ressourcenzuweisung ohne manuellen Eingriff.

Apple Silicon MPS Training

Mit der Unterstützung für Apple-Silizium-Chips, die in die Ultralytics YOLO-Modelle integriert sind, ist es jetzt möglich, Ihre Modelle auf Geräten zu trainieren, die das leistungsstarke Metal Performance Shaders (MPS)-Framework nutzen. Das MPS bietet eine hochleistungsfähige Möglichkeit, Berechnungs- und Bildverarbeitungsaufgaben auf Apples kundenspezifischem Silizium auszuführen.

Um das Training auf Apple-Silizium-Chips zu aktivieren, sollten Sie 'mps' als Ihr Gerät angeben, wenn Sie den Trainingsprozess starten. Nachfolgend finden Sie ein Beispiel, wie Sie dies in python und über die Befehlszeile tun können:

MPS-Trainingsbeispiel

from ultralytics import YOLO

# Load a model
model = YOLO("yolo11n.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")
# Start training from a pretrained *.pt model using MPS
yolo detect train data=coco8.yaml model=yolo11n.pt epochs=100 imgsz=640 device=mps

Durch die Nutzung der Rechenleistung der Apple-Silizium-Chips wird eine effizientere Verarbeitung der Trainingsaufgaben ermöglicht. Für detailliertere Anleitungen und erweiterte Konfigurationsoptionen lesen Sie bitte die PyTorch MPS-Dokumentation.

Unterbrochene Trainings fortsetzen

Das Fortsetzen des Trainings von einem zuvor gespeicherten Zustand aus 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 Sie ein Modell mit neuen Daten oder für weitere Epochen weiter trainieren möchten.

Wenn das Training fortgesetzt wird, lädt Ultralytics YOLO die Gewichte des zuletzt gespeicherten Modells und stellt auch den Zustand des Optimierers, den Lernraten-Scheduler und die Epochennummer wieder her. Dies ermöglicht es Ihnen, den Trainingsprozess nahtlos dort fortzusetzen, wo er unterbrochen wurde.

Sie können das Training in Ultralytics YOLO einfach fortsetzen, indem Sie resume Argument für True beim Aufruf der train Methode und Angabe des Pfads zu der .pt Datei, die die teilweise trainierten Modellgewichte enthält.

Nachfolgend finden Sie ein Beispiel dafür, wie Sie ein unterbrochenes Training mit python und über die Befehlszeile fortsetzen können:

Beispiel zum Fortsetzen des Trainings

from ultralytics import YOLO

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

# Resume training
results = model.train(resume=True)
# Resume an interrupted training
yolo train resume model=path/to/last.pt

Durch Setzen von resume=Truewird die train Funktion das Training an der Stelle fortsetzen, an der es unterbrochen wurde, wobei der im Pfad 'path/to/last.pt' gespeicherte Zustand verwendet wird. Wenn das resume Argument weggelassen oder auf Falsewird die train gesetzt wird, startet die Funktion eine neue Trainingseinheit.

Denken Sie daran, dass Checkpoints standardmäßig am Ende jeder Epoche oder in festen Intervallen mit dem Argument save_period gespeichert werden, sodass Sie mindestens 1 Epoche abschließen müssen, 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 Batch-Größe, Lernrate, Momentum und Weight Decay. Darüber hinaus können die Wahl des Optimierers, der Loss-Funktion und der Zusammensetzung des Trainingsdatensatzes den Trainingsprozess beeinflussen. Eine sorgfältige Abstimmung und das Experimentieren mit diesen Einstellungen sind entscheidend für die Optimierung der Leistung.

Argument Typ Standard Beschreibung
model str None Gibt die Modelldatei für das Training an. Akzeptiert einen Pfad zu einem .pt vorab trainierten Modell oder einer .yaml Konfigurationsdatei. Wesentlich für die Definition der Modellstruktur oder die Initialisierung von Gewichten.
data str None Pfad zur Dataset-Konfigurationsdatei (z. B. coco8.yaml). Diese Datei enthält datasetspezifische Parameter, einschließlich Pfade zum Training und Validierungsdaten, Klassennamen und Anzahl der Klassen.
epochs int 100 Gesamtzahl der Trainingsepochen. Jede Epoche stellt einen vollständigen Durchlauf über den gesamten Datensatz dar. 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 beendet werden kann. Nützlich für zeitlich begrenzte Trainingsszenarien.
patience int 100 Anzahl der Epochen, die ohne Verbesserung der Validierungsmetriken gewartet werden soll, bevor das Training vorzeitig beendet wird. Hilft, Overfitting zu verhindern, indem das Training gestoppt wird, wenn die Leistung ein Plateau erreicht.
batch int oder float 16 Batch-Größe, mit drei Modi: festgelegt als ganze Zahl (z. B. batch=16),batch=-1Auto-Modus für 60 % GPU-Speicherauslastung (batch=0.70), oder Auto-Modus mit angegebener Auslastungsfraktion (
imgsz int 640 Zielbildgröße für das Training. Bilder werden auf Quadrate mit Seiten gleich dem angegebenen Wert skaliert (falls rect=False), wobei das Seitenverhältnis für YOLO-Modelle beibehalten wird, nicht aber für RTDETR. Beeinflusst das Modell Genauigkeit und die Rechenkomplexität.
save bool True Zielbildgröße für das Training. Alle Bilder werden auf diese Dimension skaliert, bevor sie in das Modell eingespeist werden. Beeinflusst die Genauigkeit des Modells und die Rechenkomplexität.
save_period int -1 Ermöglicht das Speichern von Trainings-Checkpoints und finalen Modellgewichten. Nützlich, um das Training fortzusetzen oder das Modell bereitzustellen.
cache bool False Frequenz, mit der Modell-Checkpoints gespeichert werden, angegeben in Epochen. Ein Wert von -1 deaktiviert diese Funktion. Nützlich, um Zwischenmodelle während langer Trainingseinheiten zu speichern.True/ramErmöglicht das Caching von Datensatzbildern im Speicher (disk), auf der Festplatte (False), oder deaktiviert es (
device int oder str oder list None Spezifiziert die Rechengeräte für das Training: eine einzelne GPU (device=0), mehrere GPUs (device=[0,1]), CPU (device=cpu), MPS für Apple Silicon (device=mps), oder die automatische Auswahl der am wenigsten ausgelasteten GPU (device=-1) oder mehrere unbeschäftigte GPUs (device=[-1,-1])
workers int 8 GPU RANK GPU bei Multi-GPU-Training). Beeinflusst die Geschwindigkeit der Datenvorverarbeitung und das Einspeisen in das Modell, besonders nützlich bei Multi-GPU-Setups.
project str None Name des Projektverzeichnisses, in dem die Trainingsausgaben gespeichert werden. Ermöglicht die organisierte Speicherung verschiedener Experimente.
name str None Name des Trainingslaufs. Wird verwendet, um ein Unterverzeichnis innerhalb des Projektordners zu erstellen, in dem Trainingsprotokolle und -ausgaben gespeichert werden.
exist_ok bool False Wenn True, erlaubt das Überschreiben eines bestehenden Projekt/Name-Verzeichnisses. Nützlich für iterative Experimente, ohne dass vorherige Ausgaben manuell gelöscht werden müssen.
pretrained bool oder str True Bestimmt, ob das Training mit einem vortrainierten Modell gestartet werden soll. Kann ein boolescher Wert oder ein String-Pfad zu einem bestimmten Modell sein, von dem die Gewichte geladen werden sollen. Verbessert die Trainingseffizienz und die Modellleistung.
optimizer str 'auto' Auswahl des Optimierers für das Training. Optionen umfassen SGD, Adam, AdamW, NAdam, RAdam, RMSProp etc. oder auto für die automatische Auswahl basierend auf der Modellkonfiguration. Beeinflusst die Konvergenzgeschwindigkeit und -stabilität.
seed int 0 Legt den Zufallsseed für das Training fest und gewährleistet so die Reproduzierbarkeit der Ergebnisse über Läufe mit den gleichen Konfigurationen hinweg.
deterministic bool True Erzwingt die Verwendung deterministischer Algorithmen, wodurch die Reproduzierbarkeit gewährleistet wird, aber die Leistung und Geschwindigkeit aufgrund der Beschränkung auf nicht-deterministische Algorithmen beeinträchtigt werden können.
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 Objekterkennung und nicht auf der Klassifizierung liegt.
classes list[int] None Gibt eine Liste von Klassen-IDs an, auf denen trainiert werden soll. Nützlich, um während des Trainings bestimmte Klassen herauszufiltern und sich nur auf diese 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 gleich imgszist. Kann die Effizienz und Geschwindigkeit verbessern, aber die Modellgenauigkeit beeinträchtigen.
multi_scale bool False Ermöglicht Multi-Scale-Training durch Erhöhen/Verringern imgsz um bis zu einem Faktor von 0.5 während des Trainings. Trainiert das Modell, um mit mehreren genauer zu sein imgsz während der Inferenz.
cos_lr bool False Verwendet einen Cosinus-Lernraten-Scheduler, der die Lernrate über Epochen hinweg gemäß einer Cosinuskurve anpasst. Hilft bei der Steuerung der Lernrate für eine bessere Konvergenz.
close_mosaic int 10 Deaktiviert die Mosaik-Datenerweiterung in den letzten N Epochen, um das Training vor Abschluss zu stabilisieren. Wenn der Wert auf 0 gesetzt ist, wird diese Funktion deaktiviert.
resume bool False Setzt das Training vom letzten gespeicherten Checkpoint fort. Lädt automatisch Modellgewichte, Optimierungsstatus und Epochenanzahl und setzt das Training nahtlos fort.
amp bool True Aktiviert das automatische Mixed Precision (AMP)-Training, wodurch der Speicherverbrauch reduziert und möglicherweise das Training beschleunigt wird, ohne die Genauigkeit wesentlich zu beeinträchtigen.
fraction float 1.0 Gibt den Bruchteil des Datensatzes an, der für das Training verwendet werden soll. Ermöglicht das Training mit einer Teilmenge des vollständigen Datensatzes, was für Experimente oder bei begrenzten Ressourcen nützlich ist.
profile bool False Ermöglicht die Profilerstellung von ONNX- und TensorRT-Geschwindigkeiten während des Trainings, was für die Optimierung der Modellbereitstellung nützlich ist.
freeze int oder list None Friert die ersten N Schichten des Modells oder die angegebenen Schichten nach Index ein, wodurch die Anzahl der trainierbaren Parameter reduziert wird. Nützlich für Feinabstimmung oder Transferlernen.
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 Laufe der Zeit anzupassen.
momentum float 0.937 Momentum-Faktor für SGD oder Beta1 für Adam-Optimierer, der die Einbeziehung vergangener Gradienten in die aktuelle Aktualisierung beeinflusst.
weight_decay float 0.0005 L2-Regularisierungsterm, der große Gewichte bestraft, um Overfitting zu verhindern.
warmup_epochs float 3.0 Anzahl der Epochen für das Lernraten-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 schrittweise an das eingestellte Momentum über den Warmup-Zeitraum angepasst wird.
warmup_bias_lr float 0.1 Lernrate für Bias-Parameter während der Aufwärmphase, die dazu beiträgt, das Modelltraining in den ersten Epochen zu stabilisieren.
box float 7.5 Gewichtung der Box-Loss-Komponente in der Loss-Funktion, die beeinflusst, wie viel Wert auf die genaue Vorhersage von Bounding-Box-Koordinaten gelegt wird.
cls float 0.5 Gewichtung des Klassifizierungs-Loss in der gesamten Loss-Funktion, die die Bedeutung der korrekten Klassen Vorhersage im Verhältnis zu anderen Komponenten beeinflusst.
dfl float 1.5 Gewichtung des Distribution Focal Loss, der in bestimmten YOLO-Versionen für die feinkörnige Klassifizierung verwendet wird.
pose float 12.0 Gewichtung des Pose-Loss in Modellen, die für die Pose-Schätzung trainiert wurden, und die den Schwerpunkt auf die genaue Vorhersage von Pose-Keypoints beeinflusst.
kobj float 2.0 Gewichtung des Keypoint-Objectness-Loss in Pose-Schätzungsmodellen, die das Erkennungsvertrauen mit der Pose-Genauigkeit ausgleicht.
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. Im Falle einer Überlappung wird die kleinere Maske während des Zusammenführens über die größere Maske 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 eine Überanpassung verhindert, indem während des Trainings zufällig Einheiten weggelassen werden.
val bool True Ermöglicht die Validierung während des Trainings und ermöglicht so die regelmäßige Bewertung der Modellleistung anhand eines separaten Datensatzes.
plots bool False Erstellt und speichert Diagramme mit Trainings- und Validierungsmetriken sowie Vorhersagebeispiele, die visuelle Einblicke in die Modellleistung und den Lernfortschritt geben.

Hinweis zu Batch-Size-Einstellungen

Die batch Argument kann auf drei Arten konfiguriert werden:

  • Feste Batch-Größe: Legen Sie einen ganzzahligen Wert fest (z. B. batch=16), der die Anzahl der Bilder pro Batch direkt angibt.
  • Auto-Modus (60% GPU-Speicher): Verwenden Sie batch=-1 um die Batch-Größe automatisch für eine CUDA-Speicherauslastung von ca. 60 % anzupassen.
  • Auto-Modus mit Auslastungsanteil: Legen Sie einen Bruchwert fest (z. B. batch=0.70), um die Batch-Größe basierend auf dem angegebenen Anteil der GPU-Speichernutzung anzupassen.

Augmentierungseinstellungen und Hyperparameter

Augmentierungstechniken sind unerlässlich, um die Robustheit und Leistung von YOLO-Modellen zu verbessern, indem sie die Trainingsdaten variieren und dem Modell helfen, sich besser auf unbekannte Daten zu verallgemeinern. Die folgende Tabelle beschreibt den Zweck und die Wirkung der einzelnen Augmentierungsargumente:

Argument Typ Standard Bereich Beschreibung
hsv_h float 0.015 0.0 - 1.0 Passt den Farbton des Bildes um einen Bruchteil des Farbkreises an und führt so zu Farbvariationen. Hilft dem Modell, sich an unterschiedliche Lichtverhältnisse anzupassen.
hsv_s float 0.7 0.0 - 1.0 Verändert die Sättigung des Bildes um einen Bruchteil und beeinflusst so die Farbintensität. Nützlich für die Simulation verschiedener Umgebungsbedingungen.
hsv_v float 0.4 0.0 - 1.0 Verändert den Wert (Helligkeit) des Bildes um einen Bruchteil und hilft dem Modell, auch unter verschiedenen Lichtverhältnissen gute Ergebnisse zu erzielen.
degrees float 0.0 0.0 - 180 Dreht das Bild zufällig innerhalb des angegebenen Gradbereichs und verbessert so die Fähigkeit des Modells, Objekte in verschiedenen Ausrichtungen zu erkennen.
translate float 0.1 0.0 - 1.0 Verschiebt das Bild horizontal und vertikal um einen Bruchteil der Bildgröße und hilft so, das Erkennen von teilweise sichtbaren Objekten zu erlernen.
scale float 0.5 >=0.0 Skaliert das Bild mit einem Verstärkungsfaktor und simuliert so Objekte in unterschiedlichen Entfernungen von der Kamera.
shear float 0.0 -180 - +180 Scheren des Bildes um einen bestimmten Grad, wodurch der Effekt simuliert wird, dass Objekte aus verschiedenen Blickwinkeln betrachtet werden.
perspective float 0.0 0.0 - 0.001 Wendet eine zufällige perspektivische Transformation auf das Bild an und verbessert so die Fähigkeit des Modells, Objekte im 3D-Raum zu verstehen.
flipud float 0.0 0.0 - 1.0 Dreht das Bild mit der angegebenen Wahrscheinlichkeit auf den Kopf, wodurch die Datenvariabilität erhöht wird, ohne die Eigenschaften des Objekts zu beeinträchtigen.
fliplr float 0.5 0.0 - 1.0 Spiegelt das Bild mit der angegebenen Wahrscheinlichkeit von links nach rechts, was nützlich ist, um symmetrische Objekte zu erlernen und die Vielfalt des Datensatzes zu erhöhen.
bgr float 0.0 0.0 - 1.0 Vertauscht die Bildkanäle von RGB zu BGR mit der angegebenen Wahrscheinlichkeit, was nützlich ist, um die Robustheit gegenüber einer falschen Kanalreihenfolge zu erhöhen.
mosaic float 1.0 0.0 - 1.0 Kombiniert vier Trainingsbilder zu einem, wodurch verschiedene Szenenzusammensetzungen und Objektinteraktionen simuliert werden. Sehr effektiv für das Verständnis komplexer Szenen.
mixup float 0.0 0.0 - 1.0 Vermischt zwei Bilder und ihre Beschriftungen und erzeugt so ein zusammengesetztes Bild. Verbessert die Fähigkeit des Modells zur Verallgemeinerung, indem es Rauschen und visuelle Variabilität in die Beschriftungen einführt.
cutmix float 0.0 0.0 - 1.0 Kombiniert Teile von zwei Bildern und erzeugt eine partielle Mischung unter Beibehaltung unterschiedlicher Regionen. Erhöht die Robustheit des Modells durch Erstellung von Okklusionsszenarien.
copy_paste float 0.0 0.0 - 1.0 Nur Segmentierung. Kopiert und fügt Objekte über Bilder hinweg ein, um die Anzahl der Objektinstanzen zu erhöhen.
copy_paste_mode str flip - Nur SegmentierungSpezifiziert die copy-paste zu verwendende Strategie. Zu den Optionen gehören 'flip' und 'mixup'.
auto_augment str randaugment - Nur Klassifizierung. Wendet eine vordefinierte Augmentationsrichtlinie an ('randaugment', 'autoaugment', oder 'augmix') um die Modellleistung durch visuelle Vielfalt zu verbessern.
erasing float 0.4 0.0 - 0.9 Nur Klassifizierung. Löscht während des Trainings zufällig Bereiche des Bildes, um das Modell zu ermutigen, sich auf weniger offensichtliche Merkmale zu konzentrieren.

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 helfen, die optimale Augmentierungsstrategie zu finden, die zur besten Modellleistung führt.

Info

Weitere Informationen zu den Augmentierungsoperationen für das Training finden Sie im Referenzabschnitt.

Protokollierung

Beim Trainieren eines YOLO11-Modells kann es hilfreich sein, die Leistung des Modells im Zeitverlauf zu verfolgen. Hier kommt das Logging ins Spiel. Ultralytics YOLO bietet Unterstützung für drei Arten von Loggern: Comet, ClearML und TensorBoard.

Um einen Logger zu verwenden, wählen Sie ihn aus dem Dropdown-Menü im obigen Code-Snippet aus und führen Sie ihn aus. Der ausgewä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 Echtzeit-Metriken, Code-Diferenzen und Hyperparameter-Tracking.

So verwenden Sie Comet:

Beispiel

# pip install comet_ml
import comet_ml

comet_ml.init()

Denken Sie daran, sich auf der Comet-Website in Ihrem Konto anzumelden und Ihren API-Schlüssel zu beziehen. Sie müssen diesen zu Ihren Umgebungsvariablen oder Ihrem Skript hinzufügen, um Ihre 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 bei der effizienteren Verwaltung, Ausführung und Reproduktion ihrer ML-Arbeit zu unterstützen.

So verwenden Sie ClearML:

Beispiel

# pip install clearml
import clearml

clearml.browser_login()

Nachdem Sie dieses Skript ausgeführt haben, müssen Sie sich in Ihrem ClearML-Konto im Browser anmelden und Ihre Sitzung authentifizieren.

TensorBoard

TensorBoard ist ein Visualisierungstoolkit für TensorFlow. Es ermöglicht Ihnen, Ihren TensorFlow-Graphen zu visualisieren, quantitative Metriken über die Ausführung Ihres Graphen zu plotten und zusätzliche Daten wie Bilder anzuzeigen, die ihn durchlaufen.

So verwenden Sie TensorBoard in Google Colab:

Beispiel

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

Um TensorBoard lokal zu verwenden, führen Sie den folgenden Befehl aus und zeigen Sie die Ergebnisse unter folgender Adresse an: http://localhost:6006/.

Beispiel

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

Dadurch wird TensorBoard geladen und zu dem Verzeichnis geleitet, in dem Ihre Trainingsprotokolle gespeichert sind.

Nachdem Sie Ihren Logger eingerichtet haben, können Sie mit dem Modelltraining fortfahren. Alle Trainingsmetriken werden automatisch auf der von Ihnen gewählten Plattform protokolliert, und Sie können auf diese Protokolle zugreifen, um die Leistung Ihres Modells im Laufe der Zeit zu überwachen, verschiedene Modelle zu vergleichen und Bereiche für Verbesserungen zu identifizieren.

FAQ

Wie trainiere ich ein Objekterkennungsmodell mit Ultralytics YOLO11?

Um ein Objekterkennungsmodell mit Ultralytics YOLO11 zu trainieren, können Sie entweder die Python API oder die CLI verwenden. Nachfolgend finden Sie ein Beispiel für beides:

Einzel-GPU- und CPU-Trainingsbeispiel

from ultralytics import YOLO

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

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

Weitere Informationen finden Sie im Abschnitt Train Settings.

Was sind die Hauptmerkmale des Trainingsmodus von Ultralytics YOLO11?

Die wichtigsten Funktionen des Ultralytics YOLO11 Trainingsmodus umfassen:

  • Automatischer Datensatz-Download: Lädt automatisch Standarddatensätze wie COCO, VOC und ImageNet herunter.
  • Multi-GPU-Unterstützung: Skalieren Sie das Training über mehrere GPUs, um die Verarbeitung zu beschleunigen.
  • Hyperparameter-Konfiguration: Passen Sie 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 Ihre Bedürfnisse anpassbar. Weitere Informationen finden Sie im Abschnitt Key Features of Train Mode.

Wie setze ich das Training nach einer Unterbrechung in Ultralytics YOLO11 fort?

Um das Training von einer unterbrochenen Sitzung aus fortzusetzen, setzen Sie resume Argument für True und geben Sie den Pfad zum zuletzt gespeicherten Checkpoint an.

Beispiel zum Fortsetzen des Trainings

from ultralytics import YOLO

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

# Resume training
results = model.train(resume=True)
yolo train resume model=path/to/last.pt

Weitere Informationen finden Sie im Abschnitt Resuming Interrupted Trainings.

Kann ich YOLO11 Modelle auf Apple Silicon Chips trainieren?

Ja, Ultralytics YOLO11 unterstützt das Training auf Apple Silicon Chips unter Verwendung des Metal Performance Shaders (MPS) Frameworks. Geben Sie 'mps' als Ihr Trainingsgerät an.

MPS-Trainingsbeispiel

from ultralytics import YOLO

# Load a pretrained model
model = YOLO("yolo11n.pt")

# Train the model on Apple silicon chip (M1/M2/M3/M4)
results = model.train(data="coco8.yaml", epochs=100, imgsz=640, device="mps")
yolo detect train data=coco8.yaml model=yolo11n.pt epochs=100 imgsz=640 device=mps

Weitere Informationen finden Sie im Abschnitt Apple Silicon MPS Training.

Was sind die gängigen Trainingseinstellungen, und wie konfiguriere ich sie?

Ultralytics YOLO11 ermöglicht es Ihnen, 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 Dataset-Konfigurationsdatei (z. B. coco8.yaml), oder Auto-Modus mit angegebener Auslastungsfraktion (
epochs 100 Gesamtanzahl der Trainingsepochen.
batch 16 Batch-Größe, einstellbar als Integer 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 Ermöglicht das Speichern von Trainings-Checkpoints und finalen Modellgewichten.

Eine ausführliche Anleitung zu den Trainingseinstellungen finden Sie im Abschnitt Train Settings.



📅 Erstellt vor 1 Jahr ✏️ Aktualisiert vor 2 Monaten

Kommentare