Vom Vision-Entwickler zum Deep-Learning-Einsteiger – Teil 1/2

AI for Beginners

Vom Vision-Entwickler zum Deep-Learning-Einsteiger – Teil 1/2

Für Deep Learning gibt es eine große Auswahl an Frameworks, Netzwerken und Tools. Für Anwender, die bisher mit OpenCV gearbeitet haben und jetzt mit Deep Learning beginnen wollen, hat der folgende Beitrag einige Einstiegstipps.

(Bild: ©monsitj/Adobe.stock.com)

Probleme mit großer Varianz oder Subjektivität lassen sich nur schwer mit herkömmlichen regelbasierten Bildverarbeitungsmethoden lösen. Ein scheinbar einfaches Problem, wie die Bewertung von Produkten, beruht auf einem komplexen Zusammenspiel von subjektiven und schwankenden Kriterien wie Größe, Form, Farbe und Einheitlichkeit. Deep Learning ermöglicht es, eine hochpräzise Lösung in kürzester Zeit zu entwickeln, indem ein neuronales Netzwerk mit Beispielen für die einzelnen Klassen trainiert wird. Es ist schwierig, die Vollständigkeit des Inhalts einer Verpackung zu überprüfen, wenn Form, Farbe oder Kontur der einzelnen Inhalte bei jeder Verpackung variieren. So können beispielsweise gleiche Kabel auf verschiedene Arten aufgewickelt sein und deshalb unterschiedlich aussehen. Ein neuronales Netzwerk kann so trainiert werden, dass es Gegenstände mit variierender Gestalt selbst in komplexen und subjektiven Situationen zuverlässig erkennt. So verlockend Deep Learning auch sein mag: Es ist nicht der beste Lösungsansatz für alle Probleme. Aufgaben wie die Messung von zerspanten Teilen oder die Überprüfung des Füllstands von Flaschen mittels 2D werden oft zuverlässig mit herkömmlicher Vision-Software und entsprechenden Methoden bewerkstelligt.

Auswahl des ersten Projekts

Probieren Sie Deep Learning einfach aus und überlegen Sie, wie Sie es für ein reales Projekt nutzen könnten. Legen Sie den Fokus auf ein spezifisches und messbares Endziel, allerdings sollte man am Anfang des Projekts keine zu komplexe Zielvorstellungen haben. Seien Sie nicht zu ambitioniert und versuchen Sie nicht, ein Modell von Grund auf neu zu entwickeln, insbesondere wenn Sie nur über wenige Daten verfügen. Beginnen Sie mit einem bewährten und verallgemeinerbaren Modell und versuchen Sie, es auf Ihr Problem anzuwenden. Entwickeln Sie zunächst eine praxisnahe und funktionierende Lösung, danach können Sie komplexere Anwendungen aufnehmen und die Lösung für die Bereitstellung optimieren.

Klassifizierung mit Transferlernen

Der Startpunkt für Deep Learning ist eine Klassifizierung von Bildern anhand ihres Inhalts. Klassifizierung ist die Grundlage für vielfältige Aufgaben, z.B. Bewertung von Gegenständen, subjektive Qualitätsprüfung, Überprüfung des Vorhandenseins/Fehlens von Materialien in einer Verpackung, Wachzustand eines Fahrers oder Schätzung des Alters. Es ist mit Sicherheit ein interessantes Vorhaben, ein Netzwerk von Grund auf neu zu entwickeln, aber dadurch nimmt auch der Aufwand eines Projekts deutlich zu. Wenn Sie ein Problem mit einer bewährten Deep-Learning-Lösung angehen möchten, ist Transferlernen eine deutlich einfachere Lösung, um verfügbare Netzwerke zu nutzen. Dabei werden nur bestimmte Bereiche eines zuvor trainierten Netzwerks neu trainiert, um es an andere Aufgaben anzupassen. Somit muss das Netzwerk nicht von Grund auf neu trainiert werden. Für diesen Ansatz sind deutlich weniger Rechenleistung und Trainingsdaten erforderlich als für ein komplett neues Netzwerk. Die Ergebnisse des Transferlernens können genauso zuverlässig sein, wie die eines von Grund auf neuen Netzwerks, erfordern aber deutlich weniger Trainingsdaten.

Einrichten der Software

Es gibt unzählige Deep-Learning-Tools: wo fangen Sie also am besten an? Für Machine-Vision-Entwickler, die mit OpenCV vertraut sind, ist TensorFlow der ideale Einstieg. TensorFlow ist ein flexibles und leistungsstarkes Framework zum Entwickeln und Trainieren von neuronalen Netzwerken. Damit können komplexe Aufgaben mit Python-Code automatisiert werden. Auch eine große Community steht hinter dem Framework. Vielfältige Beispiele, Tutorials und Foren erleichtern zudem die Anwendung des Tools. Dazu kann eine Grafikkarte mit Nvidia Cuda das Trainieren von Netzwerken mit TensorFlow beschleunigen, wenn die Komplexität oder Dringlichkeit Ihrer Aufgabe es erfordert. Grafikkarten beschleunigen zwar das Trainieren von großen Netzwerken, sind aber anfangs nicht unbedingt erforderlich. Die meisten Beispiele und Tutorials laufen auch problemlos mit einer herkömmlichen Desktop-CPU. Viele Deep-Learning-Tools sind ausschließlich für Linux verfügbar. Ubuntu 18.04 ist die Standard-Distribution von Linux. Für die meisten aktuellen TensorFlow-Tutorials wird dieses Betriebssystem verwendet. Ein Docker-Image (www.tensorflow.org/install/docker) kann die Installation und Konfiguration von TensorFlow und seinen Abhängigkeiten erleichtern. Achten Sie darauf, das richtige Docker-Image auszuwählen, da es verschiedene Versionen gibt, je nachdem, ob nur die CPU oder auch die Grafikkartenbeschleunigung genutzt werden soll.

Vision Vorkenntnisse sinnvoll

Bei der Entwicklung eines Vision-Systems auf Deep-Learning-Basis steht mit der Software nur die Hälfte der Lösung. Auch die Positionierung des Ziels, die Art und Ausrichtung der Beleuchtung, die Optik und die Kamera müssen berücksichtigt werden. Wenn Sie die physischen Faktoren eines Deep-Learning-Systems optimieren, nehmen die Komplexität, die Menge der erforderlichen Trainingsdaten sowie die zur Problemlösung erforderliche Größe des Netzwerks ab. Daraus ergeben sich ein schnelleres Training vor und eine höhere Zuverlässigkeit und Geschwindigkeit nach der Bereitstellung

Themen:

| Fachartikel

Ausgabe:

inVISION 4 2019
FLIR Systems GmbH

Das könnte Sie auch Interessieren

Bild: Basler AG
Bild: Basler AG
Details bei 80m/min

Details bei 80m/min

Bei der Herstellung von Batteriezellen ist eine hohe Qualität in allen Prozessschritten entscheidend, um den Materialausschuss zu reduzieren. Digitale Bildverarbeitungslösungen von Basler eröffnen Möglichkeiten, auch kleinste Defekte bei der Elektrodenbeschichtung zuverlässig zu erkennen.

Bild: Vision Components
Bild: Vision Components
Eingebettet

Eingebettet

Eingebettete Bildverarbeitungssysteme sind hochintegrierte Single Board Computer, die zusammen mit Kameratechnik ein Vision System ergeben, das nicht der klassischen komponentenbasierten PC-Technik und -struktur entspricht. Derartig spezialisierte Embedded Vision Systeme sind kompakter, kostengünstiger, energiesparender, oft auch leistungsfähiger und auf ihre Arbeitsumgebung angepasst.

Bild: Mercedes-Benz Group AG
Bild: Mercedes-Benz Group AG
Kurzzeit-Röntgen

Kurzzeit-Röntgen

Zusammen mit dem Fraunhofer EMI hat Mercedes-Benz den weltweit ersten Röntgencrash mit einem realen Pkw durchgeführt. Mit der Kurzzeit-Röntgentechnologie lassen sich hochdynamische innere Deformationsvorgänge mit bis zu 1.000fps darstellen, was die Technologiedemonstration in der EMI-Forschungscrashanlage bei Freiburg gezeigt hat. Bisher unsichtbare Verformungen und ihre exakten Abläufe werden so transparent.

Bild: ©Ryan/stock.adobe.com
Bild: ©Ryan/stock.adobe.com
Potenziale des Quantencomputings für die Bildverarbeitung

Potenziale des Quantencomputings für die Bildverarbeitung

Das Versprechen des Quantencomputings, komplexe Probleme mit bisher unerreichter Geschwindigkeit zu lösen, eröffnet neue Horizonte in zahlreichen Bereichen. Auch in der Bildverarbeitung könnten die Prinzipien der Quantenmechanik und deren Anwendung in Quantenalgorithmen zu signifikanten Fortschritten führen. Doch während die theoretischen Grundlagen vielversprechend sind, steht die praktische Umsetzung noch vor einigen Herausforderungen.