Zum Inhalt springen

Datenvorverarbeitungstechniken fĂŒr kommentierte Computer Vision-Daten

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: Eine beliebte Computer Vision Bibliothek mit umfangreichen Funktionen fĂŒr die Bildverarbeitung.
  • PIL (Pillow): Eine Python Imaging Library zum Öffnen, VerĂ€ndern und Speichern von Bilddateien.

In Bezug auf YOLOv8 ermöglicht der Parameter "imgsz" beim Modelltraining flexible EingabegrĂ¶ĂŸen. Wenn er auf eine bestimmte GrĂ¶ĂŸe, z. B. 640, eingestellt wird, passt das Modell die GrĂ¶ĂŸe der Eingabebilder so an, dass ihre grĂ¶ĂŸte Abmessung 640 Pixel betrĂ€gt, wĂ€hrend das ursprĂŒngliche SeitenverhĂ€ltnis beibehalten wird.

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.

In Bezug auf YOLOv8wird die Normalisierung wĂ€hrend des Modelltrainings nahtlos als Teil der Vorverarbeitungspipeline verarbeitet. YOLOv8 fĂŒhrt automatisch mehrere Vorverarbeitungsschritte durch, einschließlich der Konvertierung in RGB, der Skalierung von Pixelwerten auf den Bereich [0, 1] und der Normalisierung mit vordefinierten Mittelwert- und Standardabweichungswerten.

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.
  • Kosteneffektiv: Die Datenerweiterung ist eine kostengĂŒnstige Möglichkeit, die Menge der Trainingsdaten zu erhöhen, ohne neue Daten zu sammeln und zu kennzeichnen.
  • 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

Unter YOLOv8 kannst du dein benutzerdefiniertes Dataset erweitern, indem du die Konfigurationsdatei des Datasets, eine .yaml-Datei, Ă€nderst. In dieser Datei kannst du einen Abschnitt mit Parametern hinzufĂŒgen, die angeben, wie du deine Daten erweitern möchtest.

Das Ultralytics YOLOv8 Repository unterstĂŒtzt eine breite Palette von Datenerweiterungen. Du kannst verschiedene Transformationen anwenden, wie z. B.:

  • 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

Stellen Sie sich ein Projekt vor, das darauf abzielt, ein Modell zur Erkennung und Klassifizierung verschiedener Fahrzeugtypen in Verkehrsbildern mit YOLOv8. Wir haben Verkehrsbilder gesammelt und mit Begrenzungsrahmen und Beschriftungen versehen.

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

  • Ändern der BildgrĂ¶ĂŸe: Seit YOLOv8 Verarbeitet flexible EingabegrĂ¶ĂŸen und fĂŒhrt eine automatische GrĂ¶ĂŸenĂ€nderung durch, eine manuelle GrĂ¶ĂŸenĂ€nderung ist nicht erforderlich. Das Modell passt die BildgrĂ¶ĂŸe wĂ€hrend des Trainings an den angegebenen Parameter "imgsz" an.
  • Normalisieren von Pixelwerten: YOLOv8 Normalisiert Pixelwerte wĂ€hrend der Vorverarbeitung automatisch auf einen Bereich von 0 bis 1, sodass dies nicht erforderlich ist.
  • Aufteilen des Datensatzes: Teilen Sie den Datensatz mit Tools wie scikit-learn in Trainings- (70 %), Validierungs- (20 %) und TestsĂ€tze (10 %) auf.
  • Datenerweiterung: Ändern Sie die Datasetkonfigurationsdatei (.yaml), um Datenerweiterungstechniken wie zufĂ€llige Zuschnitte, horizontale Spiegelungen und Helligkeitsanpassungen einzuschließen.

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

FĂŒr einen fortgeschritteneren Ansatz fĂŒr EDA können Sie die Ultralytics Explorer-Werkzeug. Es bietet robuste Funktionen zum Untersuchen von Computer-Vision-DatensĂ€tzen. Durch die UnterstĂŒtzung der semantischen Suche, SQL-Abfragen und der VektorĂ€hnlichkeitssuche erleichtert das Tool die Analyse und das VerstĂ€ndnis Ihrer Daten. Mit Ultralytics Explorer können Sie Einbettungen fĂŒr Ihr Dataset erstellen, um Ă€hnliche Bilder zu finden, SQL-Abfragen fĂŒr detaillierte Analysen auszufĂŒhren und semantische Suchen durchzufĂŒhren – alles ĂŒber eine benutzerfreundliche grafische OberflĂ€che.

Ü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: Besuche das YOLOv8 GitHub-Repository und benutze den Reiter Issues, um Fragen zu stellen, Fehler zu melden und Funktionen vorzuschlagen. Die Community und die Betreuer helfen dir gerne bei allen Problemen.
  • 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 YOLOv8 Dokumentation: In der offiziellen Dokumentation YOLOv8 findest du ausfĂŒhrliche Anleitungen und wertvolle Einblicke in zahlreiche Computer Vision Aufgaben und Projekte.

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?

FĂŒr die Datenerweiterung mit Ultralytics YOLOv8 musst du die Konfigurationsdatei (.yaml) des Datensatzes Ă€ndern. In dieser Datei kannst du verschiedene Techniken zur Datenerweiterung festlegen, wie z. B. zufĂ€llige Beschneidungen, horizontale Spiegelungen und Helligkeitsanpassungen. Dies kann mit den hier erlĂ€uterten Trainingskonfigurationen effektiv durchgefĂŒhrt werden. Die Datenerweiterung hilft dabei, einen robusteren Datensatz zu erstellen, die Überanpassung zu reduzieren und die Modellgeneralisierung zu verbessern.

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.

FĂŒr YOLOv8 wird die Normalisierung automatisch durchgefĂŒhrt, einschließlich der Umwandlung in RGB und der Skalierung der Pixelwerte. Mehr dazu erfĂ€hrst du im Abschnitt ĂŒber das Modelltraining.

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

Um deinen Datensatz aufzuteilen, ist es ĂŒblich, ihn in 70% fĂŒr das Training, 20% fĂŒr die Validierung und 10% fĂŒr das Testen aufzuteilen. Es ist wichtig, die Datenverteilung der Klassen ĂŒber diese Aufteilungen hinweg beizubehalten und Datenverluste zu vermeiden, indem du die Erweiterung nur fĂŒr den Trainingsdatensatz durchfĂŒhrst. Verwende Tools wie scikit-learn oder TensorFlow fĂŒr eine effiziente Aufteilung des Datensatzes. Siehe den ausfĂŒhrlichen Leitfaden zur Datensatzvorbereitung.

Kann ich unterschiedliche BildgrĂ¶ĂŸen in YOLOv8 ohne manuelle GrĂ¶ĂŸenĂ€nderung handhaben?

Ja, Ultralytics YOLOv8 kann durch den Parameter "imgsz" wĂ€hrend des Modelltrainings mit unterschiedlichen BildgrĂ¶ĂŸen umgehen. Dieser Parameter sorgt dafĂŒr, dass die GrĂ¶ĂŸe der Bilder so angepasst wird, dass ihre grĂ¶ĂŸte Abmessung der angegebenen GrĂ¶ĂŸe entspricht (z. B. 640 Pixel), wĂ€hrend das SeitenverhĂ€ltnis beibehalten wird. Flexiblere Eingabemöglichkeiten und automatische Anpassungen findest du im Abschnitt ĂŒber das Modelltraining.



Erstellt 2024-05-31, Aktualisiert 2024-07-05
Autoren: glenn-jocher (4), abirami-vina (1)

Kommentare