Programmierbare Logik-Bausteine beschleunigen Machine Vision Applikationen
21.09.2017 -
Embedded Vision Systeme finden sich heute in vielen industriellen Umgebungen, in denen sie oft auch als Machine Vision Systeme bezeichnet werden. Sie führen dort eine breite Vielfalt von Applikationen aus, von der optischen Inspektion in Fertigungslinien bis hin zu postalischen Sortieraufgaben. Dies stellt die Entwickler vor etliche Herausforderungen.
Machine Vision Applikationen mit ihren breit gestreuten Anwendungsfeldern und ihre Entwickler sind heute mit mehreren Herausforderungen gleichzeitig konfrontiert:
- Sie müssen reaktionsschnelle und leistungseffiziente Lösungen bieten, die bei steigenden Anforderungen skalierbar sind.
- Ihre Verarbeitung muss auf dem neuesten Stand sein, oft mit Embedded Machine Learning Algorithmen, um die gewünschten Fähigkeiten zu realisieren.
- Sie müssen die Entwicklung mit High-Level Industrie-Standard Frameworks und Bibliotheken ermöglichen.
- Sie müssen mit einem breiten Bereich von Kameras und andern Schnittstellen verbinden, einschließlich Legacy- und maßgeschneiderten Systemen.
Der traditionelle Ansatz verfolgt den Weg der Entwicklung von Machine Vision Systemen auf der Basis einer PC-Architektur – wegen deren Einfachheit im Einsatz, des umfangreichen Ökosystems an Software-Anbietern und der Implementierung zu niedrigen Kosten. Allerdings zeigt die PC-basierte Architektur verschiedene Nachteile: insbesondere ihre geringe Performance im Vergleich zu den alternativen Lösungen, des Weiteren ihr großer Footprint, ihre höhere Leistungsaufnahme und die Tatsache, dass bei wachsenden Anforderungen keine einfachen Skalierungsmöglichkeiten bestehen. Eine gewisse Evolution des PC-basierten Ansatzes ist die Verwendung einer GPU-Beschleunigung innerhalb der PC-Architektur. Das bringt ähnliche Vorteile wie die einer PC-basierten Applikation. Es ermöglicht außerdem das schnellere Prototyping der Machine Vision Algorithmen mit High-Level Frameworks. Doch diese Vorteile werden mit höherer Leistungsaufnahme bezahlt, die weit über eine entsprechende PC-basierte Lösung hinausgeht. Diese Vorgehensweise erfordert außerdem eine gewisse Expertise in der Implementierung der Algorithmen auf der GPU, und es zeigt dieselben Probleme hinsichtlich der Skalierbarkeit. Sowohl mit dem PC- als auch dem GPU-basierten Ansatz ist es schwierig, eine skalierbare, reaktionsschnelle und leistungseffiziente Lösung zu implementieren, die maximale Verarbeitungsleistungen erzielt und gleichzeitig den erforderlichen Bereich der Interface-Möglichkeiten abdeckt.
Programmierbare Logik als Alternative
Um diese Herausforderungen effektiv anzugehen, können Entwickler von Machine Vision Systemen alternativ die All Programmable Zynq SoCs oder die Zynq UltraScale+ MPSoCs von Xilinx einsetzen und ihre Applikationen mithilfe des ReVision Acceleration Stack erstellen. Diese Bausteine bieten eine programmierbare Logik in Verbindung mit High-Performance Prozessoren wie ARM A53 oder A9. Damit ergeben sich eng integrierte und heterogene Prozessorsysteme, wobei ReVision die Fähigkeit bietet, mit Industrie-Standard Frameworks und Bibliotheken wie OpenCV, OpenVX und Caffe zu kooperieren und diese zu beschleunigen. Damit lässt sich die parallele Arbeitsweise der programmierbaren Logik optimal zur Erstellung von Pipelines für die Bildbearbeitung und von Inferenzmaschinen für Machine Learning einsetzen. Gleichzeitig implementiert das Prozessorsystem eine Entscheidungsfindung auf höherer Ebene, sowie die Funktionalität für die Kommunikation und das System-Management. Diese Kombination ermöglicht die Schaffung von reaktionsschnelleren und leistungs-effizienteren Lösungen, die immer noch den Einsatz von Industrie-Standard Bibliotheken und Tools erlauben. In Bezug auf die nutzbaren Schnittstellen bieten sowohl das All Programmable Zynq SoC, als auch das Zynq UltraScale+ MPSoC eine Reihe von gebräuchlichen Industriestandard-Interfaces, die über das Prozessorsystem oder die programmierbare Logik zur Verfügung gestellt werden. Legacy- oder maßgeschneiderte Interface-Funktionalitäten lassen sich dank der Flexibilität der I/O-Strukturen mithilfe der programmierbaren Logik implementieren. Dies erfordert nur einen externen PHY (Physical Layer), um die physische Schnittstelle des Protokolls für die universelle Any-to-Any Konnektivität zu bilden.
Ein Blick in die Details
Der Acceleration Stack ermöglicht Entwicklern das Arbeiten mit OpenCV, OpenVX und Caffe, also mit Industriestandards, zur Erstellung von Machine Vision und Machine Learning Applikationen. Um reaktionsschnellere Lösungen zu realisieren, kann ReVision eine Reihe von OpenCV-Funktionen, einschließlich der OpenVX-Kernfunktionen, in der programmierbaren Logik beschleunigen. Es ist auch möglich, die Machine Learning Layer der Inferenzmaschine zu beschleunigen, einschließlich Conv, ReLU, Pooling und Detector & Classifier. Auf jeden Fall ergibt sich mit der Beschleunigung in programmierbarer Logik ein signifikanter Anstieg der Performance, sowohl für Machine Vision wie für Machine Learning.
Diese Fähigkeit zur Beschleunigung wird vom SDSoC bereitgestellt, mit einem Compiler zur Systemoptimierung, der die Software-definierte Entwicklung im All Programmable Zynq SoC oder im Zynq UltraScale+ MPSoC erlaubt. Dies wird möglich durch eine Kombination der Vivado High Level Synthese (HLS) mit einem Konnektivitäts-Framework, was die nahtlose Verlagerung von Funktionen zwischen dem Prozessorsystem (PS) und der programmierbaren Logik (PL) gestattet. Diese Fähigkeit erleichtert die Schaffung einer optimalen Lösung, mit Funktionen, die entweder im PS oder in der PL residieren, um die die beste Performance auf der Systemebene zu erzielen. Dies legt auch fest, welche Funktionen etwaige Engpässe in der Performance bewirken und somit gute Kandidaten für eine Beschleunigung mithilfe der vom SDSoC bereitgestellten Profiling-Fähigkeiten sind.
In vielen Machine Vision Applikationen ist eine Schleife mit geringer Latenz und deterministischer Entscheidung von kritischer Bedeutung. Ein Beispiel dafür ist die Inspektion in Fertigungslinien. Dort ist die Ansprechzeit kritisch, um die Linie in Bewegung zu halten und gleichzeitig Bearbeitungsfehler und Defekte in den Werkstücken zu identifizieren, um diese aus dem Fertigungsfluss auszusortieren. Diese verbesserte Ansprechzeit wird durch die geeignete Nutzung der parallelen Verarbeitung in der programmierbaren Logik ermöglicht, einschließlich der Implementierung der Pipeline und der Machine Learning Inferenzmaschine zur Bildverarbeitung. Der Einsatz der programmierbaren Logik für diese Aufgaben reduziert im Vergleich zu traditionellen Lösungen die Engpässe im System. Bei einem CPU/GPU-basierten Ansatz erfordert jede Stufe der Bearbeitung die Verwendung eines externen DDR-Speichers, da die Bildinformationen wegen der Platzbegrenzung im internen Cache nicht zwischen den Funktionen transferiert werden können. Ein Ansatz mit programmierbarer Logik erlaubt hingegen das Streaming, wobei der interne RAM die erforderliche Pufferung übernimmt. Das Umgehen der Zwischenspeicherung im DDR reduziert nicht nur die Latenz der Bildbearbeitung. Es reduziert außerdem auch die Leistungsaufnahme und erhöht den Determinismus, da kein geteilter Zugriff mit anderen System-Ressourcen oder ein Transfer von Bilddaten zwischen Chip und dem DDR-Speicher notwendig ist.
Höhere Performance
Die Kombination des ReVision Stack mit den All Programmable Zynq SoC- oder Zynq UltraScale+ MPSoC Bausteinen hat in Benchmark-Tests eine signifikante Erhöhung der Performance gezeigt, mit einem Anstieg der Bildrate um das 42-fache pro Sekunde und Watt für die Bildbearbeitung, sowie bis zum 6-fachen der Bildbearbeitungsrate pro Sekunde und Watt in Machine Vision Applikationen. Sie realisiert außerdem signifikante Einsparungen an Entwicklungszeit, wenn man sie mit der traditionellen RTL-basierten Entwicklung vergleicht.