Tiefe neuronale Netze erobern die Bildverarbeitung

CNN auf FPGAs

Tiefe neuronale Netze erobern die Bildverarbeitung

Der Beitrag erläutert aktuelle Deep-Learning-Technologien für die Verarbeitung von Bildern und Videos als 2D- und 3D-Daten sowie daraus resultierende Vision-Anwendungen, für die sich tiefe neuronale Netze wie CNN sehr gut eignen.

 Die Grafiken zeigen eine deutliche Zunahme der Vorhersage-Genauigkeit bei Deep-Learning- Anwendungen durch das Erhöhen der Anzahl der Trainingsdaten. (Bild: Silicon Software GmbH)

Die Grafiken zeigen eine deutliche Zunahme der Vorhersage-Genauigkeit bei Deep-Learning- Anwendungen durch das Erhöhen der Anzahl der Trainingsdaten. (Bild: Silicon Software GmbH)

Bei der Bildklassifikation wird Deep Learning immer wichtiger, während ergänzend dazu die Bildvorverarbeitung, -nachbearbeitung und Signalverarbeitung weiterhin mit den bisherigen Methoden ausgeführt werden. Deep Learning kommt insbesondere bei Applikationen wie reflektierende Oberflächen, schlecht ausgeleuchtete Umgebungen, variierende Beleuchtung oder bewegende Objekte zum Einsatz. Klassische Algorithmen eignen sich aber weiterhin, wenn eine Lokalisierung von Objekten oder Fehlern in einem Bild, das maßliche Prüfen, Codelesen oder Post-Processing benötigt werden. Deep Learning besticht dagegen durch eine hohe Zuverlässigkeit bei den Erkennungsraten. Im Wettbewerb um die bessere Lösung stehen somit die Aufwände für eine algorithmische Umsetzung gegen die Zeit für Training und Vorklassifizierung anhand von Trainingsbildern. Dabei unterscheidet man zwischen dem Training zum Anlernen des neuronalen Netzes, der Implementierung des Netzes und der Inference, d.h. dem Ausführen der CNN-Algorithmik (Convolutional Neural Networks) des Netzes auf Bilder mit der Ausgabe eines Klassifizierungsergebnisses. Beim Training wird das Netz über die Parameter so lange angepasst, bis das erwartete Klassifizierungsergebnis vorliegt. Dies ist zeitaufwändig und setzt eine hohe Expertise voraus. Deep Learning benötigt zudem eine große Mengen vorklassifizierter Daten und eine hohe Rechenleistung. Je mehr Daten für das Antrainieren verwendet werden, desto höher ist die Vorhersagegenauigkeit bei der Klassifikation.

Geschwindigkeit vs. Treffgenauigkeit

Die Defekt- und Objekt-Klassifikation anhand von Deep Learning ist derzeit ein viel diskutiertes Thema. Eignen sich aber die verschiedenen Machine Vision Prozessortechnologien mit ihren speziellen Voraussetzungen hinsichtlich eines schnellen Ausführens (Inference) von CNNs mit sehr geringen Latenzen? Neben Geschwindigkeit und Echtzeit-Anforderungen sind hier hohe Bandbreiten, geringe Wärmeleistung und Langzeitverfügbarkeit gefragt, wofür sich herkömmliche CPUs oder GPUs kaum eignen. Diese stellen eher eine geeignete Lösung für Bildverarbeitungsaufgaben im nicht-industriellen Umfeld dar, wo eine geringere Performanz oder Treffgenauigkeit manchmal ausreichend sind. Zudem zeigen beim Vergleich der technischen Aspekte die Technologieplattformen unterschiedliche Leistungswerte, die ihren Einsatz bei Anwendungen mit hohen Anforderungen ausschließen. So ist die Inference-Zeit einer GPU als Performanz-Indikator bei einer angenommenen Bildgröße von 400×400 Pixeln im Schnitt geringer als 8MB/s und die Bildrate kaum höher als 50fps. Allerdings sind GPUs die richtige Wahl für das Training von neuronalen Netzen aufgrund der sehr hohen Datenmengen. Da für das Training meistens nur eine GPU benötigt wird, wirkt sich die Hardwareumgebung wenig auf die Systemkosten aus. Hier haben sich mittlerweile kommerzielle GPUs durchgesetzt und werden von fast jeder Trainingssoftware unterstützt. Bei der Auswahl eines geeigneten Netzes genügen für typische Visionanwendungen oftmals mittelgroße Netze, wenn nur wenige Merkmale zu klassifizieren sind. Diese sind ausreichend für hohe Geschwindigkeiten bei geringen Abstrichen in der Treffgenauigkeit. Schwerpunkt sind immer größere, aber auch langsamere Netze, die eine breite Erkennung unterschiedlichster Objekte ermöglichen. Gleichzeitig entstanden aber auch kleinere, sehr effiziente Netze für Klassifikationsaufgaben, die typisch für die Bildverarbeitung sind.

FPGAs und SoCs für Inference

Die Anforderungen an die Inference vieler Bildverarbeitungsaufgaben erfüllen FPGAs als eigenständiger Prozessor bzw. SoC (System on Chip) im Verbund mit ARM-Prozessoren am besten. FPGAs zeichnen sich durch eine hohe Parallelität der Datenberechnung, einen garantiert robusten Bildeinzug und – im Vergleich zu CPUs und GPUs – eine hohe Rechenleistung, Bildrate und Bandbreite aus. Dadurch klassifizieren CNNs auf FPGAs mit einem hohem Datendurchsatz, was ideal für die anspruchsvollen zeitlichen Anforderungen einer Inline-Inspektion ist. Der FPGA ermöglicht eine Verarbeitung der Bilddaten – von der Bildaufnahme bis zur Bildausgabe – direkt auf einem Framegrabber oder eingebetteten Visiongerät, ohne die CPU zu belasten, was besonders für rechenintensive Anwendungen wie CNNs geeignet ist. Dadurch sind kleinere PCs ohne GPU einsetzbar, was die Kosten des gesamten Bildverarbeitungssystems deutlich verringert. Die Energieeffizienz von FPGAs im industriellen Temperaturbereich ist zudem zehnmal höher im Vergleich zu GPUs, was für Embedded Systeme ideal ist. Dies ermöglicht den Einsatz von Deep Learning in Hinblick auf Industrie 4.0, Drohnen oder autonomes Fahren. Für einen FPGA führt die Verlagerung in den Fixed Point Bereich lediglich zu einer zu vernachlässigenden Reduzierung der Treffgenauigkeit im Vergleich zu GPUs, während die gewonnenen Ressourcen für größere Netzarchitekturen oder einen höheren Datendurchsatz zur Verfügung stehen. Dadurch ist es möglich, die Produktionsgeschwindigkeit etwa bei der Schweißnaht-Inspektion oder Robotik zu steigern. Eine datenreduzierende Bildvorverarbeitung ermöglicht es darüber hinaus, kleinere Netze oder FPGAs einzusetzen. Diese reichen oftmals für einfache Klassifizierungsaufgaben mit wenigen Merkmalen aus.

 Die FPGA-Leistung ist zwar 7,3-mal höher als die einer GPU, der Verlust an der Vorhersagegenauigkeit liegt aber bei 0,3 Prozent, was 30 Prozent mehr inkorrekt klassifizierten ern entspricht. (Bild: Silicon Software GmbH)

Die FPGA-Leistung ist zwar 7,3-mal höher als die einer GPU, der Verlust an der Vorhersagegenauigkeit liegt aber bei 0,3 Prozent, was 30 Prozent mehr inkorrekt klassifizierten ern entspricht. (Bild: Silicon Software GmbH)

Vergleich FPGA vs. GPU

Für hohe Bandbreiten kommen nur FPGAs oder GPUs als Technologie in Betracht. Eine Gegenüberstellung der jeweiligen Schwächen und Stärken zeigt, dass die höhere Rechengenauigkeit von GPUs und damit auch höhere Genauigkeit durch deutlich kürzere Verfügbarkeiten, höhere Leistungsaufnahme aber auch durch eine geringeren Datendurchsatz erkauft wird. Die Leistung der Datenbearbeitung liegt bei den FPGAs um den Faktor 7,3 höher als bei vergleichbaren GPUs. Der Gewinn bei der Genauigkeit liegt bei 0,3 Prozent, bedeutet aber eine 30 Prozent höhere Anzahl falsch klassifizierter Bilder. Im Vergleich der Systemkosten für eine Inferenz wurden Rechensysteme basierend auf einem programmierbaren FPGA-Framegrabber, einer speziellen Branchensoftwarelösung mit zwei GPUs und zwei Standardsystemen mit einer industriellen und kommerziellen GPU herangezogen. Die Kosten wurden über die Komponenten für einen Framegrabber (hier eine industrielle Camera Link Lösung), eine oder mehrere GPUs, einen industriellen Rechner und anfallende Softwarelizenzen ermittelt. Nicht berücksichtigt wurde bei der Gegenüberstellung die Leistungswerte für Datendurchsatz, Bandbreite und Energieeffizienz. Die Kehrseite vermeintlich preisgünstiger Systeme sind eine geringe Lieferbarkeit und schlechtere Performance. Ein Upgrade zu industriellen Produkten (auch GPUs) führt sofort zu höheren Preisen als FPGA-basierte Systeme. Branchenlösungen können dagegen durch unterschiedliche Lizenzmodelle (Jahreslizenz, Arbeitsplatzlizenz oder Koppelung) hohe Kosten erzeugen, welche die Hardwarekosten schnell übersteigen.

Implementierung auf FPGAs

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.

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.

 Systemkostenvergleich für eine Deep-Learning-Anwendung. (Bild: Silicon Software GmbH)

Systemkostenvergleich für eine Deep-Learning-Anwendung. (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 Vision-Anwendungen 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.

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