CNN auf FPGAs
Tiefe neuronale Netze erobern die Bildverarbeitung - Teil 1/2
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.
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 400x400 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.
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%, bedeutet aber eine 30% 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.
Fazit
Deep Learning auf FPGAs erzielt gleichzeitig eine hohe Geschwindigkeit als auch Bandbreite bei großer Erkennungsgenauigkeit und geringer Leistungsaufnahme. Die FPGA-Technologie auf Framegrabbern und (Embedded) Vision-Geräten ermöglicht den Einsatz von neuronalen Netzen für Anwendungen mit industriellen Anforderungen an Echtzeitfähigkeit bzw. geringen Latenzen, Datendurchsatz, Bandbreite und geringe Wärmeleistung. Der Ansatz mit FPGAs liefert Echtzeit-Ergebnisse auch für hoch aufgelöste Bilder: von der Bildakquise über die Bildvorverarbeitung direkt zu Ergebnisbildern. Die lange Verfügbarkeit von FPGAs, Framegrabbern und einer grafischen FPGA-Entwicklungsumgebung wie z.B. VisualApplets gewährleistet zudem eine hohe Investitionssicherheit.
Der zweite Teil (inVISION 6/18) beschäftigt sich mit Implementierung und welche Rolle FPGAs bei Deep Learning spielen können.
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.
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.
Silicon Software GmbH
Dieser Artikel erschien in inVISION 5 2018 - 30.10.18.Für weitere Artikel besuchen Sie www.invision-news.de