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 beeinflussen, z. B. beim Training, der Validierung und der Vorhersage.
Pass auf: Mastering Ultralytics YOLOv8 : Konfiguration
Ultralytics Befehle verwenden die folgende Syntax:
Beispiel
Wo:
TASK
(optional) ist eine von (erkennen., Segment, klassifizieren, Pose)MODE
(erforderlich) ist eine von (Zug, val, vorhersagen., exportieren, Strecke)ARGS
(optional) sindarg=value
Paare wieimgsz=640
die die Standardeinstellungen außer Kraft setzen.
Standard ARG
Werte werden auf dieser Seite von der cfg/defaults.yaml
Datei.
Aufgaben
YOLO Modelle können für eine Vielzahl von Aufgaben eingesetzt werden, darunter Erkennung, Segmentierung, Klassifizierung und Pose. Diese Aufgaben unterscheiden sich durch die Art der Ergebnisse, die sie produzieren, und durch das spezifische Problem, das sie lösen sollen.
- Erkennen: Zum Identifizieren und Lokalisieren von Objekten oder Regionen 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 Eingangsbildes.
- Pose: Zur Identifizierung von Objekten und zur Schätzung ihrer Hauptpunkte in einem Bild oder Video.
- OBB: Orientierte (d.h. gedrehte) Bounding Boxen, die für Satelliten- oder medizinische Bilder geeignet sind.
Argument | Standard | Beschreibung |
---|---|---|
task |
'detect' |
Gibt die auszuführende YOLO Aufgabe an. Die Optionen umfassen detect für die Objekterkennung, segment für die Segmentierung, classify für die Klassifizierung, pose für die Posenschätzung und OBB für orientierte Bounding Boxes. Jede Aufgabe ist auf bestimmte Arten von Ergebnissen und Problemen bei der Bild- und Videoanalyse zugeschnitten. |
Modi
YOLO Modelle können in verschiedenen Modi verwendet werden, je nachdem, welches Problem du zu lösen versuchst. Diese Modi umfassen:
- Trainieren: Zum Trainieren eines YOLOv8 Modells auf einem benutzerdefinierten Datensatz.
- Val: Zur Validierung eines YOLOv8 Modells, nachdem es trainiert worden ist.
- Vorhersagen: Für Vorhersagen anhand eines trainierten YOLOv8 Modells für neue Bilder oder Videos.
- Exportieren: Zum Exportieren eines YOLOv8 Modells in ein Format, das für die Bereitstellung verwendet werden kann.
- Verfolgen: Zum Verfolgen von Objekten in Echtzeit mit einem YOLOv8 Modell.
- Benchmark: Zum Testen der Geschwindigkeit und Genauigkeit der Exporte von YOLOv8 (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 Rückschlüsse auf neue Daten, export für die Umwandlung von Modellen in Einsatzformate, 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 zum Einsatz. |
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 den Trainingsprozess beeinflussen. 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. Wichtig für die Definition der Modellstruktur oder die Initialisierung der Gewichte. |
data |
None |
Pfad zur Konfigurationsdatei des Datensatzes (z. B., coco8.yaml ). Diese Datei enthält datensatzspezifische Parameter, darunter Pfade zu Trainings- und Validierungsdaten, Klassennamen und die 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 die epochs Argument, so dass das Training nach der angegebenen Dauer automatisch beendet wird. Nützlich für zeitlich begrenzte Trainingsszenarien. |
patience |
100 |
Anzahl der Epochen, die abgewartet werden sollen, bevor das Training vorzeitig abgebrochen wird, ohne dass sich die Validierungskennzahlen verbessern. Hilft, eine Überanpassung zu verhindern, indem das Training abgebrochen wird, wenn die Leistung nicht mehr ausreicht. |
batch |
16 |
Stapelgröße für das Training, die angibt, wie viele Bilder verarbeitet werden, bevor die internen Parameter des Modells aktualisiert werden. AutoBatch (batch=-1 ) passt die Stapelgröße dynamisch an die Verfügbarkeit von GPU-Speicher an. |
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 Trainingseinheiten. |
cache |
False |
Ermöglicht das Zwischenspeichern von Datensatzbildern im Speicher (True /ram ), auf der Festplatte (disk ), oder deaktiviert sie (False ). Verbessert die Trainingsgeschwindigkeit, indem es die Festplattenein- und -ausgabe auf Kosten einer erhöhten Speichernutzung reduziert. |
device |
None |
Legt die Recheneinheit(en) für das Training fest: 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 Worker-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 Multi-GPU-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 für die Erstellung eines Unterverzeichnisses im Projektordner verwendet, in dem die Trainingsprotokolle und -ergebnisse gespeichert werden. |
exist_ok |
False |
Bei True kann ein bestehendes Projekt/Namensverzeichnis überschrieben werden. Nützlich für iterative Experimente, ohne dass die vorherigen Ausgaben manuell gelöscht werden 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, von dem die Gewichte geladen werden sollen. Erhöht die Trainingseffizienz und die Leistung des Modells. |
optimizer |
'auto' |
Wähle einen Optimierer für die Ausbildung. Die Optionen umfassen SGD , Adam , AdamW , NAdam , RAdam , RMSProp usw., oder auto für die automatische Auswahl auf Basis der Modellkonfiguration. Beeinflusst die Konvergenzgeschwindigkeit und Stabilität. |
verbose |
False |
Aktiviert die ausführliche Ausgabe während des Trainings und liefert detaillierte Protokolle und Fortschrittsberichte. Nützlich für die Fehlersuche und die genaue Überwachung des Trainingsprozesses. |
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 alle Klassen in Mehrklassen-Datensätzen beim Training als eine einzige Klasse. Nützlich für binäre Klassifizierungsaufgaben oder wenn der Fokus eher auf der Anwesenheit von Objekten als auf der Klassifizierung liegt. |
rect |
False |
Ermöglicht ein rechteckiges Training, bei dem die Stapelzusammensetzung für minimale Auffüllungen optimiert wird. Dies 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 Steuerung 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. Ein Wert von 0 deaktiviert diese Funktion. |
resume |
False |
Setzt das Training ab dem letzten gespeicherten Kontrollpunkt fort. Lädt automatisch die Modellgewichte, den Optimierungsstatus und die Epochenzahl und setzt das Training nahtlos fort. |
amp |
True |
Ermöglicht ein automatisches Training mit gemischter Präzision (AMP), das die Speichernutzung reduziert und das Training möglicherweise beschleunigt, ohne die Genauigkeit zu beeinträchtigen. |
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 gesamten Datensatzes, was für Experimente oder bei begrenzten Ressourcen nützlich ist. |
profile |
False |
Ermöglicht die Erstellung von Profilen der Geschwindigkeiten von ONNX und TensorRT während des Trainings, was für die Optimierung des Modelleinsatzes 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 Transferlernen. |
lr0 |
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 |
0.01 |
Endgültige Lernrate als ein Bruchteil der anfänglichen Rate = (lr0 * lrf ), die in Verbindung mit Schedulern verwendet werden, um die Lernrate im Laufe der Zeit anzupassen. |
momentum |
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 |
0.0005 |
L2-Regularisierungsterm, der große Gewichte bestraft, um eine Überanpassung zu verhindern. |
warmup_epochs |
3.0 |
Anzahl der Epochen für das 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-Loss-Komponente in der Verlustfunktion, die bestimmt, 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 Verteilungsfokusverlustes, der in bestimmten Versionen von YOLO für eine feinkörnige Klassifizierung verwendet wird. |
pose |
12.0 |
Gewicht des Posenverlusts in Modellen, die für die Posenschätzung trainiert wurden, was den Schwerpunkt auf die genaue Vorhersage der Posen-Keypoints legt. |
kobj |
2.0 |
Gewichtung des Objektivitätsverlusts von Schlüsselpunkten in Modellen zur Posenschätzung, die die Erkennungssicherheit mit der Posengenauigkeit in Einklang bringen. |
label_smoothing |
0.0 |
Die Glättung von Labels, d.h. die Aufweichung harter Labels zu einer Mischung aus dem Ziel-Label und einer gleichmäßigen Verteilung über die Labels, kann die Generalisierung verbessern. |
nbs |
64 |
Nominale Losgröße zur Normalisierung des Verlustes. |
overlap_mask |
True |
Legt fest, ob sich die Segmentierungsmasken während des Trainings überlappen sollen, z. B. bei Instanzsegmentierungsaufgaben. |
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 Weglassen von Einheiten während des Trainings verhindert. |
val |
True |
Ermöglicht die Validierung während des Trainings, so dass die Leistung des Modells regelmäßig an einem separaten Datensatz bewertet werden kann. |
plots |
False |
Erzeugt und speichert Diagramme von Trainings- und Validierungskennzahlen sowie Vorhersagebeispiele, die einen visuellen Einblick in die Modellleistung und den Lernfortschritt geben. |
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 wichtig, um eine optimale Leistung für eine bestimmte Aufgabe zu erreichen. 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 Kästchen und 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. Das 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 geringeren Konfidenz als dieser Schwelle erkannt werden, werden nicht berücksichtigt. Die Anpassung dieses Wertes kann dazu beitragen, Falschmeldungen 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 Kästchen eliminiert werden, was nützlich ist, um Duplikate zu reduzieren. |
imgsz |
int or tuple |
640 |
Legt die Bildgröße für die Inferenz fest. Kann eine einzelne ganze Zahl sein 640 für quadratische Größenänderungen oder ein (Höhe, Breite) Tupel. Die richtige Größenbestimmung kann die Erkennungsgenauigkeit und die Verarbeitungsgeschwindigkeit verbessern. |
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 die Auswahl zwischen einer CPU, einem bestimmten Grafikprozessor oder anderen Recheneinheiten 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 bei der Verarbeitung von Videostreams alle Bilder gepuffert werden sollen (True ), oder ob das Modell den letzten Frame zurückgeben soll (False ). Nützlich für Echtzeitanwendungen. |
visualize |
bool |
False |
Aktiviert die Visualisierung von Modellmerkmalen während der Inferenz und gibt Einblicke in das, was das Modell "sieht". Nützlich für die Fehlersuche und Modellinterpretation. |
augment |
bool |
False |
Ermöglicht die Test-Time-Augmentation (TTA) für Vorhersagen, was die Robustheit der Erkennung auf Kosten der Schlussfolgerungsgeschwindigkeit verbessern 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 mit mehreren Klassen, in denen sich die Klassen häufig überschneiden. |
classes |
list[int] |
None |
Filtert Vorhersagen auf eine Reihe von Klassen-IDs. Nur Erkennungen, die zu den angegebenen Klassen gehören, werden zurückgegeben. Nützlich, um sich bei Erkennungsaufgaben mit mehreren Klassen auf relevante Objekte zu konzentrieren. |
retina_masks |
bool |
False |
Verwendet hochauflösende Segmentierungsmasken, falls im Modell vorhanden. Dies kann die Qualität der Masken für Segmentierungsaufgaben verbessern, da sie feinere Details liefern. |
embed |
list[int] |
None |
Legt die Ebenen fest, aus denen Merkmalsvektoren oder Einbettungen extrahiert werden sollen. Nützlich für nachgelagerte Aufgaben wie Clustering oder Ähnlichkeitssuche. |
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 Prüfung. |
save |
bool |
False |
Ermöglicht das Speichern der kommentierten Bilder oder Videos in einer Datei. Nützlich für die Dokumentation, weitere Analysen oder das Teilen von Ergebnissen. |
save_frames |
bool |
False |
Bei der Verarbeitung von Videos werden einzelne Bilder als Bilder gespeichert. Das ist nützlich, um bestimmte Bilder zu extrahieren oder um eine detaillierte Bild-für-Bild-Analyse durchzuführen. |
save_txt |
bool |
False |
Speichert die Erkennungsergebnisse in einer Textdatei, die dem Format [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. Erhöht die Detailgenauigkeit bei der Nachbearbeitung und Analyse. |
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 die Konfidenzwerte für jede Erkennung neben der Bezeichnung an. Gibt einen Einblick in die Sicherheit des Modells für jede Erkennung. |
show_boxes |
bool |
True |
Zeichnet Begrenzungsrahmen um erkannte Objekte. Unverzichtbar für die visuelle Identifizierung und Lokalisierung von Objekten in Bildern oder Videoframes. |
line_width |
None or int |
None |
Legt die Linienbreite von Begrenzungsrahmen fest. Wenn None Die Linienbreite wird automatisch an die Bildgröße angepasst. Bietet visuelle Anpassungen für mehr 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 zur 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 den Validierungsdaten, Klassennamen und die Anzahl der Klassen. |
imgsz |
int |
640 |
Legt die Größe der Eingabebilder fest. 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 von GPU-Speicher 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 Labels, die die ursprünglichen 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 dabei, doppelte Erkennungen zu reduzieren. |
max_det |
int |
300 |
Begrenzt die maximale Anzahl der 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 der Speicherverbrauch 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 , etc.). Ermöglicht Flexibilität bei der Nutzung von CPU- oder GPU-Ressourcen. |
dnn |
bool |
False |
Wenn True verwendet das OpenCV DNN-Modul für die ONNX Modellinferenz und bietet damit eine Alternative zu PyTorch Inferenzmethoden. |
plots |
bool |
False |
Bei der Einstellung auf True erstellt und speichert Diagramme der Vorhersagen im Vergleich zur Basiswahrheit, um die Leistung des Modells visuell zu bewerten. |
rect |
bool |
False |
Wenn True verwendet die rechteckige Inferenz für die Stapelverarbeitung, wodurch das Auffüllen reduziert und die Geschwindigkeit und Effizienz potenziell erhöht wird. |
split |
str |
val |
Bestimmt die Aufteilung des Datensatzes für die Validierung (val , test , oder train ). Ermöglicht Flexibilität bei der Auswahl des Datensegments für die Leistungsbewertung. |
Eine sorgfältige Abstimmung und das Experimentieren mit diesen Einstellungen sind entscheidend, um eine optimale Leistung im Validierungsdatensatz sicherzustellen und eine Überanpassung zu erkennen und zu verhindern.
Einstellungen exportieren
Die Exporteinstellungen für YOLO Modelle umfassen Konfigurationen und Optionen für das Speichern oder Exportieren des Modells zur Verwendung in verschiedenen Umgebungen oder Plattformen. Diese Einstellungen können sich auf die Leistung, die Größe und die Kompatibilität des Modells mit verschiedenen Systemen auswirken. Zu den wichtigsten Exporteinstellungen gehören das Format der exportierten Modelldatei (z. B. ONNX, TensorFlow SavedModel ), das Zielgerät (z. B. CPU, GPU) und zusätzliche Funktionen wie Masken oder mehrere Beschriftungen pro Kästchen. 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 definieren. |
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 serving and 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 die FP16-Quantisierung (halbe Genauigkeit), wodurch die Modellgröße reduziert und die Inferenz auf unterstützter Hardware möglicherweise beschleunigt wird. |
int8 |
bool |
False |
Aktiviert die INT8-Quantisierung, um das Modell weiter zu komprimieren und die Inferenz mit minimalem Genauigkeitsverlust zu beschleunigen, vor allem für Edge-Geräte. |
dynamic |
bool |
False |
Ermöglicht dynamische Eingabegrößen für ONNX und TensorRT Exporte, was die Flexibilität beim Umgang mit unterschiedlichen Bildgrößen erhöht. |
simplify |
bool |
False |
Vereinfacht den Modellgraphen für ONNX Exporte, was die Leistung und Kompatibilität verbessern kann. |
opset |
int |
None |
Gibt die ONNX opset-Version an, um die Kompatibilität mit verschiedenen ONNX Parsern und Laufzeiten zu gewährleisten. Wenn nicht gesetzt, wird die letzte unterstützte Version verwendet. |
workspace |
float |
4.0 |
Legt die maximale Größe des Arbeitsbereichs in GB für die TensorRT Optimierungen fest und sorgt für ein Gleichgewicht zwischen Speichernutzung und Leistung. |
nms |
bool |
False |
Fügt dem CoreML Export die Nicht-Maximum-Unterdrückung (NMS) hinzu, die für eine genaue und effiziente Nachbearbeitung der Aufdeckung unerlässlich ist. |
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.
Erweiterungseinstellungen
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. Die folgende Tabelle zeigt den Zweck und die Wirkung der einzelnen Erweiterungsargumente:
Argument | Typ | Standard | Reichweite | Beschreibung |
---|---|---|---|---|
hsv_h |
float |
0.015 |
0.0 - 1.0 |
Passt den Farbton des Bildes um einen Bruchteil des Farbkreises an und sorgt so für Farbvariabilität. Hilft dem Modell, sich an unterschiedliche Lichtverhältnisse anzupassen. |
hsv_s |
float |
0.7 |
0.0 - 1.0 |
Ändert die Sättigung des Bildes um einen Bruchteil und beeinflusst so die Intensität der Farben. Nützlich, um unterschiedliche Umgebungsbedingungen zu simulieren. |
hsv_v |
float |
0.4 |
0.0 - 1.0 |
Ändert den Wert (die Helligkeit) des Bildes um einen Bruchteil, damit das Modell bei 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 Lernen, teilweise sichtbare Objekte zu erkennen. |
scale |
float |
0.5 |
>=0.0 |
Skaliert das Bild mit einem Verstärkungsfaktor und simuliert so Objekte in unterschiedlichen Entfernungen zur Kamera. |
shear |
float |
0.0 |
-180 - +180 |
Schert das Bild um einen bestimmten Grad, um den Effekt nachzuahmen, dass Objekte aus verschiedenen Winkeln betrachtet werden. |
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 der Datensätze zu erhöhen. |
bgr |
float |
0.0 |
0.0 - 1.0 |
Dreht die Bildkanäle mit der angegebenen Wahrscheinlichkeit von RGB auf BGR um, 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 einzigen und simuliert so verschiedene Szenenkompositionen und Objektinteraktionen. Sehr effektiv für das Verstehen komplexer Szenen. |
mixup |
float |
0.0 |
0.0 - 1.0 |
Fügt zwei Bilder und ihre Beschriftungen zu einem zusammengesetzten Bild zusammen. Verbessert die Verallgemeinerungsfähigkeit des Modells, indem es Rauschen und visuelle Variabilität einbringt. |
copy_paste |
float |
0.0 |
0.0 - 1.0 |
Kopiert Objekte aus einem Bild und fügt sie in ein anderes ein. Das ist nützlich, um die Anzahl der Objektinstanzen zu erhöhen und Objektverdeckung zu lernen. |
auto_augment |
str |
randaugment |
- | Wendet automatisch eine vordefinierte Erweiterungsrichtlinie an (randaugment , autoaugment , augmix ), die durch die 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, um das Modell dazu zu bringen, sich auf weniger offensichtliche Merkmale für die Erkennung zu konzentrieren. |
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 angepasst werden, um den spezifischen Anforderungen des Datensatzes und der jeweiligen Aufgabe gerecht zu werden. Das Experimentieren mit verschiedenen Werten kann helfen, die optimale Erweiterungsstrategie zu finden, die zur besten Modellleistung führt.
Logging, 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 Logging-Bibliothek wie TensorBoard oder durch das Schreiben von Logmeldungen in eine Datei geschehen.
- Kontrollpunkte: Es ist eine gute Praxis, während des Trainings in regelmäßigen Abständen Kontrollpunkte des Modells zu speichern. So kannst du das Training von einem früheren Punkt aus wieder aufnehmen, wenn der Trainingsprozess unterbrochen wird oder wenn du mit verschiedenen Trainingskonfigurationen experimentieren möchtest.
- 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 erkennen. Dies kann mit einer Plot-Bibliothek wie matplotlib oder durch die Erstellung von Plots mit einer Logging-Bibliothek wie TensorBoard geschehen.
- Dateiverwaltung: Die Verwaltung der verschiedenen Dateien, die während des Trainingsprozesses entstehen, wie z. B. Modellprüfpunkte, Protokolldateien und Diagramme, kann eine Herausforderung sein. Es ist wichtig, eine klare und organisierte Dateistruktur zu haben, um den Überblick über diese Dateien zu behalten und sie bei Bedarf leicht abrufen und analysieren zu können.
Effektive Protokollierung, Checkpointing, Plotting und Dateiverwaltung helfen dir, 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 er nicht 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 du dies auf True erlaubt das Überschreiben, während False verhindert es. |
plots |
False |
Steuert die Erstellung und Speicherung von Trainings- und Validierungsplots. Setzen auf True um Diagramme zu erstellen, z. B. Verlustkurven, Precision-Recall-Kurven und Stichprobenvorhersagen. Nützlich, um die Leistung des Modells im Laufe der Zeit visuell zu verfolgen. |
save |
False |
Ermöglicht das Speichern von Trainingskontrollpunkten und endgültigen Modellgewichten. Setzen auf True um den Zustand des Modells regelmäßig zu speichern, so dass das Training von diesen Kontrollpunkten aus fortgesetzt werden kann oder die Modelle eingesetzt werden können. |
Erstellt 2023-11-12, Aktualisiert 2024-04-18
Autoren: glenn-jocher (13), fcakyon (2), Laughing-q (2), plashchynski (1), Burhan-Q (1), AyushExel (1), RizwanMunawar (1), tensorturtle (1)