5 Schritte zum Entwickeln und Bereitstellen neuronaler Netze für Deep Learning
Mit Deep Learning können Sie die Machine Vision-Implementierung vereinfachen und beschleunigen.
Einführung
Das Sprichwort „Ein Bild sagt mehr als tausend Worte“ trifft in Bezug auf Machine Vision heute mehr zu als je zuvor. Mit Deep Learning können Tausende und sogar Millionen Codezeilen durch ein einfaches neuronales Netz ersetzt werden, das mit Bildern und sehr geringem Programmieraufwand trainiert wird.
Das Gute daran ist, dass Deep Learning nicht mehr nur für Forscher oder Personen mit ganz speziellen Fachkenntnissen und/oder großen Budgets verfügbar ist. Heutzutage können Sie auf viele kostenlose Tools, leicht zugängliche Tutorials, günstige Hardware und sogar kostenlose Trainingsdaten zugreifen. Dadurch entstehen sowohl Chancen als auch Bedrohungen – während neue Marktteilnehmer renommierte Namen verdrängen und Innovationen ankurbeln. Außerdem können Ihre Machine Vision-Systeme jetzt zuvor undenkbare Aufgaben ausführen. So können Sie mit Deep Learning beispielsweise unerwartete Anomalien erkennen, die normalerweise mit traditioneller Codierung nur sehr schwer oder überhaupt nicht erkennbar sind.
Ein weiterer wichtiger Vorteil von neuronalen Netzen für Deep Learning besteht darin, dass damit komplexe Entscheidungen an der Edge getroffen werden können, mit minimaler Hardware und sehr geringer Rechenleistung. Kostengünstige ARM- oder FPGA-basierte Systeme und neue Inferenzkameras wie die FLIR Firefly DL machen das möglich.
In diesem Artikel wird Folgendes vorgestellt:
- Grundlegendes Glossar mit Deep Learning-Begriffen
- Typen von Machine Vision-Aufgaben, für die sich Deep Learning am besten eignet
- Die 5 Schritte zum Entwickeln und Bereitstellen eines neuronalen Netzes für Inferenz an der Edge
- Verfügbare Tools und Frameworks für den Einstieg
- Tipps für einen einfacheren Prozess
- Potenzielle Nachteile von Deep Learning
Was ist Deep Learning: Die Grundlagen
Deep Learning ist ein Teilgebiet des maschinellen Lernens, das von der Funktionsweise des menschlichen Gehirns inspiriert ist. Deep Learning hat diesen Namen, weil dabei mehrere „Schichten“ von Neuronen mit verschiedenen Gewichtungen die Entscheidungsfindung eines neuronalen Netzes unterstützen. Deep Learning lässt sich in zwei Phasen einteilen: Training und Inferenz.
Während der Trainingsphase definieren Sie die Anzahl der Neuronen und Schichten für Ihr neuronales Netz und führen dem Netz gekennzeichnete Trainingsdaten zu. Anhand dieser Daten lernt das neuronale Netz selbstständig, was „gut“ und was „schlecht“ ist. Wenn Sie beispielsweise Obst einstufen, zeigen Sie dem neuronalen Netz Bilder von Obst mit der Kennzeichnung „Güteklasse A“, „Güteklasse B“, „Güteklasse C“ usw. Das neuronale Netz ermittelt dann die Merkmale jeder Güteklasse, wie Größe, Form, Farbe, Farbkonsistenz usw. Sie müssen diese Merkmale nicht manuell definieren und noch nicht einmal programmieren, was zu groß oder zu klein ist – das neuronale Netz trainiert sich selbst. Nach Abschluss der Trainingsphase erhalten Sie ein trainiertes neuronales Netz.
Der Prozess zum Auswerten neuer Bilder anhand eines neuronalen Netzes zur Entscheidungsfindung wird als Inferenz bezeichnet. Wenn Sie dem trainierten neuronalen Netz ein neues Bild vorlegen, gibt es eine Inferenz (also eine Antwort) aus, wie „Güteklasse A mit 95 % Zuverlässigkeit“.
5 Schritte zum Entwickeln einer Deep Learning-Anwendung
Die Entwicklung einer Deep Learning-Anwendung umfasst grob gesagt 5 Schritte. Im Folgenden werden die einzelnen Schritte beschrieben:
Schritt 1: Identifizieren Sie die jeweilige Deep Learning-Funktion
Beim Deep Learning werden Aufgaben in mehrere Funktionen eingeteilt. Die Folgenden werden für Machine Vision-Zwecke am häufigsten eingesetzt:
Klassifizierung
Die erste und grundlegendste Anwendung des Deep Learnings ist die Klassifizierung. Bei diesem Prozess werden Bilder in verschiedene Klassen eingeteilt und basierend auf gemeinsamen Eigenschaften gruppiert. Sie können mit der Klassifizierung beispielsweise einen fehlerhaften Teil von einem einwandfreien Teil in einer Fertigungslinie für die Qualitätskontrolle oder bei Inspektionen von Leiterplatten-Lötstellen unterscheiden, wie in Abbildung 1 unten dargestellt (mit einer FLIR Firefly DL-Inferenzkamera).
Abb.1. Klassifizierung zur Identifizierung fehlerhafter Lötstellen mit einer FLIR Firefly DL.
Erkennung und Ortung
Eine weitere Deep Learning-Aufgabe, die sich ideal für Machine Vision eignet, ist die Erkennung und Ortung. Mit dieser Funktion können Sie Merkmale in einem Bild identifizieren und Koordinaten für einen Begrenzungsrahmen angeben, um Position und Größe zu ermitteln. Sie können damit beispielsweise erkennen, wenn eine Person einen Sicherheitsparameter um Roboter herum in einer Fertigungslinie verletzt, oder einen einzelnen fehlerhaften Teil im Fördersystem einer Fertigungslinie identifizieren.
Segmentierung
Der dritte Deep Learning-Typ ist die Segmentierung. Damit identifizieren Sie in der Regel, welche Pixel in einem Bild zu welchen Gegenständen gehören. Die Segmentierung eignet sich ideal für Anwendungen, bei denen Sie den Kontext eines Gegenstands und dessen Beziehung zu anderen bestimmen müssen (z. B. für autonome Fahrzeuge/Erweiterte Fahrerassistenzsysteme (auch als Advanced Driver Assistance Systems (ADAS) bezeichnet).
Abb. 2 Erkennung, Ortung und Segmentierung zur Identifizierung von Gegenständen und deren Positionen.
Anomalieerkennung
Mit dieser Deep Learning-Aufgabe können Sie Regionen ermitteln, die nicht einem Muster entsprechen. Ein typisches Beispiel für eine Anwendung, bei der sich die Anomalieerkennung anbietet, wäre Bestandskontrolle und -verwaltung bei Lebensmittelläden, wie in Abbildung 4 dargestellt. Bei dieser Anwendung werden mit einer Inferenzkamera leere oder fast leere Regale erkannt und hervorgehoben. Dabei erhalten Sie Echtzeitbenachrichtigungen und können die Effizienz verbessern.
Schritt 2: Wählen Sie Ihr Framework aus
Nachdem Sie die gewünschte Deep Learning-Funktion bestimmt haben, benötigen Sie das für Ihre Anforderungen geeignete Toolset (Entwickler nennen dies ein „Framework“). Diese Frameworks bieten eine Auswahl an neuronalen Starternetzen sowie Tools zum Trainieren und Testen des Netzes.
Einige der weltweit größten Technologieunternehmen konkurrieren um führende Positionen auf dem Deep Learning-Markt. Dabei zeigen Frameworks wie TensorFlow von Google, Caffe2 von Facebook und OpenVino von Intel (allesamt kostenlos), wie viele Investitionen und Ressourcen in den Deep Learning-Markt einfließen. Am anderen Ende des Spektrums gibt es auch Pytorch, eine Open-Source-Lösung, die jetzt zu Facebook gehört. Diese Tools sind allesamt benutzerfreundlich und umfassen eine hervorragende Dokumentation (einschließlich Beispiele), sodass selbst Neueinsteiger ein neuronales Netz mit minimalem Aufwand trainieren und bereitstellen können.
Die genaue Erläuterung aller verfügbaren Frameworks würde den Rahmen dieses Artikels sprengen. Im Folgenden werden aber die wichtigen Vor- und Nachteile für drei der beliebtesten Frameworks vorgestellt:
Pytorch
- Einfach und benutzerfreundlich.
- Wird in vielen Forschungsprojekten verwendet.
- Wird in der Regel nicht für große Bereitstellungen genutzt.
- Wird vollständig nur für Python unterstützt.
TensorFlow
- Größere Benutzerzahl mit guter Dokumentation.
- Anspruchsvollere Lernkurve im Vergleich mit Pytorch.
- Bietet skalierbare Produktionsbereitstellung und unterstützt mobile Bereitstellung.
Caffe2
- Einfach, für effiziente Bereitstellung.
- Eines der ältesten Frameworks (weitgehend unterstützte Bibliotheken für CNNs und Computer Vision).
- Eignet sich am besten für Mobilgeräte mit OpenCV.
Für welches neuronale Netz Sie sich entscheiden, hängt letztendlich von der Komplexität der Aufgabe und der erforderlichen Geschwindigkeit der Inferenz ab. Wenn Sie z. B. ein neuronales Netz mit mehr Schichten und Neuronen wählen, wird die Inferenz langsamer. In trainiertes neuronales Netz erfordert in der Regel sehr wenig Rechenleistung und kann Ergebnisse innerhalb von Millisekunden liefern. So können Sie komplexe Deep Learning-Inferenzen mit stromsparenden ARM-Platinen an der Edge ausführen oder Inferenz an der Edge mit speziell hergestellten Inferenzkameras wie der FLIR Firefly DL erreichen.
Darüber hinaus können selbst Unternehmen ohne eigene Ressourcen oder Mitarbeiter zum Implementieren einer Deep Learning-Lösung externe Berater heranziehen. Diese können verschiedene Beteiligte durch den gesamten Entwicklungszyklus führen – von Konzept bis zur Bereitstellung. Ein solches Beispiel ist Enigma Pattern (https://www.enigmapattern.com).
Mehr ähnliche Artikel abonnieren
Schritt 3: Bereiten Sie Trainingsdaten für das neuronale Netz vor
Je nach Typ der zu bewertenden Daten benötigen Sie ein Repository von Bildern mit vielen Merkmalen, die Sie bei der Bewertung heranziehen möchten. Diese Bilder müssen zudem entsprechend gekennzeichnet sein. Wenn Ihr neuronales Netz beispielsweise eine gute Lötstelle von einer schlechten unterscheiden soll, benötigt es Hunderte Variationen einer guten Lötstelle und einen ähnlichen Satz für schlechte Lötstellen mit den jeweiligen Bezeichnungen.
Es gibt verschiedene Möglichkeiten, einen Datensatz mit Bildern zu erhalten:
- Für häufige Anwendungsfälle ist unter Umständen ein bereits gekennzeichneter Datensatz für Ihre Anforderungen online zum Kauf erhältlich (oder oft sogar kostenlos).
- Synthetische Daten können für mehrere Anwendungen eine effiziente Option sein, vor allem, da hierbei keine Kennzeichnung erforderlich ist. Unternehmen wie Cvedia, gestützt von FLIR (https://www.cvedia.com), setzen Simulationstechnologie und fortschrittliche Computer Vision-Theorie ein, um detailgetreue synthetische Trainingssatzpakete zu erstellen. Diese Datensätze sind für Algorithmustraining annotiert und optimiert.
- Wenn die ersten beiden Optionen nicht verfügbar sind, müssen Sie Ihre eigenen Bilder individuell kennzeichnen. Dieser Prozess wird durch mehrere auf dem Markt erhältliche Tools erleichtert (weiter unten werden einige Tools und Verfahren zum Beschleunigen der Entwicklung kurz vorgestellt).
Nützliche Tipps:
Einige Entwickler, die ihren eigenen Deep Learning-Code entwickeln, bieten ihre Lösung kostenlos als Open-Source-Code an. Ein derartiges Tool, das besonders nützlich ist, wenn Ihr Datensatz noch nicht gekennzeichnet ist, hat den Namen LabelImg. Mit diesem grafischen Bildannotationstool können Sie Objekte in Begrenzungsrahmen in Bildern kennzeichnen (https://github.com/tzutalin/labelImg). Alternativ können Sie den ganzen Prozess auch an einen Drittanbieter auslagern.
Eine weitere Möglichkeit, die Datenvorbereitungsphase zu kürzen, besteht darin, ein Bild in viele verschiedene Bilder zu erweitern, indem Sie Bildverarbeitung daran vornehmen (drehen, Größe ändern, dehnen, heller/dunkler usw). Dadurch würden Sie auch Entwicklungszeit sparen, da die Erfassung von Trainingsdaten und die Kennzeichnung der Bilder an einen Benutzer ohne Vorkenntnisse vergeben werden können.
Wenn darüber hinaus bestimmte Hardwareeinschränkungen oder -vorlieben bestehen, wird das noch wichtiger, da die im nächsten Abschnitt vorgestellten Deep Learning-Tools nur begrenzte Hardware unterstützen und oft nicht beliebig austauschbar sind.
Schritt 4: Trainieren und validieren Sie das neuronale Netz, um seine Genauigkeit sicherzustellen
Nach der Vorbereitung der Daten müssen Sie das neuronale Netz trainieren und testen und seine Genauigkeit prüfen. In dieser Phase müssen Sie die Skripte auf Ihrem Computer konfigurieren und ausführen, bis der Trainingsprozess eine akzeptable Genauigkeit für Ihren Anwendungsfall liefert. Als Best Practice wird empfohlen, Daten weiter separat zu trainieren und zu testen, damit die Testdaten für die Auswertung nicht auch beim Trainieren verwendet werden.
Dieser Prozess kann durch Transferlernen beschleunigt werden. Dabei wird ein bereits trainiertes Netz für eine andere Aufgabe eingesetzt. Da viele Schichten in einem tiefen neuronalen Netz zur Extraktion von Eigenschaften genutzt werden, müssen diese nicht umtrainiert werden, um neue Objekte zu klassifizieren. Daher können Sie Verfahren des Transferlernens als Ausgangspunkt auf bereits trainierte Netze anwenden und nur wenige Schichten anstelle des ganzen Netzes umtrainieren. Gängige Frameworks wie Caffe2 und TensorFlow bieten diese kostenlos an.
Außerdem ist das Hinzufügen neuer zu erkennender Eigenschaften zu einem bereits trainierten neuronalen Netz genauso einfach wie das Hinzufügen weiterer Bilder zum Bildsatz und Anwenden von Transferlernen, um das Netz neu zu trainieren. Das ist wesentlich einfacher und schneller als logikbasierte Programmierung, bei der Sie dem Code neue Logik hinzufügen und diesen dann neu kompilieren und ausführen müssen und gleichzeitig sicherstellen müssen, dass der neu hinzugefügte Code keine Fehler verursacht.
Wenn Sie keine Programmierkenntnisse zum Trainieren Ihres eigenen neuronalen Netzes aufweisen, können Sie mehrere GUI-basierte Softwareprogramme (Programme mit grafischer Benutzeroberfläche) mit verschiedenen Frameworks verwenden. Diese Tools sorgen für einen äußerst intuitiven Trainings- und Bereitstellungsprozess, selbst für unerfahrene Benutzer. Matrox MIL ist ein solches Beispiel aus dem Bereich Machine Vision.
Schritt 5: Stellen Sie das neuronale Netz bereit und führen Sie Inferenz mit neuen Daten aus
Der letzte Schritt umfasst die Bereitstellung Ihres trainierten neuronalen Netzes auf der gewählten Hardware, um die Leistung zu testen und Daten im Feld zu erfassen. Die ersten Phasen der Inferenz sollten nach Möglichkeit in der Praxis ausgeführt werden, um zusätzliche Testdaten zu erfassen, die dann wiederum als Trainingsdaten für zukünftige Iterationen herangezogen werden können.
Der folgende Abschnitt enthält eine kurze Übersicht über die typischen Bereitstellungsmethoden mit den jeweiligen Vor- und Nachteilen:
Cloud-Bereitstellung
- Wesentliche geringere Hardwarekosten
- Schnelle Skalierung möglich
- Änderungen können an mehreren Orten bereitgestellt und propagiert werden
- Bedarf an Internetverbindung ist ein wesentlicher Nachteil
- Höhere Latenz im Vergleich zu Edge-Bereitstellung (wegen der Menge der Datenübertragungen zwischen lokaler Hardware und Cloud)
- Geringere Zuverlässigkeit (Verbindungsprobleme können zu schwerwiegenden Fehlern führen)
Edge (Standard-PC)
- Ideal für leistungsstarke Anwendungen
- Besonders anpassbar (mit für die Anwendung relevanten Teilen hergestellt)
- Flexible Preisgestaltung (da Komponenten basierend auf der Anwendung ausgewählt werden können)
- Höhere Kosten
- In der Regel wesentlich größerer Fußabdruck
Edge (ARM, FPGA und Inferenzkameras wie FLIR Firefly DL)
- Weniger Stromverbrauch
- Erhebliche Einsparungen bei Peripheriehardware
- Hohe Zuverlässigkeit
- Ideal für Anwendungen, die mehrere Kameras in einem System erfordern (Rechenlast kann an mehrere Kameras ausgelagert werden)
- Sicher (da Hardware von anderen Interferenzen isoliert werden kann)
- Ideal für Anwendungen, die eine kompakte Größe erfordern
- Nicht für rechenintensive Aufgaben geeignet
- VPU-basierte Lösung hat ein höheres Leistungs/Strom-Verhältnis als FPGA-Lösungen
- FPGA-Lösung bietet bessere Leistung als VPU-basierte Lösungen
Abbildung: Beispiel für eine DL-Inferenzkamera – FLIR Firefly DL
Potenzielle Nachteile von Deep Learning
Nachdem wir den Entwicklungs- und Bereitstellungsprozess kurz vorgestellt haben, sollten wir uns jetzt auch einige Nachteile ansehen.
- Deep Learning ist größtenteils eine Black Box, und es lässt sich nur sehr schwer veranschaulichen/nachvollziehen, wie das neuronale Netz zu seiner Entscheidung kommt. Auch wenn das für einige Anwendungen nicht von Bedeutung ist, müssen Unternehmen in den Bereichen Medizin, Gesundheitswesen und Bio-Wissenschaften strenge Dokumentationsanforderungen erfüllen, damit ihre Produkte von der FDA oder ähnlichen Behörden in anderen Regionen zugelassen werden. In den meisten Fällen müssen Sie genau wissen, wie Ihre Software funktioniert und alle Vorgänge im Detail dokumentieren.
- Ein anderes Problem bei der Deep Learning-Bereitstellung besteht darin, dass neuronale Netze nur sehr schwer auf vorhersagbare Weise optimiert werden können. Viele neuronale Netze, die derzeit trainiert und genutzt werden, setzen Transferlernen ein, um vorhandene Netze neu zu trainieren, während kaum Netze optimiert werden.
- Selbst geringfügige Fehler bei der Kennzeichnung von Trainingsdaten, die aufgrund menschlicher Fehler sehr häufig vorkommen, können die Genauigkeit des neuronalen Netzes beeinträchtigen. Darüber hinaus ist das Debuggen des Problems sehr mühselig, da Sie dazu möglicherweise alle Trainingsdaten einzeln prüfen müssen, um die falsche Kennzeichnung zu finden.
Dazu kommt noch, dass viele Anwendungen sich grundlegend besser für logikbasierte Lösungen eignen. Wenn Ihr Problem z. B. genau definiert, deterministisch und vorhersagbar ist, könnten Sie mit logikbasierten Lösungen bessere Ergebnisse als bei Deep Learning erreichen. Typische Beispiele dafür sind Barcode-Scannen, Teilausrichtung, präzise Messungen usw.
Fazit
Trotz der oben genannten Nachteile überwiegt der potenzielle Nutzen von Deep Learning (u. a. schnelle Entwicklung, Lösen komplexer Probleme, Benutzerfreundlichkeit und einfache Bereitstellung) bei weitem das Negative. Darüber hinaus werden im Bereich Deep Learning konstant Verbesserungen erzielt, um diese Nachteile zu beseitigen. Anhand von Aktivierungsfunktionen können Sie beispielsweise visuell prüfen, welche Pixel im Bild bei der Entscheidung eines neuronalen Netzes berücksichtigt werden. So können Sie die Entscheidungsfindung des Netzes besser nachvollziehen. Außerdem entwickeln viele Unternehmen mittlerweile ihre eigenen neuronalen Netze, anstatt sich auf Transferlernen zu verlassen. Dabei wird die Leistung verbessert und die Lösung an spezielle Probleme angepasst. Selbst bei Anwendungen, die sich für logikbasierte Programmierung eignen, kann Deep Learning zur zugrunde liegenden Logik beitragen, um die Gesamtgenauigkeit des Systems zu verbessern. Zusammenfassend lässt sich sagen, dass es einfacher und kostengünstiger als je zuvor ist, eigene Deep Learning-Systeme zu entwickeln: Klicken Sie hier, um zu erfahren, wie Sie für weniger als 600 US-Dollar ein DL-Klassifizierungssystem erstellen.
Mehr zu Machine Vision ansehen
Wir helfen Ihnen gerne weiter!
Sprechen Sie noch heute mit einem unserer Kamera-Experten.