Zum Inhalt springen

Konfiguration

YOLO-Einstellungen und -Hyperparameter spielen eine entscheidende Rolle für die Leistung, Geschwindigkeit und Genauigkeit des Modells. Diese Einstellungen können das Verhalten des Modells in verschiedenen Phasen beeinflussen, einschließlich Training, Validierung und Vorhersage.

Ansehen: Ultralytics YOLO meistern: Konfiguration



Ansehen: Ultralytics YOLO meistern: Konfiguration

Ultralytics-Befehle verwenden die folgende Syntax:

Beispiel

yolo TASK MODE ARGS
from ultralytics import YOLO

# Load a YOLO model from a pre-trained weights file
model = YOLO("yolo11n.pt")

# Run MODE mode using the custom arguments ARGS (guess TASK)
model.MODE(ARGS)

Wobei:

Standard ARG Werte werden auf dieser Seite definiert und stammen von der cfg/defaults.yaml Datei definiert.

Aufgaben

Ultralytics YOLO Modelle können eine Vielzahl von Computer-Vision-Aufgaben ausführen, darunter:

  • Erkennen: Objekterkennung identifiziert und lokalisiert Objekte innerhalb eines Bildes oder Videos.
  • Segmentierung: Die Instanzsegmentierung unterteilt ein Bild oder Video in Regionen, die verschiedenen Objekten oder Klassen entsprechen.
  • Klassifizieren: Bildklassifizierung sagt die Klassenbezeichnung eines Eingangsbildes voraus.
  • Pose: Die Pose-Schätzung identifiziert Objekte und schätzt ihre Keypoints in einem Bild oder Video.
  • OBB: Oriented Bounding Boxes verwendet gedrehte Begrenzungsrahmen, geeignet für Satelliten- oder medizinische Bilder.
Argument Standard Beschreibung
task 'detect' Gibt die YOLO-Aufgabe an: detect für Objekterkennung durchzuführen, segment für die Segmentierung, classify für die Klassifizierung, pose für die Pose-Schätzung, und obb für orientierte Begrenzungsrahmen. Jede Aufgabe ist auf spezifische Ausgaben und Probleme in der Bild- und Videoanalyse zugeschnitten.

Anleitung für Aufgaben

Modi

Ultralytics YOLO Modelle arbeiten in verschiedenen Modi, die jeweils für eine bestimmte Phase des Modelllebenszyklus entwickelt wurden:

  • Trainieren: Trainieren Sie ein YOLO-Modell auf einem benutzerdefinierten Datensatz.
  • Val: Validiert ein trainiertes YOLO-Modell.
  • Vorhersagen: Verwenden Sie ein trainiertes YOLO-Modell, um Vorhersagen auf neuen Bildern oder Videos zu treffen.
  • Exportieren: Exportieren Sie ein YOLO-Modell zur Bereitstellung.
  • Track: Verfolgen Sie Objekte in Echtzeit mit einem YOLO-Modell.
  • Benchmark: Testen Sie die Geschwindigkeit und Genauigkeit von YOLO-Exporten (ONNX, TensorRT usw.).
Argument Standard Beschreibung
mode 'train' Gibt den Betriebsmodus des YOLO-Modells an: train für das Modelltraining, val zur Validierung, predict für die Inferenz, export zur Konvertierung in Bereitstellungsformate, track zur Objektverfolgung und benchmark zur Leistungsbewertung. Jeder Modus unterstützt verschiedene Phasen, von der Entwicklung bis zur Bereitstellung.

Anleitung für Modi

Trainingseinstellungen

Die Trainingseinstellungen für YOLO-Modelle umfassen Hyperparameter und Konfigurationen, die die Leistung, Geschwindigkeit und Genauigkeit des Modells beeinflussen. Zu den wichtigsten Einstellungen gehören Batch-Größe, Lernrate, Momentum und Gewichtungsabfall. Die Wahl des Optimierers, der Verlustfunktion und der Zusammensetzung des Datensatzes wirken sich ebenfalls auf das Training aus. Feinabstimmung und Experimente sind entscheidend für eine optimale Leistung. Weitere Informationen finden Sie im Ultralytics-Einstiegspunkt.

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 bietet drei Konfigurationsoptionen:

  • Feste Batch-Größe: Geben Sie die Anzahl der Bilder pro Batch mit einer ganzen Zahl an (z. B. batch=16), oder Auto-Modus mit angegebener Auslastungsfraktion (
  • Auto-Modus (60% GPU-Speicher): Verwenden Sie batch=-1 zur automatischen Anpassung an ca. 60 % CUDA-Speicherauslastung.
  • Auto-Modus mit Auslastungsanteil: Legen Sie einen Bruchteil fest (z. B. batch=0.70) zur Anpassung basierend auf einer bestimmten GPU-Speichernutzung.

Trainingsanleitung

Vorhersageeinstellungen

Die Vorhersageeinstellungen für YOLO-Modelle umfassen Hyperparameter und Konfigurationen, die die Leistung, Geschwindigkeit und Genauigkeit während der Inferenz beeinflussen. Zu den wichtigsten Einstellungen gehören der Konfidenzschwellenwert, der Non-Maximum Suppression (NMS)-Schwellenwert und die Anzahl der Klassen. Die Größe der Eingabedaten, das Format und zusätzliche Funktionen wie Masken beeinflussen ebenfalls die Vorhersagen. Die Optimierung dieser Einstellungen ist für eine optimale Leistung unerlässlich.

Inferenzargumente:

Argument Typ Standard Beschreibung
source str 'ultralytics/assets' Gibt die Datenquelle für die Inferenz an. Dies kann ein Bildpfad, eine Videodatei, ein Verzeichnis, eine URL oder eine Geräte-ID für Live-Feeds sein. Unterstützt eine breite Palette von Formaten und Quellen und ermöglicht so eine flexible Anwendung über verschiedene Arten von Eingaben hinweg.
conf float 0.25 Legt den minimalen Konfidenzschwellenwert für Erkennungen fest. Objekte, die mit einer Konfidenz unterhalb dieses Schwellenwerts erkannt werden, werden ignoriert. Das Anpassen dieses Werts kann helfen, falsch positive Ergebnisse zu reduzieren.
iou float 0.7 Intersection Over Union (IoU)-Schwellenwert für Non-Maximum Suppression (NMS). Niedrigere Werte führen zu weniger Erkennungen, da überlappende Boxen eliminiert werden, was zur Reduzierung von Duplikaten nützlich ist.
imgsz int oder tuple 640 Definiert die Bildgröße für die Inferenz. Dies kann eine einzelne ganze Zahl 640 für die quadratische Größenänderung oder ein (Höhe, Breite)-Tupel sein. Die richtige Größe kann die Erkennung verbessern Genauigkeit und die Verarbeitungsgeschwindigkeit erhöhen.
rect bool True Wenn aktiviert, wird die kürzere Seite des Bildes minimal mit Nullen aufgefüllt, bis sie durch den Stride-Wert teilbar ist, um die Inferenzgeschwindigkeit zu verbessern. Wenn deaktiviert, wird das Bild während der Inferenz zu einem Quadrat aufgefüllt.
half bool False Ermöglicht die Halb-Präzisions-(FP16)-Inferenz, die die Modellinferenz auf unterstützten GPUs mit minimalen Auswirkungen auf die Genauigkeit beschleunigen kann.
device str None Gibt das Gerät für die Inferenz an (z. B. cpu, cuda:0 oder 0). Ermöglicht es Benutzern, zwischen CPU, einer bestimmten GPU oder anderen Rechengeräten für die Modellausführung zu wählen.
batch int 1 Gibt die Batch-Größe für die Inferenz an (funktioniert nur, wenn die Quelle ein Verzeichnis, eine Videodatei oder .txt Datei definiert). Eine größere Batch-Größe kann einen höheren Durchsatz ermöglichen und die für die Inferenz benötigte Gesamtzeit verkürzen.
max_det int 300 Maximale Anzahl von Erkennungen, die pro Bild zulässig sind. Begrenzt die Gesamtzahl der Objekte, die das Modell in einer einzelnen Inferenz erkennen kann, und verhindert so übermäßige Ausgaben in dichten Szenen.
vid_stride int 1 Frame-Schrittweite für Videoeingaben. Ermöglicht das Überspringen von Frames in Videos, um die Verarbeitung auf Kosten der zeitlichen Auflösung zu beschleunigen. Ein Wert von 1 verarbeitet jeden Frame, höhere Werte überspringen Frames.
stream_buffer bool False Bestimmt, ob eingehende Frames für Videostreams in die Warteschlange eingereiht werden sollen. Wenn False, alte Frames werden verworfen, um Platz für neue Frames zu schaffen (optimiert für Echtzeitanwendungen). Wenn True, reiht neue Frames in einem Puffer ein, wodurch sichergestellt wird, dass keine Frames übersprungen werden, was jedoch zu Latenz führt, wenn die Inferenz-FPS niedriger ist als die Stream-FPS.
visualize bool False Aktiviert die Visualisierung von Modellmerkmalen während der Inferenz und bietet Einblicke in das, was das Modell "sieht". Nützlich für das Debugging und die Modellinterpretation.
augment bool False Aktiviert Testzeit-Augmentierung (TTA) für Vorhersagen, was potenziell die Robustheit der Erkennung auf Kosten der Inferenzgeschwindigkeit verbessert.
agnostic_nms bool False Aktiviert klassenunabhängige Non-Maximum Suppression (NMS), die überlappende Boxen verschiedener Klassen zusammenführt. Nützlich in Multi-Klassen-Erkennungsszenarien, in denen Klassenüberlappung häufig vorkommt.
classes list[int] None Filtert Vorhersagen auf eine Menge von Klassen-IDs. Es werden nur Erkennungen zurückgegeben, die zu den angegebenen Klassen gehören. Nützlich, um sich auf relevante Objekte in Multi-Klassen-Erkennungsaufgaben zu konzentrieren.
retina_masks bool False Gibt hochauflösende Segmentierungsmasken zurück. Die zurückgegebenen Masken (masks.data) entsprechen der Originalbildgröße, wenn diese aktiviert ist. Wenn sie deaktiviert ist, haben sie die Bildgröße, die während der Inferenz verwendet wurde.
embed list[int] None Gibt die Layer an, aus denen Feature-Vektoren oder Einbettungen extrahiert werden sollen. Nützlich für nachgelagerte Aufgaben wie Clustering oder Ähnlichkeitssuche.
project str None Name des Projektverzeichnisses, in dem Vorhersageausgaben gespeichert werden, wenn save aktiviert ist.
name str None Name des Vorhersagelaufs. Wird zum Erstellen eines Unterverzeichnisses innerhalb des Projektordners verwendet, in dem Vorhersageausgaben gespeichert werden, wenn save aktiviert ist.
stream bool False Ermöglicht eine speichereffiziente Verarbeitung für lange Videos oder zahlreiche Bilder, indem ein Generator von Ergebnisobjekten zurückgegeben wird, anstatt alle Frames auf einmal in den Speicher zu laden.
verbose bool True Steuert, ob detaillierte Inferenzprotokolle im Terminal angezeigt werden sollen, um in Echtzeit Feedback zum Vorhersageprozess zu geben.

Visualisierungsargumente:

Argument Typ Standard Beschreibung
show bool False Wenn Trueaktiviert, werden die annotierten Bilder oder Videos in einem Fenster angezeigt. Nützlich für sofortiges visuelles Feedback während der Entwicklung oder des Testens.
save bool False or True Ermöglicht das Speichern der annotierten Bilder oder Videos in einer Datei. Nützlich für die Dokumentation, weitere Analysen oder das Teilen von Ergebnissen. Standardmäßig auf True gesetzt, wenn die CLI verwendet wird, und auf False, wenn Python verwendet wird.
save_frames bool False Beim Verarbeiten von Videos werden einzelne Frames als Bilder gespeichert. Nützlich, um bestimmte Frames zu extrahieren oder eine detaillierte Frame-für-Frame-Analyse durchzuführen.
save_txt bool False Speichert Erkennungsergebnisse in einer Textdatei, wobei folgendes Format verwendet wird: [class] [x_center] [y_center] [width] [height] [confidence]. Nützlich für die Integration mit anderen Analysetools.
save_conf bool False Fügt Konfidenzwerte in die gespeicherten Textdateien ein. Erweitert die für die Nachbearbeitung und Analyse verfügbaren Details.
save_crop bool False Speichert zugeschnittene Bilder von Erkennungen. Nützlich für die Datensatzaugmentation, Analyse oder Erstellung fokussierter Datensätze für bestimmte Objekte.
show_labels bool True Zeigt Beschriftungen für jede Erkennung in der visuellen Ausgabe an. Ermöglicht ein sofortiges Verständnis der erkannten Objekte.
show_conf bool True Zeigt den Konfidenzwert für jede Erkennung zusammen mit der Beschriftung an. Gibt Einblick in die Sicherheit des Modells für jede Erkennung.
show_boxes bool True Zeichnet Begrenzungsrahmen um erkannte Objekte. Wesentlich für die visuelle Identifizierung und Lokalisierung von Objekten in Bildern oder Videoframes.
line_width None or int None Gibt die Linienbreite der Begrenzungsrahmen an. Wenn None, wird die Linienbreite automatisch an die Bildgröße angepasst. Bietet eine visuelle Anpassung für mehr Klarheit.

Anleitung zur Vorhersage

Validierungseinstellungen

Validierungseinstellungen für YOLO-Modelle umfassen Hyperparameter und Konfigurationen zur Bewertung der Leistung auf einem Validierungsdatensatz. Diese Einstellungen beeinflussen Leistung, Geschwindigkeit und Genauigkeit. Zu den gängigen Einstellungen gehören Batch-Größe, Validierungshäufigkeit und Leistungsmetriken. Die Größe und Zusammensetzung des Validierungsdatensatzes sowie die spezifische Aufgabe beeinflussen ebenfalls den Prozess.

Argument Typ Standard Beschreibung
data str None Gibt den Pfad zur Datensatzkonfigurationsdatei an (z. B. coco8.yaml). Diese Datei enthält Pfade zu Validierungsdaten, Klassennamen und Anzahl der Klassen.
imgsz int 640 Definiert die Größe der Eingabebilder. Alle Bilder werden vor der Verarbeitung auf diese Dimension skaliert. Größere Formate können die Genauigkeit bei kleinen Objekten verbessern, erhöhen aber die Rechenzeit.
batch int 16 Legt die Anzahl der Bilder pro Batch fest. Höhere Werte nutzen den GPU-Speicher effizienter, benötigen aber mehr VRAM. Anpassen basierend auf den verfügbaren Hardwareressourcen.
save_json bool False Wenn True, speichert die Ergebnisse in einer JSON-Datei zur weiteren Analyse, Integration mit anderen Tools oder zur Einreichung bei Bewertungsservern wie COCO.
conf float 0.001 Legt den minimalen Konfidenzschwellenwert für Erkennungen fest. Niedrigere Werte erhöhen die Trefferquote, können aber mehr falsch positive Ergebnisse verursachen. Wird während der Validierung verwendet, um Precision-Recall-Kurven zu berechnen.
iou float 0.7 Legt den Intersection Over Union-Schwellenwert für die Non-Maximum Suppression fest. Steuert die Eliminierung von Duplikaten.
max_det int 300 Begrenzt die maximale Anzahl von Erkennungen pro Bild. Nützlich in dichten Szenen, um übermäßige Erkennungen zu verhindern und Rechenressourcen zu verwalten.
half bool True Aktiviert die Halb-precision (FP16)-Berechnung, wodurch der Speicherverbrauch reduziert und potenziell die Geschwindigkeit erhöht wird, mit minimalen Auswirkungen auf die Genauigkeit.
device str None Gibt das Gerät für die Validierung an (cpu, cuda:0, usw.). Wenn None, wählt automatisch das beste verfügbare Gerät aus. Mehrere CUDA-Geräte können durch Kommas getrennt angegeben werden.
dnn bool False Wenn True, verwendet das OpenCV DNN-Modul für die ONNX-Modellinferenz, das eine Alternative zu PyTorch Inferenzmethoden bietet.
plots bool False Wenn aktiviert, True, generiert und speichert Diagramme von Vorhersagen im Vergleich zur Ground Truth, Konfusionsmatrizen und PR-Kurven zur visuellen Bewertung der Modellleistung.
classes list[int] None Gibt eine Liste von Klassen-IDs an, auf denen trainiert werden soll. Nützlich, um bestimmte Klassen während der Evaluierung herauszufiltern und sich nur auf diese zu konzentrieren.
rect bool True Wenn True, verwendet rechteckige Inferenz für Batch-Verarbeitung, wodurch das Padding reduziert und potenziell die Geschwindigkeit und Effizienz durch die Verarbeitung von Bildern in ihrem ursprünglichen Seitenverhältnis erhöht wird.
split str 'val' Bestimmt die Datensatzaufteilung, die für die Validierung verwendet werden soll (val, test, oder train). Ermöglicht Flexibilität bei der Auswahl des Datensegments für die Leistungsbewertung.
project str None Name des Projektverzeichnisses, in dem Validierungsausgaben gespeichert werden. Hilft bei der Organisation von Ergebnissen aus verschiedenen Experimenten oder Modellen.
name str None Name des Validierungslaufs. Wird verwendet, um ein Unterverzeichnis innerhalb des Projektordners zu erstellen, in dem Validierungsprotokolle und -ausgaben gespeichert werden.
verbose bool False Wenn True, zeigt detaillierte Informationen während des Validierungsprozesses an, einschließlich Metriken pro Klasse, Batch-Fortschritt und zusätzlichen Debugging-Informationen.
save_txt bool False Wenn True, speichert Erkennungsergebnisse in Textdateien, mit einer Datei pro Bild, nützlich für weitere Analysen, benutzerdefinierte Nachbearbeitung oder die Integration mit anderen Systemen.
save_conf bool False Wenn True, enthält Konfidenzwerte in den gespeicherten Textdateien, wenn save_txt ist aktiviert und bietet eine detailliertere Ausgabe für Analyse und Filterung.
workers int 8 Anzahl der Worker-Threads für das Laden von Daten. Höhere Werte können die Datenvorverarbeitung beschleunigen, aber die CPU-Auslastung erhöhen. Die Einstellung 0 verwendet den Haupt-Thread, der in einigen Umgebungen stabiler sein kann.
augment bool False Ermöglicht Testzeit-Augmentation (TTA) während der Validierung, was potenziell die Erkennungsgenauigkeit auf Kosten der Inferenzgeschwindigkeit verbessert, indem die Inferenz auf transformierten Versionen der Eingabe ausgeführt wird.
agnostic_nms bool False Ermöglicht klassenunabhängige Non-Maximum Suppression, die überlappende Boxen unabhängig von ihrer vorhergesagten Klasse zusammenführt. Nützlich für instanzfokussierte Anwendungen.
single_cls bool False Behandelt alle Klassen während der Validierung als eine einzige Klasse. Dies ist nützlich, um die Modellleistung bei binären Erkennungsaufgaben zu bewerten oder wenn Klassenunterscheidungen keine Rolle spielen.
visualize bool False Visualisiert die Ground Truths, True Positives, False Positives und False Negatives für jedes Bild. Nützlich für das Debugging und die Modellinterpretation.

Sorgfältige Abstimmung und Experimente sind entscheidend, um eine optimale Leistung sicherzustellen und Überanpassung zu erkennen und zu verhindern.

Val-Anleitung

Exporteinstellungen

Die Exporteinstellungen für YOLO-Modelle umfassen Konfigurationen zum Speichern oder Exportieren des Modells zur Verwendung in verschiedenen Umgebungen. Diese Einstellungen wirken sich auf Leistung, Größe und Kompatibilität aus. Zu den wichtigsten Einstellungen gehören das exportierte Dateiformat (z. B. ONNX, TensorFlow SavedModel), das Zielgerät (z. B. CPU, GPU) und Funktionen wie Masken. Die Aufgabe des Modells und die Einschränkungen der Zielumgebung beeinflussen ebenfalls den Exportprozess.

Argument Typ Standard Beschreibung
format str 'torchscript' Zielformat für das exportierte Modell, wie z. B. 'onnx', 'torchscript', 'engine' (TensorRT) oder andere. Jedes Format ermöglicht die Kompatibilität mit verschiedenen Bereitstellungsumgebungen.
imgsz int oder tuple 640 Gewünschte Bildgröße für die Modelleingabe. Kann eine ganze Zahl für quadratische Bilder sein (z. B. 640 für 640×640) oder ein Tupel (height, width) für bestimmte Abmessungen sein.
keras bool False Ermöglicht den Export in das Keras-Format für TensorFlow SavedModel und bietet Kompatibilität mit TensorFlow Serving und APIs.
optimize bool False Wendet die Optimierung für mobile Geräte beim Exportieren nach TorchScript an, wodurch potenziell die Modellgröße reduziert und die Inferenz-Leistung verbessert wird. Nicht kompatibel mit dem NCNN-Format oder CUDA-Geräten.
half bool False Aktiviert die FP16-Quantisierung (halbe Präzision), wodurch die Modellgröße reduziert und die Inferenz auf unterstützter Hardware potenziell beschleunigt wird. Nicht kompatibel mit INT8-Quantisierung oder CPU-only-Exporten für ONNX.
int8 bool False Aktiviert die INT8-Quantisierung, wodurch das Modell weiter komprimiert und die Inferenz mit minimalem Genauigkeitsverlust beschleunigt wird, hauptsächlich für Edge-Geräte. Bei Verwendung mit TensorRT wird eine Post-Training-Quantisierung (PTQ) durchgeführt.
dynamic bool False Ermöglicht dynamische Eingabegrößen für ONNX-, TensorRT- und OpenVINO-Exporte, wodurch die Flexibilität bei der Verarbeitung unterschiedlicher Bilddimensionen erhöht wird. Automatisch gesetzt auf True bei Verwendung von TensorRT mit INT8.
simplify bool True Vereinfacht den Modellgraphen für ONNX-Exporte mit onnxslim, was potenziell die Leistung und Kompatibilität mit Inferenz-Engines verbessert.
opset int None Gibt die ONNX-Opset-Version für die Kompatibilität mit verschiedenen ONNX-Parsern und -Laufzeitumgebungen an. Wenn nicht festgelegt, wird die neueste unterstützte Version verwendet.
workspace float oder None None Legt die maximale Workspace-Größe in GiB fest für TensorRT Optimierungen, die ein Gleichgewicht zwischen Speichernutzung und Leistung herstellen. Verwenden Sie None zur automatischen Zuweisung durch TensorRT bis zum Gerätemaximum.
nms bool False Fügt dem exportierten Modell, falls unterstützt, Non-Maximum Suppression (NMS) hinzu (siehe Exportformate), wodurch die Effizienz der Nachbearbeitung der Erkennung verbessert wird. Nicht verfügbar für End-to-End-Modelle.
batch int 1 Gibt die Batch-Inferenzgröße des Exportmodells oder die maximale Anzahl von Bildern an, die das exportierte Modell gleichzeitig verarbeitet in predict Modus. Für Edge TPU-Exporte wird dies automatisch auf 1 gesetzt.
device str None Gibt das Gerät für den Export an: GPU (device=0), CPU (device=cpu), MPS für Apple Silicon (device=mps) oder DLA für NVIDIA Jetson (device=dla:0 oder device=dla:1). TensorRT-Exporte verwenden automatisch die GPU.
data str 'coco8.yaml' Pfad zu der Datensatz Konfigurationsdatei (Standard: coco8.yaml), unerlässlich für die INT8-Quantisierungskalibrierung. Wenn nicht mit aktivierter INT8 angegeben, wird ein Standard-Datensatz zugewiesen.
fraction float 1.0 Gibt den Bruchteil des Datensatzes an, der für die INT8-Quantisierungskalibrierung verwendet werden soll. Ermöglicht die Kalibrierung auf einer Teilmenge des vollständigen Datensatzes, was für Experimente oder bei begrenzten Ressourcen nützlich ist. Wenn nicht mit aktiviertem INT8 angegeben, wird der vollständige Datensatz verwendet.

Eine durchdachte Konfiguration stellt sicher, dass das exportierte Modell für seinen Anwendungsfall optimiert ist und in der Zielumgebung effektiv funktioniert.

Export-Anleitung

Lösungseinstellungen

Die Konfigurationseinstellungen von Ultralytics Solutions bieten Flexibilität bei der Anpassung von Modellen für Aufgaben wie Objektzählung, Heatmap-Erstellung, Trainingsverfolgung, Datenanalyse, Zonenverfolgung, Warteschlangenverwaltung und regionenbasierte Zählung. Diese Optionen ermöglichen einfache Anpassungen für genaue und nützliche Ergebnisse, die auf spezifische Bedürfnisse zugeschnitten sind.

Argument Typ Standard Beschreibung
model str None Pfad zur Ultralytics YOLO Modelldatei.
region list '[(20, 400), (1260, 400)]' Liste der Punkte, die den Zählbereich definieren.
show_in bool True Flag zur Steuerung, ob die In-Zählungen im Videostream angezeigt werden sollen.
show_out bool True Flag zur Steuerung, ob die Out-Zählungen im Videostream angezeigt werden sollen.
analytics_type str line Art des Graphen, d.h. line, bar, area, oder pie.
colormap int cv2.COLORMAP_JET Zu verwendende Colormap für die Heatmap.
json_file str None Pfad zur JSON-Datei, die alle Parkkoordinatendaten enthält.
up_angle float 145.0 Winkelgrenzwert für die 'Aufwärts'-Pose.
kpts list[int, int, int] '[6, 8, 10]' Liste der Schlüsselpunkte, die zur Überwachung von Trainingseinheiten verwendet werden. Diese Schlüsselpunkte entsprechen Körpergelenken oder -teilen, wie z. B. Schultern, Ellbogen und Handgelenken, für Übungen wie Liegestütze, Klimmzüge, Kniebeugen und Bauchmuskeltraining.
down_angle float 90.0 Winkelgrenzwert für die 'Abwärts'-Pose.
blur_ratio float 0.5 Passt den Prozentsatz der Unschärfeintensität an, mit Werten im Bereich 0.1 - 1.0.
crop_dir str 'cropped-detections' Verzeichnisname zum Speichern zugeschnittener Erkennungen.
records int 5 Gesamtzahl der Erkennungen, um eine E-Mail mit einem Sicherheitsalarmsystem auszulösen.
vision_point tuple[int, int] (20, 20) Der Punkt, an dem Vision Objekte verfolgt und Pfade mithilfe der VisionEye-Lösung zeichnet.
source str None Pfad zur Eingangsquelle (Video, RTSP usw.). Nur mit der Solutions-Befehlszeilenschnittstelle (CLI) verwendbar.
figsize tuple[int, int] (12.8, 7.2) Figurengröße für Analyse-Diagramme wie Heatmaps oder Graphen.
fps float 30.0 Frames pro Sekunde, die für Geschwindigkeitsberechnungen verwendet werden.
max_hist int 5 Maximale Anzahl historischer Punkte, die pro Objekt für Geschwindigkeits-/Richtungsberechnungen verfolgt werden sollen.
meter_per_pixel float 0.05 Skalierungsfaktor, der für die Umwandlung von Pixelabständen in reale Einheiten verwendet wird.
max_speed int 120 Maximale Geschwindigkeitsbegrenzung in visuellen Overlays (wird in Warnmeldungen verwendet).
data str 'images' Pfad zum Bildverzeichnis, das für die Ähnlichkeitssuche verwendet wird.

Lösungsleitfaden

Augmentierungseinstellungen

Datenaugmentierungs-Techniken sind essenziell, um die Robustheit und Leistung von YOLO-Modellen zu verbessern, indem sie die Variabilität in die Trainingsdaten einführen und dem Modell helfen, sich besser auf unbekannte Daten zu generalisieren. Die folgende Tabelle umreißt den Zweck und die Wirkung jedes Augmentierungsarguments:

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.

Passen Sie diese Einstellungen an, um die Anforderungen des Datensatzes und der Aufgabe zu erfüllen. Das Experimentieren mit verschiedenen Werten kann helfen, die optimale Augmentationsstrategie für die beste Modellleistung zu finden.

Augmentierungsanleitung

Einstellungen für Protokollierung, Checkpoints und Diagramme

Protokollierung, Checkpoints, Plotting und Dateiverwaltung sind wichtig beim Trainieren eines YOLO-Modells:

  • Protokollierung: Verfolgen Sie den Fortschritt des Modells und diagnostizieren Sie Probleme mithilfe von Bibliotheken wie TensorBoard oder durch Schreiben in eine Datei.
  • Checkpoints: Speichern Sie das Modell in regelmäßigen Abständen, um das Training fortzusetzen oder mit verschiedenen Konfigurationen zu experimentieren.
  • Plotten: Visualisieren Sie Leistung und Trainingsfortschritt mithilfe von Bibliotheken wie Matplotlib oder TensorBoard.
  • Dateiverwaltung: Organisieren Sie Dateien, die während des Trainings generiert wurden, wie z. B. Checkpoints, Protokolldateien und Diagramme, für einfachen Zugriff und Analyse.

Ein effektives Management dieser Aspekte hilft, den Fortschritt zu verfolgen und erleichtert das Debugging und die Optimierung.

Argument Standard Beschreibung
project 'runs' Gibt den Betriebsmodus des YOLO-Modells an:
name 'exp' Definiert den Namen des Experiments. Wenn nicht angegeben, erhöht YOLO diesen Namen für jeden Lauf (z. B. exp, exp2) um ein Überschreiben zu vermeiden.
exist_ok False Bestimmt, ob ein vorhandenes Experimentverzeichnis überschrieben werden soll. True erlaubt das Überschreiben; False es verhindert wird.
plots False Steuert die Erstellung und das Speichern von Trainings- und Validierungsdiagrammen. Auf True um Diagramme wie Verlustkurven zu erstellen, Präzision-Recall Kurven und Beispielvorhersagen zur visuellen Verfolgung der Leistung.
save False Ermöglicht das Speichern von Trainings-Checkpoints und endgültigen Modellgewichten. Setzen Sie auf True um Modellzustände periodisch zu speichern, was die Wiederaufnahme des Trainings oder die Modellbereitstellung ermöglicht.

FAQ

Wie kann ich die Leistung meines YOLO-Modells während des Trainings verbessern?

Verbessern Sie die Leistung, indem Sie Hyperparameter wie Batch-Größe, Lernrate, Momentum und Weight Decay optimieren. Passen Sie die Datenerweiterungs-Einstellungen an, wählen Sie den richtigen Optimierer aus und verwenden Sie Techniken wie Early Stopping oder Mixed Precision. Weitere Informationen finden Sie im Trainingsleitfaden.

Welche Schlüssel-Hyperparameter gibt es für die Genauigkeit von YOLO-Modellen?

Zu den wichtigsten Hyperparametern, die die Genauigkeit beeinflussen, gehören:

  • Batch-Größe (batch): Größere Größen können das Training stabilisieren, benötigen aber mehr Speicher.
  • Lernrate (lr0): Kleinere Raten ermöglichen feine Anpassungen, aber eine langsamere Konvergenz.
  • Momentum (momentum): Beschleunigt Gradientenvektoren und dämpft Oszillationen.
  • Bildgröße (imgsz): Größere Größen verbessern die Genauigkeit, erhöhen aber die Rechenlast.

Passen Sie diese an Ihre Daten und Hardware an. Erfahren Sie mehr unter Train Settings.

Wie lege ich die Lernrate für das Training eines YOLO-Modells fest?

Die Lernrate (lr0) ist entscheidend; beginnen Sie mit 0.01 für SGD oder 0.001 für Adam-Optimierer. Überwachen Sie die Metriken und passen Sie sie nach Bedarf an. Verwenden Sie Cosinus-Lernraten-Scheduler (cos_lr) oder Warmup (warmup_epochs, warmup_momentum). Details finden Sie im Trainingsanleitung.

Was sind die Standardeinstellungen für die Inferenz bei YOLO-Modellen?

Zu den Standardeinstellungen gehören:

  • Konfidenzschwellwert (conf=0.25): Minimale Konfidenz für Erkennungen.
  • IoU-Schwellwert (iou=0.7): Für Non-Maximum Suppression (NMS).
  • Bildgröße (imgsz=640): Ändert die Größe von Eingangsbildern.
  • Gerät (device=None): Wählt CPU oder GPU aus.

Einen vollständigen Überblick finden Sie unter Vorhersageeinstellungen und im Leitfaden zur Vorhersage.

Warum Mixed-Precision-Training mit YOLO-Modellen verwenden?

Gemischte Präzision Training (amp=True) reduziert die Speichernutzung und beschleunigt das Training mit FP16 und FP32. Es ist vorteilhaft für moderne GPUs, da es größere Modelle und schnellere Berechnungen ohne signifikanten Genauigkeitsverlust ermöglicht. Erfahren Sie mehr im Trainingsanleitung.



📅 Erstellt vor 1 Jahr ✏️ Aktualisiert vor 2 Monaten

Kommentare