
NACHRICHTEN / DATA WISSENSCHAFT
Stellen Sie sich vor, Sie sind der Leiter eines neuen Hightech-Start-ups, das ein brandneues Produkt (z. B. ein neues IoT-Gerät) auf den Markt bringen will. Sie haben an vielen Konferenzen, Ausstellungen und Demos teilgenommen, um im Vorfeld über Ihr Produkt zu informieren und den Bekanntheitsgrad zu steigern. Als unmittelbare Auswirkung erwarten Sie, dass die Verkäufe Ihres Produkts nach der Markteinführung hoch genug sein könnten, um Ihre Ziele zu erreichen.
Stellen Sie sich vor, Sie sind der Leiter eines neuen Hightech-Start-ups, das ein brandneues Produkt (z. B. ein neues IoT-Gerät) auf den Markt bringen will. Sie haben an vielen Konferenzen, Ausstellungen und Demos teilgenommen, um im Vorfeld über Ihr Produkt zu informieren und den Bekanntheitsgrad zu steigern. Als unmittelbare Auswirkung erwarten Sie, dass die Verkäufe Ihres Produkts nach der Markteinführung hoch genug sein könnten, um Ihre Ziele zu erreichen.
Hier liegt ein Problem: Sie haben keine Möglichkeit, die Nachfrage nach Ihrem Produkt vorherzusehen und abzuschätzen.
Eine einfache Tatsache, die Sie überprüfen können, ist, wie viel über Ihr Produkt im Internet gesprochen wird. Sie könnten einen Blick auf die wichtigsten sozialen Netzwerke (Facebook, Twitter, Instagram...) werfen und ermitteln, in wie vielen Beiträgen Ihr Produkt erwähnt wird. Das würde Ihnen eine Vorstellung davon geben, wie viele Verkäufe Sie erwarten können.
Sie haben zwei Möglichkeiten, ein Produkt in einem Social Post zu erkennen. Sie können entweder den Text analysieren, indem Sie Text Mining durchführen, oder Sie können eine Bilderkennung für das Bild des Beitrags durchführen. Bei der Analyse des Textes gibt es jedoch ein Problem: Wenn ein Produkt auf den Markt kommt, ist die Wahrscheinlichkeit gering, dass jeder seinen Namen kennt und es gleich nach dem Erscheinungsdatum erwähnt. Die Bilderkennung ist daher die bevorzugte Lösung. Um ein Produkt auf Bildern zu erkennen (wenn Sie mehrere Produkte zu erkennen haben), müssen Sie folgende Schritte durchführen Objekt-Erkennung und hier kommt Tensorflow ins Spiel.
Was ist Tensorflow?
Tensorflow ist eine Open-Source-Mathe-Bibliothek, die stabile Python- und C-APIs bereitstellt und für verschiedene data Manipulationsaufgaben verwendet wird. Sie ist sehr bekannt und wird für maschinelles Lernen und Deep-Learning-Anwendungen wie neuronale Netze verwendet. Die Anwendungsfälle, für die Tensorflow am meisten bekannt ist, sind Bilderkennung, Verarbeitung natürlicher Sprache und Analyse von Sprache in Text.
Unser spezieller Anwendungsfall ist die Objektdetektion. Sie können Tensorflow auf verschiedenen Ebenen verwenden:
- Stufe 1: Sie verwenden ein vorgefertigtes Modell aus dem Regal und wenden es direkt auf Ihre data an, um die Produkte zu erkennen. Diese Methode ist die am wenigsten komplexe und schnellste, da Sie kein Modell erstellen oder trainieren müssen.
- Stufe 2: Trainieren Sie ein Modell auf Ihren eigenen data, damit das Modell lernen kann und die Bandbreite Ihrer Produkte genau kennt. Auf dieser Stufe muss ein Modell auf data trainiert werden, das Sie zuvor beschriftet haben. Dies nimmt mehr Zeit in Anspruch, bringt aber relevantere Ergebnisse, da das Modell die genauen Produktreferenzen erkennen wird.
- Stufe 3: Erstellen Sie Ihr eigenes Modell von Grund auf. In dieser Stufe trainieren Sie nicht nur ein Modell, sondern erstellen es von Anfang an. Dabei kann es sich sowohl um die Anpassung von Parametern an ein bestehendes Modell als auch um die Entwicklung einer neuen Architektur für ein neuronales Netz handeln. Diese Stufe ist eher für Forschungszwecke geeignet, da sie sehr zeitaufwendig ist.
Im Folgenden beschreiben wir jede Ebene der Nutzung von Tensorflow im Detail.
Stufe 1 - Verwendung eines vortrainierten Modells
Die erste grundlegende Verwendung ist die Verwendung eines Modells, das bereits auf einem markierten Datensatz trainiert wurde. Diese Option sollte immer dann gewählt werden, wenn die data , auf die Sie das Modell anwenden möchten, den data sehr ähnlich sind. Zum Beispiel, wenn Sie generische Objekte wie Schuhe, Smartphones, Taschen usw. erkennen wollen. Dieser Ansatz ist daher nicht geeignet, wenn Sie eine Marke und ein bestimmtes Modell aus Ihrer Produktpalette erkennen wollen.
Normalerweise werden solche Modelle auf Standarddatensätzen trainiert, wie dem Coco-Datensatz (github-Link hier) oder ImageNet-Datensatz (Link hier). Diese Datensätze bestehen aus riesigen Sammlungen von Bildern, die bereits beschriftet sind und für das Modelltraining verwendet werden können. Sie werden häufig zum Trainieren von Bildklassifizierungs- und Objekterkennungsmodellen verwendet, die als vortrainierte Modelle für die allgemeine Produkterkennung eingesetzt werden können.
Da wir nun mehr über die data wissen, wollen wir uns einen kurzen Überblick über das vorbereitete Modell verschaffen, das Sie verwenden können. Eine der gebräuchlichsten Ressourcen, um bereits trainierte Modelle zu finden, ist Keras. Es verfügt über ein Modul, in dem Sie verschiedene Arten von Bildklassifizierungsmodellen (VGG16, ResNet50, IncetopnV3...) finden können, die auf Standarddatensätzen trainiert wurden. ImageNet für diese Fälle. Der Arbeitsablauf ist dann einfach: Sie laden das Modell und wenden es direkt auf Ihre Bilder an, um die Merkmale zu extrahieren. So können Sie zum Beispiel direkt klassifizieren, welche Ihrer Bilder Uhren, Kopfhörer, Headsets usw. enthalten. Es gibt noch ein weiteres Beispiel, das spezifischer für den Anwendungsfall der Objekterkennung ist und vom Tensorflow-Team von Google entwickelt wurde. Sie haben eine Reihe von vortrainierten Modellen erstellt (eines davon basiert auf dem Coco-Datensatz), die direkt auf neuen Bildern zur Objekterkennung verwendet werden können (Github-Link hier). Diese Modelle können auch als Modelle verwendet werden, um sie auf Ihren eigenen data neu zu trainieren, womit wir uns auf Stufe 2 beschäftigen werden.
Stufe 2 - Ein Modell selbständig ausbilden data
Wenn Sie mit einem Datensatz arbeiten, der sich von dem ursprünglichen Datensatz, der zum Trainieren des Modells verwendet wurde, stark unterscheidet, kann dieser nicht einfach übernommen werden. Sie müssen dann einen eigenen Trainingsdatensatz erstellen und das Modell erneut darauf trainieren.
Die meisten Bilderkennungsprobleme erfordern den Einsatz von neuronalen Faltungsnetzen (Convolutional Neural Networks, CNN). Die ersten Schichten (Faltungsschichten) extrahieren Muster und Merkmale aus dem Bild. Diese Merkmale werden dann zur Vorhersage an die letzten Schichten (voll verknüpfte Schichten) weitergeleitet. Es gibt zwei Methoden, um ein Modell auf Ihre eigenen Daten zu trainieren data: Transfer-Lernen und Feinabstimmung.
Beim Transfer-Lernen werden die vortrainierten Faltungsschichten des ursprünglichen Modells verwendet und die voll verknüpften Schichten anhand der aus unserem Bildsatz extrahierten Merkmale trainiert. Die Idee dabei ist, das Wissen, das beim Training des Modells auf dem Originaldatensatz gewonnen wurde, für unser Problem zu nutzen. Diese Technik ist effizient, wenn die beiden Datensätze ähnlich sind, z. B. könnte ein Modell, das für die Erkennung von Autos trainiert wurde, auf die Erkennung von Lastwagen umtrainiert werden. Der Grund dafür ist, dass Autobilder und LKW-Bilder ähnlich sind und die von den Faltungsschichten aus diesen Bildern extrahierten Muster wahrscheinlich ähnlich sind. Die folgende Abbildung veranschaulicht den Prozess:
Wenn sich Ihr Datensatz stark vom Originaldatensatz unterscheidet, müssen Sie eine Feinabstimmung vornehmen. Im Gegensatz zum Transfer Learning wird hier das gesamte Netzwerk (oder zumindest die meisten Faltungsschichten) neu trainiert. So werden die Faltungsschichten auf Ihre Bilder trainiert und können Merkmale extrahieren, die vollständig an Ihre Bilder angepasst sind. Der Vorteil der Feinabstimmung besteht darin, dass das Modell vollständig auf den Datensatz trainiert wird und wahrscheinlich bessere Leistungen erbringt, aber es ist auch zeit- und rechenaufwändiger. Die folgende Abbildung veranschaulicht den Prozess:
Um einen Datensatz für die Objekterkennung zu erstellen, muss man viele Trainingsbilder sammeln, aber "Wie viele genau?", könnte man fragen. Manche sagen Hunderte, andere sagen Tausende oder sogar Hunderttausende, aber es gibt keine wirkliche Wahrheit. Es ist jedoch empfehlenswert, mehr als hundert Bilder für jede Klasse zu haben, die das Modell erkennen soll.
Sobald Sie Ihre Bilder gesammelt haben, müssen Sie sie beschriften. Der Beschriftungsprozess besteht darin, JSON-Dateien zu erstellen, die die Koordinaten und die Klasse des Objekts enthalten, das das Modell auf jedem Bild erkennen und wiedergeben soll. Dieser Teil wird in der Regel manuell durchgeführt, kann aber auch durch Code halbautomatisiert werden. Es wurden mehrere Open-Source-Tools entwickelt, um die manuelle Beschriftung zu beschleunigen, und eines davon ist das BBox-Label-Tool auf Github. Das Tool besteht aus einer Benutzeroberfläche, die alle Bilder lädt und es dem Benutzer ermöglicht, ein Bild mit 2 Klicks zu beschriften:
Der Benutzer muss nur auf die obere linke Ecke und die untere rechte Ecke des Objekts klicken, dann zeichnet das Werkzeug ein Rechteck um das Bild und speichert die Koordinaten in einer Datei. Dadurch wird die Beschriftungszeit (abgesehen vom Hinzufügen der Objektklasse) auf 3 Sekunden reduziert. Die endgültige JSON-Datei sollte nach dem Hinzufügen der Objektklasse wie folgt aussehen:
Der letzte Schritt ist die Konvertierung der Dateien in eine einzige Datei, die speziell für Tensorflow formatiert ist. Ein einfaches Tutorial wird hier gegeben.
Sobald Sie Ihren Datensatz erstellt haben, können Sie damit beginnen, Ihr Modell zu trainieren, aber zuerst müssen Sie ein vortrainiertes Modell finden! Jüngste Forschungen auf dem Gebiet des Deep Learning haben zur Entwicklung mehrerer Modelle auf der Grundlage neuronaler Netze für die Objekterkennung geführt. Eine bekannte Architektur ist das Faster R-CNN, das auf Region Proposal Networks (RPN) basiert. Faster R-CNN verfügt über zwei Netzwerke: ein RPN zur Erzeugung von Regionsvorschlägen und ein Netzwerk, das diese Vorschläge zur Erkennung von Objekten verwendet. Das Tensorflow-Team bei Google hat eine Reihe von Deep-Learning-Modellen entwickelt, die für data leicht nutzbar sind, und eines davon ist ein Objekterkennungsmodell, das auf Faster R-CNN basiert. Das Modell wird auf der Github-Seite von Tensorflow mit einem Tutorial bereitgestellt. Das Tutorial zeigt die Schritte, um das Modell neu zu trainieren (mit Transfer Learning) und es auf Google ML Engine einzusetzen.
Stufe 3 - Erstellen Sie Ihr eigenes Modell von Grund auf
Wenn Sie den Geist eines Forschers haben oder ein sehr spezifisches Problem der Computer Vision haben, können Sie Ihr eigenes Modell von Grund auf erstellen. In diesem Fall haben Sie drei Möglichkeiten:
- Erstellung eines Bildklassifizierungsmodells mit CNNs
Die einfachste Lösung für die Produkterkennung ist die Klassifizierung von Bildern mit Hilfe der Architektur eines neuronalen Faltungsnetzwerks (Convolutional Neural Network). Diese Modelle nehmen ein Bild als Eingabe und geben ein Label aus, das das Objekt angibt. Sie sollten daher nur verwendet werden, wenn Ihre Bilder nur ein Objekt enthalten, das Sie erkennen möchten. Die Verwendung eines Bildklassifizierungsmodells für die Objekterkennung ist jedoch aufgrund des Rauschens rund um das Objekt im Bild wahrscheinlich nicht sehr leistungsfähig. Bildklassifizierungsmodelle sind darauf ausgelegt, Merkmale aus dem gesamten Bild zu extrahieren und das Bild als Ganzes zu klassifizieren. Das Problem dabei ist, dass zwei verschiedene Bilder, z. B. ein Bild eines Zimmers und ein Bild einer Straße, die beide das gewünschte Objekt enthalten, die gleiche Bezeichnung haben können. Das macht die Klassifizierung schwierig. Hier finden Sie zwei Anleitungen, wie Sie CNNs von Grund auf aufbauen können.
- Erstellen eines Objekterkennungsmodells
Wie bereits erwähnt, sind Modelle für die Objekterkennung erst kürzlich durch die Forschung im Bereich des Deep Learning entstanden. Die Faster R-CNN-Architektur wurde Ende 2015 als eine Iteration der älteren Architektur Fast R-CNN eingeführt. Sie gibt aus:
a) eine Liste von Bounding Boxen
b) ein jedem Begrenzungsrahmen zugewiesenes Etikett
c) eine Wahrscheinlichkeit für jedes Label und jede Bounding Box
Zunächst wird ein vortrainiertes CNN auf das Bild angewendet und eine Merkmalskarte erstellt. Diese Merkmale werden dann an eine RPZ weitergegeben, um Kandidatenregionen (Bounding Boxes) zu finden, die relevante Objekte enthalten. Der letzte Schritt besteht darin, die vom CNN berechneten Merkmale und die Bounding Boxes zu verwenden, um den Inhalt der Bounding Boxes zu klassifizieren und ihre Koordinaten anzupassen (damit sie besser zum Objekt passen). Dies geschieht über das RCNN-Modul. Die folgende Abbildung veranschaulicht die Architektur:
Weitere Einzelheiten finden Sie in diesem Tutorium, und Open-Source-Arbeiten zu diesem Thema sind hier verfügbar.
- Erstellung eines hybriden Modells mit Objekterkennungsarchitekturen und CNNs
Wenn Sie Ihre Leistung steigern wollen, können Sie den hybriden Ansatz in Betracht ziehen. Es ist möglich, dass ein Objekterkennungsansatz zu einer schlechten Klassifizierung führt (das Objekt wird gut erkannt, aber das falsche Label wird vorhergesagt). In diesem Fall können Sie zunächst ein Objekterkennungsmodell mit nur einem Label (z. B. "Objekt") auf Ihrem Datensatz trainieren und dann Ihre Bilder auf der Grundlage der Koordinaten der Bounding Boxes beschneiden. Auf diese Weise wird ein Satz von Bildern erstellt, der nur das relevante Objekt enthält, das in den Originalbildern erkannt wurde. Diesen Satz können Sie dann als Trainingssatz für die CNN-Bildklassifizierung verwenden.
Erweiterung - Automatisiertes maschinelles Lernen
Heutzutage können wir die Entwicklung neuer Initiativen beobachten, die darauf abzielen, den Prozess der Erstellung und Anpassung eines eigenen Modells für jeden zugänglich zu machen, auch für Personen ohne technischen Hintergrund. Das Ziel besteht darin, dass Sie statt fertiger Modelle (wie Stufe 1) Ihr eigenes Modell trainieren können, ohne über das zugrunde liegende Wissen verfügen zu müssen.
Wie funktioniert das?
Die Lösung umfasst die Automatisierung der Erstellung des Bildklassifizierungsmodells oder des Objekterkennungsmodells. Sie müssen lediglich einen beschrifteten Datensatz mit Ihren Bildern bereitstellen und diese dann an die Lösung senden. Diese data werden eingelesen, um ein Bildverarbeitungsmodell darauf zu trainieren (als Level 2 oder Level 3). Es gibt ein trainiertes Modell aus, manchmal sogar eine API, mit der Sie die Beschriftungen vorhersagen und Objekte auf neuen Bildern lokalisieren können. Das Modell optimiert sich selbst, so dass Sie nicht wissen müssen, wie es zu implementieren und zu parametrisieren ist.
Was sind die Lösungen?
Zwei Hauptakteure sind in diesem Bereich tätig und haben Tools veröffentlicht, die sich derzeit noch in der Betaphase befinden.
- Erstens haben wir Google und seine Komponente Google Cloud AutoML aus seiner Cloud (Link hier). Cloud AutoML wurde nicht nur für Computer-Vision-Probleme entwickelt, sondern kann auch für alle Anwendungen des maschinellen Lernens sowie für die Verarbeitung natürlicher Sprache und Übersetzung nützlich sein.
- Zweitens haben wir die Open-Source-Initiative AutoKeras(Link hier). Sie basiert auf Keras und setzt auf die automatische Suche nach Architektur und Hyperparametern von Deep-Learning-Modellen.
Gemeinsam verfasster Artikel von Matthieu Montaigu und Kasra Mansouri, Data Wissenschaftler bei Artefact.
Sie möchten mehr über Absatzprognosen dank maßgeschneiderter Modelle zur Produkterkennung erfahren? Unsere Experten stehen Ihnen gerne zur Verfügung, um alle Ihre Fragen zu beantworten!

BLOG









