Techniken zur Datenvorverarbeitung für annotierte Computer-Vision-Daten#
Die Datenvorverarbeitung wandelt rohe, annotierte Bilder in saubere und konsistente Eingaben um, die ein Computer-Vision-Modell für ein gutes Training benötigt. Mit Ultralytics YOLO26 laufen die grundlegenden Pixeloperationen — RGB-Konvertierung, Skalierung auf [0, 1] und Größenänderung — automatisch innerhalb der Trainingspipeline ab. Dadurch beschränkt sich die verbleibende Arbeit auf die korrekte Aufteilung deines Datensatzes, den Ausgleich der Klassen und die Auswahl von Augmentierungen. Dieser Leitfaden behandelt diese wesentlichen Techniken: Größenänderung, Normalisierung, Aufteilung des Datensatzes, Datenaugmentation und explorative Datenanalyse (EDA).
Watch: How to Use Data Preprocessing and Augmentation to Improve Model Accuracy in Real-World Scenarios 🚀
Dieser Schritt folgt auf das Definieren der Ziele deines Projekts sowie das Sammeln und Annotieren deiner Daten und steht früh im Workflow eines Computer-Vision-Projekts.
Warum die Vorverarbeitung wichtig ist#
Die Vorverarbeitung bringt deine Daten in ein Format, das die Rechenlast reduziert und die Modellleistung verbessert. Sie behebt drei häufige Probleme in Rohdaten:
- Rauschen: Irrelevante oder zufällige Variationen in den Daten.
- Inkonsistenz: Unterschiede bei Bildgrößen, Formaten und Qualität.
- Ungleichgewicht: Ungleichmäßige Verteilung von Klassen oder Kategorien über den Datensatz hinweg.
Techniken der Vorverarbeitung#
Die wichtigsten Techniken sind Größenänderung, Normalisierung, Aufteilung des Datensatzes und Augmentation. Bei YOLO26 werden die ersten beiden automatisch ausgeführt, während deine Entscheidungen bei der Aufteilung und Augmentation den größten Einfluss haben.
Größenänderung von Bildern#
Viele Modelle benötigen eine einheitliche Eingabegröße. Durch die Größenänderung werden Bilder vereinheitlicht und die Rechenkomplexität reduziert. Zwei gängige Interpolationsverfahren sind:
- Bilineare Interpolation: Glättet Pixelwerte durch einen gewichteten Mittelwert der vier nächstgelegenen Pixel.
- Nächster Nachbar: Kopiert den Wert des nächstgelegenen Pixels ohne Mittelwertbildung — schneller, erzeugt aber ein blockigeres Bild.
Bibliotheken wie OpenCV und PIL (Pillow) stellen diese Funktionen bereit. Mit YOLO26 musst du Bilder jedoch normalerweise nicht manuell in der Größe ändern. Das Argument imgsz übernimmt diese Aufgabe. Im Pfad mit festgelegter quadratischer Größe versehen Validierung und Inferenz Bilder mit Letterboxing in Richtung einer Eingabe wie imgsz × imgsz mit 640 × 640, wobei das Seitenverhältnis erhalten bleibt und mit Grau (Wert 114) aufgefüllt wird. Größere Bilder werden zur Anpassung verkleinert, während kleinere Bilder bei deaktivierter Vergrößerung nicht vergrößert werden. Im standardmäßigen Trainings-Pfad fügt mosaic=1.0 stattdessen vier Bilder auf einer größeren Fläche zusammen und schneidet diese wieder auf imgsz zu. Sobald close_mosaic die Mosaic-Augmentation für die letzten Epochen deaktiviert, werden Bilder mit Letterboxing versehen und anschließend weiterhin zufällig transformiert, statt unverändert durchgereicht zu werden. Rechteckige Batches (rect=True) und multi_scale verwenden andere Eingabeformen.
Normalisierung von Pixelwerten#
Die Normalisierung skaliert Pixelwerte auf einen Standardbereich. Dadurch kann das Modell während des Trainings schneller konvergieren. Zwei gängige Techniken 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 als Teil seiner Vorverarbeitungspipeline: Es konvertiert Bilder in RGB und skaliert Pixelwerte durch Division durch 255 (Min-Max-Skalierung) auf den Bereich [0, 1]. YOLO wendet standardmäßig keine ImageNet-artige Mittelwert- und Standardabweichungsnormalisierung (Z-Score) an, daher ist kein manueller Normalisierungsschritt erforderlich.
Aufteilen des Datensatzes#
Durch die Aufteilung der Daten in Trainings-, Validierungs- und Testmengen kannst du das Modell mit unbekannten Daten bewerten und seine Generalisierungsfähigkeit messen. Eine häufige Aufteilung besteht aus 70 % für das Training, 20 % für die Validierung und 10 % für das Testen. Tools wie scikit-learn oder TensorFlow machen dies unkompliziert.
Beachte beim Aufteilen folgende Punkte:
- Klassenverteilung beibehalten: Stelle sicher, dass jede Klasse proportional in der Trainings-, Validierungs- und Testmenge vertreten ist.
- Klassen ausgleichen: Ziehe bei unausgeglichenen Datensätzen ein Oversampling der Minderheitsklasse oder ein Undersampling der Mehrheitsklasse in Betracht — ausschließlich innerhalb der Trainingsmenge.
Teile den Datensatz vor jeder Augmentation oder sonstigen Vorverarbeitung auf und wende diese Transformationen nur auf die Trainingsmenge an. Eine Augmentation vor der Aufteilung ermöglicht es Informationen aus Validierungs- oder Testbildern, das Training zu beeinflussen. Dadurch entstehen irreführend hohe Bewertungen, die bei realen Daten einbrechen.
Augmentation des Datensatzes#
Datenaugmentation vergrößert einen Datensatz künstlich, indem modifizierte Versionen vorhandener Bilder erstellt werden. Sie hilft, Overfitting zu reduzieren und die Generalisierungsfähigkeit zu verbessern. Zu den Vorteilen gehören:
- Robustere Modelle: Variationen bei Beleuchtung, Ausrichtung und Maßstab machen das Modell widerstandsfähiger gegenüber Verzerrungen in der Praxis.
- Kosteneffizient: Du erweiterst die Trainingsmenge, ohne neue Daten zu sammeln und zu beschriften.
- Bessere Datennutzung: Jedes annotierte Bild liefert mehrere Trainingsvarianten.
Bei YOLO26 wird die Stärke der Augmentation über Trainingsargumente gesteuert, die an model.train() oder die entsprechenden CLI-Flags übergeben werden, nicht durch Bearbeiten der Dataset-YAML-Datei. Diese definiert Metadaten des Datensatzes wie Pfade, Klassennamen und Aufteilungen. Die einzige Ausnahme ist flip_idx: Posen-Datensätze deklarieren den Schlüssel in der Dataset-YAML-Datei, um Paare von Keypoints für links und rechts zuzuordnen. Fehlt er, deaktiviert YOLO fliplr und flipud vollständig. Zu den integrierten Augmentationen gehören:
- Mosaic, 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 und verzerren Bilder. - HSV-Farbvariation (
hsv_h,hsv_s,hsv_v): Variieren Farbton, Sättigung und Helligkeit. - Copy-Paste (
copy_paste): Fügen zusätzliche Kopien segmentierter Objekte ein, standardmäßig innerhalb desselben Bildes gespiegelt oder mitcopy_paste_mode=mixupaus einem anderen Bild übernommen. - Kanaltausch (
bgr): Vertauscht die Reihenfolge der RGB-Kanäle zu BGR. - Transformationen für die Klassifikation (
auto_augment,erasing): Wenden beim Training eines Klassifikators eine automatische Augmentationsrichtlinie und zufälliges Löschen an.
from ultralytics import YOLO
model = YOLO("yolo26n.pt")
# Augmentation is configured with training arguments, not the dataset YAML
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 Augmentationsargumente und ihrer Standardwerte findest du in der Referenz zu den Augmentationseinstellungen und im ausführlichen YOLO-Leitfaden zur Datenaugmentation. Wenn das Paket albumentations installiert ist, aktiviert YOLO außerdem automatisch dessen integrierte, auf Albumentations basierende Augmentationen.
Fallstudie: Vorverarbeitung für die Fahrzeugerkennung#
Betrachte ein Projekt zur Erkennung und Klassifizierung von Fahrzeugen in Verkehrsbildern mit YOLO26, ausgehend von Bildern mit Bounding Boxes und Beschriftungen. Die einzelnen Entscheidungen bei der Vorverarbeitung sehen so aus:
- Größenänderung: Keine manuelle Arbeit — YOLO26 ändert die Größe während des Trainings auf
imgsz. - Normalisierung: Keine manuelle Arbeit — YOLO26 skaliert Pixelwerte automatisch auf
[0, 1]. - Aufteilung: Teile den Datensatz in 70 % Training, 20 % Validierung und 10 % Testen auf und halte die Klassenverteilung in allen Teilmengen konsistent.
- Augmentation: Lege für Verkehrsszenen geeignete Trainingsargumente fest — zum Beispiel
fliplrfür Richtungsunabhängigkeit,hsv_vfür die Beleuchtung bei Tag und Nacht sowiemosaicfür unterschiedliche Objektdichten.
Nachdem diese Entscheidungen getroffen wurden, ist der Datensatz bereit für die explorative Datenanalyse (EDA).
Explorative Datenanalyse (EDA)#
EDA verwendet Statistiken und Visualisierungen, um Muster und Verteilungen in deinen Daten sichtbar zu machen. So kannst du Probleme wie Klassenungleichgewichte oder Ausreißer vor dem Training erkennen.
Statistische EDA-Techniken#
Die statistische EDA beginnt mit grundlegenden Kennzahlen — Mittelwert, Median, Standardabweichung und Wertebereich —, die für Eigenschaften wie Pixelintensitätsverteilungen berechnet werden. Sie geben einen schnellen Überblick über die Qualität deines Datensatzes und machen Unregelmäßigkeiten frühzeitig sichtbar.
Visuelle EDA-Techniken#
Visualisierungen zeigen Muster, die zusammenfassende Statistiken übersehen, etwa Klassenungleichgewichte und Ausreißer. Zu den gängigen Werkzeugen gehören:
- Histogramme und Boxplots: Zeigen die Verteilung der Pixelwerte und markieren Ausreißer in Intensitäts- oder Merkmalsverteilungen.
- Balkendiagramme: Zeigen Klassenungleichgewichte, indem sie die Anzahl der Beispiele pro Klasse vergleichen.
- Streudiagramme: Untersuchen Beziehungen zwischen Bildmerkmalen oder Annotationen.
- Heatmaps: Visualisieren Pixelintensitätsverteilungen oder die räumliche Verteilung von Annotationen über die Bilder hinweg.
Ultralytics Platform für EDA#
Für einen No-Code-Ansatz zur EDA kannst du deinen Datensatz auf die Ultralytics Platform hochladen. Die Registerkarte Charts des Datensatzes erzeugt automatisch wichtige EDA-Visualisierungen: Verteilung der Teilmengen, Anzahl der häufigsten Klassen, Histogramme der Bildbreite und -höhe sowie 2D-Heatmaps der Annotationspositionen und Bildabmessungen. In der Registerkarte Images kannst du deine Daten in Raster-, Kompakt- oder Tabellenansicht mit eingeblendeten Annotationen durchsuchen. So lassen sich falsch beschriftete Beispiele oder unausgeglichene Klassen leicht erkennen, ohne Code zu schreiben.
Fazit#
Korrekt aufgeteilte, normalisierte und augmentierte Daten reduzieren Rauschen und verbessern die Generalisierungsfähigkeit. So wird aus einer rohen Bildersammlung eine zuverlässige Trainingsmenge. Nachdem dein Datensatz vorverarbeitet wurde, besteht der nächste Schritt darin, dein Modell zu trainieren. Wenn unterwegs Fragen auftauchen, kannst du die Community im Ultralytics-GitHub-Repository oder auf dem Ultralytics-Discord-Server fragen.
FAQ#
Die Vorverarbeitung stellt sicher, dass deine Daten sauber, konsistent und in einem für das Training optimierten Format vorliegen. Indem sie Rauschen, Inkonsistenzen und Klassenungleichgewichte in Rohdaten behebt, reduzieren Schritte wie Größenänderung, Normalisierung, Augmentation und Aufteilung des Datensatzes die Rechenlast und verbessern die Modellleistung. In den Schritten eines Computer-Vision-Projekts erfährst du, wie dieser Prozess in den übergeordneten Workflow passt.
Konfiguriere die Augmentation über Trainingsargumente statt über die Dataset-YAML-Datei. Übergib Argumente wie
fliplr,mosaic,hsv_hunddegreesanmodel.train()oder die entsprechenden CLI-Flags, um Wahrscheinlichkeit und Stärke jeder Transformation festzulegen. Diese sind in den Augmentationseinstellungen definiert und im YOLO-Leitfaden zur Datenaugmentation erläutert. Eine Ausnahme bilden Posen-Datensätze: Ihre Zuordnung der Keypoints über den Schlüsselflip_idxbefindet sich in der Dataset-YAML-Datei, und ohne diesen Schlüssel werden Spiegelungen deaktiviert.Die beiden gängigsten Techniken sind die Min-Max-Skalierung (Neuskalierung der Pixel auf einen Bereich von 0 bis 1) und die Z-Score-Normalisierung (Neuskalierung anhand von Mittelwert und Standardabweichung). YOLO26 wendet die Min-Max-Skalierung automatisch an — konvertiert Bilder in RGB und dividiert die Pixelwerte durch 255 —, sodass du keinen manuellen Normalisierungsschritt benötigst. Standardmäßig wird keine Z-Score-Normalisierung angewendet.
Eine gängige Vorgehensweise sind 70 % für das Training, 20 % für die Validierung und 10 % für das Testen. Behalte die Klassenverteilung in allen drei Teilmengen bei und vermeide Datenlecks, indem du die Augmentation erst nach der Aufteilung und nur auf die Trainingsmenge anwendest. Tools wie scikit-learn oder TensorFlow übernehmen die Aufteilung effizient. Im Leitfaden zum Sammeln und Annotieren von Daten findest du Informationen zur vorgelagerten Vorbereitung des Datensatzes.
Ja. Das Argument
imgszsteuert die Zielgröße der Eingabe, ohne dass manuelle Arbeit erforderlich ist. Im Pfad mit festgelegter quadratischer Größe versehen Validierung und Inferenz Bilder mit Letterboxing in Richtung der angegebenen Form, wobei das Seitenverhältnis erhalten bleibt. Größere Bilder werden zur Anpassung verkleinert, während kleinere Bilder bei deaktivierter Vergrößerung nicht vergrößert werden. Während des Trainings erreicht die standardmäßige Mosaic-Augmentation die Zielgröße stattdessen durch das Zusammenfügen von vier Bildern und anschließendes Zuschneiden. Rechteckige Batches (rect=True) undmulti_scaleverwenden andere Eingabeformen. Einzelheiten findest du in der Dokumentation zum Modelltraining.