Datenvorverarbeitungstechniken für kommentierte Computer Vision Daten
Einführung
Nachdem Sie die Ziele Ihres Bildverarbeitungsprojekts definiert und Daten gesammelt und mit Kommentaren versehen haben, besteht der nächste Schritt in der Vorverarbeitung der kommentierten Daten und der Vorbereitung für das Modelltraining. Saubere und konsistente Daten sind entscheidend für die Erstellung eines leistungsfähigen Modells.
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 Testsätze umfasst. Lassen Sie uns die wichtigsten Techniken und bewährten Verfahren für die Bereinigung Ihrer Daten erkunden!
Die Bedeutung der Datenvorverarbeitung
Wir sammeln und beschriften unsere Daten bereits sorgfältig und berücksichtigen dabei mehrere Aspekte. Warum ist die Datenvorverarbeitung dann so wichtig für ein Computer-Vision-Projekt? Nun, bei der Datenvorverarbeitung geht es darum, die Daten in ein für das Training geeignetes Format zu bringen, das den Rechenaufwand verringert und die Modellleistung verbessert. Im Folgenden werden einige häufige Probleme mit Rohdaten genannt, die durch die Vorverarbeitung behoben werden können:
- Rauschen: Irrelevante oder zufällige Variationen in Daten.
- Inkonsistenz: Schwankungen bei Bildgrößen, -formaten und -qualität.
- Ungleichgewicht: Ungleiche Verteilung von Klassen oder Kategorien in einem Datensatz.
Techniken der Datenvorverarbeitung
Einer der ersten und wichtigsten Schritte bei der Datenvorverarbeitung ist die Größenänderung. Einige Modelle sind für die Verarbeitung variabler Eingabegrößen ausgelegt, aber viele Modelle erfordern eine einheitliche Eingabegröße. Durch die Größenanpassung werden die Bilder einheitlich und die Berechnungskomplexität wird verringert.
Ä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, aber schnellerer Berechnung führt.
Um die Größenänderung zu vereinfachen, können Sie die folgenden Werkzeuge verwenden:
- OpenCV: Eine beliebte Bildverarbeitungsbibliothek mit umfangreichen Funktionen für die Bildverarbeitung.
- PIL (Pillow): Eine Python Imaging Library zum Öffnen, Verändern und Speichern von Bilddateien.
In Bezug auf YOLO11 ermöglicht der Parameter "imgsz" während des Modelltrainings 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, wobei das ursprüngliche Seitenverhältnis beibehalten wird.
Indem Sie die spezifischen Anforderungen Ihres Modells und Ihres Datensatzes bewerten, können Sie feststellen, ob eine Größenänderung ein notwendiger Vorverarbeitungsschritt ist oder ob Ihr Modell Bilder unterschiedlicher Größe effizient verarbeiten kann.
Pixelwerte normalisieren
Eine weitere Vorverarbeitungstechnik ist die Normalisierung. Durch die Normalisierung werden die Pixelwerte auf einen Standardbereich skaliert, was zu einer schnelleren Konvergenz während des Trainings führt 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 Pixelwerte auf der Grundlage ihres Mittelwerts und ihrer Standardabweichung.
In Bezug auf YOLO11 wird die Normalisierung nahtlos als Teil der Vorverarbeitungspipeline während des Modelltrainings gehandhabt. YOLO11 führt automatisch mehrere Vorverarbeitungsschritte durch, einschließlich der Konvertierung in RGB, der Skalierung der Pixelwerte auf den Bereich [0, 1] und der Normalisierung anhand vordefinierter Mittelwerte und Standardabweichungen.
Aufteilung des Datensatzes
Sobald Sie die Daten bereinigt haben, können Sie den Datensatz aufteilen. Die Aufteilung der Daten in Trainings-, Validierungs- und Testdatensätze wird vorgenommen, um sicherzustellen, dass das Modell an ungesehenen Daten bewertet werden kann, um seine Generalisierungsleistung zu beurteilen. Üblich ist eine Aufteilung von 70 % für das Training, 20 % für die Validierung und 10 % für den Test. Es gibt verschiedene Tools und Bibliotheken, die Sie für die Aufteilung Ihrer Daten verwenden können, wie scikit-learn oder TensorFlow.
Beachten Sie bei der Aufteilung Ihres Datensatzes Folgendes:
- Beibehaltung der Datenverteilung: Stellen Sie sicher, dass die Datenverteilung der Klassen in den Trainings-, Validierungs- und Testsätzen beibehalten wird.
- Vermeiden von Datenverlusten: In der Regel wird die Datenerweiterung nach der Aufteilung des Datensatzes vorgenommen. Die Datenerweiterung und jede andere Vorverarbeitung sollte nur auf den Trainingssatz angewandt werden, um zu verhindern, dass Informationen aus dem Validierungs- oder Testsatz das Modelltraining beeinflussen. -Ausgleich der Klassen: Bei unausgewogenen Datensätzen sollten Techniken wie Oversampling der Minderheitsklasse oder Under-Sampling der Mehrheitsklasse innerhalb des Trainingssatzes in Betracht gezogen werden.
Was ist Datenerweiterung?
Der am häufigsten diskutierte Schritt der Datenvorverarbeitung ist die Datenvergrößerung. Bei der Datenerweiterung wird der Datensatz künstlich vergrößert, indem modifizierte Versionen von Bildern erstellt werden. Durch die Vergrößerung 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 Variationen und Verzerrungen in den Eingabedaten machen. Dazu gehören Änderungen der Beleuchtung, der Ausrichtung und des Maßstabs.
- Kosteneffektiv: Die Datenerweiterung ist eine kosteneffiziente 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 durch die Schaffung neuer Variationen optimal genutzt
Methoden der Datenerweiterung
Zu den gängigen Augmentierungstechniken gehören Spiegeln, Drehen, Skalieren und Farbanpassungen. Mehrere Bibliotheken, wie Albumentations, Imgaug und TensorFlow's ImageDataGenerator, können diese Augmentierungen erzeugen.
In Bezug auf YOLO11 können Sie Ihren benutzerdefinierten Datensatz erweitern, indem Sie die Konfigurationsdatei des Datensatzes, eine .yaml-Datei, ändern. In dieser Datei können Sie einen Erweiterungsabschnitt mit Parametern hinzufügen, die angeben, wie Sie Ihre Daten erweitern möchten.
- Zufallskulturen
- Spiegeln: Bilder können horizontal oder vertikal gespiegelt werden.
- Drehen: Bilder können in bestimmten Winkeln gedreht werden.
- Verzerrung
Außerdem können Sie die Intensität dieser Anreicherungstechniken durch bestimmte Parameter anpassen, um eine größere Datenvielfalt zu erzeugen.
Eine Fallstudie zur Vorverarbeitung
Betrachten Sie ein Projekt zur Entwicklung eines Modells zur Erkennung und Klassifizierung verschiedener Fahrzeugtypen in Verkehrsbildern mit YOLO11. Wir haben Verkehrsbilder gesammelt und sie mit Bounding Boxes und Beschriftungen versehen.
Im Folgenden werden die einzelnen Schritte der Vorverarbeitung für dieses Projekt beschrieben:
- Ändern der Bildgröße: Da YOLO11 flexible Eingabegrößen verarbeitet und die Größenanpassung automatisch vornimmt, ist eine manuelle Größenanpassung nicht erforderlich. Das Modell passt die Bildgröße während des Trainings entsprechend dem angegebenen Parameter "imgsz" an.
- Normalisierung der Pixelwerte: YOLO11 normalisiert die Pixelwerte während der Vorverarbeitung automatisch auf einen Bereich von 0 bis 1, so dass dies nicht erforderlich ist.
- Aufteilung des Datensatzes: Teilen Sie den Datensatz mit Hilfe von Tools wie Scikit-Learn in Trainings- (70 %), Validierungs- (20 %) und Test-Sets (10 %) auf.
- Datenerweiterung: Ändern Sie die Dataset-Konfigurationsdatei (.yaml), um Datenerweiterungstechniken wie zufällige Ausschnitte, horizontale Spiegelungen und Helligkeitsanpassungen einzubeziehen.
Diese Schritte stellen sicher, dass der Datensatz ohne potenzielle Probleme vorbereitet wird und für die explorative Datenanalyse (EDA) bereit ist.
Techniken der explorativen Datenanalyse
Nach der Vorverarbeitung und Anreicherung Ihres Datensatzes besteht der nächste Schritt darin, durch eine explorative Datenanalyse Erkenntnisse zu gewinnen. Bei der EDA werden statistische Verfahren und Visualisierungswerkzeuge eingesetzt, um die Muster und Verteilungen in Ihren Daten zu verstehen. Sie können Probleme wie Klassenungleichgewichte oder Ausreißer erkennen und fundierte Entscheidungen über die weitere Vorverarbeitung der Daten oder Anpassungen beim Modelltraining treffen.
Statistische EDA-Techniken
Statistische Verfahren beginnen oft mit der Berechnung grundlegender Metriken wie Mittelwert, Median, Standardabweichung und Bereich. Diese Metriken bieten einen schnellen Überblick über die Eigenschaften Ihres Bilddatensatzes, wie z. B. die Pixelintensitätsverteilungen. Das Verständnis dieser grundlegenden Statistiken hilft Ihnen, die Gesamtqualität und die Merkmale Ihrer Daten zu erfassen, so dass Sie Unregelmäßigkeiten frühzeitig erkennen können.
Visuelle EDA-Techniken
Visualisierungen sind der Schlüssel zur EDA für Bilddatensätze. So ist beispielsweise die Analyse des Klassenungleichgewichts ein weiterer wichtiger Aspekt der EDA. Sie 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 mithilfe von Visualisierungstools wie Boxplots identifiziert werden, die Anomalien in der Pixelintensität oder Merkmalsverteilung hervorheben. Die Erkennung von Ausreißern verhindert, dass ungewöhnliche Datenpunkte Ihre Ergebnisse verfälschen.
Gängige Werkzeuge für Visualisierungen sind:
- Histogramme und Box Plots: Nützlich für das Verständnis der Verteilung von Pixelwerten und die Identifizierung von Ausreißern.
- Streudiagramme: Hilfreich für die Untersuchung von Beziehungen zwischen Bildmerkmalen oder Anmerkungen.
- Heatmaps: Effektiv zur Visualisierung der Verteilung von Pixelintensitäten oder der räumlichen Verteilung von kommentierten Merkmalen in Bildern.
Verwendung von Ultralytics Explorer für EDA
Gemeinschaftsnote ⚠️
Ab dem ultralytics>=8.3.10
Die Unterstützung von Ultralytics explorer wurde abgeschafft. Aber keine Sorge! Sie können jetzt auf ähnliche und sogar erweiterte Funktionen über Ultralytics HUBunserer intuitiven No-Code-Plattform, die Ihren Arbeitsablauf optimiert. Mit Ultralytics HUB können Sie Ihre Daten mühelos erforschen, visualisieren und verwalten, ohne eine einzige Zeile Code zu schreiben. Probieren Sie es aus und nutzen Sie die Vorteile der leistungsstarken Funktionen!🚀
Für einen fortgeschritteneren Ansatz in der EDA können Sie das Tool Ultralytics Explorer verwenden. Es bietet robuste Funktionen für die Untersuchung von Computer-Vision-Datensätzen. Durch die Unterstützung von semantischer Suche, SQL-Abfragen und Vektorähnlichkeitssuche macht das Tool die Analyse und das Verständnis Ihrer Daten einfach. Mit Ultralytics Explorer können Sie Einbettungen für Ihren Datensatz erstellen, um ähnliche Bilder zu finden, SQL-Abfragen für detaillierte Analysen ausführen und semantische Suchen durchführen - alles über eine benutzerfreundliche grafische Oberfläche.
Erreichen und verbinden
Diskussionen über Ihr Projekt mit anderen Computer-Vision-Enthusiasten können Ihnen neue Ideen aus verschiedenen Perspektiven liefern. Hier sind einige großartige Möglichkeiten zum Lernen, zur Fehlerbehebung und zur Vernetzung:
Kanäle zur Verbindung mit der Gemeinschaft
- GitHub-Fragen: Besuchen Sie das YOLO11 GitHub-Repository und verwenden Sie die Registerkarte "Issues", um Fragen zu stellen, Fehler zu melden und Funktionen vorzuschlagen. Die Community und die Betreuer helfen Ihnen gerne bei allen Problemen.
- Ultralytics Discord-Server: Treten Sie dem Ultralytics Discord-Server bei, um mit anderen Benutzern und Entwicklern in Kontakt zu treten, Unterstützung zu erhalten, Wissen auszutauschen und Ideen zu entwickeln.
Offizielle Dokumentation
- Ultralytics YOLO11 Dokumentation: In der offiziellen Dokumentation YOLO11 finden Sie ausführliche Anleitungen und wertvolle Einblicke in zahlreiche Aufgaben und Projekte der Computer Vision.
Ihr Datensatz ist fertig!
Korrekt skalierte, normalisierte und erweiterte Daten verbessern die Modellleistung, indem sie Rauschen reduzieren und die Verallgemeinerung verbessern. Wenn Sie die in diesem Leitfaden beschriebenen Vorverarbeitungstechniken und bewährten Verfahren befolgen, können Sie einen soliden Datensatz erstellen. Wenn Ihr vorverarbeiteter Datensatz fertig ist, können Sie zuversichtlich zu den nächsten Schritten in Ihrem Projekt übergehen.
FAQ
Welche Bedeutung hat die Vorverarbeitung von Daten bei Computer-Vision-Projekten?
Die Datenvorverarbeitung ist bei Bildverarbeitungsprojekten unerlässlich, da sie sicherstellt, 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 tragen Vorverarbeitungsschritte wie Größenänderung, Normalisierung, Vergrößerung und Aufteilung von Datensätzen dazu bei, die Rechenlast zu verringern und die Modellleistung zu verbessern. Weitere Einzelheiten finden Sie unter Schritte eines Computer-Vision-Projekts.
Wie kann ich Ultralytics YOLO zur Datenerweiterung nutzen?
Für die Datenerweiterung mit Ultralytics YOLO11 müssen Sie die Datensatzkonfigurationsdatei (.yaml) ändern. In dieser Datei können Sie verschiedene Augmentierungstechniken wie zufällige Beschneidungen, horizontale Spiegelungen und Helligkeitsanpassungen angeben. Dies kann mit den hier erläuterten Trainingskonfigurationen effektiv durchgeführt werden. Die Datenerweiterung trägt dazu bei, einen robusteren Datensatz zu erstellen, die Überanpassung zu reduzieren und die Modellgeneralisierung zu verbessern.
Welches sind die besten Daten-Normalisierungstechniken für Computer-Vision-Daten?
Bei der Normalisierung werden die Pixelwerte auf einen Standardbereich skaliert, 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 Pixelwerte auf der Grundlage ihres Mittelwerts und ihrer Standardabweichung.
Für YOLO11 wird die Normalisierung automatisch durchgeführt, einschließlich der Umwandlung in RGB und der Skalierung der Pixelwerte. Mehr darüber erfahren Sie im Abschnitt Modelltraining.
Wie sollte ich meinen annotierten Datensatz für das Training aufteilen?
Um Ihren Datensatz aufzuteilen, ist es gängige Praxis, ihn in 70 % für das Training, 20 % für die Validierung und 10 % für die Tests aufzuteilen. Es ist wichtig, die Datenverteilung der Klassen über diese Aufteilungen hinweg beizubehalten und Datenverluste zu vermeiden, indem die Erweiterung nur für den Trainingssatz durchgeführt wird. Verwenden Sie Werkzeuge wie scikit-learn oder TensorFlow für eine effiziente Aufteilung des Datensatzes. Siehe den detaillierten Leitfaden zur Datensatzvorbereitung.
Kann ich unterschiedliche Bildgrößen in YOLO11 ohne manuelle Größenänderung verarbeiten?
Ja, Ultralytics YOLO11 kann während des Modelltrainings mit Hilfe des Parameters "imgsz" unterschiedliche Bildgrößen verarbeiten. Dieser Parameter stellt sicher, 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. Eine flexiblere Handhabung der Eingaben und automatische Anpassungen finden Sie im Abschnitt über das Modelltraining.