22. März 2023

Wie kann man Bilder für Computer-Vision-Projekte effektiv beschriften?

Mitwirkende
Thomas Janssens
Senior Ingenieur für maschinelles Lernen | Gruppenleiter
Keine Artikel gefunden.
Newsletter abonnieren
Diesen Beitrag teilen

ML6 wird oft von Kunden kontaktiert, die ein Problem haben, das mit ein paar Kameras und einer cleveren maschinellen Lernlösung gelöst werden könnte. Großartig, also wo fangen wir an? Es gibt noch etwas, das wir brauchen: markierte Daten. Derzeit besteht die praktischste und robusteste Methode zur Implementierung eines realen Bildverarbeitungsalgorithmus darin, ihm beizubringen, welche Muster er erkennen können muss. Das bedeutet, dass ein Trainingsdatensatz erstellt werden muss, eine Sammlung von gekennzeichneten Beispieldaten, auf die die Modellparameter abgestimmt werden können, damit sie lernen, das Problem zu lösen.

Unsere Erfahrung mit Projekten, die mit markierten Daten arbeiten, zeigt, dass ein gut kommentierter Trainingssatz entscheidend für den Erfolg ist. Wie das Sprichwort schon sagt: Garbage in, garbage out. In diesem Beitrag konzentrieren wir uns auf die häufigsten Probleme bei Computer-Vision-Anwendungen. Die meisten Probleme, die wir für unsere Kunden lösen, fallen in eine der folgenden Kategorien: Bildklassifizierung, Objekterkennung oder Instanzensegmentierung.

Illustration der hier behandelten Bildverarbeitungsaufgaben.
Illustration der hier behandelten Bildverarbeitungsaufgaben.

Wie man einen Trainingsdatensatz sammelt

Um herauszufinden, wie Ihr Trainingssatz aussehen muss, müssen Sie sich überlegen, welches Problem Sie eigentlich lösen wollen. Wie unterschiedlich sind die verschiedenen Dinge, die Sie erkennen wollen? Gibt es große Unterschiede in Bezug auf ihr Aussehen, die Beleuchtung oder den Aufnahmewinkel? Wird nur ein Kameratyp oder mehrere verschiedene Modelle verwendet?

Es gibt zwar verschiedene Techniken, um mit einem begrenzten Zeitbudget das Beste aus den Anmerkungen herauszuholen, aber es ist immer noch eine gute Praxis, einen Trainingssatz zusammenzustellen, der Bilder umfasst, die die gesamte oben genannte Vielfalt abdecken, die auf Ihr Problem zutrifft. Ein Modell für maschinelles Lernen wird es leichter haben, das, was es weiß, auf ein neues Beispiel zu verallgemeinern, das dem, auf das es trainiert wurde, sehr ähnlich ist, als auf etwas völlig Neues. Wenn Sie beispielsweise ein Trainingsset für ein Autoerkennungsmodell zusammenstellen, möchten Sie Beispiele beschriften, die so viele verschiedene Farben, Marken, Winkel und Lichtverhältnisse aufweisen, wie Sie erwarten, dass das Modell sie sieht. Wenn Sie nur kompakte Stadtautos beschriften, ist nicht gewährleistet, dass das Modell einen Monstertruck erkennt. Natürlich muss nicht jede mögliche Kombination von Attributen im Datensatz enthalten sein, sondern nur eine gesunde Mischung aus der realen Welt.

Gehen Sie vor der Beschriftung den Datensatz durch, um Muster zu erkennen, die bei der Beschriftung zu schwierigen Entscheidungen führen könnten. Haben Sie an alle relevanten Kategorien gedacht? Gibt es einen bestimmten Objekttyp, der sich zwischen zwei Kategorien befindet? Gibt es in einigen Bildern teilweise sichtbare Objekte? Ist es tatsächlich unmöglich, einige Objekte unter bestimmten Bedingungen zu erkennen (z. B. dunkle Objekte in dunklen Bildern)? Denken Sie über diese Fragen nach und entscheiden Sie sich im Vorfeld für einen geeigneten Plan. Wenn Ihre Beschriftung inkonsistent ist, wird die Qualität des auf Ihren Daten trainierten Modells negativ beeinflusst. Möglicherweise müssen Sie Bilder auslassen, die nicht klar genug sind. Eine gute Faustregel ist die Verwendung Ihres eigenen Auges: Wenn Sie bei einer visuellen Aufgabe eine Entscheidung in Sekundenbruchteilen treffen können, kann ein maschinelles Lernmodell in der Regel lernen, diese zu replizieren. Wenn jedoch nicht genügend visuelle Informationen in einem Bild vorhanden sind, kann das Modell diese nicht aus dem Nichts herausholen.

Unserer Erfahrung nach ist es wichtig, sowohl die Experten für maschinelles Lernen als auch die Fachexperten von Anfang an in das Projekt einzubeziehen und gemeinsam einen Ansatz zu entwickeln. Am besten ist es, mit der Annotation einer kleinen Menge von Bildern zu beginnen und diese in einem iterativen Prozess zu überprüfen. So lassen sich Missverständnisse vermeiden und Sie können gemeinsam daran arbeiten, den größten Nutzen aus Ihrer Zeit für die Annotation zu ziehen.

In der Welt des maschinellen Lernens gibt es viele öffentlich verfügbare Datensätze. Diese enthalten oft Millionen von Bildern und Dutzende oder sogar Hunderte von Klassen aller Art. Beispiele hierfür sind ImageNet und COCO. Ebenso sind viele Modelle zur Wiederverwendung verfügbar. Auch wenn sich Ihr Problem nicht genau mit diesen Datensätzen überschneidet, so gibt es doch auf einer grundlegenden Ebene ähnliches visuelles Wissen in Bezug auf das "Erkennen von Dingen", das in beiden Aufgaben benötigt wird. Wir können dies zu unserem Vorteil nutzen, indem wir ein solches leistungsfähiges Modell an unsere Aufgabe anpassen, anstatt bei Null anzufangen.

Bild-Klassifizierung

Bei der Bildklassifizierung besteht das Ziel darin, dem gesamten Bild eine einzige Bezeichnung zuzuweisen. Dies ist interessant, wenn Sie eine Sammlung von Bildern haben, die zu einer von mehreren Kategorien gehören, oder wenn Sie eine Ja/Nein-Entscheidung auf der Grundlage eines auffälligen Merkmals im Bild treffen wollen. Diese Art von Modell könnte verwendet werden, um zu erkennen, welche Art von Teil an einer Werkskamera vorbeigeht, oder vielleicht eine Artikelkategorie aus dem hochgeladenen Bild eines Verkäufers auf einem Second-Hand-Marktplatz vorschlagen.

Jedem Bild wird ein Klassenlabel zugewiesen

Dies ist in der Regel auch die einfachste Aufgabe für die Kennzeichnung. Achten Sie darauf, dass Sie klar abgegrenzte und gut definierte Kategorien erstellen. Wenn Sie z. B. fehlerhafte Teile in einer Produktionslinie kennzeichnen, denken Sie sorgfältig über die verschiedenen Defekte nach, die auftreten können, und überlegen Sie, wie viele Kategorien definiert werden können, die visuell klar unterscheidbar sind. Es ist auch eine gute Praxis, Ihren Datensatz durchzugehen und zu überlegen, welche Fälle schwierig sein könnten, und eine konsistente Strategie für den Umgang mit ihnen zu entwickeln.

Objekt-Erkennung

Wenn wir uns für die Anzahl der Objekte, ihre allgemeine Position in den Bildern interessieren oder nach etwas relativ Kleinem in einem größeren Bild suchen, ist Objekterkennung das A und O.

Zu diesem Zweck trainieren wir einen Algorithmus zur Erkennung von rechteckigen Regionen, die die Objekte oder Regionen von Interesse enthalten. Genau wie zuvor kann ein Modell lernen, viele verschiedene Objektkategorien zu unterscheiden. Dies könnte zur Erkennung von Fußgängern, Radfahrern und Autos in einer Straßenszene (z. B. selbstfahrende Autos oder CCTV), zur Lokalisierung und Identifizierung von Mängeln an Produkten in einer Fabrikstraße oder zur Verfolgung eines Balls und von Spielern in einem Sportspiel eingesetzt werden.

Die Beschriftung Ihrer Trainingsdaten besteht aus dem Zeichnen von Kästchen über interessante Objekte in Ihren Bildern. Jedem Kästchen wird außerdem eine Klassenbezeichnung zugewiesen. Die Kästchen dürfen sich überschneiden.

Rechteckige Annotationen in einer Straßenszene. Beachten Sie die allgemein enge Passform und die Überlappung zwischen nahen Objekten

Im Allgemeinen ist es eine gute Idee, die Begrenzungen der Boxen einigermaßen eng um das Objekt herum zu ziehen. Inkonsistente und lockere Beschriftungen machen den Lernprozess des Modells unnötig schwer. Außerdem bedeutet dies, dass Ihre Bewertungsmetriken weniger informativ sind, da das Modell für das Zeichnen von Grenzen an einer anderen Stelle bestraft wird.

Instanz-Segmentierung

Wenn es bei Ihrem Problem wirklich darum geht, ein Objekt im Bild bis auf die exakten Pixel genau zu lokalisieren, sollten Sie sich für die Instanzsegmentierung entscheiden. Dies könnte erforderlich sein, um Maße wie die Fläche oder den Querschnitt eines Objekts zu berechnen oder um die Informationen für nachgelagerte Aufgaben wie die automatische Bildbearbeitung zu verwenden. Dies kann manchmal bei komplizierten Objekten hilfreich sein, die nicht einfach durch ein Rechteck angenähert werden können, z. B. lassen dünne Objekte oft zu viel irrelevanten Raum in der Box, damit die einfache Objekterkennung gut funktioniert. Die Segmentierung von Instanzen ist auch hilfreich, um eng gepackte Objekte in einzelne Elemente zu unterteilen.

Grob gesagt gibt es zwei Ansätze für diese Aufgabe: die polygonale Beschriftung und die pixelbasierte Beschriftung. Der erste Ansatz besteht im Wesentlichen darin, eine Reihe von Punkten um den Objektumriss herum zu zeichnen, die durch Liniensegmente verbunden sind. Die zweite Methode besteht aus Bitmap-Ansätzen, ähnlich wie ein Pinselwerkzeug in einer Bildbearbeitungssoftware. Welcher Ansatz einfacher ist, hängt von Ihrem Problem, der Form der zu erkennenden Objekte und den von Ihrer Anmerkungssoftware angebotenen Werkzeugen ab. (Einige bieten Photoshop-ähnliche Werkzeuge wie z. B. Füllung, magisches Lasso usw.) Diese Formkommentare werden auch von einer Klassenbezeichnung begleitet.

Viele fortschrittlichere Beschriftungssoftware bietet auch problemunabhängige halbautomatische Ansätze, wie DEXTR, mit dem Sie eine detaillierte Maske aus nur vier Schlüsselpunkten extrahieren können. Diese sind auch sehr praktisch, um große Mengen von Objekten schnell zu beschriften.

Wie bei der Beschriftung von Rechtecken müssen Sie eine gute Balance finden zwischen der Beschriftung eines einzelnen Objekts, die eng genug ist, um ein konsistentes Trainingssignal für den Algorithmus zu liefern, und einer ausreichenden Geschwindigkeit, um in der für die Beschriftung zur Verfügung stehenden Zeit viele Beispiele beschriften zu können.

Manuelle polygonbasierte Instanzbeschriftung (links) und halbmanuelle DEXTR-Beschriftung, generiert aus vier Extrempunkten (rechts).

Andere Aufgaben

Die oben genannten Kategorien sind keine erschöpfende Liste aller möglichen Beschriftungstypen. Für einige Probleme ist die semantische Segmentierung, bei der Sie einzelne Bildpixel beschriften, ohne separate Objekte zu erkennen, besser geeignet. Es gibt auch die Beschriftung von Schlüsselpunkten, d. h. die Beschriftung von Schlüsselpunkten eines Objekts, z. B. die Gelenke einer tanzenden Person oder eines sich bewegenden Geräts.

Außerdem lässt sich nicht jedes Problem mit diskreten Klassenbezeichnungen modellieren. In manchen Fällen ist ein kontinuierliches oder nummeriertes Label besser geeignet. Sie könnten ein Haus auf einem Satellitenbild mit einem geschätzten Verkaufswert beschriften, ein Biopsie-Mikroskopie-Bild mit einem Krankheitsgrad bewerten oder das Alter einer Person anhand eines Bildes schätzen. Die Eingabe von fortlaufenden Beschriftungen in freier Form wird im Allgemeinen von den Anmerkungswerkzeugen weniger unterstützt, so dass Sie sich vergewissern müssen, dass das Werkzeug Ihrer Wahl dies unterstützt.

Semantische Segmentierung: Pixel haben Klassen, sind aber nicht in einzelne Objekte gruppiert
Keypoint-Anmerkungen für die Pose-Schätzung

Etikettierungssoftware und Etikettierungsdienste von Dritten

Die Wahl der richtigen Beschriftungssoftware ist entscheidend für die Steigerung der Effizienz Ihrer Beschriftungsarbeit. Vergewissern Sie sich, dass Ihre Software eine einfache Beschriftung für Ihre spezielle Aufgabe ermöglicht, mit möglichst wenigen manuellen Eingriffen pro Anmerkung. Achten Sie darauf, alle relevanten Abkürzungen zu erlernen: Kleine Zeiteinsparungen bei jeder einzelnen Beschriftung summieren sich zu erheblichen Zeiteinsparungen für den gesamten Datensatz.

Wenn Sie an einem größeren Projekt arbeiten, sollten Sie prüfen, ob die Software eine intelligente Möglichkeit zum Hochladen und Verwalten von Datensätzen bietet. Wenn Sie mehrere Personen mit der Beschriftung beauftragen, kann die Möglichkeit, einzelnen Benutzern Rollen, Berechtigungen und Beschriftungsaufgaben zuzuweisen, ebenfalls notwendig sein, um alles übersichtlich zu halten. Einige Tools ermöglichen es Ihnen, eine komplexere Beschriftungspipeline zu definieren, die Effizienzgewinne ermöglicht, indem ein Problem in mehrere kleinere, schnellere Schritte aufgeteilt wird, oder indem ein zuvor trainierter Algorithmus für maschinelles Lernen verwendet wird, um eine erste Annäherung an die Objektkonturen zu generieren.

Es gibt mehrere kostenlose Open-Source-Tools, die viele dieser Funktionen bieten, z. B. CVAT, Label Studio oder LOST. Es gibt auch kommerzielle Lösungen mit proprietären Implementierungen dieser Funktionen und anderen Extras.

Überlegen Sie auch, wie diese Software eingesetzt werden soll. Einige ältere oder kleinere Software läuft als normale Anwendung, andere können als Dienst bereitgestellt werden. Für einige, wie die beiden vorgenannten, stehen Docker-Container für eine schnelle Bereitstellung zur Verfügung.

Eine typische Etikettierschnittstelle (CVAT), mit Werkzeugen (links), Datennavigation (oben) und Etikettenverwaltung (rechts)

Wenn Sie einen besonders großen Datensatz haben, der etikettiert werden muss, kann es sich lohnen, mit Drittanbietern von Etikettierungsdiensten in Kontakt zu treten. Alternativ dazu können Sie auch Ihre eigene Crowdsourcing-Aufgabe über eine Crowdsourcing-Plattform einrichten. Dieser Ansatz kann den Durchsatz bei der Beschriftung massiv erhöhen, bringt aber auch einen gewissen Overhead und Einrichtungszeit mit sich und erfordert eine zusätzliche Partei, die den Problembereich vollständig versteht. Es ist besonders wichtig, die Qualität der Beschriftungen im Auge zu behalten, sowohl zwischen den einzelnen Personen als auch im Zeitverlauf.

Damit haben wir die wichtigsten Aspekte der Bewältigung eines Computer-Vision-Problems durch Beschriftung Ihrer eigenen Daten behandelt. Wenn Sie ein Problem haben, das mit einer der oben genannten Techniken automatisiert werden könnte, sollten Sie sich mit uns bei ML6 in Verbindung setzen. Wir können Ihnen helfen, den optimalen Arbeitsablauf für Ihr Computer-Vision-Projekt zu finden.

Verwandte Beiträge

Alle anzeigen
Keine Ergebnisse gefunden.
Es gibt keine Ergebnisse mit diesen Kriterien. Versuchen Sie, Ihre Suche zu ändern.
Stiftung Modelle
Unternehmen
Unser Team
Verantwortungsvolle und ethische KI
Strukturierte Daten
Chat GPT
Nachhaltigkeit
Stimme und Ton
Front-End-Entwicklung
Schutz und Sicherheit von Daten
Verantwortungsvolle/ethische KI
Infrastruktur
Hardware und Sensoren
MLOps
Generative KI
Verarbeitung natürlicher Sprache
Computer Vision