Auf einen Blick

Die zügige Weiterentwicklung von eingebetteter Bildverarbeitung verlangt eine sehr flexible Verarbeitungsplattform, die auf umfangreiche Ressourcen zugreifen kann. Mit dem durchgängig programmierbaren System auf dem Chip (SoC) Zynq-7000 hat Xilinx dafür eine Lösung erarbeitet. Der Baustein vereint einen ARM Dual-Core Cortex, A9 MPCore, programmierbare Logik und wesentliche Peripheriefunktionen auf einem Chip. Er wird unterstützt durch vielfältige IP-Module und eine Tool-Infrastruktur, mit der sich auch sehr anspruchsvolle Aufgabenstellungen realisieren lassen: Vivado HLS, neuer IP-Integrator, OpenCV-Bibliotheken, SmartCORE-IP und spezialisierte Entwicklungs-Kits.

Als Mischtechnologie aus eingebettetem System mit Bildverarbeitungsfunktionalität hat sich Smart Vision weite Anwendungsbereiche erobert und ermöglicht völlig neue Lösungen. Zu den bekanntesten Anwendungsbereichen gehören Öffentliche Sicherheit und Sicherheit am Arbeitsplatz, Assistenzsysteme aller Art, Qualitätssicherung und Produktionssteuerung sowie Medizintechnik und Kommunikation.

Als typisches Beispiel für die enormen Fortschritte der kameragestützten Objekt- und Personensicherung soll die Sicherung einer Bahnsteigkante dienen. Noch vor 20 Jahren war es üblich, dass der Bahnsteig im Fokus mehrerer Videokameras lag, deren analoge Signale auf einem Monitor in der zentralen Sicherheitswarte erschienen. Davor saßen Sicherheitskräfte, die das Geschehen betrachteten, bewerteten und im Gefahrenfall eingriffen. Abgesehen davon, dass das Ergebnis sehr stark vom Aufmerksamkeitsgrad des Wachpersonals abhing, war die Reaktionszeit mitunter sehr lang, bis geeignete Maßnahmen gestartet werden konnten.

Dies hat sich mittlerweile stark geändert. Einer „intelligenten“ Kamera von heute dagegen kann schon eine ganze Mission übertragen werden. Im Beispiel der Personensicherheit an der Bahnsteigkante könnte diese beispielsweise lauten:

Mission Bahnsteigkante

Smart Vision hat sich weite Anwendungsbereiche erobert.

Smart Vision hat sich weite Anwendungsbereiche erobert. Xilinx

  • Prüfe periodisch die Überschreitung der Bahnsteigkante durch Personen in Richtung Gleise.
  • Erkenne ungewöhnliche Bewegungsabläufe (zum Beispiel Schubsen, Prügelei).
  • Fokussiere auf die Beteiligten.
  • Identifiziere die Beteiligten durch Datenabgleich mit aus einer Datenbank zugespielten Bildern.
  • Setze im Gefahrenfall (Überschreiten der Bahnsteigkante) eine Warnmeldung an die herannahenden Züge ab und alarmiere die Sicherheitswarte.

Diese Mission erfordert eingehende Bildanalysefähigkeiten, die zu den wichtigsten Trends der heutigen Überwachungssysteme gehören.

Mit Fusion bessere Ergebnisse

Als weiterer aktueller Trend der eingebetteten Bildverarbeitung ist die Fusion mit anderen Sensortechnologien auszumachen, wie Wärmebildaufnahme, Radar und Sonar, um nur einige zu nennen. Damit lassen sich auch optisch nicht direkt wahrnehmbare Objekte, zum Beispiel in völliger Dunkelheit, analysieren. Diese Kombinationen mehrerer Sensorsignale verringern Fehlalarme und liefern präzisere Resultate, erfordern dafür jedoch eine höhere Verarbeitungsleistung.

Alle diese zusätzlichen Funktionen werden aber nicht an zentraler Stelle bearbeitet, sondern vor Ort, direkt in der Kamera – ein weiterer Trend. Damit gelingen genauere Analysen und das ganze System verhält sich robuster. Auf der anderen Seite müssen derartige Kameras über ausreichende Rechenleistung verfügen, mit anderen Kameras oder über ein Netzwerk kommunizieren können und vor allem wenig Versorgungsleistung benötigen, von einer möglichst kleinen Bauform ganz zu schweigen.

Smart Vision assistiert dem Fahrer

Auf dem Automobilmarkt sorgt Smart Vision im Rahmen von Fahrerassistenzsystemen für stressfreies Fahren und erhöhte Sicherheit. So warnen viele dieser Funktionen den Fahrer vor möglicherweise gefahrenträchtigen Situationen: Wahrnehmung von Objekten im toten Winkel, Spurwechselunterstützung, Fußgänger- und Verkehrszeichenerkennung. Kürzlich vorgestellte Neuerungen, wie automatische Notbremsung und Spurhaltung, analysieren die Umgebung des Fahrzeugs nicht nur im Hinblick auf drohende Gefahren, sondern unterstützen den Fahrer bei Korrekturmanövern zur Vermeidung von Unfällen oder Minderung von Unfallschäden. Dazu sind einige neue Modelle mit vier bis sechs Kameras ausgestattet, die ein Panoramabild der Fahrzeugumgebung vermitteln. Im ersten Schritt liefern sie nur Bilder an den Fahrer, die im zweiten Schritt zu einem Blick aus der Vogelperspektive umgerechnet werden, um möglicherweise gefährdete Objekte, wie Fußgänger auf der Fahrbahn, besser zu erkennen. Am Ende der Fahrt arbeiten die Kameras dann mit anderen Sensoren zusammen, um automatisch einzuparken.

Zur Erledigung dieser Aufgaben ist eine sehr hohe Rechenleistung nötig, die aber sehr gut durch parallele Hardware-Strukturen erbracht werden kann. Das ist auch der Grund dafür, dass viele Fahrerassistenzsysteme der Frühzeit Mikroprozessoren mit FPGAs kombinierten: Letztere übernahmen den größten Teil der parallel ablaufenden Echtzeit-Berechnungen, während die Mikroprozessoren für die seriell getroffenen Entscheidungen zuständig waren.

Unter anderem durch den Kostendruck im Fahrzeugbau ist es allerdings nicht wirtschaftlich, jeder Kamera im Auto ihre eigene Verarbeitungseinheit zu geben, wie es für Überwachungskameras sinnvoll ist. Vielmehr sollen alle Funktionen in einer zentralen Einheit behandelt werden, die dafür aber über sehr hohe Rechenleistung und Bandbreite verfügen muss, um die parallele Verarbeitung von bis zu sechs Kamerasignalen zu schaffen.

Bild 1: Struktur von Fahrerassistenzsystemen mit mehreren Kameras in herkömmlicher Architektur (oben) und mit dem durchgängig programmierbaren SoC Zynq (unten) samt dessen Vorteilen.

Bild 1: Struktur von Fahrerassistenzsystemen mit mehreren Kameras in herkömmlicher Architektur (oben) und mit dem durchgängig programmierbaren SoC Zynq (unten) samt dessen Vorteilen.Xilinx

Bild 1 zeigt die Vorteile eines Zynq SoC gegenüber einer herkömmlichen Multichip-Architektur für die Realisierung eines hochfunktionalen Fahrerassistenzsystems: Ein Satz Kameras wird gemeinsam an einen Zynq SoC angeschlossen, der mehrere Funktionen ausführt, wie Objektwahrnehmung im toten Winkel, 360⁰-Rundumsicht, Spurhaltung und Fußgängererkennung. Herkömmliche Systeme benötigen dafür mehrere Bausteine, was die Integration erschwert, die Systemleistung mindert, mehr Strom verbraucht sowie höhere Material- und Montagekosten verursacht.

Anforderungen an die Realisierung

Die zügige Weiterentwicklung von eingebetteter Bildverarbeitung verlangt eine außerordentlich flexible Verarbeitungsplattform, die auf umfangreiche Ressourcen zugreifen kann. Mit dem durchgängig programmierbaren System auf dem Chip (SoC) Zynq-7000 hat Xilinx dafür eine Lösung erarbeitet. Es ist der erste Baustein, der einen ARM Dual-Core Cortex, A9 MPCore, programmierbare Logik und wesentliche Peripheriefunktionen auf einem Chip vereint. Er wird unterstützt durch vielfältige IP-Module und eine Tool-Infrastruktur, mit der sich auch äußerst anspruchsvolle Aufgabenstellungen realisieren lassen: Vivado HLS (high level synthesis), neuer IP-Integrator, OpenCV (computer vision)-Bibliotheken, SmartCORE-IP und spezialisierten Entwicklungs-Kits.

Durchgängige Programmierbarkeit

Der Hauptvorteil des Zynq SoC gegenüber GPU- oder DSP-orientierten SoCs liegt in seiner durchgängigen Programmierbarkeit und außerordentlichen Rechenleistung: Die ARM-Verarbeitungseinheit ist per Software programmierbar, während sich die FPGA-Logik mit HDL oder C++ programmieren lässt; sogar der I/O-Bereich ist voll programmierbar.

Bild 2: Stufen der Bild- und Videoverarbeitung mit drei Realisierungsformen.

Bild 2: Stufen der Bild- und Videoverarbeitung mit drei Realisierungsformen.Xilinx

Am Signalfluss eines Smart-Vision-Systems nach Bild 2 ist deutlich zu sehen, wo der Zynq SoC seine Stärken gegenüber ARM-plus-DSP- und ARM-plus-GPU-ASSPs voll ausspielen kann, nämlich überall. Der erste Signalverarbeitungsblock (grün) dient der flexiblen Anpassung an beliebige Kameratypen. Im nächsten Schritt werden die Pixel verarbeitet und das Videosignal analysiert. Dies ist sehr rechenintensiv und erfordert oft Parallelverarbeitung, die ein FPGA am besten beherrscht. Die folgenden drei Blöcke (rot) bearbeiten Metadaten aus dem Analyseschritt, erstellen eine grafische Repräsentation des Ergebnisses und codieren diese für eine Übertragung. Weil im Zynq SoC verarbeitende Einheit und FPGA eng zusammenarbeiten, lässt sich ein eventuell notwendiger Codec zur Datenkompression leicht in das FPGA auslagern. In der Ausgangsstufe schließlich sind wegen deren Programmierbarkeit beliebige Kommunikationsprotokolle oder Videoübertragungsstandards realisierbar, was bei DSP- oder GPU-Ausführungen nicht möglich ist und dort Zusatzaufwand (im Zweifelsfall ein FPGA) erfordert.

Leistungsfähige Entwicklungsumgebung

Für Smart-Vision-Systeme genügt es nicht, das beste Silizium zu haben. Auch die Entwicklungsumgebung muss dazu passen, vor allem für Programmierer, die ihre Bildverarbeitungsalgorithmen vorzugsweise in C oder C++ schreiben. Dazu stellt Xilinx seit Mitte 2012 die Vivado Design Suite bereit, die eine Übertragung von Funktionen der Verarbeitungseinheit (die dort vielleicht nicht schnell genug laufen) in die FPGA-Logik erleichtert: Dazu werden die C-Algorithmen an Vivado HLS gesandt und dort in Verilog oder VHDL für das FPGA synthetisiert.

Zur Abrundung seines Angebots für die Smart-Vision-Technologie hat Xilinx eine Open-Source-Bibliothek von Bildverarbeitungsalgorithmen eingerichtet: OpenCV enthält derzeit mehr als 2500 Algorithmen in C, C++, Java und Python, deren Komplexität von einfachen Bildfiltern bis zur anspruchsvollen Bewegungserkennung reicht. Weltweit tragen Entwickler von eingebetteter Bildverarbeitung zu ihrer Erweiterung bei und nutzen sie intensiv, um schnell Bildverarbeitungssysteme zu generieren.

Im Rahmen seiner Initiative für Smart Vision entwickelte Xilinx mit SmartCORE IP auch eine IP-Suite, aus deren Kernfunktionalität und passenden Algorithmen aus der OpenCV-Bibliothek Anwender schnell ihre neuen Entwürfe zusammenstellen und über den neu eingeführten IP-Integrator zusammenführen können. Durch den IP-Integrator arbeitet die Vivado Design Suite nicht nur bausteinspezifisch, um dessen Eigenschaften bestmöglich auszunutzen, sondern auch plattformspezifisch. Das bedeutet, dass sie Board-spezifische Prüfungen auf Einhaltung der Design-Regeln konfiguriert und anwendet, was den Start eines arbeitsfähigen Systems wesentlich beschleunigt.

Wenn ein Entwickler beispielsweise das Zynq-7000 SoC Video and Imaging Kit auswählt und ein Zynq-SoC-Verarbeitungssystem innerhalb des IP-Integrators instanziiert, dann sorgt die Vivado Design Suite für eine Vorkonfigurierung des Verarbeitungssystems mit der passenden Peripherie, Treibern und Speichereinrichtung zur Unterstützung des Boards. Damit können Design-Teams für eingebettete Funktionalität wesentlich schneller Software- und Hardware-IP identifizieren, wiederverwenden und integrieren, um die Vorteile der Kombination eines Dual-Core-ARM-Verarbeitungssystems mit Hochleistungs-Logik eines FPGA in wirtschaftlich erfolgreiche Produkte umzusetzen.