YOLO Vision 2026:

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 wie Training, Validierung und Vorhersage beeinflussen.



Watch: Mastering Ultralytics YOLO: Configuration

Ultralytics-Befehle verwenden die folgende Syntax:

Beispiel
yolo TASK MODE ARGS

Wobei:

Standardwerte für ARG sind auf dieser Seite definiert und stammen aus der Datei cfg/default.yaml.

Aufgaben#

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

  • Detect: Die Objekterkennung identifiziert und lokalisiert Objekte innerhalb eines Bildes oder Videos.
  • Segment: Die Instanzsegmentierung unterteilt ein Bild oder Video in Regionen, die verschiedenen Objekten oder Klassen entsprechen.
  • Semantische Segmentierung (semantic): Die semantische Segmentierung weist jedem Pixel in einem Bild ein Klassenlabel zu, um eine dichte Szenenerkennung zu ermöglichen.
  • Depth (depth): Die monokulare Tiefenschätzung prognostiziert eine Tiefenkarte pro Pixel in Metern aus einem einzelnen RGB-Bild.
  • Classify: Die Bildklassifizierung sagt das Klassenlabel eines Eingabebildes voraus.
  • Pose: Die Posenschätzung identifiziert Objekte und schätzt deren Schlüsselpunkte in einem Bild oder Video.
  • OBB: Oriented Bounding Boxes verwendet gedrehte Bounding Boxes, die sich für Satelliten- oder medizinische Bilddaten eignen.
ArgumentStandardBeschreibung
task'detect'Legt die YOLO-Aufgabe fest: detect für die Objekterkennung, segment für Instanzsegmentierung, semantic für semantische Segmentierung, depth für monokulare Tiefenschätzung, classify für Klassifizierung, pose für Posenschätzung und obb für orientierte Bounding Boxes. Jede Aufgabe ist auf spezifische Ausgaben und Probleme bei der Bild- und Videoanalyse zugeschnitten.

Aufgaben-Anleitung

Modi#

Ultralytics YOLO-Modelle arbeiten in verschiedenen Modi, von denen jeder für eine bestimmte Phase des Modelllebenszyklus konzipiert ist:

  • Train: Trainiere ein YOLO-Modell auf einem benutzerdefinierten Datensatz.
  • Val: Validiere ein trainiertes YOLO-Modell.
  • Predict: Verwende ein trainiertes YOLO-Modell, um Vorhersagen für neue Bilder oder Videos zu treffen.
  • Export: Exportiere ein YOLO-Modell für die Bereitstellung.
  • Track: Verfolge Objekte in Echtzeit mit einem YOLO-Modell.
  • Benchmark: Teste die Geschwindigkeit und Genauigkeit von YOLO-Exporten (ONNX, TensorRT, etc.).
ArgumentStandardBeschreibung
mode'train'Legt den Betriebsmodus des YOLO-Modells fest: train für das Modelltraining, val für die Validierung, predict für Inferenz, export für die Konvertierung in Bereitstellungsformate, track für Objektverfolgung und benchmark für die Leistungsbewertung. Jeder Modus unterstützt verschiedene Phasen, von der Entwicklung bis zur Bereitstellung.

Modi-Anleitung

Trainingseinstellungen#

Trainings-Einstellungen für YOLO-Modelle umfassen Hyperparameter und Konfigurationen, die die Leistung, Geschwindigkeit und Genauigkeit des Modells beeinflussen. Wichtige Einstellungen sind Batch-Größe, Lernrate, Momentum und Weight Decay. Die Wahl des Optimierers, der Loss-Funktion und der Dataset-Zusammensetzung beeinflusst ebenfalls das Training. Feinabstimmung und Experimente sind für eine optimale Leistung von entscheidender Bedeutung. Weitere Details findest du in der Ultralytics-Entrypoint-Funktion.

ArgumentTypStandardBeschreibung
modelstrNoneGibt die Modelldatei für das Training an. Akzeptiert entweder den Pfad zu einem vortrainierten .pt-Modell oder einer .yaml-Konfigurationsdatei. Ist essenziell, um die Modellstruktur zu definieren oder Gewichte zu initialisieren.
datastrNonePfad zum Dataset-YAML (z. B. coco8.yaml), das die Pfade zu Trainings- und Validierungsdaten, Klassennamen und die Anzahl der Klassen enthält. Bei der Klassifizierung wird stattdessen ein Dataset-Verzeichnis oder ein integrierter Dataset-Name angegeben (z. B. imagenet10).
epochsint100Gesamtanzahl der Trainingsepochen. Jede Epoche stellt einen vollständigen Durchlauf über das gesamte Dataset dar. Die Anpassung dieses Wertes kann die Trainingsdauer und die Modellleistung beeinflussen.
timefloatNoneMaximale Trainingszeit in Stunden. Falls festgelegt, überschreibt dies das epochs-Argument, wodurch das Training nach der angegebenen Dauer automatisch gestoppt wird. Nützlich für zeitkritische Trainingsszenarien.
patienceint100Anzahl der Epochen, die ohne Verbesserung der Validierungsmetriken gewartet wird, bevor das Training frühzeitig abgebrochen wird. Hilft, Overfitting zu verhindern, indem das Training gestoppt wird, wenn sich die Leistung einpegelt.
batchint oder float16Batch-Größe mit drei Modi: als Ganzzahl festgelegt (z. B. batch=16), Automatikmodus für 60 % GPU-Speicherauslastung (batch=-1) oder Automatikmodus mit einem angegebenen Auslastungsanteil (batch=0.70).
imgszint640Zielbildgröße für das Training. Bilder werden auf Quadrate mit Seitenlängen entsprechend dem angegebenen Wert skaliert (falls rect=False), wobei das Seitenverhältnis für YOLO-Modelle beibehalten wird, jedoch nicht für RT-DETR. Beeinflusst die Modellgenauigkeit und die Rechenkomplexität.
saveboolTrueAktiviert das Speichern von Trainings-Checkpoints und finalen Modellgewichten. Nützlich zum Fortsetzen des Trainings oder für die Modellbereitstellung.
save_periodint-1Häufigkeit des Speicherns von Modell-Checkpoints, angegeben in Epochen. Ein Wert von -1 deaktiviert diese Funktion. Nützlich zum Speichern von Zwischenmodellen während langer Trainingssitzungen.
cacheboolFalseAktiviert das Caching von Dataset-Bildern im Arbeitsspeicher (True/ram), auf der Festplatte (disk) oder deaktiviert es (False). Verbessert die Trainingsgeschwindigkeit durch Reduzierung von Festplatten-E/A auf Kosten eines erhöhten Speicherbedarfs.
deviceint oder str oder listNoneGibt das bzw. die Rechengeräte für das Training an: eine einzelne GPU (device=0), mehrere GPUs (device=[0,1]), CPU (device=cpu), MPS für Apple Silicon (device=mps), Huawei Ascend NPU (device=npu:0 oder device=npu:0,1) oder die automatische Auswahl einer freien GPU (device=-1) bzw. mehrerer freier GPUs (device=[-1,-1]).
workersint8Anzahl der Worker-Threads für das Laden von Daten (pro RANK beim Multi-GPU-Training). Beeinflusst die Geschwindigkeit der Datenvorverarbeitung und -zufuhr zum Modell, was besonders bei Multi-GPU-Setups nützlich ist.
projectstrNoneName des Projektverzeichnisses, in dem die Trainingsausgaben gespeichert werden. Ermöglicht eine organisierte Speicherung verschiedener Experimente.
namestrNoneName des Trainingslaufs. Wird verwendet, um ein Unterverzeichnis im Projektordner zu erstellen, in dem Trainingsprotokolle und Ausgaben gespeichert werden.
exist_okboolFalseWenn True, erlaubt das Überschreiben eines existierenden Projekt-/Namensverzeichnisses. Nützlich für iterative Experimente, ohne vorherige Ausgaben manuell löschen zu müssen.
save_dirstrNoneGibt das genaue Verzeichnis an, in dem die Ausgaben des Laufs gespeichert werden, und überschreibt dabei die Kombination aus project und name. Der Pfad wird ohne automatisches Inkrementieren unverändert verwendet, sodass aufeinanderfolgende Läufe dasselbe Verzeichnis wiederverwenden.
pretrainedbool oder strTrueBestimmt, ob das Training mit vortrainierten Gewichten gestartet werden soll. Kann ein boolescher Wert oder ein String-Pfad zu den zu ladenden Gewichten sein. pretrained=False trainiert mit zufällig initialisierten Gewichten unter Beibehaltung der Modellarchitektur.
cls_remapboolTrueWenn du das Fine-Tuning über Datensätze hinweg durchführst, werden Zeilen des vortrainierten Klassifizierungskopfs immer dann in das neue Modell kopiert, wenn die Klassennamen übereinstimmen. Dadurch behalten sich überschneidende Klassen ihren gelernten Bias sowie ihre Gewichte, sofern die Kopfbreite unverändert bleibt. Dies gilt unabhängig davon, ob sich die Anzahl der Klassen unterscheidet oder ob sie bei einer anderen Reihenfolge übereinstimmt.
optimizerstr'auto'Auswahl des Optimierers für das Training. Zu den Optionen gehören SGD, MuSGD, Adam, Adamax, AdamW, NAdam, RAdam, RMSProp oder auto, um AdamW oder MuSGD basierend auf der Anzahl der Trainingsiterationen auszuwählen. Beeinflusst die Konvergenzgeschwindigkeit und -stabilität.
seedint0Legt den Zufallswert (Seed) für das Training fest, was die Reproduzierbarkeit der Ergebnisse über Durchläufe mit denselben Konfigurationen hinweg sicherstellt.
deterministicboolTrueErzwingt die Verwendung deterministischer Algorithmen, was die Reproduzierbarkeit sicherstellt, aber die Leistung und Geschwindigkeit aufgrund der Beschränkung auf nicht-deterministische Algorithmen beeinträchtigen kann.
verboseboolTrueAktiviert die ausführliche Ausgabe während des Trainings und zeigt Fortschrittsbalken, Metriken pro Epoche sowie zusätzliche Trainingsinformationen in der Konsole an.
single_clsboolFalseBehandelt alle Klassen in Datensätzen mit mehreren Klassen als eine einzige Klasse während des Trainings. Nützlich für binäre Klassifizierungsaufgaben oder wenn der Fokus eher auf dem Vorhandensein von Objekten als auf der Klassifizierung liegt.
classeslist[int]NoneGibt eine Liste von Klassen-IDs an, die trainiert werden sollen. Nützlich zum Filtern und zur Konzentration auf bestimmte Klassen während des Trainings.
rectboolFalseAktiviert die minimale Padding-Strategie – Bilder in einem Batch werden minimal gepaddet, um eine gemeinsame Größe zu erreichen, wobei die längste Seite gleich imgsz ist. Kann die Effizienz und Geschwindigkeit verbessern, beeinträchtigt jedoch möglicherweise die Modellgenauigkeit.
multi_scalefloat0.0Variiert imgsz in jedem Batch zufällig um +/- multi_scale (z. B. 0.25 -> 0.75x bis 1.25x), gerundet auf Vielfache der Modell-Stride; 0.0 deaktiviert das Multiskalen-Training.
cos_lrboolFalseVerwendet einen Cosinus-Planer für die Lernrate, der die Lernrate über Epochen hinweg entlang einer Cosinus-Kurve anpasst. Hilft bei der Verwaltung der Lernrate für eine bessere Konvergenz.
close_mosaicint10Deaktiviert die Mosaik-Datenaugmentation in den letzten N Epochen, um das Training vor dem Abschluss zu stabilisieren. Die Einstellung auf 0 deaktiviert diese Funktion.
resumeboolFalseSetzt das Training vom zuletzt gespeicherten Checkpoint fort. Lädt automatisch Modellgewichte, Optimiererzustand und Epochenanzahl, um das Training nahtlos fortzusetzen.
ampbool oder strTrueLegt die Trainingspräzision fest: True oder "fp16" verwendet FP16, "bf16" verwendet BF16 auf unterstützten CUDA-Geräten, und False oder "fp32" verwendet FP32.
fractionfloat, int oder list1.0Dataset-Subset als Verhältnis/Anzahl oder [train, val, test]-Liste. Listen mit zwei Elementen halten test vollständig, und test 0 überspringt den NDJSON-Download. Ein Integer 1 ist ein Bild, während 1.0 alle sind.
profileboolFalseAktiviert die Profilierung von ONNX- und TensorRT-Geschwindigkeiten während des Trainings, was für die Optimierung des Modelleinsatzes nützlich ist.
freezeint oder listNoneFriert die ersten N Schichten des Modells oder bestimmte Schichten nach Index oder Modulname ein (23.cv2, ohne führendes model.), wodurch die Anzahl der trainierbaren Parameter reduziert wird. Nützlich für Fine-Tuning oder Transfer-Lernen.
lr0float0.01Initiale 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.
lrffloat0.01Finale Lernrate als Bruchteil der initialen Rate = (lr0 * lrf), wird in Verbindung mit Planern verwendet, um die Lernrate im Laufe der Zeit anzupassen.
momentumfloat0.937Momentum-Faktor für SGD oder Beta1 für Adam-Optimierer, der die Einbeziehung vergangener Gradienten in das aktuelle Update beeinflusst.
weight_decayfloat0.0005L2-Regularisierungsterm, der große Gewichte bestraft, um Overfitting zu verhindern.
warmup_epochsfloat3.0Anzahl 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_momentumfloat0.8Anfängliches Momentum für die Warmup-Phase, das sich über den Warmup-Zeitraum hinweg schrittweise an das eingestellte Momentum anpasst.
warmup_bias_lrfloat0.1Lernrate für Bias-Parameter während der Warmup-Phase, die dazu beiträgt, das Modelltraining in den ersten Epochen zu stabilisieren. Wird bei Standard-optimizer='auto' automatisch auf 0.0 gesetzt, gib also einen Optimierer explizit an, um ihn zu verwenden.
distill_modelstrNonePfad zu einem Checkpoint des Lehrermodells (z. B. yolo26x.pt) für die Wissensdestillation (Knowledge Distillation). Wenn gesetzt, wird das Schülermodell mit einem zusätzlichen Destillations-Loss trainiert, der durch das eingefrorene Lehrermodell angeleitet wird.
disfloat6.0Gewichtung des Destillationsverlusts, der zu den Standard-Erkennungsverlusten hinzugefügt wird. Höhere Werte erhöhen den Einfluss der Merkmalsführung durch den Lehrer.
boxfloat7.5Gewichtung der Box-Loss-Komponente in der Loss-Funktion, die beeinflusst, wie stark der Schwerpunkt auf die genaue Vorhersage von Bounding-Box-Koordinaten gelegt wird.
clsfloat0.5Gewichtung des Klassifizierungsverlusts in der gesamten Verlustfunktion, was die Bedeutung einer korrekten Klassenvorhersage im Verhältnis zu anderen Komponenten beeinflusst.
cls_pwfloat0.0Exponent für die Klassengewichtung zur Behandlung von Klassenunbalancen unter Verwendung der inversen Klassenhäufigkeit. 0.0 deaktiviert die Klassengewichtung, 1.0 wendet die vollständige Gewichtung mit der inversen Häufigkeit an. Werte zwischen 0 und 1 bieten eine partielle Gewichtung.
dflfloat1.5Gewichtung des Regressionserms für den Box-Abstand: Distribution Focal Loss (DFL), wenn der Detektionskopf reg_max > 1 verwendet, oder ein L1-Verlust für normalisierte Box-Abstände bei DFL-freiem YOLO26 (reg_max: 1).
posefloat12.0Gewichtung des Pose-Loss in Modellen, die für die Pose-Schätzung trainiert wurden, was den Fokus auf die genaue Vorhersage von Pose-Keypoints beeinflusst.
kobjfloat1.0Gewichtung des Keypoint-Objectness-Loss in Pose-Schätzungsmodellen, um das Vertrauen der Erkennung mit der Pose-Genauigkeit abzugleichen.
rlefloat1.0Gewichtung des Residual-Log-Likelihood-Estimation-Loss in Pose-Schätzungsmodellen, was die Präzision der Keypoint-Lokalisierung beeinflusst.
anglefloat1.0Gewichtung des Winkel-Loss in OBB-Modellen, was die Präzision der Vorhersagen für den Winkel von orientierten Bounding-Boxen beeinflusst.
dlogfloat1.0Gewichtung des skaleninvarianten logarithmischen Verlusts (SILog-Loss) in Tiefenschätzungsmodellen, dem primären Faktor für die Tiefengenauigkeit.
dgradfloat0.5Gewichtung des Gradientenverlusts in Tiefenschätzungsmodellen, die Fehler an Tiefenkanten bestraft und schärfere Oberflächengrenzen fördert.
dlamfloat1.0Varianzfokus-Faktor des SILog-Loss in Tiefenschätzungsmodellen. 1.0 macht den Loss vollständig skaleninvarianter, während 0.0 ihn auf einen einfachen log-RMSE reduziert.
nbsint64Nominale Batch-Größe für die Normalisierung des Verlusts.
overlap_maskboolTrueBestimmt, ob Objektmasken für das Training zu einer einzigen Maske zusammengeführt oder für jedes Objekt separat gehalten werden sollen. Bei einer Überlappung wird die kleinere Maske beim Zusammenführen über die größere Maske gelegt.
mask_ratioint4Downsampling-Verhältnis für Segmentierungsmasken, was die Auflösung der während des Trainings verwendeten Masken beeinflusst.
dropoutfloat0.0Dropout-Rate zur Regularisierung bei Klassifizierungsaufgaben, um Overfitting durch zufälliges Auslassen von Einheiten während des Trainings zu verhindern.
valboolTrueAktiviert die Validierung während des Trainings, was eine regelmäßige Bewertung der Modellleistung auf einem separaten Datensatz ermöglicht.
plotsboolTrueGeneriert und speichert Diagramme von Trainings- und Validierungsmetriken sowie Vorhersagebeispiele, die visuelle Einblicke in die Modellleistung und den Lernfortschritt bieten.
compilebool oder strFalseAktiviert die PyTorch-2.x-torch.compile-Graphenkompilierung mit backend='inductor'. Akzeptiert True"default", False → deaktiviert, oder einen String-Modus wie "default", "reduce-overhead", "max-autotune-no-cudagraphs". Fällt bei Nichtunterstützung unter Warnung auf Eager-Modus zurück.
channels_lastboolFalseVerwendet das Speicherformat channels_last (NHWC) für Faltungen beim Training, wodurch CUDA Tensor Core GPUs ohne Ergebnisänderung beschleunigt werden. Wird auf CPU und MPS, wo es keinen Nutzen bringt, automatisch ignoriert.
max_detint300Gibt die maximale Anzahl von Objekten an, die während der Validierungsphase des Trainings beibehalten werden.
Hinweis zu Batch-Größen-Einstellungen

Das Argument batch bietet drei Konfigurationsoptionen:

  • Feste Batch-Größe: Gib die Anzahl der Bilder pro Batch mit einer Ganzzahl an (z. B. batch=16).
  • Automatikmodus (60 % GPU-Speicher): Verwende batch=-1 für die automatische Anpassung auf ca. 60 % CUDA-Speicherauslastung.
  • Automatikmodus mit Auslastungsanteil: Lege einen Bruchteil fest (z. B. batch=0.70), um die Anpassung basierend auf einer bestimmten GPU-Speichernutzung vorzunehmen.
  • No Fit Found: Wenn keine Kandidaten-Batchgröße ein verwendbares Profil liefert, löst AutoBatch ein klares RuntimeError aus, anstatt stillschweigend auf einen unzusammenhängenden Standardwert zurückzufallen.

Training-Anleitung

Vorhersageeinstellungen#

Vorhersage-Einstellungen für YOLO-Modelle umfassen Hyperparameter und Konfigurationen, die Leistung, Geschwindigkeit und Genauigkeit während der Inferenz beeinflussen. Wichtige Einstellungen sind der Konfidenzschwellenwert, der Schwellenwert für Non-Maximum Suppression (NMS) und die Anzahl der Klassen. Eingabedatengröße, Format und zusätzliche Features wie Masken beeinflussen ebenfalls Vorhersagen. Die Feinabstimmung dieser Einstellungen ist für eine optimale Leistung unerlässlich.

Inferenz-Argumente:

ArgumentTypStandardBeschreibung
sourcestr oder int oder NoneNoneGibt die Datenquelle für die Inferenz an. Kann ein Bildpfad, eine Videodatei, ein Verzeichnis, eine URL oder eine Geräte-ID für Live-Feeds sein. Falls weggelassen, wird eine Warnung protokolliert und das Modell greift auf die integrierten Demo-Assets zurück (ultralytics/assets oder eine Demo-URL für OBB). Unterstützt eine Vielzahl von Formaten und Quellen, was eine flexible Anwendung über verschiedene Arten von Eingaben hinweg ermöglicht.
conffloat0.25Legt den minimalen Konfidenz-Schwellenwert für Erkennungen fest. Objekte, die mit einer Konfidenz unterhalb dieses Schwellenwerts erkannt werden, werden ignoriert. Die Anpassung dieses Wertes kann helfen, falsch-positive Ergebnisse zu reduzieren.
ioufloat0.7Intersection Over Union (IoU)-Schwellenwert für Non-Maximum Suppression (NMS). Niedrigere Werte führen zu weniger Erkennungen durch das Eliminieren überlappender Boxen, was nützlich ist, um Duplikate zu reduzieren.
imgszint oder tuple640Letterbox-Ziel. Eine Ganzzahl ergibt ein quadratisches N×N; ein Tupel ergibt (height, width). Bei rect=True kann der tatsächliche Tensor aufgrund von Minimal-Rechteck-Padding kleiner als dieses Ziel sein. Verwende rect=False für eine feste Größe. Siehe Feste Form vs. minimales Rechteck.
rectboolTrueFalls True, verwende nach Möglichkeit Minimal-Rechteck-Padding (Batch gleicher Form und unterstütztes Backend). Falls False, padde immer auf das volle imgsz. Siehe Feste Form vs. minimales Rechteck.
quantizeint oder strNoneInferenzpräzision: 16/"fp16" aktiviert FP16-Inferenz auf unterstützten GPUs; 32/"fp32"/nicht gesetzt ist FP32. INT8/PTQ-Quantisierung wird während des Exports konfiguriert und dann durch Laden des exportierten Modells verwendet. Ersetzt das veraltete half-Flag.
devicestrNoneGibt das Gerät für die Inferenz an (z. B. cpu, cuda:0, 0, npu oder npu:0). Ermöglicht Benutzern die Auswahl zwischen CPU, einer spezifischen GPU, Huawei Ascend NPU oder anderen Rechengeräten für die Modellausführung.
dnnboolFalseVerwendet bei True das OpenCV-DNN-Modul anstelle der ONNX Runtime für die ONNX-Modellinferenz.
datastrNonePfad zu einem Dataset-YAML (z. B. coco8.yaml), das nur für seine names gelesen wird, und nur dann, wenn das geladene Modell keine eigenen Klassennamen besitzt: ein Export von Drittanbietern oder ein Ultralytics-Export, der von den Metadaten getrennt ist, mit denen er ausgeliefert wurde. Andernfalls gibt ein solches Modell class0, class1 und so weiter aus.
batchint1Gibt die Batch-Größe für die Inferenz an (funktioniert nur, wenn die Quelle ein Verzeichnis, eine Videodatei oder eine .txt-Datei ist). Eine größere Batch-Größe kann einen höheren Durchsatz bieten und die Gesamtdauer für die Inferenz verkürzen.
max_detint300Maximale Anzahl der erlaubten Erkennungen pro Bild. Begrenzt die Gesamtzahl der Objekte, die das Modell in einer einzigen Inferenz erkennen kann, um übermäßige Ausgaben in dichten Szenen zu verhindern.
vid_strideint1Frame-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_bufferboolFalseBestimmt, ob eingehende Frames für Videostreams in eine Warteschlange eingereiht werden sollen. Falls False, werden alte Frames verworfen, um Platz für neue Frames zu machen (optimiert für Echtzeitanwendungen). Falls True, werden neue Frames in einem Puffer eingereiht, wodurch sichergestellt wird, dass keine Frames übersprungen werden, was jedoch Latenz verursacht, wenn die Inferenz-FPS niedriger ist als die Stream-FPS.
visualizeboolFalseSpeichert eine Klassenaktivierungs-Heatmap neben jeder Vorhersage, die zeigt, welche Pixel die vorhergesagten Klassenergebnisse erhöht haben. Berücksichtigt conf und classes, sodass classes=[0] nur diese Klasse abbildet. Nur für Ultralytics PyTorch Modelle verfügbar.
augmentboolFalseAktiviert die Test-Time-Augmentation (TTA) für Vorhersagen, was die Erkennungsrobustheit potenziell auf Kosten der Inferenzgeschwindigkeit verbessert. Nur für Ultralytics PyTorch Modelle verfügbar.
agnostic_nmsboolFalseAktiviert die klassenunabhängige Non-Maximum Suppression (NMS), wodurch überlappende Boxen mit niedrigerem Score über verschiedene Klassen hinweg unterdrückt werden und nicht nur innerhalb derselben Klasse. Nützlich in Szenarien mit multiklassen-Erkennung, in denen Klassenüberlappungen häufig vorkommen. Bei End-to-End-Modellen (YOLO26, YOLOv10) verhindert dies lediglich, dass dieselbe Erkennung mit mehreren Klassenlabels angezeigt wird (IoU=1.0-Duplikate), und führt keine IoU-Schwellenwert-basierte Unterdrückung zwischen unterschiedlichen Boxen durch.
classeslist[int]NoneFiltert Vorhersagen auf eine Menge von Klassen-IDs. Nur Erkennungen, die zu den angegebenen Klassen gehören, werden zurückgegeben. Nützlich, um sich auf relevante Objekte bei Multi-Klassen-Erkennungsaufgaben zu konzentrieren.
retina_masksboolFalseGibt hochauflösende Segmentierungsmasken zurück. Die zurückgegebenen Masken (masks.data) entsprechen der Originalbildgröße, falls aktiviert. Wenn deaktiviert, haben sie die während der Inferenz verwendete Bildgröße.
embedlist[int]NoneGibt die Schichten an, aus denen Vektoren oder embeddings extrahiert werden sollen. Verwende model.embed(source) für Embeddings der vorletzten Schicht oder model.predict(source, embed=[layer]), um bestimmte Schichten auszuwählen. Nützlich für nachgeschaltete Aufgaben wie Clustering oder Ähnlichkeitssuche. Nur für Ultralytics PyTorch Modelle verfügbar.
projectstrNoneName des Projektverzeichnisses, in dem Vorhersageausgaben gespeichert werden, wenn save aktiviert ist.
namestrNoneName des Vorhersagelaufs. Wird zum Erstellen eines Unterverzeichnisses im Projektordner verwendet, in dem Vorhersageausgaben gespeichert werden, wenn save aktiviert ist.
streamboolFalseErmöglicht speichereffiziente Verarbeitung für lange Videos oder zahlreiche Bilder, indem ein Generator von Results-Objekten zurückgegeben wird, anstatt alle Frames gleichzeitig in den Speicher zu laden.
verboseboolTrueSteuert, ob detaillierte Inferenz-Protokolle im Terminal angezeigt werden, was Echtzeit-Feedback zum Vorhersageprozess bietet.
compilebool oder strFalseAktiviert die PyTorch-2.x-torch.compile-Graphenkompilierung mit backend='inductor'. Akzeptiert True"default", False → deaktiviert, oder einen String-Modus wie "default", "reduce-overhead", "max-autotune-no-cudagraphs". Fällt bei Nichtunterstützung unter Warnung auf Eager-Modus zurück.
channels_lastboolFalseVerwendet das Speicherformat channels_last (NHWC) für Faltungen bei der Inferenz, wodurch CUDA Tensor Core GPUs ohne Ergebnisänderung beschleunigt werden. Gilt nur für native PyTorch-Modelle; wird für CPU, MPS und exportierte Formate wie TensorRT und ONNX ignoriert.
end2endboolNoneÜberschreibt den End-to-End-Modus in YOLO-Modellen, die NMS-freie Inferenz unterstützen (YOLO26, YOLOv10). Wenn du es auf False setzt, kannst du die Vorhersage mit der traditionellen NMS-Pipeline ausführen und zusätzlich das Argument iou nutzen. Weitere Einzelheiten findest du im Leitfaden zur End-to-End-Erkennung.

Visualisierungs-Argumente:

ArgumentTypStandardBeschreibung
showboolFalseFalls True, werden die annotierten Bilder oder Videos in einem Fenster angezeigt. Nützlich für unmittelbares visuelles Feedback während der Entwicklung oder des Testens.
saveboolFalse or TrueAktiviert das Speichern der annotierten Bilder oder Videos in Dateien. Nützlich für Dokumentation, weitere Analysen oder zum Teilen von Ergebnissen. Standardmäßig True bei Verwendung der CLI & False bei Verwendung in Python.
save_framesboolFalseBeim Verarbeiten von Videos werden einzelne Frames als Bilder gespeichert. Nützlich zum Extrahieren spezifischer Frames oder für detaillierte Frame-für-Frame-Analysen.
save_txtboolFalseSpeichert Erkennungsergebnisse im Format [class] [x_center] [y_center] [width] [height] [confidence] in einer Textdatei. Nützlich für die Integration mit anderen Analysetools.
save_confboolFalseSchließt Konfidenzwerte in den gespeicherten Textdateien ein. Verbessert die Detailgenauigkeit für die Nachbearbeitung und Analyse.
save_cropboolFalseSpeichert zugeschnittene Bilder der Erkennungen. Nützlich für Datensatz-Augmentierung, Analyse oder das Erstellen fokussierter Datensätze für bestimmte Objekte.
show_labelsboolTrueZeigt Labels für jede Erkennung in der visuellen Ausgabe an. Ermöglicht ein sofortiges Verständnis der erkannten Objekte.
show_confboolTrueZeigt den Konfidenzwert für jede Erkennung neben dem Label an. Bietet Einblick in die Gewissheit des Modells für jede Erkennung.
show_boxesboolTrueZeichnet Begrenzungsrahmen um erkannte Objekte. Wesentlich für die visuelle Identifizierung und Lokalisierung von Objekten in Bildern oder Videoframes.
line_widthint or NoneNoneGibt die Linienstärke von Bounding Boxes an. Falls None, wird die Linienstärke automatisch basierend auf der Bildgröße angepasst. Bietet visuelle Anpassungsmöglichkeiten für mehr Klarheit.

Vorhersage-Anleitung

Validierungseinstellungen#

Validierungs-Einstellungen für YOLO-Modelle umfassen Hyperparameter und Konfigurationen zur Bewertung der Leistung anhand eines Validierungsdatasets. Diese Einstellungen beeinflussen Leistung, Geschwindigkeit und Genauigkeit. Zu den häufigen Einstellungen gehören Batch-Größe, Validierungshäufigkeit und Leistungsmetriken. Die Größe und Zusammensetzung des Validierungsdatasets sowie die spezifische Aufgabe beeinflussen den Prozess ebenfalls.

ArgumentTypStandardBeschreibung
datastrNoneGibt den Pfad zum Dataset-YAML an (z. B. coco8.yaml), das den Pfad zu den Validierungsdaten enthalten sollte. Bei der Klassifizierung wird stattdessen ein Dataset-Verzeichnis oder ein integrierter Dataset-Name angegeben (z. B. imagenet10).
imgszint640Definiert die Größe der Eingabebilder. Alle Bilder werden vor der Verarbeitung auf diese Dimension skaliert. Größere Größen können die Genauigkeit bei kleinen Objekten verbessern, erhöhen aber die Rechenzeit.
batchint16Legt die Anzahl der Bilder pro Batch fest. Höhere Werte nutzen den GPU-Speicher effizienter, erfordern jedoch mehr VRAM. Passe dies basierend auf den verfügbaren Hardware-Ressourcen an.
save_jsonboolFalseFalls True, werden die Ergebnisse zur weiteren Analyse, zur Integration mit anderen Tools oder zur Einreichung bei Evaluierungsservern wie COCO in einer JSON-Datei gespeichert.
conffloat0.001Legt den minimalen Konfidenzschwellenwert für Erkennungen fest. Niedrigere Werte erhöhen den Recall, können aber zu mehr False Positives führen. Precision-Recall-Kurven verwenden standardmäßig 0.001; Erkennungs-Konfusionsmatrizen verwenden einen expliziten conf-Wert oder 0.25, wenn dieser weggelassen wird. Die Zusammenfassung von Precision und Recall verwendet die max-F1-Konfidenz, sodass sie von Werten abweichen kann, die aus confusion_matrix.png abgeleitet wurden. Standardmäßig 0.01 für die OBB-Validierung, um den Speicherverbrauch zu reduzieren.
ioufloat0.7Legt den Schwellenwert der Intersection Over Union für Non-Maximum Suppression fest. Steuert die Eliminierung doppelter Erkennungen.
max_detint300Begrenzt die maximale Anzahl der Erkennungen pro Bild. Nützlich in dichten Szenen, um übermäßige Erkennungen zu verhindern und Rechenressourcen zu verwalten.
quantizeint oder strNoneValidierungspräzision: 16/"fp16" aktiviert FP16-Validierung auf unterstützten GPUs; 32/"fp32"/nicht gesetzt ist FP32. INT8/PTQ-Quantisierung wird während des Exports konfiguriert und dann durch Validieren des exportierten Modells verwendet. Ersetzt das veraltete half-Flag.
devicestrNoneGibt das Gerät für die Validierung an (cpu, cuda:0, npu, npu:0 usw.). Wenn None, wird automatisch das beste verfügbare Gerät ausgewählt. Mehrere CUDA-Geräte können durch Kommata getrennt angegeben werden.
dnnboolFalseFalls True, wird das OpenCV-DNN-Modul für die ONNX-Modellinferenz verwendet, was eine Alternative zu PyTorch-Inferenzmethoden darstellt.
plotsboolTrueWenn auf True gesetzt, werden Plots von Vorhersagen gegenüber Ground Truth, Konfusionsmatrizen und PR-Kurven zur visuellen Auswertung der Modellleistung generiert und gespeichert.
classeslist[int]NoneGibt eine Liste von Klassen-IDs an, die evaluiert werden sollen. Nützlich, um während der Evaluierung bestimmte Klassen herauszufiltern und sich nur auf diese zu konzentrieren.
rectboolTrueWenn True, nutzt reev, verwendet es rechteckige Inferenz für das Batching, wodurch Padding reduziert und Geschwindigkeit sowie Effizienz durch die Verarbeitung von Bildern im originalen Seitenverhältnis möglicherweise erhöht werden. Wird bei der Validierung für depth ignoriert, bei der jedes Bild anstelle von Padding auf ein festes imgsz-Quadrat skaliert wird.
splitstr'val'Bestimmt den für die Validierung zu verwendenden Dataset-Split (val, test oder train). Bietet Flexibilität bei der Auswahl des Datensegments für die Leistungsbewertung.
projectstrNoneName des Projektverzeichnisses, in dem Validierungsergebnisse gespeichert werden. Hilft dabei, Ergebnisse verschiedener Experimente oder Modelle zu organisieren.
namestrNoneName des Validierungslaufs. Wird zum Erstellen eines Unterverzeichnisses innerhalb des Projektordners verwendet, in dem Validierungsprotokolle und -ausgaben gespeichert werden.
verboseboolTrueFalls True, werden während des Validierungsprozesses detaillierte Informationen angezeigt, einschließlich klassenbezogener Metriken, Batch-Fortschritt und zusätzlicher Debugging-Informationen.
save_txtboolFalseFalls True, werden Erkennungsergebnisse in Textdateien gespeichert (eine Datei pro Bild), was für weitere Analysen, benutzerdefinierte Nachbearbeitung oder die Integration mit anderen Systemen nützlich ist.
save_confboolFalseFalls True, werden in den gespeicherten Textdateien Konfidenzwerte eingeschlossen, wenn save_txt aktiviert ist, was detailliertere Ausgaben für Analyse und Filterung liefert.
workersint8Anzahl der Worker-Threads für das Laden von Daten. Höhere Werte können die Datenvorverarbeitung beschleunigen, aber möglicherweise den CPU-Verbrauch erhöhen. Die Einstellung auf 0 verwendet den Hauptthread, was in einigen Umgebungen stabiler sein kann.
augmentboolFalseAktiviert die Test-Time-Augmentation (TTA) während der Validierung, was die Erkennungsgenauigkeit potenziell auf Kosten der Inferenzgeschwindigkeit verbessert, indem Inferenz auf transformierten Versionen der Eingabe ausgeführt wird. Nur für Ultralytics PyTorch Modelle verfügbar.
agnostic_nmsboolFalseAktiviert die klassenunabhängige Non-Maximum Suppression, wodurch überlappende Boxen mit niedrigerem Score unabhängig von ihrer vorhergesagten Klasse unterdrückt werden. Nützlich für instanzfokussierte Anwendungen. Bei End-to-End-Modellen (YOLO26, YOLOv10) verhindert dies lediglich, dass dieselbe Erkennung mit mehreren Klassenlabels angezeigt wird (IoU=1.0-Duplikate), und führt keine IoU-Schwellenwert-basierte Unterdrückung zwischen unterschiedlichen Boxen durch.
single_clsboolFalseBehandelt alle Klassen während der Validierung als eine einzige Klasse. Nützlich zur Bewertung der Modellleistung bei binären Erkennungsaufgaben oder wenn Klassenunterschiede nicht wichtig sind.
visualizeboolFalseVisualisiert die Ground Truths, True Positives, False Positives und False Negatives für jedes Bild. Nützlich für Debugging und Modellinterpretation.
show_labelsboolTrueZeigt Klassenlabels in Validierungsvisualisierungen an, wenn visualize=True. Auf False setzen für eine übersichtlichere Ansicht von Übereinstimmungen und Fehlern.
show_confboolTrueZeigt Konfidenzwerte in Validierungsvisualisierungen an, wenn visualize=True. Auf False setzen für eine übersichtlichere Ansicht von Übereinstimmungen und Fehlern.
compilebool oder strFalseAktiviert die PyTorch-2.x-torch.compile-Graphenkompilierung mit backend='inductor'. Akzeptiert True"default", False → deaktiviert, oder einen String-Modus wie "default", "reduce-overhead", "max-autotune-no-cudagraphs". Fällt bei Nichtunterstützung unter Warnung auf Eager-Modus zurück.
channels_lastboolFalseVerwendet das Speicherformat channels_last (NHWC) für Faltungen während der Validierung, wodurch CUDA Tensor Core GPUs ohne Ergebnisänderung beschleunigt werden. Gilt nur für native PyTorch-Modelle; wird für CPU, MPS und exportierte Formate wie TensorRT und ONNX ignoriert.
end2endboolNoneÜberschreibt den End-to-End-Modus in YOLO-Modellen, die NMS-freie Inferenz unterstützen (YOLO26, YOLOv10). Wenn du es auf False setzt, kannst du die Validierung mit der traditionellen NMS-Pipeline ausführen und zusätzlich das Argument iou nutzen.

Sorgfältige Feinabstimmung und Experimente sind entscheidend, um eine optimale Leistung sicherzustellen sowie Overfitting zu erkennen und zu verhindern.

Validierungs-Anleitung

Export-Einstellungen#

Export-Einstellungen für YOLO-Modelle beinhalten Konfigurationen zum Speichern oder Exportieren des Modells zur Verwendung in verschiedenen Umgebungen. Diese Einstellungen beeinflussen Leistung, Größe und Kompatibilität. 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 Beschränkungen der Zielumgebung beeinflussen ebenfalls den Exportprozess.

ArgumentTypStandardBeschreibung
formatstr'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.
namestrNoneHardware-Zielname für Formate, die einen erfordern: Hailo-Architektur ('hailo8', 'hailo8l', 'hailo10h', 'hailo15h', 'hailo15l'; Standard ist 'hailo8l'), Rockchip-RKNN-Chip (Standard ist 'rk3588'), Huawei-Ascend-SoC (ein CANN --soc_version; Standard ist 'Ascend310B4') oder Qualcomm-QNN-HTP-Ziel (Standard ist '73'). Unterscheidet sich von dem von anderen Modi verwendeten project/name-Laufnamepaar.
imgszint oder tuple640Gewünschte Bildgröße für die Modelleingabe. Kann eine Ganzzahl für quadratische Bilder sein (z. B. 640 für 640×640) oder ein Tupel (height, width) für spezifische Dimensionen. Wenn nicht übergeben, übernimmt ein Export die im geladenen Checkpoint gespeicherte Trainingsgröße: Die offiziellen YOLO26-Checkpoints speichern 768 für depth, 224 für classify, 1024 für OBB und 640 für die anderen Aufgaben, während ein Fine-Tuning genau das imgsz speichert, mit dem es trainiert wurde. Ein aus einem YAML erstelltes Modell hat keine gespeicherte Trainingsgröße und verwendet 640.
kerasboolFalseAktiviert den Export in das Keras-Format für TensorFlow SavedModel, was die Kompatibilität mit TensorFlow Serving und APIs bietet.
optimizeboolFalseAktiviert eine höhere Compiler-Optimierung für DEEPX, wodurch die Inferenzlatenz verringert und gleichzeitig die Kompilierungszeit erhöht wird.
quantizeint oder strNoneQuantisierungspräzision: 16 (FP16, reduziert die Modellgröße und kann die Inferenz auf unterstützter Hardware beschleunigen) oder 8 (INT8/PTQ, komprimiert das Modell bei minimalem Genauigkeitsverlust weiter, hauptsächlich für Edge-Geräte; erfordert Kalibrierung data/fraction); 32/nicht gesetzt ist FP32. Exportformate, die gemischte Gewichts-/Aktivierungspräzision unterstützen, akzeptieren auch die Notation 'w8a8'/'w16a16'/'w8a16'/'w8a32'. Ersetzt die veralteten half/int8-Flags (half=True16, int8=True8, werden weiterhin mit einer Deprecation-Warnung akzeptiert). Es sind nur Präzisionen zulässig, die vom Zielformat unterstützt werden (siehe unten).
dynamicboolFalseErlaubt dynamische Eingabegrößen für TorchScript-, ONNX-, OpenVINO-, TensorRT- und CoreML-Exporte, was die Flexibilität beim Umgang mit variierenden Bilddimensionen erhöht.
simplifyboolTrueVereinfacht den intermediären ONNX-Graphen mit onnxslim für Exporte, die einen erstellen (siehe Exportformate), was Leistung und Kompatibilität mit Inferenz-Engines möglicherweise verbessert.
opsetintNoneGibt die ONNX-Opset-Version für Exporte an, die einen ONNX-Graphen erstellen (siehe Exportformate), um die Kompatibilität mit verschiedenen ONNX-Parsern und -Run-Zeiten sicherzustellen. Falls nicht gesetzt, wird die neueste unterstützte Version verwendet.
workspacefloat oder NoneNoneLegt die maximale Arbeitsspeichergröße in GiB für TensorRT-Optimierungen fest und gleicht dabei Speicherverbrauch und Leistung aus. Verwende None für die automatische Zuweisung durch TensorRT bis zum Gerätemaximum.
nmsboolFalseFügt dem exportierten Modell Non-Maximum Suppression (NMS) hinzu, sofern dies unterstützt wird (siehe Exportformate), was die Effizienz der Erkennungs-Nachbearbeitung verbessert. Für End-to-End-Modelle nicht verfügbar. Für CoreML nur für Erkennungsmodelle unterstützt.
conffloatNoneKonfidenzschwellenwert, der überall dort verwendet wird, wo ein Export-NMS generiert wird: nms=True-Exporte; Nicht-End-to-End-Erkennungsexporte von Hailo; sowie Erkennungs-, Pose- und Segmentierungsexporte von IMX, die intern nms=True erzwingen. Standardmäßig auf 0.25 gesetzt, wenn nicht definiert.
ioufloat0.7IoU-Schwellenwert, der überall dort verwendet wird, wo NMS zur Exportzeit generiert wird: nms=True-Exporte; Hailos Nicht-End-to-End-Detect-Exporte; sowie IMX-Detect-, Pose- und Segment-Exporte, die intern nms=True erzwingen.
max_detint300Maximale Anzahl an Erkennungen, die in der Ausgabe des exportierten Modells beibehalten werden. Gilt für nms=True-Exporte in jedem Format außer CoreML, dessen NMS-Pipeline kein Erkennungslimit hat, sowie für NMS-freie End-to-End-Erkennungsexporte (YOLO26, YOLOv10, beschränkt auf die Anzahl der verfügbaren Anker) und IMX-Detect-, Pose- und Segment-Exporte.
agnostic_nmsboolFalseAktiviert die klassenunabhängige NMS überall dort, wo eine NMS zur Exportzeit über die Standard-nms=True-Pipeline generiert wird, einschließlich der eigenen NMS-Stufe von CoreML, wodurch überlappende Boxen mit niedrigerem Score über verschiedene Klassen hinweg anstatt nur innerhalb derselben Klasse unterdrückt werden. Wird von den eigenen generierten NMS-Konfigurationen von Hailo oder IMX nicht berücksichtigt, da diese keine klassenunabhängige Option besitzen und unabhängig von diesem Flag klassenbezogen bleiben. Ist auch in NMS-freie End-to-End-Exporte (YOLO26, YOLOv10) integriert, wo es lediglich verhindert, dass dieselbe Erkennung unter mehreren Klassenlabels erscheint (IoU=1.0-Duplikate), aber keine IoU-Schwellenwertunterdrückung zwischen unterschiedlichen Boxen vornimmt.
batchint1Gibt die Batch-Inferenzgröße des Exportmodells oder die maximale Anzahl von Bildern an, die das exportierte Modell im Modus predict gleichzeitig verarbeitet. Bei Edge-TPU-Exporten wird dies automatisch auf 1 gesetzt.
devicestrNoneGibt das Gerät für den Export an: GPU (device=0), CPU (device=cpu), MPS für Apple Silicon (device=mps), Huawei Ascend NPU (device=npu oder device=npu:0) oder DLA für NVIDIA Jetson (device=dla:0 oder device=dla:1). TensorRT-Exporte verwenden automatisch die GPU, aber TensorRT 11.0 unterstützt kein DLA.
verboseboolFalseErhöht das TensorRT-Builder-Protokoll während des format='engine'-Exports auf den Schweregrad VERBOSE. Andere Exportformate ignorieren dies.
datastrNonePfad zum Dataset-YAML, das für die INT8-Quantisierungskalibrierung unerlässlich ist; bei der Klassifizierung wird stattdessen ein Dataset-Verzeichnis oder ein integrierter Dataset-Name verwendet. Wenn bei aktiviertem INT8 nicht angegeben, wählt Ultralytics ein aufgabenspezifisches Kalibrierungs-Dataset aus, sofern erforderlich, oder greift auf das Standard-Dataset für die Modellaufgabe zurück.
splitstr'val'Dataset-Split ('train', 'val' oder 'test'), der verwendet wird, um den INT8-Quantisierungskalibrierungs-Dataloader aus data zu erstellen.
fractionfloat, int oder list1.0Für die INT8-Kalibrierung verwendeter Dataset-Subset: ein Verhältnis, eine Bildanzahl oder [train, val, test]-Verhältnisse/Anzahlen. Listen mit zwei Elementen belassen test vollständig, während ein dritter Wert es begrenzt und 0 es überspringt. Ein Integer 1 wählt ein Bild aus, während ein Float 1.0 alle Bilder auswählt.
end2endboolNoneÜberschreibt den End-to-End-Modus in YOLO-Modellen, die NMS-freie Inferenz unterstützen (YOLO26, YOLOv10). Wenn du es auf False setzt, kannst du diese Modelle so exportieren, dass sie mit der traditionellen NMS-basierten Nachbearbeitungspipeline kompatibel sind. Weitere Einzelheiten findest du im Leitfaden zur End-to-End-Erkennung.

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

Export-Anleitung

Solutions-Einstellungen#

Ultralytics Solutions-Konfigurationseinstellungen bieten Flexibilität, um Modelle für Aufgaben wie Objektzählung, Heatmap-Erstellung, Workout-Tracking, Datenanalyse, Zonentracking, Warteschlangenmanagement und regionsbasierte Zählung anzupassen. Diese Optionen ermöglichen einfache Anpassungen für genaue und nützliche Ergebnisse, die auf spezifische Bedürfnisse zugeschnitten sind.

ArgumentTypStandardBeschreibung
modelstrNonePfad zu einer Ultralytics YOLO-Modelldatei.
regionlist oder dictNonePunkte, die die Region von Interesse definieren – entweder eine Liste von (x, y)-Tupeln oder ein Dictionary, das Regionsnamen auf Punktlisten für mehrere Regionen abbildet (nur RegionCounter). Wenn None, greifen Lösungen, die eine Region erfordern, auf einen vordefinierten Standardwert zurück.
show_inboolTrueFlag zur Steuerung, ob die 'in'-Zähler im Videostream angezeigt werden sollen.
show_outboolTrueFlag zur Steuerung, ob die 'out'-Zähler im Videostream angezeigt werden sollen.
analytics_typestr'line'Art des Graphen, d. h. line, bar, area oder pie.
colormapintcv2.COLORMAP_DEEPGREENZu verwendende Farbkarte für die Heatmap.
line_widthint2Linienstärke für die Boxen, Keypoints und Zählungen, die die Lösung zeichnet.
verboseboolTrueAktiviert das pro-Frame-Protokoll der Lösung für Eingabeform, Klassenzahlen und Verarbeitungsgeschwindigkeit. Der Tracking-Aufruf selbst verläuft immer im Hintergrund.
json_filestrNonePfad zur JSON-Datei, die alle Parkkoordinatendaten enthält.
up_anglefloat145.0Winkelschwellenwert für die 'up'-Pose.
kptslist[int]'[6, 8, 10]'Liste von drei Keypoint-Indizes für die Workout-Überwachung. Diese entsprechen Körpergelenken oder Teilen wie Schultern, Ellbogen und Handgelenken für Übungen wie Liegestütze, Klimmzüge, Kniebeugen und Bauchmuskeltraining.
down_angleint90Winkelschwellenwert für die 'down'-Pose.
blur_ratiofloat0.5Passt den Prozentsatz der Unschärfeintensität an, mit Werten im Bereich 0.1 - 1.0.
crop_dirstr'cropped-detections'Verzeichnisname zum Speichern der zugeschnittenen Detektionen.
recordsint5Gesamtzahl der Detektionen, um eine E-Mail mit dem Sicherheitsalarmsystem auszulösen.
vision_pointtuple[int, int](20, 20)Der Punkt, an dem VisionEye Objekte verfolgt und Pfade zeichnet.
sourcestrNonePfad zur Eingangsquelle (Video, RTSP, etc.). Nur mit dem Solutions-CLI (Command Line Interface) verwendbar.
figsizetuple[float, float](12.8, 7.2)Figurengröße für analytische Diagramme wie Heatmaps oder Graphen.
fpsfloat30.0Bilder pro Sekunde für Geschwindigkeitsberechnungen.
max_histint5Maximale Anzahl historischer Punkte pro Objekt für Geschwindigkeits-/Richtungsberechnungen.
meter_per_pixelfloat0.05Skalierungsfaktor für die Umrechnung von Pixelabständen in reale Einheiten.
max_speedint120Maximales Geschwindigkeitslimit in visuellen Overlays (verwendet für Warnungen).
datastr'images'Pfad zum Bildverzeichnis für die Ähnlichkeitssuche.
imgszint640Eingangsbildgröße für die Modellinferenz.

Lösungen-Anleitung

Augmentierungs-Einstellungen#

Data augmentation-Techniken sind entscheidend, um die Robustheit und Leistung von YOLO-Modellen zu verbessern, indem Variabilität in die training data eingeführt wird, was dem Modell hilft, besser auf ungesehene Daten zu generalisieren. Die folgende Tabelle beschreibt den Zweck und die Wirkung jedes Augmentierungsarguments:

ArgumentTypStandardUnterstützte AufgabenBereichBeschreibung
hsv_hfloat0.015detect, segment, semantic, depth, classify, pose, obb0.0 - 1.0Passt den Farbton des Bildes um einen Bruchteil des Farbkreises an und führt so Farbvariabilität ein. Hilft dem Modell, sich über verschiedene Lichtverhältnisse hinweg zu verallgemeinern. Bei classify gilt dies nur, wenn auto_augment=None.
hsv_sfloat0.7detect, segment, semantic, depth, classify, pose, obb0.0 - 1.0Verändert die Sättigung des Bildes um einen Bruchteil, was sich auf die Intensität der Farben auswirkt. Nützlich zur Simulation verschiedener Umweltbedingungen. Bei classify gilt dies nur, wenn auto_augment=None.
hsv_vfloat0.4detect, segment, semantic, depth, classify, pose, obb0.0 - 1.0Modifiziert den Wert (Helligkeit) des Bildes um einen Bruchteil, wodurch das Modell unter verschiedenen Lichtverhältnissen gute Leistungen erbringen kann. Bei classify gilt dies nur, wenn auto_augment=None.
degreesfloat0detect, segment, semantic, depth, pose, obb0.0 - 180Dreht das Bild zufällig innerhalb des angegebenen Gradbereichs, was die Fähigkeit des Modells verbessert, Objekte in verschiedenen Ausrichtungen zu erkennen.
translatefloat0.1detect, segment, semantic, depth, pose, obb0.0 - 1.0Verschiebt das Bild horizontal und vertikal um einen Bruchteil der Bildgröße, was dabei hilft, teilweise sichtbare Objekte erkennen zu lernen.
scalefloat | tuple0.5detect, segment, semantic, depth, classify, pose, obb0 - 1 oder ein explizites (min, max)-Tupel (nicht für classify)Skaliert das Bild um einen Verstärkungsfaktor und simuliert so Objekte in unterschiedlichen Entfernungen von der Kamera.
shearfloat0detect, segment, semantic, depth, pose, obb-180 - +180Schert das Bild um einen angegebenen Grad, was den Effekt nachahmt, dass Objekte aus verschiedenen Winkeln betrachtet werden.
perspectivefloat0detect, segment, semantic, depth, pose, obb0.0 - 0.001Wendet eine zufällige perspektivische Transformation auf das Bild an und verbessert so das Verständnis des Modells für Objekte im 3D-Raum.
flipudfloat0detect, segment, semantic, depth, classify, pose, obb0.0 - 1.0Spiegelt das Bild mit der angegebenen Wahrscheinlichkeit vertikal, was die Datenvariabilität erhöht, ohne die Eigenschaften des Objekts zu beeinflussen.
fliplrfloat0.5detect, segment, semantic, depth, classify, pose, obb0.0 - 1.0Spiegelt das Bild mit der angegebenen Wahrscheinlichkeit horizontal, was nützlich ist, um symmetrische Objekte zu erlernen und die Vielfalt des Datensatzes zu erhöhen.
bgrfloat0detect, segment, semantic, depth, pose, obb0.0 - 1.0Tauscht die Bildkanäle mit der angegebenen Wahrscheinlichkeit von RGB auf BGR, was nützlich ist, um die Robustheit gegenüber falscher Kanalreihenfolge zu erhöhen.
mosaicfloat1detect, segment, semantic, pose, obb0.0 - 1.0Kombiniert vier Trainingsbilder zu einem und simuliert verschiedene Szenenzusammensetzungen und Objektinteraktionen. Sehr effektiv für das Verständnis komplexer Szenen.
mixupfloat0detect, segment, semantic, pose, obb0.0 - 1.0Mischt zwei Bilder und deren Labels zu einem zusammengesetzten Bild. Verbessert die Generalisierungsfähigkeit des Modells durch die Einführung von Label-Rauschen und visueller Variabilität.
cutmixfloat0detect, segment, pose, obb0.0 - 1.0Kombiniert Teile von zwei Bildern, was eine teilweise Vermischung unter Beibehaltung klarer Regionen erzeugt. Erhöht die Modellrobustheit durch die Schaffung von Verdeckungsszenarien.
copy_pastefloat0segment, obb0.0 - 1.0Anteil der berechtigten Objekte, die eingefügt werden; flip spiegelt sie innerhalb des Bildes wider, während mixup den Wert zusätzlich als Wahrscheinlichkeit für die Anwendung über verschiedene Bilder hinweg nutzt.
copy_paste_modestrflipsegment, obb-Gibt die zu verwendende copy-paste-Strategie an. Zu den Optionen gehören 'flip' und 'mixup'.
auto_augmentstrrandaugmentclassify-Wendet eine vordefinierte Augmentierungsrichtlinie ('randaugment', 'autoaugment' oder 'augmix') an, um die Modellleistung durch visuelle Diversität zu verbessern.
erasingfloat0.4classify0.0 - 1.0Löscht während des Trainings zufällig Regionen im Bild, um das Modell dazu zu ermutigen, sich auf weniger offensichtliche Merkmale zu konzentrieren.
augmentationslistNonedetect, segment, semantic, depth, pose, obb-Benutzerdefinierte Albumentations-Transformationen für fortgeschrittene Datenaugmentierung (nur Python API). Akzeptiert eine Liste von Transformations-Objekten für spezielle Augmentierungsanforderungen.

Passe diese Einstellungen an, um Dataset- und Aufgabenanforderungen zu erfüllen. Das Experimentieren mit verschiedenen Werten kann dabei helfen, die optimale Augmentierungsstrategie für die beste Modellleistung zu finden.

Augmentierungs-Anleitung

Logging-, Checkpoint- und Plotting-Einstellungen#

Logging, Checkpoints, Plotting und Dateiverwaltung sind wichtig beim Training eines YOLO-Modells:

  • Logging: Verfolge den Fortschritt des Modells und diagnostiziere Probleme mit Bibliotheken wie TensorBoard oder indem du in eine Datei schreibst.
  • Checkpoints: Speichere das Modell in regelmäßigen Abständen, um das Training fortzusetzen oder mit verschiedenen Konfigurationen zu experimentieren.
  • Plotting: Visualisiere Leistung und Trainingsfortschritt unter Verwendung von Bibliotheken wie Matplotlib oder TensorBoard.
  • Dateiverwaltung: Organisiere während des Trainings generierte Dateien, wie Checkpoints, Protokolldateien und Plots, für einfachen Zugriff und Analyse.

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

ArgumentStandardBeschreibung
projectNoneGibt das Stammverzeichnis zum Speichern von Trainingsläufen an. Wenn nicht angegeben, werden Läufe unter runs/<task> gespeichert. Jeder Lauf wird in einem separaten Unterverzeichnis gespeichert.
nameNoneDefiniert den Experimentnamen. Wenn nicht angegeben, verwendet YOLO den Modusnamen und inkrementiert ihn für jeden Lauf (z. B. train, train-2), um ein Überschreiben zu vermeiden.
exist_okFalseBestimmt, ob ein bestehendes Experimentverzeichnis überschrieben werden soll. True erlaubt das Überschreiben; False verhindert es.
plotsTrueSteuert die Erstellung und Speicherung von Trainings- und Validierungsdiagrammen. Setze dies auf True, um Diagramme wie Verlustkurven, precision-recall-Kurven und Beispielvorhersagen zur visuellen Verfolgung der Leistung zu erstellen.
saveTrueAktiviert das Speichern von Trainings-Checkpoints und finalen Modellgewichten. Setze dies auf True, um den Modellstatus periodisch zu speichern, was die Wiederaufnahme des Trainings oder die Modellbereitstellung ermöglicht.

Benutzerdefinierte Konfigurationsdatei#

Lade eine gespeicherte YAML, um einen vollständigen Satz von Argumenten wiederzuverwenden, ohne sie inline zu übergeben. Das Argument cfg überschreibt Werte von default.yaml, während zusätzlich übergebene Argumente weiterhin Vorrang haben.

ArgumentStandardBeschreibung
cfgNonePfad zu einer YAML-Datei, deren Werte default.yaml-Einträge ersetzen. Siehe Overriding Default Config File für ein ausgearbeitetes CLI-Beispiel.

FAQ#

  • Verbessere die Leistung, indem du Hyperparameter wie batch size, learning rate, Momentum und Weight Decay anpasst. Passe die data augmentation-Einstellungen an, wähle den richtigen Optimizer und nutze Techniken wie Early Stopping oder mixed precision. Weitere Details findest du im Train Guide.

  • Wichtige Hyperparameter, die die Genauigkeit beeinflussen, sind:

    • Batch Size (batch): Größere Größen können das Training stabilisieren, benötigen jedoch mehr Speicher.
    • Learning Rate (lr0): Kleinere Raten bieten feine Anpassungen, aber eine langsamere Konvergenz.
    • Momentum (momentum): Beschleunigt Gradientenvektoren und dämpft Oszillationen.
    • Image Size (imgsz): Größere Größen verbessern die Genauigkeit, erhöhen jedoch die Rechenlast.

    Passe diese basierend auf deinem Dataset und deiner Hardware an. Erfahre mehr in den Train Settings.

  • Die learning rate (lr0) ist von entscheidender Bedeutung; beginne mit 0.01 für SGD oder 0.001 für den Adam optimizer. Überwache Metriken und passe sie nach Bedarf an. Verwende Cosinus-Lernraten-Scheduler (cos_lr) oder Warmup (warmup_epochs, warmup_momentum). Details findest du im Train Guide.

  • Standardeinstellungen beinhalten:

    • Confidence Threshold (conf=0.25): Minimale Konfidenz für Erkennungen.
    • IoU Threshold (iou=0.7): Für Non-Maximum Suppression (NMS).
    • Image Size (imgsz=640): Ändert die Größe der Eingabebilder.
    • Device (device=None): Wählt CPU, GPU, Apple MPS oder Huawei Ascend NPU (npu) aus.

    Eine vollständige Übersicht findest du unter Predict Settings und im Predict Guide.

  • Das mixed precision-Training (amp=True) reduziert den Speicherbedarf und beschleunigt das Training durch die Verwendung von FP16 und FP32. Es ist vorteilhaft für moderne GPUs, da es größere Modelle und schnellere Berechnungen ohne signifikanten Genauigkeitsverlust ermöglicht. Erfahre mehr im Train Guide.

Kommentare