Implementierung neuronaler Netze auf FPGAs – Teil 2/2

Deep Learning für jedermann

Implementierung neuronaler Netze auf FPGAs – Teil 2/2

Welche Rolle spielen FPGAs bei Deep Learning? Im ersten Teil ging es um die Vorzüge der Technologie und das Ausführen trainierter CNN im Vergleich zu GPUs/CPUs. Dieses Mal geht es nun um die Implementierung auf FPGAs.

 An analysis of Deep Neural Network Models for Pratical Applications (Alfredo Canziani, Adam Paszke, Eugenio Culurciello, 2017). (Bild: Silicon Software GmbH)

An analysis of Deep Neural Network Models for Pratical Applications (Alfredo Canziani, Adam Paszke, Eugenio Culurciello, 2017). (Bild: Silicon Software GmbH)

Die Rechenleistung von FPGAs hat sich in einem Maße entwickelt, die das Wachstum von herkömmlichen Prozessoren deutlich überflügelt. Der Produktionsprozess von FPGAs wird aktuell von 16 auf 7nm umgestellt, das heißt eine Vervielfachung der Logikreserven um den Faktor 10. Mit der Umstellung auf 3nm in ca. fünf Jahren wird sogar ein Faktor 100 im Vergleich zu heute erreicht. Dadurch lassen sich komplexe Algorithmen implementieren und Objekte in einem Bild automatisch klassifizieren. Um die bei vielen Deep Learning Anwendungen geforderte hohe Rechengeschwindigkeit zusammen mit einer hohen Durchsatzrate und Treffgenauigkeit zu erzielen sowie für die Implementierung großer Netze sind allerdings auch leistungsfähigere FPGAs notwendig. Für die in der Produktion erforderlichen Verarbeitungsgeschwindigkeiten stehen bereits Hochleistungs-Framegrabber und eingebettete Bildverarbeitungsgeräte wie Kameras und Sensoren mit größeren FPGAs zur Verfügung. Mit umfangreicheren FPGA-Ressourcen lassen sich komplexere Architekturen und damit auch Anwendungen verarbeiten. Die höhere Datenbandbreite ermöglicht eine Verarbeitung eines Gesamtbildes oder zusätzliche Bildvor- und -nachverarbeitung auf dem FPGA. Sie ist ausreichend hoch, um z.B. den kompletten Datenausgang einer GigE Vision Kamera mit Deep Learning zu analysieren.

 Verarbeitung von Gesamtern, Videos und Signalen in Echtzeit mit FPGAs unter Visual Applets. (Bild: Silicon Software GmbH)

Verarbeitung von Gesamtern, Videos und Signalen in Echtzeit mit FPGAs unter Visual Applets. (Bild: Silicon Software GmbH)

FPGA-Ressourcen optimieren

Die Bearbeitungsmöglichkeiten im FPGA stehen im direkten Zusammenhang mit den verfügbaren Logikressourcen. Diese können für die algorithmische Beschreibung, aber auch für aufwändige Implementierungsmethoden, Rechentiefen oder höhere Bandbreiten über die Vervielfachung des Rechenkerns eingesetzt werden. Für Deep Learning gibt es unterschiedliche Methoden, Ressourcen einzusparen ohne die Qualität der Klassifizierung zu beeinträchtigen. Eine Methode ist die Skalierung der Bilder, die den internen Datendurchfluss reduziert. Erfahrungswerte haben gezeigt, dass die Rechentiefe sich nur marginal auf die spätere Erkennungsgenauigkeit durchschlägt. Die Reduktion von 32Bit auf 8Bit und von Floating Point auf Fixed Point / Integer ermöglicht dem FPGA, seine stark eingesparten Ressourcen in größere Netzarchitekturen zu investieren. Die höhere Rechengenauigkeit einer 32Bit Floating Point GPU ist für die Deep Learning Inference von geringer Bedeutung, erreichen doch 8Bit Fixed Point FPGAs eine ausreichend präzise Erkennungsgenauigkeit für die meisten Deep Learning Anwendungen bei zu vernachlässigender Fehlertoleranz. Bei Anforderungen nach besonders präziser Rechengenauigkeit lässt sich auf einem größeren FPGA als Ressourcenkompromiss auch 16Bit Fixed Point implementieren. Typische Aufgabenstellung in der Bildverarbeitung ist die Erkennung von Defekten. Sind die Fehlerklassen bekannt, lassen sie sich anhand von Defektbildern aus der Produktion antrainieren. Hingegen bei unbekannten Bildern und der Anforderung, jede Abweichung zu erkennen, werden die Prüfstücke mit einem Golden Master verglichen. In jedem dieser Fälle sind meist kleine Netze einzusetzen, die Fehlerklassen und deren Varianten detektieren. AlexNet, SqueezeNet oder MobileNet sind typische Vertreter hierfür. Diese sind als Basis für spezifische Anpassungen und Verbesserungen der Netzarchitektur für die individuelle Anwendung einsetzbar. Nach dem Training folgt die FPGA-Implementierung für die Inference, das heißt eine weitere Möglichkeit, Ressourcen zu optimieren und die Klassifizierungsqualität zu erhöhen. Im Verhältnis zwischen Erkennungsgenauigkeit, Implementierungsgröße und Rechengeschwindigkeit bzw. Bandbreite werden bei Machine Vision vorrangig kleine, schnelle Netze eingesetzt.

 Treffgenauigkeit von Prozessoren mit unterschiedlicher Rechentiefe (Floating Point 32bit vs. Fixed Point bzw. Integer 16bit und 8bit). (Bild: Silicon Software GmbH)

Treffgenauigkeit von Prozessoren mit unterschiedlicher Rechentiefe (Floating Point 32bit vs. Fixed Point bzw. Integer 16bit und 8bit). (Bild: Silicon Software GmbH)

Deep Learning mit VisualApplets

Die gesamte Bildverarbeitung führen Framegrabber oder Embedded Vision Geräte als zentrale Elemente des Bildverarbeitungssystems aus, inklusive Vor- und Nachverarbeitung, die eigentliche CNN-Bildklassifikation sowie die Synchronisierung der Peripheriegeräte (Beleuchtung, Sensoren und Aktoren) durch eine Signalsteuerung in Echtzeit. Mit der grafischen FPGA-Entwicklungsumgebung VisualApplets sind Anwender in der Lage, Deep Learning Anwendungen und die Visionperipherie selbstständig im FPGA per Drag&Drop zu konfigurieren, auch ohne Hardware-Programmierkenntnisse. Sie sehen die Abbildung und Konfiguration des neuronalen Netzes als einen CNN-Operator innerhalb eines Datenfluss-Diagramms. Das spezifische CNN wird zwischen dem Kamera-Operator als Bildquelle und dem DMA-Operator als Datenübergabe an den PC eingebunden. Das gesamte Anwendungsdesign lässt sich fortlaufend simulieren sowie abschließend synthetisieren und läuft immer als Echtzeitbetrieb in der definierten Geschwindigkeit mit geringsten Latenzen ab. Werden Bilder vor dem Training über eine Bildverarbeitung optimiert, muss dieser Vorgang während der Inferenz ebenfalls durchgeführt werden. Der modulare Aufbau der Deep Learning Lösung in VisualApplets ermöglicht die Kombination von Vorverarbeitungen zur Bildoptimierung, Vorselektion von Bildausschnitten oder auch Auflösungsänderungen mit dem CNN-Verarbeitungskern und einer Bildnachbearbeitung für Ausschleusungen von NIO-Teilen. Der CNN-Operator wird hierbei nur mit Informationen über die Netzarchitektur und deren Gewichte konfiguriert. Über den CNN-Operator lassen sich passende Netzarchitekturen unterschiedlicher Größe und Komplexität integrieren sowie vortrainierte Konfigurationsparameter für die Gewichte der Netze für eine Vielzahl von Visionanwendungen laden. Dabei werden auch Informationen über Netze und deren Parameter aus Drittsoftware wie die Deep Learning Frameworks TensorFlow oder Caffe importiert. Neue Gewichte sind leicht zu laden, solange das Netz unverändert bleibt. Ein Nachtrainieren, z.B. für ein neues Werkstück in der Fertigung, geht mit relativ wenig Aufwand. Ändern sich Testumgebung oder -objekte, können die nachtrainierten Bilder über einen neuen Parametersatz der Gewichte oder als neues Netz nachgeladen werden. Die Implementierung von Deep Learning Anwendungen auf einen FPGA ist mit VisualApplets einfach zu handhaben und in kurzer Zeit umzusetzen – und dies als hardwareprogrammierte Echtzeitanwendung. Für die Inspektion von reflektierenden Oberflächen wie Lack und Metall mit Deep Learning wurde innerhalb von zwei bis drei Wochen eine Bildverarbeitungslösung aus dem Camera Link Framegrabber microEnable 5 marathon deepVCL und VisualApplets aufgebaut. Die Summe aller Optimierungen und das modulare Konzept der Inference mit Pre-Processing, Deep Learning Ausführung und Post-Processing ermöglichen Verbesserungen der Klassifikation ohne Abstriche bei der Performance. Anwender verwenden ihr bereits vorhandenes Bildverarbeitungssystem einfach weiter.

 Die FPGA-Leistung ist 7,3-mal höher als diejenige der GPU. (Bild: Silicon Software GmbH)

Die FPGA-Leistung ist 7,3-mal höher als diejenige der GPU. (Bild: Silicon Software GmbH)

Fazit

Für die Objekt- und Merkmalsklassifikation setzen sich in der Bildverarbeitung immer mehr neuronale Netze durch, insbesondere bei Aufgaben mit vielen Merkmals- oder Umgebungsvariablen oder solchen die algorithmisch schwierig zu beschreiben sind. Die Stärken von Deep Learning überwiegen bei weitem die Schwächen. Ein relativ hoher Trainingsaufwand wird durch Zuverlässigkeit, Schnelligkeit und Transfermöglichkeit der Ergebnisse mehr als aufgewogen. Im industriellen Umfeld sind FPGAs die beste Wahl aufgrund ihrer hohen Rechenleistung, geringen Latenzen und Leistungsaufnahme sowie der Langzeitverfügbarkeit und weiten Verbreitung auch in Embedded Geräten. Somit werden FPGAs auch unter dem Aspekt des Return on Investment zu einer interessanten Alternative, wenn man die Gesamtkosten eines Bildverarbeitungssystems zugrunde legt.

Silicon Software GmbH

Das könnte Sie auch Interessieren