Computer-Vision versucht mittels elektronischer Bilderfassung und -erkennung die Fähigkeiten des menschlichen Sehens nachzubilden, und das bereits seit den 1950er Jahren. Anfangs nur in der Forschung bekannt, sind Bildverarbeitungs- und Erkennungstechnologien heute weit verbreitet, von der Gesichtserkennung in Smartphones und Sicherheitssystemen bis hin zur Verkehrszeichenerkennung in Fahrzeugen.

Eckdaten

Moderne Computer-Vision-Lösungen arbeiten mit hohen Auflösungen und hohen Bildwiederholraten. Hier alle Berechnungen auf einer CPU auszuführen verschwendet viel Energie. Cadence empfiehlt seinen Tensilica-DSP als IP-Block, um auf dieser Basis flexible und effiziente Lösungen zu entwickeln.

Laut dem französischen Marktforschungsinstitut Yole Développement soll der Markt für CMOS-Bildsensoren pro Jahr um rund 10,6 % wachsen und bis 2020 ein Volumen von 16,2 Milliarden US-Dollar erreichen. Ein Großteil des Marktes entfällt auf Smartphones, wobei auch Automotive-, Medizin- und Überwachungs-Anwendungen entsprechende Chancen bieten. Die Baugröße der Kameramodule und die Pixelgröße erreichen jedoch langsam ihre Grenzen: die Pixelgröße liegt heute bei nur noch 1,1 µm und sie soll auf 0,9 µm schrumpfen. Obwohl sich die Sensortechnologien schnell weiterentwickeln, sind leistungsfähige Bildverarbeitungsverfahren erforderlich, um die höchstmögliche Bildqualität zu erreichen.

Bild 1: Moderner Ansatz für eine Kamera-Pipeline zur Bildverarbeitung und Bilderkennung.

Bild 1: Moderner Ansatz für eine Kamera-Pipeline zur Bildverarbeitung und Bilderkennung. Cadence

Bild 1 zeigt das Prinzip des aktuellen Kamera-Pipeline-Ansatzes. Es gibt einige konventionelle Methoden, um Bildverarbeitungs- und Bilderkennungsalgorithmen in Elektronik zu implementieren: sie reichen von reinen CPUs, einer Kombination universeller CPUs und/oder GPUs bis hin zu Hardware-Pipelines oder RTL-Spezifikationen (Register Transfer Level). In vielen Fällen sind stromsparende DSPs eine effiziente Lösung für die Bildverarbeitung und Bilderkennung mit 32 MPixel und mehr. Mit ihnen können Entwickler nicht nur die Funktionalität umsetzen, sondern auch die Performance und die Stromaufnahme optimieren.

Konventionelle Bildverarbeitung

Hochauflösende Bildverarbeitungs- und Bilderkennungs-Algorithmen auf einer Standard-CPU ablaufen zu lassen oder auf einer Kombination von CPUs und GPUs ermöglicht zwar eine hohe Design-Flexibilität, liefert aber relativ wenig Performance trotz hoher Stromaufnahme. Die zu verarbeitende Datenmenge kann sehr hoch sein, zum Beispiel bei einer Flugdrohne mit zwei oder drei hochauflösenden Kameras. Die Analyse dieser Daten, von der Erkennung von Objekten bis zur Gesichtserkennung, erfordert eine erhebliche Verarbeitungsleistung. Dies wiederum hat einen hohen Stromverbrauch zur Folge, was die Batterielaufzeit verkürzt.

Bild 2: Bildverarbeitungs- und Bilderkennungsfunktionen auf einen DSP zu verlagern, ermöglicht deutliche Einsparungen beim Energieverbrauch.

Bild 2: Bildverarbeitungs- und Bilderkennungsfunktionen auf einen DSP zu verlagern, ermöglicht deutliche Einsparungen beim Energieverbrauch. Cadence

Wie Bild 2 zeigt, bleibt bei der Ausführung von rechenintensiven und anspruchsvollen Bildverarbeitungs- und Bilderkennungs-Algorithmen auf CPUs oder CPUs mit einer GPU nur wenig Rechenleistung für andere Aufgaben übrig. Muss sich die primäre CPU um die Bildverarbeitung und Bilderkennung kümmern, dann kann dies die Echtzeit-Reaktionszeit der CPUs beeinträchtigen. Infolgedessen kann es zu erkennbaren Störungen bei der Audiokommunikation (Stottern) oder bei der Benutzeroberfläche (Verzögerungen) kommen. Bei einem Ansatz mit CPU plus GPU bedeutet dies:

  • Hoher Stromverbrauch, besonders bei Anwendungen wie Videochat.
  • Keine lange Batterielaufzeit, was für Anwendungen wie Wearables erforderlich wäre.
  • Das Endgerät könnte heiß laufen, wodurch eine Reduzierung der CPU/GPU-Taktfrequenz zwingend notwendig wird.

Solche Algorithmen auf einem RTL-basierten Hardware-Design laufen zu lassen verbessert die Performance und senkt den Energieverbrauch. Jedoch verändern sich die Sensortechnologien schnell und unterscheiden sich auch bei den verschiedenen Anbietern. Deshalb kann die RTL-Pipeline nur schwer mit der Größe und Funktionalität Schritt halten, sodass dieser Ansatz aus Entwickler- und Herstellersicht weniger praktisch ist. Außerdem erfordert das Hardware-Design einen langen Design- und Verifikationsprozess und jede Funktion benötigt eigene Gatter, was kostspielig werden kann. Um neue Anforderung oder Sensoren zu berücksichtigen, beispielsweise um Fehler zu beheben oder eine Änderung im Algorithmus zu implementieren, ist ein teurer Hardware-Respin notwendig.

Bild 3: Die Architektur des Tensilica-Vision-P5-DSP ist speziell auf die Anforderungen der Computer-Vision optimiert.

Bild 3: Die Architektur des Tensilica-Vision-P5-DSP ist speziell auf die Anforderungen der Computer-Vision optimiert. Cadence

Energieverbrauch senken

Bildverarbeitungs- und Bilderkennungsalgorithmen auf einen speziell entwickelten DSP zu verlagern, verbessert den Kompromiss zwischen Performance und Stromverbrauchs. Außerdem benötigt eine DSP-Kamera-Pipeline weniger Logik, da der DSP mehrere Algorithmen ausführen kann. Der Tensilica-Vision-DSP P5 von Cadence ist ein Beispiel für einen speziell entwickelten Prozessor für Bildverarbeitungs- und Bilderkennungs-Anwendungen. Bild 3 zeigt die Architektur und Hauptmerkmale dieses DSPs.

Der P5 verfügt über Merkmale, die Cadence speziell für die Bildverarbeitung und Analyse sowie für die Video-Vor- und Nachbearbeitung ausgelegt hat:

  • Signifikante Erhöhung der Rechenleistung gegenüber der vorherigen Tensilica-IVP-EP-DSP-Generation.
  • 64-Wege-SIMD-Engine.
  • 1024-Bit-Speicherschnittstelle mit Super-Gather-Technologie, welche ein schnelles und effizientes Lesen und Schreiben von nicht benachbarten Speicherstellen des lokalen Speichers ermöglicht. Damit lassen sich die verfügbaren SIMD-Fähigkeiten für verschiedene Algorithmen voll nutzen.
  • Erweiterte Unterstützung von 32-Bit-Datentypen.
  • Kundenspezifisch anpassbar für eine noch höhere Rechenleistung.
  • Unterstützung für eine Vielzahl von OpenCV- und OpenVX-Bibliotheksfunktionen sowie mehrere Bildverarbeitungs-/Vision-Kernels für die Filterung, Objekterkennung und Optical-Flow.
  • Multi-Prozessor-Vorbereitung.
  • Optionale Vektor-Gleitkommaeinheit für Anwendungen, die eine Beschleunigung erfordern.
Bild 4: Der Tensilica-Vision-P5-DSP liefert gegenüber der vorherigen DSP-Generation IVP-EP die drei- bis 13-fache Leistung.

Bild 4: Der Tensilica-Vision-P5-DSP liefert gegenüber der vorherigen DSP-Generation IVP-EP die drei- bis 13-fache Leistung. Cadence

Der Vision-P5-DSP basiert auf der „Tensilica Optimization Platform“ und verfügt über einen integrierten 2D-DMA (iDMA), der eine Datenübertragung mit hoher Bandbreite zwischen dem lokalen und dem Systemspeicher ermöglicht. Der Prozessor verfügt über eine optionale Vektor-Gleitkommaeinheit, bietet eine ECC-Unterstützung (Error Correction Code) für die Automobilqualifikation und eine ARM AMBA-4-AXI-Schnittstelle zum Systembus. Dadurch wird eine deutliche Leistungssteigerung gegenüber dem Vorgänger erreicht (siehe Bild 4).

In der Ruhe liegt die Kraft

Der Prozessor läuft mit einer niedrigeren Frequenz als CPUs und GPUs, erlaubt jedoch eine parallele Ausführung von mehreren Befehlen durch seine VLIW/SIMD-Architektur (Very Large Instruction Word / Single Instruction, Multiple Data). Als DSP kann er an 32 Datenelementen in einer einzigen Operation arbeiten und vier bis fünf Operationen parallel ausführen. Dieser parallele Ansatz spart viel Energie. Ein niedriger Energieverbrauch ermöglicht wiederum eine längere Batterielaufzeit.

Seine Optimierung auf Algorithmenebene macht den Signalprozessor zudem energieeffizient. Da der Befehlssatz und Datenpfad für die Ausführung von Bildverarbeitungsalgorithmen optimiert sind, lassen sich solche Daten viel effizienter verarbeiten als mit einer universellen CPU. Der DSP nutzt außerdem weitere Techniken, um den Stromverbrauch zu senken:

  • Taktsteuerung.
  • Maximales Resource-Sharing, um die Implementierungsfläche für die zu erledigenden Aufgaben zu minimieren.
  • Die richtigen Kompromisse für eine gute Performance bei einem annehmbaren Stromverbrauch.

Entwicklung

Da der DSP auf Tensilicas Optimierungsplattform basiert, lässt sich ein Prozessor speziell für die jeweiligen Designanforderungen entwickeln, und zwar für die eigenen Bildverarbeitungs-, Bilderkennungs- und sonstigen Verarbeitungsalgorithmen. Zu den Entwicklungswerkzeugen gehört ein fortschrittlicher C-Compiler, sodass Entwickler nur Code in C oder C++ schreiben müssen. Es gibt auch eine Bildverarbeitungsbibliothek mit Kernroutinen für Filterung, Erkennungsalgorithmen, Objekterkennung und Klassifizierung sowie Optical Flows. Optiken, Sensoren und Algorithmen, die in der Bildverarbeitung und Bilderkennung verwendet werden, verändern sich ständig. Der DSP bietet eine hohe Flexibilität, um mit diesen Änderungen Schritt halten zu können.

Die Entwicklung der Anwendungen ist auf einem Zyklus-genauen Befehlssatzsimulator möglich. Dadurch lässt sich die Leistung von neuen Algorithmen, welche die OpenCV-Bibliothek nutzen, Zyklus-genau voraussagen, bevor der eigentliche Baustein verfügbar ist.

Flotte Erweiterung

Es gibt Projekte, die einen sehr leistungsfähigen proprietären Code benötigen. In diesen Fällen lassen sich mit Tensilica-Instruction-Extensions (TIE) spezialisierte Befehle und weitere Hardware hinzufügen, damit der Prozessor diese Anwendung besser ausführen kann. Ein Beispiel hierfür ist die Histogrammberechnung. Obwohl der Vision P5 Histogramme sehr schnell berechnet, kann das Entwicklungsteam manchmal noch schnellere Berechnungen benötigen. Dafür gibt es ein Histogramm-Beschleunigungspaket, das mit TIE entwickelt wurde und das diese Berechnungen um den Faktor 24 beschleunigen kann, wodurch sich der Energieverbrauch um den Faktor 54 reduzieren lässt.

Durch das Verlagern von Bildverarbeitungs- und Bilderkennungsalgorithmen auf einen spezialisierten Low-Power-DSP lässt sich der Stromverbrauch deutlich reduzieren, wobei die für diese datenintensiven Anwendungen erforderliche Verarbeitungsleistung zur Verfügung steht. Der primäre Prozessor im Design kann sich dann auf die Kernfunktionen fokussieren.