NACHRICHTEN / DATENWISSENSCHAFT

Stellen Sie sich vor, Sie sind der Direktor eines neuen High-Tech-Start-ups, das ein brandneues Produkt (sagen wir ein neues IoT-Gerät) auf den Markt bringen möchte. Sie haben an vielen Konferenzen, Ausstellungen und Demos teilgenommen, um im Vorfeld über Ihr Produkt zu informieren und den Bekanntheitsgrad zu steigern. Sie erwarten, dass die Verkaufszahlen Ihres Produkts nach der Markteinführung hoch genug sein werden, um Ihre Ziele zu erreichen.

Stellen Sie sich vor, Sie sind der Direktor eines neuen High-Tech-Start-ups, das ein brandneues Produkt (sagen wir ein neues IoT-Gerät) auf den Markt bringen möchte. Sie haben an vielen Konferenzen, Ausstellungen und Demos teilgenommen, um im Vorfeld über Ihr Produkt zu informieren und den Bekanntheitsgrad zu steigern. Sie erwarten, dass die Verkaufszahlen Ihres Produkts nach der Markteinführung hoch genug sein werden, um Ihre Ziele zu erreichen.

Hier gibt es ein Problem: Sie haben keine Möglichkeit, die Nachfrage nach Ihrem Produkt vorherzusehen und abzuschätzen.

Eine einfache Tatsache, die Sie überprüfen könnten, ist, wie viel im Internet über Ihr Produkt 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 viel Umsatz Sie erwarten können.

Sie haben zwei Möglichkeiten, ein Produkt in einem sozialen Posting 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 der Veröffentlichung 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 Folgendes durchführen Objekt-Erkennung und genau hier kommt Tensorflow ins Spiel.

Was ist Tensorflow?

Tensorflow ist ein Open-Source mathematische Bibliothek, die stabile Python- und C-APIs bereitstellt und für verschiedene data-Manipulationsaufgaben verwendet wird. Sie ist sehr bekannt und wird für Machine Learning und Deep Learning-Anwendungen wie neuronale Netze verwendet. Die Anwendungsfälle, für die Tensorflow am bekanntesten ist, sind Bilderkennung, Verarbeitung natürlicher Sprache und Analyse von Sprache in Text.

Unser spezieller Anwendungsfall ist Objekt-Erkennung. Sie können Tensorflow auf verschiedenen Ebenen verwenden:

  • Stufe 1: Verwenden Sie ein vorgefertigtes Modell von der Stange und wenden Sie es direkt auf Ihr 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. Diese Stufe erfordert das Trainieren eines Modells auf data, die Sie zuvor beschriftet haben. Dies nimmt mehr Zeit in Anspruch, liefert aber relevantere Ergebnisse, da das Modell die genauen Produktreferenzen erkennt.
  • Stufe 3: Erstellen Sie Ihr eigenes Modell von Grund auf. In dieser Stufe trainieren Sie nicht nur ein Modell, sondern Sie bauen es von Anfang an auf. Dabei kann es sich sowohl um die Anpassung von Parametern eines bestehenden Modells als auch um die Entwicklung einer neuen neuronalen Netzwerkarchitektur handeln. Dieser Ansatz ist eher für Forschungszwecke geeignet, da er sehr zeitaufwändig ist.

Im Folgenden beschreiben wir jede Ebene der Nutzung von Tensorflow im Detail.

Stufe 1 - Verwenden Sie ein vortrainiertes Modell

Die erste grundlegende Verwendung ist die Verwendung eines Modells, das bereits auf einem beschrifteten data-Set trainiert wurde. Diese Option sollte immer dann gewählt werden, wenn die data, auf die Sie das Modell anwenden möchten, der Trainings-data sehr ähnlich ist. Zum Beispiel, wenn Sie generische Objekte wie Schuhe, Smartphones, Taschen usw. erkennen wollen. Dieser Ansatz ist daher nicht geeignet, wenn Sie erwarten, eine Marke und ein bestimmtes Modell aus Ihrer Produktpalette zu erkennen.

Normalerweise werden solche Modelle auf Standard-data-Sets trainiert, wie dem Coco dataset (Github-Link hier) oder ImageNet dataset (Link hier). Diese data-Sets bestehen aus riesigen Sammlungen von Bildern, die bereits beschriftet und für das Modelltraining einsatzbereit sind. Sie werden häufig zum Trainieren von Bildklassifizierungs- und Objekterkennungsmodellen verwendet, die als vortrainierte Modelle für die allgemeine Produkterkennung genutzt werden können.

Da wir nun mehr über das data wissen, lassen Sie uns einen kurzen Überblick über das vortrainierte Modell geben, das Sie verwenden können. Eine der gebräuchlichsten Quellen, um vortrainierte 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 Standard-data-Sets trainiert wurden. ImageNet für diese Fälle. Der Arbeitsablauf ist dann ganz 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 auf den Anwendungsfall der Objekterkennung zugeschnitten ist und vom Tensorflow-Team von Google entwickelt wurde. Sie haben eine Reihe von vortrainierten Modellen erstellt (eines davon basiert auf dem Coco dataset), die direkt auf neuen Bildern zur Objekterkennung verwendet werden können (Github-Link hier). Diese Modelle können Sie auch als Vorlage für Ihr eigenes data verwenden, mit dem wir uns in Stufe 2 beschäftigen werden.

Stufe 2 - Trainieren Sie selbst ein Modell data

Wenn Sie mit einem dataset arbeiten, das sich von dem ursprünglichen dataset unterscheidet, das für das Training des Modells verwendet wurde, wird es nicht funktionieren, dieses einfach anzuwenden. Sie müssen Ihr eigenes dataset für das Training erstellen und das Modell damit neu trainieren.

Die meisten Probleme der Bilderkennung erfordern den Einsatz von Convolutional Neural Networks (CNN). Die ersten Schichten (Faltungsschichten) extrahieren Muster und Merkmale aus dem Bild. Diese Merkmale werden dann an die letzten Schichten (voll verknüpfte Schichten) zur Vorhersage weitergegeben. Es gibt zwei Methoden, um ein Modell auf Ihrem eigenen data zu trainieren: Lernen übertragen und Feinabstimmung.

Lernen übertragen besteht darin, die vortrainierten Faltungsschichten des ursprünglichen Modells zu verwenden und die voll verknüpften Schichten mit den Merkmalen zu trainieren, die aus unserem Bildsatz extrahiert wurden. Die Idee dabei ist, das Wissen, das beim Training des Modells auf dem ursprünglichen dataset gewonnen wurde, für unser Problem zu nutzen. Diese Technik ist effizient, wenn die beiden data-Sets ähnlich sind. Ein Modell, das für die Erkennung von Autos trainiert wurde, könnte zum Beispiel auf die Erkennung von Lastwagen umtrainiert werden. Der Grund dafür ist, dass die Bilder von Autos den Bildern von Lastwagen ähnlich sind und die von den Faltungsschichten aus diesen Bildern extrahierten Muster wahrscheinlich ähnlich sind. Die Abbildung unten veranschaulicht den Prozess:

Wenn sich Ihr dataset stark vom Original dataset unterscheidet, müssen Sie Folgendes tun Feinabstimmung. 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 das dataset trainiert wird und wahrscheinlich eine bessere Leistung erzielt, aber es ist auch zeitaufwändiger und rechenintensiver. Die folgende Abbildung veranschaulicht den Prozess:

Um ein dataset für die Objekterkennung zu erstellen, müssen Sie eine Menge Trainingsbilder sammeln, aber "Wie viele genau?", könnte man fragen. Einige 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 Ihr Modell erkennen soll.

Sobald Sie Ihre Bilder gesammelt haben, müssen Sie sie beschriften. Der Beschriftungsprozess besteht aus der Erstellung von JSON-Dateien, die die Koordinaten und die Klasse des Objekts enthalten, das das Modell auf jedem Bild erkennen und wiedererkennen soll. Dieser Teil wird in der Regel manuell durchgeführt, kann aber durch Code halbautomatisiert werden. Es wurden mehrere Open-Source-Tools entwickelt, um die manuelle Beschriftung zu beschleunigen, und eines davon ist das BBox-Etiketten-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 Tool 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 besteht darin, die Dateien in eine einzige Datei zu konvertieren, die speziell für Tensorflow formatiert ist. Hier finden Sie eine einfache Anleitung Hier.

Sobald Sie Ihr dataset 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 besteht aus zwei Netzwerken: einem RPN zur Erzeugung von Regionsvorschlägen und einem 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-Wissenschaftler leicht nutzbar sind, und eines davon ist ein Objekterkennungsmodell, das auf Faster R-CNN basiert. Das Modell wird auf der Tensorflow-Website zur Verfügung gestellt. Github Seite mit einer Anleitung. Die Lernprogramm zeigt die Schritte zum erneuten Trainieren des Modells (mit Transfer Learning) und dessen Bereitstellung auf Google ML Engine.

Level 3 - Erstellen Sie Ihr eigenes Modell von Grund auf

Wenn Sie die Seele eines Forschers haben oder ein sehr spezifisches Computer Vision Problem haben, können Sie Ihr eigenes Modell von Grund auf erstellen. In diesem Fall haben Sie drei Möglichkeiten:

  • Erstellen Sie ein Modell zur Bildklassifizierung mit CNNs

Die einfachste Lösung für die Produkterkennung ist die Klassifizierung von Bildern mit der Architektur des Convolutional Neural Network. Diese Modelle nehmen ein Bild als Eingabe und geben ein Etikett 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 sind zwei Tutorials wie Sie CNNs von Grund auf neu aufbauen können.

  • Erstellen Sie ein Objekterkennungsmodell

Wie bereits erwähnt, sind die Modelle zur Objekterkennung erst kürzlich durch die Forschung im Bereich 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 ein 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 Abbildung unten veranschaulicht die Architektur:

Weitere Einzelheiten finden Sie in diesem Lernprogramm, und Open-Source-Arbeiten zu diesem Thema sind verfügbar Hier.

  • Erstellen Sie ein hybrides Modell mit Objekterkennungsarchitekturen und CNNs

Wenn Sie Ihre Leistung steigern möchten, 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 die falsche Bezeichnung wird vorhergesagt). In diesem Fall können Sie zunächst ein Objekterkennungsmodell auf Ihrem dataset mit nur einem Label (z.B. "Objekt") trainieren und dann Ihre Bilder auf der Grundlage der Koordinaten der Bounding Boxes zuschneiden. Auf diese Weise wird ein Satz von Bildern erstellt, der nur das relevante Objekt enthält, das in den Originalbildern erkannt wurde. Dieses Set können Sie dann als Trainingsset 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 Ihres eigenen Modells für jeden zugänglich zu machen, auch für Personen ohne technischen Hintergrund. Das Ziel ist, dass Sie statt fertiger Modelle (wie Level 1) Ihr eigenes Modell trainieren können, ohne dass Sie über das zugrundeliegende Wissen verfügen müssen.

Wie funktioniert das?

Die Lösung automatisiert die Erstellung des Bildklassifizierungsmodells oder des Objekterkennungsmodells. Sie müssen lediglich ein beschriftetes data-Set mit Ihren Bildern bereitstellen und diese dann an die Lösung senden. Diese data wird eingelesen, um ein Computer Vision Modell 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 tauchen in diesem Bereich auf und haben Tools veröffentlicht, die sich derzeit noch im Beta-Stadium befinden.

  • Erstens haben wir Google und seine Google Cloud AutoML-Komponente aus seiner Cloud-Plattform-Suite (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 die Übersetzung verwendet werden.
  • Zweitens haben wir die Open-Source-Initiative AutoKeras (Link hier). Es basiert auf Keras und stützt sich auf die automatische Suche nach der Architektur und den 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!