Ultralytics YOLO27:
Get Started

Techniken zur Vorverarbeitung annotierter Computer-Vision-Daten#

Bei der Datenvorverarbeitung werden rohe, annotierte Bilder in saubere und einheitliche Eingaben umgewandelt, die ein Computer-Vision-Modell für erfolgreiches Training benötigt. Mit Ultralytics YOLO26 werden die grundlegenden Pixeloperationen – RGB-Konvertierung, Skalierung auf [0, 1] und Größenanpassung – automatisch in der Trainingspipeline ausgeführt. Daher musst du noch den Datensatz richtig aufteilen, Klassen ausgleichen und geeignete Augmentierungen auswählen. Dieser Leitfaden behandelt die wichtigsten Techniken: Größenanpassung, Normalisierung, Aufteilung des Datensatzes, Datenerweiterung und explorative Datenanalyse (EDA).



Ansehen: So verbesserst du die Modellgenauigkeit in realen Szenarien durch Datenvorverarbeitung und -erweiterung 🚀

Dieser Schritt folgt auf das Festlegen der Projektziele und das Sammeln und Annotieren der Daten und steht früh im Ablauf eines Computer-Vision-Projekts.

Warum die Vorverarbeitung wichtig ist#

Durch die Vorverarbeitung erhältst du deine Daten in einem Format, das den Rechenaufwand verringert und die Modellleistung verbessert. Sie behebt drei häufige Probleme in Rohdaten:

  • Rauschen: Irrelevante oder zufällige Schwankungen in den Daten.
  • Uneinheitlichkeit: Abweichungen bei Bildgrößen, Formaten und Qualität.
  • Klassenungleichgewicht: Ungleiche Verteilung von Klassen oder Kategorien im Datensatz.

Vorverarbeitungstechniken#

Zu den wichtigsten Techniken zählen Größenanpassung, Normalisierung, Aufteilung des Datensatzes und Augmentierung. Bei YOLO26 werden die ersten beiden Schritte automatisch ausgeführt; bei der Aufteilung und Augmentierung sind deine Entscheidungen besonders wichtig.

Bilder in der Größe anpassen#

Viele Modelle benötigen eine einheitliche Eingabegröße. Durch die Größenanpassung werden Bilder vereinheitlicht und der Rechenaufwand verringert. Zwei gängige Interpolationsverfahren sind:

  • Bilineare Interpolation: Glättet Pixelwerte, indem ein gewichteter Durchschnitt der vier nächstgelegenen Pixel berechnet wird.
  • Nächster Nachbar: Übernimmt den Wert des nächstgelegenen Pixels ohne Mittelwertbildung – schneller, aber mit einem gröberen Bild als Ergebnis.

Bibliotheken wie OpenCV und PIL (Pillow) stellen diese Funktionen bereit, aber mit YOLO26 musst du Bilder normalerweise nicht manuell in der Größe anpassen. Das übernimmt das Argument imgsz. Bei der Verarbeitung mit fester quadratischer Eingabegröße bringen Validierung und Inferenz Bilder per Letterboxing auf eine imgsz × imgsz-Eingabe wie 640 × 640, wobei das Seitenverhältnis erhalten bleibt und graue Ränder (Wert 114) hinzugefügt werden. Größere Bilder werden so weit verkleinert, dass sie hineinpassen, während kleinere Bilder bei deaktivierter Hochskalierung nicht vergrößert werden. Im standardmäßigen Trainingspfad ordnet mosaic=1.0 stattdessen vier Bilder kachelartig auf einer größeren Bildfläche an und schneidet das Gesamtbild wieder auf imgsz zu; sobald close_mosaic das Mosaik für die letzten Epochen deaktiviert, werden Bilder per Letterboxing angepasst und anschließend weiterhin zufällig transformiert, statt unverändert übernommen zu werden. Rechteckige Batches (rect=True) und multi_scale verwenden unterschiedliche Eingabeformen.

Pixelwerte normalisieren#

Bei der Normalisierung werden Pixelwerte auf einen Standardbereich skaliert. Dadurch konvergiert das Modell während des Trainings schneller. Zwei gängige Verfahren sind:

  • Min-Max-Skalierung: Skaliert Pixelwerte auf einen Bereich von 0 bis 1.
  • Z-Score-Normalisierung: Skaliert Pixelwerte anhand ihres Mittelwerts und ihrer Standardabweichung.

YOLO26 übernimmt die Normalisierung automatisch in der Vorverarbeitungspipeline: Es wandelt Bilder in RGB um und skaliert Pixelwerte durch Division durch 255 auf den Bereich [0, 1] (Min-Max-Skalierung). YOLO wendet standardmäßig keine Normalisierung anhand von Mittelwert und Standardabweichung (Z-Score-Normalisierung) wie bei ImageNet an. Ein manueller Normalisierungsschritt ist daher nicht erforderlich.

Den Datensatz aufteilen#

Wenn du die Daten in Trainings-, Validierungs- und Testdatensätze aufteilst, kannst du das Modell anhand unbekannter Daten evaluieren und seine Generalisierungsfähigkeit messen. Eine gängige Aufteilung umfasst 70 % für das Training, 20 % für die Validierung und 10 % für das Testen. Tools wie scikit-learn oder TensorFlow erleichtern diese Aufgabe.

Beachte beim Aufteilen Folgendes:

  • Klassenverteilung beibehalten: Stelle sicher, dass jede Klasse in den Trainings-, Validierungs- und Testdatensätzen proportional vertreten ist.
  • Klassen ausgleichen: Bei unausgewogenen Datensätzen kannst du die Minderheitsklasse überabtasten oder die Mehrheitsklasse unterabtasten – jedoch nur innerhalb des Trainingsdatensatzes.
Datenleckage vermeiden

Teile den Datensatz vor jeder Augmentierung oder sonstigen Vorverarbeitung auf und wende diese Transformationen nur auf den Trainingsdatensatz an. Wenn du die Daten vor der Aufteilung augmentierst, können Informationen aus den Validierungs- oder Testbildern in das Training einfließen. Dadurch entstehen irreführend hohe Werte, die bei realen Daten einbrechen.

Den Datensatz augmentieren#

Bei der Datenerweiterung wird ein Datensatz künstlich vergrößert, indem veränderte Versionen vorhandener Bilder erstellt werden. Das hilft, Überanpassung zu verringern und die Generalisierungsfähigkeit zu verbessern. Zu den Vorteilen zählen:

  • Robustere Modelle: Variationen bei Beleuchtung, Ausrichtung und Maßstab machen das Modell unempfindlicher gegenüber Verzerrungen in der realen Welt.
  • Kosteneffizient: Du vergrößerst den Trainingsdatensatz, ohne neue Daten sammeln und annotieren zu müssen.
  • Daten besser nutzen: Jedes annotierte Bild liefert mehrere Varianten für das Training.

Examples of data augmentation techniques including flips, rotations, scaling, and color adjustments applied to a sample image

Bei YOLO26 wird die Stärke der Augmentierung über Trainingsargumente gesteuert, die an model.train() oder die entsprechenden CLI-Flags übergeben werden. Sie wird nicht durch Bearbeiten der Dataset-YAML-Datei festgelegt, in der Metadaten wie Pfade, Klassennamen und Aufteilungen definiert sind. Eine Ausnahme ist flip_idx: Pose-Datensätze deklarieren diesen Wert in der Dataset-YAML-Datei, um Keypoint-Paare für links und rechts zuzuordnen. Fehlt der Wert, deaktiviert YOLO fliplr und flipud vollständig. Zu den integrierten Augmentierungen gehören:

  • Mosaik, MixUp und CutMix (mosaic, mixup, cutmix): Kombinieren mehrere Bilder zu einem Trainingsbeispiel.
  • Spiegelungen (fliplr, flipud): Spiegeln Bilder horizontal oder vertikal.
  • Geometrische Transformationen (degrees, translate, scale, shear, perspective): Drehen, verschieben, vergrößern, verkleinern und verzerren Bilder.
  • HSV-Farbvariation (hsv_h, hsv_s, hsv_v): Variiert Farbton, Sättigung und Helligkeit.
  • Kopieren und Einfügen (copy_paste): Fügt zusätzliche Kopien segmentierter Objekte ein. Standardmäßig werden diese innerhalb desselben Bildes gespiegelt; mit copy_paste_mode=mixup können Objekte aus einem anderen Bild übernommen werden.
  • Kanäle vertauschen (bgr): Vertauscht die Reihenfolge der RGB-Kanäle zu BGR.
  • Klassifikationstransformationen (auto_augment, erasing): Wenden beim Training eines Klassifikators eine automatische Augmentierungsstrategie und zufälliges Löschen von Bildbereichen an.
Augmentierungsstärke beim Training festlegen
from ultralytics import YOLO

model = YOLO("yolo26n.pt")

# Die Augmentierung wird über Trainingsargumente konfiguriert, nicht über die Dataset-YAML-Datei
model.train(data="coco8.yaml", epochs=10, hsv_h=0.015, fliplr=0.5, mosaic=1.0, degrees=10.0)

Eine vollständige Liste der Augmentierungsargumente und ihrer Standardwerte findest du in der Referenz zu den Augmentierungseinstellungen und im speziellen YOLO-Leitfaden zur Datenerweiterung. Wenn das Paket albumentations installiert ist, aktiviert YOLO außerdem automatisch die integrierten, auf Albumentations basierenden Augmentierungen.

Fallbeispiel: Vorverarbeitung für die Fahrzeugerkennung#

Stell dir ein Projekt vor, bei dem Fahrzeuge in Verkehrsaufnahmen mit YOLO26 erkannt und klassifiziert werden sollen. Als Ausgangspunkt dienen Bilder mit annotierten Begrenzungsrahmen und Labels. So sieht jede Entscheidung zur Vorverarbeitung aus:

  • Größenanpassung: Keine manuelle Arbeit erforderlich – YOLO26 passt die Bildgröße während des Trainings auf imgsz an.
  • Normalisierung: Keine manuelle Arbeit erforderlich – YOLO26 skaliert Pixelwerte automatisch auf [0, 1].
  • Aufteilung: Teile den Datensatz in 70 % Trainingsdaten, 20 % Validierungsdaten und 10 % Testdaten auf und achte darauf, die Klassenverteilung in allen Teilmengen beizubehalten.
  • Augmentierung: Lege Trainingsargumente fest, die für Verkehrsszenen geeignet sind – beispielsweise fliplr für Unabhängigkeit von der Richtung, hsv_v für Tag- und Nachtbeleuchtung und mosaic für unterschiedliche Objektdichten.

Nach diesen Entscheidungen ist der Datensatz bereit für die explorative Datenanalyse (EDA).

Explorative Datenanalyse (EDA)#

Die EDA nutzt Statistiken und Visualisierungen, um Muster und Verteilungen in deinen Daten aufzudecken. So kannst du vor dem Training Probleme wie ein Klassenungleichgewicht oder Ausreißer erkennen.

Statistische Methoden der EDA#

Die statistische EDA beginnt mit grundlegenden Kennzahlen – Mittelwert, Median, Standardabweichung und Spannweite –, die für Eigenschaften wie Pixelintensitätsverteilungen berechnet werden. Sie geben einen schnellen Überblick über die Qualität deines Datensatzes und helfen, Unregelmäßigkeiten frühzeitig zu erkennen.

Visuelle Methoden der EDA#

Visualisierungen machen Muster sichtbar, die zusammenfassenden Statistiken entgehen können, etwa Klassenungleichgewichte und Ausreißer. Zu den gängigen Werkzeugen zählen:

  • Histogramme und Boxplots: Zeigen die Verteilung der Pixelwerte und machen Ausreißer bei Intensitäten oder Merkmalsverteilungen sichtbar.
  • Balkendiagramme: Zeigen Klassenungleichgewichte, indem sie die Anzahl der Beispiele pro Klasse vergleichen.
  • Streudiagramme: Veranschaulichen Zusammenhänge zwischen Bildmerkmalen oder Annotationen.
  • Heatmaps: Visualisieren Pixelintensitätsverteilungen oder die räumliche Verteilung von Annotationen über die Bilder hinweg.

Ultralytics Platform für die EDA#

Für eine EDA ohne Programmierung kannst du deinen Datensatz in die Ultralytics Platform hochladen. Die Registerkarte Charts des Datensatzes erstellt automatisch wichtige EDA-Visualisierungen: die Verteilung der Teilmengen, die häufigsten Klassen, Histogramme der Bildbreite und -höhe sowie 2D-Heatmaps der Annotationspositionen und Bildabmessungen. Auf der Registerkarte Images kannst du deine Daten in Raster-, Kompakt- oder Tabellenansicht mit eingeblendeten Annotationen durchsuchen. So lassen sich falsch beschriftete Beispiele oder unausgewogene Klassen leicht erkennen – ganz ohne Code.

Fazit#

Richtig aufgeteilte, normalisierte und augmentierte Daten verringern Rauschen und verbessern die Generalisierungsfähigkeit. So wird aus einer unsortierten Bildersammlung ein zuverlässiger Trainingsdatensatz. Nachdem du deinen Datensatz vorverarbeitet hast, kannst du als Nächstes dein Modell trainieren. Wenn unterwegs Fragen auftauchen, wende dich an die Community im Ultralytics GitHub-Repository oder auf dem Ultralytics Discord-Server.

Häufig gestellte Fragen#

  • Durch die Vorverarbeitung werden deine Daten bereinigt und vereinheitlicht und in ein für das Training optimiertes Format gebracht. Indem du Rauschen, Uneinheitlichkeit und Klassenungleichgewichte in den Rohdaten behebst, verringern Schritte wie Größenanpassung, Normalisierung, Augmentierung und Aufteilung des Datensatzes den Rechenaufwand und verbessern die Modellleistung. Wie sich dieser Schritt in den größeren Ablauf einfügt, erfährst du unter Schritte eines Computer-Vision-Projekts.

  • Konfiguriere die Augmentierung über Trainingsargumente und nicht über die Dataset-YAML-Datei. Übergib Argumente wie fliplr, mosaic, hsv_h und degrees an model.train() (oder verwende die entsprechenden CLI-Flags), um die Wahrscheinlichkeit und Stärke jeder Transformation festzulegen. Diese Einstellungen sind in der Referenz zu den Augmentierungseinstellungen definiert und im YOLO-Leitfaden zur Datenerweiterung erläutert. Bei Pose-Datensätzen gilt eine Ausnahme: Ihre Keypoint-Zuordnung flip_idx ist in der Dataset-YAML-Datei hinterlegt; ohne sie werden Spiegelungen deaktiviert.

  • Die zwei gängigsten Verfahren sind die Min-Max-Skalierung (Pixelwerte auf einen Bereich von 0 bis 1 skalieren) und die Z-Score-Normalisierung (Skalierung anhand von Mittelwert und Standardabweichung). YOLO26 wendet die Min-Max-Skalierung automatisch an – es wandelt Bilder in RGB um und teilt die Pixelwerte durch 255 –, sodass keine manuelle Normalisierung erforderlich ist. Standardmäßig wird keine Z-Score-Normalisierung angewendet.

  • Eine gängige Aufteilung umfasst 70 % für das Training, 20 % für die Validierung und 10 % für das Testen. Achte darauf, die Klassenverteilung in allen drei Teilmengen beizubehalten, und vermeide Datenleckage, indem du die Augmentierung erst nach der Aufteilung und nur auf den Trainingsdatensatz anwendest. Tools wie scikit-learn oder TensorFlow teilen die Daten effizient auf. Im Leitfaden zur Datenerfassung und Annotation findest du Informationen zur Vorbereitung des Datensatzes in den vorherigen Schritten.

  • Ja. Mit dem Argument imgsz legst du die Zielgröße der Eingaben fest, ohne die Bilder manuell bearbeiten zu müssen. Bei der Verarbeitung mit festgelegter quadratischer Größe bringen Validierung und Inferenz Bilder durch Letterboxing auf die angegebene Form und erhalten dabei das Seitenverhältnis. Größere Bilder werden passend verkleinert; kleinere Bilder werden nicht vergrößert, wenn die Hochskalierung deaktiviert ist. Während des Trainings erreicht die standardmäßige Mosaikaugmentierung die Zielgröße stattdessen, indem sie vier Bilder zusammenfügt und zuschneidet. Rechteckige Stapel (rect=True) und multi_scale verwenden andere Eingabeformen. Weitere Informationen findest du in der Dokumentation zum Modelltraining.

Kommentare