Zum Inhalt springen

Data Preprocessing Techniques for Annotated Computer Vision Data

Einführung

Nachdem du die Ziele deines Bildverarbeitungsprojekts definiert und Daten gesammelt und beschriftet hast, ist der nächste Schritt die Vorverarbeitung der beschrifteten Daten und die Vorbereitung für das Modelltraining. Saubere und konsistente Daten sind wichtig, um ein leistungsfähiges Modell zu erstellen.

Die Vorverarbeitung ist ein Schritt im Arbeitsablauf eines Bildverarbeitungsprojekts, der die Größenanpassung von Bildern, die Normalisierung von Pixelwerten, die Vergrößerung des Datensatzes und die Aufteilung der Daten in Trainings-, Validierungs- und Testdatensätze umfasst. Lass uns die wichtigsten Techniken und Best Practices für die Bereinigung deiner Daten kennenlernen!

Bedeutung der Datenvorverarbeitung

Wir sammeln und kommentieren unsere Daten bereits sorgfältig unter Berücksichtigung mehrerer Überlegungen. Was macht die Datenvorverarbeitung dann so wichtig für ein Computer-Vision-Projekt? Nun, bei der Datenvorverarbeitung geht es darum, Ihre Daten in ein geeignetes Format für das Training zu bringen, das die Rechenlast reduziert und zur Verbesserung der Modellleistung beiträgt. Hier sind einige häufige Probleme bei Rohdaten, die durch die Vorverarbeitung behoben werden:

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

Techniken zur Datenvorverarbeitung

Einer der ersten und wichtigsten Schritte bei der Datenvorverarbeitung ist die Größenänderung. Einige Modelle sind für variable Eingabegrößen ausgelegt, aber viele Modelle erfordern eine konsistente Eingabegröße. Durch die Größenänderung von Bildern werden sie einheitlich und die Rechenkomplexität reduziert.

Ändern der Bildgröße

Sie können die Größe Ihrer Bilder mit den folgenden Methoden ändern:

  • Bilineare Interpolation: Glättet Pixelwerte, indem ein gewichteter Durchschnitt der vier nächstgelegenen Pixelwerte gebildet wird.
  • Nächstgelegener Nachbar: Weist den nächstgelegenen Pixelwert ohne Mittelwertbildung zu, was zu einem blockigen Bild führt, aber die Berechnung beschleunigt.

Um die Größenänderung zu vereinfachen, können Sie die folgenden Tools verwenden:

  • OpenCV: A popular computer vision library with extensive functions for image processing.
  • PIL (Pillow): Eine Python Imaging Library zum Öffnen, Verändern und Speichern von Bilddateien.

With respect to YOLO11, the 'imgsz' parameter during model training allows for flexible input sizes. When set to a specific size, such as 640, the model will resize input images so their largest dimension is 640 pixels while maintaining the original aspect ratio.

Durch die Bewertung der spezifischen Anforderungen Ihres Modells und Datensatzes können Sie feststellen, ob die Größenänderung ein notwendiger Vorverarbeitungsschritt ist oder ob Ihr Modell Bilder unterschiedlicher Größe effizient verarbeiten kann.

Normalisieren 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 in einem Bereich von 0 bis 1.
  • Z-Score-Normalisierung: Skaliert die Pixelwerte basierend auf ihrem Mittelwert und ihrer Standardabweichung.

With respect to YOLO11, normalization is seamlessly handled as part of its preprocessing pipeline during model training. YOLO11 automatically performs several preprocessing steps, including conversion to RGB, scaling pixel values to the range [0, 1], and normalization using predefined mean and standard deviation values.

Aufteilen des Datensatzes

Nachdem Sie die Daten bereinigt haben, können Sie das Dataset aufteilen. Die Aufteilung der Daten in Trainings-, Validierungs- und Testsätze erfolgt, um sicherzustellen, dass das Modell anhand unsichtbarer Daten ausgewertet werden kann, um seine Generalisierungsleistung zu bewerten. Eine häufige Aufteilung beträgt 70 % für Schulungen, 20 % für die Validierung und 10 % für Tests. Es gibt verschiedene Tools und Bibliotheken, mit denen Sie Ihre Daten aufteilen können, z. B. scikit-learn oder TensorFlow.

Beachten Sie beim Aufteilen Ihres Datensatzes Folgendes:

  • Beibehaltung der Datenverteilung: Stelle sicher, dass die Datenverteilung der Klassen in den Trainings-, Validierungs- und Testsets beibehalten wird.
  • Vermeiden von Datenverlusten: Die Datenerweiterung erfolgt in der Regel, nachdem der Datensatz aufgeteilt wurde. Die Datenerweiterung und jede andere Vorverarbeitung sollte nur auf den Trainingsdatensatz angewendet werden, um zu verhindern, dass Informationen aus den Validierungs- oder Testdatensätzen die Modellbildung beeinflussen. -Klassen ausgleichen: Bei unausgewogenen Datensätzen sollten Techniken wie das Oversampling der Minderheitsklasse oder das Under-Sampling der Mehrheitsklasse innerhalb des Trainingssatzes in Betracht gezogen werden.

Was ist Datenerweiterung?

Der am häufigsten diskutierte Schritt der Datenvorverarbeitung ist die Datenerweiterung. Die Datenerweiterung vergrößert das Dataset künstlich, indem modifizierte Versionen von Bildern erstellt werden. Durch die Erweiterung Ihrer Daten können Sie die Überanpassung reduzieren und die Modellgeneralisierung verbessern.

Hier sind einige weitere Vorteile der Datenerweiterung:

  • Schafft einen robusteren Datensatz: Die Datenerweiterung kann das Modell robuster gegenüber Schwankungen und Verzerrungen in den Eingabedaten machen. Dazu gehören Änderungen der Beleuchtung, der Ausrichtung und des Maßstabs.
  • Cost-Effective: Data augmentation is a cost-effective way to increase the amount of training data without collecting and labeling new data.
  • Bessere Nutzung von Daten: Jeder verfügbare Datenpunkt wird bestmöglich genutzt, indem neue Variationen geschaffen werden

Methoden zur Datenerweiterung

Zu den gängigen Augmentationstechniken gehören Spiegeln, Drehen, Skalieren und Farbanpassungen. Mehrere Bibliotheken, wie z. B. Albumentations, Imgaug und TensorFlowImageDataGenerator von , kann diese Erweiterungen generieren.

Überblick über die Datenerweiterungen

With respect to YOLO11, you can augment your custom dataset by modifying the dataset configuration file, a .yaml file. In this file, you can add an augmentation section with parameters that specify how you want to augment your data.

The Ultralytics YOLO11 repository supports a wide range of data augmentations. You can apply various transformations such as:

  • Zufällige Ernten
  • Spiegeln: Bilder können horizontal oder vertikal gespiegelt werden.
  • Rotation: Bilder können um bestimmte Winkel gedreht werden.
  • Verzerrung

Außerdem können Sie die Intensität dieser Erweiterungstechniken durch bestimmte Parameter anpassen, um mehr Datenvielfalt zu generieren.

Eine Fallstudie zur Vorverarbeitung

Consider a project aimed at developing a model to detect and classify different types of vehicles in traffic images using YOLO11. We've collected traffic images and annotated them with bounding boxes and labels.

So würde jeder Schritt der Vorverarbeitung für dieses Projekt aussehen:

  • Resizing Images: Since YOLO11 handles flexible input sizes and performs resizing automatically, manual resizing is not required. The model will adjust the image size according to the specified 'imgsz' parameter during training.
  • Normalizing Pixel Values: YOLO11 automatically normalizes pixel values to a range of 0 to 1 during preprocessing, so it's not required.
  • Aufteilen des Datensatzes: Teilen Sie den Datensatz mit Tools wie scikit-learn in Trainings- (70 %), Validierungs- (20 %) und Testsätze (10 %) auf.
  • Data Augmentation: Modify the dataset configuration file (.yaml) to include data augmentation techniques such as random crops, horizontal flips, and brightness adjustments.

Diese Schritte stellen sicher, dass der Datensatz ohne potenzielle Probleme vorbereitet und für die explorative Datenanalyse (EDA) bereit ist.

Explorative Datenanalysetechniken

Nach der Vorverarbeitung und Erweiterung Ihres Datensatzes besteht der nächste Schritt darin, Erkenntnisse durch die explorative Datenanalyse zu gewinnen. EDA verwendet statistische Techniken und Visualisierungstools, um die Muster und Verteilungen in Ihren Daten zu verstehen. Sie können Probleme wie Klassenungleichgewichte oder Ausreißer identifizieren und fundierte Entscheidungen über die weitere Datenvorverarbeitung oder Modelltrainingsanpassungen 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 Ihres Bilddatensatzes, z. B. Pixelintensitätsverteilungen. Das Verständnis dieser grundlegenden Statistiken hilft Ihnen, die Gesamtqualität und die Eigenschaften Ihrer Daten zu erfassen, sodass Sie Unregelmäßigkeiten frühzeitig erkennen können.

Visuelle EDA-Techniken

Visualisierungen sind in EDA für Bilddatensätze von entscheidender Bedeutung. Zum Beispiel ist die Analyse des Klassenungleichgewichts ein weiterer wichtiger Aspekt der EDA. Es hilft festzustellen, ob bestimmte Klassen in Ihrem Datensatz unterrepräsentiert sind. Die Visualisierung der Verteilung verschiedener Bildklassen oder Kategorien mithilfe von Balkendiagrammen kann Ungleichgewichte schnell aufdecken. Ebenso können Ausreißer mit Visualisierungswerkzeugen wie Boxplots identifiziert werden, die Anomalien in der Pixelintensität oder Merkmalsverteilungen hervorheben. Die Ausreißererkennung verhindert, dass ungewöhnliche Datenpunkte Ihre Ergebnisse verzerren.

Zu den gängigen Tools für Visualisierungen gehören:

  • Histogramme und Boxplots: Nützlich, um die Verteilung von Pixelwerten zu verstehen und Ausreißer zu identifizieren.
  • Streudiagramme: Hilfreich zum Untersuchen von Beziehungen zwischen Bild-Features oder Annotationen.
  • Heatmaps: Effektiv zur Visualisierung der Verteilung von Pixelintensitäten oder der räumlichen Verteilung von kommentierten Merkmalen in Bildern.

Benutzend Ultralytics Explorer für EDA

Community Note ⚠️

As of ultralytics>=8.3.10, Ultralytics explorer support has been deprecated. But don't worry! You can now access similar and even enhanced functionality through Ultralytics HUB, our intuitive no-code platform designed to streamline your workflow. With Ultralytics HUB, you can continue exploring, visualizing, and managing your data effortlessly, all without writing a single line of code. Make sure to check it out and take advantage of its powerful features!🚀

For a more advanced approach to EDA, you can use the Ultralytics Explorer tool. It offers robust capabilities for exploring computer vision datasets. By supporting semantic search, SQL queries, and vector similarity search, the tool makes it easy to analyze and understand your data. With Ultralytics Explorer, you can create embeddings for your dataset to find similar images, run SQL queries for detailed analysis, and perform semantic searches, all through a user-friendly graphical interface.

Überblick über Ultralytics Explorer

Erreichen Sie die Hand und verbinden Sie sich

Diskussionen über Ihr Projekt mit anderen Computer-Vision-Enthusiasten können Ihnen neue Ideen aus verschiedenen Perspektiven geben. Hier sind einige großartige Möglichkeiten, um zu lernen, Fehler zu beheben und sich zu vernetzen:

Kanäle zur Verbindung mit der Community

  • GitHub Issues: Visit the YOLO11 GitHub repository and use the Issues tab to raise questions, report bugs, and suggest features. The community and maintainers are there to help with any issues you face.
  • Ultralytics Discord-Server: Treten Sie dem Ultralytics Discord-Server , um sich mit anderen Benutzern und Entwicklern zu verbinden, Unterstützung zu erhalten, Wissen auszutauschen und Ideen zu sammeln.

Offizielle Dokumentation

  • Ultralytics YOLO11 Documentation: Refer to the official YOLO11 documentation for thorough guides and valuable insights on numerous computer vision tasks and projects.

Ihr Datensatz ist fertig!

Richtig skalierte, normalisierte und erweiterte Daten verbessern die Modellleistung, indem sie das Rauschen reduzieren und die Generalisierung verbessern. Wenn Sie die in diesem Handbuch beschriebenen Vorverarbeitungstechniken und Best Practices befolgen, können Sie ein solides Dataset erstellen. Wenn Ihr vorverarbeiteter Datensatz fertig ist, können Sie getrost mit den nächsten Schritten in Ihrem Projekt fortfahren.

FAQ

Welche Bedeutung hat die Datenvorverarbeitung bei Computer Vision Projekten?

Die Datenvorverarbeitung ist bei Computer-Vision-Projekten unverzichtbar, denn sie stellt sicher, dass die Daten sauber, konsistent und in einem für das Modelltraining optimalen Format vorliegen. Durch die Beseitigung von Problemen wie Rauschen, Inkonsistenz und Unausgewogenheit in den Rohdaten helfen Vorverarbeitungsschritte wie Größenanpassung, Normalisierung, Vergrößerung und Aufteilung von Datensätzen, die Rechenlast zu verringern und die Modellleistung zu verbessern. Weitere Informationen findest du in den Schritten eines Computer Vision Projekts.

Wie kann ich Ultralytics YOLO zur Datenerweiterung nutzen?

For data augmentation with Ultralytics YOLO11, you need to modify the dataset configuration file (.yaml). In this file, you can specify various augmentation techniques such as random crops, horizontal flips, and brightness adjustments. This can be effectively done using the training configurations explained here. Data augmentation helps create a more robust dataset, reduce overfitting, and improve model generalization.

Was sind die besten Daten-Normalisierungstechniken für Computer Vision Daten?

Die Normalisierung skaliert die Pixelwerte auf einen Standardbereich, um die Konvergenz zu beschleunigen und die Leistung beim Training zu verbessern. Zu den gängigen Techniken gehören:

  • Min-Max-Skalierung: Skaliert Pixelwerte in einem Bereich von 0 bis 1.
  • Z-Score-Normalisierung: Skaliert die Pixelwerte basierend auf ihrem Mittelwert und ihrer Standardabweichung.

For YOLO11, normalization is handled automatically, including conversion to RGB and pixel value scaling. Learn more about it in the model training section.

Wie sollte ich meinen annotierten Datensatz für das Training aufteilen?

To split your dataset, a common practice is to divide it into 70% for training, 20% for validation, and 10% for testing. It is important to maintain the data distribution of classes across these splits and avoid data leakage by performing augmentation only on the training set. Use tools like scikit-learn or TensorFlow for efficient dataset splitting. See the detailed guide on dataset preparation.

Can I handle varying image sizes in YOLO11 without manual resizing?

Yes, Ultralytics YOLO11 can handle varying image sizes through the 'imgsz' parameter during model training. This parameter ensures that images are resized so their largest dimension matches the specified size (e.g., 640 pixels), while maintaining the aspect ratio. For more flexible input handling and automatic adjustments, check the model training section.

📅 Created 4 months ago ✏️ Updated 10 days ago

Kommentare