Datenvorverarbeitungstechniken für annotierte Computer Vision Daten
Einführung
Nachdem du die Ziele deines Computer-Vision-Projekts definiert und Daten gesammelt und annotiert hast, besteht der nächste Schritt darin, die annotierten Daten vorzuverarbeiten und für das Modelltraining vorzubereiten. Saubere und konsistente Daten sind entscheidend für die Erstellung eines Modells, das eine gute Leistung erbringt.
Watch: How to Use Data Preprocessing and Augmentation to Improve Model Accuracy in Real-World Scenarios 🚀
Die Vorverarbeitung ist ein Schritt im Workflow für Computer-Vision-Projekte, der das Ändern der Bildgröße, das Normalisieren von Pixelwerten, das Augmentieren des Datensatzes und das Aufteilen der Daten in Trainings-, Validierungs- und Testsets umfasst. Lass uns die wesentlichen Techniken und Best Practices für die Bereinigung deiner Daten erkunden!
Bedeutung der Datenvorverarbeitung
Wir sammeln und annotieren unsere Daten bereits sorgfältig unter Berücksichtigung verschiedener Aspekte. Warum ist die Datenvorverarbeitung für ein Computer-Vision-Projekt dann so wichtig? Nun, bei der Datenvorverarbeitung geht es darum, deine Daten in ein geeignetes Format für das Training zu bringen, das die Rechenlast reduziert und dazu beiträgt, die Modellleistung zu verbessern. Hier sind einige häufige Probleme bei Rohdaten, die durch Vorverarbeitung adressiert werden:
- Rauschen: Irrelevante oder zufällige Schwankungen in den Daten.
- Inkonsistenz: Schwankungen bei Bildgrößen, Formaten und Qualität.
- Ungleichgewicht: Ungleiche Verteilung von Klassen oder Kategorien im Datensatz.
Datenvorverarbeitungstechniken
Einer der ersten und wichtigsten Schritte bei der Datenvorverarbeitung ist die Größenanpassung (Resizing). Einige Modelle sind so konzipiert, dass sie mit variablen Eingabegrößen umgehen können, aber viele Modelle erfordern eine konsistente Eingabegröße. Die Größenanpassung von Bildern macht sie einheitlich und reduziert die rechnerische Komplexität.
Größenanpassung von Bildern
Du kannst deine Bilder mit den folgenden Methoden anpassen:
- Bilineare Interpolation: Glättet Pixelwerte durch gewichtete Mittelwertbildung der vier nächstgelegenen Pixelwerte.
- Nächster Nachbar (Nearest Neighbor): Weist den nächsten Pixelwert ohne Mittelwertbildung zu, was zu einem blockartigen Bild, aber schnellerer Berechnung führt.
Um die Größenanpassung zu vereinfachen, kannst du die folgenden Tools verwenden:
- OpenCV: Eine beliebte Computer-Vision-Bibliothek mit umfangreichen Funktionen für die Bildverarbeitung.
- PIL (Pillow): Eine Python Imaging Library zum Öffnen, Bearbeiten und Speichern von Bilddateien.
In Bezug auf YOLO26 ermöglicht der Parameter 'imgsz' während des Modelltrainings flexible Eingabegrößen. Wenn er auf eine bestimmte Größe eingestellt ist, z. B. 640, passt das Modell die Eingabebilder so an, dass ihre größte Dimension 640 Pixel beträgt, während das ursprüngliche Seitenverhältnis beibehalten wird.
Durch die Bewertung der spezifischen Anforderungen deines Modells und deines Datensatzes kannst du festlegen, ob die Größenanpassung ein notwendiger Vorverarbeitungsschritt ist oder ob dein Modell effizient mit Bildern unterschiedlicher Größe umgehen kann.
Normalisierung von Pixelwerten
Eine weitere Vorverarbeitungstechnik ist die Normalisierung. Die Normalisierung skaliert die Pixelwerte auf einen Standardbereich, was zu einer schnelleren Konvergenz während des Trainings beiträgt und die Modellleistung verbessert. Hier sind einige gängige Normalisierungstechniken:
- Min-Max-Skalierung: Skaliert Pixelwerte auf einen Bereich von 0 bis 1.
- Z-Score-Normalisierung: Skaliert Pixelwerte basierend auf ihrem Mittelwert und ihrer Standardabweichung.
Bei YOLO26 wird die Normalisierung nahtlos als Teil der Vorverarbeitungspipeline während des Modelltrainings gehandhabt. YOLO26 führt automatisch mehrere Vorverarbeitungsschritte durch, einschließlich der Konvertierung in RGB, der Skalierung der Pixelwerte auf den Bereich [0, 1] und der Normalisierung unter Verwendung vordefinierter Mittelwert- und Standardabweichungswerte.
Aufteilen des Datensatzes
Sobald du die Daten bereinigt hast, bist du bereit, den Datensatz aufzuteilen. Das Aufteilen der Daten in Trainings-, Validierungs- und Testsets erfolgt, um sicherzustellen, dass das Modell anhand nicht gesehener Daten evaluiert werden kann, um seine Generalisierungsleistung zu bewerten. Eine übliche Aufteilung beträgt 70 % für das Training, 20 % für die Validierung und 10 % für den Test. Es gibt verschiedene Tools und Bibliotheken, die du zum Aufteilen deiner Daten verwenden kannst, wie z. B. scikit-learn oder TensorFlow.
Beachte beim Aufteilen deines Datensatzes Folgendes:
- Aufrechterhaltung der Datenverteilung: Stelle sicher, dass die Datenverteilung der Klassen über die Trainings-, Validierungs- und Testsets hinweg erhalten bleibt.
- Vermeidung von Datenleckagen (Data Leakage): Normalerweise erfolgt die Datenaugmentation nach der Aufteilung des Datensatzes. Datenaugmentation und jede andere Vorverarbeitung sollten nur auf den Trainingssatz angewendet werden, um zu verhindern, dass Informationen aus den Validierungs- oder Testsets das Modelltraining beeinflussen.
- Ausbalancieren von Klassen: Ziehe bei unausgewogenen Datensätzen Techniken wie das Oversampling der Minderheitenklasse oder das Undersampling der Mehrheitenklasse innerhalb des Trainingssatzes in Betracht.
Was ist Datenaugmentation?
Der am häufigsten diskutierte Schritt der Datenvorverarbeitung ist die Datenaugmentation. Die Datenaugmentation erhöht künstlich die Größe des Datensatzes durch die Erstellung modifizierter Versionen von Bildern. Durch die Augmentierung deiner Daten kannst du Overfitting reduzieren und die Modellgeneralisierung verbessern.
Hier sind einige weitere Vorteile der Datenaugmentation:
- Erstellt einen robusteren Datensatz: Datenaugmentation kann das Modell robuster gegenüber Variationen und Verzerrungen in den Eingabedaten machen. Dies umfasst Änderungen bei Beleuchtung, Ausrichtung und Skalierung.
- Kosteneffizient: Datenaugmentation ist eine kosteneffiziente Methode, um die Menge an Trainingsdaten zu erhöhen, ohne neue Daten sammeln und labeln zu müssen.
- Bessere Nutzung von Daten: Jeder verfügbare Datenpunkt wird durch die Erstellung neuer Variationen bestmöglich genutzt.
Methoden der Datenaugmentation
Gängige Augmentationstechniken umfassen Spiegeln, Rotieren, Skalieren und Farbanpassungen. Mehrere Bibliotheken wie Albumentations, Imgaug und die ImageDataGenerator-Klasse von TensorFlow können diese Augmentationen generieren.
In Bezug auf YOLO26 kannst du deinen benutzerdefinierten Datensatz augmentieren, indem du die Konfigurationsdatei des Datensatzes, eine .yaml-Datei, änderst. In dieser Datei kannst du einen Augmentationsabschnitt mit Parametern hinzufügen, die angeben, wie du deine Daten augmentieren möchtest.
Das Ultralytics YOLO26 Repository unterstützt eine breite Palette von Datenaugmentationen. Du kannst verschiedene Transformationen anwenden, wie zum Beispiel:
- Zufällige Zuschnitte (Random Crops)
- Spiegeln: Bilder können horizontal oder vertikal gespiegelt werden.
- Rotation: Bilder können um bestimmte Winkel gedreht werden.
- Verzerrung
Außerdem kannst du die Intensität dieser Augmentationstechniken über spezifische Parameter anpassen, um mehr Datenvielfalt zu generieren.
Eine Fallstudie zur Vorverarbeitung
Betrachte ein Projekt, das darauf abzielt, ein Modell zu entwickeln, um verschiedene Arten von Fahrzeugen in Verkehrsbildern mit YOLO26 zu erkennen und zu klassifizieren. Wir haben Verkehrsbilder gesammelt und sie mit Bounding Boxes und Labels annotiert.
So würde jeder Schritt der Vorverarbeitung für dieses Projekt aussehen:
- Größenanpassung von Bildern: Da YOLO26 mit flexiblen Eingabegrößen umgeht und die Größenanpassung automatisch durchführt, ist keine manuelle Größenanpassung erforderlich. Das Modell passt die Bildgröße während des Trainings gemäß dem angegebenen 'imgsz'-Parameter an.
- Normalisierung von Pixelwerten: YOLO26 normalisiert Pixelwerte während der Vorverarbeitung automatisch auf einen Bereich von 0 bis 1, daher ist dies nicht erforderlich.
- Aufteilen des Datensatzes: Teile den Datensatz mit Tools wie scikit-learn in Trainings- (70 %), Validierungs- (20 %) und Testsets (10 %) auf.
- Datenaugmentation: Ändere die Konfigurationsdatei des Datensatzes (.yaml), um Datenaugmentationstechniken wie zufällige Zuschnitte, horizontales Spiegeln und Helligkeitsanpassungen einzubeziehen.
Diese Schritte stellen sicher, dass der Datensatz ohne potenzielle Probleme vorbereitet wird und bereit für die explorative Datenanalyse (EDA) ist.
Techniken der explorativen Datenanalyse
Nach der Vorverarbeitung und Augmentierung deines Datensatzes besteht der nächste Schritt darin, durch explorative Datenanalyse Erkenntnisse zu gewinnen. EDA verwendet statistische Techniken und Visualisierungstools, um die Muster und Verteilungen in deinen Daten zu verstehen. Du kannst Probleme wie Klassenungleichgewichte oder Ausreißer identifizieren und fundierte Entscheidungen über weitere Datenvorverarbeitungen oder Anpassungen des Modelltrainings treffen.
Statistische EDA-Techniken
Statistische Techniken beginnen oft mit der Berechnung grundlegender Metriken wie Mittelwert, Median, Standardabweichung und Bereich. Diese Metriken bieten einen schnellen Überblick über die Eigenschaften deines Bilddatensatzes, wie z. B. die Verteilungen der Pixelintensität. Das Verständnis dieser grundlegenden Statistiken hilft dir, die Gesamtqualität und die Merkmale deiner Daten zu erfassen, sodass du Unregelmäßigkeiten frühzeitig erkennen kannst.
Visuelle EDA-Techniken
Visualisierungen sind bei der EDA für Bilddatensätze entscheidend. Die Analyse des Klassenungleichgewichts ist beispielsweise ein weiterer wesentlicher Aspekt der EDA. Sie hilft zu bestimmen, ob bestimmte Klassen in deinem Datensatz unterrepräsentiert sind. Die Visualisierung der Verteilung verschiedener Bildklassen oder Kategorien mithilfe von Balkendiagrammen kann Ungleichgewichte schnell aufdecken. Ebenso können Ausreißer mithilfe von Visualisierungstools wie Boxplots identifiziert werden, die Anomalien bei der Pixelintensität oder Merkmalsverteilungen hervorheben. Die Erkennung von Ausreißern verhindert, dass ungewöhnliche Datenpunkte deine Ergebnisse verfälschen.
Gängige Tools für Visualisierungen sind:
- Histogramme und Boxplots: Nützlich, um die Verteilung von Pixelwerten zu verstehen und Ausreißer zu identifizieren.
- Streudiagramme (Scatter Plots): Hilfreich, um Beziehungen zwischen Bildmerkmalen oder Annotationen zu untersuchen.
- Heatmaps: Effektiv zur Visualisierung der Verteilung von Pixelintensitäten oder der räumlichen Verteilung von annotierten Merkmalen innerhalb von Bildern.
Verwendung der Ultralytics Plattform für EDA
Für einen No-Code-Ansatz zur EDA lade deinen Datensatz auf die Ultralytics Plattform hoch. Der Charts-Tab des Datensatzes generiert automatisch die oben beschriebenen Visualisierungen: Split-Verteilung, Top-Klassenzählungen, Histogramme für Bildbreite/-höhe und 2D-Heatmaps von Annotationspositionen und Bilddimensionen. Der Images-Tab ermöglicht es dir, deine Daten in Raster-, Kompakt- oder Tabellenansichten mit Annotation-Overlays zu durchsuchen, wodurch es einfach ist, falsch gelabelte Beispiele oder unausgewogene Klassen zu erkennen, ohne eine einzige Zeile Code zu schreiben.
Kontaktaufnahme und Vernetzung
Diskussionen über dein Projekt mit anderen Computer-Vision-Enthusiasten können dir neue Ideen aus verschiedenen Perspektiven geben. Hier sind einige großartige Möglichkeiten zum Lernen, zur Fehlersuche und zum Netzwerken:
Kanäle, um dich mit der Community zu verbinden
- GitHub Issues: Besuche das YOLO26 GitHub-Repository und nutze den Issues-Tab, um Fragen zu stellen, Fehler zu melden und Funktionen vorzuschlagen. Die Community und die Maintainer sind da, um bei Problemen zu helfen.
- Ultralytics Discord-Server: Tritt dem Ultralytics Discord-Server bei, um dich mit anderen Benutzern und Entwicklern zu verbinden, Support zu erhalten, Wissen zu teilen und Ideen zu entwickeln.
Offizielle Dokumentation
- Ultralytics YOLO26 Dokumentation: Konsultiere die offizielle YOLO26 Dokumentation für ausführliche Anleitungen und wertvolle Einblicke in zahlreiche Computer-Vision-Aufgaben und -Projekte.
Dein Datensatz ist bereit!
Richtig angepasste, normalisierte und augmentierte Daten verbessern die Modellleistung, indem sie Rauschen reduzieren und die Generalisierung verbessern. Indem du die in diesem Leitfaden beschriebenen Vorverarbeitungstechniken und Best Practices befolgst, kannst du einen soliden Datensatz erstellen. Mit deinem vorverarbeiteten Datensatz kannst du zuversichtlich mit den nächsten Schritten in deinem Projekt fortfahren.
FAQ
Warum ist die Datenvorverarbeitung bei Computer-Vision-Projekten wichtig?
Datenvorverarbeitung ist bei Computer-Vision-Projekten unerlässlich, da sie sicherstellt, dass die Daten sauber, konsistent und in einem Format sind, das optimal für das Modelltraining ist. Indem Probleme wie Rauschen, Inkonsistenz und Ungleichgewicht in den Rohdaten adressiert werden, tragen Vorverarbeitungsschritte wie Größenanpassung, Normalisierung, Augmentation und das Aufteilen des Datensatzes dazu bei, die Rechenlast zu reduzieren und die Modellleistung zu verbessern. Für weitere Details besuche die Schritte eines Computer-Vision-Projekts.
Wie kann ich Ultralytics YOLO für die Datenaugmentation verwenden?
Für die Datenaugmentation mit Ultralytics YOLO26 musst du die Konfigurationsdatei des Datensatzes (.yaml) ändern. In dieser Datei kannst du verschiedene Augmentationstechniken wie zufällige Zuschnitte, horizontales Spiegeln und Helligkeitsanpassungen angeben. Dies kann effektiv unter Verwendung der hier erklärten Trainingskonfigurationen durchgeführt werden. Datenaugmentation hilft dabei, einen robusteren Datensatz zu erstellen, Overfitting zu reduzieren und die Modellgeneralisierung zu verbessern.
Was sind die besten Datennormalisierungstechniken für Computer-Vision-Daten?
Die Normalisierung skaliert Pixelwerte auf einen Standardbereich für eine schnellere Konvergenz und verbesserte Leistung während des Trainings. Zu den gängigen Techniken gehören:
- Min-Max-Skalierung: Skaliert Pixelwerte auf einen Bereich von 0 bis 1.
- Z-Score-Normalisierung: Skaliert Pixelwerte basierend auf ihrem Mittelwert und ihrer Standardabweichung.
Bei YOLO26 wird die Normalisierung automatisch gehandhabt, einschließlich der Konvertierung in RGB und der Skalierung der Pixelwerte. Erfahre mehr darüber im Abschnitt zum Modelltraining.
Wie sollte ich meinen annotierten Datensatz für das Training aufteilen?
Um deinen Datensatz aufzuteilen, ist es gängige Praxis, ihn in 70 % für das Training, 20 % für die Validierung und 10 % für den Test zu unterteilen. Es ist wichtig, die Datenverteilung der Klassen über diese Aufteilungen hinweg beizubehalten und Datenleckagen zu vermeiden, indem die Augmentation nur auf den Trainingssatz angewendet wird. Verwende Tools wie scikit-learn oder TensorFlow für eine effiziente Aufteilung des Datensatzes. Siehe den detaillierten Leitfaden zur Datensatzvorbereitung.
Kann ich in YOLO26 mit variierenden Bildgrößen ohne manuelle Größenanpassung umgehen?
Ja, Ultralytics YOLO26 kann durch den Parameter 'imgsz' während des Modelltrainings mit unterschiedlichen Bildgrößen umgehen. Dieser Parameter stellt sicher, dass die Bilder so angepasst werden, dass ihre größte Dimension der angegebenen Größe entspricht (z. B. 640 Pixel), während das Seitenverhältnis beibehalten wird. Für flexiblere Eingabehandhabung und automatische Anpassungen schau dir den Abschnitt zum Modelltraining an.