Datenvorverarbeitungstechniken für annotierte Computer-Vision-Daten#
Datenvorverarbeitung verwandelt rohe, annotierte Bilder in saubere und konsistente Eingaben, die ein computer vision-Modell für ein gutes Training benötigt. Mit Ultralytics YOLO26 laufen die Kern-Pixeloperationen – RGB-Konvertierung, Skalierung auf [0, 1] und Größenanpassung – automatisch innerhalb der Trainingspipeline ab. Die verbleibende Arbeit besteht somit darin, dein Dataset korrekt aufzuteilen, Klassen auszugleichen und Augmentierungen auszuwählen. Dieser Leitfaden behandelt diese wesentlichen Techniken: Größenanpassung, Normalisierung, Dataset-Aufteilung, Datenaugmentation und explorative Datenanalyse (EDA).
Watch: How to Use Data Preprocessing and Augmentation to Improve Model Accuracy in Real-World Scenarios 🚀
Dieser Schritt erfolgt, nachdem du deine Projektziele definiert und deine Daten gesammelt und annotiert hast, und er steht am Anfang des Computer-Vision-Projekt-Workflows.
Warum Vorverarbeitung wichtig ist#
Durch die Vorverarbeitung werden deine Daten in ein Format gebracht, das die Rechenlast reduziert und die Modellleistung verbessert. Sie adressiert drei häufige Probleme in Rohdaten:
- Rauschen: Irrelevante oder zufällige Variationen in den Daten.
- Inkonsistenz: Variationen in Bildgrößen, Formaten und Qualität.
- Ungleichgewicht: Ungleiche Verteilung von Klassen oder Kategorien im gesamten Datensatz.
Vorverarbeitungstechniken#
Die wichtigsten Techniken sind Größenanpassung, Normalisierung, Datensatzaufteilung und Augmentierung. Bei YOLO26 erfolgen die ersten beiden automatisch, während deine Entscheidungen bei der Aufteilung und Augmentierung am meisten ins Gewicht fallen.
Bilder skalieren#
Viele Modelle erfordern eine konsistente Eingabegröße; daher macht die Größenanpassung Bilder einheitlich und reduziert die rechnerische Komplexität. Zwei gängige Interpolationsmethoden sind:
- Bilineare Interpolation: Glättet Pixelwerte durch Bildung eines gewichteten Durchschnitts der vier nächstgelegenen Pixel.
- Nächster Nachbar: Kopiert den Wert des nächstgelegenen Pixels ohne Mittelwertbildung – schneller, erzeugt aber ein blockartigeres Bild.
Bibliotheken wie OpenCV und PIL (Pillow) stellen diese Funktionen bereit, aber mit YOLO26 musst du in der Regel keine manuelle Größenanpassung vornehmen. Das Argument imgsz beim Modelltraining übernimmt dies: Wenn es auf einen Wert wie 640 gesetzt wird, skaliert YOLO jedes Bild so, dass seine größte Dimension 640 Pixel beträgt, während das Seitenverhältnis beibehalten wird, und füllt dann die kürzere Seite auf (Standard: Grau, Wert 114), um eine quadratische 640 × 640-Eingabe zu erreichen.
Pixelwerte normalisieren#
Die Normalisierung skaliert Pixelwerte auf einen Standardbereich, was dem Modell hilft, während des Trainings schneller zu konvergieren. Zwei gängige Techniken sind:
- Min-Max-Skalierung: Skaliert Pixelwerte auf einen Bereich von 0 bis 1.
- Z-Score-Normalisierung: Skaliert Pixelwerte basierend auf ihrem Mittelwert und ihrer Standardabweichung.
YOLO26 führt die Normalisierung automatisch als Teil seiner Vorverarbeitungspipeline durch: Es konvertiert Bilder in RGB und skaliert die Pixelwerte durch Division durch 255 (Min-Max-Skalierung) in den Bereich [0, 1]. YOLO wendet standardmäßig keine Normalisierung im ImageNet-Stil (Mittelwert/Standardabweichung bzw. Z-Score) an, sodass kein manueller Normalisierungsschritt erforderlich ist.
Den Datensatz aufteilen#
Das Aufteilen der Daten in Trainings-, Validierungs- und Testsets ermöglicht es dir, das Modell anhand ungesehener Daten zu evaluieren und seine Verallgemeinerung zu messen. Eine übliche Aufteilung ist 70 % für das Training, 20 % für die Validierung und 10 % für den Test. Tools wie scikit-learn oder TensorFlow machen dies unkompliziert.
Beachte diese Punkte bei der Aufteilung:
- Klassenverteilung beibehalten: Stelle sicher, dass jede Klasse proportional über die Trainings-, Validierungs- und Testsets hinweg repräsentiert ist.
- Klassen ausgleichen: Erwäge bei ungleichmäßigen Datensätzen ein Oversampling der Minderheitenklasse oder ein Undersampling der Mehrheitenklasse – dies sollte jedoch nur im Trainingsset erfolgen.
Teile den Datensatz bevor du Augmentierungen oder andere Vorverarbeitungsschritte anwendest und wende diese Transformationen nur auf das Trainingsset an. Eine Augmentierung vor der Aufteilung lässt Informationen aus den Validierungs- oder Testbildern in das Training einfließen, was zu irreführend hohen Werten führt, die bei realen Daten einbrechen.
Datensatz augmentieren#
Datenaugmentation erhöht künstlich die Größe eines Datasets, indem modifizierte Versionen bestehender Bilder erstellt werden. Sie trägt dazu bei, Overfitting zu reduzieren und die Verallgemeinerung zu verbessern, und bietet mehrere Vorteile:
- Robustere Modelle: Variationen in Beleuchtung, Ausrichtung und Skalierung machen das Modell resistent gegenüber realen Verzerrungen.
- Kosteneffizient: Du erweiterst das Trainingsset, ohne neue Daten sammeln und labeln zu müssen.
- Bessere Datennutzung: Jedes annotierte Bild liefert mehrere Trainingsvariationen.
Bei YOLO26 wird die Augmentierung über Trainingsargumente gesteuert, die an model.train() oder die entsprechenden CLI-Flags übergeben werden – und nicht durch Bearbeiten des Dataset-YAMLs, welches Dataset-Metadaten wie Pfade, Klassennamen und Aufteilungen definiert. Zu den integrierten Augmentierungen 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): Rotieren, verschieben, zoomen und verzerren Bilder. - HSV-Farbe Jitter (
hsv_h,hsv_s,hsv_v): Variieren Farbton, Sättigung und Helligkeit. - Copy-Paste (
copy_paste): Fügt Objekte für die Segmentierung zwischen Bildern ein.
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 Augmentierungsargumente und ihrer Standardwerte findest du in der Referenz zu den Augmentierungseinstellungen und im dedizierten Leitfaden zur YOLO-Datenaugmentation. Wenn das Paket albumentations installiert ist, aktiviert YOLO zudem automatisch seine integrierten Albumentations-basierten Augmentierungen.
Eine Fallstudie: Vorverarbeitung für die Fahrzeugerkennung#
Betrachte ein Projekt zur Erkennung und Klassifizierung von Fahrzeugen in Verkehrsbildern mit YOLO26, ausgehend von Bildern, die mit Bounding Boxes und Labels annotiert wurden. So sieht jede Entscheidung bezüglich der Vorverarbeitung aus:
- Größenanpassung: Keine manuelle Arbeit – YOLO26 passt die Größe während des Trainings an
imgszan. - Normalisierung: Keine manuelle Arbeit – YOLO26 skaliert Pixelwerte automatisch auf
[0, 1]. - Aufteilung: Teile den Datensatz in 70% Training, 20% Validierung und 10% Test auf und halte die Klassenverteilung über die Splits hinweg konsistent.
- Augmentierung: Setze Trainingsargumente, die zu Verkehrsszenen passen – zum Beispiel
fliplrfür Richtungsinvarianz,hsv_vfür Tag-/Nachtbeleuchtung undmosaicfür unterschiedliche Objektdichte.
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 aufzudecken, was dir hilft, Probleme wie Klassenungleichgewicht oder Ausreißer vor dem Training zu erkennen.
Statistische EDA-Techniken#
Statistische EDA beginnt mit grundlegenden Metriken – Mittelwert, Median, Standardabweichung und Bereich –, die über Eigenschaften wie Pixelintensitätsverteilungen berechnet werden. Diese geben einen schnellen Überblick über die Qualität deines Datensatzes und decken Unregelmäßigkeiten früh auf.
Visuelle EDA-Techniken#
Visualisierungen zeigen Muster auf, die statistische Zusammenfassungen übersehen, wie etwa Klassenungleichgewicht und Ausreißer. Gängige Werkzeuge sind:
- Histogramme und Boxplots: Zeigen die Verteilung von Pixelwerten und markieren Ausreißer in Intensitäts- oder Merkmalsverteilungen.
- Balkendiagramme: Enthüllen Klassenungleichgewicht durch Vergleich der Anzahl der Beispiele pro Klasse.
- Streudiagramme: Untersuchen Beziehungen zwischen Bildmerkmalen oder Annotationen.
- Heatmaps: Visualisieren Pixelintensitätsverteilungen oder die räumliche Verteilung von Annotationen über Bilder hinweg.
Ultralytics Plattform für EDA#
Für einen No-Code-Ansatz für EDA lade dein Dataset auf die Ultralytics Platform hoch. Der Charts-Tab des Datasets generiert automatisch wichtige EDA-Visualisierungen: Verteilung der Aufteilungen, Top-Klassen-Anzahlen, Histogramme der Bildbreite/-höhe und 2D-Heatmaps von Annotationspositionen und Bildabmessungen. Der Images-Tab ermöglicht es dir, deine Daten in Raster-, Kompakt- oder Tabellenansichten mit Annotationseinblendungen zu durchsuchen, sodass du falsch annotierte Beispiele oder unausgeglichene Klassen leicht erkennen kannst, ohne Code schreiben zu müssen.
Fazit#
Richtig aufgeteilte, normalisierte und augmentierte Daten reduzieren Rauschen und verbessern die Verallgemeinerung, wodurch eine rohe Sammlung von Bildern in ein zuverlässiges Trainingsset verwandelt wird. Sobald dein Dataset vorverarbeitet ist, besteht der nächste Schritt darin, dein Modell zu trainieren. Wenn dabei Fragen aufkommen, frage die Community im Ultralytics GitHub Repository oder auf dem Ultralytics Discord Server.
FAQ#
Die Vorverarbeitung stellt sicher, dass deine Daten sauber, konsistent und in einem Format sind, das für das Training optimiert ist. Durch die Behebung von Rauschen, Inkonsistenzen und Klassenungleichgewichten in Rohdaten reduzieren Schritte wie Größenanpassung, Normalisierung, Augmentierung und Dataset-Aufteilung die Rechenlast und verbessern die Modellleistung. Siehe die Schritte eines Computer-Vision-Projekts, um zu erfahren, wie sich dies in den übergeordneten Workflow einfügt.
Konfiguriere die Augmentierung über Trainingsargumente und nicht über das Dataset-YAML. Übergebe Argumente wie
fliplr,mosaic,hsv_hunddegreesanmodel.train()(oder die entsprechenden CLI-Flags), um die Wahrscheinlichkeit und Stärke jeder Transformation festzulegen. Diese sind in den Augmentierungseinstellungen definiert und im Leitfaden zur YOLO-Datenaugmentation erläutert.Die beiden gängigsten Techniken sind Min-Max-Skalierung (Reskalierung der Pixel auf einen Bereich von 0 bis 1) und Z-Score-Normalisierung (Reskalierung basierend auf Mittelwert und Standardabweichung). YOLO26 wendet die Min-Max-Skalierung automatisch an – indem Bilder in RGB konvertiert und die Pixelwerte durch 255 geteilt werden –, sodass du keinen manuellen Normalisierungsschritt benötigst. Es wendet standardmäßig keine Z-Score-Normalisierung an.
Eine gängige Praxis sind 70 % für das Training, 20 % für die Validierung und 10 % für den Test. Behalte die Klassenverteilung über alle drei Aufteilungen hinweg bei und vermeide Data Leakage, indem du die Augmentierung nur auf das Trainingsset nach der Aufteilung anwendest. Tools wie scikit-learn oder TensorFlow handhaben die Aufteilung effizient. Siehe den Leitfaden zur Datensammlung und -annotation für die vorgelagerte Dataset-Vorbereitung.
Ja. Das Argument
imgszpasst die Größe von Bildern während des Trainings und der Inferenz so an, dass ihre größte Dimension der angegebenen Größe entspricht (z. B. 640 Pixel), während das Seitenverhältnis beibehalten und die kürzere Seite aufgefüllt wird. Du musst die Größe der Bilder nicht selbst anpassen – siehe die Dokumentation zum Modelltraining für Details.