Konfiguration
YOLO Einstellungen und Hyperparameter spielen eine entscheidende Rolle für die Leistung, Geschwindigkeit und Genauigkeit des Modells. Diese Einstellungen und Hyperparameter können das Verhalten des Modells in verschiedenen Phasen des Modellentwicklungsprozesses, einschließlich Training, Validierung und Vorhersage, beeinflussen.
Beobachten: Mastering Ultralytics YOLO : Konfiguration
Ultralytics Befehle verwenden die folgende Syntax:
Beispiel
Wo:
TASK
(fakultativ) ist eine von (erkennen., Segment, einordnen., Pose, obb)MODE
(erforderlich) ist eine von (Zug, val, vorhersagen, exportieren, Spur, Benchmark)ARGS
(fakultativ) sindarg=value
Paare wieimgsz=640
die die Standardeinstellungen außer Kraft setzen.
Standard ARG
Werte werden auf dieser Seite aus dem cfg/defaults.yaml
Datei.
Aufgaben
YOLO Modelle können für eine Vielzahl von Aufgaben verwendet werden, darunter Erkennung, Segmentierung, Klassifizierung und Pose. Diese Aufgaben unterscheiden sich durch die Art der Ausgabe, die sie erzeugen, und durch das spezifische Problem, das sie lösen sollen.
- Erkennen: Zur Identifizierung und Lokalisierung von Objekten oder Bereichen von Interesse in einem Bild oder Video.
- Segment: Zur Unterteilung eines Bildes oder Videos in Regionen oder Pixel, die verschiedenen Objekten oder Klassen entsprechen.
- Klassifizieren: Zur Vorhersage der Klassenbezeichnung eines Eingabebildes.
- Pose: Zur Identifizierung von Objekten und zur Schätzung ihrer Hauptpunkte in einem Bild oder Video.
- OBB: Orientierte (d.h. gedrehte) Bounding Boxes, geeignet für Satellitenbilder oder medizinische Bilder.
Argument | Standard | Beschreibung |
---|---|---|
task |
'detect' |
Gibt die auszuführende Aufgabe YOLO an. Die Optionen umfassen detect für Objekterkennung, segment für die Segmentierung, classify für die Klassifizierung, pose für die Posenschätzung und obb für orientierte Begrenzungsrahmen. Jede Aufgabe ist auf bestimmte Arten von Ausgaben und Problemen bei der Bild- und Videoanalyse zugeschnitten. |
Modi
YOLO Modelle können in verschiedenen Modi verwendet werden, je nach dem spezifischen Problem, das Sie zu lösen versuchen. Diese Modi umfassen:
- Trainieren: Zum Trainieren eines YOLO11 Modells auf einem benutzerdefinierten Datensatz.
- Val: Zur Validierung eines YOLO11 Modells, nachdem es trainiert wurde.
- Vorhersagen: Zur Erstellung von Vorhersagen anhand eines trainierten YOLO11 Modells für neue Bilder oder Videos.
- Exportieren: Zum Exportieren eines YOLO11 Modells in ein Format, das für die Bereitstellung verwendet werden kann.
- Verfolgen: Zur Verfolgung von Objekten in Echtzeit unter Verwendung eines YOLO11 Modells.
- Benchmarking: Zum Benchmarking der Geschwindigkeit und Genauigkeit der Exporte von YOLO11 (ONNX, TensorRT, etc.).
Argument | Standard | Beschreibung |
---|---|---|
mode |
'train' |
Legt den Modus fest, in dem das Modell YOLO arbeitet. Die Optionen sind train für das Modelltraining, val für die Validierung, predict für die Inferenz auf neue Daten, export für die Konvertierung von Modellen in Bereitstellungsformate, track für die Objektverfolgung, und benchmark für die Leistungsbewertung. Jeder Modus ist für verschiedene Phasen des Modelllebenszyklus konzipiert, von der Entwicklung bis zur Bereitstellung. |
Zug-Einstellungen
Die Trainingseinstellungen für YOLO Modelle umfassen verschiedene Hyperparameter und Konfigurationen, die während des Trainingsprozesses verwendet werden. Diese Einstellungen beeinflussen die Leistung, Geschwindigkeit und Genauigkeit des Modells. Zu den wichtigsten Trainingseinstellungen gehören die Stapelgröße, die Lernrate, das Momentum und der Gewichtsabfall. Auch die Wahl des Optimierers, der Verlustfunktion und der Zusammensetzung des Trainingsdatensatzes kann sich auf den Trainingsprozess auswirken. Eine sorgfältige Abstimmung und das Experimentieren mit diesen Einstellungen sind entscheidend für die Optimierung der Leistung.
Argument | Standard | Beschreibung |
---|---|---|
model |
None |
Gibt die Modelldatei für das Training an. Akzeptiert einen Pfad zu entweder einer .pt vortrainiertes Modell oder ein .yaml Konfigurationsdatei. Unerlässlich für die Definition der Modellstruktur oder die Initialisierung von Gewichten. |
data |
None |
Pfad zur Konfigurationsdatei des Datensatzes (z. B., coco8.yaml ). Diese Datei enthält datensatzspezifische Parameter, einschließlich der Pfade zu den Trainings- und Validierungsdaten, Klassennamen und Anzahl der Klassen. |
epochs |
100 |
Gesamtzahl der Trainingsepochen. Jede Epoche stellt einen vollständigen Durchlauf durch den gesamten Datensatz dar. Die Anpassung dieses Wertes kann sich auf die Trainingsdauer und die Modellleistung auswirken. |
time |
None |
Maximale Trainingszeit in Stunden. Falls festgelegt, übersteuert dies den Wert epochs Argument, so dass das Training nach der angegebenen Dauer automatisch beendet wird. Nützlich für zeitlich eingeschränkte Trainingsszenarien. |
patience |
100 |
Anzahl der Epochen, die ohne Verbesserung der Validierungsmetriken abgewartet werden sollen, bevor das Training vorzeitig beendet wird. Hilft, eine Überanpassung zu verhindern, indem das Training abgebrochen wird, wenn die Leistung nicht mehr ausreicht. |
batch |
16 |
Größe der Chargemit drei Modi: als Ganzzahl (z. B., batch=16 ), Auto-Modus für 60% GPU Speicherauslastung (batch=-1 ), oder Auto-Modus mit festgelegtem Nutzungsanteil (batch=0.70 ). |
imgsz |
640 |
Zielbildgröße für das Training. Alle Bilder werden auf diese Größe gebracht, bevor sie in das Modell eingespeist werden. Beeinflusst die Modellgenauigkeit und den Rechenaufwand. |
save |
True |
Ermöglicht das Speichern von Trainingskontrollpunkten und endgültigen Modellgewichten. Nützlich für die Wiederaufnahme des Trainings oder den Einsatz des Modells. |
save_period |
-1 |
Häufigkeit der Speicherung von Modellprüfpunkten, angegeben in Epochen. Ein Wert von -1 deaktiviert diese Funktion. Nützlich zum Speichern von Zwischenmodellen während langer Trainingssitzungen. |
cache |
False |
Ermöglicht die Zwischenspeicherung von Datensatzbildern im Speicher (True /ram ), auf der Festplatte (disk ), oder deaktiviert sie (False ). Verbessert die Trainingsgeschwindigkeit durch Verringerung der Festplattenein- und -ausgabe auf Kosten einer erhöhten Speichernutzung. |
device |
None |
Gibt das/die Rechengerät(e) für das Training an: eine einzelne GPU (device=0 ), mehrere GPUs (device=0,1 ), CPU (device=cpu ), oder MPS für Apple-Silizium (device=mps ). |
workers |
8 |
Anzahl der Arbeits-Threads für das Laden von Daten (pro RANK wenn Multi-GPU Training). Beeinflusst die Geschwindigkeit der Datenvorverarbeitung und der Einspeisung in das Modell, besonders nützlich in MultiGPU Setups. |
project |
None |
Name des Projektverzeichnisses, in dem die Trainingsergebnisse gespeichert werden. Ermöglicht die organisierte Speicherung verschiedener Experimente. |
name |
None |
Name des Trainingslaufs. Wird zur Erstellung eines Unterverzeichnisses im Projektordner verwendet, in dem Trainingsprotokolle und Ausgaben gespeichert werden. |
exist_ok |
False |
Bei "True" kann ein vorhandenes Projekt/Namensverzeichnis überschrieben werden. Nützlich für iterative Experimente, ohne vorherige Ausgaben manuell löschen zu müssen. |
pretrained |
True |
Legt fest, ob das Training mit einem vorher trainierten Modell beginnen soll. Kann ein boolescher Wert oder ein String-Pfad zu einem bestimmten Modell sein, aus dem die Gewichte geladen werden sollen. Erhöht die Trainingseffizienz und die Modellleistung. |
optimizer |
'auto' |
Auswahl des Optimierers für die Ausbildung. Die Optionen umfassen SGD , Adam , AdamW , NAdam , RAdam , RMSProp usw., oder auto für die automatische Auswahl auf der Grundlage der Modellkonfiguration. Beeinflusst die Konvergenzgeschwindigkeit und Stabilität. |
seed |
0 |
Legt den zufälligen Seed für das Training fest, um die Reproduzierbarkeit der Ergebnisse bei verschiedenen Läufen mit denselben Konfigurationen zu gewährleisten. |
deterministic |
True |
Erzwingt die Verwendung deterministischer Algorithmen, was die Reproduzierbarkeit sicherstellt, aber aufgrund der Beschränkung auf nicht-deterministische Algorithmen Leistung und Geschwindigkeit beeinträchtigen kann. |
single_cls |
False |
Behandelt beim Training alle Klassen in Mehrklassendatensätzen als eine einzige Klasse. Nützlich für binäre Klassifizierungsaufgaben oder wenn der Schwerpunkt eher auf der Anwesenheit von Objekten als auf der Klassifizierung liegt. |
rect |
False |
Ermöglicht rechteckiges Training, wobei die Zusammensetzung der Stapel für minimale Polsterung optimiert wird. Kann die Effizienz und Geschwindigkeit verbessern, kann aber die Modellgenauigkeit beeinträchtigen. |
cos_lr |
False |
Verwendet einen Kosinus-Lernratenplaner, der die Lernrate anhand einer Kosinuskurve über Epochen hinweg anpasst. Hilft bei der Verwaltung der Lernrate für eine bessere Konvergenz. |
close_mosaic |
10 |
Deaktiviert die Mosaikdatenerweiterung in den letzten N Epochen, um das Training vor dem Abschluss zu stabilisieren. Die Einstellung 0 deaktiviert diese Funktion. |
resume |
False |
Setzt das Training ab dem letzten gespeicherten Kontrollpunkt fort. Lädt automatisch Modellgewichte, Optimierungsstatus und Epochenzahl und setzt das Training nahtlos fort. |
amp |
True |
Ermöglicht automatisches Mixed-Precision-Training (AMP), wodurch die Speichernutzung reduziert und das Training möglicherweise mit minimalen Auswirkungen auf die Genauigkeit beschleunigt wird. |
fraction |
1.0 |
Gibt den Teil des Datensatzes an, der für das Training verwendet werden soll. Ermöglicht das Training auf einer Teilmenge des vollständigen Datensatzes, was für Experimente oder bei begrenzten Ressourcen nützlich ist. |
profile |
False |
Ermöglicht die Erstellung von Profilen der Geschwindigkeiten ONNX und TensorRT während des Trainings, was für die Optimierung der Modellbereitstellung nützlich ist. |
freeze |
None |
Friert die ersten N Schichten des Modells oder bestimmte Schichten nach Index ein und reduziert so die Anzahl der trainierbaren Parameter. Nützlich für die Feinabstimmung oder das Transfer-Lernen. |
lr0 |
0.01 |
Anfängliche Lernrate (d.h. SGD=1E-2 , Adam=1E-3 ) . Die Anpassung dieses Wertes ist für den Optimierungsprozess von entscheidender Bedeutung, da er beeinflusst, wie schnell die Modellgewichte aktualisiert werden. |
lrf |
0.01 |
Endgültige Lernrate als Bruchteil der Anfangsrate = (lr0 * lrf ), die in Verbindung mit Schedulern verwendet werden, um die Lernrate im Laufe der Zeit anzupassen. |
momentum |
0.937 |
Momentumfaktor für SGD oder beta1 für Adam-Optimierer, der die Einbeziehung vergangener Gradienten in die aktuelle Aktualisierung beeinflusst. |
weight_decay |
0.0005 |
L2-Regularisierungsterm, der große Gewichte bestraft, um eine Überanpassung zu verhindern. |
warmup_epochs |
3.0 |
Anzahl der Epochen zum Aufwärmen der Lernrate, 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 |
0.8 |
Anfangsschwung für die Aufwärmphase, der sich im Laufe der Aufwärmphase allmählich an den eingestellten Schwung anpasst. |
warmup_bias_lr |
0.1 |
Lernrate für Bias-Parameter während der Aufwärmphase, um das Modelltraining in den ersten Epochen zu stabilisieren. |
box |
7.5 |
Gewicht der Box-Verlustkomponente in der Verlustfunktion, das angibt, wie viel Wert auf die genaue Vorhersage der Bounding-Box-Koordinaten gelegt wird. |
cls |
0.5 |
Gewicht des Klassifizierungsverlusts in der Gesamtverlustfunktion, das die Bedeutung der korrekten Klassenvorhersage im Vergleich zu anderen Komponenten bestimmt. |
dfl |
1.5 |
Gewicht des fokalen Verteilungsverlustes, der in bestimmten Versionen von YOLO für eine feinere Klassifizierung verwendet wird. |
pose |
12.0 |
Gewicht des Pose-Verlustes in Modellen, die für die Pose-Schätzung trainiert wurden, was den Schwerpunkt auf die genaue Vorhersage der Pose-Keypoints legt. |
kobj |
2.0 |
Gewichtung des Objektivitätsverlustes von Schlüsselpunkten in Modellen zur Posenschätzung, wobei die Erkennungssicherheit mit der Posengenauigkeit abgeglichen wird. |
label_smoothing |
0.0 |
Die Glättung von Beschriftungen, die harte Beschriftungen zu einer Mischung aus der Zielbeschriftung und einer gleichmäßigen Verteilung über die Beschriftungen abmildert, kann die Verallgemeinerung verbessern. |
nbs |
64 |
Nominale Chargengröße für die Normalisierung des Verlustes. |
overlap_mask |
True |
Legt fest, ob die Objektmasken für das Training zu einer einzigen Maske zusammengeführt oder für jedes Objekt getrennt gehalten werden sollen. Im Falle einer Überlappung wird die kleinere Maske beim Zusammenführen über die größere Maske gestülpt. |
mask_ratio |
4 |
Downsample-Verhältnis für Segmentierungsmasken, das sich auf die Auflösung der beim Training verwendeten Masken auswirkt. |
dropout |
0.0 |
Dropout-Rate für die Regularisierung bei Klassifizierungsaufgaben, die eine Überanpassung durch zufälliges Auslassen von Einheiten während des Trainings verhindert. |
val |
True |
Ermöglicht die Validierung während des Trainings, so dass die Leistung des Modells in regelmäßigen Abständen anhand eines separaten Datensatzes bewertet werden kann. |
plots |
False |
Erzeugt und speichert Diagramme von Trainings- und Validierungsmetriken sowie Vorhersagebeispiele, die einen visuellen Einblick in die Modellleistung und den Lernfortschritt geben. |
Hinweis zu den Einstellungen der Chargengröße
Die batch
Argument kann auf drei Arten konfiguriert werden:
- Feste Chargengröße: Setzen Sie einen ganzzahligen Wert (z.B.,
batch=16
), wobei die Anzahl der Bilder pro Stapel direkt angegeben wird. - Auto-Modus (60% GPU Speicher): Verwenden Sie
batch=-1
um die Stapelgröße automatisch so anzupassen, dass der Speicher zu etwa 60 % genutzt wird CUDA . - Automatischer Modus mit Auslastungsanteil: Stellen Sie einen Bruchwert ein (z.B.,
batch=0.70
), um die Stapelgröße auf der Grundlage des angegebenen Anteils der GPU Speichernutzung anzupassen.
Einstellungen vorhersagen
Die Vorhersageeinstellungen für YOLO Modelle umfassen eine Reihe von Hyperparametern und Konfigurationen, die die Leistung, Geschwindigkeit und Genauigkeit des Modells bei der Inferenz auf neue Daten beeinflussen. Eine sorgfältige Abstimmung und das Experimentieren mit diesen Einstellungen sind unerlässlich, um eine optimale Leistung für eine bestimmte Aufgabe zu erzielen. Zu den wichtigsten Einstellungen gehören der Konfidenzschwellenwert, der Schwellenwert für die Nicht-Maximum-Unterdrückung (NMS) und die Anzahl der berücksichtigten Klassen. Weitere Faktoren, die sich auf den Vorhersageprozess auswirken, sind die Größe und das Format der Eingabedaten, das Vorhandensein zusätzlicher Merkmale wie Masken oder mehrere Labels pro Box sowie die spezielle Aufgabe, für die das Modell eingesetzt wird.
Argumente für Schlussfolgerungen:
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 für verschiedene Arten von Eingaben. |
conf |
float |
0.25 |
Legt die minimale Vertrauensschwelle für Erkennungen fest. Objekte, die mit einer Konfidenzschwelle unterhalb dieser Schwelle erkannt werden, werden nicht berücksichtigt. Die Anpassung dieses Wertes kann dazu beitragen, Fehlalarme 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 or tuple |
640 |
Bestimmt die Bildgröße für die Inferenz. Kann eine einzelne ganze Zahl sein 640 für quadratische Größenänderungen oder ein Tupel (Höhe, Breite). Eine korrekte Größenanpassung kann die Erkennung verbessern Genauigkeit und Verarbeitungsgeschwindigkeit. |
half |
bool |
False |
Ermöglicht die Inferenz mit halber Genauigkeit (FP16), was 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 dem Benutzer die Auswahl zwischen CPU, einem bestimmten GPU oder anderen Rechengeräten für die Modellausführung. |
max_det |
int |
300 |
Maximal zulässige Anzahl von Erkennungen pro Bild. Begrenzt die Gesamtzahl der Objekte, die das Modell in einer einzigen Schlussfolgerung erkennen kann, um übermäßige Ausgaben in dichten Szenen zu verhindern. |
vid_stride |
int |
1 |
Frame Stride für Videoeingänge. Ermöglicht das Überspringen von Bildern in Videos, um die Verarbeitung auf Kosten der zeitlichen Auflösung zu beschleunigen. Bei einem Wert von 1 wird jedes Bild verarbeitet, bei höheren Werten werden Bilder übersprungen. |
stream_buffer |
bool |
False |
Legt fest, ob eingehende Bilder für Videostreams in eine Warteschlange gestellt werden sollen. Wenn False Wenn `True', werden alte Frames übersprungen, um neue Frames unterzubringen (optimiert für Echtzeitanwendungen). Bei "True" werden neue Frames in einem Puffer in eine Warteschlange gestellt, wodurch sichergestellt wird, dass keine Frames übersprungen werden, was jedoch zu Latenzzeiten führt, wenn die FPS der Inferenz niedriger sind als die FPS des Streams. |
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 die Fehlersuche und Modellinterpretation. |
augment |
bool |
False |
Ermöglicht die Testzeit-Erweiterung (TTA) für Vorhersagen, wodurch die Robustheit der Erkennung auf Kosten der Schlussfolgerungsgeschwindigkeit verbessert werden kann. |
agnostic_nms |
bool |
False |
Ermöglicht die klassenunabhängige Non-Maximum Suppression (NMS), die überlappende Boxen verschiedener Klassen zusammenführt. Nützlich in Szenarien der Mehrklassenerkennung, in denen es häufig zu Klassenüberschneidungen kommt. |
classes |
list[int] |
None |
Filtert Vorhersagen auf einen Satz von Klassen-IDs. Nur Erkennungen, die zu den angegebenen Klassen gehören, werden zurückgegeben. Nützlich für die Konzentration auf relevante Objekte bei Erkennungsaufgaben mit mehreren Klassen. |
retina_masks |
bool |
False |
Gibt hochauflösende Segmentierungsmasken zurück. Die zurückgegebenen Masken (masks.data ) stimmen mit der ursprünglichen Bildgröße überein, wenn sie aktiviert sind. Wenn sie deaktiviert sind, haben sie die bei der Inferenz verwendete Bildgröße. |
embed |
list[int] |
None |
Gibt die Ebenen an, aus denen Merkmalsvektoren oder Einbettungen extrahiert werden sollen. Nützlich für nachgelagerte Aufgaben wie Clustering oder Ähnlichkeitssuche. |
project |
str |
None |
Name des Projektverzeichnisses, in dem die Vorhersageergebnisse gespeichert werden, wenn save aktiviert ist. |
name |
str |
None |
Name des Vorhersagelaufs. Wird zur Erstellung eines Unterverzeichnisses im Projektordner verwendet, in dem die Vorhersageergebnisse gespeichert werden, wenn save aktiviert ist. |
Argumente für die Visualisierung:
Argument | Typ | Standard | Beschreibung |
---|---|---|---|
show |
bool |
False |
Wenn True zeigt die kommentierten Bilder oder Videos in einem Fenster an. Nützlich für sofortiges visuelles Feedback während der Entwicklung oder des Testens. |
save |
bool |
False oder True |
Ermöglicht das Speichern der kommentierten Bilder oder Videos in einer Datei. Nützlich für die Dokumentation, weitere Analysen oder die Weitergabe von Ergebnissen. Standardmäßig True bei Verwendung von CLI und False bei Verwendung in Python. |
save_frames |
bool |
False |
Speichert bei der Verarbeitung von Videos einzelne Frames als Bilder. Nützlich zum Extrahieren bestimmter Frames oder für eine detaillierte Frame-by-Frame-Analyse. |
save_txt |
bool |
False |
Speichert die Erkennungsergebnisse in einer Textdatei, die das folgende Format hat [class] [x_center] [y_center] [width] [height] [confidence] . Nützlich für die Integration mit anderen Analysetools. |
save_conf |
bool |
False |
Enthält Konfidenzwerte in den gespeicherten Textdateien. Verbessert die für die Nachbearbeitung und Analyse verfügbaren Details. |
save_crop |
bool |
False |
Speichert abgeschnittene Bilder von Erkennungen. Nützlich für die Erweiterung von Datensätzen, die Analyse oder die Erstellung gezielter 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 neben der Kennzeichnung auch den Konfidenzwert für jede Erkennung an. Gibt einen Einblick in die Sicherheit des Modells für jede Erkennung. |
show_boxes |
bool |
True |
Zeichnet Begrenzungsrahmen um erkannte Objekte. Unerlässlich für die visuelle Identifizierung und Lokalisierung von Objekten in Bildern oder Videoframes. |
line_width |
None oder int |
None |
Gibt die Linienbreite von Begrenzungsrahmen an. Wenn None wird die Linienbreite automatisch an die Bildgröße angepasst. Bietet visuelle Anpassung für Klarheit. |
Validierungseinstellungen
Die Validierungseinstellungen für YOLO Modelle umfassen verschiedene Hyperparameter und Konfigurationen, mit denen die Leistung des Modells auf einem Validierungsdatensatz bewertet wird. Diese Einstellungen beeinflussen die Leistung, Geschwindigkeit und Genauigkeit des Modells. Zu den üblichen YOLO Validierungseinstellungen gehören die Stapelgröße, die Häufigkeit der Validierung während des Trainings und die Metriken für die Leistungsbewertung. Weitere Faktoren, die den Validierungsprozess beeinflussen, sind die Größe und Zusammensetzung des Validierungsdatensatzes sowie die spezifische Aufgabe, für die das Modell eingesetzt wird.
Argument | Typ | Standard | Beschreibung |
---|---|---|---|
data |
str |
None |
Gibt den Pfad zur Dataset-Konfigurationsdatei an (z. B., coco8.yaml ). Diese Datei enthält Pfade zu Validierungsdaten, Klassennamen und Anzahl der Klassen. |
imgsz |
int |
640 |
Bestimmt die Größe der Eingabebilder. Alle Bilder werden vor der Verarbeitung auf diese Größe angepasst. |
batch |
int |
16 |
Legt die Anzahl der Bilder pro Stapel fest. verwenden -1 für AutoBatch, das sich automatisch an die Verfügbarkeit des GPU Speichers anpasst. |
save_json |
bool |
False |
Wenn True speichert die Ergebnisse in einer JSON-Datei zur weiteren Analyse oder Integration in andere Tools. |
save_hybrid |
bool |
False |
Wenn True speichert eine hybride Version von Beschriftungen, die ursprüngliche Annotationen mit zusätzlichen Modellvorhersagen kombiniert. |
conf |
float |
0.001 |
Legt die minimale Vertrauensschwelle für Erkennungen fest. Erkennungen, deren Konfidenz unter diesem Schwellenwert liegt, werden verworfen. |
iou |
float |
0.6 |
Legt den Schwellenwert für die Überschneidungsunterdrückung (IoU) für die Nicht-Maximum-Unterdrückung (NMS) fest. Hilft bei der Reduzierung von Duplikaterkennungen. |
max_det |
int |
300 |
Begrenzt die maximale Anzahl von Erkennungen pro Bild. Nützlich in dichten Szenen, um übermäßige Erkennungen zu vermeiden. |
half |
bool |
True |
Ermöglicht Berechnungen mit halber Genauigkeit (FP16), wodurch die Speichernutzung reduziert und die Geschwindigkeit bei minimalen Auswirkungen auf die Genauigkeit erhöht werden kann. |
device |
str |
None |
Gibt das Gerät für die Validierung an (cpu , cuda:0 , usw.). Ermöglicht Flexibilität bei der Nutzung von CPU oder GPU Ressourcen. |
dnn |
bool |
False |
Wenn True verwendet die OpenCV DNN-Modul für ONNX Modellinferenz, das eine Alternative zu PyTorch Inferenzmethoden. |
plots |
bool |
False |
Bei Einstellung auf True erzeugt und speichert Diagramme der Vorhersagen im Vergleich zur Grundwahrheit, um die Leistung des Modells visuell zu bewerten. |
rect |
bool |
True |
Wenn True verwendet die rechteckige Inferenz für die Stapelverarbeitung, wodurch das Auffüllen reduziert und die Geschwindigkeit und Effizienz potenziell erhöht werden kann. |
split |
str |
val |
Bestimmt den für die Validierung zu verwendenden Datensatzsplit (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 die Validierungsergebnisse gespeichert werden. |
name |
str |
None |
Name des Validierungslaufs. Wird zur Erstellung eines Unterverzeichnisses im Projektordner verwendet, in dem die Validierungsprotokolle und -ausgaben gespeichert werden. |
Eine sorgfältige Abstimmung und das Experimentieren mit diesen Einstellungen sind entscheidend, um eine optimale Leistung auf dem Validierungsdatensatz zu gewährleisten und eine Überanpassung zu erkennen und zu verhindern.
Einstellungen exportieren
Die Exporteinstellungen für YOLO Modelle umfassen Konfigurationen und Optionen, die sich auf das Speichern oder Exportieren des Modells zur Verwendung in verschiedenen Umgebungen oder Plattformen beziehen. Diese Einstellungen können sich auf die Leistung, Größe und Kompatibilität des Modells mit verschiedenen Systemen auswirken. Zu den wichtigsten Exporteinstellungen gehören das Dateiformat des exportierten Modells (z. B. ONNX, TensorFlow SavedModel ), das Zielgerät (z. B. CPU, GPU) und zusätzliche Funktionen wie Masken oder mehrere Beschriftungen pro Box. Der Exportprozess kann auch von der spezifischen Aufgabe des Modells und den Anforderungen oder Einschränkungen der Zielumgebung oder -plattform beeinflusst werden.
Argument | Typ | Standard | Beschreibung |
---|---|---|---|
format |
str |
'torchscript' |
Zielformat für das exportierte Modell, z. B. 'onnx' , 'torchscript' , 'tensorflow' oder andere, die die Kompatibilität mit verschiedenen Einsatzumgebungen festlegen. |
imgsz |
int oder tuple |
640 |
Gewünschte Bildgröße für die Modelleingabe. Kann eine ganze Zahl für quadratische Bilder oder ein Tupel sein (height, width) für bestimmte Abmessungen. |
keras |
bool |
False |
Ermöglicht den Export in das Keras-Format für TensorFlow SavedModel und bietet Kompatibilität mit TensorFlow und APIs. |
optimize |
bool |
False |
Wendet beim Export nach TorchScript eine Optimierung für mobile Geräte an, wodurch die Modellgröße reduziert und die Leistung verbessert werden kann. |
half |
bool |
False |
Ermöglicht FP16-Quantisierung (mit halber Genauigkeit), wodurch die Modellgröße reduziert und die Inferenz auf unterstützter Hardware möglicherweise beschleunigt wird. |
int8 |
bool |
False |
Aktiviert die INT8-Quantisierung, wodurch das Modell weiter komprimiert und die Inferenz mit minimalem Genauigkeitsverlust beschleunigt wird, vor allem für Randgeräte. |
dynamic |
bool |
False |
Ermöglicht dynamische Eingabegrößen für die Exporte von ONNX, TensorRT und OpenVINO , was die Flexibilität bei der Handhabung unterschiedlicher Bildgrößen erhöht. |
simplify |
bool |
True |
Vereinfacht den Modellgraphen für ONNX Exporte mit onnxslim Dadurch können Leistung und Kompatibilität verbessert werden. |
opset |
int |
None |
Gibt die ONNX opset Version an, um die Kompatibilität mit verschiedenen ONNX Parsern und Laufzeiten zu gewährleisten. Wenn nicht festgelegt, wird die neueste unterstützte Version verwendet. |
workspace |
float |
4.0 |
Legt die maximale Größe des Arbeitsbereichs in GiB für TensorRT -Optimierungen fest, um ein Gleichgewicht zwischen Speichernutzung und Leistung zu schaffen. |
nms |
bool |
False |
Fügt dem CoreML Export die Nicht-Maximum-Unterdrückung (NMS) hinzu, die für eine genaue und effiziente Nachbearbeitung der Erkennung unerlässlich ist. |
batch |
int |
1 |
Gibt die Größe der exportierten Modellstapelinferenz oder die maximale Anzahl der Bilder an, die das exportierte Modell gleichzeitig in predict Modus. |
device |
str |
None |
Gibt das zu exportierende Gerät an: GPU (device=0 ), CPU (device=cpu ), MPS für Apple-Silizium (device=mps ) oder DLA für NVIDIA Jetson (device=dla:0 oder device=dla:1 ). |
Es ist wichtig, diese Einstellungen sorgfältig zu konfigurieren, um sicherzustellen, dass das exportierte Modell für den beabsichtigten Anwendungsfall optimiert ist und in der Zielumgebung effektiv funktioniert.
Einstellungen zur Augmentation
Augmentierungstechniken sind wichtig, um die Robustheit und Leistung von YOLO Modellen zu verbessern, indem sie Variabilität in die Trainingsdaten einbringen und dem Modell helfen, besser auf ungesehene Daten zu generalisieren. In der folgenden Tabelle werden der Zweck und die Auswirkungen der einzelnen Erweiterungsargumente erläutert:
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 Farbvariabilität ein. Hilft dem Modell bei der Verallgemeinerung über verschiedene Lichtverhältnisse hinweg. |
hsv_s |
float |
0.7 |
0.0 - 1.0 |
Ändert die Sättigung des Bildes um einen Bruchteil, wodurch die Intensität der Farben beeinflusst wird. Nützlich für die Simulation verschiedener Umgebungsbedingungen. |
hsv_v |
float |
0.4 |
0.0 - 1.0 |
Ändert den Wert (die Helligkeit) des Bildes um einen Bruchteil, damit das Modell unter verschiedenen Lichtverhältnissen gut funktioniert. |
degrees |
float |
0.0 |
-180 - +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 beim Erkennen von teilweise sichtbaren Objekten. |
scale |
float |
0.5 |
>=0.0 |
Skaliert das Bild mit einem Verstärkungsfaktor, um Objekte in verschiedenen Entfernungen von der Kamera zu simulieren. |
shear |
float |
0.0 |
-180 - +180 |
Schneidet das Bild um einen bestimmten Grad, um den Effekt der Betrachtung von Objekten aus verschiedenen Winkeln zu imitieren. |
perspective |
float |
0.0 |
0.0 - 0.001 |
Wendet eine zufällige perspektivische Transformation auf das Bild an, um die Fähigkeit des Modells zu verbessern, Objekte im 3D-Raum zu verstehen. |
flipud |
float |
0.0 |
0.0 - 1.0 |
Stellt 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. Dies ist nützlich, um symmetrische Objekte zu lernen und die Vielfalt des Datensatzes zu erhöhen. |
bgr |
float |
0.0 |
0.0 - 1.0 |
Kehrt die Bildkanäle mit der angegebenen Wahrscheinlichkeit von RGB zu BGR um, was nützlich ist, um die Robustheit gegenüber einer falschen Kanalanordnung zu erhöhen. |
mosaic |
float |
1.0 |
0.0 - 1.0 |
Kombiniert vier Trainingsbilder zu einem einzigen und simuliert so verschiedene Szenenkompositionen und Objektinteraktionen. Äußerst effektiv für das Verständnis komplexer Szenen. |
mixup |
float |
0.0 |
0.0 - 1.0 |
Mischt zwei Bilder und ihre Beschriftungen, um ein zusammengesetztes Bild zu erzeugen. Verbessert die Verallgemeinerungsfähigkeit des Modells durch Einführung von Beschriftungsrauschen und visueller Variabilität. |
copy_paste |
float |
0.0 |
0.0 - 1.0 |
Kopiert Objekte aus einem Bild und fügt sie in ein anderes ein. Dies ist nützlich, um die Anzahl der Objektinstanzen zu erhöhen und die Objektverdeckung zu lernen. |
copy_paste_mode |
str |
flip |
- | Auswahl der Copy-Paste-Erweiterungsmethode aus den Optionen von ("flip" , "mixup" ). |
auto_augment |
str |
randaugment |
- | Wendet automatisch eine vordefinierte Erweiterungsrichtlinie an (randaugment , autoaugment , augmix ), die durch Diversifizierung der visuellen Merkmale für Klassifizierungsaufgaben optimiert werden. |
erasing |
float |
0.4 |
0.0 - 0.9 |
Löscht einen Teil des Bildes während des Klassifizierungstrainings nach dem Zufallsprinzip, damit sich das Modell bei der Erkennung auf weniger offensichtliche Merkmale konzentrieren kann. |
crop_fraction |
float |
1.0 |
0.1 - 1.0 |
Beschneidet das Klassifizierungsbild auf einen Bruchteil seiner Größe, um die zentralen Merkmale hervorzuheben und sich an den Maßstab des Objekts anzupassen, wodurch die Ablenkung durch den Hintergrund reduziert wird. |
Diese Einstellungen können an die spezifischen Anforderungen des jeweiligen Datensatzes und der jeweiligen Aufgabe angepasst werden. Das Experimentieren mit verschiedenen Werten kann helfen, die optimale Augmentierungsstrategie zu finden, die zur besten Modellleistung führt.
Protokollierung, Kontrollpunkte und Plot-Einstellungen
Logging, Checkpoints, Plotten und Dateiverwaltung sind wichtige Aspekte beim Training eines YOLO Modells.
- Protokollierung: Es ist oft hilfreich, verschiedene Metriken und Statistiken während des Trainings zu protokollieren, um den Fortschritt des Modells zu verfolgen und eventuell auftretende Probleme zu diagnostizieren. Dies kann mit einer Protokollierungsbibliothek wie TensorBoard oder durch das Schreiben von Protokollmeldungen in eine Datei erfolgen.
- Kontrollpunkte: Es ist eine gute Praxis, während des Trainings in regelmäßigen Abständen Kontrollpunkte des Modells zu speichern. So können Sie das Training von einem früheren Punkt aus wieder aufnehmen, wenn der Trainingsprozess unterbrochen wird oder wenn Sie mit verschiedenen Trainingskonfigurationen experimentieren möchten.
- Diagramme erstellen: Die Visualisierung der Leistung des Modells und des Trainingsfortschritts kann hilfreich sein, um zu verstehen, wie sich das Modell verhält und um mögliche Probleme zu identifizieren. Dies kann mit einer Plot-Bibliothek wie matplotlib oder durch die Erzeugung von Plots mit einer Logging-Bibliothek wie TensorBoard erfolgen.
- Dateiverwaltung: Die Verwaltung der verschiedenen Dateien, die während des Trainingsprozesses erzeugt werden, wie z. B. Modellprüfpunkte, Protokolldateien und Diagramme, kann eine Herausforderung darstellen. Es ist wichtig, eine klare und organisierte Dateistruktur zu haben, um den Überblick über diese Dateien zu behalten und den Zugriff und die Analyse bei Bedarf zu erleichtern.
Effektive Protokollierung, Checkpointing, Plotting und Dateiverwaltung helfen Ihnen, den Fortschritt des Modells zu verfolgen und erleichtern die Fehlersuche und Optimierung des Trainingsprozesses.
Argument | Standard | Beschreibung |
---|---|---|
project |
'runs' |
Gibt das Stammverzeichnis zum Speichern von Trainingsläufen an. Jeder Lauf wird in einem eigenen Unterverzeichnis innerhalb dieses Verzeichnisses gespeichert. |
name |
'exp' |
Legt den Namen des Experiments fest. Wenn nichts angegeben wird, erhöht YOLO diesen Namen automatisch für jeden Lauf, z. B., exp , exp2 usw., um das Überschreiben früherer Versuche zu vermeiden. |
exist_ok |
False |
Legt fest, ob ein vorhandenes Experimentierverzeichnis überschrieben werden soll, wenn bereits eines mit demselben Namen existiert. Wenn Sie dies auf True erlaubt das Überschreiben, während False verhindert dies. |
plots |
False |
Steuert die Erstellung und Speicherung von Trainings- und Validierungsdiagrammen. Setzen auf True um Diagramme wie z. B. Verlustkurven zu erstellen, Präzision-Rückruf Kurven und Beispielvorhersagen. Nützlich für die visuelle Verfolgung der Modellleistung im Laufe der Zeit. |
save |
False |
Ermöglicht das Speichern von Trainingskontrollpunkten und endgültigen Modellgewichten. Setzen auf True um die Modellzustände regelmäßig zu speichern, so dass das Training von diesen Kontrollpunkten aus wieder aufgenommen werden kann oder die Modelle eingesetzt werden können. |
FAQ
Wie kann ich die Leistung meines YOLO Modells während des Trainings verbessern?
Die Verbesserung der Leistung des Modells YOLO beinhaltet die Abstimmung von Hyperparametern wie Stapelgröße, Lernrate, Dynamik und Gewichtsabnahme. Die Anpassung der Augmentierungseinstellungen, die Auswahl des richtigen Optimierers und die Anwendung von Techniken wie frühes Stoppen oder gemischte Präzision können ebenfalls hilfreich sein. Eine ausführliche Anleitung zu den Trainingseinstellungen finden Sie im Train Guide.
Was sind die wichtigsten Hyperparameter, die für die Genauigkeit des Modells YOLO zu berücksichtigen sind?
Zu den wichtigsten Hyperparametern, die die Genauigkeit des Modells YOLO beeinflussen, gehören:
- Chargengröße (
batch
): Größere Stapelgrößen können das Training stabilisieren, benötigen aber möglicherweise mehr Speicherplatz. - Lernrate (
lr0
): Steuert die Schrittgröße für Gewichtsaktualisierungen; kleinere Raten bieten feinere Anpassungen, aber eine langsamere Konvergenz. - Momentum (
momentum
): Beschleunigt die Gradientenvektoren in die richtige Richtung und dämpft die Schwingungen. - Bildgröße (
imgsz
): Größere Bilder können die Genauigkeit verbessern, erhöhen aber die Rechenlast.
Passen Sie diese Werte auf der Grundlage Ihres Datensatzes und Ihrer Hardwarefähigkeiten an. Weitere Informationen finden Sie im Abschnitt " Zugeinstellungen ".
Wie stelle ich die Lernrate für das Training eines YOLO Modells ein?
Die Lernrate (lr0
) ist entscheidend für die Optimierung. Ein üblicher Ausgangspunkt ist 0.01
für SGD oder 0.001
für Adam. Es ist wichtig, die Trainingsdaten zu überwachen und bei Bedarf anzupassen. Verwenden Sie Kosinus-Lernraten-Scheduler (cos_lr
) oder Aufwärmtechniken (warmup_epochs
, warmup_momentum
), um die Rate während des Trainings dynamisch zu ändern. Weitere Einzelheiten finden Sie in der Zugführer.
Welches sind die Standardeinstellungen für YOLO Modelle?
Die Standardeinstellungen für Schlussfolgerungen umfassen:
- Konfidenzschwelle (
conf=0.25
): Mindestvertrauen für Entdeckungen. - IoU-Schwellenwert (
iou=0.7
): Für Nicht-Maximum-Unterdrückung (NMS). - Bildgröße (
imgsz=640
): Ändert die Größe der Eingabebilder vor der Inferenz. - Gerät (
device=None
): Wählt CPU oder GPU für die Inferenz aus. Einen umfassenden Überblick finden Sie auf der Website Einstellungen vorhersagen Abschnitt und Abschnitt Leitfaden vorhersagen.
Warum sollte ich gemischtes Präzisionstraining mit YOLO Modellen verwenden?
Gemischtes Präzisionstraining, ermöglicht durch amp=True
Dadurch wird die Speichernutzung reduziert und das Training kann durch die Nutzung der Vorteile von FP16 und FP32 beschleunigt werden. Dies ist vorteilhaft für moderne Grafikprozessoren, die von Haus aus gemischte Präzision unterstützen, so dass mehr Modelle in den Speicher passen und schnellere Berechnungen ohne signifikante Genauigkeitsverluste möglich sind. Mehr darüber erfahren Sie in der Zugführer.