Aktuell gibt es zwei widerstrebende Trends in der Datenverarbeitung:
- «Edge-Computing», in Begriff der vor allem in einem Atemzug mit dem Internet of Things genannt wird, verlagert die Rechenkapazitäten in die Peripherie («Edge») des Netzwerks. Ein typisches Beispiel sind sog. «intelligente Sensoren», welche nicht nur Daten aus der Umwelt aufnehmen, sondern diese auf eigebetteten Prozessoren in Echtzeit auszuwerten und dann nur aggregierte oder Metadaten weiterleiten.
- «Cloud-Computing» stellt den umgekehrten Trend dar, für welchen Daten zentral in grossen Rechenzentren gesammelt und dann auf Serverinfrastrukturen ausgewertet werden
Beide Paradigmen haben ihre jeweiligen Vor- und Nachteile.
- Edge-Computing benötigt deutlich geringere Raten für die Datenübertragung, Echtzeitanforderungen sind leichter zu erfüllen, die Komponenten sind autonom und die Systeme skalieren sehr gut. Ich in Bezug auf Datensicherheit oder Datenschutz hat Edge Computing Vorteile, da keine sensiblen Daten den Sensor verlassen.
Nachteile ergeben sich, wenn sehr komplexe Berechnungen notwendig sind, da Edge Devices nur über eher begrenzte Prozessorressourcen verfügen. Auch das Aufspielen von Updates, welche dann auf sehr viele dezentrale Komponenten verteilt werden müssen, ist komplexer, ebenso falls Tests neuer Software bzw. Algorithmen auf Daten in Echtzeit durchgeführt werden sollen.
- Dagegen stellt Cloud-Computing sehr hohe Anforderungen an die Übertragungsbandbreite und Latenz (falls Echtzeit eine Rolle spielt) und es stellt sich die generelle Frage der Datensicherheit. Vorteilhaft ist, dass praktisch beliebig komplexe Anwendung zur Verfügung gestellt werden können (dies auch für sehr ressourcenarme Edge-Devices) und Updates oder Neuerungen einfach implementiert werden können.
Für viele Anwendungen überwiegen die Vorteile beim Edge Computing, aber auch Cloud-Computing hat seine Berechtigung. Um die jeweiligen Vorteile beider Ansätze nutzen bzw. kombinieren zu können hat das CC ISN eine intelligente, Agenten-basierte Plattform zur Verarbeitung von Sensordaten in Echtzeit nach dem Paradigma des verteilten Rechnens entwickelt, die sog. «Embedded Vision Plattform» (EmbVis-Platform).
Abbildung 1: Interne Software Architektur des «VCA-Agent»
Zentrales Element dieser Plattform ist eine generische Software Komponente der sog. «VCA-Agent». VCA steht historisch für Video Content Analysis, aber mittlerweile beschränkt sich die Verarbeitung nicht mehr nur auf Videodaten, sondern umfasst allgemeine Sensordaten u.a. auch Audioaufnahmen. Bei der folgenden Beschreibung verwenden wir aber der Einfachheit halber immer den Begriff «Videodaten», auch wenn es sich im allgemeinen um beliebige Sensordaten handeln kann.
Die SW-Architektur des VCA-Agenten ist sehr einfach gehalten, Abhängigkeiten von externen Komponenten sind auf ein notwendiges Minimum reduziert und nur erlaubt, falls diese vom Typ «Open Source» sind. Dies ermöglicht – abhängig von den projektspezifischen Kundenanforderungen bzw. Anwendungen – die Portierung auf unterschiedliche Betriebssysteme bzw. Prozessorplattformen. Aktuell ist der Agent lauffähig unter Linux und Windows, sowie auf verschiedenen eingebetteten Rechnerplattformen und DSPs.
Jede VCA-Agent Instanz arbeitet grundsätzlich nach dem gleichen Prinzip (Abbildung 1):
- Der «VDP Client» (VDP steht für «Video Data Protocol») nimmt Video Daten von einer «Daten Quelle» entgegen. Daten Quellen sind entweder Sensoren (also z.B. Kameras), oder andere VCA-Agenten Instanzen.
- Der VDP Client übergibt die Daten an die sog. «Video Prozess Option», welche die eigentliche Verarbeitung der Daten übernimmt. Zusätzlich gibt der VDP Client die Daten transparent an einen «VDP Server» und einen «http Server» weiter. Letztere beiden Server erhalten ebenfalls die Resultate der Videodatenverarbeitung durch die Video Prozess Option (in der Regel Metadaten, z.B. Informationen über Objektpositionen).
- Der VDP Server stellt die Daten «upstream»-seitig über eine TCP/IP Schnittstelle zur Verfügung, damit sich weitere VCA-Agenten per VDP Client verbinden und die Daten abgreifen können (Abbildung 2). Diese Topologie, bei der mehrere Agenten verkettet werden, hat zusammengefasst die folgenden Vorteile (wir werden dies in den folgenden Abschnitten noch näher ausführen):
Einfache SW-Architektur des VCA-Agenten:
Jede VCA-Agenten Instanz hat nur eine dedizierte Aufgabe. Komplexe Aufgabenverteilungen innerhalb eines Agenten mit Multithreading Architekturen und Datensynchronisation sind nicht notwendig bzw. deren Verantwortung wird durch die Verkettung der VCA-Agenten an das Betriebssystem delegiert.
Einfaches Load Balancing auf Multicore Architekturen:
Auf Prozessoren mit Multicore Architekturen können die verschiedenen VCA-Agenten unterschiedlichen Prozessor Cores zugewiesen und damit die Ressourcen optimal ausgelastet werden.
Einfache Implementierung von «verteilten Aufgaben» (Distributed Computing):
Ebenso einfach können Prozessorressourcen von mehreren, verteilten Rechnern verwendet werden. Einzige Voraussetzung ist eine TCP/IP Verbindung zwischen den Maschinen, welche den Datenaustausch ermöglicht.
Hierarchisierung der Aufgaben:
Die wichtigen bzw. zeitkritischen Aufgaben im gesamten Verarbeitungsprozess können an die erste(n) Stelle(n) in der Prozesskette – d.h. nahe an die Datenquelle – gestellt werden, damit deren Verarbeitung nicht durch andere, langsamere Aufgaben ausgebremst wird.
- Der integrierte http Server ermöglicht einerseits das Abgreifen von Video- oder Meta- Daten, um die Funktionalität des Agenten zu kontrollieren bzw. zu optimieren. Anderseits bietet der http Server ein generisches Interface zur Parametrierung und Steuerung des VCA-Agenten.
Abbildung 2: VCA-Agenten können zur Aufgabenteilung flexibel aneinander gereiht werden.
Ein Agent stellt physisch immer dieselbe SW-Komponente dar, kann aber – abhängig von der Konfiguration bzw. Parametrierung – unterschiedene Aufgaben übernehmen:
- Grabber:
In dieser Konfiguration akquiriert der VCA-Agent Daten einer Sensorquelle, also typisch einer Kamera. Anschliessend sind beispielhaft verschiedene Sensoren aufgelistet, welche in unterschiedlichen Anwendung in Zusammenhang mit der EmbVis-Plattform eingesetzt und für welche die entsprechenden SW-Interfaces realisiert wurden.
- Data Processor:
In dieser Konfiguration verarbeitet der VCA-Agent die entgegengenommenen Video Daten auf Basis von intelligenten Bildverarbeitungsalgorithmen und stellt die ermittelten Metadaten upstream-seitig über die beiden Server zur Verfügung. Eine Liste von Anwendungen, welche mit der EmbVis-Plattform realisiert wurden, findet sich auf der Seite Vision-Sensorik-Systeme
- Actor:
Als Actor nimmt der VCA-Agent aktiv Einfluss auf Prozessvorgänge. Ein typische Beispiel wäre das Öffnen einer Türe auf Basis der Videodatenverarbeitung.
- Digital Video Recorder (DVR):
In dieser Konfiguration speichert der VCA-Agent wahlweise Video- und/oder Metadaten. Dies erfolgt einerseits zur Verbesserung von bestehenden oder der Entwicklungen von neuen Algorithmen auf realen Daten und anderseits zur Qualitätskontrolle.