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.
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