Modelltraining mit Ultralytics YOLO
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:
- Niedrigere aktuelle Auslastungsprozentsätze
- Höherer verfügbarer Speicher (freier VRAM)
- 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=True
wird 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 False
wird 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=-1 Auto-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 /ram Ermö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 imgsz ist. 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.