-
QUERVERWEIS AUF VERWANDTE ANMELDUNGEN
-
Diese Patentanmeldung beansprucht Priorität des Einreichdatums der vorläufigen US-Patentanmeldung Seriennr. 62/611,536, eingereicht am 28. Dezember 2017, mit dem Titel „VISUAL FOG“, und der vorläufigen US-Patentanmeldung Seriennr. 62/691,464, eingereicht am 28. Juni 2018, mit dem Titel „VISUAL FOG“, deren Inhalt durch Bezugnahme in die vorliegende Anmeldung aufgenommen wird.
-
GEBIET DER BESCHREIBUNG
-
Diese Offenbarung betrifft allgemein das Gebiet von Rechensystemen und -netzen, und insbesondere, jedoch nicht ausschließlich Visual Computing.
-
HINTERGRUND
-
Fortschritte im modernen Computing haben zur erhöhten Verwendung von Visual Computing für verschiedenste Anwendungen des Mainstream Computing geführt. Insbesondere hat die rasche Bereitstellung von Kameras zahlreiche Anwendungen des Visual Computing gefördert, die auf Videoanalytik und visueller Datenverarbeitung im großen Maßstab beruhen. Bestehende Ansätze für ein Visual Computing im großen Maßstab unterliegen jedoch zahlreichen Einschränkungen. Zum Beispiel werden bestehende Ansätze für Visual Computing unter Verwendung starrer Designs implementiert, die Ressourcen ineffizient nutzen und eine begrenzte Funktionalität, Privacy und Sicherheit liefern. Als Ergebnis leiden bestehende Ansätze häufig an einer hohen Latenz und sind ungenau, unzuverlässig, inflexibel und unfähig, effizient zu skalieren.
-
Figurenliste
-
Die vorliegende Offenbarung lässt sich am besten anhand der folgenden detaillierten Beschreibung in Verbindung mit den beiliegenden Zeichnungen verstehen. Es ist zu beachten, dass gemäß der branchenüblichen Praxis verschiedene Merkmale nicht unbedingt maßstabsgetreu dargestellt sind und nur für Zwecke der Veranschaulichung verwendet werden. Wenn ein Maßstab gezeigt ist, explizit oder implizit, liefert dieser nur ein veranschaulichendes Beispiel. In anderen Ausführungsformen können die Abmessungen der verschiedenen Merkmale zugunsten einer klaren Erläuterung willkürlich vergrößert oder verkleinert sein.
- 1 veranschaulicht ein Beispiel einer Ausführungsform eines Visual Fog-Systems gemäß bestimmten Ausführungsformen.
- 2, 3, 4 und 5 veranschaulichen Beispiele von Internet der Dinge- (IoT) Netzen und -Architekturen, die gemäß bestimmten Ausführungsformen verwendet werden können.
- 6 und 7 veranschaulichen Beispiele von Computerarchitekturen, die gemäß bestimmten Ausführungsformen verwendet werden können.
- 8 veranschaulicht ein Beispiel einer Architektur für Visual Fog-Knoten.
- 9, 10, 11 und 12A-B veranschaulichen Beispiele von Ausführungsformen einer Visual Fog-Architektur.
- 13 und 14 veranschaulichen Beispiele von Ausführungsformen, die mit einem Visual Question Answering- (VQA) Rahmen assoziiert sind.
- 15 und 16 veranschaulichen Beispiele von Ausführungsformen einer vorrichtungszentrischen Planung für Visual Fog Computing.
- 17 veranschaulicht ein Beispiel einer Ausführungsform einer Laufzeit-Verarbeitungspipeline für eine Visual Fog-Architektur.
- 18 veranschaulicht ein Beispiel einer Ausführungsform einer visuellen Datenspeicher-Architektur.
- 19 veranschaulicht ein Beispiel einer Vision-Verarbeitungspipeline, die Metadaten zum Suchen visueller Daten nützt.
- 20 und 21 veranschaulichen Beispiele einer Darstellung visueller Metadaten unter Verwendung eines Property-Graphen.
- 22 veranschaulicht ein Beispiel einer Ausführungsform eines analytischen Bildformats, das dafür ausgebildet ist, um die visuelle Datenverarbeitung zu unterstützen.
- 23 veranschaulicht einen Leistungsgraphen für verschiedene Bildformate.
- 24A-C veranschaulichen ein Beispiel einer Ausführungsform eines kaskadierten konvolutionalen neuralen Netzes (CNN) mit mehreren Domänen.
- 25A-B, 26, 27, 28, 29, 30 und 31A-B veranschaulichen die Verwendung von Schmetterlingsoperationen für ein konvolutionales neurales Netz (CNN) mit mehreren Domänen.
- 32 und 33 veranschaulichen ein Beispiel einer Ausführungsform eines dreidimensionalen (3D) CNN zur Verarbeitung komprimierter visueller Daten.
- 34 veranschaulicht ein Beispiel eines Pixel-Domänen-CNN.
- 35 veranschaulicht ein Beispiel einer visuellen Pixel-Domänen-Analytikpipeline.
- 36 und 37 veranschaulichen Beispiele von Ausführungsformen visueller Kompressionsdomänen-Analytikpipelines.
- 38 veranschaulicht einen Leistungsgraphen, der die Präzision eines CNN zeigt, das unter Verwendung komprimierter visueller Daten trainiert wird.
- 39 veranschaulicht ein Flussdiagramm für ein Beispiel einer Ausführungsform einer kontextbewussten Bildkompression.
- 40A-C veranschaulichen ein Beispiel einer Ausführungsform eines Privacy-schützenden demographischen Identifikationssystems.
- 41, 42 und 43 veranschaulichen ein Beispiel einer Ausführungsform einer Privacy-schützenden verteilten visuellen Datenverarbeitung.
- 44, 45 und 46 veranschaulichen Beispiele von Ausführungsformen einer Self-Sovereign Vorrichtungsidentifikation für verteilte Rechennetze.
- 47 veranschaulicht ein Beispiel eines Vorrichtungs-Onboarding/Kommissionierens in einem Visual Fog-Netz ohne Konfliktlösung.
- 48 und 49 veranschaulichen Beispiele von Ausführungsformen einer Algorithmusidentifikation für Distributed Computing unter Verwendung einer Self-Sovereign-Blockchain.
- 50, 51 und 52 veranschaulichen Beispiele von Ausführungsformen zur Verarbeitung traditioneller und analytischer Bildformate.
- 53 veranschaulicht ein Flussdiagramm für ein Beispiel einer Ausführungsform einer Privacy-schützenden Demographieidentifikation.
- 54 veranschaulicht ein Flussdiagramm für ein Beispiel einer Ausführungsform einer Privacy-schützenden verteilten visuellen Verarbeitung.
- 55 veranschaulicht ein Beispiel eines Anwendungsfalls für einen Automotive Ubiquitous Witness.
- 56 veranschaulicht ein Beispiel eines Datenflusses für einen Ubiquitous Witness.
- 57 veranschaulicht ein Beispiel eines Anwendungsfalls für eine Automobil-Anomaliedetektion und -rekonstruktion.
- 58 veranschaulicht ein Beispiel eines Prozessflusses für eine IP-basierte Anomaliedetektion und -rekonstruktion.
- 59 veranschaulicht ein Beispiel eines Prozessflusses für eine ICN-basierte Anomaliedetektion und -rekonstruktion.
- 60 veranschaulicht ein Beispiel eines Prozessflusses für einen individuellen Knoten für eine ICN-basierte Anomaliedetektion und -rekonstruktion.
- 61 veranschaulicht ein Flussdiagramm für ein Beispiel einer Ausführungsform eines Ubiquitous Visual Computing Witness.
- 62 veranschaulicht ein Beispiel einer Ausführungsform eines konvergierten Knoten-Routers.
- 63 veranschaulicht ein Beispiel einer Netztopologie unter Verwendung von konvergierten Knoten-Routern.
- 64 veranschaulicht ein Beispiel einer Ausführungsform eines Bildspeichersystems, das eine kontextbewusste Bildkompression nutzt.
- 65 veranschaulicht ein Beispiel einer Zwischenrahmencodierung für eine kontextbewusste Bildkompression.
- 66, 67 und 68 veranschaulichen Beispiele von Ausführungsformen zum Vornehmen einer automatisierten semantischen Inferenz visueller Objekte unter Verwendung von Smart Kameras.
- 69 und 70 veranschaulichen Beispiele von Ausführungsformen, die mit Visual Fog Stream Multiplexing für eine verbesserte Sicherheit assoziiert sind.
- 71 veranschaulicht ein Beispiel einer Ausführungsform eines Privacy-schützenden VQA Datenflusses.
- 72 und 73 veranschaulichen Beispiele von Sanitisierungstechniken für einen Privacy-schützenden VQA Datenfluss.
- 74 und 75 veranschaulichen Pseudocode für einen rekursiven Quadrantenteilungsalgorithmus, der mit einem analytischen Bildformat assoziiert ist.
- 76A-E veranschaulichen ein Beispiel eines rekursiven Quadrantenteilungsalgorithmus auf einem Bild mit einer einzigen Region von Interesse.
- 77A-F veranschaulichen ein Beispiel eines rekursiven Quadrantenteilungsalgorithmus auf einem Bild mit mehreren Regionen von Interesse.
- 78A-B und 79A-B veranschaulichen Pseudocode für einen regionenbasierten Kachelbildungsalgorithmus mit einem analytischen Bildformat.
- 80A-C veranschaulichen ein Beispiel eines regionenbasierten Kachelbildungsalgorithmus auf einem Bild mit einer einzigen Region von Interesse.
- 81A-C veranschaulichen ein Beispiel verschiedener Kachelbildungsalgorithmen auf einem Bild mit mehreren überlappenden Regionen von Interesse.
- 82 veranschaulicht ein Beispiel eines integrierten Kundenmodells auf der Basis sowohl einer online als auch offline Kundenaktivität.
- 83 veranschaulicht ein Beispiel einer Verbindung des visuellen Fußabdrucks im Geschäft und der online Aktivität eines Kunden.
- 84 veranschaulicht ein Beispiel der Verwendung von Kundenaktivitäten online und im Geschäft, um ein robustes Kundenmodell zu konstruieren.
- 85 veranschaulicht einen Vergleich der Einkaufsaktivitäten mehrerer Benutzer.
- 86 veranschaulicht ein Beispiel der Verwendung der Kopfhaltung, um Kundendatenpunkte abzuleiten.
- 87 veranschaulicht ein Beispiel eines Datenflusses zur Erzeugung eines verbesserten Kundenmodells unter Verwendung sowohl traditioneller als auch visueller Daten.
- 88 veranschaulicht die Architektur eines Beispiels einer Anwendung, die integrierte Kundenprofile online und im Geschäft nützt.
- 89 veranschaulicht ein Flussdiagramm für ein Beispiel einer Ausführungsform eines kaskadierten CNN mit mehreren Domänen.
- 90 veranschaulicht ein Flussdiagramm für ein Beispiel einer Ausführungsform eines CNN mit mehreren Domänen.
- 91 veranschaulicht ein Flussdiagramm für ein Beispiel einer Ausführungsform einer Blockchain zur Verwaltung von Self-Sovereign-Vorrichtungsidentitäten.
- 92 veranschaulicht ein Flussdiagramm für ein Beispiel einer Ausführungsform einer Blockchain zur Verwaltung verteilter Rechenalgorithmen.
-
AUSFÜHRUNGSFORMEN DER OFFENBARUNG
-
Diese Patentanmeldung beansprucht Priorität des Einreichdatums der vorläufigen US-Patentanmeldung Seriennr. 62/611,536, eingereicht am 28. Dezember 2017, mit dem Titel „VISUAL FOG“, und der vorläufigen US-Patentanmeldung Seriennr. 62/691,464, eingereicht am 28. Juni 2018, mit dem Titel „VISUAL FOG“, deren Inhalt durch Bezugnahme in die vorliegende Anmeldung aufgenommen wird.
-
Die folgende Offenbarung stellt viele verschiedene Ausführungsformen, oder Beispiele, zur Implementierung verschiedener Merkmale der vorliegenden Offenbarung bereit. Spezifische Beispiele von Komponenten und Anordnungen werden im Nachstehenden beschrieben, um die vorliegende Offenbarung zu vereinfachen. Ferner kann die vorliegende Offenbarung Bezugszahlen und/oder -zeichen in den verschiedenen Beispielen wiederholen. Diese Wiederholung dient dem Zweck der Einfachheit und Klarheit und gibt selbst keine Beziehung zwischen den verschiedenen diskutierten Ausführungsformen und/oder Auslegungen vor. Verschiedene Ausführungsformen können verschiedene Vorteile aufweisen, und kein bestimmter Vorteil ist unbedingt für irgendeine Ausführungsform erforderlich.
-
Nun werden Beispiele von Ausführungsformen, die verwendet werden können, um die Merkmale und die Funktionalität dieser Offenbarung zu implementieren, mit detaillierterer Bezugnahme auf die beiliegenden FIGUREN beschrieben.
-
Visual Fog Einführung
-
1 veranschaulicht ein Beispiel einer Ausführungsform eines Visual Fog-Systems 100 gemäß bestimmten Ausführungsformen. Fortschritte im modernen Computing haben zu einer erhöhten Verwendung von Computer Vision-Technologien und Visual Computing im großen Maßstab für verschiedenste Mainstream-Rechenanwendungen geführt. Insbesondere wurden rasche Entwicklungen von Kameras und anderer Typen von Computer Vision-Technologien für verschiedenste visuelle Rechenanwendungen genutzt, die auf Videoanalytik und visueller Datenverarbeitung beruhen. Zum Beispiel kann Visual Computing im großen Maßstab für Sicherheit und Überwachung, Transport (z.B. Verkehrsüberwachung, Navigation, Parken, Infrastrukturplanung, Sicherheits- oder Vermisstenmeldungen), Einzelhandel (z.B. Kundenanalytik), Unternehmensanwendungen usw. genutzt werden.
-
Bestehende Ansätze für ein Visual Computing im großen Maßstab unterliegen jedoch zahlreichen Einschränkungen. Insbesondere werden bestehende Visual Computing-Ansätze unter Verwendung starrer Designs implementiert, die Ressourcen ineffizient nützen (z.B. Verarbeitung, Bandbreite und Speicherressourcen) und eine begrenzte Funktionalität bereitstellen. Zum Beispiel werden unter Verwendung bestehender Ansätze visuelle Daten typischerweise von Vorrichtungen am Rand eines Netzes aufgenommen und einfach zur Cloud zur Verarbeitung und zum Speichern befördert, wodurch stark auf die Infrastruktur der Cloud zurückgegriffen wird. Aufgrund der großen Größe visueller Daten verbraucht dieser Ansatz jedoch typischerweise eine signifikante Netzbandbreite und erfordert erhebliche Verarbeitungs- und Speicherressourcen in der Cloud. Als Ergebnis leiden bestehende Ansätze häufig an einer hohen Latenz und ineffizienten Ressourcennutzung, und können auch ungenau, unzuverlässig, inflexibel und unfähig zur effizienten Skalierung sein.
-
Demgemäß beschreibt diese Offenbarung verschiedene Ausführungsformen eines Visual Fog-Rechensystems 100 zum Vornehmen eines Visual Computing im großen Maßstab in einer effizienten und zuverlässigen Weise. Zum Beispiel anstatt ausschließlich oder primär auf Cloud-Ressourcen 130 für visuelle Rechenaufgaben zurückzugreifen, nützt das Visual Fog-System 100 sowohl die Cloud 130 als auch Edge-Ressourcen 110, die kollektiv als „Fog“ bezeichnet werden können. Auf diese Weise kann das Visual Fog-System 100 alle verfügbaren „Fog“-Ressourcen nützen, um Visual Computing-Aufgaben effizienter vorzunehmen, wodurch die Ressourcennutzung, Latenz, Genauigkeit, Präzision und Zuverlässigkeit verbessert werden. Außerdem, wie in dieser gesamten Beschreibung weiter beschrieben, kann das Visual Fog-System 100 unter Verwendung eines flexiblen Designs implementiert werden, das ad hoc Abfragen unterstützt und hochskalierbar ist, wodurch es für viele Visual Computing-Aufgaben und -Verwendungsfälle geeignet wird.
-
In der in 1 veranschaulichten Ausführungsform umfasst das Visual Fog-System 100 Edge-Ressourcen 110 und eine Vielzahl von assoziierten visuellen Sensoren 120, Cloud-Ressourcen 130 und Kommunikationsnetze 150, die jeweils im Nachstehenden weiter diskutiert werden. Außerdem können in verschiedenen Ausführungsformen diese Komponenten des Visual Fog-Systems 100 einige oder alle Aspekte der visuellen Rechenfunktionalität implementieren, die in dieser gesamten Beschreibung in Verbindung mit den übrigen FIGUREN beschrieben wird.
-
Edge-Ressourcen 100 können beliebige Ausrüstung, Vorrichtungen und/oder Komponenten umfassen, die nahe beim „Edge“ eines Kommunikationsnetzes eingesetzt oder angeschlossen sind. In der veranschaulichten Ausführungsform können Edge-Ressourcen 110 zum Beispiel Endbenutzervorrichtungen 112a,b (z.B. Desktops, Laptops, mobile Vorrichtungen), Internet der Dinge- (IoT) Vorrichtungen 114 und Gateways oder Router 116 umfassen, wie im Nachstehenden weiter beschrieben. Edge-Ressourcen 110 können miteinander und/oder mit anderen entfernten Netzen und Ressourcen (z.B. Cloud-Ressourcen 130) durch ein oder mehrere Kommunikationsnetze 150, wie ein lokales Netz 150a und/oder ein Weitverkehrsnetz 150b, kommunizieren. Außerdem umfassen in der veranschaulichten Ausführungsform die Edge-Ressourcen 110 kollektiv eine Vielzahl von visuellen Sensoren 120 (z.B. Kameras) zum Aufnehmen visueller Darstellungen und Daten, die mit ihrer Umgebung assoziiert sind. In einigen Ausführungsformen können zum Beispiel bestimmte Endbenutzervorrichtungen 112 und/oder IoT Vorrichtungen 114 eine oder mehrere Kameras und/oder andere Typen von visuellen Sensoren 120 umfassen. Visuelle Sensoren 120 können irgendeinen Typ von visuellen oder optischen Sensoren umfassen, wie Kameras, Ultraviolett- (UV) Sensoren, Laserentfernungsmesser (z.B. Lichtdetektion und Entfernungsmessung (LIDAR), Infrarot- (IR) Sensoren, elektrooptische/Infrarot- (EO/IR) Sensoren usw.
-
Die Endbenutzervorrichtungen 112 können eine beliebige Vorrichtung umfassen, die eine Interaktion mit einem Benutzer im Visual Fog-System 100 ermöglicht oder erleichtert, umfassend zum Beispiel Desktop Computer, Laptops, Tablets, Mobiltelefone und andere mobile Vorrichtungen, und am Körper tragbare Vorrichtungen (z.B. Smart Watches, Smart Glasses, Kopfhörer) unter anderen Beispielen.
-
Die IoT Vorrichtungen 114 können eine beliebige Vorrichtung umfassen, die in der Lage ist, mit einem Internet der Dinge- (IoT) System oder -Netz zu kommunizieren oder daran teilzunehmen. IoT Systeme können sich auf neue oder verbesserte ad hoc Systeme und Netze beziehen, die aus verschiedensten unterschiedlichen Vorrichtungen bestehen (z.B. IoT Vorrichtungen 114), welche miteinander arbeiten und für eine bestimmte Anwendung oder einen Verwendungsfall Synergien nutzen. Solche ad hoc Systeme treten auf mit der Entwicklung von mehr und mehr Produkten und Ausrüstung, „smart“ zu werden, was bedeutet, dass sie von Computerprozessoren gesteuert oder überwacht werden und mit anderen Vorrichtungen kommunizieren können. Zum Beispiel kann eine IoT Vorrichtung 114 einen Computerprozessor und/oder eine Kommunikationsschnittstelle aufweisen, um einen gemeinsamen Betrieb mit anderen Komponenten des Visual Fog-Systems 100 zu ermöglichen, wie mit Cloud-Ressourcen 130 und/oder anderen Edge-Ressourcen 110. IoT Vorrichtungen 114 können „Greenfield“-Vorrichtungen sein, die von Grund auf mit IoT Fähigkeiten entwickelt werden, oder „Brownfield“-Vorrichtungen, die erzeugt werden, indem IoT Fähigkeiten in bestehende Legacy-Vorrichtungen integriert werden, die anfänglich ohne IoT Fähigkeiten entwickelt wurden. Zum Beispiel können in einigen Fällen IoT-Vorrichtungen 114 aus Sensoren und Kommunikationsmodulen gebaut werden, die in „Dingen“ integriert sind oder daran angebracht sind, wie Ausrüstung, Spielzeug, Werkzeugen, Fahrzeugen, Lebewesen (z.B. Pflanzen, Tieren, Menschen) usw. Alternativ oder zusätzlich dazu können bestimmte IoT Vorrichtungen 114 auf Zwischenkomponenten beruhen, wie Edge-Gateways oder Routern 116, um mit den verschiedenen Komponenten des Systems 100 zu kommunizieren.
-
Die IoT Vorrichtungen 114 können verschiedene Typen von Sensoren zur Überwachung, Messung und Generierung von Sensordaten und Signalen umfassen, die mit Charakteristiken ihrer Umgebung assoziiert sind. In einigen Ausführungsformen können zum Beispiel bestimmte IoT Vorrichtungen 114 visuelle Sensoren 120 (z.B. Kameras) zum Aufnehmen von visuellen Darstellungen und Daten umfassen, die mit Charakteristiken ihrer Umgebung assoziiert sind. Die IoT Vorrichtungen 114 können auch andere Typen von Sensoren umfassen, die dafür ausgelegt sind, um Charakteristiken zu detektieren, wie Bewegung, Gewicht, physischen Kontakt, Temperatur, Wind, Geräusche, Licht, Position, Strahlung, Flüssigkeit, spezifische chemische Verbindungen, Batterielebensdauer, drahtlose Signale, Computerkommunikationen und Bandbreite, unter anderen Beispielen. Sensoren können physische Sensoren (z.B. physische Überwachungskomponenten) und virtuelle Sensoren (z.B. auf Software basierende Überwachungskomponenten) umfassen. Die IoT Vorrichtungen 114 können auch Betätiger umfassen, um verschiedene Aktionen in ihrer jeweiligen Umgebung vorzunehmen. Zum Beispiel kann ein Betätiger verwendet werden, um selektiv eine bestimmte Funktionalität zu aktivieren, wie Umschalten der Energie oder des Betriebs eines Sicherheitssystems (z.B. Alarm, Kamera, Verriegelungen) oder von Haushaltsgeräten (z.B. Audio-System, Beleuchtung, HVAC Anwendungen, Garagentore), unter anderen Beispielen.
-
Tatsächlich sieht diese Offenbarung die Verwendung eines potentiell grenzenlosen Universums von IoT Vorrichtungen 114 und assoziierten Sensoren/Betätigern vor. Die IoT Vorrichtungen 114 können zum Beispiel einen beliebigen Typ einer Ausrüstung und/oder von Vorrichtungen umfassen, die mit irgendeinem Typ des Systems 100 und/oder einer Industrie assoziiert sind, umfassend das Transportwesen (z.B. Autos, Fluglinien), die industrielle Herstellung, Energie (z.B. Kraftwerke), Telekommunikationen (z.B. Internet, zellulare und Fernsehdienstanbieter), Einzelhandel, Medizin (z.B. Gesundheitswesen, Pharmazie) und/oder Nahrungsmittel und Getränke, unter anderen. Im Transportwesen können IoT Vorrichtungen 114 zum Beispiel Ausrüstung und Vorrichtungen umfassen, die mit Flugfahrzeugen, Autos oder Schiffen assoziiert sind, wie Navigationssysteme, autonome Flug- oder Fahrsysteme, Verkehrsüberwachung und/oder Planungssysteme, Parksysteme und/oder beliebige interne mechanische oder elektrische Komponenten, die von Sensoren überwacht werden (z.B. Motoren). IoT Vorrichtungen 114 können auch Ausrüstung, Vorrichtungen und/oder Infrastruktur umfassen, die mit der industriellen Herstellung und Produktion, dem Versand (Warenverfolgung), Kommunikationsnetzen (z.B. Gateways, Routern, Servern, Mobilfunktürmen), Server-Farmen, elektrischen Kraftwerken, Windfarmen, Öl- und Gaspipelines, Wasseraufbereitung und -verteilung, Abwassersammlung und -aufbereitung und Wetterüberwachung (z.B. Temperatur-, Wind- und Feuchtigkeitssensoren) assoziiert sind, unter anderen Beispielen. IoT Vorrichtungen 114 können zum Beispiel auch einen beliebigen Typ von „Smart“-Vorrichtungen oder -Systemen umfassen, wie Smart-Unterhaltungssysteme (z.B. Fernsehen, Audio-Systeme, Videospielsysteme), Smart-Haushalts- oder -Büroanwendungen (z.B. Heizungs-Lüftungs-Klimatisierungs- (HVAC) Geräte, Kühlschränke, Waschmaschinen und Wäschetrocknern, Kaffeemaschinen), Energiesteuersysteme (z.B. automatische Elektrizitäts-, Licht- und HVAC Steuerungen), Sicherheitssysteme (z.B. Alarme, Verriegelungen, Kameras, Bewegungsmelder, Fingerabdruckscanner, Gesichtserkennungssysteme) und andere Heimautomatisierungssysteme, unter anderen Beispielen. IoT Vorrichtungen 114 können statisch lokalisiert sein, wie an einem Gebäude, einer Wand, einem Bodenbelag, einem Boden, einem Laternenmast, einem Schild, einem Wasserturm oder irgendeiner anderen fixen oder statischen Struktur montiert. IoT Vorrichtungen 114 können auch mobil sein, wie Vorrichtungen in Fahrzeugen oder Luftfahrzeugen, Drohnen, Verpackungen (z.B. zum Verfolgen von Warensendungen), mobilen Vorrichtungen und am Körper tragbaren Vorrichtungen, unter anderen Beispielen. Außerdem kann ein beliebiger Typ einer Edge-Ressource 110 auch als IoT Vorrichtung 114 angesehen werden, umfassend Endbenutzervorrichtungen 112 und Edge-Gateways 116, unter anderen Beispielen.
-
Edge-Gateways und/oder Router 116 können verwendet werden, um eine Kommunikation zu und von Edge-Ressourcen zu erleichtern. Zum Beispiel können Gateways 116 Kommunikationsfähigkeiten für bestehende Legacy-Vorrichtungen bereitstellen, die anfänglich ohne solche Fähigkeiten entwickelt wurden (z.B. „Brownfield“ IoT Vorrichtungen 114). Gateways 116 können auch verwendet werden, um die geographische Reichweite von Edge-Ressourcen 110 mit kurzreichweitigen, proprietären oder auf andere Weise begrenzten Kommunikationsfähigkeiten zu erweitern, wie IoT Vorrichtungen 114 mit Bluetooth oder ZigBee Kommunikationsfähigkeiten. Zum Beispiel können Gateways 116 als Vermittler zwischen IoT Vorrichtungen 114 und entfernten Netzen oder diensten dienen, indem ein Front-Haul für die IoT Vorrichtungen 114 unter Verwendung ihrer nativen Kommunikationsfähigkeiten (z.B. Bluetooth, ZigBee) bereitgestellt wird, und indem ein Back-Haul mit anderen Netzen 150 und/oder Could-Ressourcen 130 unter Verwendung eines weiteren verdrahteten oder drahtlosen Kommunikationsmediums (z.B. Ethernet, Wi-Fi, zellular) bereitgestellt wird. In einigen Ausführungsformen kann ein Gateway 116 durch eine dedizierte Gateway-Vorrichtung oder durch eine Universal-Vorrichtung, wie eine andere IoT Vorrichtung 114, Endbenutzervorrichtung 112 oder einen anderen Typ einer Edge-Ressource 110, implementiert werden. In einigen Fällen können Gateways 116 auch eine bestimmte Netzverwaltungs- und/oderanwendungsfunktionalität implementieren (z.B. Visual Computing-Funktionalität, IoT Anwendung und Verwaltungsfunktionalität), entweder getrennt oder in Verbindung mit anderen Komponenten, wie Cloud-Ressourcen 130 und/oder anderen Edge-Ressourcen 110.
-
Cloud-Ressourcen 130 können Ressourcen oder Dienste umfassen, die entfernt über ein Netz gehostet werden, und die ansonsten als in der „Cloud“ bezeichnet werden können. In einigen Ausführungsformen können Cloud-Ressourcen 130 zum Beispiel entfernt auf Servern in einem Datenzentrum gehostet werden (z.B. Anwendungsserver, Datenbankserver). Cloud-Ressourcen 130 können beliebige Ressourcen, Dienste und/oder Funktionalitäten umfassen, die von oder für Edge-Ressourcen 110 genützt werden können, umfassend, jedoch nicht beschränkt auf Visual Computing Anwendungen und Dienste, IoT Anwendungen und Verwaltungsdienste, Datenspeicherung, Rechendienste (z.B. Datenanalytik, Suchen, Diagnose und Fehlerverwaltung), Sicherheitsdienste (z.B. Überwachung, Alarme, Benutzerauthentifizierung), Kartierung und Navigation, Geolocation-Dienste, Netz- oder Infrastrukturverwaltung, Zahlungsverarbeitung, Audio- und Videostreaming, Nachrichtenübermittlung, Soziale Netzwerke, Nachrichten und Wetter, unter anderen Beispielen.
-
Kommunikationsnetze 150a,b können verwendet werden, um eine Kommunikation zwischen Komponenten des Systems 100 zu erleichtern. In der veranschaulichten Ausführungsform sind zum Beispiel Edge-Ressourcen 110 mit einem lokalen Netz (LAN) 150a verbunden, um die Kommunikation miteinander und/oder anderen entfernten Netzen oder Ressourcen zu erleichtern, wie Weitverkehrsnetzen (WAN) 150b und/oder Cloud-Ressourcen 130. In verschiedenen Ausführungsformen kann das Visual Fog-System 100 unter Verwendung einer beliebigen Anzahl oder eines beliebigen Typs von Kommunikationsnetz(en) 150 implementiert werden, umfassend lokale Netze, Weitverkehrsnetze, öffentliche Netze, das Internet, zellulare Netze, Wi-Fi-Netze, Netze mit kurzer Reichweite (z.B. Bluetooth oder ZigBee) und/oder beliebige andere verdrahtete oder drahtlose Kommunikationsnetze oder - medien.
-
Im Allgemeinen können Edge-Ressourcen 110 (und insbesondere IoT Vorrichtungen 114) ein extrem großes Volumen von und verschiedenste Daten erzeugen. Als Beispiel können Edge-Ressourcen 110 mit visuellen Sensoren 12 große Volumen visueller Daten generieren, wie Video und/oder Bilder. Edge-Ressourcen 110 laden typischerweise diese Daten in die Cloud 130 zur Verarbeitung und/oder zum Speichern ab. Cloud-Ressourcen 130 können jedoch nicht unbedingt dafür geeignet sein, um das rasch wachsende Volumen, die Verschiedenheit und Geschwindigkeit von Daten handzuhaben, die von IoT Vorrichtungen 114 und anderen Edge-Ressourcen 110 generiert werden. Zum Beispiel kann eine Cloud-basierte Verarbeitung unter bestimmten Umständen nicht ideal sein, wie die Verarbeitung von zeitempfindlichen oder hoch vertraulichen Daten, oder wenn Netzbandbreiteneinschränkungen angetroffen werden, unter anderen Beispielen. Demgemäß kann in einigen Ausführungsformen das Visual Fog-System 100 eine „Edge“-Verarbeitung nützen, um die Leistung und Fähigkeiten der Cloud 130 unter Verwendung von Edge-Ressourcen 110 zu erhöhen. Die Edge-Verarbeitung ist ein Ansatz, der die Verarbeitung bestimmter Daten am Netzrand involviert (z.B. unter Verwendung von Edge-Ressourcen 110), in der Nähe, wo die Daten generiert werden, anstatt große Volumen von Daten einfach an die Cloud zur Verarbeitung und zum Speichern zu befördern. Bestimmte Daten können weiterhin an die Cloud gesendet werden, wie geeignet, wie für eine tiefere Analyse und/oder zur langfristigen Speicherung. Die Edge-Verarbeitung kann verwendet werden, um die Mängel einer Cloud-basierten Verarbeitung auszugleichen (z.B. wenn die Cloud-basierte Verarbeitung ineffizient, ineffektiv und/oder unsicher ist), und somit die Handhabung des wachsenden Volumens, der Verschiedenheit und Geschwindigkeit der Daten verbessern, die von IoT Vorrichtungen 114 und/oder anderen Edge-Ressourcen 110 generiert werden. Zum Beispiel kann in einigen Fällen die Verarbeitung von Daten nahe bei ihrer Quelle (d.h. am Netzrand) anstatt in der Cloud die Leistung verbessern und/oder Systemausfälle oder -katastrophen vermeiden. Die Edge-Verarbeitung kann auch die Netzbandbreite aufrechterhalten, was besonders vorteilhaft sein kann, wenn Bandbreiteneinschränkungen und/oder eine begrenzte Netzkonnektivität angetroffen werden.
-
In einigen Fällen kann die kollektive Verwendung sowohl von Edge-Ressourcen 110 als auch Cloud-Ressourcen 130 als „Fog“ Computing bezeichnet werden, da die Funktionalität der „Cloud“ 130 effektiv durch die Edge-Ressourcen 110 erweitert wird, wodurch ein „Fog“ über dem Netzrand gebildet wird. Außerdem können in einigen Ausführungsformen Vorrichtungen 110 in dem „Fog“ miteinander unter Verwendung eines Zwischenverbindungsstandards oder -protokolls verbunden werden und/oder kommunizieren, wie der Open Interconnect Consortium (OIC) Standard Specification 1.0, herausgegeben von der Open Connectivity Foundation™ (OCF) am 23. Dezember 2015, die es Vorrichtungen ermöglicht, einander zu entdecken und miteinander verbunden zu werden; Thread, einem Netzprotokoll für Internet der Dinge- (IoT) Vorrichtungen, das in der „Smart“ Heimautomatisierung und ähnlichen Entwicklungen verwendet wird, entwickelt von einem Verbund von Organisationen, die als „Thread Group“ bezeichnet werden; des Optimized Link State Routing (OLSR) Protokolls; und/oder dem Better Approach to Mobile ad hoc Networking (B.A.T.M.A.N.), unter anderen Beispielen.
-
Außerdem kann in einigen Ausführungsformen das Fog Computing durch das Visual Fog-System 100 für Visual Computing-Anwendungen im großen Maßstab genützt werden. Zum Beispiel können in einigen Ausführungsformen die Komponenten des Visual Fog-Systems 100 (z.B. Edge-Ressourcen 110, Cloud-Ressourcen 130) mit einigen oder allen Aspekten der Visual Computing-Funktionalität implementiert werden, die in dieser gesamten Beschreibung in Verbindung mit den verbleibenden FIGUREN beschrieben wird.
-
Beliebige, alle oder einige der Rechenvorrichtungen des Systems 100 können dafür geeignet sein, ein beliebiges Betriebssystem auszuführen, umfassend Linux oder andere auf UNIX basierende Betriebssysteme, Microsoft Windows, Windows Server, MacOS, Apple iOS, Google Android oder irgendein individuelles und/oder proprietäres Betriebssystem, zusammen mit virtuellen Maschinen, die dafür geeignet sind, die Ausführung eines bestimmten Betriebssystems zu virtualisieren.
-
Obwohl 1 so beschrieben ist, dass es eine Vielzahl von Elementen enthält oder damit assoziiert ist, können nicht alle Elemente, die innerhalb des Systems 100 von 1 veranschaulicht sind, in jeder alternativen Implementierung der vorliegenden Offenbarung verwendet werden. Zusätzlich kann ein oder können mehrere der Elemente, die in Verbindung mit den Beispielen von 1 beschrieben werden, extern von dem System 100 lokalisiert sein, während in anderen Fällen bestimmte Elemente innerhalb oder als Abschnitt eines oder mehrerer der anderen beschriebenen Elemente sowie anderer Elemente, die in der veranschaulichten Implementierung nicht beschrieben sind, enthalten sein können. Ferner können bestimmte Elemente, die in 1 veranschaulicht sind, mit anderen Elementen kombiniert werden, sowie für alternative oder zusätzliche Zwecke zusätzlich zu den hier beschriebenen Zwecken verwendet werden.
-
Zusätzliche Ausführungsformen, die mit der Implementierung eines Visual Fog Computing-Systems 100 assoziiert sind, werden weiter in Verbindung mit den verbleibenden FIGUREN beschrieben. Demgemäß ist es klar, dass das Visual Fog-System 100 von 1 mit beliebigen Aspekten der Ausführungsformen implementiert werden kann, die in dieser gesamten Beschreibung beschrieben werden.
-
Beispiel Internet der Dinge- (IoT) Implementierungen
-
2 bis 5 veranschaulichen Beispiele von Internet der Dinge- (IoT) Netzen und -Vorrichtungen, die gemäß hier geoffenbarten Ausführungsformen verwendet werden können. Zum Beispiel können die Operationen und Funktionalität, die in dieser gesamten Beschreibung beschrieben werden, von einer IoT Vorrichtung oder Maschine in der Beispielform eines elektronischen Verarbeitungssystems verkörpert werden, in dem ein Satz oder eine Sequenz von Instruktionen ausgeführt werden kann, um zu bewirken, dass das elektronische Verarbeitungssystem eine beliebige der hier diskutierten Methodologien vornimmt, gemäß einem Beispiel einer Ausführungsform. Die Maschine kann eine IoT Vorrichtung oder ein IoT Gateway sein, umfassend eine Maschine, die verkörpert wird durch Aspekte eines Personalcomputers (PC), eines Tablet-PC, eines Personal Digital Assistant (PDA), eines Mobiltelefons oder eines Smartphones, oder einer beliebigen Maschine, welche Instruktionen ausführen kann (sequentiell oder auf andere Weise), die von dieser Maschine vorzunehmende Aktionen spezifiziert. Obwohl in dem obigen Beispiel nur eine einzelne Maschine dargestellt und bezeichnet wird, ist ferner eine solche Maschine auch so auszulegen, dass sie eine beliebige Ansammlung von Maschinen umfasst, die einzeln oder gemeinsam einen Satz (oder mehrere Sätze) von Instruktionen ausführen, um eine beliebige oder mehrere der hier diskutierten Methodologien vorzunehmen. Ferner sind diese und ähnliche Beispiele eines Prozessorbasierten Systems so auszulegen, dass sie einen beliebigen Satz einer oder mehrerer Maschinen umfassen, die von einem Prozessor (z.B. einem Computer) gesteuert oder betrieben werden, um einzeln oder gemeinsam Instruktionen auszuführen, um eine beliebige oder mehrere der hier diskutierten Methodologien vorzunehmen.
-
2 veranschaulicht ein Beispiel einer Domänentopologie für jeweilige Internet der Dinge- (IoT) Netze, die durch Verbindungen mit jeweiligen Gateways gekoppelt sind. Das Internet der Dinge (IoT) ist ein Konzept, in dem eine große Anzahl von Rechenvorrichtungen miteinander und mit dem Internet verbunden sind, um eine Funktionalität und eine Datenerfassung auf sehr niedrigen Ebenen bereitzustellen. Somit kann eine IoT Vorrichtung, wie hier verwendet, eine semiautonome Vorrichtung umfassen, die eine Funktion vornimmt, wie Abfühlen oder Steuern, unter anderen, in Kommunikation mit anderen IoT Vorrichtungen und einem breiteren Netz, wie dem Internet.
-
Häufig sind IoT Vorrichtungen hinsichtlich des Speichers, der Größe oder der Funktionalität begrenzt, wodurch es möglich wird, dass größere Anzahlen zu Kosten ähnlich kleineren Anzahlen oder größeren Vorrichtungen verwendet werden. Eine IoT Vorrichtung kann jedoch ein Smartphone, ein Laptop, Tablet oder PC oder irgendeine größere Vorrichtung sein. Ferner kann eine IoT Vorrichtung eine virtuelle Vorrichtung sein, wie eine Anwendung auf einem Smartphone oder einer anderen Rechenvorrichtung. IoT Vorrichtungen können IoT Gateways umfassen, die verwendet werden, um IoT Vorrichtungen mit anderen IoT Vorrichtungen und mit Cloud-Anwendungen zu koppeln, zum Speichern von Daten, zur Prozesssteuerung und dgl.
-
Netze von IoT Vorrichtungen können kommerzielle und Heimautomatisierungsvorrichtungen umfassen, wie Wasserverteilungssysteme, elektrische Energieverteilungssysteme, Pipelinesteuerungssysteme, Anlagensteuerungssysteme, Lichtschalter, Thermostate, Verriegelungen, Kameras, Alarme, Bewegungssensoren und dgl. Auf die IoT Vorrichtungen kann durch entfernte Computer, Server und andere Systeme zugegriffen werden, zum Beispiel um Systeme zu steuern oder auf Daten zuzugreifen.
-
Das zukünftige Wachstum des Internets und ähnlicher Netze kann sehr große Anzahlen von IoT Vorrichtungen involvieren. Demgemäß wird im Kontext der hier diskutierten Techniken eine Reihe von Innovationen für ein solches zukünftiges Netzwerken die Notwendigkeit für alle diese Schichten behandeln, ungehindert zu wachsen, um verbundene Ressourcen zu finden und zugänglich zu machen und um die Fähigkeit zu unterstützen, verbundene Ressourcen zu verbergen und zu kategorisieren. Eine beliebige Anzahl von Netzprotokollen und Kommunikationsstandards kann verwendet werden, wobei jedes Protokoll und jeder Standard dafür ausgebildet ist, spezifische Ziele zu behandeln. Ferner sind die Protokolle ein Teil des Fabric sind, das für Menschen zugängliche Dienste unterstützt, die ungeachtet des Orts, der Zeit oder des Raums arbeiten. Die Innovationen umfassen Dienstlieferung und assoziierte Infrastruktur, wie Hardware und Software; Sicherheitserhöhungen; und das Bereitstellen von Diensten auf der Basis der Quality of Service- (QoS) Bedingungen, die auf der Dienstebene und in Dienstliefervereinbarungen spezifiziert werden. Wie klar ist, birgt die Verwendung von IoT Vorrichtungen und Netzen, wie jenen, die in 2 bis 5 vorgestellt werden, eine Reihe neuer Herausforderungen in einem heterogenen Konnektivitätsnetz, das eine Kombination von verdrahteten und drahtlosen Technologien umfasst.
-
2 zeigt spezifisch eine vereinfachte Zeichnung einer Domänentopologie, die für eine Reihe von IoT Vorrichtungen 204 umfassende Internet der Dinge-(IoT) Netze verwendet werden kann, wobei die IoT Netze 256, 258, 260, 262 durch Backbone-Verbindungen 202 mit jeweiligen Gateways gekoppelt sind. Zum Beispiel kann eine Reihe von IoT Vorrichtungen 204 mit einem Gateway 254 kommunizieren, und miteinander durch das Gateway 254. Um die Zeichnung zu vereinfachen, ist nicht jede IoT Vorrichtung 204 oder Kommunikationsverbindung (z.B. Verbindung 216, 222, 228 oder 232) markiert. Die Backbone-Verbindungen 202 können eine beliebige Anzahl verdrahteter oder drahtloser Technologien umfassen, einschließlich optischer Netze, und können ein Teil eines lokalen Netzes (LAN), eines Weitverkehrsnetzes (WAN) oder des Internets sein. Zusätzlich erleichtern solche Kommunikationsverbindungen optische Signalwege sowohl unter den IoT Vorrichtungen 204 als auch den Gateways 254, umfassend die Verwendung von MuXing/deMUXing Komponenten, die eine Zwischenverbindung der verschiedenen Vorrichtungen erleichtern.
-
Die Netztopologie kann eine beliebige Anzahl von Typen von IoT Netzen umfassen, wie ein Mesh-Netz, das mit dem Netz 256 versehen ist, unter Verwendung von Bluetooth Low Energie (BLE) Verbindungen 222. Andere Typen von IoT Netzen, die vorhanden sein können, umfassen ein drahtloses lokales Netz (WLAN) 258, das verwendet wird, um mit den IoT Vorrichtungen 204 durch IEEE 802.11 (Wi-Fi®) Verbindungen 228 zu kommunizieren, ein zellulares Netz 260, das verwendet wird, um mit den IoT Vorrichtungen 204 durch ein LTE/LTE-A (4G) oder 5G zellulares Netz zu kommunizieren, und ein Low Power Wide Area (LPWA) Netz 262, zum Beispiel ein LPWA Netz, das mit der LoRaWan Spezifikation kompatibel ist, die von der LoRa Alliance veröffentlicht wird, oder ein IPv6 Over Low Power Wide Area Networks (LPWAN) Netz, das mit einer Spezifikation kompatibel ist, die von der Internet Engineering Task Force (IETF) veröffentlicht wird. Ferner können die jeweiligen IoT Netze mit einem externen Netzanbieter kommunizieren (z.B. einem Tier 2 oder Tier 3 Anbieter), unter Verwendung einer beliebigen Anzahl von Kommunikationsverbindungen, wie einer LTE zellularen Verbindung, einer LPWA Verbindung oder einer Verbindung auf der Basis des IEEE-802.15.4 Standards, wie Zigbee®. Die jeweiligen IoT Netze können auch mit der Verwendung verschiedenster Netz- und Internetanwendungsprotokolle arbeiten, wie Constrained Application Protocol (CoAP). Die jeweiligen IoT Netze können auch mit Koordinatorvorrichtungen integriert werden, die eine Kette von Verbindungen bereitstellen, welche einen Cluster-Baum verbundener Vorrichtungen und Netze bildet.
-
Jedes dieser IoT Netze kann Möglichkeiten für neue technische Merkmale bieten, wie die hier beschriebenen. Die verbesserten Technologien und Netze können das exponentielle Wachstum von Vorrichtungen und Netzen ermöglichen, einschließlich der Verwendung von IoT Netzen als Fog-Vorrichtungen oder -Systeme. Mit der wachsenden Verwendung solcher verbesserten Technologien können die IoT Netze für eine Selbstverwaltung, funktionelle Entwicklung und Kollaboration entwickelt werden, ohne dass eine direkte menschliche Intervention notwendig ist. Die verbesserten Technologien können sogar ermöglichen, dass IoT Netze ohne zentralisierte gesteuerte Systeme funktionieren. Demgemäß können die hier beschriebenen verbesserten Technologien verwendet werden, um die Netzverwaltung und Betriebsfunktionen weit über aktuelle Implementierungen hinaus zu automatisieren und zu verstärken.
-
In einem Beispiel können Kommunikationen zwischen den IoT Vorrichtungen 204, wie über die Backbone-Verbindungen 202, durch ein dezentralisiertes System zur Authentifizierung, Autorisierung und Kontoführung (AAA) geschützt werden. In einem dezentralisierten AAA System können verteilte Zahlungs-, Guthaben-, Prüf-, Autorisierungs- und Authentifizierungssysteme quer über eine miteinander verbundene heterogene Netzinfrastruktur implementiert werden. Dies ermöglicht es Systemen und Netzen, sich zu autonomen Betrieben zu bewegen. Bei diesen Typen autonomer Betriebe können Maschinen sogar Verträge über menschliche Ressourcen abschließen und Partnerschaften mit anderen Maschinennetzen verhandeln. Dies kann das Erzielen gemeinsamer Ziele und eine ausgeglichene Diensterbringung gegen festgelegte, geplante Dienstebenenvereinbarungen sowie das Erzielen von Lösungen gestatten, die eine Dosierung, Messung, Nachvollziehbarkeit und Verfolgbarkeit bereitstellen. Die Erzeugung neuer Versorgungskettenstrukturen und - verfahren kann es ermöglichen, dass eine Vielfalt von Diensten erzeugt wird, auf ihren Wert untersucht wird und ohne jede menschliche Intervention verworfen wird.
-
Solche IoT Netze können durch die Integration von Abfühltechnologien, wie Ton, Licht, elektronischer Verkehr, Gesichts- und Mustererkennung, Geruch, Vibration, in die autonomen Organisationen unter den IoT Vorrichtungen weiter verstärkt werden. Die Integration von Berührungssystemen kann eine systematische und autonome Kommunikation und Koordination einer Dienstbereitstellung gegenüber Vertragsdienstzielen, einer Orchestrierung und Quality of Service- (QoS) basierten Verteilung und Fusion von Ressourcen ermöglichen. Einige der einzelnen Beispiele einer netzbasierten Ressourcenverarbeitung umfassen die folgenden.
-
Das Mesh-Netz 256 kann zum Beispiel durch Systeme verstärkt werden, die Inline-Daten-zu-Informationen-Transformationen vornehmen. Zum Beispiel können selbstformende Ketten von Verarbeitungsressourcen, die in Netz mit mehreren Verbindungen umfassen, die Transformation von Rohdaten in Informationen auf effiziente Weise verteilen, sowie die Fähigkeit zur Differenzierung zwischen Assets und Ressourcen sowie die assoziierte Verwaltung von jedem davon. Ferner können die geeigneten Komponenten einer Infrastruktur und Ressourcen-basierten Trust- und Service-Indices eingesetzt werden, um die Datenintegrität, -qualität, - sicherheit zu verbessern und eine Metrik der Datenzuverlässigkeit bereitstellen.
-
Das WLAN Netz 258 kann zum Beispiel Systeme verwenden, die eine Standardkonvertierung vornehmen, um eine Multi-Standard-Konnektivität bereitzustellen, wodurch es den IoT Vorrichtungen 204 ermöglicht wird, verschiedene Protokolle zu verwenden, um zu kommunizieren. Weitere Systeme können eine nahtlose Interkonnektivität quer über eine Multi-Standard-Infrastruktur bereitstellen, die sichtbare Internetressourcen und verborgene Internetressourcen umfasst.
-
Kommunikationen in dem zellularen Netz 260 können zum Beispiel durch Systeme verstärkt werden, die Daten abladen, Kommunikationen auf mehrere entfernte Vorrichtungen erweitern, oder beides. Das LPWA Netz 262 kann Systeme umfassen, die Nicht-Internetprotokoll- (IP) zu IP Zwischenverbindungen, Adressierung und Routing vornehmen. Ferner kann jede der IoT Vorrichtungen 204 den geeigneten Sender/Empfänger für Weitverkehrskommunikationen mit dieser Vorrichtung umfassen. Ferner kann jede IoT Vorrichtung 204 andere Sender/Empfänger für Kommunikationen unter Verwendung zusätzlicher Protokolle und Frequenzen umfassen.
-
Schließlich können Cluster von IoT Vorrichtungen ausgestattet sein, um mit anderen IoT Vorrichtungen sowie mit einem Cloud-Netz zu kommunizieren. Dies kann es den IoT Vorrichtungen gestatten, ein ad hoc Netz zwischen den Vorrichtungen zu bilden, wodurch es ermöglicht wird, dass sie als einzelne Vorrichtung funktionieren, was als Fog-Vorrichtung bezeichnet werden kann. Diese Auslegung wird mit Bezugnahme auf 3 im Nachstehenden weiter diskutiert.
-
3 veranschaulicht ein Cloud Computing-Netz in Kommunikation mit einem Mesh-Netz von IoT Vorrichtungen (Vorrichtungen 302), die als Fog-Vorrichtung am Rand des Cloud Computing-Netzes arbeiten. Das Mesh-Netz von IoT Vorrichtungen kann als Fog 320 bezeichnet werden, der am Rand der Cloud 300 arbeitet. Um die Darstellung zu vereinfachen, ist nicht jede IoT Vorrichtung 302 markiert.
-
Der Fog 320 kann als massiv miteinander verbundenes Netz angesehen werden, in dem eine Reihe von IoT Vorrichtungen 302 miteinander in Kommunikation stehen, zum Beispiel durch Funkverbindungen 322. Als Beispiel kann diese miteinander verbundene Netz unter Verwendung einer Zwischenverbindungsspezifikation erleichtert werden, die von der Open Connectivity Foundation™ (OCF) herausgegeben wird. Dieser Standard ermöglicht es Vorrichtungen, einander zu finden und Kommunikationen für Zwischenverbindungen herzustellen. Andere Zwischenverbindungsprotokolle können auch verwendet werden, umfassend zum Beispiel das Optimized Link State Routing (OLSR) Protokoll, das Better Approach to Mobile ad hoc Networking (B.A.T.M.A.N.) Routing-Protokoll oder das OMA Lightweight M2M- (LWM2M) Protokoll, unter anderen.
-
Drei Typen von IoT Vorrichtungen 302 sind in diesem Beispiel gezeigt, Gateways 304, Datenaggregatoren 326 und Sensoren 328, obwohl beliebige Kombinationen von IoT Vorrichtungen 302 und Funktionalität verwendet werden können. Die Gateways 304 können Edge-Vorrichtungen sein, die Kommunikationen zwischen der Cloud 300 und dem Fog 320 bereitstellen, und auch die Back-end-Prozessfunktion für Daten bereitstellen, die von Sensoren 328 erhalten werden, wie Bewegungsdaten, Flussdaten, Temperaturdaten und dgl. Die Datenaggregatoren 326 können Daten von einer beliebigen Anzahl der Sensoren 328 sammeln und die Back-end-Verarbeitungsfunktion für die Analyse vornehmen. Die Ergebnisse, Rohdaten, oder beides, können zur Cloud 300 durch die Gateways 304 weitergeleitet werden. Die Sensoren 328 können vollständige IoT Vorrichtungen 302 sein, die zum Beispiel in der Lage sind, sowohl Daten zu sammeln als auch die Daten zu verarbeiten. In einigen Fällen können die Sensoren 328 eine begrenztere Funktionalität aufweisen, zum Beispiel Daten sammeln und es den Datenaggregatoren 326 oder Gateways 304 gestatten, die Daten zu verarbeiten.
-
Kommunikationen von irgendeiner IoT Vorrichtung 302 können entlang eines zweckmäßigen Wegs (z.B. eines zweckmäßigsten Wegs) zwischen irgendwelchen der IoT Vorrichtungen 302 weitergeleitet werden, um die Gateways 304 zu erreichen. In diesen Netzen stellt die Anzahl von Zwischenverbindungen eine erhebliche Redundanz bereit, wodurch Kommunikationen aufrechterhalten werden können, sogar mit dem Verlust einer Anzahl von IoT Vorrichtungen 302. Ferner kann es die Verwendung eines Mesh-Netzes ermöglichen, dass IoT Vorrichtungen 302, die sehr wenig Leistung aufweisen oder in einer Distanz von zu verwendender Infrastruktur lokalisiert sind, verwendet werden, da der Bereich zur Verbindung mit einer anderen IoT Vorrichtung 302 viel kleiner sein kann als der Bereich zur Verbindung mit den Gateways 304.
-
Der von diesen IoT Vorrichtungen 302 bereitgestellte Fog 320 kann Vorrichtungen in der Cloud 300 präsentiert werden, wie einem Server 306, als einzelne Vorrichtung, die am Rand der Cloud 300 lokalisiert ist, z.B. eine Fog-Vorrichtung. In diesem Beispiel können die Alarme, die von der Fog-Vorrichtung kommen, gesendet werden, ohne als ankommend von der spezifischen IoT Vorrichtung 302 innerhalb des Fogs 320 identifiziert zu werden. Auf diese Weise kann der Fog 320 als verteilte Plattform angesehen werden, die Rechen- und Speicherressourcen bereitstellt, um eine Verarbeitung oder datenintensive Aufgaben vorzunehmen, wie Datenanalytik, Datenaggregation und Machine Learning, unter anderem.
-
In einigen Beispielen können die IoT Vorrichtungen 302 unter Verwendung eines imperativen Programmierungsstils ausgelegt werden, z.B. wobei jede IoT Vorrichtung 302 eine spezifische Funktion und Kommunikationspartner aufweist. Die IoT Vorrichtungen 302, welche die Fog-Vorrichtung bilden, können jedoch in einem deklarativen Programmierungsstil ausgelegt werden, wodurch es den IoT Vorrichtungen 302 ermöglicht wird, ihre Operationen und Kommunikation neu auszulegen, wie erforderliche Ressourcen ansprechend auf Bedingungen, Anfragen und Vorrichtungsausfälle zu bestimmen. Als Beispiel kann eine Anfrage von einem Benutzer, der an einem Server 306 lokalisiert ist, über die Operationen eines Ausrüstungsteilsatzes, der von den IoT Vorrichtungen 302 überwacht wird, dazu führen, dass die Fog-Vorrichtung 320 die IoT Vorrichtungen 302 auswählt, wie bestimmte Sensoren 328, die zur Beantwortung der Anfrage benötigt werden. Die Daten von diesen Sensoren 328 können dann aggregiert und durch eine beliebige Kombination der Sensoren 328, Datenaggregatoren 326 oder Gateways 304 analysiert werden, bevor sie von der Fog-Vorrichtung 320 zu dem Sever 306 weitergesendet werden, um die Anfrage zu beantworten. In diesem Beispiel können die IoT Vorrichtungen 302 in dem Fog 320 die verwendeten Sensoren 328 auf der Basis der Anfrage auswählen, wie Daten von den Flusssensoren oder Temperatursensoren hinzufügen. Wenn einige der IoT Vorrichtungen 302 nicht operational sind, können ferner die anderen IoT Vorrichtungen 302 in der Fog-Vorrichtung 320 analoge Daten bereitstellen, wenn verfügbar.
-
4 veranschaulicht eine Zeichnung eines Cloud Computing-Netzes oder einer Cloud 400 in Kommunikation mit einer Anzahl von Internet der Dinge- (IoT) Vorrichtungen. Die Cloud 400 kann das Internet darstellen oder kann ein lokales Netz (LAN) oder ein Weitverkehrsnetz (WAN) sein, wie ein proprietäres Netz für eine Firma. Die IoT Vorrichtungen können eine beliebige Anzahl verschiedener Typen von Vorrichtungen umfassen, die in verschiedene Kombinationen gruppiert sind. Zum Beispiel kann eine Verkehrsregelungsgruppe 406 IoT Vorrichtungen entlang von Straßen in einer Stadt umfassen. Diese IoT Vorrichtungen können Verkehrsampeln, Verkehrsstrommonitore, Kameras, Wettersensoren und dgl. umfassen. Die Verkehrsregelungsgruppe 406 oder andere Teilgruppen können mit der Cloud 400 durch verdrahtete oder drahtlose Verbindungen 408 in Kommunikation stehen, wie LPWA Verbindungen, optische Verbindungen und dgl. Ferner kann ein verdrahtetes oder drahtloses Teilnetz 412 es den IoT Vorrichtungen gestatten, miteinander zu kommunizieren, wie durch ein lokales Netz, ein drahtloses lokales Netz und dgl. Die IoT Vorrichtungen können eine andere Vorrichtung verwenden, wie ein Gateway 510 oder 528, um mit entfernen Orten zu kommunizieren, wie der Cloud 500; die IoT Vorrichtungen können auch einen oder mehrere Server 530 verwenden, um eine Kommunikation mit der Cloud 500 oder mit dem Gateway 510 zu erleichtern. Zum Beispiel kann der eine oder können die mehreren Server 530 als Zwischennetzknoten arbeiten, um eine lokale Edge-Cloud oder Fog-Implementierung in einem lokalen Netz zu unterstützen. Ferner kann das Gateway 528, das dargestellt ist, in einer Auslegung Cloud-zu-Gateway-zu vielen Edge-Vorrichtungen arbeiten, wie mit den verschiedenen IoT Vorrichtungen 514, 520, 524, die eingeschränkt oder dynamisch sind für eine Zuweisung und Verwendung von Ressourcen in der Cloud 500.
-
Andere Beispiele von Gruppen von IoT Vorrichtungen können entfernte Wetterstationen 414, lokale Informationsterminals 416, Alarmsysteme 418, Bankomaten 420, Alarmpaneele 422 oder sich bewegende Fahrzeuge, wie Einsatzfahrzeuge 424 oder andere Fahrzeuge 426, umfassen, unter vielen anderen. Jede dieser IoT Vorrichtungen kann mit anderen IoT Vorrichtungen, mit Servern 404, mit einer anderen IoT Fog-Vorrichtung oder einem System (nicht gezeigt, aber in 3 dargestellt) oder einer Kombination darin in Kommunikation stehen. Die Gruppen von IoT Vorrichtungen können in verschiedenen Heim-, kommerziellen oder industriellen Umgebungen angeordnet sein (einschließlich privater oder öffentlicher Umgebungen).
-
Wie aus 4 ersichtlich ist, kann eine große Anzahl von IoT Vorrichtungen durch die Cloud 400 kommunizieren. Dies kann es verschiedenen IoT Vorrichtungen gestatten, Informationen autonom von anderen Vorrichtungen anzufordern oder diesen bereitzustellen. Zum Beispiel kann eine Gruppe von IoT Vorrichtungen (z.B. Verkehrsregelungsgruppe 406) eine aktuelle Wettervorhersage von einer Gruppe von entfernten Wetterstationen 414 anfordern, welche die Vorhersage ohne menschliche Intervention liefern können. Ferner kann ein Einsatzfahrzeug 424 von einem Bankomaten 420 alarmiert werden, dass gerade ein Diebstahl stattfindet. Während sich das Einsatzfahrzeug 424 dem Bankomaten 420 nähert, kann es auf die Verkehrsregelungsgruppe 406 zugreifen, um eine Freigabe für den Ort anzufordern, zum Beispiel indem Ampeln auf Rot geschaltet werden, um Querverkehr an einer Kreuzung mit einer ausreichenden Zeit zu blockieren, damit das Einsatzfahrzeug 424 einen ungehinderten Zugang zu der Kreuzung hat.
-
Cluster von IoT Vorrichtungen, wie die entfernten Wetterstationen 414 oder die Verkehrsregelungsgruppe 406, können ausgestattet sein, um mit anderen IoT Vorrichtungen sowie mit der Cloud 400 zu kommunizieren. Dies kann es den IoT Vorrichtungen gestatten, ein ad hoc Netz zwischen den Vorrichtungen zu bilden, wodurch es ihnen ermöglicht wird, als einzelne Vorrichtung zu funktionieren, die als Fog-Vorrichtung oder -System bezeichnet werden kann (z.B. wie im Vorstehenden mit Bezugnahme auf 3 beschrieben).
-
5 ist ein Blockbild eines Beispiels von Komponenten, die in einer IoT Vorrichtung 550 zur Implementierung der hier beschriebenen Techniken vorhanden sein können. Die IoT Vorrichtung 550 kann beliebige Kombinationen der Komponenten aufweisen, die in dem Beispiel gezeigt sind oder auf die in der obigen Offenbarung Bezug genommen wird. Die Komponenten können als ICs, Abschnitte davon, diskrete elektronische Vorrichtungen oder andere Module, Hardware, Software, Firmware oder eine Kombination davon, die in der IoT Vorrichtung 550 angepasst sind, oder als Komponenten, die auf andere Weise innerhalb des Gerüsts eines größeren Systems eingebaut sind, implementiert werden. Zusätzlich soll das Blockbild von 5 eine ausgearbeitete Ansicht von Komponenten der IoT Vorrichtung 550 zeigen. Einige der gezeigten Komponenten können jedoch weggelassen werden, zusätzliche Komponenten können vorhanden sein, und eine andere Anordnung der gezeigten Komponenten kann in anderen Implementierungen auftreten.
-
Die IoT Vorrichtung 550 kann einen Prozessor 552 umfassen, der ein Mikroprozessor, ein Mehrkernprozessor, ein Multithread Prozessor, ein Prozessor mit ultraniedriger Spannung, ein eingebetteter Prozessor oder ein anderes bekanntes Verarbeitungselement sein kann. Der Prozessor 552 kann ein Teil von einem System-on-Chip (SoC) sein, in dem der Prozessor 552 und andere Komponenten zu einer einzelnen integrierten Schaltung gebildet sind, oder eine einzelne Packung, wie die Edison™ oder Galileo™ SoC Boards von Intel. Als Beispiel kann der Prozessor 552 einen Intel® Architecture Core™basierten Prozessor umfassen, wie Quark™, Atom™, einen i3, einen i5, einen i7 oder einen MCU-Klasse-Prozessor, oder einen anderen solchen Prozessor, der von der Intel® Corporation, Santa Clara, Kalifornien, vertrieben wird. Es kann jedoch eine beliebige Anzahl anderer Prozessoren verwendet werden, wie vertrieben von Advanced Micro Devices, Inc. (AMD), Sunnyvale, Kalifornien, ein MIPSbasiertes Design von MIPS Technologies, Inc., Sunnyvale, Kalifornien, ein ARM-basiertes Design, lizensiert von ARM Holdings, Ltd. oder einem Kunden davon, oder ihren Lizenznehmern oder Anwendern. Die Prozessoren können Einheiten umfassen, wie einen AS-A10 Prozessor von Apple® Inc., einen Snapdragon™ Prozessor von Qualcomm® Technologies, Inc., oder einen OMAP™ Prozessor von Texas Instruments, Inc.
-
Der Prozessor 552 kann mit einem Systemspeicher 554 über eine Zwischenverbindung 556 (z.B. einen Bus) kommunizieren. Eine beliebige Anzahl von Speichervorrichtungen kann verwendet werden, um eine gegebene Menge an Systemspeicher bereitzustellen. Als Beispiele kann der Speicher ein Speicher mit wahlfreiem Zugriff (RAM9 gemäß einem Joint Electron Devices Engineering Council (JEDEC) Design sein, wie der DDR oder mobile DDR Standards (z.B. LPDDR, LPDDR2, LPDDR3 oder LPDDR4). In verschiedenen Implementierungen können die einzelnen Speichervorrichtungen von einer beliebigen Anzahl verschiedener Packungstypen sein, wie eine Einzel-Die-Packung (SDP), eine Dual-Die-Packung (DDP) oder eine Quad-Die-Packung (Q17P). Diese Vorrichtungen können in einigen Beispielen direkt auf eine Mutterplatine gelötet werden, um eine Lösung mit niedrigerem Profil bereitzustellen, während in anderen Beispielen die Vorrichtungen als ein oder mehrere Speichermodule ausgelegt sind, die ihrerseits mit der Mutterplatine über einen gegebenen Anschluss gekoppelt sind. Eine beliebige Anzahl anderer Speicherimplementierungen kann verwendet werden, wie andere Typen von Speichermodulen, z.B. Dual Inline Speichermodule (DIMMs) verschiedenster Art, umfassend, jedoch nicht beschränkt auf MicroDIMMs oder MiniDIMMS.
-
Um für eine persistente Speicherung von Informationen, wie Daten, Anwendungen, Betriebssystemen usw., zu sorgen, kann ein Speicher 558 auch mit dem Prozessor 552 über die Zwischenverbindung 556 gekoppelt sein. In einem Beispiel kann der Speicher 558 über ein Solid State Plattenlaufwerk (SSDD) implementiert sein. Andere Vorrichtungen, die für den Speicher 558 verwendet werden können, umfassen Flash-Speicherkarten, wie SD Karten, MikroSD Karten, xD Bildkarten und dgl., und USB Flash-Laufwerke. In Implementierungen mit niedriger Leistung kann der Speicher 558 ein Speicher auf einem Chip oder Register sein, die mit dem Prozessor 552 assoziiert sind. In einigen Beispielen kann der Speicher 558 jedoch unter Verwendung eines Mikro-Festplattenlaufwerks (HDD) implementiert sein. Ferner kann eine beliebige Anzahl neuer Technologien fr den Speicher verwendet werden, zusätzlich zu den oder anstatt der beschriebenen Technologien, wie Widerstandsänderungsspeicher, Phasenänderungsspeicher, holographische Speicher oder chemische Speicher, unter anderen.
-
Die Komponenten können über die Zwischenverbindung 556 kommunizieren. Die Zwischenverbindung 556 kann eine beliebige Anzahl von Technologien umfassen, einschließlich Industry Standard Architecture (ISA), Extended ISA (EISA), Peripheral Component Interconnect (PCI), Peripheral Component Interconnect Extended (PCIx), PCI Express (PCIe), oder eine beliebige Anzahl anderer Technologien. Die Zwischenverbindung 556 kann zum Beispiel ein proprietärer Bus sein, der in einem SoCbasierten System verwendet wird. Andere Bussysteme können enthalten sein, wie eine I2C Schnittstelle, eine SPI Schnittstelle, Punkt-zu-Punkt-Schnittstellen und ein Leistungsbus, unter anderen.
-
Die Zwischenverbindung 556 kann den Prozessor 552 mit einem Mesh-Sender/Empfänger 562 für Kommunikationen mit anderen Mesh-Vorrichtungen 564 koppeln. Der Mesh-Sender/ Empfänger 562 kann eine beliebige Anzahl von Frequenzen und Protokollen verwenden, wie 2,4 Gigahertz (GHz) Übertragungen gemäß dem IEEE 802.15.4 Standard, unter Verwendung des Bluetooth® Low Energy (BLE) Standards, wie von der Bluetooth® Special Interest Group definiert, oder dem ZigBee® Standard, unter anderen. Eine beliebige Anzahl von Funkvorrichtungen, die für ein bestimmtes drahtloses Kommunikationsprotokoll ausgelegt sind, kann für die Verbindung mit den Mesh-Vorrichtungen 564 verwendet werden. Zum Beispiel kann eine WLAN Einheit verwendet werden, um Wi-Fi™ Kommunikationen gemäß dem Institute of Electrical and Electronics Engineers (IEEE) 802.11 Standard zu implementieren. Zusätzlich können drahtlose Weitverkehrskommunikationen, z.B. gemäß einem zellularen oder anderen drahtlosen Weitverkehrsprotokoll, über eine WWAN Einheit auftreten.
-
Der Mesh-Sender/Empfänger 562 kann unter Verwendung mehrerer Standards oder Funkvorrichtungen für Kommunikationen mit unterschiedlicher Reichweite kommunizieren. Zum Beispiel kann die IoT Vorrichtung 550 mit nahen Vorrichtungen, z.B. innerhalb von ungefähr 10 Metern, unter Verwendung eines lokalen Sender/Empfängers auf der Basis von BLE oder mit einer anderen Funkvorrichtung mit niedriger Leistung kommunizieren, um Energie zu sparen. Mehr entfernte Mesh-Vorrichtungen 564, z.B. innerhalb von ungefähr 50 Metern, können über ZigBee oder andere Funkvorrichtungen mit einer dazwischenliegenden Leistung erreicht werden. Beide Kommunikationstechniken können über eine einzelne Funkvorrichtung mit verschiedenen Leistungspegeln stattfinden, oder können über getrennte Sender/Empfänger stattfinden, zum Beispiel einen lokalen Sender/Empfänger unter Verwendung von BLE und einen getrennten Mesh-Sender/Empfänger unter Verwendung von ZigBee.
-
Ein drahtloser Netz-Sender/Empfänger 566 kann eingeschlossen sein, um mit Vorrichtungen oder Diensten in der Cloud 500 über lokale oder Weitverkehrsnetzprotokolle zu kommunizieren. Der drahtlose Netz-Sender/Empfänger 566 kann ein LPWA Sender/Empfänger sein, der dem IEEE 802.15.4 oder IEEE 802.15.4g Standard folgt, unter anderen. Die IoT Vorrichtung 550 kann über einen breiten Bereich unter Verwendung von LoRaWAN™ (Long Range Wide Area Network), entwickelt von Semtech und der LoRA Alliance, kommunizieren. Die hier beschriebenen Techniken sind nicht auf diese Technologien beschränkt, sondern können mit einer beliebigen Anzahl anderer Cloud-Sender/Empfänger verwendet werden, die Kommunikationen mit langer Reichweite und geringer Bandbreite implementieren, wie Sigfox und andere Technologien. Ferner können andere Kommunikationstechniken, wie Zeitschlitz-Kanalspringen, beschrieben in der IEEE 802-15.4e Spezifikation, verwendet werden.
-
Eine beliebige Anzahl anderer Funkkommunikationen und Protokolle kann zusätzlich zu den Systemen verwendet werden, die für den Mesh-Sender/Empfänger 562 und den drahtlosen Netz-Sender/Empfänger 566 angegeben werden, wie hier beschrieben. Zum Beispiel können die FunkSender/Empfänger 562 und 566 einen LTE oder anderen zellulären Sender/Empfänger umfassen, der Spreizspektrum- (SPA/SAS) Kommunikationen verwendet, um Hochgeschwindigkeitskommunikationen zu implementieren. Ferner kann eine beliebige Anzahl anderer Protokolle verwendet werden, wie Wi-Fi® Netze für Kommunikationen mit mittlerer Geschwindigkeit und die Bereitstellung von Netzkommunikationen.
-
Die Funk-Sender/Empfänger 562 und 566 können Funkvorrichtungen umfassen, die mit einer beliebigen Anzahl von 3GPP (Third Generation Partnership Project) Spezifikationen kompatibel sind, insbesondere Long Term Evolution (LTE), Long Term Evolution-Advanced (LET-A) und Long Term Evolution-Advanced Pro (LTE-A Pro). Es ist anzumerken, dass Funkvorrichtungen, die einer beliebigen Anzahl anderer fester, mobiler oder Satellitenkommunikationstechnologie und Standards kompatibel sind, ausgewählt werden können. Diese können zum Beispiel eine beliebige Cellular Wide Area Funkkommunikationstechnologie umfassen, die z.B. 5th Generation (5G) Kommunikationssysteme, Global System for Mobile Communications (GSM) Funkkommunikationstechnologie, General Packet Radio Service (GPRS) Funkkommunikationstechnologie, oder Enhanced Data Rates for GSM Evolution (EDGE) Funkkommunikationstechnologie, UMTS (Universal Mobile Telecommunications System) Kommunikationstechnologie umfassen können. Zusätzlich zu den im Vorstehenden aufgelisteten Standards kann eine beliebige Anzahl von Satelliten-Uplink-Technologien für den drahtlosen Netz-Sender/ Empfänger 566 verwendet werden, umfassend zum Beispiel Funkvorrichtungen, welche Standards erfüllen, die von der ITU (International Telecommunication Union) oder dem ETSI (European Telecommunications Standards Institute) herausgegeben werden, unter anderen. Die hier gelieferten Beispiele sind somit so zu verstehen, dass sie auf verschiedene andere Kommunikationstechnologien, sowohl bestehend als auch noch nicht formulierte, angewendet werden können.
-
Eine Netzschnittstellen-Steuereinheit (NIC) 568 kann eingeschlossen sein, um eine verdrahtete Kommunikation mit der Cloud 500 oder mit anderen Vorrichtungen bereitzustellen, wie den Mesh-Vorrichtungen 564. Die verdrahtete Kommunikation kann eine Ethernet Verbindung bereitstellen oder kann auf anderen Typen von Netzen basieren, wie Controller Area Network (CAN), Local Interconnect Network (LIN), DeviceNet, ConrolNet, Data Highway+, PROFIBUS oder PROFINET, unter vielen anderen. Eine zusätzliche NIC 568 kann eingeschlossen sein, um eine Verbindung mit einem zweiten Netz zu gestatten, zum Beispiel eine NIC 568, die Kommunikationen mit der Cloud über Ethernet bereitstellt, und eine zweite NIC 568, die Kommunikationen mit anderen Vorrichtungen oder über einen anderen Typ eines Netzes bereitstellt.
-
Die Zwischenverbindung 556 kann den Prozessor 552 mit einer externen Schnittstelle 570 koppeln, die verwendet wird, um externe Vorrichtungen oder Teilsysteme zu verbinden. Die externen Vorrichtungen können Sensoren 572 umfassen, wie Akzelerometer, Pegelsensoren, Flusssensoren, optische Lichtsensoren, Kamerasensoren, Temperatursensoren, Global Positioning System (GPS) Sensoren, Drucksensoren, Barometerdrucksensoren und dgl. Die externe Schnittstelle 570 kann ferner verwendet werden, um die IoT Vorrichtung 550 mit Betätigern 574 zu verbinden, wie Leistungsschaltern, Ventilbetätigern, einem Generator eines hörbaren Tons, einer visuellen Warnvorrichtung und dgl.
-
In einigen optionalen Beispielen können verschiedene Eingabe/Ausgabe- (I/O) Vorrichtungen innerhalb der IoT Vorrichtung 550 vorhanden sein oder damit verbunden sein. Zum Beispiel kann eine Anzeige oder andere Ausgabevorrichtung 584 eingeschlossen sein, um Informationen anzuzeigen, wie Sensorablesungen oder eine Betätigerposition. Eine Eingabevorrichtung 586, wie ein Berührungsbildschirm oder ein Keypad, kann eingeschlossen sein, um eine Eingabe anzunehmen. Eine Ausgabevorrichtung 584 kann eine beliebige Anzahl von Formen von Audio- oder visuellen Anzeigen umfassen, einschließlich visueller Ausgänge, wie binäre Statusindikatoren (z.B. LEDs) und visuelle Ausgaben mit mehreren Zeichen, oder komplexere Ausgaben, wie Anzeigebildschirme (z.B. LCD Bildschirme), wobei die Ausgabe von Zeichen, Graphik, Multimediaobjekten und dgl. aus dem Betrieb der IoT Vorrichtung 550 generiert wird.
-
Eine Batterie 576 kann die IoT Vorrichtung 550 mit Energie versorgen, obwohl in Beispielen, in denen die IoT Vorrichtung 550 an einem festen Ort montiert ist, diese eine Energiezufuhr aufweisen kann, die mit einem Elektrizitätsnetz gekoppelt ist. Die Batterie 576 kann eine Lithiumionenbatterie oder eine Metall-Luft-Batterie sein, wie eine Zink-Luft-Batterie, eine Aluminium-Luft-Batterie, eine Lithium-Luft-Batterie und dgl.
-
Ein Batterieüberwacher / Lader 578 kann in der IoT Vorrichtung 550 eingeschlossen sein, um den Zustand der Ladung (SoCh) der Batterie 576 zu verfolgen. Der Batterieüberwacher / Lader 578 kann verwendet werden, um andere Parameter der Batterie 576 zu überwachen, um Ausfallvorhersagen zu liefern, wie den Gesundheitszustand (SoH) und den Funktionszustand (SoF) der Batterie 576. Der Batterieüberwacher / Lader 578 kann eine Batterieüberwachungs-Integrationsschaltung umfassen, wie eine LTC4020 oder eine LTC2990 von Linear Technologies, eine ADT7488A von ON Semiconductor, Phoenix Arizona, oder eine IC von der UCD90xxx Familie von Texas Instruments, Dallas, TX. Der Batterieüberwacher / Lader 578 kann die Informationen über die Batterie 576 an den Prozessor 552 über die Zwischenverbindung 556 senden. Der Batterieüberwacher / Lader 578 kann auch einen Analog-Digital- (ADC) Wandler umfassen, der es dem Prozessor 552 gestattet, direkt die Spannung der Batterie 576 oder des Stromflusses von der Batterie 576 zu überwachen. Die Batterieparameter können verwendet werden, um Aktionen zu bestimmen, welche die IoT Vorrichtung 550 vornehmen kann, wie Übertragungsfrequenz, Mesh-Netzbetrieb, Abfühlfrequenz und dgl.
-
Ein Power Block 580 oder eine andere Energiezufuhr, die mit einem Stromnetz gekoppelt ist, kann mit dem Batterieüberwacher / Lader 578 gekoppelt sein, um die Batterie 576 zu laden. In einigen Beispielen kann der Power Block 580 durch einen drahtlosen Leistungsempfänger ersetzt sein, um die Leistung drahtlos zu empfangen, zum Beispiel durch eine Schleifenantenne in der IoT Vorrichtung 550. Eine drahtlose Batterieladeschaltung, wie ein LTC4020 Chip von Linear Technologies, Milpitas, Kalifornieren, unter anderen, kann in dem Batterieüberwacher / Lader 578 enthalten sein. Die spezifischen gewählten Ladeschaltungen sind von der Größe der Batterie 576 und somit dem erforderlichen Strom abhängig. Das Laden kann unter Verwendung des Airfuel-Standards vorgenommen werden, der von der Airfuel Alliance veröffentlicht wird, des Qi drahtlosen Ladestandards, der von dem Wireless Power Consortium veröffentlicht wird, oder dem Rezence-Ladestandard, der von der Alliance for Wireless Power veröffentlicht wird, unter anderen.
-
Der Speicher 558 kann Instruktionen 582 in der Form von Software-, Firmware- oder Hardware-Befehlen enthalten, um die hier beschriebenen Techniken zu implementieren. Obwohl solche Instruktionen 582 als Codeblöcke gezeigt sind, die in dem Speicher 554 und dem Speicher 558 eingeschlossen sind, ist es klar, dass ein beliebiger der Codeblöcke durch hartverdrahtete Schaltungen ersetzt sein kann, die zum Beispiel in eine anwendungsspezifische integrierte Schaltung (ASIC) eingebaut sind.
-
In einem Beispiel können die Instruktionen 582, die über den Speicher 554, den Speicher 558 oder den Prozessor 552 geliefert werden, als nicht transitorisches, maschinenlesbares Medium 560 verkörpert sein, das Code enthält, um den Prozessor 552 anzuweisen, elektronische Operationen in der IoT Vorrichtung 550 vorzunehmen. Der Prozessor 552 kann auf das nicht transitorische, maschinenlesbare Medium 560 über die Zwischenverbindung 556 zugreifen. Zum Beispiel kann das nicht transitorische, maschinenlesbare Medium 560 Speichereinheiten umfassen, wie optische Platten, Flash-Laufwerke oder eine beliebige Anzahl anderer Hardware-Vorrichtungen. Das nicht transitorische, maschinenlesbare Medium 560 kann Instruktionen enthalten, um den Prozessor 552 anzuweisen, eine spezifische Sequenz oder einen Fluss von Aktionen vorzunehmen, zum Beispiel wie in Bezug auf das (die) Flussdiagramm8e) und die Darstellung(en) von Operationen und Funktionalität beschrieben, die in dieser gesamten Beschreibung beschrieben werden.
-
Beispiele von Computing Architekturen
-
6 und 7 veranschaulichen Beispiele von Computerprozessorarchitekturen, die gemäß hier geoffenbarten Ausführungsformen verwendet werden können. Zum Beispiel können in verschiedenen Ausführungsformen die Computerarchitekturen von 6 und 7 verwendet werden, um die Visual Fog-Funktionalität zu implementieren, die in dieser gesamten Beschreibung beschrieben wird. Andere Ausführungsformen können andere Prozessor- und System-Designs und Auslegungen verwenden, die im Stand der Technik bekannt sind, zum Beispiel sind auch geeignet Laptops, Desktops, Hand-PCs, Personal Digital Assistants, technische Arbeitsstationen, Server, Netzvorrichtungen, Netzhubs, Schalter, eingebettete Prozessoren, digitale Signalprozessoren (DSPs), Graphikvorrichtungen, Videospielvorrichtungen, Set-top-Boxes, Mikrosteuereinheiten, Mobiltelefone, tragbare Media Player, Hand-Vorrichtungen und verschiedene andere elektronische Vorrichtungen. Im Allgemeinen sind viele verschiedene Systeme oder elektronische Vorrichtungen generell geeignet, die einen Prozessor und/oder andere Ausführungslogik enthalten können, wie hier geoffenbart.
-
6 veranschaulicht ein Blockbild für ein Beispiel einer Ausführungsform eines Prozessors 600. Der Prozessor 600 ist ein Beispiel eines Typs einer Hardware-Vorrichtung, die in Verbindung mit den in dieser gesamten Offenbarung beschriebenen Ausführungsformen verwendet werden kann. Der Prozessor 600 kann ein beliebiger Typ eines Prozessors sein, wie in Mikroprozessor, ein eingebetteter Prozessor, ein digitaler Signalprozessor (DSP), ein Netzprozessor, ein Mehrkernprozessor, ein Einzelkernprozessor oder eine andere Vorrichtung, um Code auszuführen. Obwohl nur ein Prozessor 600 in 6 veranschaulicht ist, kann alternativ dazu ein Verarbeitungselement mehr als einen Prozessor 600 umfassen, der in 6 veranschaulicht ist. Der Prozessor 600 kann ein Single-Thread-Kern sein, oder für mindestens eine Ausführungsform kann der Prozessor 600 insofern ein Multi-Thread sein, als er mehr als einen Hardware-Thread-Kontext (oder „logischen Prozessor“) pro Kern umfassen kann.
-
6 veranschaulicht auch einen Speicher 602, der mit dem Prozessor 600 gekoppelt ist, gemäß einer Ausführungsform. Der Speicher 602 kann ein beliebiger verschiedenster Speicher sein (umfassend verschiedene Speicherhierarchieschichten), wie Fachleuten bekannt oder auf andere Weise für diese verfügbar. Solche Speicherelemente können umfassen, sind jedoch nicht beschränkt auf Speicher mit wahlfreiem Zugriff (RAM), Nurlesespeicher (ROM), Logikblöcke eines feldprogrammierbaren Gate-Arrays (FPGA), löschbare programmierbare Nurlesespeicher (EPROM) und elektrisch löschbare programmierbare ROM (EEPROM).
-
Der Prozessor 600 kann einen beliebigen Typ von Instruktionen ausführen, die mit hier detailliert angegebenen Algorithmen, Prozessen oder Operationen assoziiert sein können. Im Allgemeinen kann der Prozessor 600 ein Element oder einen Artikel (z.B. Daten) von einem Zustand oder Ding in einen anderen Zustand oder ein anderes Ding transformieren.
-
Code 604, der eine oder mehrere Instruktionen sein kann, die von dem Prozessor 600 auszuführen sind, kann in dem Speicher 602 gespeichert werden oder kann in Software, Hardware, Firmware oder einer beliebigen geeigneten Kombination davon oder in einer beliebigen anderen internen oder externen Komponente, Vorrichtung, einem Element oder Objekt, wo geeignet und auf der Basis des bestimmten Bedarfs, gespeichert werden. In einem Beispiel kann der Prozessor 600 einer Programmsequenz von Instruktionen folgen, die von dem Code 604 angezeigt werden. Jede Instruktion tritt in einen Front-end-Logik 606 ein und wird von einem oder mehreren Decodierern 608 verarbeitet. Der Decodierer kann, als seinen Ausgang, eine Mikrooperation generieren, wie eine Mikrooperation mit festgelegter Breite in einem vordefinierten Format, oder kann andere Instruktionen, Mikroinstruktionen oder Steuersignale generieren, welche die ursprüngliche Codeinstruktion reflektieren. Die Front-end-Logik 606 kann auch Registerumbenennungslogik und Planungslogik umfassen, die allgemein Ressourcen zuordnen und die Operation entsprechend der Instruktion zur Ausführung in eine Warteschlange setzen.
-
Der Prozessor 600 kann auch Ausführungslogik 614 mit einem Satz von Ausführungseinheiten 616a, 616b, 616n usw. umfassen. Einige Ausführungsformen können eine beliebige Anzahl von Ausführungseinheiten umfassen, die für spezifische Funktionen oder Sätze von Funktionen dediziert sind. Andere Ausführungsformen können nur eine Ausführungseinheit oder eine Ausführungseinheit, die eine bestimmte Funktion ausführen kann, umfassen. Die Ausführungslogik 614 nimmt die Operationen vor, die von Codeinstruktionen spezifiziert werden.
-
Nach der Vollendung der Ausführung der Operationen, die von den Codeinstruktionen spezifiziert werden, kann die Back-end-Logik 618 die Instruktionen des Codes 604 stilllegen. In einer Ausführungsform gestattet der Prozessor 600 die Out-of-order-Ausführung, erfordert jedoch eine In-order-Stilllegung von Instruktionen. Stilllegungslogik 620 kann verschiedenste bekannte Formen annehmen (z.B. Umordnungspuffer oder dgl.). Auf diese Weise wird der Prozessor 600 während der Ausführung des Codes 604 transformiert, mindestens hinsichtlich des Ausgangs, der von dem Decodierer generiert wird, Hardware-Registern und Tabellen, die von der Registerumbenennungslogik 610 verwendet werden, und beliebigen Registern (nicht gezeigt), die von der Ausführungslogik 614 modifiziert werden.
-
Obwohl in 6 nicht gezeigt, kann ein Verarbeitungselement andere Elemente auf einem Chip mit dem Prozessor 600 umfassen. Zum Beispiel kann ein Verarbeitungselement Speichersteuerlogik zusammen mit dem Prozessor 600 umfassen. Das Verarbeitungselement kann I/O Steuerlogik umfassen und/oder kann I/O Steuerlogik, die mit der Speichersteuerlogik integriert ist, umfassen. Das Verarbeitungselement kann auch einen oder mehrere Caches umfassen. In einigen Ausführungsformen kann auch ein nicht flüchtiger Speicher (wie ein Flash-Speicher oder Sicherungen) auf dem Chip mit dem Prozessor 600 enthalten sein.
-
7 veranschaulicht ein Blockbild für ein Beispiel einer Ausführungsform eines Multiprozessors 700. Wie in 7 gezeigt, ist das Multiprozessorsystem 700 ein Punkt-zu-Punkt-Zwischenverbindungssystem und umfasst einen ersten Prozessor 770 und einen zweiten Prozessor 780, die über eine Punkt-zu-Punkt-Zwischenverbindung 750 gekoppelt sind. In einigen Ausführungsformen kann jeder der Prozessoren 770 und 780 irgendeine Version des Prozessors 600 von 6 sein.
-
Von den Prozessoren 770 und 780 ist gezeigt, dass sie integrierten Speichersteuereinheiten (IMC) 772 bzw. 782 enthalten. Der Prozessor 770 umfasst als Teil seiner Bussteuereinheiten Punkt-zu-Punkt- (P-P) Schnittstellen 776 und 778; ähnlich umfasst der zweite Prozessor 780 P-P Schnittstellen 786 und 788. Die Prozessoren 770, 780 können Informationen über eine Punkt-zu-Punkt- (P-P) Schnittstelle 750 unter Verwendung von P-P Schnittstellenschaltungen 778, 788 austauschen. Wie in 7 gezeigt, koppeln die IMCs 772 und 782 die Prozessoren mit jeweiligen Speichern, nämlich einem Speicher 732 und einem Speicher 734, die Abschnitte des Hauptspeichers sein können, der lokal an die jeweiligen Prozessoren angeschlossen ist.
-
Die Prozessoren 770, 780 können jeweils Informationen mit einem Chipsatz 790 über einzelne P-P Schnittstellen 752, 754 unter Verwendung von Punkt-zu-Punkt- (P-P) Schnittstellenschaltungen 776, 794, 786, 798 austauschen. Der Chipsatz 790 kann gegebenenfalls Informationen mit dem Coprozessor 738 über eine Hochleistungsschnittstelle 739 austauschen. In einer Ausführungsform ist der Coprozessor 738 ein Spezialprozessor, wie zum Beispiel ein MIC Prozessor mit hohem Durchsatz, ein Netz- oder Kommunikationsprozessor, eine Kompressionsmaschine, ein Graphikprozessor, eine GPGPU, ein eingebetteter Prozessor, ein Matrixprozessor oder dgl.
-
Ein gemeinsam genutzter Cache (nicht gezeigt) kann in jedem Prozessor oder außerhalb beider Prozessoren enthalten sein, jedoch mit den Prozessoren über eine P-P Zwischenverbindung verbunden sein, so dass die lokalen Cache-Informationen einer oder beider Prozessoren in dem gemeinsam genutzten Cache gespeichert werden können, wenn ein Prozessor in einen Energiesparmodus versetzt wird.
-
Der Chipsatz 790 kann mit einem ersten Bus 716 über eine Schnittstelle 796 gekoppelt sein. In einer Ausführungsform kann der ersten Bus 716 ein Peripheral Component Interconnect (PCI) Bus oder ein Bus sein, wie ein PCI Express Bus oder ein anderer I/O Zwischenverbindungsbus der dritten Generation, obwohl der Umfang dieser Offenbarung nicht so eingeschränkt ist.
-
Wie in 7 gezeigt, können verschiedene I/O Vorrichtungen 714 mit dem ersten Bus 716 zusammen mit einer Busbrücke 718 gekoppelt sein, die den ersten Bus 716 mit einem zweiten Bus 720 koppelt. In einer Ausführungsform sind ein oder mehrere zusätzliche(r) Prozessor(en) 715, wie Coprozessoren, MIC Prozessoren mit hohem Durchsatz, GPGPUs, Akzeleratoren (wie z.B. Graphikakzeleratoren oder digitale Signalverarbeitungs-(DSP) einheiten, Matrixprozessoren, feldprogrammierbare Gate-Arrays oder irgendein anderer Prozessor, mit dem ersten Bus 716 gekoppelt. In einer Ausführungsform kann der zweite Bus 720 ein Bus mit niedriger Pin-Anzahl (LPC) sein. Verschiedene Vorrichtungen können mit einem zweiten Bus 720 gekoppelt sein, umfassend zum Beispiel eine Tastatur und/oder eine Maus 722, Kommunikationsvorrichtungen 722 und eine Speichereinheit 728, wie ein Plattenlaufwerk oder eine andere Massenspeichervorrichtung, die Instruktionen/Code und Daten 730 in einer Ausführungsform umfassen kann. Ferner kann eine Audio I/O 724 mit dem zweiten Bus 720 gekoppelt sein. Es ist zu beachten, dass andere Architekturen möglich sind. Zum Beispiel kann, anstelle der Punkt-zu-Punkt-Architektur von 7, ein System einen Multidrop-Bus oder eine andere solche Architektur implementiert.
-
Alle oder ein Teil irgendeiner Komponente von 7 können oder kann als getrennte oder unabhängige Komponente oder Chip implementiert sein, oder können mit anderen Komponenten oder Chips integriert sein, wie ein System-on-Chip (SoC), das verschiedene Computerkomponenten in einen einzigen Chip integriert.
-
Ausführungsformen der hier geoffenbarten Mechanismen können in Hardware, Software, Firmware oder einer Kombination solcher Implementierungsansätze implementiert sein. Bestimmte Ausführungsformen können als Computerprogramme oder Programmcode implementiert sein, die auf programmierbaren Systemen ausgeführt werden, umfassend mindestens einen Prozessor, ein Speichersystem (einschließlich flüchtiger und nicht flüchtiger Speicher und/oder Speicherelemente), mindestens eine Eingabevorrichtung und mindestens eine Ausgabevorrichtung.
-
Programmcode, wie der Code 730, der in 7 veranschaulicht ist, kann auf Eingabeinstruktionen angewendet werden, um die hier beschriebenen Funktionen vorzunehmen und Ausgabeinformationen zu generieren. Die Ausgabeinformationen können auf eine oder mehrere Ausgabevorrichtungen auf bekannte Weise angewendet werden. Für Zwecke dieser Anmeldung umfasst ein Verarbeitungssystem ein beliebiges System, das einen Prozessor aufweist, wie zum Beispiel einen digitalen Signalprozessor (DSP), eine Mikrosteuereinheit, eine anwendungsspezifische integrierte Schaltung (ASIC) oder einen Mikroprozessor.
-
Der Programmcode kann in einer verfahrens- oder objektorientierten Programmierhochsprache implementiert sein, um mit einem Verarbeitungssystem zu kommunizieren. Der Programmcode kann oder in Assemblier- oder Maschinensprache implementiert sein, wenn gewünscht. Tatsächlich sind die hier beschriebenen Mechanismen nicht im Umfang auf irgendeine bestimmte Programmiersprache beschränkt. In jedem Fall kann die Sprache eine kompilierte oder interpretierte Sprache sein.
-
Ein oder mehrere Aspekte mindestens einer Ausführungsform können durch repräsentative Instruktionen implementiert sein, die auf einem maschinenlesbaren Medium gespeichert sind, das verschiedene Logik innerhalb des Prozessors repräsentiert, welche, wenn sie von einer Maschine gelesen wird, bewirkt, dass die Maschine Logik erstellt, um die hier beschriebenen Techniken vorzunehmen. Solche Repräsentationen, die als „IP Kerne“ bekannt sind, können auf einem greifbaren, maschinenlesbaren Medium gespeichert werden und an verschiedene Kunden oder Herstellungseinrichtungen geliefert werden, um in die Herstellungsmaschinen geladen zu werden, die tatsächlich die Logik oder den Prozessor herstellen.
-
Solche maschinenlesbare Speichermedien können ohne Einschränkung umfassen: nicht transitorische, greifbare Anordnungen von Artikeln, die von einer Maschine oder Vorrichtung hergestellt oder gebildet werden, umfassend Speichermedien, wie Festplatten, irgendeinen anderen Typ einer Platte, einschließlich Disketten, optischer Platten, Compact Disk Read-only Memories (CD-ROMs), Compact Disk Rewritables (CD-RWs) und magnetooptischer Platten, Halbleitervorrichtungen, wie Nurlesespeicher (ROMs), Speicher mit wahlfreiem Zugriff (RAMs), wie dynamische Speicher mit wahlfreiem Zugriff (DRAMs), statische Speicher mit wahlfreiem Zugriff (SRAMs), löschbare programmierbare Nurlesespeicher (EPROMs), Flash-Speicher, elektrisch löschbare programmierbare Nurlesespeicher (EEPROMs), Phasenänderungsspeicher (PCM), magnetische oder optische Karten oder irgendeinen anderen Typ eines Mediums, das zum Speichern elektronischer Instruktionen geeignet ist.
-
Demgemäß umfassen Ausführungsformen dieser Offenbarung auch nicht transitorische, greifbare maschinenlesbare Medien, die Instruktionen enthalten oder Designdaten enthalten, wie Hardware-Beschreibungssprache (HDL), die hier beschriebene Strukturen, Schaltungen, Vorrichtungen, Prozessoren und/oder Systemmerkmale definiert. Solche Ausführungsformen können auch als Programmprodukte bezeichnet werden.
-
Visual Fog-Architektur
-
8 veranschaulicht ein Beispiel einer Ausführungsform einer Architektur 800 für Visual Fog-Knoten. In einigen Ausführungsformen kann die Fog-Knotenarchitektur 800 zum Beispiel verwendet werden, um die Funktionalität von Fog-Knoten 810 in einem Visual Fog-Netz oder -System (z.B. Visual Fog-System 100 von 1) zu implementieren. Ein Fog-Knoten 810 kann zum Beispiel irgendeinen Knoten oder eine Komponente umfassen, der oder die von den Rändern eines Netzes zur Cloud reicht (einschließlich).
-
In der veranschaulichten Ausführungsform umfasst der Fog-Knoten 810 verschiedene Anwendungsprogrammierungsschnittstellen (APIs), die grundlegende Fähigkeiten für den Fog-Knoten 810 bereitstellen, wie die Hilfs-API 820, Primitive Vision AOI 830 und Speicher-API 840. In einigen Ausführungsformen können diese APIs zum Beispiel von Entwicklern von Algorithmen einer niedrigeren Ebene verwendet oder implementiert werden.
-
Die Hilfs-API 820 stellt verschiedene grundlegende Funktionalitäten für den Fog-Knoten 810 bereit, wie Sicherheit 822a, Kommunikation 822b, Kompression 822c (z.B. Codecs) usw.
-
Die Primitive Vision API 830 stellt grundlegende Vision-Verarbeitungsfähigkeiten für den Fog-Knoten 810 bereit. Zum Beispiel liefert die Primitive Vision API 830 einen Zugriff auf eine Vielzahl von Vision-Kernen 832, die verwendet werden können, um Primitive Vision Operationen vorzunehmen (z.B. Personen- oder Objektdetektion, Gesichtserkennung). Die Primitive Vision API 830 kann auch einen Zugriff auf verschiedene Rahmen eines maschinellen Lernens und/oder neuralen Netzes liefern (z.B. Caffe, OpenCV, TensorFlow).
-
Die Speicher-API 840 liefert Speicherfähigkeiten für den Fog-Knoten 810. In einigen Ausführungsformen kann die Speicher-API 840 zum Beispiel verschiedenste Datenbanken 842 zum Speichern verschiedener Typen visueller Daten umfassen, wie Graphendatenbanken, relationale Datenbanken, Array-basierte Datenbanken (z.B. TileDB) usw. In einigen Ausführungsformen kann zum Beispiel die bestimmte Datenbank, die verwendet wird, um bestimmte visuelle Daten zu speichern, von dem Datentyp abhängig sein, wie rohen visuellen Daten oder Pixeln, komprimierten visuellen Daten, visuellen Metadaten usw.
-
Außerdem umfasst der Fog-Knoten 810 ferner eine Vision-Anwendungs-API 850, die eine Vision-Funktionalität einer höheren Ebene bereitstellt, die von Entwicklern von Vision-Anwendungen verwendet oder implementiert werden kann. Zum Beispiel kann die Vision-Anwendungs-API 850 auch einen Vision-Kernverwaltungsdienst 854 umfassen, der einen Zugriff auf verschiedenste Primitive Vision Operationen oder Vision-Kerne bereitstellt. In einigen Ausführungsformen kann der Vision-Kernverwaltungsdienst 854 zum Beispiel Vision-Kerne aus einem Vision-Kern-Repository abrufen. Wenn zum Beispiel eine bestimmte Vision-Anwendung eine Personendetektionsfunktionalität verwendet, kann der Vision-Kernverwaltungsdienst 854 den geeigneten Vision-Kern zum Vornehmen einer Personendetektion unter Verwendung der verfügbaren Hardware des bestimmten Fog-Knotens 810 abrufen.
-
Der Fog-Knoten 810 umfasst ferner eine Vision-Analytik-API 860 und eine Abfrage-API 870, die von Endbenutzern oder Operatoren verwendet werden können, um visuelle Analysen und visuelle Abfragen vorzunehmen. Zum Beispiel kann die Vision-Analytik-API 860 auch einen Vision-Anwendungsverwaltungsdienst 862 umfassen, der einen Zugriff auf verschiedenste Vision-Anwendungen liefert (z.B. Personensuche/verfolgung, Objektdetektion/verfolgung usw.). In einigen Ausführungsformen kann der Vision-Anwendungsverwaltungsdienst 862 Vision-Anwendungen aus einem Vision-Anwendungs-Repository abrufen. Wenn ein Endbenutzer eine Personensuche vornehmen möchte, kann auf diese Weise der Vision-Anwendungsverwaltungsdienst 862 eine geeignete Vision-Anwendung für die Personensuche abrufen. In einigen Ausführungsformen kann eine Vision-Anwendung zur Personensuche zum Beispiel Vision-Kerne verwenden, die eine Personendetektion, gefolgt von einer Gesichtserkennung, vornehmen. Der Endbenutzer kann jedoch die Vision-Anwendung zur Personensuche ohne jede Kenntnis der zugrundenliegenden Vision-Kerne oder Vision-Operationen nützen, die verwendet werden, um die Anwendung zu implementieren.
-
Außerdem stellt eine Anfrage-API 870 eine Schnittstelle bereit, die es Endbenutzern ermöglicht, visuelle Suchanforderungen oder -anfragen zu stellen. In einigen Ausführungsformen kann die Anfrage-API 870 zum Beispiel flexible visuelle Anfragen in verschiedenster Syntax unterstützen, wie eine natürliche Sprache, funktionelle Syntax (z.B. unter Verwendung logischer Operatoren), relationale Syntax usw. In einigen Ausführungsformen kann die Anfrage-API 870 ferner ein primitives Anfrage-Repository 874 umfassen, das die primitiven Operationen enthält, die für visuelle Anfragen unterstützt werden. Außerdem kann die Anfrage-API 870 einen Anfragekompilierer 872 zum Kompilieren der visuellen Anfragen zu visuellen Verarbeitungsdatenströmen umfassen, die von den Visual Fog-Knoten ausgeführt werden können.
-
9 bis 12 veranschaulichen Beispiele von Ausführungsformen von Visual Fog-Architekturen.
-
Zum Beispiel veranschaulicht 9 ein Beispiel einer Visual Fog-Architektur 900, die Kameras 902, Sensoren 904, lokale Analytiknetze 906, Inline-Analytikrahmen 908, Offline-Analytikrahmen 910, einen Speicher 912 und Präsentations/Interpretationsrahmen 914 umfasst. In der veranschaulichten Ausführungsform können zum Beispiel Kameras 902 und/oder Sensoren 904 visuelle Daten generieren, wie Bilder und/oder Video. Die visuellen Daten können dann an den lokalen Analytikrahmen 906 geliefert werden, der verwendet werden kann, um eine vorläufige Verarbeitung und Analytik an dem Netzrand vorzunehmen (z.B. nahe bei den Kameras 902 oder Sensoren 904, welche die visuellen Daten aufgenommen haben). Die teilweise verarbeiteten visuellen Daten können dann an den Inline-Analytikrahmen 908 zur Weiterverarbeitung in Echtzeit geliefert werden. In verschiedenen Ausführungsformen kann zum Beispiel eine Inline-Analytik durch eine beliebige Kombination von Fog-Vorrichtungen oder -Ressourcen (z.B. mobilen Vorrichtungen, IoT Vorrichtungen, Gateways und/oder der Cloud) vorgenommen werden und/oder quer über diese verteilt werden. Die erhaltenen visuellen Daten und/oder Metadaten von dem Inline-Analytikrahmen 908 können dann in dem Datenspeicher 912 gespeichert werden. Außerdem kann eine visuelle Suchanfrage anschließend von dem Präsentations/Interpretationsrahmen 914 (z.B. von einem Endbenutzer) empfangen werden. Demgemäß kann der Präsentations/Interpretationsrahmen 914 mit dem Datenspeicher 912 und/oder Inline-Analytikrahmen 908 interagieren, um zu bestimmen, ob eine Antwort auf die Anfrage auf der Basis der visuellen Daten und/oder Metadaten formuliert werden kann, die bereits verarbeitet oder generiert wurden. Wenn eine weitere Verarbeitung vorgenommen werden muss, um auf die Anfrage zu antworten, kann der Präsentations/Interpretationsrahmen 914 jedoch mit dem Offline-Analytikrahmen 910 interagieren, um eine weitere Offline-Verarbeitung der visuellen Daten vorzunehmen. In verschiedenen Ausführungsformen kann zum Beispiel eine Offline-Analytik von einer beliebigen Kombination von Fog-Vorrichtungen oder -Ressourcen (z.B. mobilen Vorrichtungen, IoT Vorrichtungen, Gateways und/oder der Cloud) vorgenommen werden und/oder quer über diese verteilt werden. Demgemäß kann dann, auf der Basis der Informationen, die entweder von dem Datenspeicher 912, dem Inline-Analytikrahmen 908 und/oder dem Offline-Analytikrahmen 910 erhalten werden, der Präsentations/Interpretationsrahmen 914 auf die visuelle Anfrage antworten.
-
10 veranschaulicht ein Beispiel einer visuellen Verarbeitungspipeline 1000, die mit einer Visual Fog-Architektur assoziiert ist. In dem veranschaulichten Beispiel können die visuellen Daten 1002 zuerst durch Kameras und/oder visuelle Sensoren aufgenommen werden, und die visuellen Daten 1002 können dann verarbeitet werden, um bestimmte visuelle Funktionen 1004 (z.B. Gesichtsdetektion) und/oder andere Analytik vorzunehmen, die zu einem Satz von visuellen Metadaten 102 führen, welche in dem Datenspeicher 1010 gespeichert Erfindung können. Außerdem kann ein Endbenutzer anschließend eine ad hoc Anfrage 1006 stellen, die mit den visuellen Daten 1002 assoziiert ist, und ein Anfragekompilierer/interpretierer 1008 kann dann die Anfrage in einen visuellen Datenstrom kompilieren, der ausgeführt werden kann (z.B. unter Verwendung verfügbarer Fog-Knoten oder -Ressourcen), um die Anfrage zu beantworten. In einigen Fällen kann es zum Beispiel möglich sein, ein Anfrageergebnis 1016 auf der Basis der Verarbeitung zu formulieren, die bereits vollendet wurde. Zum Beispiel kann in einigen Fällen das Anfrageergebnis 1016 formuliert werden, indem geeignete Logikoperationen 1014 an die bestehenden visuellen Metadaten 1012 angelegt werden, die bereits generiert wurden. In anderen Fällen kann es jedoch notwendig sein, eine weitere visuelle Verarbeitung und/oder Funktionen 1004 an den visuellen Daten 1002 vorzunehmen, um das Anfrageergebnis 1016 zu formulieren. In jedem Fall kann der Kompilierer/interpretierer 1008 einen erforderlichen Vision-Verarbeitungsdatenstrom zur Beantwortung der Anfrage generieren, und der erhaltene Vision-Verarbeitungsdatenstrom kann dann ausgeführt werden, um das Anfrageergebnis 1016 zu formulieren.
-
11 veranschaulicht ein weiteres Beispiel einer Visual Fog-Architektur 1100. In der veranschaulichten Ausführungsform werden visuelle Daten, die von Kameras 1004b aufgenommen werden, an eine verteilte Laufzeitumgebung 1120 geliefert, die eine anfängliche Vorverarbeitung an den visuellen Daten in Echtzeit vornimmt (z.B. wenn die visuellen Daten zuerst aufgenommen werden anstelle als Antwort auf eine Anfrage). Die erhaltenen visuellen Daten oder Metadaten, die von der verteilten Laufzeitumgebung 1120 generiert werden, werden dann in dem Datenspeicher 1130 gespeichert.
-
Getrennt werden visuelle Suchanfragen, die benutzerdefinierte Vision-Funktionen (UVFs) 1004c enthalten, von Endbenutzern 1102 des Visual Fogs 1100 empfangen, eine UVF 1104, die von einem Endbenutzer 1102 empfangen wird, wird zuerst von einem Kompilierer 1110 verarbeitet, um einen Vision-Datenstromgraphen zur Ausführung der UVF zu generieren. Demgemäß wird der Vision-Datenstromgraph dann von der verteilten Laufzeitumgebung 1120 ausgeführt, um ein Ergebnis für die UVF 1104 zu generieren. In einigen Ausführungsformen kann die verteilte Laufzeitumgebung 1120 zum Beispiel das Ergebnis unter Verwendung bestehender visueller Metadaten bestimmen, die bereits generiert wurden (z.B. durch die anfängliche oder Echtzeit-Verarbeitung der ursprünglichen visuellen Daten), und/oder durch Vornehmen einer weiteren Analyse an den visuellen Daten (z.B. durch Ausführen einer bestimmten Vision-Anwendung 1150). Das Ergebnis, das aus der Ausführung der UVF 1104 erhalten wird, kann dann an den anfordernden Endbenutzer zurückgeliefert werden.
-
Ferner kann in verschiedenen Ausführungsformen die verteilte Laufzeitumgebung 1120 die beschriebene visuelle Datenverarbeitung vornehmen (z.B. anfängliche Vorverarbeitung und/oder UVF Verarbeitung) durch Planen oder Verteilen von Vision-Arbeitslasten quer über die verfügbaren Fog-Vorrichtungen oder -Ressourcen 1140 (z.B. Cloud-Server 1140a, Kameras 1140b, mobile Vorrichtungen, IoT Vorrichtungen, Gateways und/oder andere Fog/Edge-Vorrichtungen).
-
12A-B veranschaulicht ein weiteres Beispiel einer Visual Fog-Architektur 1200. In der veranschaulichten Ausführungsform umfasst die Visual Fog-Architektur 1200 ein Netz von Fog-Vorrichtungen 1216, die Kameras oder visuelle Sensoren 1216a, Gateways 1216b und Cloud-Server 1216c umfassen. Die Kameras oder visuellen Sensoren 1216a werden zum Beispiel verwendet, um visuelle Daten 1217 aufzunehmen. Außerdem kann ein Computer Vision Expert 1202 ein imperatives Vision-Programm 1203 entwickeln, das die aufgenommenen visuellen Daten 1217 nutzt. Das Vision-Programm 1203 kann zum Beispiel unter Verwendung von Programmier- und Kombinierbarkeitsrahmen 1208 und 1210 implementiert werden, um Vision-Verarbeitungsdatenströme 1209 zu definieren und Vision-Verarbeitungsarbeitslasten 1211 zu generieren.
-
In der veranschaulichten Ausführungsformen nutzt das Vision-Programm 1203 zum Beispiel eine verteilte Laufzeitumgebung 1214, um visuelle Daten 1217 zu verarbeiten, die in dem Visual Fog 1200 aufgenommen werden. Die verteilte Laufzeitumgebung 1214 kann zum Beispiel eine visuelle Datenverarbeitung unter Verwendung der Sammlung verfügbarer Fog-Vorrichtungen 1216 in dem Visual Fog 1200 vornehmen.
-
In einigen Ausführungsformen kann die verteilte Laufzeitumgebung 1214 zum Beispiel verwendet werden, um eine anfängliche Vorverarbeitung an aufgenommenen visuellen Daten 1217 in Echtzeit vorzunehmen (z.B. wenn die visuellen Daten zuerst aufgenommen werden anstatt in Beantwortung einer Anfrage). Die erhaltenen visuellen Daten oder Metadaten 1217, die von der verteilten Laufzeitumgebung 1214 generiert werden, können dann in einer Datenbank oder einem Datenspeicher 1218 gespeichert werden.
-
Außerdem kann ein Laie oder Endbenutzer 1204 anschließend eine deklarative Anfrage 1205 stellen, die mit visuellen Daten 1217 assoziiert ist, welche von dem Visual Fog 1200 aufgenommen werden. Die deklarative Anfrage 1205 wird von einem visuellen Fragebeantwortungs-(VQA) System 1206 verarbeitet, das einen Kompilierer oder Interpretierer verwendet, um einen Datenstrom 1209 zur Beantwortung der Anfrage zu generieren. In einigen Fällen kann es zum Beispiel möglich sein, auf eine Anfrage 1205 unter Verwendung bestehender visueller Metadaten 1217 zu antworten, die bereits generiert wurden (z.B. während der anfänglichen oder Echtzeit-Verarbeitung der ursprünglichen visuellen Daten 1217 und/oder während der Verarbeitung, die mit früheren Anfragen 1205 assoziiert ist). In anderen Fällen kann es jedoch notwendig sein, eine weitere Verarbeitung an den visuellen Daten 1217 vorzunehmen, um auf die Anfrage 1205 zu antworten. In jedem Fall kann ein geeigneter Datenstrom 1209 zur Beantwortung der Anfrage 1205 generiert werden, und der erhaltene Datenstrom 1209 kann weiter in eine oder mehrere zugrundeliegende Vision-Verarbeitungsarbeitslasten geteilt werden. Außerdem kann, auf der Basis der Ressourcenverfügbarkeit 1215 von Fog-Vorrichtungen 1216 in der verteilten Laufzeitumgebung 1214 ein Plan 1213 zur Verteilung der Arbeitslasten 1211 quer über die verfügbaren Fog-Vorrichtungen 1216 generiert werden. Demgemäß können dann die jeweiligen Arbeitslasten 1211 quer über die Fog-Vorrichtungen 1216 auf der Basis des generierten Plans 1213 verteilt werden, und jede Fog-Vorrichtung 1216 kann ihre jeweilige(n) Arbeitslast(en) 1211 ausführen. Auf diese Weise wird der Datenstrom 1209 zur Beantwortung der anfrage 1205 von den verschiedenen Fog-Vorrichtungen 1216 unter Verwendung eines verteilten Ansatzes ausgeführt. Eine Antwort auf die Anfrage 1205 kann dann an den Endbenutzer geliefert werden, und die erhaltenen visuellen Metadaten 1217 können in der Datenbank 1218 zur Beantwortung nachfolgender Anfragen gespeichert werden.
-
Visual Question Answering (VQA)
-
13-14 veranschaulichen Beispiele von Ausführungsformen, die mit einem Visual Question Answering- (VQA) Rahmen assoziiert sind. In einigen Ausführungsformen kann zum Beispiel eine Visual Fog-Architektur einen VQA Rahmen implementieren, um eine flexible und effiziente Schnittstelle für Endbenutzer bereitzustellen, um ad hoc visuelle Suchanfragen zu stellen. In visuellen Verarbeitungssystemen ist zum Beispiel die Fähigkeit wichtig, eine Anfrage zum Durchsuchen großer Datensätze auf effiziente Weise zu stellen (z.B. Millionen von Bildern), und einen Teilsatz relevanter Bilder oder verwandter Informationen zu identifizieren. Bestehende visuelle Verarbeitungslösungen werden jedoch unter Verwendung starrer oder unflexibler Ansätze implementiert und sind nicht in der Lage, visuelle Daten effizient zu durchsuchen. Demgemäß kann der Visual Question Answering-(VQA) Rahmen von 13 und 14 verwendet werden, um die Mängel bestehender Lösungen zu mildern.
-
In einigen Ausführungsformen kann ein VQA Rahmen zum Beispiel flexible oder ad hoc visuelle Anfragen unter Verwendung verschiedenster Syntax unterstützen, wie natürlicher Sprache, funktioneller Syntax (z.B. unter Verwendung logischer Operatoren), relationaler Syntax usw. Wenn eine visuelle Anfrage von einem Benutzer empfangen wird, kann demgemäß die Anfrage in einen visuellen Verarbeitungsdatenstrom kompiliert werden, der quer über die verschiedenen Fog-Knoten in einer Visual Fog-Architektur verteilt und von diesen ausgeführt werden kann. Auf diese Weise können Benutzer komplexe Suchvorgänge an großen Sätzen visueller Daten ohne jede Kenntnis der zugrundeliegenden Architektur oder Verarbeitung vornehmen, die erforderlich ist, um die Suchvorgänge auszuführen.
-
Außerdem können in einigen Ausführungsformen Benutzer oder Entwickler in der Lage sein, angepasste Vision-Funktionen zu definieren, die in visuellen Suchanfragen verwendet werden können, und die als benutzerdefinierte Vision-Funktionen (UVFs) bezeichnet werden. Als Beispiel könnte eine UVF für eine visuelle Äquivalenz oder zur Vornahme „gleicher“ Operationen an visuellen Daten definiert werden. Viele ad hoc visuelle anfragen erfordern zum Beispiel Informationen in Bezug auf dasselbe Objekt oder dieselbe Person erfordern, um identifiziert oder gemeinsam gruppiert zu werden. Das Identifizieren desselben Objekts oder derselben Person quer über verschiedene Bilder oder Videostreams kann jedoch herausfordernd sein. In einigen Ausführungsformen kann diese Aufgabe erfordern, dass eine Merkmalextraktion quer über mehrere Kameras vorgenommen wird. Die jeweiligen Merkmale, die aus jeder Kamera extrahiert werden, unterscheiden sich jedoch, und nicht alle Kameras haben dasselbe Sichtfeld, und somit können bestimmte Merkmale aus einigen Kameras extrahiert werden, jedoch nicht aus anderen. Demgemäß kann in einigen Ausführungsformen ein Benutzer eine UVF implementieren, um zu definieren, wie eine visuelle Äquivalenz oder „gleiche“ Operationen an visuellen Daten vorzunehmen sind. In einigen Ausführungsformen kann zum Beispiel eine UVF für eine visuelle Äquivalenz Objekte als „gleich“ definieren, wenn ihre Merkmalvektoren „nahe genug“ beieinander liegen, was bedeutet, dass die Merkmalvektoren ausreichend ähnlich sein müssen, jedoch keine exakte Übereinstimmung sein müssen. Wenn bei Merkmalvektoren von verschiedenen Kameras bestimmte Merkmale fehlen, werden ferner nur die partiellen Merkmale verglichen, und die Definition „nahe genug“ wird entsprechend skaliert.
-
13 veranschaulicht ein Beispiel einer Ausführungsform einer Visual Question Answering- (VQA) Pipeline 1300. In dem veranschaulichten Beispiel wird zuerst eine visuelle Anfrage 1302 von einem Endbenutzer empfangen, und dann wird ein Datenstromkompilierer 1304 verwendet, um die visuelle Anfrage 1302 in eine visuelle Verarbeitungspipeline oder einen Datenstrom 1308 zu kompilieren. In einigen Ausführungsformen kann zum Beispiel der Datenstromkompilierer 1304 eine Bibliothek von Vision-Kernmodulen 1306 (z.B. Gesichtserkennung, Haltungserkennung, Objekterkennung usw.) verwenden, um den erhaltenen visuellen Verarbeitungsdatenstrom 1308 zu generieren.
-
In einigen Fällen kann der visuelle Verarbeitungsdatenstrom 1308 zum Beispiel bestehende visuelle Metadaten nutzen, die bereits generiert wurden und in dem Datenspeicher 1314 gespeichert wurden. Zum Beispiel kann ein Inline-Analytikrahmen 1310 verwendet werden, um eine anfängliche visuelle Datenverarbeitung in Echtzeit vorzunehmen (z.B. wenn visuelle Daten zuerst aufgenommen werden anstatt ansprechend auf eine Anfrage) , und ein Offline-Analytikrahmen 1312 kann verwendet werden, um eine weitere visuelle Datenverarbeitung vorzunehmen, die zur Beantwortung von Suchanfragen erforderlich ist. Außerdem können sowohl der Inline- als auch Offline-Analytikrahmen 1310, 1312 ihre erhaltenen visuellen Metadaten in dem Datenspeicher 1314 zur Verwendung bei der Beantwortung nachfolgender visueller Suchanfragen speichern. Demgemäß kann in einigen Fällen der visuelle Verarbeitungsdatenstrom 1308 für eine bestimmte Anfrage 1302 bestehende visuelle Metadaten nutzen, die bereits generiert wurden und in dem Datenspeicher 1314 gespeichert wurden. In anderen Fällen kann jedoch eine weitere Verarbeitung erforderlich sein, um die Anfrage 1302 zu beantworten, und somit kann der visuelle Verarbeitungsdatenstrom 1308 den Offline-Analytikrahmen 1312 nutzen, um eine zusätzliche Verarbeitung vorzunehmen. In jedem Fall wird die visuelle Verarbeitungspipeline oder der Datenstrom 1308, die vom Kompilierer 1304 erzeugt werden, von der Laufzeitumgebung ausgeführt, um eine Antwort auf die visuelle Anfrage 1302 zu generieren.
-
14 veranschaulicht ein Beispiel einer Ausführungsform eines Visual Question Answering- (VQA) Kompilierers. In einigen Ausführungsformen kann der Kompilierer 1400 zum Beispiel verwendet werden, um VQA Anfragen und/oder benutzerdefinierte Vision-Funktionen (UVFs) 1402 in visuelle Datenstromgraphen 1417 zu kompilieren, die quer über die verschiedenen Fog-Knoten in einer Visual Fog-Architektur verteilt werden können und von diesen ausgeführt werden können.
-
In der veranschaulichten Ausführungsform werden zum Beispiel die UVFs 1402 an den Kompilierer 1400 über eine deklarative API 1412 geliefert. Der Kompilierer 1400 kann dann einen Graphen von Vision-Operationen 1415 einer hohen Ebene generieren, welche die UVFs 1402 ausführen müssen, die ihrerseits verwendet werden können, um einen Vision-Datenstromgraphen 1417 zu generieren. In einigen Ausführungsformen kann zum Beispiel der Vision-Datenstromgraph 1417 ein gerichteter azyklischer Graph (DAG) sein, der die visuelle Verarbeitungspipeline repräsentiert, die erforderlich ist, um die bestimmten UVFs 1402 auszuführen. Außerdem kann der Kompilierer 1400 eine Datenstromdeduplizierung verwenden, um den Vision-Datenstromgraphen 1417 zu optimieren, zum Beispiel durch Zusammenführen redundanter Abschnitte der Datenströme mehrerer UVFs 1402, um die Redundanzen zu eliminieren.
-
In einigen Ausführungsformen kann der Kompilierer 1400 zum Beispiel den Vision-Datenstromgraphen 1417 unter Verwendung von Informationen der zugrundeliegenden Vision-Module 1418 generieren (z.B. Hardwarespezifischen Informationen, die zum Planen von Arbeitslasten an heterogener Hardware erforderlich sind). Der Kompilierer 1400 kann auch eine Anzahl von Datenbank-SPI-Aufrufen generieren, um visuelle Daten und/oder Metadaten zu erhalten, die zur Ausführung der UVFs 1402 erforderlich sind. In verschiedenen Ausführungsformen können diese Datenbank-API-Aufrufe entweder ein Teil des Vision-Datenstromgraphen 1417 sein oder davon getrennt sein. Außerdem kann in verschiedenen Ausführungsformen der Kompilierer 1400 verschiedene Ergebnisse in Abhängigkeit von den verfügbaren visuellen Metadaten generieren.
-
Auf diese Weise kann der erhaltene Vision-Datenstromgraph 1417, der von dem Kompilierer 1400 erzeugt wird, anschließend von der Laufzeitumgebung ausgeführt werden, um die Ergebnisse für die Beantwortung an UVFs 1402 zu generieren.
-
Laufzeit
-
Das Visual Fog-Paradigma sieht zehntausende (oder mehr) heterogene, Kamera-aktivierte Edge-Vorrichtungen vor, die quer über das Internet und/oder andere Netze mit großem Maßstab verteilt sind, die ein live Abfühlen einer Vielzahl verschiedener visueller Verarbeitungsanwendungen bereitstellen, angesichts eines Aufgabenparallelismus und Datenparallelismus. Der Maßstab, Rechneranforderungen und die Bandbreite, die für Visual Computing-Pipelines notwendig sein, erfordert ein intelligentes Abladen an eine verteilte Rechnerinfrastruktur, einschließlich der Cloud, Internet-Gateway-Vorrichtungen und der Edge-Vorrichtungen selbst.
-
In einigen Ausführungsformen kann zum Beispiel eine visuelle Verarbeitung quer über verfügbare Fog-Vorrichtungen auf der Basis verschiedener Kriterien geplant werden oder verteilt werden, einschließlich Vorrichtungskonnektivität, Vorrichtungsressourcenfähigkeiten, Vorrichtungsressourcenverfügbarkeit, Arbeitslasttyp, Privacy-Einschränkungen usw. Privacy-Einschränkungen können zum Beispiel verwendet werden, um zu informieren, welcher Inhalt zugelassen werden sollte, und welcher gefiltert werden sollte. In einigen Fällen kann ein gefilterter Inhalt als verringerte Pixeltiefe, verschwommene Pixel oder fehlender Inhalt dargestellt werden, der durch Approximierung und Interferenz unter Verwendung benachbarter, nicht gefilterter Pixel ersetzt wird. Ferner kann ein maschinelles Lernen genutzt werden, um Planungsentscheidungen zu optimieren.
-
Die Arbeitslastbereitstellung und/oder -migration kann unter Verwendung einer Hot Plug-fähigen Laufzeitumgebung mit Universal-Plugin-APIs implementiert werden. Zum Beispiel kann eine herkömmliche Arbeitslastbereitstellung und/oder -migration teuer sein, da sie erfordern kann, die Laufzeitumgebung und Werkzeugketten an die zugewiesenen Knoten zu senden. Mit Hot Plug-fähigen Laufzeiten sind Arbeitslasten jedoch Hot Swap-fähig (z.B. Laufzeit stoppen, Plugin ersetzen, Laufzeit starten).
-
Außerdem kann ein Plugin- oder Vision-Kern-Repository verwendet werden, um die Arbeitslastbereitstellung zu erleichtern. Zum Beispiel kann ein Cloud-basiertes oder verteiltes Repository verwendet werden, um eine Sammlung von Vorrichtungs- und Implementierungsabstraktionen für jede unterstützte Vision Capability zu verwalten. Auf diese Weise kann das Repository die geeigneten Plugins oder Vision-Kerne zu Fog-Knoten auf der Basis ihrer jeweiligen Arbeitslastzuweisungen verteilen.
-
Eine inkrementale Verarbeitung kann durch eine Visual Fog-Laufzeit genutzt werden, um den Zustand irgendeiner früheren Verarbeitung aufrechtzuerhalten, die bereits an visuellen Daten vorgenommen wurde, wodurch es ermöglicht wird, dass die Ergebnisse der früheren Verarbeitung für nachfolgende visuelle Verarbeitungen und Anfragen genutzt werden. Zum Beispiel können die Ergebnisse irgendeiner Verarbeitung, die an visuellen Daten vorgenommen wurde, als visuelle Metadaten dargestellt werden, die für eine spätere Verwendung gespeichert werden können, um das Vornehmen einer duplikativen Verarbeitung für nachfolgende visuelle Anfragen zu vermeiden. Wenn eine visuelle Anfrage oder UVF empfangen wird, kann auf diese Weise der von einem Kompilierer generierte Datenstrom in Abhängigkeit von den verfügbaren Metadaten variieren, die bereits generiert wurden, und kann erneut verwendet werden.
-
Das Vorab-Bereitstellen von Metadaten kann verwendet werden, um die Vision-Anfragelatenz durch Vor-Verarbeiten visueller Daten zu reduzieren, um übliche oder häufige Typen einer Verarbeitung im Voraus zu vollenden. In einigen Ausführungsformen kann zum Beispiel ein maschinelles Lernmodell verwendet werden, um die Typen einer Vor-Verarbeitung zu optimieren, die vorgenommen wird. Auf der Basis von Mustern von Anfragen desselben Typs, oder die ähnlichen Verarbeitungstypen involvieren, kann zum Beispiel ein maschinelles Lernen verwendet werden, um die Beziehungen verschiedener Anfragen zu modellieren, während auch andere Modalitäten berücksichtigt werden (z.B. Wetter, Verkehr). Metadaten können zum Beispiel durch Vor-Planen bestimmter Verarbeitungstypen im Voraus auf der Basis des neueren Verlaufs von Vision-Anfragen und UVFs vorabbereitgestellt werden. Auf diese Weise können Muster üblicher oder ähnlicher Vision-Arbeitslasten eine Vor-Verarbeitung an neu aufgenommenen visuellen Daten für die Typen von Arbeitslasten auslösen, um die Anfragelatenz zu reduzieren.
-
Ähnlich kann ein Stream-Priorisieren oder Vor-Abrufen verwendet werden, um ein Laden oder Abrufen visueller Daten mit geringer Latenz auf der Basis von Verlaufstrends und/oder -arbeitsabläufen vorzunehmen. Zum Beispiel kann der Vision-Verarbeitungsverlauf verwendet werden, um bestimmte Datenströme zu priorisieren und/oder Daten aus dem Speicher für eine bestimmte Anwendung vor-abzurufen, um die Anfragelatenz zu verbessern. Verglichen mit dem Vorab-Breitstellen von Metadaten, das eine beschleunigte Verarbeitung involviert, die im Voraus vorgenommen wird, involviert eine Stream-Priorisierung das Erhalten oder Bewegen visueller Daten an einen Ort, wo sie wahrscheinlich benötigt werden (z.B. von einer Kamera zu bestimmten Verarbeitungs knoten).
-
Cache-gespeicherte visuelle Analytik kann verwendet werden, um die visuelle Verarbeitung unter Verwendung Cache-gespeicherter Arbeitsabläufe zu optimieren, ähnlich einer inkrementalen Verarbeitung. Zum Beispiel können nachfolgende Vision-Verarbeitungsdatenströme, auf der Basis Cache-gespeicherter Informationen in Bezug auf bestimmte visuelle Ströme, die bereits erhalten und verarbeitet wurden, zusammen mit dem Typ einer Verarbeitung oder von Arbeitslasten, die an diesen Strömen vorgenommen wurden, bestimmte Verarbeitungsschritte auslassen, die zuvor vorgenommen wurden, und deren Ergebnisse im Cache gespeichert wurden. Zum Beispiel involvierte eine visuelle Analytikanwendung eine Anzahl von Primitive Vision-Operationen. Das Rechenvolumen kann jedoch reduziert werden, indem visuelle Analytikergebnisse im Cache gespeichert werden und diese für nachfolgende Operationen verwendet werden, wenn möglich. Bei der Ausführung einer visuellen Analytikanwendung können zum Beispiel im Cache gespeicherte visuelle Metadaten, die aus einer vorherigen Verarbeitung resultieren, durchsucht werden, um eine duplikative Berechnung zu vermeiden. In einigen Ausführungsformen kann im Cache gespeicherte visuelle Analytik zum Beispiel wie folgt implementiert werden:
- 1. Jede Primitive Vision-Operation wird unter Verwendung eines Cache-Tags getaggt oder markiert;
- 2. für jeden Fall oder Strom visueller Daten (z.B. jedes gespeicherte Video) werden beliebige entsprechende visuelle Metadaten, die bereits generiert wurden, in einer Metadaten-Datenbank oder einem Cache gespeichert;
- 3. wenn es einen Cache-Tag-Treffer für eine bestimmte Primitive Vision-Operation in Bezug auf einen bestimmten Fall oder Strom visueller Daten gibt, kann die bestimmte Primitive Vision-Operation dann weggelassen werden, und stattdessen können die bestehenden visuellen Metadaten verwendet werden; und
- 4. wenn es einen Cache-Tag-Fehltreffer gibt, wird die bestimmte Primitive Vision-Operation ausgeführt, und die erhaltenen Metadaten werden in der Metadaten-Datenbank für eine nachfolgende Verwendung gecacht.
-
Eine Tensorfaktorisierung kann auch für eine verteilte neuronale Netzinterferenz verwendet werden, um das Überanpassungsproblem zu adressieren. Zum Beispiel können repräsentative Gewichte konsekutiver neuronaler Netzschichten eine Tensorfaktorisierung nützen, um das Modell „auszuglätten“.
-
15 und 16 veranschaulichen Beispiele von Ausführungsformen einer vorrichtungszentrischen Planung für das Visual Fog Computing. In einigen Ausführungsformen kann zum Beispiel eine Visual Fog-Planung abhängig sein von (1) Vorrichtungsressourcenfähigkeiten, und (2) Arbeitslastressourcenanforderungen. Während die Ersteren konstant und konsistent bleiben, können die Letzteren in Abhängigkeit von den Hardware-Spezifikationen einer Vorrichtung und Software-Werkzeugketten variieren. Zum Beispiel kann es in einigen Ausführungsformen mehrere Implementierungen einer Gesichtserkennungsfähigkeit geben, die jeweils für verschiedene Hardware-Typen optimiert sind, wie CPUs, GPUs, FPGAs, ASICs usw. Auf diese Weise können mehrere Implementierungen einer einzelnen Vision-Fähigkeit genutzt werden, um eine Möglichkeit zur weiteren Optimierung im Visual Fog Computing zu schaffen.
-
Um die Heterogenität von Vorrichtungen mit verschiedene Typen von Hardware und/oder Software zu adressieren, implementieren demgemäß die veranschaulichten Ausführungsformen eine vorrichtungszentrische Planung unter Verwendung eines Vision Capabilities Repository. In einigen Ausführungsformen kann das Vision Capabilities Repository zum Beispiel mehrere Implementierungen einer bestimmten Vision-Fähigkeit umfassen, die für verschiedene Hardware- und/oder Software-Umgebungen optimiert sind. Auf diese Weise können Vision-Arbeitslasten quer über Fog-Vorrichtungen auf der Basis ihrer jeweiligen Typen von Ressourcen und Fähigkeiten zusammen mit Pro-Ressource-Telemetrieinformationen geplant oder verteilt werden, die eine Ressourcenverfügbarkeit identifizieren.
-
Das Grundprinzip ist, Fähigkeiten (z.B. Gesichtsdetektion, Gestendetektion) aus ihren zugrundeliegenden Kernen/Implementierungen (z.B. SIFTbasierten Implementierungen, tiefen neuronalen Netzimplementierungen) zu abstrahieren. Dieser Typ einer Abstraktion bietet die Flexibilität, eine willkürliche Vision-Fähigkeit auf einer Pro-Vorrichtung-Basis bereitzustellen. Zum Beispiel können unter Verwendung einer Ressourcen-basierten Planung heterogene Ressourcentypen verschiedener Fog-Vorrichtungen insgesamt berücksichtigt werden, um das optimale Aufgabe-auf-Vorrichtung-Mapping quer über die verschiedenen Fog-Vorrichtungen zu bestimmen, und auch um die entsprechenden Vision-Fähigkeitsimplementierungen zu identifizieren, die jede Vorrichtung für ihre zugewiesenen Aufgaben verwenden sollte. Außerdem kann die Ressourcentelemetrie verwendet werden, um die Ressourcenverfügbarkeit von Fog-Vorrichtungen auf einer Pro-Ressource-Basis (z.B. CPU, GPU, FPGA, ASIC usw.) zu überwaschen, um intelligente Planungsentscheidungen weiter zu erleichtern. Ferner kostet das Vision Capability Repository Sammlungen von Implementierungen verschiedener Vision-Fähigkeiten und kann auch einen Anforderung-Antwort-Dienst liefern, der es einer Vorrichtung gestattet, eine verfügbare Implementierung einer bestimmten Vision-Fähigkeit anzufordern.
-
Auf diese Weise kann eine vorrichtungszentrische Planung verwendet werden, um eine Ende-zu-Ende- (E2E) Leistung (z.B. Latenz und Bandbreiteneffizienz) und Skalierbarkeit für das Visual Fog Computing zu verbessern.
-
15 veranschaulicht ein Beispiel einer Architektur 1500 zur Implementierung einer vorrichtungszentrischen Planung in einem Visual Computing System. In der veranschaulichten Ausführungsform umfasst zum Beispiel die Visual Computing-Architektur 1500 Benutzer 1502, einen Planungsserver 1504, ein Vision Kernel Repository 1506 und verschiedene Typen von Fog-Vorrichtungen 1510. Eine Fog-Vorrichtung 1510 kann zum Beispiel eine beliebige Vorrichtung im Bereich vom Rand eines Netzes zur Cloud inklusive umfassen. In der veranschaulichten Ausführungsform umfassen die Fog-Vorrichtungen 1510 zum Beispiel Kameras 1510a, Gateways 1510b und Cloud-Server 1510c.
-
In einigen Ausführungsformen können die Benutzer 1502 Suchanfragen für visuelle Daten stellen, die von den Kameras 1510a aufgenommen werden. Um auf diese Anfragen effizient zu antworten, kann ferner der Planungsserver 1504 Vision-Verarbeitungsarbeitslasten quer über die verschiedenen Fog-Vorrichtungen 1510 planen oder verteilen. In einigen Ausführungsformen kann der Planungsserver 1504 zum Beispiel intelligente Planungsentscheidungen auf der Basis verschiedener Kriterien treffen, wie der Typen von Ressourcen im Fog (z.B. der heterogenen Typen von Ressourcen der verschiedenen Fog-Vorrichtungen 1510), Ressourcentelemetrieinformationen (zum Beispiel der Verfügbarkeit von Fog-Ressourcen auf einer Pro-Ressourcentyp-Basis) und der Implementierungen von Vision-Fähigkeiten, die in dem Vision Capability Repository 1506 verfügbar sind.
-
Ein Beispiel einer Ausführungsform des Planungsprozesses wird zum Beispiel im Nachstehenden in Verbindung mit 16 beschrieben.
-
16 veranschaulicht ein Flussdiagramm 1600 für ein Beispiel einer Ausführungsform einer vorrichtungszentrischen Planung in einem Visual Computing System. In einigen Ausführungsformen kann das Flussdiagramm 1600 zum Beispiel unter Verwendung der Visual Computing-Architektur 1500 von 15 implementiert werden.
-
Das Flussdiagramm kann bei Block 1602 beginnen, indem die verfügbaren Vision Capability-Implementierungen gesammelt werden. In einigen Ausführungsformen synchronisiert der Planungsserver zum Beispiel kontinuierlich die Sammlung verfügbarer Implementierungen von Vision-Fähigkeiten aus dem Vision Capability Repository.
-
Das Flussdiagramm kann dann zu Block 1604 weitergehen, um die Ressourcentelemetrie von Fog-Vorrichtungen zu sammeln. In einigen Ausführungsformen kann der Planungsserver zum Beispiel die Ressourcenverfügbarkeit aller Fog-Vorrichtungen auf einer Pro-Ressourcentyp-Basis sammeln. Zum Beispiel kann der Planungsserver Informationen in Bezug auf die Ressourcenverfügbarkeit von CPUs, GPUs, FPGAs, ASICs und/oder irgendeinem anderen Ressourcentyp quer über alle Fog-Vorrichtungen sammeln.
-
Auf der Basis der verfügbaren Vision Capability-Implementierungen, die in Block 1602 gesammelt wurden, und der Ressourcentelemetrieinformationen, die in Block 1604 gesammelt wurden, kann auf diese Weise der Planungsserver anschließend Vision-Arbeitslasten auf der Basis des optimalen Aufgabe-auf-Vorrichtung-Mappings in dem Visual Fog-Paradigma planen.
-
Zum Beispiel kann das Flussdiagramm dann zu Block 1606 weitergehen, um zu bestimmen, ob eine neue Vision-Arbeitslast von einem Benutzer empfangen wurde. In einigen Ausführungsformen kann ein Benutzer zum Beispiel eine neue visuelle Anfrage stellen, die erfordern kann, dass eine neue Vision-Arbeitslast quer über die Fog-Vorrichtungen geplant oder verteilt wird.
-
Wenn in Block 1606 bestimmt wird, dass eine neue Vision-Arbeitslast NICHT empfangen wurde, kann das Flussdiagramm dann zu Block 1602 zurückgehen, um die Synchronisation der verfügbaren Vision Capability-Implementierungen und das Sammeln von Ressourcentelemetrieinformationen fortzusetzen, bis eine neue Vision-Arbeitslast empfangen wird.
-
Wenn in Block 1606 bestimmt wird, dass eine neue Vision-Arbeitslast empfangen wurde, kann das Flussdiagramm dann zu Block 1608 weitergehen, um alle anstehenden Arbeitslasten umzuplanen. In einigen Ausführungsformen kann zum Beispiel das Empfangen einer neuen Vision-Arbeitslast für einen Benutzer auslösen, dass der Planungsserver alle anstehenden Arbeitslasten umplant, um sicherzustellen, dass die kollektiven Arbeitslasten quer über die Fog-Vorrichtungen in der möglichst effizientesten Weise verteilt werden (z.B. auf der Basis des optimalen Aufgabe-auf-Vorrichtung-Mappings).
-
In einigen Ausführungsformen kann die Planung zum Beispiel auf der Basis verschiedener Kriterien vorgenommen werden, wie der Typen von Fog-Ressourcen, die verfügbar sind, Telemetrieinformationen für diese Ressourcen und der Vision Capability-Implementierungen, die für diese Fog-Ressourcen verfügbar sind.
-
In einigen Ausführungsformen kann ein Plan, der die Einschränkungen mehrerer Ressourcentypen einhält, unter Verwendung einer ganzzahligen linearen Programmierung (ILP) bestimmt werden. Die ganzzahlige lineare Programmierung (ILP) ist eine mathematische Optimierung oder Durchführbarkeitstechnik zur Lösung oder Optimierung eines mathematischen Modells, das durch lineare Beziehungen repräsentiert wird. Insbesondere kann die ILP verwendet werden, um eine lineare objektive Funktion zu optimieren, die zusätzlichen linearen Gleichheits- und linearen Ungleichheitseinschränkungen unterliegt. Als Beispiel kann ein ILP Problem wie folgt ausgedrückt werden:
minimieren: | cTx | (objektiver Term) |
unterliegt: | Ax < b | (Ungleichheitseinschränkung) |
| Cx = d | (Gleichheitseinschränkung) |
und: | x ∈ {0,1}K | (binäre Einschränkung) |
-
Außerdem kann diese ILP Modell verwendet werden, um einen optimalen Plan f zu bestimmen, der ein spezifisches Ziel (z.B. totale Netznutzung) erfüllt, während auch andere zusätzliche Einschränkungen (z.B. Vorrichtungsressourceneinschränkungen) erfüllt werden. In dem obigen ILP Modell präsentiert zum Beispiel x die Sammlung möglicher Pläne f, K ist die Länge von x, der objektive Term präsentiert ein Planungsziel, das zu minimieren ist (z.B. totale Netznutzung), und die Ungleichheits/Gleichheitseinschränkungen präsentieren beliebige zusätzliche Einschränkungen (z.B. Vorrichtungs-, Ressourcen-, Netz, Mapping- und/oder Privacy Einschränkungen). Eine Vorrichtungsressourceneinschränkung kann zum Beispiel als Ungleichheitseinschränkung des ILP Modells präsentiert werden. Um Einschränkungen mehrerer Ressourcentypen zu berücksichtigen, können sie zum Beispiel in mehrere Ungleichheiten in der Form von Ax < b in dem obigen ILP Modell aufgewendet werden.
-
Auf der Basis der Planungsentscheidungen ordnet demgemäß der Planungsserver jeder Fog-Vorrichtung null oder mehrere Aufgaben zu. In einigen Ausführungsformen kann zum Beispiel eine Aufgabe in einem Tupel der Form t = (p, r) spezifiziert werden, wobei p die Vision-Fähigkeit bezeichnet, und r den Ressourcentyp bezeichnet (z.B. p = Gesichtsdetektion, r = Movidius-Prozessor).
-
Das Flussdiagramm kann dann zu Block 1610 weitergehen, um zu bestimmen, ob ein aktualisierter Arbeitslastplan verfügbar ist. Nachdem eine neue Vision-Arbeitslast empfangen wird und die anstehenden Arbeitslasten umgeplant werden, kann der Planungsserver zum Beispiel einen aktualisierten oder verbesserten Arbeitslastplan haben, der an die Fog-Vorrichtungen verteilt werden muss. In einigen Ausführungsformen kann der Planungsserver jedoch den Arbeitslastplan nur aktualisieren, wenn der neu generierte Plan besser oder effizienter ist als der aktuelle Arbeitslastplan.
-
Wenn in Block 1610 bestimmt wird, dass der Arbeitslastplan NICHT aktualisiert wurde, kann das Flussdiagramm dann zu Block 1602 zurückgehen, um die Synchronisation der verfügbaren Vision Capability-Implementierungen und das Sammeln von Ressourcentelemetrieinformationen fortzusetzen, bis der aktuelle Arbeitslastplan letztlich aktualisiert wird.
-
Wenn jedoch in Block 1610 bestimmt wird, dass ein aktualisierter Arbeitslastplan verfügbar ist, kann das Flussdiagramm dann zu Block 1612 weitergehen, um den aktualisierten Arbeitslastplan zu allen Fog-Vorrichtungen zu pushen.
-
Das Flussdiagramm kann dann zu Block 1614 weitergehen, um Anforderungen von Fog-Vorrichtungen für Vision Capability-Implementierungen zu empfangen. Zum Beispiel kann jede Fog-Vorrichtung bei dem Vision Capability Repository anfragen, um Implementierungen von Vision Capabilities für die Aufgaben anzufordern, die der bestimmten Fog-Vorrichtung zugewiesen wurden. In einigen Ausführungsformen kann zum Beispiel die Anforderung von einer bestimmten Fog-Vorrichtung jede ihrer zugewiesenen Aufgaben t identifizieren.
-
Das Flussdiagramm kann dann zu Block 1616 weitergehen, um die geeigneten Vision Capability-Implementierungen für jede Fog-Vorrichtung zu identifizieren. In einigen Ausführungsformen kann das Vision Capability Repository zum Beispiel ein Wörterbuch von Schlüsselwertpaaren in der Form von (Aufgabe t, Implementierung i) sein, wobei eine Implementierung i in verschiedenen Formen verteilt werden kann (z.B. eine dynamische Verbindungsbibliothek in C/C++). Auf der Basis der Aufgabe (n) t, die in der Anforderung von einer bestimmten Fog-Vorrichtung spezifiziert wird (werden), identifiziert demgemäß das Vision Capability Repository die entsprechende(n) Implementierung(en) i für diese Fog-Vorrichtung. In einigen Ausführungsformen identifiziert das Vision Capability Repository zum Beispiel die optimale Implementierung jeder Vision-Fähigkeit, die von einer Fog-Vorrichtung angefordert wird, auf der Basis der verfügbaren Ressourcen dieser Fog-Vorrichtung.
-
Das Flussdiagramm kann dann zu Block 1618 weitergehen, um die identifizierten Vision Capability-Implementierungen an jede Fog-Vorrichtung zu verteilen. Auf diese Weise kann jede Fog-Vorrichtung dann ihre zugewiesenen Aufgaben unter Verwendung der geeigneten Vision Capability-Implementierungen vornehmen.
-
An diesem Punkt kann das Flussdiagramm vollendet sein. In einigen Ausführungsformen kann das Flussdiagramm jedoch erneut starten, und/oder bestimmte Blöcke können wiederholt werden. Zum Beispiel kann in einigen Ausführungsformen das Flussdiagramm bei Block 1602 neu starten, um Vision-Arbeitslasten weiter zu planen.
-
17 veranschaulicht ein Beispiel einer Ausführungsform einer Laufzeitverarbeitungspipeline 1700 für eine Visual Fog-Architektur. In der veranschaulichten Ausführungsform wird zum Beispiel ein roher Strom von visuellen Daten 1701 (z.B. Video oder Bilder), die von Kameras oder visuellen Sensoren in einer Visual Fog-Architektur aufgenommen wurden, als Eingabe in einen Stromeintrittsrahmen 1702 bereitgestellt. Der Stromeintrittsrahmen 1702 decodierten den rohen Strom von visuellen Daten 1701, und dann wird ein decodierter Strom 1703 als Eingabe für einen verteilten Vor-Verarbeitungsrahmen 1704 bereitgestellt. Der verteilte Vor-Verarbeitungsrahmen 1704 nimmt dann irgendeine vorläufige Verarbeitung unter Verwendung bestimmter Fog-Ressourcen am Netzrand vor (z.B. nahe bei den Kameras oder Sensoren, welche die visuellen Daten aufgenommen haben), wie eine Daten-Vor-Verarbeitung, ein Filtern und/oder eine Aggregation. Der erhaltene gefilterte Strom 1705 kann dann im Datenspeicher 1706 für eine nachfolgende Verwendung bei der Beantwortung visueller Suchanfragen und/oder benutzerdefinierten Vision-Funktionen (UVFs) 1709 von Endbenutzern gespeichert werden.
-
Zum Beispiel können Endbenutzer anschließend visuelle Suchanfragen und/oder benutzerdefinierte Vision-Funktionen (UVFs) 1709 stellen, die mit den visuellen Daten assoziiert sind, welche von dem Visual Fog-System aufgenommen wurden. Demgemäß werden die UVFs 1709 an einen UVF Kompilierer 1710 geliefert, der die UVFs 1709 in einen Vision-Datenstromgraphen 1711 kompiliert, der verwendet werden kann, um die UVFs auszuführen. Zum Beispiel wird der Vision-Datenstromgraph 1711 an einen verteilten UVF Ausführungsrahmen 1712 geliefert, der Arbeitslasten, die mit dem Vision-Datenstromgraphen 1711 assoziiert sind, quer über die verfügbaren Fog-Knoten in der Visual Fog-Architektur verteilt oder plant.
-
Nachdem die Arbeitslasten die Ausführung beenden, generiert der verteilte UVF Ausführungsrahmen 1712 einen Ausgang 1713, der aus der Ausführung der UVFs 1709 resultiert. Zum Beispiel kann der Ausgang 1713 einen gefilterten Strom von visuellen Daten und/oder Metadaten 1707 umfassen, oder kann davon abgeleitet sein, die durch die Ausführung der UVFs 1709 generiert werden. Außerdem kann in einigen Ausführungsformen der erhaltene Strom von visuellen Daten und/oder Metadaten 1707 dann im Datenspeicher 1706 zur Beantwortung nachfolgender visueller Suchanfragen oder UVFs gespeichert werden.
-
Speicher
-
Da das Volumen visueller Daten wächst, die in der realen Welt generiert werden, wird es zunehmend üblich, dass visuelle Daten automatisch von Computern verarbeitet werden, anstatt manuell von Menschen betrachtet zu werden. Aufgrund des steigenden Volumens visueller Daten wurde jedoch der Datenzugriff ein Flaschenhals in der visuellen Datenverarbeitung, da bestehende visuelle Datenspeicheransätze verschiedene Mängel aufweisen.
-
Zur Veranschaulichung ist eine Bildklassifikation eine übliche visuelle Datenoperation, die ein neuronales Netz verwendet, um die Inhalte eines Bilds zu identifizieren. Zum Beispiel ist beim maschinellen Lernen ein konvolutionales neuronales Netz (CNN) ein Typ eines vorwärtsgekoppelten künstlichen neuronalen Netzes, wo im Allgemeinen angenommen wird, dass der Eingang ein Bild ist. CNNs werden üblicherweise für die Bildklassifikation verwendet, wobei das Ziel ist, die Inhalte eines Bilds mit einem bestimmten Niveau an Vertrauen zu bestimmen. Zum Beispiel wird ein CNN zuerst auf eine spezifische Klassifikationsaufgabe unter Verwendung eines Satzes von Bildern trainiert, deren Objektklassen oder -merkmale markiert wurden, und dann kann das CNN verwendet werden, um die Wahrscheinlichkeit zu bestimmen, ob andere Bilder die jeweiligen Objektklassen enthalten.
-
Visuelle Daten (z.B. Bilder, Video) müssen zuerst aus einem Speichersystem geladen werden, bevor sie von einem CNN verarbeitet werden können. In der Vergangenheit war die Datenzugriffslatenz typischerweise geringer als die CNN-Vision-Verarbeitungslatenz, wodurch es ermöglicht wurde, dass der Datenzugriff während der CNN Verarbeitung vorgenommen wird. Da jedoch Hardware- und Software-Optimierungen die Leistung von CNN Vision-Verarbeitungsalgorithmen weiter verbessern, wurde die Datenzugriffslatenz bestehender Lösungen der Flaschenhals. Außerdem speichern bestehende Lösungen typischerweise visuelle Daten in ihrem ursprünglichen Format anstatt in einem Format, das dafür ausgebildet ist, um die visuelle Datenverarbeitung zu unterstützen, was die Leistung weiter behindert.
-
Bestehende Lösungen sind auch nicht in der Lage, visuelle Daten effizient zu durchsuchen. Zum Beispiel ist angesichts eines großen Datensatzes (z.B. Millionen von Bildern) die Fähigkeit wichtig, einen Teilsatz relevanter Bilder unter Verwendung einer Anfrage effizient zu identifizieren. Der Ausgang eines CNN, das zur Bildklassifikation verwendet wird, umfasst typischerweise einen Vektor von Werten, die der Wahrscheinlichkeit entsprechen, dass verschiedene Objekte in einem Bild vorhanden sind. Bestehende Lösungen verwenden jedoch typischerweise diese Informationen für die vorliegende Aufgabe und verwerfen sie dann, wodurch es erforderlich wird, dass die Verarbeitung für eine nachfolgende Verwendung wiederholt wird. Zum Beispiel kann ein CNN, das verwendet wird, um ein Bild mit einem Hund und einer Katze zu verarbeiten, eine Wahrscheinlichkeit für beide liefern, wenn das Ziel jedoch war, Bilder mit Hunden zu finden, gehen die Informationen über Katzen typischerweise verloren oder werden verworfen, wodurch eine zukünftige Verwendung verhindert wird. Auf diese Weise würde eine nachfolgende Suche nach Bildern, die Katzen enthalten, typischerweise erfordern, dass das CNN erneut an jedem Bild durchlaufen gelassen wird.
-
Demgemäß veranschaulicht 18 ein Beispiel einer Ausführungsform einer visuellen Datenspeicherarchitektur 1800, die dafür ausgebildet ist, um einen effizienten Zugriff auf visuelle Daten zu liefern und die Mängel bestehender Speicherlösungen zu eliminieren, die zur visuellen Datenverarbeitung verwendet werden. Insbesondere liefert die Speicherarchitektur 1800 eine effiziente Metadatenspeicherung zum Durchsuchen visueller Daten sowie analysefreundlichen Formate zum Speichern visueller Daten.
-
In der veranschaulichten Ausführungsform umfasst die Speicherarchitektur 1800 einen Anforderungsserver 1802 zum Empfangen visueller Suchanfragen von einer Client-API 1801, eine Metadaten-Datenbank 1804, eine Visual Compute-Bibliothek 1806 und einen persistenten Datenspeicher 1810, wie im Nachstehenden weiter erläutert.
-
In einigen Ausführungsformen kann die Speicherarchitektur 1800 zum Beispiel eine vereinheitlichte API 1801 für einen visuellen Datenzugriff bereitstellen (z.B. sowohl für visuelle Daten als auch Metadaten). Zum Beispiel werden visuelle Daten üblicherweise direkt als Dateien oder in verschiedenen Typen von Datenbanken gespeichert (z.B. Schlüsselwert-, relationalen und/oder graphischen Datenbanken). Visuelle Metadaten werden zum Beispiel typischerweise in Datenbanken gespeichert, während Bilder und Videos typischerweise als Dateien gespeichert werden. Außerdem liefern verschiedene Typen von Dateisystemen und Datenbanken API Funktionen in verschiedenen Programmier- und/oder Anfragesprachen, um es Benutzern zu gestatten, auf Daten zuzugreifen und diese zu speichern. Demgemäß kann in einigen Ausführungsformen die visuelle Speicherarchitektur 1800 mit einer vereinheitlichen API (z.B. JSON-basiert) implementiert werden, die multimodale Anfragen zum Abrufen irgendeines Typs visueller Daten aus irgendeiner Speicherquelle unterstützt. In einigen Ausführungsformen könnte die vereinheitlichte API zum Beispiel verwendet werden, um visuelle Metadaten und die ursprünglichen visuellen Daten aus verschiedenen Speicherorten abzurufen und/oder zu kombinieren. Die vereinheitlichte API kann es auch gestatten, dass bestimmte Verarbeitungstypen an visuellen Daten vorgenommen werden, bevor sie zum anfordernden Benutzer zurückgeführt werden. Ferner kann es die vereinheitlichte API Benutzern gestatten, explizit visuelle Einträge, wie Bilder, Merkmalvektoren und Videos, zu erkennen, und kann einen Zugriff auf diese visuellen Einheiten auf der Basis ihrer Beziehung miteinander und mit anderen Einheiten, die mit einer bestimmten Vision-Anwendung assoziiert sind, erleichtern.
-
Außerdem kann in einigen Ausführungsformen ein Multi Tier-Vorhaltdatenspeicheransatz verwendet werden, um visuelle Daten effizienter zu speichern (z.B. Verwendung eines lang- oder kurzfristigen Speicherns in verschiedenen Abschnitten eines verteilten Edge-to-Cloud-Netzes). Zum Beispiel können die mehreren Speicherstufen verwendet werden, um visuelle Daten an verschiedenen Orten zu speichern, und zum Variieren einer Zeitdauer auf der Basis des Typs oder der Wichtigkeit der visuellen Daten. In einigen Ausführungsformen können zum Beispiel Videokameras alle Videos speichern, die am letzten Tag aufgenommen wurden, Gateways können Video mit Bewegungsaktivitäten innerhalb der letzten Woche speichern, und die Cloud kann Video speichern, dass mit bestimmten signifikanten Ereignissen innerhalb des letzten Jahres assoziiert ist.
-
Ähnlich kann die intelligente Platzierung und Alterung visueller Daten quer über die Speicherstufen die Datenspeichereffizienz weiter verbessern (z.B. Bestimmen, wo die visuellen Daten innerhalb des verteilten Edge-to-Cloud-Systems zu speichern sind, wann die Daten vom heißen zum warmen zum kalten Speicher bewegt werden sollten, usw.). Zum Beispiel können visuelle Daten und Metadaten auf der Basis von Datenzugriffsmustern unterschieden und segregiert werden. Außerdem können analysefreundlichen Speicherformate verwendet werden, um zu ermöglichen, dass Daten schneller gelesen werden, wenn sie für eine Vision-Verarbeitung benötigt werden. Diese verschiedenen Datenformate können verwendet werden, um die heißen, warmen und kalten Datenstufen zu bilden, die auf verschiedene heterogene Memory- und Speichertechnologien gemappt werden können, auf der Basis der beabsichtigten Verwendung und Lebensdauer der Daten. Zum Beispiel können Speicherstufen verwendet werden, um heiße, kalte und gegebenenfalls warme Daten zu repräsentieren. Auf heiße Daten wird häufig zugegriffen, auf warme Daten wird gelegentlich zugegriffen, und auf kalte Daten wird selten zugegriffen (wenn überhaupt). Demgemäß können kalte Daten auf langsamerer Hardware gespeichert werden, da eine niedrige Zugriffslatenz zum Abrufen der Daten weniger wichtig ist. Auf diese Weise können intelligente Entscheidungen verwendet werden, um zu bestimmen, wann und welche Abschnitte visueller Daten in den heißen Schichten bleiben sollten, und wann sie zu kalten Stufen bewegt werden sollten, und welches Speicherformat verwendet werden sollte. Zum Beispiel können Regionen von Interesse viel länger im heißen Speicher in dem analysefreundlichen Format bleiben als das gesamte Bild/Video.
-
Die Metadaten-Datenbank 1804 wird verwendet, um Metadaten in einer Weise zu speichern, die effiziente Suchen nach visuellen Daten erleichtert. Wenn zum Beispiel eine Bildklassifikation unter Verwendung eines CNN vorgenommen wird, können die erhaltenen Bild-Objekt-Beziehungen oder -Wahrscheinlichkeiten als Metadaten gespeichert werden, und die Metadaten können für ein nachfolgendes Durchsuchen der Bilder verwendet werden, wodurch die Notwendigkeit entfällt, die Bilder für jede Suche wiederholt zu verarbeiten. 19 veranschaulicht zum Beispiel ein Beispiel einer Vision-Verarbeitungspipeline 1900, die Metadaten zum Durchsuchen visueller Daten nutzt. In dem veranschaulichten Beispiel wird ein Strom ankommender visueller Daten von einem Netz oder Dateisystem in Block 1902 empfangen, eine Vision-Verarbeitung wird an den visuellen Daten vorgenommen, um Metadaten (z.B. unter Verwendung eines CNN) abzuleiten in Block 1904, die Metadaten werden in Block 1906 gespeichert, Suchanfragen für relevante visuelle Daten werden in Block 1908 empfangen, und die Suchanfragen werden dann erfüllt, unter Verwendung entweder der Metadaten, die in Block 1906 erhalten werden, oder einer zusätzlichen Vision-Verarbeitung, die in Block 1904 vorgenommen wird.
-
In einigen Ausführungsformen kann die Speicherarchitektur 1800 visuelle Metadaten als Property Graph speichern, um Beziehungen zwischen visuellen Daten zu identifizieren, wie Bilder, die dasselbe Objekt oder dieselbe Person enthalten, Bilder, die an demselben Ort aufgenommen wurden, usw. Zum Beispiel veranschaulichen 20 und 21 Beispiele der Darstellung visueller Metadaten unter Verwendung eines Property Graphen. Auf diese Weise können visuelle Metadaten leicht durchsucht werden, um diese Beziehungen zu identifizieren, wodurch flexible Suchanfragen ermöglicht werden, wie „finde alle am Ort Y aufgenommenen Bilder, die Person A enthalten“.
-
Außerdem kann in einigen Ausführungsformen die Metadaten-Datenbank 1804 der Speicherarchitektur 1800 als persistente Speichergraph-Datenbank (PMGD) implementiert werden, um zu ermöglichen, dass visuelle Metadaten effizienter durchsucht werden. Zum Beispiel kann unter Verwendung der persistenten Speicher- (PM) Technologie eine Graphdatenbank, welche die visuellen Metadaten enthält, sowohl im Speicher als auch persistent gespeichert werden. Auf diese Weise kann eine persistente Speichergraph-Datenbank (PMGD) dafür ausgebildet werden, um eine Speicherhierarchie mit Datenstrukturen und transaktionaler Semantik zu nutzen, die mit der PM Caching-Architektur arbeiten, um Schreibanforderungen (Adressierung einer niedrigeren Schreibbandbreite des PM verglichen mit einem DRAM) zu reduzieren, und um die Anzahl von Flushes und Speicherfestschreibungen zu reduzieren. Dieser Ansatz gestattet, dass eine Graphdatenbank visueller Metadaten effizient durchsucht wird, um relevante visuelle Daten zu identifizieren.
-
Ferner können Merkmalvektor-Speicheroptimierungen verwendet werden, um ein schnelles Durchsuchen visueller Metadaten zu erzielen. Zum Beispiel können Merkmalvektoren durch verschiedenste Vision-Algorithmen generiert werden, um Regionen oder Merkmale von Interesse in visuellen Daten zu identifizieren (z.B. Gesichter, Personen, Objekte), und sie werden typischerweise als Vektoren n-dimensionaler Gleitkommawerte dargestellt. Das Finden des nächsten Nachbars für einen gegebenen Merkmalvektor ist eine übliche Operation, die rechnerisch teuer ist, insbesondere im Cloud-Maßstab aufgrund von Milliarden potentieller Merkmalvektoren (z.B. ein Merkmalvektor für jede interessante Region jedes Bild- oder Videorahmens). Demgemäß können in einigen Ausführungsformen Merkmalvektoren als visuelle Metadaten unter Verwendung eines effizienten Formats dargestellt und gespeichert werden. Zum Beispiel können visuelle Metadaten unter Verwendung eines analysefreundlichen Array-Formats gespeichert werden, das anzeigt, wo der Merkmalvektor residiert, und ein Index kann auf interessanten Dimensionen innerhalb des Metadatenspeichers aufgebaut werden, um den Suchraum zu verschmälern.
-
Die Speicherarchitektur 1800 umfasst auch einen getrennten Datenspeicher 1810 zum Speichern der visuellen Daten selbst, wie Bilder oder Videos. Die Segregation der Metadaten und visuellen Daten auf diese Weise ermöglicht es, dass jeder Typ von Daten auf die geeignetste Hardware in einem heterogenen System gemappt wird, wodurch Flexibilität für den Anforderungsserver 1802 geliefert wird, um den effektivsten Weg zu identifizieren, um eine visuelle Datenanforderung handzuhaben.
-
Außerdem ist die Speicherarchitektur 1800 auch in der Lage, visuelle Daten in dem Datenspeicher 1810 unter Verwendung eines analytischen Bildformats zu speichern, das dafür ausgebildet ist, die visuelle Verarbeitung zu unterstützen. In der veranschaulichten Ausführungsform ist zum Beispiel eine Visual Compute-Bibliothek (VCL) 1806 der Speicherarchitektur 1800 dafür ausgebildet, die Verarbeitung an analytischen Bildformaten 1807 zusätzlich zum traditionellen Format 1708 handzuhaben. Zum Beispiel kann die Visual Compute-Bibliothek 1806 ein analytisches Bildformat 1807 unter Verwendung eines Array-basierten Datenverwaltungssystems, wie TileDB, implementiert, wie mit Bezugnahme auf 22 weiter beschrieben. Das analytische Bildformat 1807 liefert einen schnellen Zugriff auf Bilddaten und Regionen von Interesse innerhalb eines Bilds. Da das analytische Bildformat 1807 Bilddaten als Array speichert, ermöglicht es das analytische Bildformat 1807 außerdem der Visual Compute-Bibliothek 1806, Berechnungen direkt an dem Array von Bilddaten vorzunehmen. Die Visual Compute-Bibliothek 1806 kann auch Bilder zwischen dem analytischen Bildformat 1807 und traditionellen Bildformaten 1808 (z.B. JPEG und PNG) konvertieren. Ähnlich können Videos unter Verwendung eines maschinenfreundlichen Videoformats gespeichert werden, das dafür ausgebildet ist, eine Maschinen-basierte Analyse zu erleichtern. Zum Beispiel werden Videos typischerweise codiert, komprimiert und gespeichert unter der Annahme, dass sie von Menschen angesehen werden. Diese Annahme wird häufig für eine Videocodierung genutzt, wobei Informationen eliminiert werden, die menschliche Augen und Gehirne nicht verarbeiten können. Videos, die für eine Maschinen-basierte Verarbeitung bestimmt sind, können jedoch von alternativen Speichermethoden profitieren, die dafür ausgebildet sind, um die Zeit zu beschleunigen, die erforderlich ist, um Vollbilder oder Regionen von Interesse innerhalb eines Videos oder Videorahmens abzurufen, und erhöhen sogar die Genauigkeit von maschinellen Lern-Videoverarbeitungsmechanismen.
-
22 veranschaulicht ein Beispiel einer Ausführungsform eines analytischen Bildformats 2200, das dafür ausgebildet ist, um die visuelle Datenverarbeitung zu unterstützen. In einigen Ausführungsformen kann die Speicherarchitektur 1800 zum Beispiel das analytische Bildformat 2200 verwenden, um Bilder in einem Format zu speichern, das die visuelle Datenverarbeitung und - analyse erleichtert.
-
Neuronale Deep Learning-Netze, wie CNNs, werden häufig für die Bildverarbeitung verwendet, umfassend Objekt/ Rand-Detektion, Segmentierung und Klassifikation, unter anderen Beispielen. Bilder werden typischerweise von einer Platte sowohl während des Trainings als auch des Ableitens gelesen, unter Verwendung von Hintergrundsträngen, um Bilder von der Platte vor-abzurufen und die Plattenabruf- und Decodierungszeiten mit den anderen Rechensträngen zu überlappen. Rechenzyklen können jedoch weiterhin vergeudet werden, indem die Bilder von der Platte gelesen werden und die Bilder dekomprimiert/decodiert werden, um sie auf die Verarbeitung vorzubereiten, wodurch der Gesamtdurchsatz (z.B. Bilder/ Sekunde) eines Bildverarbeitungssystems reduziert wird.
-
Außerdem sind traditionelle verlustbehaftete Bildformate (z.B. JPEG) dafür ausgebildet, um Bilddaten durch das Verwerfen von Hochfrequenzinformationen zu komprimieren, die von Menschen nicht wahrgenommen werden können. Obwohl die verworfenen Informationen für Menschen bedeutungslos sein können, können sie jedoch die Genauigkeit und Leistung von neuronalen Deep Learning-Netzen verbessern, die für die Bildverarbeitung verwendet werden.
-
Zum Beispiel können Bilder entweder in einer verlustfreien oder verlustbehafteten Weise komprimiert werden. Die verlustfreie Bildkompression behält alle Information in dem Bild bei, während die verlustbehaftete Kompression die visuelle Wahrnehmung und statistische Eigenschaften nützt, um bessere Kompressionsraten zu erzielen, führt jedoch dazu, dass einige Daten verloren gehen. Der JPEG Kompressionsalgorithmus ist ein üblicherweise verwendeter verlustbehafteter Algorithmus, der häufig für Bilder im Web verwendet wird. Der JPEG Algorithmus basiert auf diskreten Cosinustransformationen (DCT) und verwirft Hochfrequenzdetails, die für das menschliche Auge nicht wahrnehmbar sind, was zu viel kleineren Bilddateigrößen führt. In Fällen, wo jedoch eine exakte Bildreproduktion erforderlich ist, oder wenn das Bild mehrere Male editiert wird, wird die verlustfreie Kompression bevorzugt. Zum Beispiel ist PNG ein Bilddateiformat, das eine verlustfreie Kompression unter Verwendung eines Bitmap-Bilds unterstützt. Mit PNG werden Bilder unter Verwendung eines Filtertyps auf einer pro-Zeile-Basis transformiert und dann unter Verwendung des DEFLATE Algorithmus komprimiert. Es gibt zahlreiche andere Bildformate mit ähnlichen Technologien dahinter, die für verschiedene Anwendungen und Anwendungsfälle geeignet sind. Obwohl ein traditionelles verlustfreies Bildformat (z.B. PNG) verwendet werden könnte, um alle Bilddaten für Bildverarbeitungszwecke beizubehalten, geht dies auf Kosten einer niedrigeren Kompressionsrate.
-
Ferner müssen Bilder, die unter Verwendung traditioneller Format (z.B. JPEG und PNG) gespeichert werden, in ein internes Array-Format konvertiert werden, bevor irgendeine Verarbeitung beginnen kann. Bevor zum Beispiel irgendwelche Operationen an Bildern vorgenommen werden können, die unter Verwendung traditioneller Formate gespeichert werden, muss die gesamte Bilddatei aus der Platte gelesen werden und in ein internes Array-Format decodiert werden. In der Analytik werden jedoch Operationen, wie Größenänderungen und Zuschneiden, häufig vorgenommen, bevor irgendeine Art von Lernen oder Verständnis auftritt, wodurch traditionelle Bildformate für eine Bildverarbeitung und -analytik ineffizient werden.
-
Demgemäß sind traditionelle Bildformate (z.B. JPEG und PNG) für den menschlichen Verbrauch ausgebildet, und das Vornehmen von Operationen an ihnen ist häufig zeitaufwendig und ineffizient. Außerdem verwerfen verlustbehaftete Bildformate (z.B. JPEG) Informationen, die bei maschinellem Lernen nützlich sein können, und sind daher für eine Bildverarbeitung nicht gut geeignet. Obwohl bestehende Datenbankverwaltungssysteme verwendet werden könnten, um Bilder zu speichern, sind sie nicht für Bilddaten ausgebildet und speichern somit Bilddaten nicht effizient.
-
Das analytische Bildformat 2200 von 22 ist dafür ausgebildet, um die Bildverarbeitung zu unterstützen und die Mängel bestehender Bildformate zu mildern. Zum Beispiel wird das Bildformat 2200 unter Verwendung eines Array-basierten Datenspeicherformats implementiert, das verlustfrei ist und den teuren Decodierungsprozess eliminiert, der für die Verarbeitung traditioneller Bildformate erforderlich ist. In einigen Ausführungsformen könnten das analytische Bildformat 2200 zum Beispiel unter Verwendung eines Array-basierten Datenspeicherverwalters, wie TileDB, implementiert werden. TileDB ist ein Datenverwaltungssystem, das für die effiziente Verwaltung großer Volumen wissenschaftlicher Daten ausgebildet ist, die unter Verwendung von Arrays dargestellt werden. Obwohl TileDB nicht spezifisch für Bilder ist, ist es dafür ausgebildet, um einen raschen Zugriff auf Array-basierte Daten zu liefern. Demgemäß kann in einigen Ausführungsformen das Bildformat 2200 unter Verwendung von TileDB implementiert werden, um die Leistungssteigerung von TileDB für Bildverarbeitungszwecke zu erzielen.
-
In einigen Ausführungsformen kann das analytische Bildformat 2200 zum Beispiel implementiert werden, indem definiert wird, wie die Pixeldaten eines Bilds gespeichert werden und wie auf diese in einem Array-basierten Format zugegriffen wird (z.B. unter Verwendung eines Array-basierten Datenspeicherverwalters, wie TileDB). Auf diese Weise ermöglicht das Bildformat 2200 eine Effizienz bei der Verarbeitung großer Bilder, was die Gesamtzeit für die Bildanalytik reduziert. Visuelle Verständnisalgorithmen werden schneller, und die Hardware, um die Algorithmen vorzunehmen, wird besser, die Zeit, um die Bilder abzurufen und zu verarbeiten, wird mehr und mehr signifikant. Unter Verwendung des analytischen Bildformats 2200 wird das Speichern und Abrufen von Bildern jedoch kein Flaschenhals in der visuellen Verarbeitungspipeline.
-
Zum Beispiel ermöglicht es das analytische Bildformat 2200, dass ein Bild als verlustfreies komprimiertes Array von Pixelwerten gespeichert wird. Wenn Bilddaten zur Verarbeitung benötigt werden, muss demgemäß das Bild nicht decodiert werden, bevor es verarbeitet wird, wie für traditionelle Bildformate erforderlich. Die verbessert die Geschwindigkeit, mit der Daten abgerufen werden und verwendbar gemacht werden, liefert jedoch weiterhin einen gewissen Grad an Kompression. Obwohl dieser Ansatz erfordert, dass Bilder in das analytische Bildformat 2200 vor dem Training oder Ableiten geschrieben werden, ist der zusätzliche Schreibgesamtaufwand minimal.
-
Da TileDB viele Array-Datenbankverwalter sowohl für einen gelockerten als auch dichten Datenzugriff übertrifft, ist es außerdem eine ideale Wahl zur Implementierung des analytischen Bildformats 2200. In anderen Ausführungsformen kann das analytische Bildformat 2200 jedoch unter Verwendung irgendeines anderen Typs eines Array-basierten Datenverwalters oder Dateiformats implementiert werden. Die Verwendung eines schnellen, verstärkten Array-Speichersystems, wie TileDB, ermöglicht es, dass das Bildformat 2200 ein langsames Lesen von Bildern aus einer Platte eliminiert und die In-loop-Konvertierung traditioneller Bildformate in Arrays entfernt.
-
Das Bildformat 2200 ist auch bei Anwendungen vorteilhaft, wo Subarray-Zugriffe üblich sind, wie Zugriffe auf Regionen von Interesse in einem Bild. Zum Beispiel kann ein Array-Datenverwalter, wie TileDB, verwendet werden, um die Geschwindigkeit üblicher Operationen zu verbessern, die für die Bildanalytik notwendig sind, wie Größenänderung und Zuschneiden, indem schnellere Subarray-Zugriffe ermöglicht werden.
-
22 veranschaulicht den Prozess der Konvertierung eines Bilds in ein analytisches Bildformat 2200 unter Verwendung eines Array-basierten Datenverwalters, wie TileDB. In dem veranschaulichten Beispiel wird das ursprüngliche Bild zuerst empfangen 2202 und wird dann in eine Vielzahl von Kacheln 2204 unter Verwendung einer optimalen Kachelgröße geteilt, und die Kacheln werden dann komprimiert und in einen Speicher auf einer pro-Kachel-Basis 2206 unter Verwendung eines Array-basierten Speicherformats geschrieben.
-
In einigen Ausführungsformen kann die optimale Kachelgröße für analytische Operationen dynamisch für jedes Bild bestimmt werden. Um zum Beispiel die optimale Kachelgröße für ein bestimmtes Bild zu bestimmen, kann ein zufälliger Abschnitt des Bilds ausgewählt werden und dann unter Verwendung verschiedener Kachelgrößen und Kompressionsalgorithmen verarbeitet werden, um die ideale Kachelgröße und Kompression für dieses Bild zu bestimmen. Da Bildverarbeitungsoperationen häufig verschoben werden, bis die Daten tatsächlich benötigt werden, steht außerdem eine Zeitperiode zur Verfügung, um das Experimentieren durchzuführen, ohne die Leistung zu beeinträchtigen.
-
Ein Bild, das nicht perfekt in die Kacheln der ausgewählten Kachelgröße passt, muss Kacheln teilweise leeren, die mit leeren Zeichen aufgefüllt sind, wie in 22 dargestellt. Auf diese Weise kann die Originalgröße des Bilds als Metadaten gespeichert werden (z.B. Höhe, Breite und Anzahl von Kanälen), und wenn das Bild anschließend aus dem Speicher gelesen wird, können die Metadaten geprüft werden, um die tatsächlichen Abmessungen des Bilds zu bestimmen, um ein Lesen der leeren Zeichen oder Auffüllung zu vermeiden.
-
Für Bilder mit hoher Auflösung verbessert das Bildformat 2200 die Geschwindigkeit üblicher Operationen, wie Lesen und Schreiben, sowie die Geschwindigkeit von Operationen, die in der Bildanalytik verwendet werden, wie Zuschneiden und Größenänderung. Zum Beispiel verbessert das Speichern von Bildern unter Verwendung des Bildformats 2200 die Leseleistung, da die Bilder komprimiert, aber nicht codiert werden, und somit nicht decodiert werden müssen, wenn sie aus dem Dateisystem gelesen werden. Zusätzlich ermöglicht das Bildformat 220 einen schnellen Zugriff auf Subarrays von Bildpixeln, wodurch das Zuschneiden eine einfache Sache des Lesens eines bestimmten Subarrays gemacht wird, anstatt das gesamte Bild zu lesen und es dann auf die geeignete Größe zuzuschneiden.
-
Zum Beispiel veranschaulicht 23 einen Graphen 2300, der die Leistung eines analytischen Bildformats 2200 von 22 mit dem PNG Bildformat vergleicht, das ein traditionelles verlustfreies Bildformat ist. Wie in 23 gezeigt, bietet das analytische Bildformat eine bessere Leistung als PNG zum Schreiben, Lesen, Zuschneiden und Ändern der Größe. Die größte Verbesserung wird beim Zuschneiden festgestellt, da das analytische Bildformat ermöglicht, dass nur die relevanten Informationen aus der Datei gelesen werden, anstatt die gesamte Bilddatei zu lesen und dann auf die gewünschte Größe zuzuschneiden. Demgemäß zeigt die Leistungsverbesserung für einen üblichen Datenzugriff und analytische Operationen, dass das analytische Bildformat 2200 für Bildverarbeitungszwecke äußerst geeignet ist.
-
50 veranschaulicht ein Beispiel eines Schreibverarbeitungsflusses 5000 für traditionelle und analytische Bildformate. In dem veranschaulichten Verarbeitungsfluss 5000 können zum Beispiel Pixelrohdaten 5002 auf die Platte 5010 unter Verwendung entweder eines traditionellen Bildformats oder eines analytischen Bildformats geschrieben werden. Der obere Weg des Verarbeitungsflusses 5000 veranschaulicht den Fluss zum Schreiben traditioneller Bildformate (z.B. PNG), während der untere Weg den Fluss zum Schreiben analytischer Bildformate veranschaulicht.
-
In Bezug auf traditionelle Bildformate werden zum Beispiel Pixelrohdaten 5002 codiert 5004, komprimiert 5006 und dann gespeichert 5010. In Bezug auf analytische Bildformate werden jedoch Pixelrohdaten 5002 komprimiert 5008 und dann gespeichert 5010, aber der Codierungsschritt wird weggelassen. Obwohl das erhaltene analytische Bildformat zu einer größeren Dateigröße auf der Platte führen kann, kann die Latenz von Datenzugriffsoperationen (z.B. Schreiben) und anderen Bildoperationen reduziert werden.
-
Außerdem kann der Leseverarbeitungsfluss für traditionelle und analytische Bildformate als Umkehr des Schreibverarbeitungsflusses 5000 implementiert werden. Zum Beispiel werden in Bezug auf traditionelle Bildformate die codierten/komprimierten Daten aus der Platte gelesen, dekomprimiert und dann in das Originalbild decodiert. In Bezug auf analytische Bildformate werden die komprimierten Daten aus der Platte gelesen und dann zu dem Originalbild dekomprimiert, der Decodierungsschritt wird jedoch weggelassen, da der Codierungsschritt während des Schreibverarbeitungsflusses 5000 weggelassen wurde.
-
TABELLE 1 veranschaulicht ein Beispiel eines analytischen Bildformatschemas. In einigen Ausführungsformen könnte das analytische Bildformatschema von TABELLE 1 unter Verwendung eines Array-basierten Datenverwalters (z.B. TileDB) implementiert werden, um Bilder als dichte Arrays zu speichern.
TABELLE 1: Beispiel eines analytischen Bildformats
PARAMETER | TYP | BEISPIELWERT |
Zellreihenfolge | festgelegt | Hauptreihe |
Kachelreihenfolge | festgelegt | Hauptreihe |
Anzahl von Dimensionen | festgelegt | 2 |
Namen von Dimensionen | festgelegt | „Höhe“, „Breite“ |
Anzahl von Attributen | festgelegt | 1 |
Kompression | festgelegt | LZ4 |
Array-Höhe | variabel | 3534 |
Array-Breite | variabel | 5299 |
Domäne | variabel | [0, 3533, 0, 5298] |
Kachelhöhe | variabel | 589 |
Kachelbreite | variabel | 757 |
-
Das Schema von TABELLE 1 spezifiziert Parameter über das Array, die verwendet werden können, um die Bilddaten anzuordnen. Außerdem sind einige Parameter des analytischen Bildformats festgelegt, während andere auf einer pro-Bild-Basis bestimmt werden. Zum Beispiel haben Bilder nur zwei Dimensionen, eine Höhe und eine Breite, wodurch die Anzahl der Dimensionen sowie die Namen der Dimensionen festgelegt werden. Die Anzahl von Attributen wird auf Eins eingestellt, was bedeutet, dass jede Zelle die Werte für Blau, Grün und Rot (BGR) für das entsprechende Pixel hält. Alle drei Werte werden im Allgemeinen gemeinsam gelesen, da ein Pixel von allen drei Werten definiert wird. In anderen Ausführungsformen können die Farbwerte jedoch getrennt gespeichert werden. Diese Intra-Kachel- und Array-Ebenen-Kachelanordnung ist als Hauptreihe festgelegt. Die Hauptreihen-Reihenfolge bedeutet, dass die Daten von links nach rechts in Reihen innerhalb einer Kachel geschrieben und gelesen werden, und Kacheln auf dieselbe Weise geschrieben und gelesen werden. Diese Informationen ermöglichen, dass die Array-Datenbank das Lesen von Subarrays effizient vornimmt.
-
Die Dimensionen und Domäne des Arrays sind von der Auflösung des Originalbilds abhängig und werden daher dynamisch auf einer pro-Bild-Basis berechnet. Da Bilder häufig keine ohne Rest teilbare Anzahl von Pixeln in einer oder beiden Dimensionen aufweisen, führt dies gelegentlich dazu, dass die Dimensionen eines Arrays nicht mit der Originalauflösung des Bilds übereinstimmen. Dies wird in TABELLE 1 reflektiert, wo die Array-Höhe um ein Pixel größer ist als die Bildhöhe. Um diese Differenz zwischen einer Bilddimension und einer Array-Domäne auszugleichen, wird das Bild mit Leerzeichen aufgefüllt. Ein Beispiel davon ist in 22 ersichtlich, wo der weiße Raum innerhalb bestimmter Kacheln Leerzeichen entspricht. In dem tatsächlichen Array wird die Größe der Array-Domäne um ein einzelnes Pixel erhöht, wenn notwendig. Die Originalgröße des Bilds (Höhe, Breite und Anzahl von Kanälen) wird standardmäßig als Metadaten gespeichert. Wenn ein Bild in dem analytischen Format gelesen wird, werden die Metadaten zuerst in der Reihenfolge gelesen, um die Dimensionen des Bilds zu bestimmen, wodurch vermeiden wird, dass die Leerzeichen gelesen werden.
-
Kachelausmaße sind von den Array-Dimensionen abhängig und werden berechnet, sobald die Array-Dimensionen bekannt sind. Alle Kacheln haben dieselbe Höhe und Breite. Die optimale Anzahl von Kacheln kann auf der Basis von Bildinhalt und -auflösung variieren, und somit kann in einigen Ausführungsformen die optimale Anzahl an Kacheln auf einer pro-Bild-Basis bestimmt werden. Um zum Beispiel die beste Kachelgröße zu bestimmen, kann ein Abschnitt des Bilds zufällig ausgewählt und getestet werden, unter Verwendung verschiedener Kachelgrößen und Kompressionsalgorithmen, um die beste Kombination für das Bild zu bestimmen. Da alle Operationen verschoben werden, bis die Daten tatsächlich benötigt werden, gibt es eine Zeitperiode, um das Experimentieren durchzuführen, welche die Leistung nicht beeinträchtigt. In anderen Ausführungsformen kann jedoch eine vordefinierte minimale Anzahl von Kacheln pro Dimension (z.B. 4 Kacheln pro Dimension) als Basis verwendet werden, um die Kachelhöhe und -breite zu bestimmen.
-
Der Kompressionsalgorithmus, der verwendet wird, um die analytischen Bilddaten zu komprimieren, hat einen festgelegten Standardwert (z.B. der LZ4 Algorithmus), es können jedoch andere Kompressionsalgorithmen manuell eingestellt werden.
-
51 veranschaulicht ein Beispiel einer Ausführungsform einer Visual Compute-Bibliothek (VCL) 5100 für traditionelle und analytische Bildformate. Zum Beispiel stellt die VCL 5100 eine Schnittstelle bereit, durch die ein Benutzer mit dem analytischen Bildformat sowie traditionellen Bildformaten interagieren kann.
-
Wenn ein Benutzer ein analytisches Bild unter Verwendung der VCL 5100 erzeugt, wird das analytische Bildschema automatisch unter Verwendung der im Vorstehenden in TABELLE 1 beschriebenen Parameter eingestellt. Die VCL 5100 erzeugt dann eine Abstraktionsschicht mit Funktionsaufrufen von TileDB 5102 (z.B. dem Array-Datenbankverwalter, der in der veranschaulichten Ausführungsform verwendet wird), kombiniert mit spezialisierten Transformationsoperationen, um eine Schnittstelle zu dem analytischen Bild bereitzustellen. Die VCL 5100 erweitert auch die Abstraktionsschicht auf die OpenCV 5104, die Unterstützung für PNG und JPEG Formate liefert. Die VCL 5100 verwendet die OpenCV 5104, um sowohl I/O- als auch Transformationsoperationen an Bildern vorzunehmen, die entweder im PNG oder JPEG Format gespeichert sind. Für Bilder, die in dem analytischen Format gespeichert sind, übernimmt die VCL 5100 die Transformationsoperationen und verwendet TileDB 5102 für I/O-Operationen.
-
Um ein Bild anfänglich im analytischen Format zu speichern, werden die Pixelrohdaten eines Bilds in irgendeiner Weise zur VCL 5100 geführt (z.B. als Weg zu einer PNG oder JPEG Datei, die auf einer Platte gespeichert ist, OpenCV Matrix, Puffer codierter Pixeldaten, Puffer von Pixelrohdaten usw.). Diese Daten werden in einen Rohpixelpuffer konvertiert, um in das analytische Format geschrieben zu werden. Da das TileDB-Array-Schema für Bilder an diesem Punkt bereits eingestellt wurde (z.B. unter Verwendung der Parameter von TABELLE 1), können die TileDB Funktionen verwendet werden, um die Daten auf die Platte zu schreiben.
-
Das Lesen eines Bilds in dem analytischen Format erfordert, dass zuerst die Metadaten gelesen werden, um die Originalbildauflösung zu bestimmen. Dies stellt sicher, dass nur Bilddaten gelesen werden, und dass Leerzeichen ignoriert werden. Das rohe analytische Format oder TileDB Daten werden in einen Puffer gelesen, wobei die Daten in der Reihenfolge gehalten werden, in der sie geschrieben wurden, was als „Kachelreihenfolge“ bezeichnet wird (z.B. wie in 22 veranschaulicht). Dies ist darauf zurückzuführen, dass, wenn die Daten niemals zum Benutzer zurückgeführt werden müssen (z.B. wenn der Benutzer sie nur manipulieren und sie neu ausschreiben möchte), es schneller ist, den Kachelreihenfolgenpuffer zu verwenden. In Fällen, wo die Daten zu dem Benutzer zurückzuführen sind, wird der Puffer jedoch in die Bildreihenfolge umgeordnet, was zu einem Puffer führt, der jede Reihe des Bilds sequentiell aufweist (z.B. wie in 52 veranschaulicht). Die Bildreihenfolge wird zum Beispiel typischerweise von anderen Programmen erwartet, wie OpenCV 5104.
-
Zuschneiden, eine weitere häufig verwendete Operation bei der Bildverarbeitung, wird verwendet, um eine Region von Interesse innerhalb eines Bilds zur Verarbeitung abzurufen. Anstatt das gesamte Bild zu lesen und dann eine Teilregion auszuwählen (wie es für traditionelle Bildformate erforderlich ist), verwendet die analytische oder TileDB Zuschneidefunktion die Zuschneideparameter, um ein Subarray der analytischen Bilddaten zu spezifizieren. Das Subarray ist dann der einzige Abschnitt des Bilds, der gelesen wird.
-
Größe ändern, eine weitere häufig verwendete Operation bei der Bildverarbeitung, wird verwendet, um die Dimensionen eines Bilds in der Größe zu ändern (z.B. auf eine kleinere oder größere Größe). Die TileDB Größenänderung tritt auf, nachdem das Bild gelesen wurde, jedoch während die Daten weiterhin in der Kachelreihenfolge sind. Die VCL 5100 implementiert eine Version der Größenänderung für TileDB, die eine bilineare Interpolation verwendet, gemäß dem OpenCV Standardwert. Zum Beispiel wird in einer linearen Interpolation ein neuer Wert auf der Basis von zwei Punkten berechnet; die bilineare Interpolation führt dies in zwei verschiedenen Richtungen durch und nimmt dann eine lineare Interpolation der Ergebnisse vor. Diese Punkte werden durch (Reihe, Spalte) in dem Originalbild identifiziert. Da die Daten in der Kachelreihenfolge sind, ist es notwendig zu identifizieren, von welcher Kachel jeder Punkt ein Teil ist, um den Wert dieses Punkts in dem Puffer zu lokalisieren. Der erhaltene in der Größe geänderte Bildpuffer ist in der Bildreihenfolge, obwohl andere Ansätze verwendet werden können, um ihn in der Kachelreihenfolge zu halten.
-
Kompression/kompressives Lernen
-
Die Leistung von visuellen Verarbeitungssystemen im großen Maßstab kann unter Verwendung effizienter Kompressionsalgorithmen und Techniken zum Speichern und Verarbeiten visueller Daten verbessert werden. Die Kompressionsansätze bestehender visueller Verarbeitungslösungen haben jedoch verschiedene Mängel. Zum Beispiel erfordern bestehende Lösungen, dass visuelle Daten vollständig dekomprimiert werden, bevor irgendeine Verarbeitung vorgenommen werden kann (z.B. unter Verwendung neuronaler Deep Learning-Netze). Außerdem komprimieren und speichern bestehende Lösungen typischerweise Bilder individuell, wodurch sie die potentiellen kompressiven Vorteile von Sammlungen ähnlicher oder verwandter Bilder mit redundanten visuellen Daten nicht nützen können.
-
Demgemäß präsentiert diese Offenbarung verschiedene Ausführungsformen zur effizienteren Kompression und Verarbeitung visueller Daten. In einigen Ausführungsformen können neuronale Netze zum Beispiel dafür ausgebildet sein, direkt an komprimierten visuellen Daten zu arbeiten, wodurch die Notwendigkeit entfällt, visuelle Daten zu dekomprimieren, bevor sie verarbeitet werden können. Außerdem können kontextbewusste Kompressionstechniken verwendet werden, um visuelle Daten und/oder visuelle Metadaten effizienter zu komprimieren. Zum Beispiel kann eine kontextbewusste Kompression verwendet werden, um unterschiedliche Fälle redundanter visueller Daten effizienter zu komprimieren, wie eine Gruppe von Bildern, die zeitlich eng nacheinander, an demselben Ort und/oder von demselben Objekt aufgenommen werden. Ähnlich kann eine kontextbewusste Kompression verwendet werden, um visuelle Metadaten effizienter zu komprimieren (z.B. unter Verwendung eines kontextbewussten verlustfreien Kompressionscodecs). In einigen Ausführungsformen könnten zum Beispiel visuelle Metadaten durch Vor-Training eines konvolutionalen neuronalen Netzes (CNN) komprimiert werden, um visuelle Metadaten zu klassifizieren, wobei lange Stränge visueller Metadaten durch kürzere Symbole ersetzt werden (z.B. vordefinierte humane Codes), eine mehrskalige Deduplizierung an den visuellen Metadaten vorgenommen wird, und schließlich die erhaltenen visuellen Metadaten unter Verwendung eines Kompressionsalgorithmus komprimiert werden (z.B. des LZ77 verlustfreien Kompressionsalgorithmus oder einer anderen ähnlichen Alternative).
-
22A-C und 89 veranschaulichen Beispiele von Ausführungsformen eines kaskadierten konvolutionalen neuronalen Netzes mit mehreren Domänen (CNN). In verteilten visuellen Analytiksystemen werden zum Beispiel Bild und Video häufig vor der Übertragung komprimiert (z.B. von der Pixel-Domäne zu einer komprimierten Domäne) und werden anschließend nach der Übertragung dekomprimiert (z.B. zurück zur Pixel-Domäne), bevor irgendeine Verarbeitung vorgenommen werden kann, wie ein Deep Learning unter Verwendung neuronaler Netze. Als Beispiel können Bild und Video, die von Edge-Vorrichtungen aufgenommen werden, komprimiert werden und zur Cloud übertragen werden, und dann von der Cloud dekomprimiert werden, bevor irgendeine Weiterverarbeitung beginnt.
-
Dieser Ansatz hat verschiedene Nachteile. Erstens ist zusätzlicher Rechenaufwand erforderlich, um die visuellen Daten vollständig zu dekomprimieren, bevor sie verarbeitet werden können, wodurch die gesamte Verarbeitungszeit signifikant erhöht wird (z.B. um bis zu 100 % in einigen Fällen). Bevor eine Verarbeitung vorgenommen werden kann, müssen zum Beispiel die visuellen Daten vollständig zurück zur Pixel-Domäne unter Verwendung einer Hardware- oder Software-Decodierung dekomprimiert werden. Da nicht alle Prozessoren eingebaute Video-Dekompressionsbeschleuniger umfassen, kann demgemäß eine Dekompression zu zusätzlichen Kosten für die Videoanalytik führen.
-
Als Nächstes ist eine zusätzliche Bandbreite erforderlich, um die dekomprimierten Daten zwischen getrennten Verarbeitungskomponenten zu übertragen (z.B. zwischen einer Dekompressionsmaschine und einer Analysemaschine), wodurch die Bandbreitennutzung signifikant erhöht wird (z.B. um bis zum 20-fachen in einigen Fällen).
-
Außerdem schließt die Anforderung, visuelle Daten vor der Verarbeitung vollständig zu dekomprimieren, die Fähigkeit aus, ein vollständig verteiltes neuronales Netz im Edge-to-Cloud-Sinn zu nutzen. Zum Beispiel erfordert die Verwendung verteilter Analytik zur Verarbeitung visueller Daten ausschließlich in er Pixel-Domäne, dass die visuellen Daten in mehreren Maßstäben analysiert werden.
-
Das Zurückgreifen auf die Cloud, um eine Verarbeitung an visuellen Daten vorzunehmen, die von Edge-Vorrichtungen aufgenommen wurden, führt ferner häufig zu vergeudeter Übertragungsbandbreite, da viele Bilder oder Videos, die vom Rand zur Cloud übertragen werden, keine Objekte oder Merkmale von Interesse enthalten können. In vielen Fällen könnte es zum Beispiel möglich sein, eine Objektdetektion und -klassifikation näher beim Netzrand vorzunehmen (z.B. nahe bei den Sensoren, welche die visuellen Daten aufnehmen), unter Verwendung von Analytikalgorithmen mit geringerer Komplexität, wodurch die Übertragungskosten insignifikanter oder unwichtiger Daten potentiell eingespart werden.
-
Demgemäß veranschaulichen 24A-C ein Beispiel einer Ausführungsform eines kaskadierten CNN 2400 mit mehreren Domänen, das verwendet werden kann, um visuelle Daten in der Kompressions- und Pixel-Domäne zu verarbeiten, wodurch die Anforderung entfällt, visuelle Daten zu detektieren, bevor sie verarbeitet werden können. Auf diese Weise kann ein kaskadiertes CNN 2400 mit mehreren Domänen verwendet werden, um eine verteilte visuelle Analytik in einem Visual Fog-System unter Verwendung einer Kompressionsdomäne als Eingang vorzunehmen.
-
In einigen Ausführungsformen kann das kaskadierte CNN 2400 mit mehreren Domänen zum Beispiel ein kaskadiertes CNN sein, das mehrere Entscheidungsstufen umfasst. Zum Beispiel kann in einer ersten oder frühen Entscheidungsstufe ein Teilsatz der komprimierten visuellen Domänendaten oder -merkmale verwendet werden (z.B. Bewegungsvektoren), um zu versuchen, eine frühe Entscheidung zu generieren. Wenn die visuellen Daten in der frühen Stufe nicht detektiert oder klassifiziert werden können, können zusätzliche Kompressionsdomänendaten (z.B. Bewegungsprädiktionsreste) als Eingang in eine nachfolgende oder späte Entscheidungsstufe geliefert werden. Schließlich können für eine verbesserte Genauigkeit und/oder in dem Fall, dass die späte Entscheidungsstufe nicht erfolgreich ist, die visuellen Daten vollständig dekomprimiert werden, und eine Entscheidungsendstufe kann unter Verwendung der dekomprimierten visuellen Daten vorgenommen werden.
-
In der veranschaulichten Ausführungsform umfasst das CNN 2400 zum Beispiel eine frühe Entscheidungsstufe (in 24A veranschaulicht), eine späte Entscheidungsstufe (in 24B veranschaulicht) und eine Entscheidungsendstufe (in 24C veranschaulicht). Außerdem ist das CNN 2400 dafür ausgebildet, um komprimierte visuelle Daten 2402 als Eingang zu verarbeiten (z.B. Videosequenzdaten, die mit einem bewegungskompensierten prädiktiven Codierungsschema, wie H.264, komprimiert werden).
-
In einigen Ausführungsformen können zum Beispiel die komprimierten visuellen Daten 2402, die als Eingang an das CNN 2400 geliefert werden, zuerst teilweise decodiert werden, um verschiedene Syntaxelemente zu trennen und zu extrahieren (z.B. Bewegungsvektoren, Makroblock- (MB) Codiermodi, quantisierte Prädiktionsreste), wodurch ein Teilsatz partieller Kompressionsdaten 2404 erzeugt wird.
-
Wie in 24A gezeigt, werden in der frühen Entscheidungsstufe die partiellen Kompressionsdaten 2404 (z.B. Bewegungsvektoren) als Eingang an ein Erststufen-CNN 2405a geliefert, um zu versuchen, eine frühe Entscheidung 2406 zu identifizieren. In einigen Ausführungsformen kann die CNN Verarbeitung dann enden, wenn eine frühe Entscheidung getroffen werden kann. Zum Beispiel kann in einigen Ausführungsformen die frühe Entscheidungsstufe durch einen Fog- oder Edge-Knoten nahe bei dem Sensor vorgenommen werden, der die visuellen Daten aufgenommen hat. Wenn eine frühe Entscheidung getroffen werden kann, kann es demgemäß nicht notwendig sein, zusätzliche visuelle Daten zu einem anderen Knoten (z.B. in der Cloud) für eine nachfolgende Verarbeitungsstufe zu übertragen, wodurch Bandbreite und/oder Ressourcen (z.B. Energie) eingespart werden, die ansonsten für die spätere Stufe erforderlich wären. Unter der Annahme, dass das Ziel zum Beispiel ist, sich bewegende Fußgänger unter Verwendung von Verkehrskameras zu detektieren, gibt es wahrscheinlich keine sich bewegenden Objekte, wenn keine Bewegung detektiert wird. Demgemäß kann eine frühe Entscheidung getroffen werden, und jede weitere Übertragung oder Verarbeitung der visuellen Daten kann abgebrochen werden. In anderen Ausführungsformen können jedoch die nachfolgenden CNN Verarbeitungsstufen des CNN 2400 weiterhin vorgenommen werden, auch wenn eine frühe Entscheidung getroffen werden kann. Außerdem kann die Komplexität des Erststufen-CNN 2405a auf der Basis verschiedener Anwendungsfälle, der Ressourcenverfügbarkeit usw. variieren.
-
Wenn die frühe Entscheidungsstufe nicht in der Lage ist, die partiellen Kompressionsdaten 2404 unter Verwendung des Erststufen-CNN 2405a zu detektieren oder zu klassifizieren, kann das CNN 2400 zu einer späten Entscheidungsstufe weitergehen, wie in 24B gezeigt. In der späten Entscheidungsstufe von 24B werden zum Beispiel zusätzliche Kompressionsdaten 2410 (z.B. Bewegungsprädiktionsreste) unter Verwendung eines Zweitstufen-CNN 2405b evaluiert, um zu versuchen, eine späte Entscheidung 2408 zu bestimmen.
-
Zur verbesserten Genauigkeit, und/oder in dem Fall, dass die späte Entscheidungsstufe nicht erfolgreich ist (z.B. die späte Entscheidungsstufe nicht in der Lage ist, die zusätzlichen Kompressionsdaten 2410 unter Verwendung des Zweitstufen-CNN 2405b zu detektieren oder zu klassifizieren, kann schließlich das CNN 2400 zu einer Entscheidungsendstufe weitergehen, wie in 24C gezeigt. In der Entscheidungsendstufe von 24C können zum Beispiel die komprimierten visuellen Daten 2402 unter Verwendung einer Dekompressionsmaschine 2412 vollständig dekomprimiert werden, und die dekomprimierten visuellen Daten 2414 (z.B. Pixel-Domänendaten) können dann unter Verwendung eines Endstufen-CNN 2405c evaluiert werden, um eine Endentscheidung 2416 zu bestimmen.
-
Demgemäß werden die kollektiven Stufen des kaskadierten CNN 2400 mit mehreren Domänen in 24C dargestellt, wobei eine frühe Stufe verwendet wird, um eine frühe Entscheidung auf der Basis eines anfänglichen Teilsatzes komprimierter Domänendaten zu generieren, und spätere Stufen verwendet werden, um verfeinerte oder Endentscheidungen auf der Basis zusätzlicher komprimierter Domänendaten und schließlich Pixel-Domänendaten zu generieren.
-
Die beschriebenen Ausführungsformen des kaskadierten CNN 2400 mit mehreren Domänen bieten zahlreiche Vorteile. Erstens müssen visuelle Daten (z.B. Bilder oder Video) nicht vollständig komprimiert werden, bevor ihre Inhalte unter Verwendung neuronaler Deep Learning-Netze analysiert werden können, wodurch die Speichernutzung und Rechenleistung reduziert werden, die typischerweise zur Decodierung oder Dekompression der visuellen Daten erforderlich sind. Als Nächstes vermeidet der kaskadierte Ansatz des CNN 2400 die Notwendigkeit, bestimmte komprimierte Daten zur Cloud zu übertragen, wie wenn eine frühe Entscheidung von einem Edge- oder Fog-Knoten erreicht werden kann, wodurch die Bandbreitennutzung verbessert wird. Schließlich tritt ein großer Teil der gesamten Analyse häufig in der frühen Entscheidungsstufe auf, was typischerweise ein vereinfachtes CNN oder maschinelles Lernmodell involviert, wodurch die gesamte Rechenkomplexität reduziert wird.
-
89 veranschaulicht ein Flussdiagramm 8900 für ein Beispiel einer Ausführungsform eines kaskadierten konvolutionalen Netzes (CNN) mit mehreren Domänen. In verschiedenen Ausführungsformen kann zum Beispiel das Flussdiagramm 8900 unter Verwendung der in dieser gesamten Offenbarung beschriebenen Visual Computing-Architektur und -Funktionalität implementiert werden.
-
In dem veranschaulichten Beispiel ist das kaskadierte CNN dafür ausgebildet, um visuelle Daten durch Edge-Vorrichtungen (z.B. Sensoren und/oder Kameras) in mehreren Stufen unter Verwendung eines anderen CNN in jeder Stufe zu verarbeiten. Zum Beispiel können die frühen Stufen CNNs verwenden, die primär dafür ausgebildet sind, um komprimierte Domänendaten zu verarbeiten, während die späteren Stufen CNNs verwenden können, die primär dafür ausgebildet sind, um Pixel-Domänendaten zu verarbeiten.
-
Außerdem können in einigen Ausführungsformen die jeweiligen Stufen durch verschiedene Verarbeitungsvorrichtungen vorgenommen werden, die zwischen dem Netzrand (z.B. nahe bei der Quelle der visuellen Daten) und der Cloud bereitgestellt sind. Wenn zum Beispiel visuelle Daten aufgenommen, komprimiert und von dem Rand zur Cloud übertragen werden, können die jeweiligen Knoten und/oder Verarbeitungsvorrichtungen entlang des Übertragungswegs (eine) bestimmte Verarbeitungsstufe(n) vornehmen. In einigen Ausführungsformen können zum Beispiel Verarbeitungsvorrichtungen nahe beim Netzrand frühe Verarbeitungsstufen unter Verwendung von CNNs vornehmen, die primär an komprimierten Domänendaten arbeiten, während Verarbeitungsvorrichtungen in und/oder nahe bei der Cloud spätere Verarbeitungsstufen unter Verwendung von CNNs vornehmen können, die primär an Pixel-Domänendaten arbeiten. Außerdem können Verarbeitungsvorrichtungen im Fog (z.B. zwischen dem Rand und der Cloud) Verarbeitungsstufen in der Mitte unter Verwendung von CNNs vornehmen, die an komprimierten Domänendaten, Pixel-Domänendaten und/oder einer Kombination von beiden arbeiten.
-
Auf diese Weise können visuelle Daten in einer verteilten Weise verarbeitet werden, während sie die jeweiligen Vorrichtungen und Knoten entlang des Wegs vom Rand zur Cloud durchqueren, ohne die visuellen Daten bei jedem Hop dekomprimieren zu müssen.
-
Da die Edge-Vorrichtungen (z.B. Vorrichtungen an oder nahe bei der Quelle der visuellen Daten) typischerweise ressourcenbeschränkte Vorrichtungen sind, können sie zum Beispiel dafür ausgebildet sein, um eine begrenzte anfängliche Verarbeitung (z.B. unter Verwendung von Algorithmen mit geringerer Komplexität) direkt an den komprimierten visuellen Daten vorzunehmen.
-
In einigen Ausführungsformen können diese Vorrichtungen „der frühen Stufe“ zum Beispiel CNNs verwenden, die darauf trainiert sind, bestimmte Typen von komprimierten Domänenmerkmalen zu verarbeiten, wie Bewegungsvektoren, Prädiktionsreste, Transformationskoeffizienten, Quantisierungsparameter, Makroblock- (MB) Modi usw. Bewegungsvektoren werden zum Beispiel verwendet, um eine Bewegung darzustellen, die zwischen komprimierten Videorahmen auftritt, welche einen ähnlichen Inhalt enthalten, während Prädiktionsreste verwendet werden, um die Differenz oder den Rest zwischen ähnlichen Videorahmen darzustellen (z.B. nachdem Anwenden eines Bewegungsvektors). Transformationskoeffizienten sind die Koeffizienten des bestimmten Typs einer Transformation, die verwendet wird, um die Daten zu komprimieren, wie eine diskrete Cosinustransformation (DCT), ganzzahlige Transformation, kontinuierliche Wavelet-Transformation (CWT), schnelle Fourier-Transformation (FFT) usw. Quantisierungsparameter dienen dazu, die Präzision bestimmter Abschnitte oder Blöcke visueller Daten auf der Basis der Wichtigkeit zu reduzieren (z.B. können Blöcke mit niedriger Frequenz, wie Hintergründe, mit geringerer Präzision dargestellt werden, ohne die menschliche Wahrnehmung zu beeinträchtigen). Makroblock- (MB) Modi beziehen sich auf Typen von Transformationen (z.B. DCT, ganzzahlig, CWT, FFT) und Parameter, die verwendet werden, um verschiedene Blöcke visueller Daten zu komprimieren.
-
Demgemäß können die CNNs, die von Vorrichtungen „der frühen Stufe“ verwendet werden, darauf trainiert werden, um bestimmte Typen komprimierter Domänenmerkmale zu analysieren, wie beliebige der im Vorstehenden diskutierten. Auf diese Weise können diese Vorrichtungen „der frühen Stufe“ ein gewissen Ausmaß einer anfänglichen Verarbeitung vornehmen, ohne die visuellen Daten dekomprimieren zu müssen (z.B. unter Verwendung bestimmter Merkmale der komprimierten Daten). Außerdem können In einigen Ausführungsformen bestimmte Typen von Metadaten, die in dem komprimierten Bitstrom enthalten sein können, auch in der Analyse „der frühen Stufe“ verwendet werden. Wenn eine Edge-Vorrichtung, die ursprünglich die visuellen Daten aufgenommen hat, ausreichende Verarbeitungsfähigkeiten aufweist (z.B. eine Smart Kamera), kann außerdem in einigen Ausführungsformen diese Vorrichtung etwas von der anfänglichen Verarbeitung an den visuellen Rohdaten vornehmen, bevor sie zur Übertragung komprimiert werden. Wenn die visuellen Daten anschließend komprimiert werden und zu anderen Vorrichtungen für anschließende CNN Verarbeitungsstufen übertragen werden, können außerdem Metadaten, die aus der anfänglichen Verarbeitung generiert werden, als Teil der komprimierten visuellen Daten eingeschlossen werden.
-
Wenn diese Vorrichtungen „der frühen Stufe“ in der Lage sind, die visuellen Daten auf der Basis der anfänglichen Verarbeitung ausreichend zu interpretieren, können außerdem die nachfolgende Übertragung und/oder Verarbeitung der visuellen Daten vermieden werden. Wenn zum Beispiel mit Bezugnahme auf eine Überwachungsanwendung eine Vorrichtung der frühen Stufe in der Lage ist, den Schluss zu ziehen, dass keine Bewegung innerhalb der aufgenommenen visuellen Daten vorhanden ist, kann die Vorrichtung den Schluss ziehen, dass keine weitere Verarbeitung notwendig ist. Wenn die Vorrichtung der frühen Stufe jedoch entweder eine Bewegung detektiert oder nicht in der Lage ist, zuverlässig zu bestimmen, ob irgendeine Bewegung vorhanden ist, kann die Vorrichtung der frühen Stufe einige oder alle der komprimierten Daten an die nächste Verarbeitungsvorrichtung oder den nächsten Knoten im Netz senden, die oder der eine nachfolgende Stufe der Verarbeitung unter Verwendung eines anderen CNN vornehmen kann.
-
Nachdem eine bestimmte Vorrichtung eine assoziierte Verarbeitungsstufe vollendet, kann auf diese Weise die Vorrichtung bestimmte Daten zur Weiterverarbeitung weiterleiten, oder die Vorrichtung kann die Vorrichtung insgesamt beenden, in Abhängigkeit davon, ob die Vorrichtung in der Lage war, definitiv eine Entscheidung zu erreichen und/oder die visuellen Daten zu interpretieren. Wenn die Vorrichtung zum Beispiel nicht in der Lage ist, definitiv eine Entscheidung zu erreichen, kann die Vorrichtung einige visuelle Daten an die nächste Vorrichtung oder den nächsten Knoten weiterleiten, wie einige oder alle der komprimierten Daten, bestimmte dekomprimierte Daten und/oder irgendwelche relevanten Metadaten, die während der aktuellen oder vorhergehenden Verarbeitungsstufe generiert wurden. Auch wenn eine Vorrichtung nicht in der Lage ist, die visuellen Daten zu interpretieren, kann in einigen Fällen die Vorrichtung zum Beispiel in der Lage sein, bestimmte Schlussfolgerungen zu ziehen und/oder bestimmte Informationen abzuleiten, die mit den visuellen Daten assoziiert sind, welche sie als visuelle Metadaten darstellen kann. Wenn hilfreich, können demgemäß diese visuellen Metadaten auch an die Verarbeitungsvorrichtungen weitergeleitet werden, um nachfolgende Stufen vorzunehmen.
-
Auf diese Weise können die CNNs, die mit nachfolgenden Stufen assoziiert sind, dafür ausgebildet werden, um zusätzliche Merkmale zu verarbeiten, die mit den visuellen Daten assoziiert sind (z.B. zusätzliche Typen von komprimierten Domänendaten, visuelle Metadaten, die während vorhergehender Stufen generiert wurden, und letztlich unkomprimierte visuelle Daten), unter Verwendung von Algorithmen, die progressiv komplexer sind als die visuellen Datenströme durch höherentwickelte Verarbeitungsknoten in oder nahe bei der Cloud. Wenn die in den vorhergehenden Stufen vorgenommeine Verarbeitung unschlüssig oder unvollständig ist, wenn die visuellen Daten eine Vorrichtung in oder nahe bei der Cloud erreichen (zum Beispiel einen Cloud-basierten Server), kann schließlich die Vorrichtung die visuellen Daten vollständig dekomprimieren, um die visuellen Rohdaten unter Verwendung eines höherentwickelten, rechenintensiven CNN zu verarbeiten.
-
In dem in 89 veranschaulichten Beispiel implementiert das Flussdiagramm 8900 ein Beispiel einer Ausführungsform eines kaskadierten CNN. Das Flussdiagramm beginnt bei Block 8902 mit dem Aufnahmen visueller Daten unter Verwendung eines oder mehrerer Sensoren, wie Kameras und/oder anderer Typen von Vision-Sensoren, die am oder nahe beim „Rand“ eines Netzes bereitgestellt sein können.
-
Das Flussdiagramm geht dann zu Block 8904 weiter, wo die visuellen Daten von einer ersten Vorrichtung komprimiert werden. Die erste Vorrichtung kann zum Beispiel eine von einer Vielzahl von Vorrichtungen in einem verteilten Rechennetz sein, wie ein Sensor, der die visuellen Daten aufgenommen hat, und/oder eine andere Edge-Vorrichtung nahe bei diesem Sensor. Außerdem kann die erste Vorrichtung die visuellen Daten unter Verwendung von einer beliebigen geeigneten Kompressionstechnik(en) (z.B. H.264) komprimieren.
-
Das Flussdiagramm geht dann zu Block 8906 weiter, wo die komprimierten Daten von der ersten Vorrichtung an eine andere Vorrichtung in dem Netz übertragen und anschließend von diesem empfangen werden (z.B. einer Edge-Vorrichtung in der Nähe, wie ein Edge-Gateway).
-
Das Flussdiagramm geht dann zu Block 8908 weiter, wo die empfangenen Daten unter Verwendung eines assoziierten CNN verarbeitet werden. Zum Beispiel kann jede Vorrichtung, die irgendeine Form der komprimierten visuellen Daten empfängt, eine bestimmte Verarbeitungsstufe an den komprimierten Daten vornehmen. Außerdem kann jede Verarbeitungsstufe unter Verwendung eines anderen konvolutionalen neuronalen Netzes (CNN) vorgenommen werden, das darauf trainiert ist, verschiedene Typen von visuellen Daten zu analysieren (z.B. komprimierte visuelle Daten, visuelle Rohdaten und/oder irgendeine Kombination von beidem).
-
Zum Beispiel können bestimmte Vorrichtungen am oder nahe beim Netzrand, und/oder im Fog, CNNs verwenden, die dafür ausgebildet sind, um direkt an komprimierten Daten zu arbeiten, wie durch das Analysieren bestimmter Typen von komprimierten Datenmerkmalen (z.B. Bewegungsvektoren, Prädiktionsreste, Transformationskoeffizienten, Quantisierungsparameter und/oder Makroblock-Codierungsmodi). In einigen Ausführungsformen können zum Beispiel die CNNs, die von verschiedenen Edge-Vorrichtungen verwendet werden, jeweils dafür ausgebildet sein, um an verschiedenen Typen von komprimierten Datenmerkmalen zu arbeiten. Außerdem können in einigen Ausführungsformen die verschiedenen Typen von komprimierten Datenmerkmalen jeweils von unterschiedlichen Quellen (z.B. Sensoren oder anderen Vorrichtungen) generiert und/oder geliefert werden.
-
Als weiteres Beispiel können bestimmte Vorrichtungen im Fog (z.B. an irgendeinem Ort zwischen dem Rand und der Cloud) CNNs verwenden, die dafür ausgebildet sind, um an komprimierten Daten, unkomprimierten Daten und/oder irgendeiner Kombination von beidem zu arbeiten, in Abhängigkeit von ihren Verarbeitungsfähigkeiten. Schließlich können bestimmte Vorrichtungen in oder nahe bei der Cloud CNNs verwenden, die dafür ausgebildet sind, um an teilweise dekomprimierten Daten und/oder vollständig dekomprimierten visuellen Daten zu arbeiten.
-
Wenn eine bestimmte Vorrichtung die komprimierten visuellen Daten empfängt, kann die Vorrichtung demgemäß eine aktuelle Verarbeitungsstufe unter Verwendung des aktuellen CNN vornehmen, das mit dieser Vorrichtung assoziiert ist.
-
Das Flussdiagramm geht dann zu Block 8910 weiter, wo ein Ausgang von dem CNN für die aktuelle Verarbeitungsstufe erhalten wird. In einigen Fällen kann der Ausgang von dem CNN zum Beispiel bestimmte Informationen anzeigen, die mit den visuellen Daten assoziiert sind, wie die Wahrscheinlichkeit, dass die visuellen Daten bestimmte Merkmale, Objekte, Aktionen, Bewegungen, Charakteristiken, Szenarien, Bedingungen usw. enthalten.
-
Das Flussdiagramm geht dann zu Block 8912 weiter, um zu bestimmen, ob die Verarbeitung, die mit den visuellen Daten assoziiert ist, vollendet ist (z.B. auf der Basis des Ausgangs von dem (den) CNN(s), das (die) in der aktuellen und/oder vorhergehenden Verarbeitungsstufe verwendet wurde(n)).
-
Wenn zum Beispiel das CNN in der aktuellen Verarbeitungsstufe nicht in der Lage war, die visuellen Daten zum Zweck des Ableitens erforderlicher Informationen und/oder des Erreichens einer bestimmten Verarbeitungsentscheidung(en) ausreichend zu interpretieren, kann die Verarbeitung, die mit den visuellen Daten assoziiert ist, unvollendet sein. Demgemäß geht das Flussdiagramm zurück zu Block 8906, wo die komprimierten Daten zu einer anderen Verarbeitungsvorrichtung(en) im Netz übertragen werden, um zusätzliche Verarbeitungsstufen unter Verwendung anderer CNNs vorzunehmen.
-
Das Flussdiagramm wird auf diese Weise wiederholt, während die komprimierten visuellen Daten quer über die jeweiligen Verarbeitungsvorrichtungen vom Rand zur Cloud übertragen werden, bis letztlich in Block 8912 bestimmt wird, dass die Verarbeitung vollendet ist. Wenn zum Beispiel das CNN in der aktuellen Verarbeitungsstufe in der Lage war, die visuellen Daten für Zwecke des Ableitens erforderlicher Informationen und/oder des Erreichens einer bestimmten Verarbeitungsentscheidung(en) ausreichend zu interpretieren, kann die Verarbeitung, die mit den visuellen Daten assoziiert ist, vollendet sein, und das Flussdiagramm kann zu Block 8914 weitergehen, um ein Ergebnis auszugeben, das mit den visuellen Daten assoziiert ist. Das Ergebnis kann zum Beispiel die bestimmten Informationen und/oder Entscheidungen anzeigen, die auf der Basis der mit den visuellen Daten assoziierten Verarbeitung abgeleitet wurden.
-
An diesem Punkt kann das Flussdiagramm vollendet sein. In einigen Ausführungsformen kann das Flussdiagramm jedoch neu starten, und/oder bestimmte Blöcke können wiederholt werden. Zum Beispiel kann in einigen Ausführungsformen das Flussdiagramm bei Block 8902 neu starten, um das Aufnehmen und Verarbeiten visueller Daten fortzusetzen.
-
25-31 veranschaulichen die Verwendung von Schmetterlingsoperationen, um ein konvolutionales neuronales Netz (CNN) mit mehreren Domänen zu implementieren, das in der Lage ist, sowohl Roh- als auch komprimierte visuelle Daten zu verarbeiten.
-
Wie im Vorstehenden diskutiert, erfordern viele visuelle Analytiksysteme, dass visuelle Daten vollständig dekomprimiert werden, bevor irgendeine visuelle Verarbeitung vorgenommen werden kann (z.B. unter Verwendung neuronaler Deep Learning-Netze), was ein Ansatz ist, der verschiedene Ineffizienzen aufweist, einschließlich einer höheren Verarbeitungslatenz, einer zusätzlichen Übertragungsbandbreite usw. Demgemäß präsentiert diese Offenbarung verschiedene Ausführungsformen eines neuronalen Deep Learning-Netzes, das in der Lage ist, komprimierte visuelle Daten direkt zu analysieren. Insbesondere präsentieren die beschriebenen Ausführungsformen ein CNN mit mehreren Domänen, das Schmetterlingsoperationen verwendet, um eine visuelle Datenverarbeitung entweder in der Pixel-Domäne oder der komprimierten Domäne zu ermöglichen.
-
Zur Veranschaulichung wiederholen bestehende CNNs z.B. Inception oder ResNet CNN Modelle) typischerweise ein inneres Modul mehrere Male, und das innere Modul aggregiert die Ergebnisse von mehreren Konvolutionsschichten und/oder dem ursprünglichen Eingang am Ende (analog einem Flaschenhals). Zum Beispiel veranschaulichen 25A-B ein traditionelles Inception-Modell CNN 2500 mit 27 Schichten, und 26 und 27 veranschaulichen Beispiele von inneren Modulen 2600 und 2700 für ein Inception Modell CNN. Insbesondere veranschaulicht 26 ein inneres Modul 2600, das ohne Dimensionsreduktion implementiert ist, während 27 ein inneres Modul 2700 veranschaulicht, das mit einer Dimensionsreduktion implementiert ist. Diese CNN Implementierungen sind dafür ausgebildet, um visuelle Daten in der Pixel-Domäne (z.B. Roh- oder unkomprimierte visuelle Daten) zu verarbeiten.
-
28 und 29 veranschaulichen hingegen Beispiele von CNN inneren Modulen 2800 und 2900, die Schmetterlingsoperationen verwenden, um eine visuelle Datenverarbeitung mit mehreren Domänen entweder in der Pixel-Domäne oder der komprimierten Domäne zu ermöglichen. Schmetterlingsoperationen sind zum Beispiel teilweise inverse Transformationen, die verwendet werden können, wenn komprimierte Domänendaten (z.B. DCT Domänendaten) zurück in die Pixel-Domäne transformiert werden. Durch das Einschließen von Schmetterlingsschichten in ein CNN kann das CNN demgemäß mit komprimierten visuellen Daten als seinen ursprünglichen Eingang versehen werden, und während die komprimierten Daten von den aufeinanderfolgenden CNN Schichten verarbeitet werden, werden die komprimierten Daten mindestens teilweise invers transformiert unter Verwendung der Schmetterlingsschichten im CNN.
-
28 veranschaulicht ein inneres CNN Modul 2800, das ohne Dimensionsreduktion implementiert ist, wohingegen 29 ein inneres CNN Modul 2900 veranschaulicht, das mit einer Dimensionsreduktion implementiert ist. Wie in diesen Beispielen gezeigt, werden außerdem zusätzliche Schmetterlingsschichten oder -filter parallel zu den regulären Konvolutionsschichten hinzugefügt. In einigen Ausführungsformen können zum Beispiel 2 x 2 und/oder 4 x 4 Schmetterlingsoperationen parallel zu den regulären Konvolutions- und Poolingschichten hinzugefügt werden. Zum Beispiel könnten in einigen Ausführungsformen die Schmetterlingsoperationen ähnlich der in 31A-B veranschaulichten Schmetterlingsoperation implementiert sein.
-
In Bezug auf das innere Modul 2800 von 28 werden zum Beispiel die Schmetterlingsschichten 2830a,b parallel zu den Konvolutionsschichten 2810a-c und der Poolingschicht 2820 hinzugefügt, und die Schmetterlingsschichten 2830 umfassen vertikale N-Punkt-Schmetterlingsoperationen 2830a und horizontale N-Punkt-Schmetterlingsoperationen 2830b. In einigen Ausführungsformen können die Schmetterlingsoperationen zum Beispiel sowohl an vertikalen als auch horizontalen Datenelementen innerhalb der visuellen Daten vorgenommen werden. Ähnlich werden in Bezug auf das innere Modul 2900 von 29 die Schmetterlingsschichten 2930a,b parallel zu den Konvolutionsschichten 2910a-e und Poolingschichten 2920a-b hinzugefügt, und die Schmetterlingsschichten 2930 umfassen vertikale N-Punkt-Schmetterlingsoperationen 2930a und horizontale N-Punkt-Schmetterlingsoperationen 2930b.
-
Es ist zu beachten, dass dieser Ansatz jedoch nicht erfordert, dass mehrere Schmetterlingsschichten innerhalb eines einzelnen inneren Moduls gestapelt werden, da das CNN keine komplette inverse DCT vornehmen muss. Das Ziel mehrerer Konvolutionsschichten ist zum Beispiel, die Eingangsdaten in einen Merkmalraum zu extrahieren/transformieren, wo die vollständig verbundenen Schichten leicht verschiedene Cluster trennen können. Demgemäß müssen die Schmetterlingsschichten keine komplette inverse DCT vornehmen, und stattdessen können sie einfach dafür ausgebildet sein, das Extrahieren und Transformieren der Eingangsdaten in den Merkmalraum zu unterstützen. Auf diese Weise muss kein kompletter oder ganzer Stapel organisierter Schmetterlingsschichten in dem CNN eingeschlossen sein.
-
Außerdem können die Gewichte jedes Schmetterlings während der Trainingsphase eingestellt werden, und somit wird die Entscheidung, ob die Schmetterlingsschichten zu verwenden sind und/oder wie stark auf sie zurückgegriffen wird, automatisch eingestellt.
-
30 veranschaulicht eine alternative Ausführungsform eines CNN 3000 mit mehreren Schmetterlingsschichten 3002 und normalen Schichten 3400, die sequentiell anstatt parallel angeordnet sind.
-
31A-B veranschaulichen ein Beispiel einer eindimensionalen (1D) N-Punkt-Schmetterlingsoperation. Insbesondere ist das veranschaulichte Beispiel eine 4-Punkt-Schmetterlingsoperation, was bedeutet, dass die Schmetterlingsoperation über eine Distanz von vier Datenpunkten 3110a-d vorgenommen wird. In anderen Ausführungsformen können die Schmetterlingsoperationen jedoch über eine beliebige Anzahl von Datenpunkten implementiert werden. Außerdem können in einigen Ausführungsformen die Datenpunkte 3110a-d komprimierte Pixeldaten darstellen, wie DCT Koeffizienten.
-
In einigen Ausführungsformen können Schmetterlingsoperationen aufeinanderfolgend an einer Sammlung eindimensionaler (1D) Elemente von den visuellen Daten vorgenommen werden, wie horizontaler oder vertikaler Datenelemente innerhalb der visuellen Daten. Zum Beispiel kann jede Schmetterlingsoperation zwei Ausgänge oder Kanäle unter Verwendung getrennter Additions- und Subtraktionsoperationen generieren (z.B. durch Berechnen der Summe von zwei Punkten über eine große Distanz und der Differenz von zwei Punkten über eine große Distanz). Zum Beispiel können der 1. und 4. Punkt des Eingangs miteinander addiert werden, um ihre Summe zu berechnen (1. Punkt + 4. Punkt), und auch subtrahiert werden, um ihre Differenz zu berechnen (1. Punkt - 4. Punkt). Zusätzliche Schmetterlingsoperationen können aufeinanderfolgend über den Eingang auf diese Weise unter Verwendung eines Gleitfensters vorgenommen werden. Zum Beispiel können in der nächsten Schmetterlingsoperation die Summe und Differenz unter Verwendung des 2. und 5. Punkts berechnet werden, und der Prozess kann auf diese Weise wiederholt werden, bis alle Elemente im Eingang verarbeitet wurden.
-
In 31A-B sind zum Beispiel die Additions- und Subtraktionsoperation für eine Schmetterlingsoperation gezeigt. Insbesondere veranschaulicht 31A die Additionsoperation, und 31B veranschaulicht die Subtraktionsoperation. In 31A werden zum Beispiel der 1. Punkt (3110a) und der 4. Punkt (3110d) miteinander addiert, um einen neuen Punkt (3120a) zu berechnen, der ihre Summe darstellt. Ähnlich wird in 31B der 4. Punkt (3110d) vom 1. Punkt (3110a) subtrahiert, um einen neuen Punkt (3130d) zu berechnen, der ihre Differenz darstellt.
-
Demgemäß können Schmetterlingsoperationen in ein CNN auf diese Weise eingeschlossen werden, um eine Verarbeitung visueller Daten sowohl in der Pixel-Domäne als auch der komprimierten Domäne (z.B. DCT Domäne) zu ermöglichen, wodurch die Anforderung der vollständigen Dekompression visueller Daten vor der Analyse ihrer Inhalte unter Verwendung eines neuronalen Deep Learning-Netzes entfällt. Anstatt explizit eine inverse DCT Transformation vorzunehmen, um visuelle Daten vor ihrer Verarbeitung unter Verwendung eines CNN vollständig zu dekomprimieren, kann das CNN zum Beispiel stattdessen unter Verwendung von Schmetterlingsschichten implementiert werden, um inhärent eine Dekompressionsfunktionalität in das CNN einzubauen, wodurch es ermöglicht wird, dass das CNN mit komprimierten Daten als Eingang versehen wird.
-
32 und 33 veranschaulichen ein Beispiel einer Ausführungsform eines dreidimensionalen (3D) CNN 3200, das in der Lage ist, komprimierte visuelle Daten zu verarbeiten. In einigen Ausführungsformen könnte das 3D CNN 3200 zum Beispiel in der Implementierung von oder in Verbindung mit den kompressionsbasierten CNN Ausführungsformen verwendet werden, die in dieser gesamten Offenbarung beschrieben werden (z.B. den CNNs von 24 und 28 bis 31).
-
Viele visuelle Analytiksysteme erfordern, dass visuelle Daten dekomprimiert werden, bevor irgendeine Verarbeitung vorgenommen werden kann, wie eine Verarbeitung durch ein neuronales Deep Learning-Netz. Zur Veranschaulichung verwendet 34 ein Beispiel eines Pixel-Domänen-CNN 3400, und 35 veranschaulicht ein Beispiel einer assoziierten visuellen Pixel-Domänen-Analytikpipeline 3500. In dem veranschaulichten Beispiel nimmt das Pixel-Domänen-CNN 3400 eine Objektdetektion und -klassifikation zur visuellen Analytik unter Verwendung von Daten in der Pixel- oder Bilddomäne vor (z.B. unter Verwendung dekomprimierter visueller Daten). Zum Beispiel implementieren die konvolutionalen Kerne in den frühen Schichten des CNN zweidimensionale (2D) Konvolutionen an den Bilddaten, und mehrere Schichten von Konvolutions-, Pooling- und Rectified Linear Unit- (ReLU) Operationen werden wiederholt, um aufeinanderfolgend Kombinationen von Merkmalen aus den früheren Schichten zu extrahieren. Da das CNN 3400 an Pixel-Domänendaten arbeitet, müssen außerdem komprimierte visuelle Daten vollständig dekomprimiert werden, bevor sie von dem CNN 3400 verarbeitet werden können. Zum Beispiel, wie durch die visuelle Analytikpipeline 3500 von 35 gezeigt, werden die ursprünglichen Pixel-Domänendaten 3502 zuerst von einem Videocodierer 3510 komprimiert (z.B. vor der Übertragung über ein Netz), und die komprimierten Daten 3504 werden anschließend von einem Videodecodierer 3520 dekomprimiert, bevor die Videoanalytik 3540 vorgenommen wird (z.B. unter Verwendung eines CNN).
-
In der veranschaulichten Ausführungsform von 32 und 33 verarbeitet jedoch ein 3D CNN 3200 komprimierte visuelle Daten direkt unter Verwendung eines 3D Formats, das dafür ausgebildet ist, um die Verarbeitungseffizienz zu verbessern. Zum Beispiel kann das Eingabebild in die DCT Domäne transformiert werden und neu in ein 3D Format geformt werden, um die DCT Transformationskoeffizienten in verschiedene Kanäle zu trennen. Auf diese Weise werden die neu geformten DCT Transformationsdaten in einer Weise angeordnet, die eine bessere Korrelation zwischen den räumlichen und Transformationsdomänenkoeffizienten liefert. Die neu geformten DCT Transformationsdaten können dann direkt durch ein CNN verarbeitet werden (z.B. unter Verwendung von 3D Konvolutionen, um eine Merkmalextraktion vorzunehmen), wodurch es letztlich ermöglicht wird, dass CNN schneller zu trainieren. Durch das Eliminieren des Dekompressionsschritts, der für bestehende Ansätze erforderlich ist, wird zum Beispiel die Verarbeitungseffizienz verbessert, insbesondere für Rechenumgebungen, die keine eingebauten Hardware-Videodekompressionsbeschleuniger enthalten.
-
In einigen Ausführungsformen kann das 3D CNN 3200 zum Beispiel dafür ausgebildet sein, um direkt an komprimierten visuellen Daten zu arbeiten (z.B. Videorahmen), die in der DCT Domäne unter Verwendung einer 3D Matrix dargestellt werden. Zum Beispiel können in einigen Ausführungsformen die DCT Blockindices durch die x und y Dimension der 3D Matrix dargestellt werden, während die DCT Transformationsgrößenvektoren entlang der z Dimension organisiert werden können. Auf diese Weise können die konvolutionalen Kerne in der ersten Schicht der neuen CNN Architektur unter Verwendung von 3D Filtern implementiert werden, die dafür ausgebildet sind, um die Raum- und Frequenzdomänenkorrelationen und -merkmale der komprimierten Daten besser aufzunehmen, wodurch die Leistung der CNN Operation in der DCT Domäne verbessert wird.
-
Die Mehrheit der üblichen Video- und Bildcodierungsschemata verwenden diskrete Cosinustransformationen (DCT), um Raumpixelintensitäten in Frequenzdomänendarstellungen zu konvertieren. Die veranschaulichte Ausführungsform basiert auf der Beobachtung, dass, sobald Bilddaten in 4 x 4 Pixelblöcke geteilt werden und durch eine Transformation, wie DCT, geführt werden, die transformierten Daten andere Korrelationseigenschaften aufweisen als die ursprünglichen Daten. Zum Beispiel sind in Bezug auf eine DCT Transformation die DC Koeffizienten benachbarter Blöcke häufig stark korreliert, während die entsprechenden höheren Frequenz-AC-Koeffizienten benachbarter Blöcke ähnlich korreliert sein können.
-
Demgemäß veranschaulicht 32 einen Ansatz zur Transformation eines 2D Bilds in eine 3D Matrix von DCT Daten, die in einer Weise angeordnet sind, die es ermöglicht, dass die DCT Daten effizienter von einem CNN verarbeitet werden. In dem veranschaulichten Beispiel wird ein Eingabebild mit der Größe N x N (Bezugszahl 3210) zuerst in 4 x 4 Pixelblöcke aufgebrochen (Beispiel Bezugszahl 3212), und jeder 4 x 4 Pixelblock wird durch eine DCT Transformation geführt. Die erhaltenen DCT Transformationsdomänendaten (Bezugszahl 3220) werden dann in einer 3D Matrix gespeichert, wo die x und y Dimension den räumlichen Blockindices entsprechen, und die z Dimension Vektoren von DCT Koeffizienten (Bezugszahl 3222) enthält, die 16 Koeffizienten pro Vektor umfassen. Demgemäß haben die erhaltenen Transformationsdomänendaten (Bezugszeichen 3220) die Dimensionen der Größe K × K × 16, wobei K = N/4.
-
Als Nächstes, wie in 33 gezeigt, werden die Transformationsdomänendaten, die unter Verwendung der 3D Matrix dargestellt werden (Bezugszeichen 3220), in das CNN (Bezugszeichen 3200) eingegeben, das eine erste Schicht von 3D konvolutionalen Kernen aufweist, die 3D Filter verwenden. Diese Schicht extrahiert sowohl räumlich korrelierte Merkmale in der x-y Ebene als auch beliebige spezifische Signaturen in der Frequenzachse (z Dimension), die als Eingang in nachfolgende Schichten verwendet werden können.
-
Die veranschaulichte Ausführungsform bietet zahlreiche Vorteile, einschließlich der Fähigkeit, komprimierte visuelle Daten direkt in effizienter Weise zu verarbeiten, wodurch die Notwendigkeit entfällt, die Daten vor der Analyse ihrer Inhalte zu dekomprimieren (z.B. unter Verwendung eines neuronalen Deep Learning-Netzes). Auf diese Weise kann die gesamte Rechenkomplexität der visuellen Analytik reduziert werden. Da komprimierte oder DCT Domänendaten quantisiert werden und somit unter Verwendung einer kompakteren Form als die ursprünglichen visuellen Daten (z.B. Videorahmen) dargestellt werden, kann außerdem die gesamte CNN Komplexität verglichen mit einem herkömmlichen Pixel-Domänen-CNN weiter reduziert werden. Zum Beispiel werden in Bezug auf visuelle Daten (z.B. Bilder oder Video), die in bestimmten Kompressionsformaten, wie JPEG oder M-JPEG, komprimiert werden, die DCT Koeffizienten quantisiert, und typischerweise können die höchsten Frequenzkomponenten durch die Quantisierung auf Null gesetzt werden. Somit wird das Gesamtvolumen der Nicht-Null-Daten, die von dem CNN verarbeitet werden, reduziert, verglichen mit den ursprünglichen Bilddaten. Auf der Basis der Datenvolumenreduktion der komprimierten Daten (z.B. aufgrund der DCT Koeffizientenquantisierung) kann demgemäß die Komplexität weiter reduziert werden, und die Trainingsgeschwindigkeit der Konvergenz kann sich verbessern.
-
90 veranschaulicht ein Flussdiagramm 9000 für ein Beispiel einer Ausführungsform eines konvolutionalen neuronalen Netzes (CNN) mit mehreren Domänen. In verschiedenen Ausführungsformen kann das Flussdiagramm 9000 zum Beispiel unter Verwendung der Visual Computing-Architektur und -Funktionalität implementiert werden, die in dieser gesamten Beschreibung beschrieben werden.
-
Ein typisches CNN ist dafür ausgebildet, um an unkomprimierten oder rohen visuellen Daten zu arbeiten, wodurch erforderlich ist, dass die visuellen Daten vollständig dekomprimiert werden, bevor irgendeine Verarbeitung vorgenommen werden kann. Zum Beispiel kann das CNN mehrere Schichten aufweisen, und jede Schicht kann einen oder mehrere Filter aufweisen, die typischerweise dafür ausgebildet sind, um visuelle unkomprimierte oder „Pixel-Domänen“-Daten (z.B. Konvolutions- und Poolingfilter) zu verarbeiten. In dem veranschaulichten Beispiel ist das CNN mit mehreren Domänen jedoch in der Lage, sowohl unkomprimierte als auch komprimierte visuelle Daten zu verarbeiten. Zum Beispiel umfasst das CNN mit mehreren Domänen zusätzliche Filter, die dafür ausgebildet sind, um komprimierte visuelle Daten zu verarbeiten, die parallel zu den bestehenden Pixel-Domänenfiltern bestimmter Schichten hinzugefügt werden können. In einigen Ausführungsformen können zum Beispiel die zusätzlichen „komprimierten Domänen“-Filter unter Verwendung von Schmetterlingsfiltern oder 3D Konvolutionsfiltern implementiert werden (z.B. wie im Vorstehenden in Verbindung mit 25 bis 35) beschrieben. Ferner kann während des Trainierens das CNN darauf trainiert werden, um auf die jeweiligen Pixel-Domänenfilter oder Kompressionsdomänenfilter, wie geeignet, zurückzugreifen, in Abhängigkeit davon, ob der Eingang unkomprimiert oder komprimiert ist. Wie bei typischen CNNs, können zum Beispiel die Gewichte jedes Kompressionsdomänenfilters während der Trainingsphase eingestellt werden, und die Entscheidung, ob diese Kompressionsdomänenfilter zu verwenden sind, und/oder wie stark auf diese zurückzugreifen ist, wird automatisch eingestellt. Auf diese Weise ist das CNN in der Lage, visuelle Daten in entweder der Pixel-Domäne oder der komprimierten Domäne zu verarbeiten.
-
In einigen Ausführungsformen können die Kompressionsdomänenfilter unter Verwendung von Schmetterlingsfiltern implementiert werden (z.B. wie in Verbindung mit 25 bis 31 beschrieben). Diese Schmetterlingsfilter können parallel zu den bestehenden Pixel-Domänen-CNN-Filtern (z.B. Konvolutions- und Poolingfiltern) oder sequentiell (z.B. unter Verwendung einer oder mehrerer Schmetterlingsschichten, die den typischen CNN Schichten vorausgehen) hinzugefügt werden. Auf diese Weise werden die Schmetterlingsfilter partielle inverse Transformationen an den visuellen Daten vornehmen, wodurch die Transformation der visuellen Daten (wenn komprimiert) in einen Merkmalraum unterstützt wird, der von dem CNN verarbeitet werden kann.
-
Alternativ dazu oder zusätzlich können die Kompressionsdomänenfilter unter Verwendung von 3D Konvolutionsfiltern implementiert werden, die dafür ausgebildet sind, um an komprimierten visuellen Daten zu arbeiten (zum Beispiel wie in Verbindung mit 32 bis 35 beschrieben). Zum Beispiel können zweidimensionale (2D) komprimierte visuelle Daten in eine dreidimensionale (3D) Darstellung transformiert werden, um verwandte Transformationskoeffizienten in denselben Kanal zu gruppieren. Auf diese Weise kann dann eine 3D Konvolution an den transformierten 3D komprimierten Daten vorgenommen werden, wodurch es ermöglicht wird, dass die verwandten Transformationskoeffizienten gemeinsam verarbeitet werden.
-
In dem in 90 veranschaulichten Beispiel implementiert das Flussdiagramm 9000 ein Beispiel einer Ausführungsform des beschriebenen CNN mit mehreren Domänen. Das Flussdiagramm beginnt bei Block 9002, wo eine visuelle Darstellung unter Verwendung eines oder mehrerer Sensoren, wie Kameras und/oder anderer Typen von Vision-Sensoren), aufgenommen wird. Das Flussdiagramm geht dann zu Block 9004 weiter, wo visuelle Daten, die der visuellen Darstellung entsprechen, erhalten werden. In einigen Ausführungsformen können die visuellen Daten zum Beispiel durch oder von einer Vorrichtung nahe bei den Sensoren und/oder über ein Netz erhalten werden. Außerdem können die visuellen Daten entweder unkomprimiert oder komprimiert sein.
-
Das Flussdiagramm geht dann zu Block 9006 weiter, wo die visuellen Daten als Eingang an ein CNN mit mehreren Domänen geliefert werden, und dann zu Block 9008, wo der Eingang an eine erste Schicht des CNN geliefert wird.
-
Das Flussdiagramm geht dann zu Block 9010 weiter, wo der Eingang unter Verwendung von Pixel-Domänen- und/oder Kompressionsdomänenfilter(n) der aktuellen CNN Schicht verarbeitet wird. Die Pixel-Domänenfilter können zum Beispiel typische CNN Filter sein, wie Konvolutions- oder Poolingfilter. Die Kompressionsdomänenfilter können jedoch Filter sein, die dafür ausgebildet sind, um komprimierte visuelle Daten zu verarbeiten, wie Schmetterlingsfilter oder 3D Konvolutionsfilter. Zum Beispiel können die Kompressionsdomänenfilter verwendet werden, um nicht angrenzende Elemente der visuellen Daten zu verarbeiten, die typischerweise korreliert werden, wenn die visuellen Daten komprimiert werden. Außerdem kann das CNN darauf trainiert werden, um auf eine Verarbeitung zurückzugreifen, die mit den Pixel-Domänenfiltern assoziiert ist, wenn die visuellen Daten unkomprimiert sein, und ferner darauf trainiert werden, um auf eine Verarbeitung zurückzugreifen, die mit den Kompressionsdomänenfiltern assoziiert ist, wenn die visuellen Daten komprimiert sind.
-
In einigen Ausführungsformen können die Kompressionsdomänenfilter zum Beispiel Schmetterlingsfilter sein, die jeweils verwendet werden können, um eine partielle inverse Transformation vorzunehmen, die mit den visuellen Daten assoziiert ist. Zum Beispiel kann ein Schmetterlingsfilter eine Summe und eine Differenz für eine Vielzahl von Paaren von Elementen innerhalb der visuellen Daten berechnen. Jedes Paar von Elementen kann zum Beispiel an Orten innerhalb der visuellen Daten positioniert sein, die in einer bestimmten Distanz voneinander vorliegen (z.B. horizontal oder vertikal).
-
Alternativ dazu oder zusätzlich können die Kompressionsdomänenfilter 3D Konvolutionsfilter sein. Ein 3D Konvolutionsfilter kann zum Beispiel verwendet werden, um eine Verarbeitung vorzunehmen, die mit dreidimensionalen (3D) visuellen Daten assoziiert ist, welche auf der Basis einer dreidimensionalen (3D) Transformationen der visuellen Daten generiert werden. Zum Beispiel können die 3D visuellen Daten generiert werden, indem eine 3D Transformation an den visuellen Daten vorgenommen wird, und die erhaltenen 3D visuellen Daten können dann als Eingang an das 3D Konvolutionsfilter geliefert werden.
-
In einigen Ausführungsformen ordnet die 3D Transformation zum Beispiel die visuellen Daten in drei Dimensionen um, so dass eine Korrelation zwischen einem oder mehreren benachbarten Elementen innerhalb einer bestimmten Dimension vorliegt, wenn die für die 3D Transformation verwendeten visuellen Daten komprimiert werden. Wenn die visuellen Daten komprimiert werden, kann die 3D Transformation zum Beispiel verwandte oder korrelierte Transformationskoeffizienten (z.B. DCT Koeffizienten) in denselben Kanal gruppieren, wodurch es ermöglicht wird, dass diese Koeffizienten gemeinsam verarbeitet werden.
-
In einigen Ausführungsformen können die 3D visuellen Daten zum Beispiel generiert werden, indem zuerst die visuellen Daten in mehrere Blöcke geteilt werden, wobei jeder Block eine Vielzahl von Elementen der visuellen Daten aufweist. Wenn die visuellen Daten komprimiert werden, können die Elemente zum Beispiel Transformationskoeffizienten (z.B. DCT Koeffizienten) entsprechen. Die Blöcke können dann entlang einer ersten Dimension und einer zweiten Dimension innerhalb der 3D visuellen Daten angeordnet werden, während die mit jedem Block assoziierten Elemente entlang einer dritten Dimension der 3D visuellen Daten angeordnet werden können. Wenn die für die Transformation verwendeten visuellen Daten komprimiert werden, enthalten auf diese Weise die erhaltenen 3D visuellen Daten verwandte oder korrelierte Transformationskoeffizienten (z.B. DCT Koeffizienten) in demselben Kanal, wodurch es ermöglicht wird, dass diese Koeffizienten gemeinsam verarbeitet werden.
-
Das Flussdiagramm geht dann zu Block 9012 weiter, um zu bestimmen, ob eine nachfolgende Schicht in dem CNN vorhanden ist. Wenn die Antwort in Block 9012 JA ist, geht das Flussdiagramm zu Block 9014 weiter, um den Eingang an die nächste Schicht des CNN zu liefern. In einigen Ausführungsformen kann der Ausgang der aktuellen Schicht des CNN zum Beispiel als Eingang an die nächste Schicht des CNN geliefert werden. Wenn die Antwort in Block 9012 NEIN ist, ist die CNN Verarbeitung vollendet, und das Flussdiagramm geht dann zu Block 9016 weiter, um die visuellen Daten auf der Basis des Ausgangs des CNN zu klassifizieren.
-
An diesem Punkt kann das Flussdiagramm vollendet sein. In einigen Ausführungsformen kann das Flussdiagramm jedoch neu starten, und/oder bestimmte Blöcke können wiederholt werden. Zum Beispiel kann in einigen Ausführungsformen das Flussdiagramm bei Block 9002 neu starten, um das Aufnehmen und Verarbeiten visueller Daten fortzusetzen.
-
36 und 37 veranschaulichten Beispiele von Ausführungsformen visueller Analytikpipelines 3600 und 3700, die eine visuelle Analytik an komprimierten visuellen Daten vornehmen (z.B. unter Verwendung der kompressionsbasierten CNN Ausführungsformen, die in dieser gesamten Offenbarung beschrieben werden). Wie von diesen FIGUREN gezeigt, ist der Decodierungs- oder Dekompressionsschritt in der visuellen Analytikpipeline optionale und/oder kann gänzlich weggelassen werden. Wie durch die visuelle Analytikpipeline 3600 von 36 gezeigt, werden zum Beispiel die ursprünglichen Pixel-Domänendaten 3602 zuerst von einem Videocodierer 3610 komprimiert (vor der Übertragung über ein Netz), und die komprimierten Daten 3604 können gegebenenfalls von einem Videodecodierer 3620 teilweise dekomprimiert werden, bevor eine visuelle Analytik 3630 an den vollständig oder teilweise komprimierten Daten 3606 vorgenommen wird. Ähnlich, wie durch die visuelle Analytikpipeline 3700 von 37 gezeigt, werden die ursprünglichen Pixel-Domänendaten 3702 zuerst von einem Videocodierer 3710 komprimiert (z.B. vor der Übertragung über ein Netz), und dann wird eine visuelle Analytik (z.B. Bildklassifikation) 3720 direkt an den komprimierten Daten 3704 vorgenommen.
-
38 veranschaulicht eine Leistungsgraphen 3800, der die Präzision eines CNN zeigt, das unter Verwendung komprimierter visueller Daten trainiert wurde (z.B. 4 × 4 Transformations-DCT-Eingänge), wie die kompressionsbasierten CNNs, die in dieser gesamten Offenbarung beschrieben werden.
-
39 veranschaulicht ein Flussdiagramm 3900 für ein Beispiel einer Ausführungsform der kontextbewussten Bildkompression. In einigen Ausführungsformen kann das Flussdiagramm 3900 unter Verwendung der Ausführungsformen und Funktionalität implementiert werden, die in dieser gesamten Offenbarung beschrieben werden.
-
Heutzutage greifen viele Leute auf die Cloud zum Speichern oder Sichern ihrer Fotos zurück. Typischerweise werden Fotos als einzeln komprimierte Dateien oder Einheiten gespeichert. In der aktuellen Computing-Ära ist dieser Ansatz jedoch häufig ineffizient. Zum Beispiel verwenden Leute zunehmend ihre mobilen Vorrichtungen, um Fotos zu machen, und jede neue Generation mobiler Vorrichtungen wird mit Kameras aktualisiert, die mehr und mehr Megapixel unterstützen, was zu größeren Volumen von Fotos führt, die mehr Speicherraum erfordern. Außerdem nehmen Leute häufig mehrere Fotos desselben Objekts oder derselben Szene während eines einzelnen Anlasses auf, was oft zu einer engen zeitlichen Korrelation zwischen diesen Fotos führt, zusammen mit einer erheblichen Redundanz. Aufgrund der Redundanz quer über ähnliche Fotos können demgemäß das einzelne Komprimieren und Speichern jedes Fotos ein ineffizienter Ansatz sein. Zum Beispiel wird traditionell jedes Foto unabhängig komprimiert und gesichert, wobei ein bestimmtes Bildkompressionsformat, wie JPEG, verwendet wird. Durch das einzelne Komprimieren jedes Fotos nutzen aktuelle Ansätze jedoch nicht die Inter-Foto-Beziehung zwischen Gruppen ähnlicher Fotos, und somit ist mehr Speicherraum erforderlich, um die Fotos zu speichern. Zwei Fotos, die nahezu identisch sind, würden zum Beispiel weiterhin den doppelten Speicher eines einzelnen Fotos erfordern.
-
Demgemäß werden in der veranschaulichten Ausführungsform Gruppen ähnlicher oder verwandter Fotos effizienter komprimiert und gespeichert. Zum Beispiel werden Kontextinformationen, die mit Fotos assoziiert sind, extrahiert und verwendet, um ähnliche oder verwandte Fotos zu identifizieren, und ähnliche Fotos werden dann gemeinsam als Gruppe komprimiert. Die Kontextinformationen könnten zum Beispiel verwendet werden, um eine Gruppe von Fotos von einem einzelnen Benutzer zu identifizieren, die zeitlich nahe beieinander und/oder an demselben Ort aufgenommen wurden. Als weiteres Beispiel könnten die Kontextinformationen verwendet werden, um eine Gruppe von Bildern zu identifizieren, die von verschiedenen Benutzern, jedoch an demselben Ort aufgenommen wurden. Demgemäß kann die identifizierte Gruppe ähnlicher Fotos unter Verwendung einer Videocodierung komprimiert werden, um die Inter-Foto-Korrelationen zu nutzen und letztlich die Fotos effizienter zu komprimieren. Auf diese Weise kann das Komprimieren verwandter oder korrelierter Bilder unter Verwendung einer Videokompression anstatt einer Standard-Bildkompression den Speicherraum signifikant reduzieren, der für die Fotos erforderlich ist (z.B. 2-bis 5-mal weniger Speicherraum in einigen Fällen). Demgemäß kann dieser Ansatz verwendet werden, um Speicher in der Cloud einzusparen oder zu reduzieren.
-
Das Flussdiagramm kann bei Block 3902 beginnen, indem zuerst ein neues Foto erhalten wird. In einigen Fällen könnte das neue Foto zum Beispiel von der Kamera einer mobilen Vorrichtung aufgenommen werden. In anderen Fällen könnte jedoch ein beliebiger Typ einer Vorrichtung oder Kamera verwendet werden, um das Foto aufzunehmen.
-
Das Flussdiagramm kann dann zu Block 3904 weitergehen, um Kontextinformationen zu sammeln, die mit dem neuen Foto assoziiert sind. Wenn ein Foto neu aufgenommen wird (z.B. von einer mobilen Vorrichtung), werden zum Beispiel entsprechende Kontextinformationen gesammelt, die mit dem Foto assoziiert sind, wie ein Zeitstempel, GPS Koordinaten, Vorrichtungsausrichtung und Bewegungszustände usw.
-
Das Flussdiagramm kann dann zu Block 3906 weitergehen, um zu bestimmen, ob ein übereinstimmendes Master-Foto für das neue Foto identifiziert werden kann. In einigen Ausführungsformen werden zum Beispiel die Kontextinformationen des neuen Fotos mit den Kontextinformationen anderer zuvor aufgenommener Master-Fotos verglichen, um zu bestimmen, ob das neue Foto eng mit irgendeinem der bestehenden Master-Fotos korreliert ist. Wenn das Foto zum Beispiel an demselben Ort aufgenommen ist, innerhalb einer bestimmten Zeitdauer, und mit wenig Telefonbewegung verglichen mit einem Master-Foto, ist es wahrscheinlich, dass das neue Foto mit dem Master-Foto stark korreliert ist. Ferner können in einigen Ausführungsformen dann Bildverarbeitungstechniken (z.B. Merkmalextraktion/übereinstimmung) angewendet werden, um die Fotokorrelation zu bestätigen. In einigen Ausführungsformen kann zum Beispiel eine skaleninvariante Merkmaltransformation (SIFT) verwendet werden, um zu bestimmen, ob ein Paar von Fotos ausreichend korreliert ist oder übereinstimmt (z.B. durch Detektieren, Extrahieren und/oder Vergleichen von Bildmerkmalen). Ferner können in einigen Ausführungsformen Bilddaten selbst als Kontextinformationen behandelt werden, die verwendet werden können, um ähnliche oder korrelierte Fotos zu identifizieren, wie Bildpixel, Bildstrukturen, extrahierte Bildmerkmale usw.
-
Wenn ein übereinstimmendes Master-Foto in Block 3906 identifiziert wird, kann das Flussdiagramm dann zu Block 3908 weitergehen, um das neue Foto mit dem übereinstimmenden Master-Foto zu codieren. In einigen Ausführungsformen kann zum Beispiel ein Videocodec (z.B. H. 264) verwendet werden, um das neue Foto als Zwischenrahmen zu komprimieren, der mit dem Master-Foto assoziiert ist. Videocodes bieten typischerweise eine Zwischenrahmencodierung, die effektiv die zeitliche Korrelation zwischen ähnlichen Bildern nützt, um die Codiereffizienz zu verbessern.
-
In einigen Ausführungsformen kann ein Master-Foto irgendein Foto umfassen, das ohne Referenz auf ein anderes Stamm- oder verwandtes Bild komprimiert wird, während ein Slave-Foto irgendein Foto umfassen kann, das mit einer Referenz auf ein Master- oder Stammfoto komprimiert wird (z.B. unter Verwendung des Zwischenrahmenmodus eines Videocodecs). Demgemäß muss ein Slave-Foto effizient relevante Informationen seines Master-Fotos aufzeichnen oder korrelieren, so dass, wenn das Slave-Foto zur Anzeige des gesamten Bilds decodiert werden muss, das assoziierte Master-Foto rasch identifiziert werden kann.
-
Wenn in Block 3906 ein übereinstimmendes Foto NICHT detektiert wird, kann das Flussdiagramm dann zu Block 3910 weitergehen, um das neue Foto selbst zu codieren. Wenn zum Beispiel das neue Foto nicht mit irgendeinem der bestehenden Master-Fotos übereinstimmt, wird das neue Foto ohne Referenz auf irgendwelche anderen Fotos codiert, und das Flussdiagramm kann dann zu Block 3912 weitergehen, um das neue Foto als Master-Foto zu bezeichnen, wodurch gestattet wird, dass es potentiell mit anderen anschließend aufgenommenen Fotos komprimiert wird.
-
An diesem Punkt kann das Flussdiagramm vollendet sein. In einigen Ausführungsformen kann das Flussdiagramm jedoch neu starten, und/oder bestimmte Blöcke können wiederholt werden. Zum Beispiel kann in einigen Ausführungsformen das visuelle Daten in Block 3902 neu starten, um das Erhalten und Komprimieren neu aufgenommener Fotos fortzusetzen.
-
64 veranschaulicht ein Beispiel einer Ausführungsform eines Bildspeichersystems 6400, das eine kontextbewusste Bildkompression nutzt. In einigen Ausführungsformen kann das Speichersystem 6400 zum Beispiel verwendet werden, um die kontextbewusste Bildkompressionsfunktionalität aus dem Flussdiagramm 3900 von 39 zu implementieren.
-
In der veranschaulichten Ausführungsform umfasst das Bildspeichersystem 6400 eine Bildspeichervorrichtung 6410 und eine Vielzahl von mobilen Vorrichtungen 6420a-c, wie im Nachstehenden weiter beschrieben.
-
Die Bildspeichervorrichtung 6410 umfasst mindestens einen Prozessor 6411, ein Speicherelement 6412, eine Kommunikationsschnittstelle 6413 und einen Datenspeicher 6414. Der Datenspeicher 6414 enthält eine kontextbewusste Bildkompressionsmaschine 6415 und eine Vielzahl von komprimierten Bildern 6414. Die kontextbewusste Bildkompressionsmaschine 6415 umfasst Logik und/oder Instruktionen, die von dem Prozessor 6411 ausgeführt werden können, um eine kontextbewusste Bildkompression vorzunehmen, die es ermöglicht, dass komprimierte Bilder 6416 effizienter komprimiert und gespeichert werden.
-
Mobile Vorrichtungen 6420a-c umfassen jeweils mindestens einen Prozessor 6421, ein Speicherelement 6422, eine Kommunikationsschnittstelle 6423, einen Datenspeicher 6424, eine Kamera 6425 und (einen) Sensor(en) 6426. Der Einfachheit halber sind die zugrundeliegenden Komponenten der mobilen Vorrichtungen 6420a-c nur für die mobile Vorrichtung 6420a veranschaulicht.
-
Die jeweiligen Komponenten des Bildspeichersystems 6400 können verwendet werden, um eine kontextbewusste Bildkompressionsfunktionalität zu implementieren (z.B. wie in Verbindung mit 39 und/oder 56 weiter beschrieben). Insbesondere liefert das Bildspeichersystem 6400 ein effizientes Speichern von Bildern durch das Komprimieren von Gruppen ähnlicher oder verwandter Bilder miteinander auf der Basis von Kontextinformationen, die mit den Bildern assoziiert sind.
-
In einigen Ausführungsformen kann das Bildspeichersystem 6400 zum Beispiel einen Datenspeicher 6414 umfassen, der eine Vielzahl von komprimierten Bildern 6416 enthält, die von einer mobilen Vorrichtung 6420 aufgenommen werden, welche mit einem bestimmten Benutzer assoziiert ist. Die komprimierten Bilder 6416 können sowohl Master- als auch Slave-Bilder umfassen. In einigen Ausführungsformen kann ein Master-Bild zum Beispiel ein Bild sein, das ohne Referenz auf irgendwelche anderen Bilder komprimiert wird (z.B. allein und/oder isoliert komprimiert), während ein Slave-Bild ein Bild sein kann, das mit einer Referenz auf mindestens ein Master-Bild komprimiert wird. Die komprimierten Bilder 6416 können auch assoziierte Kontextinformationen umfassen. Im Allgemeinen können Kontextinformationen, die mit einem bestimmten Bild assoziiert sind, einen beliebigen Typ von Informationen umfassen, der mit dem Kontext assoziiert ist, in dem das Bild aufgenommen wurde, wie Zeit, Ort, Vorrichtungsidentität, Vorrichtungsorientierung oder -richtung, Vorrichtungsbewegung usw. In einigen Ausführungsformen können zum Beispiel bestimmte Kontextinformationen von einem oder mehreren Sensoren 6426 einer mobilen Vorrichtung 6420 gesammelt werden, wie einem GPS Empfänger, Gyroskop, Akzelerometer, Kompass usw.
-
Wenn eine mobile Vorrichtung 6420 ein neues Bild unter Verwendung ihrer assoziierten Kamera 6425 aufnimmt, kann demgemäß die mobile Vorrichtung 6420 das unkomprimierte Bild und seine assoziierten Kontextinformationen an die Bildspeichervorrichtung 6410 liefern (z.B. über die Kommunikationsschnittstelle 6423). Auf diese Weise können die Kontextinformationen genutzt werden, um irgendwelche zuvor aufgenommenen Bilder 6416 zu identifizieren, die dem neu aufgenommenen Bild ähnlich sein können. Insbesondere kann durch das Identifizieren von Korrelationen auf der Basis der Kontextinformationen bestimmt werden, ob das neu aufgenommene unkomprimierte Bild mit einem entsprechenden komprimierten Master-Bild 6416 assoziiert ist, das in der Bildspeichervorrichtung 6410 gespeichert ist. Zum Beispiel kann bestimmt werden, dass das neu aufgenommene mit einem komprimierten Master-Bild assoziiert 6416 ist, wenn es innerhalb einer bestimmten Zeit-dauer, an demselben oder einem ähnlichen Ort, durch dieselbe mobile Vorrichtung, in einer ähnlichen Vorrichtungsorientierung oder -richtung und/oder mit wenig oder keiner Vorrichtungsbewegung aufgenommen wurde.
-
Ferner können dann in einigen Ausführungsformen Bildmerkmal-Übereinstimmungstechniken (z.B. ein SIFT Algorithmus) angewendet werden, um die Bildkorrelation zu bestätigen. Zum Beispiel kann die Bildmerkmalübereinstimmung verwendet werden, um eine Korrelation zwischen Merkmalen des neu aufgenommenen Bilds und dem kontextuell ähnlichen Master-Bild 6416 zu identifizieren.
-
Wenn bestimmt wird, dass das neu aufgenommene unkomprimierte mit einem entsprechenden komprimierten Master-Bild 6416 assoziiert ist, kann dann das unkomprimierte Bild mit einer Referenz auf das entsprechende Master-Bild komprimiert werden. In einigen Ausführungsformen kann das unkomprimierte Bild zum Beispiel mit einer Referenz auf das entsprechende Master-Bild unter Verwendung einer Zwischenrahmencodierung komprimiert werden. Die Zwischenrahmencodierung nutzt effektiv die Redundanz zwischen ähnlichen Bildern, um die Codiereffizienz zu verbessern (z.B. wie in Verbindung mit 65 im Nachstehenden weiter beschrieben). In einigen Ausführungsformen kann zum Beispiel ein Videocodec verwendet werden, einer eine Zwischenrahmencodierung verwendet (z.B. H.264), um die Kompression vorzunehmen. Das erhaltene komprimierte Bild kann das als Slave-Bild bezeichnet werden, da es mit einer Referenz auf ein Master-Bild komprimiert wurde.
-
Wenn bestimmt wird, dass das neu aufgenommene unkomprimierte Bild nicht mit irgendwelchen komprimierten Master-Bilder 6416 assoziiert ist, kann dann das unkomprimierte Bild ohne Referenz auf irgendwelche anderen Bilder komprimiert werden. In einigen Ausführungsformen kann das unkomprimierte Bild zum Beispiel unter Verwendung einer Zwischenrahmencodierung komprimiert werden. Die Zwischenrahmencodierung nutzt die Raumredundanz (z.B. Korrelationen unter Pixeln innerhalb eines einzelnen Rahmens oder Bilds), um die Codierungseffizienz zu verbessern. Das erhaltene komprimierte Bild kann dann als Master-Bild bezeichnet werden, da es ohne Referenz auf irgendwelche anderen Bilder komprimiert wurde. Auf diese Weise kann das erhaltene komprimierte Bild anschließend als Master-Bild verwendet werden, um anschließend aufgenommene Bilder zu komprimieren, die als ähnlich bestimmt werden.
-
Nach der Kompression des neu aufgenommenen Bilds (z.B. entweder mit oder ohne Referenz auf ein entsprechendes Master-Bild) kann das erhaltene komprimierte Bild demgemäß in einer Bildspeichervorrichtung 6410 gespeichert werden.
-
Das Beispiel der Ausführungsform einer kontextbewussten Bildkompression, das in Verbindung mit 64 veranschaulicht und beschrieben wird, dient nur der Veranschaulichung vieler möglicher Ausführungsformen. In verschiedenen Ausführungsformen kann zum Beispiel der im Vorstehenden beschriebene Kompressionsansatz periodisch vorgenommen werden, um Batches vor kurzem aufgenommener Bilder gemeinsam zu komprimieren, anstatt jedes Bild sequentiell zu komprimieren, wenn es aufgenommen wird. Zusätzlich können in einigen Ausführungsformen bestimmte Bilder mit einer Referenz auf mehrere Master-Bilder komprimiert werden, und/oder bestimmte Bilder können sowohl als Master- als auch als Slave-Bilder dienen (z.B. ein Bild, das mit einer Referenz auf ein Master-Bild komprimiert wird, jedoch auch verwendet wird, um ein weiteres Slave-Bild zu komprimieren). Außerdem können in verschiedenen Ausführungsformen die zugrundeliegenden Komponenten und die Funktionalität des Bildspeichersystems 6400, der Bildspeichervorrichtung 6410 und/oder der mobilen Vorrichtungen 6420 kombiniert, getrennt und/oder quer über eine beliebige Anzahl von Vorrichtungen oder Komponenten verteilt werden. In verschiedenen Ausführungsformen kann die Bildspeichervorrichtung 6410 zum Beispiel entweder in der Cloud implementiert werden (z.B. als Cloud-basierter Speicherserver), am Netzrand implementiert werden (z.B. innerhalb jeder mobilen Vorrichtung 6420 und/oder als unabhängige Edge-Speichervorrichtung), und/oder quer über sowohl die Cloud als auch den Netzrand verteilt werden. Zum Beispiel können in einigen Ausführungsformen die Kompressions- und/oder Speicherfunktionalität der Bildspeichervorrichtung 6410 von jeder mobilen Vorrichtung 5420 implementiert werden und/oder innerhalb dieser integriert werden.
-
65 veranschaulicht ein Beispiel 6500 einer Zwischenrahmencodierung für die kontextbewusste Bildkompression. In dem veranschaulichten Beispiel wird ein Slave-Bild 6510 als Zwischenrahmen mit einer Referenz auf ein Master-Bild 6520 komprimiert, um ein komprimiertes Slave-Bild 6530 zu erzeugen.
-
In dem veranschaulichten Beispiel wird das Slave-Bild 6510 zuerst in mehrere Blöcke geteilt, die als Makroblöcke bezeichnet werden können, und jeder Makroblock wird dann unter Verwendung der Zwischenrahmencodierung komprimiert. Der Einfachheit halber zeigt das veranschaulichte Beispiel nur den Zwischenrahmen-Codierungsprozess für einen einzelnen Makroblock 6512 des Slave-Bilds 6510, die übrigen Makroblöcke des Slave-Bilds 6510 können jedoch auf ähnliche Weise codiert werden.
-
Anstatt die Pixelrohwerte des Slave-Makroblocks 6512 zu codieren, beginnt der Zwischenrahmencodierungsprozess für die Slave-Makroblöcke 6512 durch das Identifizieren eines Master-Bilds 6520, das einen ähnlichen übereinstimmenden Makroblock 6522 enthält. In einigen Ausführungsformen kann zum Beispiel ein übereinstimmender Master-Makroblock 6522 in einem entsprechenden Master-Bild 6520 unter Verwendung von Kontextinformationen und/oder Merkmalübereinstimmungsalgorithmen identifiziert werden, wie in dieser gesamten Offenbarung weiter beschrieben.
-
Der Slave-Makroblock 6512 und der entsprechende übereinstimmende Master-Makroblock 6522 können jedoch in verschiedenen Positionen innerhalb ihrer jeweiligen Bildrahmen 6510, 6520 vorhanden sein. Demgemäß können Bewegungsschätzungen vorgenommen werden, um die relative Bewegung und/oder Positionen des Slave-Makroblocks 6512 und des entsprechenden übereinstimmenden Master-Makroblocks 6522 zu identifizieren. In einigen Ausführungsformen kann zum Beispiel ein Bewegungsvektor 6531 generiert werden, der zur Position des übereinstimmenden Master-Makroblocks 6522 in dem Master-Bild 6520 zeigt. Zum Beispiel kann der Bewegungsvektor 6531 an der Position des Slave-Makroblocks 6512 starten und kann an der entsprechenden Position des Master-Makroblocks 6522 enden.
-
Obwohl der Slave-Makroblock 6512 und der übereinstimmende Master-Makroblock 6522 ähnlich sein können, ist es ferner unwahrscheinlich, dass sie eine exakte Übereinstimmung aufweisen. Demgemäß werden die Differenzen zwischen dem Slave-Makroblock 6512 und dem übereinstimmenden Master-Makroblock 6522 berechnet, um einen Prädiktionsfehler 6532 zu erzeugen.
-
Der Slave-Makroblock 6512 kann dann in ein komprimiertes Format codiert werden, das eine Referenz auf das entsprechende Master-Bild 6520, den Bewegungsvektor 6531 und den Prädiktionsfehler 6532 umfassen kann. Die übrigen Makroblöcke des Slave-Bilds 6510 können auf ähnliche Weise codiert werden, um ein komprimiertes Slave-Bild 6530 zu erzeugen.
-
Auf diese Weise kann das komprimierte Slave-Bild 6530 anschließend decodiert werden, um das ursprüngliche Slave-Bild 6510 zu reproduzieren. Zum Beispiel kann für jeden codierten Makroblock in dem komprimierten Slave-Bild 6530 ein Master-Bild 6520 auf der Basis der assoziierten Master-Bildreferenz identifiziert werden, ein entsprechender Makroblock 6522 in dem Master-Bild 6520 kann auf der Basis des assoziierten Bewegungsvektors 6531 identifiziert werden, und die Rohpixel des Slave-Makroblocks 6512 können dann aus dem Master-Makroblock 6522 auf der Basis des assoziierten Prädiktionsfehlers 6532 rückgewonnen werden.
-
Das veranschaulichte Beispiel von 65 dient nur der Veranschaulichung verschiedenster möglicher Implementierungen der Zwischenrahmencodierung für die kontextbewusste Bildkompression. In verschiedenen Ausführungsformen kann zum Beispiel die Zwischenrahmencodierung vorgenommen werden, indem ein Slave-Bild in eine beliebige Anzahl zugrundeliegender Makroblöcke geteilt wird, oder alternativ dazu kann die Zwischenrahmencodierung an einem Slave-Bild als Ganzes vorgenommen werden, unter anderen möglichen Variationen.
-
Privacy/Sicherheit
-
In verteilten visuellen Verarbeitungssystemen ist es wichtig, effektive Privacy- und Sicherheitsstrategien zu implementieren, um sensitive visuelle Daten zugrundeliegender Benutzer oder Subjekte zu schützen (z.B. Bilder oder Video mit Gesichtern von Menschen). Demgemäß kann in einigen Ausführungsformen die in dieser gesamten Offenbarung beschriebene Visual Fog-Architektur unter Verwendung verschiedenster Privacy- und Sicherheitsschutzmaßnahmen implementiert werden.
-
In einigen Ausführungsformen kann zum Beispiel eine Privacy-schützende visuelle Verarbeitung verwendet werden, um Vision-Arbeitslasten quer über verfügbare Fog-Knoten in einer effizienten Weise zu planen oder zu verteilen, während etwaige anwendbare Privacy- und/oder Sicherheitseinschränkungen auch eingehalten werden.
-
Ähnlich kann ein Multi Tier-Speicheransatz verwendet werden, um visuelle Daten an verschiedenen Orten und/oder für eine unterschiedliche Zeitdauer zu speichern, in Abhängigkeit von dem bestimmten Sensitivitätsniveau der Daten. Zum Beispiel kann die Cloud für das langfristige Speichern von weniger sensitiven visuellen Daten oder visuellen Daten einer höheren Ebene oder Metadaten verwendet werden, während Edge-Vorrichtungen (z.B. auf Haus-Gateways) zum Speichern von hochsensitiven visuellen Daten verwendet werden können.
-
Außerdem können bestimmte Vision-Operationen unter Verwendung Privacy-schützender Ansätze implementiert werden. Zum Beispiel können für einige Vision-Anwendungen (z.B. automatisierte demographische Identifikation) die Merkmalextraktion und -erkennung unter Verwendung von Kameras und Sensoren implementiert werden, die Draufsichten anstelle intrusiver Vorderansichten aufnehmen.
-
Als weiteres Beispiel kann die Gateway-Cloud-Authentifizierung verwendet werden, um Gateways und/oder andere Fog-Vorrichtungen zur Cloud unter Verwendung von JSON Web Tokens sicher zu authentifizieren.
-
Als weiteres Beispiel können Geldbörsen oder verteilte Schlüssel, zusammen mit einem MESH- oder GOSSIP-basierten Kommunikationsprotokoll, verwendet werden, um verbesserte und sicherere Schlüsselverwaltungslösungen zu liefern.
-
Stream Multiplexing kann beim Anwendungsschicht-Routing zum Streamen von Medien verwendet werden, zum Beispiel durch das Multiplexen visueller Sensoren über mehrere Kanäle und das Einführen einer Entropie, um die Kanalprädiktion zu erschweren. Zum Beispiel kann zusätzliche Sicherheit bereitgestellt werden, indem eine Entropie und anderes Rauschen (z.B. Chaff-Signale) eingeführt werden, um die Kanalprädiktion zu verkomplizieren, wodurch Versuche böswilliger Personen zunichte gemacht werden, Videoströme aufzugreifen.
-
Als weiteres Beispiel kann eine Self-Sovereign Blockchain verwendet werden, um eine Multi-Tenant-Vorrichtungsidentifikation bereitzustellen. Zum Beispiel kann die Blockchain verwendet werden, um die Orchestrierung und Akzeptanz von Vorrichtungsidentitäten quer über mehrere Visual Fog-Netze handzuhaben (z.B. sogar für Legacy-Systeme), wodurch es den Vorrichtungen gestattet wird, ihre Identität nachzuweisen, ohne auf Dritt- oder zentralisierte Dienste zurückzugreifen. Eine Self-Sovereign Blockchain kann ähnlich für andere Zwecke verwendet werden, wie zur Verwaltung einer Sammlung verteilter Rechenalgorithmen.
-
Als weiteres Beispiel kann eine Blockchain-Lebenszyklusverwaltung (z.B. Verwaltung der Instanziierung und des Lebenszyklus von Blockchains) verwendet werden, um ein zusätzliches Sicherheitsniveau auf Blockchains bereitzustellen, die in einer Visual Fog-Architektur verwendet werden. Zum Beispiel kann die Blockchain-Lebenszyklusverwaltung verwendet werden, um sicherzustellen, dass eine bestimmte Blockchain korrekt implementiert wird und sich wie erwartet verhält.
-
Als weiteres Beispiel kann ein Stakeholder Management verwendet werden, um einen Satz von Protokollen und Rahmen zu liefern, um zu gestatten, dass Eigeninteressen nachgewiesen werden, während gegen Konflikte in gerechter Weise vermittelt wird.
-
40A-C veranschaulichen ein Beispiel einer Ausführungsform eines Privacy-schützenden demographischen Identifikationssystems 4000. Das Identifizieren menschlicher demographischer Attribute (z.B. Alter, Geschlecht, Rasse usw.) kann für verschiedenste Anwendungsfälle und Anwendungen genutzt werden. Beispiele von Anwendungsfällen können Mensch-Computer-Interaktion, Überwachung, Geschäfts- und Verbraucheranalytik usw. umfassen. In den Einzelhandels- und Gesundheitssegmenten wurde zum Beispiel das Definieren einer Zielgruppe und das Entwickeln von Kundenprofilen ein kritischer Faktor für eine erfolgreiche Markenstrategieentwicklung.
-
In einigen Ausführungsformen kann zum Beispiel die Computer Vision- und/oder Gesichtserkennungstechnologie verwendet werden, um menschliche Demographie zu identifizieren. Zum Beispiel könnte die Demographie auf der Basis der frontalen und/oder seitlichen Gesichtsmerkmale identifiziert werden, die unter Verwendung der Computer Vision-Gesichtserkennungstechnologie extrahiert werden. Die Verwendung der frontalen Gesichtserkennungstechnologie in der Öffentlichkeit kann jedoch potentielle Privacy-Bedenken implizieren. Außerdem ist eine demographische Identifikation quer über verschiedene Domänen wesentlich und sollte nicht auf nur frontalbasierte Sensoren und Erkennungstechniken beschränkt sein, insbesondere in der Ära des Internets-der-Dinge (IoT), von der vorhergesagt wird, dass sie über 20 Milliarden verbundene Vorrichtungen bis zum Jahr 2020 bringen wird. Bei einer Beschränkung auf frontalbasierte Sensoren kann es ferner eine Herausforderung sein, ein Demographieidentifikationssystem zu entwickeln, welches das Personenausschlussproblem überwindet, während es auch breite Verarbeitungssichtwinkel liefert.
-
Demgemäß verwendet in der veranschaulichten Ausführungsform von 40A-C das Privacy-schützende demographische Identifikationssystem 4000 einen oder mehrere Draufsicht-Sensoren 4015, um menschliche Demographie zu identifizieren. In einigen Ausführungsformen kann zum Beispiel entweder ein einzelner Sensor 4015 oder können mehrere Sensoren 4015 verwendet werden, um Ansichten von oben nach unten von Menschen aufzunehmen, anstatt der herkömmlichen Frontalansichten. Außerdem kann dann die menschliche Demographie auf der Basis von Merkmalen identifiziert werden, die aus den Ansichten von oben nach unten extrahiert werden, welche von den Sensoren 4015 aufgenommen werden. Auf diese Weise ermöglicht es die Verwendung von Draufsicht-Sensoren 4015, dass menschliche Demographie automatisch identifiziert wird, während die Privacy geschützt wird, wobei breitere Sensorsichtwinkel geliefert werden und die Ausschlussempfindlichkeit reduziert wird.
-
40A veranschaulicht eine Implementierung auf hoher Ebene eines demographischen Identifikationssystems 4000. In der veranschaulichten Ausführungsform umfassen Edge-Vorrichtungen 4010 mehrere Sätze von Draufsicht-Sensoren 4015a-c, die zum Erfassen von Menschen verwendet werden. Zum Beispiel kann jeder Satz von Draufsicht-Sensoren 4015a-c einen oder mehrere Sensoren umfassen, die in der Lage sind, Informationen über ihre umliegende Umgebung aufzunehmen. Die von den Draufsicht-Sensoren 4015a-c aufgenommenen Informationen werden dann im Fog 4020 verarbeitet, um Menschen zu detektieren und ihre Demographie zu identifizieren. Die kontextuellen Informationen, die vom Fog 4020 extrahiert werden (z.B. menschliche Demographie), können dann zur Cloud zur weiteren Analytik übertragen werden, wie Menschen zu profilieren oder Wärmekarten zu generieren. Alternativ dazu oder zusätzlich können bestimmte kontextuelle Informationen aufgrund der Privacy Policies der Benutzer zurückgehalten oder verdunkelt werden, oder, wenn sie beitragen werden, können sie verschlüsselt werden, um unautorisierte Veröffentlichungen zu verhindern. Function Currying kann auch verwendet werden, wo der Analytikalgorithmus verteilt und am Rand oder Endpunkt angewendet wird, und wo ein Analytikergebnis (das mehrere Ergebnisse aggregiert) von der Curry Function ausgegeben wird.
-
40B veranschaulicht ein Beispiel eines Satzes von Draufsicht-Sensor(en) 4015, der mit dem demographischen Identifikationssystem 4000 von 40A assoziiert ist. Wie in dem veranschaulichten Beispiel gezeigt, umfassen die Draufsicht-Sensoren 4015 eine Sammlung eines oder mehrerer Sensoren, die über einem Bereich positioniert sind, der für Menschen 4002 zugänglich ist. In einigen Ausführungsformen könnten zum Beispiel die Draufsicht-Sensoren 4015 an der Decke eines Einzelhandelsgeschäfts nahe beim Eingang montiert sein. Außerdem können die Draufsicht-Sensoren 4015 einen beliebigen Typ und/oder eine Kombination von Sensor(en) umfassen, wie Vision-Kamera, Infrarot-Kamera, Light Detection and Ranging- (LiDAR) Sensor usw. Auf diese Weise können die Draufsicht-Sensoren 4015 verwendet werden, um Draufsicht-Darstellungen von Menschen 4002 aufzunehmen, die unter den Sensoren vorbeigehen. Außerdem, wie mit Bezugnahme auf 40C weiter beschrieben, können die von den Draufsicht-Sensoren 4015 aufgenommenen Draufsicht-Darstellungen dann weiterverarbeitet werden, um die Demographie von Menschen 4002 zu identifizieren, die von den Sensoren aufgenommen werden.
-
40C veranschaulicht ein Beispiel des Demographieidentifikationsprozesses, der vom Fog 4020 in dem demographischen Identifikationssystem 4000 von 40A vorgenommen wird. In dem veranschaulichten Beispiel involviert der Demographieidentifikationsprozess (i) das Trainieren eines Demographieklassifikationsmodells, und (ii) das Identifizieren demographischer Informationen unter Verwendung des trainierten Demographieklassifikationsmodells mit Draufsicht-Sensordaten als Eingang.
-
Der Prozess des Trainierens des Demographieklassifikationsmodells wird von den Blöcken 4021 bis 4024 veranschaulicht. In Block 4021 muss zuerst eine Training-Datenbank von menschlichen Draufsicht-Daten erhalten oder generiert werden. In einigen Ausführungsformen kann die Training-Datenbank Daten umfassen, die von den Draufsicht-Sensoren 4015 aufgenommen werden, wie Kamerabilder, Infrarotbilder, Punktwolken usw. In Block 4022 werden dann Merkmale, die typischerweise für die menschliche Demographie repräsentativ sind, aus der Datenbank unter Verwendung von Merkmalextraktionsmethodologien ausgewählt/trainiert, wie Hauptkomponentenanalyse (PCA), diskrete Cosinustransformationen (DCT), maschinelles Lernen (z.B. Deep Learning unter Verwendung eines neuronalen Netzes) usw. In Block 4023 werden die ausgewählten/ trainierten Merkmale dann als Eingang an einen Prozess geliefert, der verwendet wird, um ein Demographieklassifikationsmodell zu trainieren. In Block 4024 wird das trainierte Demographiemodell dann im Fog 4020 zur nachfolgenden Verwendung während des Demographieidentifikationsprozesses gespeichert, wie im Nachstehenden weiter beschrieben.
-
Der Prozess des Identifizierens menschlicher Demographie wird durch die Blöcke 4025 bis 4029 veranschaulicht. In Block 4025 werden Sensordaten von Edge-Vorrichtungen 4010 unter Verwendung eines oder mehrerer Draufsicht-Sensor(en) 4015 aufgenommen, wie Vision-Kamera, Infrarotkamera, LiDAR Sensor usw. Die Sensorrohdaten (z.B. RGB Bilder, Wärmebilder, Punktwolken) werden dann von dem Edge 4010 zum Fog 4020 übertragen, um eine Daten-Vor-Verarbeitung im Fog 4020 (z.B. im Haus) vorzunehmen, wie Datentransformationen, Entstören usw. In Block 4026 wird dann die Personendetektion an dem vor-verarbeiteten Eingangsstrom vorgenommen. In einigen Ausführungsformen wird der vorverarbeitete Eingangsstrom zum Beispiel analysiert, um zu bestimmen, ob eine Person in den zugrundeliegenden visuellen Daten aufgenommen ist. Als Beispiel können vorverarbeitete Bilddaten von einer Draufsicht-Kamera analysiert werden, um zu bestimmen, ob das Bild eine Person enthält, und wenn dies so ist, kann der Abschnitt des Bilds, der die Person enthält, extrahiert werden. In Block 4027 werden dann Merkmale, die typischerweise für die menschliche Demographie repräsentativ sind, ausgewählt oder aus der detektierten Person unter Verwendung von Merkmalextraktions/maschinellen Lerntechniken extrahiert. In Block 4028 werden dann die extrahierten Merk male von Block 4027 und das vortrainierte Demographiemodell von Block 4024 von einem Demographieklassifizierer verwendet, um die demographischen Attribute der detektierten Person zu klassifizieren. In Block 4029 werden dann demographische Informationen, die mit der detektierten Person assoziiert sind, auf der Basis des Ausgangs des Demographieklassifizierers identifiziert. Privacy-Anforderungen können bewirken 4029, dass Demographieinformationen von 4021 Daten getrennt werden, die Personendaten mit Demographiedaten assoziieren. Ein benutzergesteuerter Privacy-Mechanismus kann die Assoziation oder Verbindung von Personendaten demographischen Daten autorisieren. Das ursprüngliche Bild, das zum Ableiten von Personen daten und demographischen Daten verwendet wird, kann gegen einen weiteren Zugriff derart verborgen werden, dass eine anschließende erneute Ableitung von Privacy-sensitivem Inhalt/Kontext verhindert wird.
-
Die beschriebenen Ausführungsformen der Draufsicht-Demographieidentifikation bieten zahlreiche Vorteile. Als Beispiel ermöglichen es die beschriebenen Ausführungsformen, dass demographische Informationen auf der Basis von Ansichten von oben nach unten von Menschen genau identifiziert werden, die unter Verwendung eines Einzel- oder Mehrfach-Sensoransatzes aufgenommen werden. Verglichen mit einem Frontalansichtansatz liefert eine Perspektive von oben nach unten oder aus der Luft einen breiteren Sichtwinkel zur Verarbeitung, reduziert das Problem der Blockierung oder des Ausschlusses von Personen, die von den Sensoren aufgenommen werden, und behält Tiefeninformationen bei, die mit Menschen und Merkmalen assoziiert sind, welchem von dem System aufgenommen und verarbeitet werden. Zusätzlich sind die beschriebenen Ausführungsformen weniger Privacyintrusiv, da sie nur Draufsichten von Menschen anstelle anderer intrusiverer Ansichten, wie Frontalansichten, aufnehmen. Die beschriebenen Ausführungsformen identifizieren auch demographische Informationen auf der Basis permanenter oder anhaltender Anthropometriemerkmale anstelle von Merkmalen, die sich ändern oder variieren können. Im Gegensatz zu bewegungsbasierten Detektionsansätzen sind die beschriebenen Ausführungsformen außerdem betreibbar nur unter Verwendung statischer Ansichten oder Bilder, die keine kontinuierlichen Bildsequenzen oder Videos erfordern. Ferner können die beschriebenen Ausführungsformen für verschiedenste Anwendungsfälle und Anwendungen genutzt werden, einschließlich Einzelhandel, digitaler Überwachung, Smart Buildings und/oder irgendwelcher anderer Anwendungen, die eine menschliche Erfassung, Personenidentifikation, Personenreidentifikation (z.B. Detektieren/Verfolgen/Reindentifizieren von Menschen quer über mehrere überwachte Bereiche) usw. involvieren.
-
53 veranschaulicht ein Flussdiagramm 5300 für ein Beispiel einer Ausführungsform der Privacy-schützenden Demographieidentifikation. In einigen Ausführungsformen kann das Flussdiagramm 5300 zum Beispiel durch das Demographieidentifikationssystem 4000 von 40A-C implementiert werden.
-
Das Flussdiagramm kann in Block 5302 beginnen, indem Sensordaten von einer Draufsicht-Sensorvorrichtung erhalten werden. Eine Draufsicht-Sensorvorrichtung kann zum Beispiel verwendet werden, um Sensordaten aufzunehmen, die mit der Umgebung unter der Draufsicht-Sensorvorrichtung assoziiert sind (z.B. aus einer Perspektive von oben nach unten). In einigen Ausführungsformen kann die Draufsicht-Sensorvorrichtung eine Vielzahl von Sensoren umfassen, einschließlich einer Kamera, eines Infrarotsensors, eines laserbasierten Sensors (z.B. LiDAR) usw.
-
Das Flussdiagramm kann dann zu Block 5304 weitergehen, um eine Vor-Verarbeitung an den Sensordaten vorzunehmen, wie Datentransformationen, Filtern, Rauschreduktion usw. In einigen Ausführungsformen können die Sensorrohdaten zum Beispiel zu einem Prozessor übertragen und/oder von diesem erhalten werden, der verwendet wird, um die Vor-Verarbeitung vorzunehmen. Zum Beispiel kann die Vor-Verarbeitung von einer Edge-Verarbeitungsvorrichtung am oder nahe beim Netzrand (z.B. nahe bei der Draufsicht-Sensorvorrichtung) vorgenommen werden, wie einem standortgebundenen Edge-Gateway.
-
Das Flussdiagramm kann dann zu Block 5306 weitergehen, um eine visuelle Darstellung der Umgebung unter der Draufsicht-Sensorvorrichtung zu generieren. Die visuelle Darstellung kann zum Beispiel unter Verwendung der Sensordaten generiert werden, die von der Draufsicht-Sensorvorrichtung aufgenommen werden (z.B. Kamerabilder, Infrarotbilder, Punktwolken usw.). In einigen Ausführungsformen kann die visuelle Darstellung zum Beispiel eine dreidimensionale (3D) Darstellung oder ein Mapping der Umgebung aus einer Perspektive von oben nach unten sein. Außerdem kann in einigen Ausführungsformen die visuelle Darstellung am oder nahe beim Netzrand (z.B. nahe bei der Draufsicht-Sensorvorrichtung) generiert werden. Zum Beispiel kann in einigen Ausführungsformen eine Edge-Verarbeitungsvorrichtung (z.B. ein standortgebundenes Edge-Gateway) verwendet werden, um die visuelle Darstellung zu generieren.
-
Das Flussdiagramm kann dann zu Block 5308 weitergehen, um zu bestimmen, ob eine Person in der visuellen Darstellung detektiert wird. Wenn eine Person zum Beispiel unter der Draufsicht-Sensorvorrichtung lokalisiert war, als die Sensordaten aufgenommen wurden, kann dann die visuelle Darstellung, die unter Verwendung der Sensordaten generiert wird, eine Darstellung der Person aus einer Perspektive von oben nach unten umfassen. Demgemäß kann die visuelle Darstellung analysiert werden (z.B. unter Verwendung von Bildverarbeitungstechniken), um zu bestimmen, ob sie eine Person enthält. In einigen Ausführungsformen kann die Personendetektion zum Beispiel am oder nahe beim Netzrand (z.B. nahe bei der Draufsicht-Sensorvorrichtung) von einer Edge-Verarbeitungsvorrichtung vorgenommen werden (z.B. einem standortgebundenen Edge-Gateway).
-
Wenn in Block 5308 bestimmt wird, dass eine Person NICHT in der visuellen Darstellung detektiert wird, kann das Flussdiagramm zurück zu Block 5302 gehen, um das Erhalten und Verarbeiten von Sensordaten fortzusetzen, bis eine Person detektiert wird.
-
Wenn in Block 5308 bestimmt wird, dass eine Person in der visuellen Darstellung detektiert wird, kann jedoch die Draufsicht-Darstellung der Person aus der visuellen Darstellung extrahiert werden, und das Flussdiagramm kann dann zu Block 5310 weitergehen, um ein oder mehrere Merkmale zu identifizieren, die mit der Person assoziiert sind. In einigen Ausführungsformen kann die Draufsicht-Darstellung der Person zum Beispiel analysiert werden, um anthropometrische Merkmale zu identifizieren oder zu extrahieren, die mit der Person assoziiert sind (z.B. Merkmale oder Messungen, die mit der Größe und den Proportionen der Person assoziiert sind). Zum Beispiel können in einigen Ausführungsformen die anthropometrischen Merkmale identifiziert werden, indem eine Merkmalextraktion unter Verwendung einer Bildverarbeitungstechnik vorgenommen wird, wie einer diskreten Cosinustransformation (DCT), Hauptkomponentenanalyse (PCA), maschinellen Lerntechnik usw. Außerdem kann in einigen Ausführungsformen die Merkmalidentifikation oder -extraktion am oder nahe beim Netzrand (z.B. nahe bei der Draufsicht-Sensorvorrichtung) von einer Edge-Verarbeitungsvorrichtung (z.B. einem standortgebundenen Edge-Gateway) vorgenommen werden.
-
Das Flussdiagramm kann dann zu Block 5312 weitergehen, um demographische Informationen, die mit der Person assoziiert sind (z.B. Alter, Geschlecht, Rasse), auf der Basis der identifizierten Merkmale zu identifizieren. In einigen Ausführungsformen kann zum Beispiel ein maschinelles Lernmodul darauf trainiert werden, um demographische Informationen auf der Basis menschlicher anthropometrischer Merkmale zu erkennen. Auf diese Weise kann das maschinelle Lernmodell verwendet werden, um die identifizierten Merkmale der Person zu klassifizieren, um die assoziierten demographischen Informationen zu erkennen.
-
In einigen Ausführungsformen kann die Demographieidentifikation am oder nahe beim Netzrand (z.B. nahe bei der Draufsicht-Sensorvorrichtung) von einer Edge-Verarbeitungsvorrichtung (z.B. einem standortgebundenen Gateway) vorgenommen werden. Außerdem kann in einigen Ausführungsformen die Edge-Verarbeitungsvorrichtung die Demographieinformationen (z.B. unter Verwendung einer Kommunikationsschnittstelle) zu einer Cloud-Verarbeitungsvorrichtung übertragen, um eine weitere Analytik vorzunehmen, wie Generieren einer Wärmekarte oder eines Personenprofils.
-
An diesem Punkt kann das Flussdiagramm vollendet sein. In einigen Ausführungsformen kann das Flussdiagramm jedoch neu starten, und/oder bestimmte Blöcke können wiederholt werden. Zum Beispiel kann in einigen Ausführungsformen das Flussdiagramm in Block 5302 neu starten, um das Erhalten und Verarbeiten von Sensordaten von einer Draufsicht-Sensorvorrichtung fortzusetzen.
-
41-43 veranschaulichen ein Beispiel einer Ausführungsform einer Privacy-schützenden verteilten visuellen Datenverarbeitung.
-
Im Visual Computing sind Multi-Target Multi-Camera Tracking (MTMCT) und Target Reidentification (ReID) einige der häufigsten Arbeitslasten quer über verschiedene Anwendungsfälle. MTMCT involviert das Verfolgen mehrerer Objekte (z.B. durch Extrahieren robuster Merkmale), sogar nachdem das Objekt signifikante Veränderungen im Aussehen eingeht. Zum Beispiel wird im Einzelhandel MTMCT häufig verwendet, um Kunden innerhalb eines Geschäfts zu verfolgen, während ReID verwendet werden kann, um robuste Merkmale von Kunden zu extrahieren und zusammenzufassen, so dass sie später erneut identifiziert werden können (z.B. unter Verwendung von MTMCT) unter verschiedenen Umständen, wie wenn ein Kunde eine signifikante Änderung im Aussehen aufweist oder ein anderes Geschäft besucht.
-
Derzeit gibt es keine kohärenten End-to-End- (E2E) Lösungen zum Vornehmen von MTMCT und ReID, die auf Visual Computing-Systeme im großen Maßstab skalierbar sind (z.B. mit zehntausenden oder mehr Kamera-Streams). Insbesondere wird es durch Bandbreiteneinschränkungen zur Herausforderung, ein solches System in einem herkömmlichen Cloud Computing-Paradigma bereitzustellen, wo Kameras kontinuierliche Videostreams zur Cloud zur Verarbeitung senden. Zum Beispiel ist es aufgrund des großen Volumens von Videodaten, die von solchen Systemen generiert werden, nicht durchführbar, alle diese Daten zur Cloud zur Verarbeitung zu schleusen. Andererseits ist es unwahrscheinlich, dass Edge-Vorrichtungen nahe bei der Quelle der Videodaten in der Lage sind, eine komplette visuelle Verarbeitungsarbeitslast in Echtzeit zu verarbeiten.
-
Außerdem ist auch die Privacy eine Herausforderung beim Ausskalieren eines solchen Systems. Um die Kunden-Privacy zu schützen, werden es viele Einzelhändler zum Beispiel nicht gestatten, dass irgendwelches Video oder Bild aus ihren Geschäften übertragen werden, oder sie können Originalbilder von Kunden aufgeben und nur unkorrelierte Demographie oder Personendaten behalten. In einigen Fällen kann das Einverständnis von Kunden erforderlich sein, bevor ein Geschäft autorisiert ist, spezifische Kundendaten mit seiner assoziierten Demographie zu assoziieren.
-
Demgemäß veranschaulichten 41 bis 43 eine Ausführungsform, die das Problem des Auskalierens von Visual Computing-Systemen mit MTMCT und ReID Fähigkeiten in einer Privacy-schützenden Weise löst. Die veranschaulichte Ausführungsform umfasst eine Edge-to-Edge- (E2E) Architektur zum Vornehmen von MTMCT und ReID quer über Edge-Vorrichtungen, Gateways und die Cloud. Die Architektur ist skalierbar und schützt die Privacy, und kann leicht in vielen vertikalen Anwendungen oder Anwendungsfällen generalisiert werden, wie Einsichten über das Kaufverhalten im Einzelhandel, das Suchen nach Personen zur digitalen Sicherheit und Überwachung, das Verfolgen von Spielern und Wiederholungen im Sport usw.
-
In einigen Ausführungsformen können zum Beispiel Vision-Arbeitslasten geplant und quer über Visual Fog-Knoten auf der Basis spezifizierter Privacy-Einschränkungen ausgeführt werden. Als Beispiel können Privacy-Einschränkungen für eine MTMCT und/oder ReID Arbeitslast Aufgaben erfordern, die Bilder mit Gesichtern ausgeben, um am Standort zu bleiben (z.B. werden die Aufgaben noch ihre Ausgabe werden jenseits des Standorts oder zur Cloud zugewiesen oder übertragen), um anonymisiert zu werden (z.B. Unkenntlichmachung des Gesichts), und/oder um nur auf Vorrichtungen mit verstärkter Verbindungssicherheit verwendet zu werden.
-
In einigen Ausführungsform können zum Beispiel, anstatt der Weiterleitung jedes Bits visueller Daten an die Cloud zur Verarbeitung, intelligente Entscheidungen in Bezug darauf getroffen werden, wie visuelle Daten und Arbeitslasten quer über ein Visual Computing-System verarbeitet und verteilt werden. Auf der Basis der Privacy-Anforderungen einer bestimmten visuellen Anwendung kann zum Beispiel eine Privacy-Grenze innerhalb des End-to-End-Paradigmas eines Visual Computing-Systems definiert werden, um eine Leistungseffizienz zu erzielen, während auch die Privacy geschützt wird.
-
In einigen Ausführungsformen kann zum Beispiel eine Jobteilung verwendet werden, um eine visuelle Analytikarbeitslast in einen gerichteten azyklischen Graphen (DAG) mit Vertices zu teilen, die Primitive Visual Operations und Edges darstellen, welche ihre Abhängigkeiten zeigen. Auf diese Weise kann der Graph verwendet werden, um die verschiedenen Aufgaben und assoziierten Abhängigkeiten für eine bestimmte Arbeitslast darzustellen. Außerdem kann eine Privacy Policy getrennt für jede Abhängigkeit definiert werden. Ähnlich kann ein Vorrichtungskonnektivitätsgraph verwendet werden, um die verschiedenen Vorrichtungen und ihre Konnektivität in dem Edge-to-Cloud-Paradigma darzustellen, und ein Privacy Level Agreement (PLA) kann für jeden Konnektivitäts-Edge in dem Graphen festgelegt werden. Auf diese Weise kann die Edge-to-Cloud-Architektur implementiert werden, um eine kohärente Verwaltungsschnittstelle aufzuweisen, die eine End-to-End-Arbeitslastverteilung ohne Beeinträchtigung der Privacy vornimmt. Zum Beispiel wird unter Verwendung des oben beschriebenen Jobteilungsansatzes die Arbeitslastverteilung effektiv ein Mapping-Problem der Zuweisung von Aufgaben einer Arbeitslast zu Vorrichtungen in dem Edge-to-Cloud-Paradigma. In einigen Ausführungsformen kann zum Beispiel ein globaler Scheduler verwendet werden, um ein optimales Mapping zwischen Aufgaben und Vorrichtungen zu bestimmen, um die Leistung zu maximieren, während Privacy-Einschränkungen geschützt werden.
-
In einigen Fällen kann ein PLA ähnlicher einem SLA Agreement sein, das die Privacy-Profile eines Benutzers und die Bereitschaft seitens des Geschäfts berücksichtigt, eine Privacy-schützende Funktionalität bereitzustellen. Visual Fog-Vorrichtungen, Sensoren und Gateways können ferner eine PLA Policy unter Verwendung härterer Mechanismen implementieren, wobei eine Trusted Execution Environment (TEE), wie Intel SGX oder ARM TrustZone, eine manipulationssichere Umgebung erstellt, welche die PLA Policy durchsetzt.
-
41 veranschaulicht ein Beispiel eines visuellen Arbeitslastgraphen 4100 zum Vornehmen von MTMCT und ReID. Das Beispiel der Arbeitslast 4100 umfasst eine Vielzahl von Aufgaben, einschließlich Vor-Verarbeitung 4102, Detektion 4104, Verfolgung 4106, Übereinstimmung 4108 und Datenbankzugriff 4110. Ferner werden die Abhängigkeiten zwischen diese verschiedenen Aufgaben mit den durchgehenden und gestrichelten Linien in dem veranschaulichten Beispiel dargestellt. Außerdem repräsentieren die durchgehenden Linien einen uneingeschränkten Zugriff oder eine Übertragung der ursprünglichen visuellen Daten, während die gestrichelten Linien einen eingeschränkten oder Privacy-schützenden Zugriff oder eine Übertragung repräsentieren (z.B. Übertragung nur von visuellen Metadaten, wie Merkmalvektoren) . Auf diese Weise kann eine Privacy Policy für die Arbeitslast definiert werden, indem zum Beispiel spezifiziert wird, ob jede Aufgabe uneingeschränkten oder eingeschränkten Zugriff auf die ursprünglichen visuellen Daten hat.
-
42 veranschaulicht ein Beispiel eines Edge-to-Cloud-Vorrichtungskonnektivitätsgraphen 4200. In dem veranschaulichten Beispiel veranschaulicht der Graph 4200 die Konnektivität zwischen verschiedenen Vorrichtungen eines 3-Tier-Edge-to-Cloud-Netzes, das Kameras 4210a-c, Gateways 4220a-b und die Cloud 4230 umfasst. Insbesondere wird die Vorrichtungskonnektivität sowohl für Edge-to-Cloud-Kommunikationen (z.B. Kamera zu Gateway zu Cloud) als auch Peer-to-Peer-Kommunikationen (z.B. Gateway-zu-Gateway) dargestellt. Außerdem wird die Konnektivität zwischen den jeweiligen Vorrichtungen unter Verwendung durchgehender und gestrichelter Linien dargestellt. Die durchgehenden Linien repräsentieren zum Beispiel Hochsicherheits-Konnektivitätsverbindungen, während die gestrichelten Linien Konnektivitätsverbindungen mit eingeschränkter Sicherheit repräsentieren. Auf diese Weise kann eine Privacy Policy oder ein Privacy Level Agreement (PLA) für ein Edge-to-Cloud-Paradigma definiert werden, indem zum Beispiel die erforderliche Sicherheit für jeden Konnektivitäts-Edge in dem Graphen spezifiziert wird.
-
43 veranschaulicht eine Privacy-schützende Arbeitslastbereitstellung 4300. Insbesondere veranschaulicht die Arbeitslastbereitstellung 4300 ein Beispiel einer Bereitstellung der Arbeitslast 4100 von FIGUT 41 in dem Edge-to-Cloud-Netz 4200 von 42.
-
In dem veranschaulichten Beispiel wird die Privacy als explizite Einschränkung behandelt, wenn ein Aufgabezu-Vorrichtung-Mapping vorgenommen wird, um die Arbeitslast bereitzustellen. In einigen Ausführungsformen können Arbeitslasten zum Beispiel in linearen Formen repräsentiert werden, um zu ermöglichen, dass das Mapping-Problem unter Verwendung ganzzahliger linearer Programmierungs- (ILP) Solver des Standes der Technik effizient gelöst wird.
-
In einigen Ausführungsformen können zum Beispiel, wenn eine bestimmte Arbeitslast in einem Edge-to-Cloud-Netz geplant wird, die Arbeitslast und das Edge-to-Cloud-Netz jeweils unter Verwendung eines Graphen dargestellt werden, wie eines gerichteten azyklischen Graphen (DAG). Zum Beispiel können die Arbeitslast und ihre zugrundeliegenden Aufgabe durch einen Arbeitslast- oder Aufgaben-abhängigen Graphen GT = (VT, ET), wobei jeder Vertex v ∈ VT eine Aufgabe repräsentiert, und jeder Edge (u, v) ∈ ET eine Abhängigkeit zwischen der Aufgabe u und der Aufgabe v repräsentiert. Ähnlich kann das Edge-to-Cloud-Netz durch einen Netz- oder Vorrichtungskonnektivitätsgraphen GD = (VD, ED) dargestellt werden, wobei jeder Vertex v ∈ VD eine Vorrichtung in dem Netz repräsentiert, und jeder Edge (u, v) ∈ ED die Konnektivität von der Vorrichtung u zu der Vorrichtung v repräsentiert.
-
Außerdem kann die Privacy Policy (PP) für jede Aufgabenabhängigkeit in dem Arbeitslastgraphen unter Verwendung einer PP Funktion definiert werden, p: ET → ℕ, so dass gilt: je kleiner die Zahl (ℕ), desto empfindlicher die Datenübertragung. Ähnlich kann das Privacy Level Agreement (PLA) für jede Konnektivitätsverbindung in dem Vorrichtungskonnektivitätsgraphen unter Verwendung einer PLA Funktion definiert werden, s: ED → ℕ, so dass gilt: je kleiner die Zahl (ℕ), desto sicherer die Verbindung.
-
Auf diese Weise kann auf der Basis der Privacy Policy- (PP) und Privacy Level Agreement- (PLA) Funktionen eine Privacy-Einschränkung (PC) definiert werden als s (d) ≤ p€, ∀e ∈ E
T, d ∈ f€, wobei
die Mapping-Funktion von einer bestimmten Arbeitslast auf das Edge-to-Cloud-Paradigma ist. Im Wesentlichen mappt f einen Edge in einem Arbeitslastgraphen auf einen Pfad in einem Edge-to-Cloud-Konnektivitätsgraphen. Zum Beispiel ist im Kontext des Visual Fog Computing eine Planungsfunktion, welche die bestimmten Fog-Vorrichtungen bestimmt, denen die Aufgaben einer Arbeitslast zugewiesen werden sollten, zusammen mit den bestimmten Netzkonnektivitätsverbindungen zwischen Paaren von Fog-Vorrichtungen, die für die Datenübertragungen verwendet werden sollten. Demgemäß erfordert die obige Privacy-Einschränkung (PC), dass das Privacy Level Agreement (PLA) einer bestimmten Konnektivitätsverbindung in der Lage ist, die Privacy Policy (PP) einer bestimmten Datenübertragung aufzunehmen, die über diese Konnektivitätsverbindung gesendet wird. Zum Beispiel kann in einigen Ausführungsformen eine Datenübertragung mit PP Level 1 (uneingeschränkter Zugriff) nur auf eine Verbindung mit PLA Level 1 (hohe Sicherheit) mappen, während eine Datenübertragung mit PP Level 2 (Privacyschützend) auf Konnektivitätsverbindungen mit PLA Level 1 (hohe Sicherheit) und PLA Level 2 (eingeschränkte Sicherheit) mappen kann.
-
Außerdem kann in einigen Ausführungsformen ein Visual Fog-Plan, der die obige Privacy-Einschränkung (PC) einhält, unter Verwendung einer ganzzahligen linearen Programmierung (ILP) bestimmt werden. Die ganzzahlige lineare Programmierung (ILP) ist eine mathematische Optimierungs- oder Durchführbarkeitstechnik zur Lösung oder Optimierung eines mathematischen Modells, das durch lineare Beziehungen repräsentiert wird. Insbesondere kann die ILP verwendet werden, um eine lineare objektive Funktion zu optimieren, die zusätzlichen linearen Gleichheits- und linearen Ungleichheitseinschränkungen unterliegt. In einigen Fällen kann zum Beispiel ein ILP Problem wie folgt ausgedrückt werden:
minimieren: | cTx | (objektiver Term) |
unterliegt: | Ax ≤ b | (Ungleichheitseinschränkung) |
| Cx = d | (Gleichheitseinschränkung) |
und: | x ∈ {0,1}K | (binäre Einschränkung) |
-
Außerdem kann diese ILP Modell verwendet werden, um einen optimalen Plan f zu bestimmen, der ein spezifiziertes Ziel (z.B. totale Netznutzung) erfüllt, während auch andere zusätzliche Einschränkungen, wie eine Privacy-Einschränkung und andere Vorrichtungs-, Netz- oder Mapping-Einschränkungen erfüllt werden. Wenn das obige Beispiel eines ILP Modells zum Beispiel verwendet wird, um eine Visual Fog-Planung vorzunehmen, präsentiert x die Sammlung möglicher Pläne f, K ist die Länge von x, der objektive Term präsentiert ein Planungsziel, das zu minimieren ist (z.B. totale Netznutzung), und die Ungleichheits/Gleichheitseinschränkungen präsentieren beliebige zusätzliche Einschränkungen, wie Vorrichtungs-, Netz, Mapping- und/oder Privacy Einschränkungen. Die obige Privacy-Einschränkung (PC) kann zum Beispiel als Ungleichheitseinschränkung des ILP Problems präsentiert werden.
-
54 veranschaulicht ein Flussdiagramm 5400 für ein Beispiel einer Ausführungsform einer Privacy-schützenden verteilten visuellen Verarbeitung. In einigen Ausführungsformen kann das Flussdiagramm 5400 zum Beispiel unter Verwendung der Visual Computing-Ausführungsformen implementiert werden, die in dieser gesamten Offenbarung beschrieben werden (z.B. der Privacy-schützenden verteilten visuellen Verarbeitungstechniken von 41 bis 43 und/oder der in dieser gesamten Offenbarung beschriebenen Visual Computing-Architektur).
-
Das Flussdiagramm kann in Block 5402 beginnen, indem eine neue Arbeitslast identifiziert wird. In einigen Ausführungsformen kann die neue Arbeitslast zum Beispiel eine Vielzahl von Aufgaben umfassen, die mit der Verarbeitung von Sensordaten assoziiert sind, welche von einem oder mehreren Sensoren aufgenommen wurden. Zum Beispiel können in einigen Ausführungsformen die Sensordaten visuelle Daten sein, die von einem oder mehreren Vision-basierten Sensoren (z.B. einer Kamera, einem Infrarotsensor und/oder einem laserbasierten Sensor) aufgenommen wurden.
-
Das Flussdiagramm kann dann zu Block 5404 weitergehen, um einen Arbeitslastgraphen auf der Basis der Arbeitslast zu generieren, der Arbeitslastgraph kann zum Beispiel Informationen umfassen, die mit den zugrundeliegenden Aufgaben der Arbeitslast assoziiert sind, gemeinsam mit Aufgabenabhängigkeiten unter diesen Aufgaben.
-
Das Flussdiagramm kann dann zu Block 5406 weitergehen, um einen Vorrichtungskonnektivitätsgraphen zu generieren oder zu identifizieren. In einigen Ausführungsformen kann der Vorrichtungskonnektivitätsgraph zum Beispiel Vorrichtungskonnektivitätsinformationen umfassen, die mit einer Vielzahl von Verarbeitungsvorrichtungen assoziiert sind, wie Edge-, Cloud- und/oder Netzzwischenverarbeitungsvorrichtungen. Die Vorrichtungskonnektivitätsinformationen können zum Beispiel Informationen umfassen, die mit den Vorrichtungskonnektivitätsverbindungen unter der Vielzahl von Verarbeitungsvorrichtungen assoziiert sind.
-
Das Flussdiagramm kann dann zu Block 5408 weitergehen, um eine Privacy Policy zu identifizieren, die mit der Arbeitslast und/oder ihren zugrundeliegenden Aufgaben assoziiert ist. In einigen Ausführungsformen kann die Privacy Policy zum Beispiel Privacy-Anforderungen umfassen, die mit den Aufgabenabhängigkeiten unter den Arbeitslastaufgaben assoziiert sind.
-
Das Flussdiagramm kann dann zu Block 5410 weitergehen, um Privacy Level-Informationen zu identifizieren, die mit der Vielzahl von Verarbeitungsvorrichtungen assoziiert sind. In einigen Ausführungsformen können die Privacy Level-Informationen zum Beispiel Privacy Levels umfassen, die von den Vorrichtungskonnektivitätsverbindungen unter der Vielzahl von Verarbeitungsvorrichtungen geliefert werden. Außerdem können in einigen Ausführungsformen die Privacy Level-Informationen von einem Privacy Level Agreement spezifiziert werden.
-
Das Flussdiagramm kann dann zu Block 5412 weitergehen, um eine Privacy-Einschränkung für die Arbeitslastplanung auf der Basis der Privacy Policy und der Privacy Level-Informationen zu identifizieren. In einigen Ausführungsformen kann die Privacy-Einschränkung zum Beispiel erfordern, dass der Privacy Level einer bestimmten Konnektivitätsverbindung in der Lage ist, die Privacy Policy irgendeiner Aufgabenabhängigkeit aufzunehmen, die auf diese Konnektivitätsverbindung zur Datenübertragung gemappt wird.
-
Das Flussdiagramm kann dann zu Block 5414 weitergehen, um einen Arbeitslastplan zu bestimmen. Der Arbeitslastplan kann zum Beispiel ein Mapping der Arbeitslast auf die Vielzahl von Verarbeitungsvorrichtungen umfassen. Außerdem kann in einigen Ausführungsformen der Arbeitslastplan auf der Basis der Privacy-Einschränkung, des Arbeitslastgraphen und des Vorrichtungskonnektivitätsgraphen bestimmen werden. Zum Beispiel kann in einigen Ausführungsformen der Arbeitslastplan durch das Lösen eines ganzzahligen linearen Programmierungsmodells auf der Basis der Privacy-Einschränkung, des Arbeitslastgraphen und des Vorrichtungskonnektivitätsgraphen bestimmen werden (z.B. wie in Verbindung mit 41 bis 43 beschrieben). Auf diese Weise wird ein erhaltener Arbeitslastplan in einer Weise bestimmt, die sich an die Privacy-Einschränkung hält. In einigen Fällen kann die Privacy-Einschränkung eine Dissoziation des erfassten oder abgeleiteten Inhalts (wie von demographischen Daten, Benutzerdaten oder einem anderen Kontext) von dem Arbeitslastgraphen, dem Vorrichtungskonnektivitätsgraphen, dem Arbeitslastplan und/oder einer anderen Komponente der Sensornetzoperation erfordern. Ferner kann der Arbeitslastplan Curry-Funktionen verwenden, wobei eine Privacy-Einschränkung die Planungsfunktion dazu bringen kann, eine Analytikfunktion lokal vorzunehmen (wobei eine Verteilung potentiell Privacy-sensitiver Daten zu einem Aggregations- und Analytikknoten vermieden wird, der unter der Kontrolle einer nicht vertrauenswürdigen Partei sein kann). Außerdem kann in einigen Ausführungsformen ein maschinelles Lernmodell verwendet werden, um die einer Privacy-Einschränkung unterliegende Arbeitslastplanung zu optimieren.
-
In einigen Ausführungsformen kann der erhaltene Arbeitslastplan dann zu der Vielzahl von Verarbeitungsvorrichtungen (z.B. über eine Kommunikationsschnittstelle) verteilt werden, um die Arbeitslast auszuführen.
-
An diesem Punkt kann das Flussdiagramm vollendet sein. In einigen Ausführungsformen kann das Flussdiagramm jedoch neu starten, und/oder bestimmte Blöcke können wiederholt werden. Zum Beispiel kann in einigen Ausführungsform das Flussdiagramm bei Block 5402 neu starten, um das Planen neuer Arbeitslasten fortzusetzen.
-
44 bis 46 veranschaulichen Beispiele von Ausführungsformen einer Self-Sovereign-Vorrichtungsidentifikation für verteilte Rechennetze. In einigen Ausführungsformen kann zum Beispiel ein Fog-Knoten (z.B. IoT Sensor, Betätiger, Kamera, Steuereinheit, Gateway und/oder irgendein anderer Typ eines Fog-Knotens) ein „Multi-Tenant“-Knoten sein, der in der Lage ist, an mehreren verschiedenen verteilten Rechennetzen (z.B. Visual Fog-Netzen) teilzunehmen. In einigen Ausführungsformen kann die Multi-Tenant-Verarbeitung die Verwendung einer Tenant-Isoliertechnologie involvieren, wie Trusted Execution Environment (TEE) (z.B. Intex SGX oder ARM TrustZone). zusätzlich kann eine Tenant-Isolierung unter Verwendung von dem Betriebssystem auferlegten Ressourceneinschränkungen, Namensraumeinschräniungen und/oder Prozesszugriffssteuerungen, die ansonsten als „Container“ bekannt sind, erzielt werden. Die Tenant-Isolierung kann ferner unter Verwendung einer Virtualisierung erzielt werden, wobei eine erste VM einen ersten Tenant von einem zweiten Tenant einer zweiten VM isoliert.
-
Ferner können bestimmte Netze erfordern, dass ein neuer Fog-Knoten „an Bord gebracht“ oder „kommissioniert“ wird, bevor es dem Fog-Knoten gestattet wird, auf jedes Netz zuzugreifen (zum Beispiel unter Verwendung der Onboarding/Kommissionierungsprotokolle der Open Connectivity Foundation (OCF) und/oder der Intel Secure Device Onboard (SDO) Technologie). Viele Visual Computing-Lösungen können jedoch annehmen, dass das Eigentum eines Knotens singulär ist, was bedeutet, dass jeder Knoten nur einen Eigentümer hat. Demgemäß kann es zu Eigentumskonflikten aus der Teilnahme eines Multi-Tenant-Fog-Knotens an mehreren Fog-Netzen kommen. Der tatsächliche oder ursprüngliche Eigentümer eines Multi-Tenant-Fog-Knotens hat jedoch ein Interesse an der Vermeidung dieser Eigentumskonflikte. Demgemäß sind viele Visual Computing-Lösungen für Multi-Tenant-Fog-Knoten ungeeignet, die an mehreren Fog-Netzen teilnehmen können, während sie auch die Onboarding/Kommissionierungsprotokolle (z.B. wie von OCF oder Intel SDO definiert) befolgen.
-
Demgemäß kann in den veranschaulichten Ausführungsformen ein Multi-Tenant-Fog-Knoten eine Self-Soverein-Vorrichtungsidentität verwenden, um es dem Knoteneigentümer zu gestatten, eine Bestätigung des Eigentums zu behalten, auch wenn der Fog-Knoten an anderen Fog-Netzen teilnimmt oder zu diesen weitergeht. In einigen Ausführungsformen kann zum Beispiel eine Self-Sovereign Identity Blockchain verwendet werden, um die Identitäten von Fog-Knoten oder -Vorrichtungen zu registrieren. Eine Blockchain kann zum Beispiel eine dynamische Liste von Datensätzen oder Blöcken sein, die unter Verwendung kryptographischer Ansätze verbunden und/oder gesichert sind. In einigen Ausführungsformen kann zum Beispiel jeder Block in einer Blockchain einen Hash-Zeiger, der mit einem vorhergehenden Block verbunden ist, einen Zeitstempel, Transaktionsdaten usw. umfassen. Demgemäß kann in einigen Ausführungsformen eine Blockchain als verteilter Ledger zur Aufzeichnung von Transaktionen in einer effizienten, verifizierbaren und/oder permanenten Weise verwendet werden. Beim Visual Computing kann, zum Beispiel bevor ein Vorrichtungsidentifikator für einen neuen Fog-Knoten hinzugefügt wird, eine Blockchain gegebenenfalls verwendet werden, um zu verifizieren, dass der Identifikator nicht zuvor von einem anderen Knoten bestätigt wurde. Ferner kann auch der öffentliche Schlüssel, der verwendet wird, um die Vorrichtungsidentität des Fog-Knotens zu verifizieren, zur Blockchain beigetragen werden, wodurch es der Vorrichtung gestattet wird, später zu beweisen, dass die der rechtmäßige Eigentümer ihrer Identität ist.
-
44 veranschaulicht ein Beispiel einer Ausführungsform einer verteilten Rechenarchitektur 4400 mit einer Multi-Tenant-Vorrichtungsidentifikation. In der veranschaulichten Ausführungsform umfasst die Architektur 4400 Fog-Netze A und B 4410a-b, eine Self-Sovereign Identity Blockchain und eine neue Fog-Vorrichtung 4430, wie im Nachstehenden weiter beschrieben.
-
Eine neue Fog-Vorrichtung 4430, die in mehreren Fog-Netzen 4410 verwendet werden möchte, jedoch für kein bestimmtes Fog-Netz exklusiv ist, kann nicht ausreichende Ressourcen oder Fähigkeiten haben, um visuelle Sandbox-Umgebungen für jedes der Fog-Netze zu erzeugen und aufrechtzuerhalten. Außerdem kann jedes Fog-Netze 4410 einen großen Satz seiner eigenen lokalen Fog-Vorrichtung aufweisen, die für dieses Netz exklusiv sind und nicht zu anderen Fog-Netzen weitergehen müssen. Demgemäß kann die erneute Verwendung von Vorrichtungsidentifikatoren kein signifikantes Problem duplikativer Identifikatoren stellen, bis eine neue Vorrichtung 4430 mit einer Konfliktidentität in ein bestimmtes Fog-Netz weitergeht.
-
Häufig sind Kosten mit der Änderung der Identität einer Vorrichtung verbunden, als Anmeldedaten können jedoch Zugangstoken und Anwendungslogik mit der Vorrichtungsidentität verbunden werden. Außerdem haben die jeweiligen Eigentümer von Vorrichtungen mit Konfliktidentifikatoren ein Eigeninteresse an der Lösung des Konflikts (z.B. um Eigentumskonflikte zu vermeiden), jedoch ohne die Kosten zu tragen. Zum Beispiel können die Konfliktvorrichtungen einander jeweils als „fremd“ ansehen, und somit kann jede Vorrichtung wünschen, dass die andere „fremde“ Vorrichtung die Kosten einer Identitätsänderung trägt. Demgemäß kann zur Lösung der entgegengesetzten Eigeninteressen von Vorrichtungen mit Konfliktidentitäten eine Blockchain 4420 verwendet werden, um einen fairen Algorithmus zu liefern, der eine Vorrichtung für ihre Verwendung einer Identität präferiert. In einigen Ausführungsformen wird der Vorrichtung, die zuerst eine bestimmte Identität in der Blockchain 4420 registriert hat, im Fall eines Konflikts der Vorzug gegeben.
-
45 veranschaulicht ein Beispiel eines Aufrufflusses 4500 zum Vornehmen einer Namensregistrierung einer Self-Sovereign-Vorrichtungsidentität. In einigen Ausführungsformen kann die Registrierung einer Self-Sovereign-Vorrichtungsidentität zum Beispiel vor dem Onboarding einer neuen Fog-Vorrichtung auf ein Visual Fog-Netz vorgenommen werden. Zum Beispiel kann eine Fog-Vorrichtung vor dem Onboarding auf ein Visual Fog-Netz ihre Wahl der Vorrichtungsidentität in einer Blockchain registrieren.
-
Außerdem kann die Blockchain eine Strategie zum Verhindern duplikativer Identitätsregistrierungen haben, indem zum Beispiel zuerst auf Duplikate geprüft wird, und eine Registrierung nur gestattet wird, wenn keine Duplikate vorliegen. Zum Beispiel kann eine duplikative Identitätsdetektion von Blockchain-Verarbeitungsknoten als Anforderung zur Überprüfung von Transaktionsblöcken vorgenommen werden, die für eine Identitätsregistrierung verwendet werden. In dem veranschaulichten Aufruffluss 4500 nimmt zum Beispiel jeder Knoten die folgenden Schritte vor:
- (1) Transaktionsanforderung von neuer Vorrichtung empfangen: TXn+1 = {S1, „A71C3“), wobei S1 = Sign_Kalice(„A71C3“);
- (2) Hash H1 berechnen = SHA256(„A71C3“);
- (3) Hash-Baum von Transaktionsattributen durchsuchen, wobei Bx-poss = Search (TxTree, H1);
- (4) IF Bx-poss = „H1“ THEN ERROR_DUP_FOUND zurückführen;
- (5) ELSE IF Bx-poss = ““ THEN TXn-1 zu aktuellem Block hinzufügen, wobei CurrentBlock = [TXn+1, TXn, TXn-1, ..., TXn-m];
- (6) neuen aktuellen Block berechnen Hash BH = SHA256 ([TXn+1, TXn, TXn-1, ..., TXn-m]);
- (7) BH in die Blockchain schreiben bei Bcurr-pos (aktuelle Position); und
- (8) das Tupel (H1, BH, Bx-pos) in TxTree einsetzen.
-
In einigen Ausführungsformen kann jedoch eine weniger restriktive Strategie verwendet werden, wie eine Strategie, die während der Identitäts- oder Namensregistrierung nicht auf Duplikate prüft und stattdessen auf die Konfliktlösung zur Lösung duplikativer Identitäten zurückgreift. Zum Beispiel kann zu der Zeit, wenn eine Vorrichtung an Bord eines neuen Fog-Netzes genommen wird, die Blockchain befragt werden, um zu bestimmen, ob der Identifikator zuvor verwendet wurde, und wenn dies so ist, kann eine Konfliktlösung vorgenommen werden. Die Vorteile einer weniger restriktiven Strategie umfassen eine verbesserte Leistung und die Fähigkeit, Massenregistrierungsarbeitslasten zu unterstützen, unter anderen Beispielen.
-
46 veranschaulicht ein Beispiel eines Aufrufflusses 4600 zur Konfliktlösung von Self-Sovereign-Vorrichtungsidentitäten. In einigen Fällen kann es zum Beispiel unnötig sein zu verifizieren, dass ein neuer Vorrichtungsidentifikator global einzigartig ist zur Zeit der Registrierung, und stattdessen können Konfliktidentitäten adressiert Verwendung, wenn eine neue Vorrichtung an Bord eines lokales Fog-Netzes genommen wird und eine bestehende Vorrichtung bereits dieselbe Identität hat. Zum Beispiel können Privacy-Ziele unter Verwendung nicht globaler Identifikatoren und durch das Umschalten von Identifikationen erreicht werden, wenn Interaktionen eine Einheit aus einem fremden Netz involvieren. Das Erreichen von Privacy-Zielen kann zu häufigeren Vorrichtungs-ID-Kollisionen führen, die dynamisch aufgelöst werden (anstelle einer Strategie, die involviert, dass Hersteller global einzigartige IDs liefern, die anschließend verwendet werden können, um einen diversen Satz von Transaktionen kreuzzukorrelieren, die auf mehreren Netzen auftreten und mehrere Eigentümer und Benutzer involvieren).
-
Demgemäß können in einigen Ausführungsformen Konfliktvorrichtungsidentitäten in einem bestimmten Fog-Netz unter Verwendung des Konfliktlösungs-Aufrufflusses 4600 aufgelöst werden. In dem veranschaulichten Aufruffluss 4600 wird zum Beispiel eine Blockchain verwendet, um Konflikte auf der Basis der Identitätsregistrierungspriorität aufzulösen (z.B. erhält die erste Vorrichtung, die eine duplikative Identität in der Blockchain registriert hat, den Vorzug) . Demgemäß erfordert dieser Ansatz nicht, dass Vorrichtungsidentifikatoren global einzigartig sind, sondern falls mehrere Vorrichtungen in demselben Fog-Netz dieselbe Identität aufweisen, erfordert er, dass eine der Vorrichtungen einen anderen Identifikator auswählt, wenn sie mit diesem bestimmten Netz interagiert. Außerdem wird der Konflikt darüber, welche Vorrichtung die Kosten der Änderung ihrer Identität tragen sollte, unter Verwendung der Blockchain aufgelöst. Zum Vergleich veranschaulicht 47 ein Beispiel eines Vorrichtungs-Onboardings oder -Kommissionierens in einem Visual Fog-Netz ohne die Verwendung einer Konfliktlösung.
-
Auf diese Weise kann auf der Basis der veranschaulichten Ausführungsformen von 44 bis 46 die Vorrichtungsidentitätsbestätigung zu irgendeiner Zeit während der Herstellung einer Vorrichtung vorgenommen werden, wie eines System-on-Chip (SoC) oder irgendeines anderen Typs eines Rechenchips, einer Schaltung oder einer Vorrichtung. Anstatt einer Bestätigung des Vorrichtungs„eigentums“, involviert die Vorrichtungsidentitätsbestätigung außerdem eine Bestätigung des Vorrichtungseigentums, wobei die Vorrichtung die Eigentümerin der Identität ist. Demgemäß kann eine beliebige geeignete Einheit innerhalb der Lieferkette einer bestimmten Vorrichtung (z.B. ein Originaldesign-Hersteller (ODM), ein Originalausrüstungs-Hersteller (OEM), Vertriebspartner, Einzelhändler, Mehrwert-Wiederverkäufer (VAR), Installierer oder Endverbraucher) die Identität einer Vorrichtung auf der Basis des Entwicklungsstands und der Fähigkeit der bestimmten Einheit bestätigen.
-
48 und 49 veranschaulichen Beispiele von Ausführungsformen der Algorithmenidentifikation für Distributed Computing unter Verwendung einer Self-Sovereign Blockchain.
-
Die Distributed Computing-Interoperabilität ist von der Vereinbarung unter teilnehmenden Knoten in Bezug auf die bestimmten Algorithmen abhängig, die verwendet werden, um Informationen an jedem Knoten zu verarbeiten. In einigen Fällen kann zum Beispiel eine Algorithmusvereinbarung unter Knoten von einer zentralen Autorität abhängig sein, die ein Register oder eine Datenbank von Algorithmenidentifikatoren verwaltet. Auf diese Weise müssen verteilte Knoten auf das Register zur Auswahl der geeigneten Algorithmen zurückgreifen, ansonsten wird keine Interoperabilität erzielt.
-
Diese Abhängigkeit von zentralen Autoritäten kann jedoch zu Dienstunterbrechungen führen, wie wenn ein Register offline geht, ein Register langsam ist, um die neuen Algorithmusidentifikatoren zu veröffentlichen (z.B. wodurch die Geschwindigkeit verlangsamt wird, mit der neue Algorithmen bereitgestellt werden können), eine zentrale Autorität das Ziel von Politisierungen wird (z.B. Registrierungsanforderungen im Gegenzug für Verarbeitungsgebühren, politische Gefallen und/oder eine andere Form der Manipulation, die nicht mit der Wirtschaftlichkeit der Distributed Computing-Anwendung verbunden sind, zurückgehalten werden), usw. Diese Ansätze sind zum Beispiel häufig hochzentralisiert und können internationale oder staatliche Institutionen involvieren, die dazu neigen, für Politisierungen und/oder staatliche Regelungen empfindlich zu sein (z.B. Netzneutralität). Da eine Vereinbarung darüber, welche Algorithmen zu verwenden sind, für Distributed Computing grundlegend ist, kann außerdem ein zentralisierter Ansatz zur Verwaltung von Algorithmusidentifikatoren einen künstlichen Flaschenhals oder einen Drosselstelle erzeugen, und Einheiten, die Regelungen oder Kontrolle ausüben wollen, können effektiv das zentralisierte Design nutzen, um eine Interoperabilität unter Distributed Computing-Knoten einzuschränken.
-
Demgemäß wird in den veranschaulichten Ausführungsformen von 48 und 49 eine Blockchain verwendet, um eine Sammlung von Distributed Computing-Algorithmen zu registrieren (z.B. unter Verwendung von Self-Sovereign-Algorithmusidentifikatoren). In einigen Ausführungsformen kann die Blockchain zum Beispiel eine Algorithmusregistrierungsanforderung als Blockchain-Transaktion verarbeiten, wobei der Registrant einen einzigartigen Algorithmusidentifikator auswählt und die Algorithmusfunktion spezifiziert. In verschiedenen Ausführungsformen kann die Algorithmusfunktion spezifiziert werden in menschenlesbarer Form (z.B. als natürliche Spracherklärung oder Pseudocode), maschinenlesbarer Form und/oder maschinenausführbarer Form. Außerdem kann als Bedingung oder Voraussetzung für die Akzeptanz der Algorithmusregistrierung der bestimmte Algorithmus verschiedenen Ebenen einer „Zertifizierung“ durch Blockchain-Verarbeitungsknoten unterworfen werden. Auf diese Weise kann ein Algorithmus mit progressiven Bestätigungsebenen akzeptiert werden, ohne den registrierten Algorithmusidentifikator zu verändern.
-
Demgemäß gestatten es die beschriebenen Ausführungsformen jedem, der einen nützlichen Distributed Computing-Algorithmus findet, diesen Algorithmus für eine große Gemeinschaft bekannt und verfügbar zu machen. Es wird zum Beispiel angenommen, dass Blockchain-Netze eine große Anzahl aufweisen und für große Benutzergemeinschaften offen sind. Auf diese Weise können Mitglieder der Gemeinschaft Distributed Computing-Systeme bauen, ohne durch bürokratische Stolpersteine und Überwachung behindert zu werden. Als Ergebnis kann die Zeit zwischen der Algorithmusentwicklung und der praktischen Entwicklung minimiert werden.
-
48 veranschaulicht ein Beispiel einer Ausführungsform einer Distributed Computing-Architektur 4800 mit einer Self-Soverein-Algorithmusidentifikation. In der veranschaulichten Ausführungsform umfasst die Architektur 4800 Fog-Netze A und B 4810a-b, zusammen mit einer Self-Sovereign-Blockchain 4820 zum Registrieren und Identifizieren von Distributed Computing-Algorithmen 4430. In einigen Ausführungsformen könnte die Architektur 4800 zum Beispiel verwendet werden, um Algorithmen zu registrieren und/oder zu identifizieren, die für ein Visual Fog Computing verwendet werden.
-
Wenn als Beispiel ein nützlicher Distributed Computing-Algorithmus 4430 in einem ersten Fog-Netz (z.B. Fog-Netz A 4810a) erfunden, gefunden und/oder verbessert wird, kann das erste Fog-Netz den neuen Algorithmus in einer Self-Sovereign Blockchain 4420 registrieren, die zur Algorithmusidentifikation verwendet wird. Die Blockchain-Verarbeitungsknoten der Blockchain 4420 können dann progressiv den Algorithmus überprüfen, um progressiv stärkere Bestätigungen in Bezug auf seine Legitimität zu liefern (z.B. auf der Basis der Recheneigenschaften und des Ergebnisses des Algorithmus). Außerdem kann ein zweites Fog-Netz (z.B. Fog-Netz B 4810b) anschließend von der Verfügbarkeit des neuen Algorithmus benachrichtigt werden und kann entscheiden, ob der neue Algorithmus adäquat überprüft wurde (z.B. durch Konsultieren des Überprüfungsstatus des Algorithmus in der Blockchain 4420) . Wenn das zweite Fog-Netz mit der Überprüfung des neuen Algorithmus zufrieden ist, kann das zweite Fog-Netz zustimmen, den Algorithmus zu verwenden. Nachdem der Algorithmus adäquat überprüft wurde, können zum Beispiel in einigen Ausführungsformen das erste Fog-Netz und das zweite Fog-Netz vereinbaren zu beginnen, den neuen Algorithmus zu verwenden.
-
In einigen Ausführungsformen kann der Algorithmusregistrierungs- und -überprüfungsprozess involvieren: (1) Registrierung eines Self-Soverein-Algorithmusidentifikators (SSAI); (2) eine Peer-Review einer menschenlesbaren Beschreibung des Algorithmus; (3) eine Maschinenanalyse einer maschinenlesbaren Darstellung des Algorithmus (z.B. Analyse durch einen Logikprozessor, um sichere Verhaltenseigenschaften zu identifizieren), und (4) die Ausführung einer maschinenausführbaren Implementierung des Algorithmus (z.B. Ausführung in einer Sandbox-Umgebung, die verwendet wird, um das erwartete Verhalten zu analysieren). Sobald eine bestimmte Schwelle (z.B. eine Mehrheit) von Blockchain-Verarbeitungsknoten oder Evaluatoren ähnliche Überprüfungsergebnisse erzielen, werden außerdem die Algorithmusidentität und ihre Überprüfungskriterien in einem Block der Blockchain 4420 aufgezeichnet.
-
49 veranschaulicht ein Beispiel eines Aufrufflusses 4900 zur Registrierung eines Distributed Computing-Algorithmus unter Verwendung einer Self-Sovereign Blockchain. In einigen Ausführungsformen kann zum Beispiel ein Algorithmus unter Verwendung einer Self-Sovereign Blockchain registriert werden, um die Verwendung des Algorithmus quer über eine oder mehrere verteilte oder Fog Computing-Umgebungen zu erleichtern. In einigen Fällen kann zum Beispiel eine Distributed Computing-Umgebung als Functions-as-a-Service (FaaS) oder „serverlose“ Funktionen bezeichnet werden, wobei die Rechenumgebung (eine) bestimmte Funktion(en) vornimmt, und wobei der Funktionsname in einer Blockchain registriert wird und von anderen Funktionen disambiguiert wird, so dass alle Rechenknoten in Bezug auf den Funktionsnamen und die Semantik einig werden. Außerdem kann in einigen Ausführungsformen die Blockchain verschiedene Ebenen einer Überprüfung nutzen, um sicherzustellen, dass sich der Algorithmus wie erwartet verhält, und verifizieren, dass der Algorithmusidentifikator nicht bereits verwendet wird.
-
In dem veranschaulichten Aufruffluss nimmt zum Beispiel jeder Blockchain-Verarbeitungsknoten die folgenden Schritte vor:
- (1) Transaktionsanforderung von neuer Vorrichtung empfangen: TXn+1 = {S1, „91E21“), wobei S1 = Sign_Kalice(„91E21“, „menschenlesbare Beschreibung“, „maschinenlesbare Beschreibung“, „maschinenausführbare Implementierung“);
- (2) optionale Algorithmusprüfung (z.B. Peer-Review einer menschenlesbaren Algorithmusbeschreibung, logische Analyse einer maschinenlesbaren Algorithmusbeschreibung/ darstellung, Sandbox-Ausführung einer maschinenausführbaren Algorithmusform) ;
- (3) Hash berechnen H1 = SHA256(„91E21“);
- (4) Hash-Baum von Transaktionsattributen durchsuchen, wobei Bx-poss = Search (TxTree, H1);
- (5) IF Bx-poss = „Hl“ THEN ERROR_DUP_FOUND zurückführen;
- (6) ELSE IF Bx-poss = ““ THEN TXn+1 zum aktuellen Block hinzufügen, wobei CurrentBlock = [TXn+1, TXn, TXn-1, ..., TXn-m];
- (7) neuen aktuellen Block berechnen Hash BH = SHA256([TXn+1, TXn, TXn-1, ..., TXn-m]);
- (8) BH in die Blockchain schreiben bei Bcurr-poss (aktuelle Position); und
- (9) das Tupel (H1, BH, Bx-poss) in TxTree einsetzen.
-
Sobald der Überprüfungsprozess endet, enthält die Blockchain einen überprüften und registrierten Fall des Algorithmus und seines assoziierten Identifikators. Auf diese Weise können Rechenknoten dann beginnen, den Algorithmus zu verwenden (z.B. auf der Basis des Algorithmusidentifikators und gegebenenfalls seiner maschinenlesbaren und/oder maschinenausführbaren Formen).
-
91 veranschaulicht ein Flussdiagramm 9100 für eine Beispiel einer Ausführungsform einer Vorrichtungsidentitäts-Blockchain. In verschiedenen Ausführungsformen kann das Flussdiagramm 9100 zum Beispiel unter Verwendung der Visual Computing-Architektur und -Funktionalität implementiert werden, die in dieser gesamten Offenbarung beschrieben werden.
-
In einigen Ausführungsformen kann eine Vorrichtungsidentitäts-Blockchain zum Beispiel verwendet werden, um Self-Sovereign-Vorrichtungsidentitäten für eine Sammlung von Vorrichtungen zu verwalten, die in der Lage sind, an mehreren Netzen teilzunehmen und/oder über diese zu kommunizieren (z.B. IoT Vorrichtungen, die in der Lage sind, an mehreren IoT Netzen teilzunehmen, Kameras/Sensoren, die in der Lage sind, an mehreren Visual Fog-Netzen teilzunehmen, und/oder irgendein anderer Typ einer Vorrichtung, die in der Lage ist, an mehreren verteilten Rechennetzen teilzunehmen). Außerdem kann in einigen Ausführungsformen die Vorrichtungsidentitäts-Blockchain von einer oder mehreren Blockchain-Verarbeitungsvorrichtungen verwaltet werden. Zum Beispiel kann in einigen Fällen eine Sammlung von Blockchain-Verarbeitungsvorrichtungen eine Vorrichtungsidentitäts-Blockchain in einer verteilten Weise verwalten.
-
Demgemäß kann eine bestimmte Vorrichtung ihre assoziierte Vorrichtungsidentität in der Vorrichtungsidentitäts-Blockchain registrieren, bevor die Vorrichtung einem oder mehreren Distributed Computing-Netzen beitritt. Wenn die Vorrichtung anschließend versucht, an Bord von einem bestimmten Netz(en) zu gehen, kann (können) das (die) Netz(e) auf diese Weise bei der Vorrichtungsidentitäts-Blockchain anfragen, um zu verifizieren, dass die Vorrichtung der echte Eigentümer ihrer behaupteten Vorrichtungsidentität ist.
-
Wenn zum Beispiel eine neue Vorrichtung versucht, an Bord eines bestimmten Netzes zu gehen, kann (können) die Blockchain-Verarbeitungsvorrichtung(en) eine Identitätsnachschlaganforderung von dem Netz empfangen, welche von den Blockchain-Vorrichtungen anfordern kann, eine Transaktion in der Vorrichtungsidentitäts-Blockchain nachzuschlagen oder zu suchen, die mit der von der neuen Vorrichtungen behaupteten Vorrichtungsidentität assoziiert ist. Die entsprechende Vorrichtungsidentitätstransaktion kann dann zum Netz zurück übertragen werden, wodurch es dem Netz gestattet wird zu verifizieren, dass die von der neuen Vorrichtung behauptete Vorrichtungsidentität tatsächlich dieser Vorrichtung gehört oder für diese registriert ist. Während die Vorrichtung versucht, an Bord anderer Netze zu gehen, kann ein ähnlicher Prozess befolgt werden, so dass diese Netze ähnlich bestätigen können, dass die neue Vorrichtung die echte Eigentümerin ihrer behaupteten Identität ist.
-
Das Flussdiagramm beginnt in Block 9102, wo eine Vorrichtungsidentitätstransaktion von einer ersten Vorrichtung empfangen ist. In einigen Ausführungsformen kann die Vorrichtungsidentitätstransaktion zum Beispiel eine Vorrichtungsidentität, eine digitale Signatur und/oder einen öffentlichen Schlüssel, der mit der ersten Vorrichtung assoziiert ist, enthalten und/oder anzeigen.
-
Das Flussdiagramm geht dann zu Block 9104 weiter, wo ein Hash der Vorrichtungsidentität berechnet wird (z.B. unter Verwendung eines Secure Hash Algorithm 2 (SHA-2) oder irgendeines anderen geeigneten Hash-Algorithmus) .
-
Das Flussdiagramm geht dann zu Block 9106 weiter, um auf der Basis des berechneten Hash zu bestimmen, ob die Vorrichtungsidentität bereits in der Vorrichtungsidentitäts-Blockchain registriert ist. In einigen Ausführungsformen kann zum Beispiel ein Hash-Baum, der mit der Vorrichtungsidentitäts-Blockchain assoziiert ist, durchsucht werden, um zu bestimmen, ob die Blockchain eine bestehende Transaktion enthält, die mit dem Hash assoziiert ist.
-
Wenn die Antwort in Block 9106 JA ist, geht das Flussdiagramm dann zu Block 9108 weiter, wo ein Fehler zu der ersten Vorrichtung zurückgeführt/übertragen wird, um anzuzeigen, dass die Vorrichtungsidentität bereits registriert ist.
-
Wenn die Antwort in Block 9106 NEIN ist, geht das Flussdiagramm dann zu Block 9110 weiter, wo die Vorrichtungsidentitätstransaktion zu der Vorrichtungsidentitäts-Blockchain hinzugefügt wird. In einigen Ausführungsformen kann die Vorrichtungsidentitätstransaktion zum Beispiel zu einem aktuellen Block neuerer Transaktionen hinzugefügt werden, die mit der Vorrichtungsidentitäts-Blockchain assoziiert sind. Sobald der aktuelle Block komplett ist, kann der aktuelle Block dann gehasht und in die Vorrichtungsidentitäts-Blockchain geschrieben werden. Sobald die Vorrichtungsidentitätstransaktion zu der Blockchain hinzugefügt wurde, wird auf diese Weise ein Fehler zurückgeführt, wenn andere Vorrichtungen anschließend versuchen, dieselbe Vorrichtungsidentität zu registrieren.
-
An diesem Punkt kann das Flussdiagramm vollendet sein. In einigen Ausführungsformen kann das Flussdiagramm jedoch neu starten, und/oder bestimmte Blöcke können wiederholt werden. Zum Beispiel kann in einigen Ausführungsformen das Flussdiagramm bei Block 9102 neu starten, um die Verarbeitung von Vorrichtungsidentitätstransaktionen fortzusetzen.
-
92 veranschaulicht ein Flussdiagramm 9200 für ein Beispiel einer Ausführungsform einer Blockchain zur Verwaltung von Distributed Computing-Algorithmen. In verschiedenen Ausführungsformen kann das Flussdiagramm 9200 zum Beispiel unter Verwendung der Visual Computing-Architektur und -Funktionalität implementiert werden, die in dieser gesamten Offenbarung beschrieben werden.
-
In einigen Ausführungsformen kann zum Beispiel eine Algorithmus-Blockchain verwendet werden, um die Algorithmen zu verwalten, die von Verarbeitungsvorrichtungen von (einem) Distributed Computing-Netz(en) verwendet werden (z.B. Algorithmen, die von IoT Vorrichtungen in IoT Netz(en) verwendet werden, Algorithmen, die von Kameras/ Sensoren und/oder anderen Verarbeitungsvorrichtungen in Visual Fog-Netz(en), und/oder Algorithmen, die von einem beliebigen anderen Typ einer Vorrichtung für einen beliebigen Typ eines Distributed Computing-Netzes verwendet werden). Außerdem kann in einigen Ausführungsformen die Algorithmus-Blockchain von einer oder mehreren Blockchain-Verarbeitungsvorrichtungen verwaltet werden. Zum Beispiel kann in einigen Fällen eine Sammlung von Blockchain-Verarbeitungsvorrichtungen kollektiv eine Algorithmus-Blockchain in einer verteilten Weise verwalten.
-
Wenn neue Algorithmen für Vorrichtungen von (einem) Distributed Computing-Netz(en) entwickelt werden, können auf diese Weise die Algorithmen der Algorithmus-Blockchain unterzogen werden, geprüft werden und dann zu der Blockchain hinzugefügt werden, nachdem die geeignete Überprüfung vollendet ist. Sobald ein neuer Algorithmus zur Blockchain hinzugefügt wird, kann auf diese Weise dieser Algorithmus dann von Vorrichtungen eines oder mehrerer bestimmter Distributed Computing-Netze verwendet werden.
-
Zum Beispiel kann ein erstes Netz einen neuen Algorithmus der (den) Blockchain-Verarbeitungsvorrichtung(en) vorgelegt werden, und der neue Algorithmus kann anschließend zu der Algorithmus-Blockchain hinzugefügt werden, nachdem die geeignete Überprüfung und/oder Validierung vorgenommen wird). Ein zweites Netz kann dann benachrichtigt werden, dass der neue Algorithmus verfügbar ist, und das zweite Netz kann dann bei der Algorithmus-Blockchain anfragen, um zu verifizieren, dass der neue Algorithmus verfügbar ist und geeignet validiert oder überprüft wurde.
-
Nachdem zum Beispiel das zweite Netz von der Verfügbarkeit des neuen Algorithmus benachrichtigt wird, kann (können) die Blockchain-Verarbeitungsvorrichtung(en) eine Algorithmusnachschlaganforderung von dem zweiten Netz empfangen (z.B. die den Algorithmusidentifikator spezifiziert). Die Blockchain-Verarbeitungsvorrichtung(en) kann (können) dann die Algorithmus-Blockchain durchsuchen, um die Algorithmusregistrierungstransaktion zu identifizieren, die mit dem Algorithmusidentifikator assoziiert ist, und die entsprechende Algorithmusregistrierungstransaktion kann dann zu dem zweiten Netz übertragen werden. Wenn das zweite Netz bestimmt, dass der neue Algorithmus geeignet überprüft wurde (z.B. auf der Basis der Validierungsinformationen, die in der Algorithmusregistrierungstransaktion enthalten sind), können die zugrundeliegenden Vorrichtungen in dem zweiten Netz dann beginnen, den neuen Algorithmus zu verwenden.
-
Das Flussdiagramm beginnt bei Block 9202, wo eine Algorithmusregistrierungstransaktion von einem bestimmten Netz (und/oder von einer Vorrichtung, die mit diesem Netz assoziiert ist) empfangen wird. Die Algorithmusregistrierungstransaktion kann zum Beispiel einen Algorithmusidentifikator, eine Beschreibung eines Algorithmus und/oder eine Darstellung des Algorithmus enthalten (z.B. eine maschinenlesbare und/oder maschinenausführbare Darstellung des Algorithmus).
-
Das Flussdiagramm geht dann zu Block 9204 weiter, wo bestimmte Tests vorgenommen werden, um den Algorithmus zu validieren. Zum Beispiel kann die Darstellung des Algorithmus analysiert werden, um eine oder mehrere Verhaltenseigenschaften zu identifizieren (z.B. um ein Verhalten zu identifizieren, das entweder für sicher oder ansonsten für unsicher/unverlässlich/böswillig gehalten wird). Die Darstellung kann auch ausgeführt werden (z.B. in einer Sandbox), und ihre Ausführung kann überwacht und/oder analysiert werden. In einigen Fällen können diese Validierungstests kollektiv von den Blockchain-Verarbeitungsvorrichtungen vorgenommen werden.
-
Sobald die Blockchain-Vorrichtungen die Überprüfung des Algorithmus beendet haben, geht das Flussdiagramm dann zu Block 9206 weiter, um zu bestimmen, ob der Algorithmus validiert wurde. Wenn die Antwort in Block 9206 NEIN ist, geht das Flussdiagramm dann zu Block 9208 weiter, wo der Algorithmus abgelehnt wird. Wenn die Antwort in Block 9206 JA ist, geht das Flussdiagramm dann zu Block 9210 weiter, wo die Algorithmusregistrierungstransaktion zu der Algorithmus-Blockchain hinzugefügt wird. Eines oder mehrere Netze können dann von der Verfügbarkeit des Algorithmus benachrichtigt werden, und Vorrichtungen auf diesen Netzen können beginnen, den Algorithmus zu verwenden.
-
An diesem Punkt kann das Flussdiagramm vollendet sein. In einigen Ausführungsformen kann das Flussdiagramm jedoch neu starten, und/oder bestimmte Blöcke können wiederholt werden. Zum Beispiel kann in einigen Ausführungsformen das Flussdiagramm bei Block 9202 neu starten, um die Verarbeitung von Algorithmusregistrierungstransaktionen fortzusetzen.
-
Anwendungen
-
Die Visual Fog-Architektur und Ausführungsformen, die in dieser gesamten Offenbarung beschrieben werden, können für verschiedenste Visual Computing-Anwendungen im großen Maßstab und Anwendungsfälle verwendet werden, wie digitale Sicherheit und Überwachung, Geschäftsautomatisierung und -analytik (z.B. Einzelhandel und Unternehmen), Transport (z.B. Verkehrsüberwachung, Navigation, Parken, Infrastrukturplanung, Sicherheit oder Vermisstenmeldungen), Unterricht, Videoübertragung und -wiedergabe, künstliche Intelligenz usw.
-
Als Beispiel könnten die beschriebenen Ausführungsformen verwendet werden, um für Ersthelfer tragbare Kameras zu implementieren, die in der Lage sind, Ereignisse oder Notfallsituationen automatisch zu detektieren und bestimmte Hilfsmaßnahmen vorzunehmen, wie die Benachrichtigung des geeigneten Personals, das Auslösen der Aufzeichnung des Ereignisses durch verbundene oder sich in der Nähe befindende Kameras usw.
-
Als weiteres Beispiel könnten die beschriebenen Ausführungsformen verwendet werden, um ein digitales Überwachungs- und Sicherheits- (DSS) system mit Personensuch- oder Gesichtserkennungsfähigkeiten quer über visuelle Datenströme von mehreren verschieden Kameras, Sensoren und/oder Orten zu implementieren.
-
Als weiteres Beispiel könnten die beschriebenen Ausführungsformen verwendet werden, um ein digitales Überwachungs- und Sicherheits- (DSS) system mit Nummernschild-Identifikations- und Betrugsdetektionsfähigkeiten zu implementieren (z.B. Identifikation eines Autos mit einem Nummernschild, das nicht mit dem entsprechenden Fahrzeugeintrag übereinstimmt, Identifikation mehrerer Autos mit demselben Nummernschild usw.).
-
Als weiteres Beispiel könnten die beschriebenen Ausführungsformen verwendet werden, um das Kaufverhalten und Analytik über Kunden darzustellen (z.B. für Einzelhandelskunden), wie eine Zusammenfassung des Kundenwegs innerhalb des Geschäfts (z.B. eine Liste von Produkten oder Abteilungen, mit denen ein Kunde interagiert hat), eine Zusammenfassung des Kundenwegs zwischen Geschäften (z.B. Identifikation von Wiederholungskunden durch Differenzierung zwischen neuen und wiederkehrenden Kunden, wenn sie ein Geschäft mit einer einzelnen oder mehreren Filialen betreten) usw.
-
Ähnlich könnten die beschriebenen Ausführungsform verwendet werden, um eine Visualisierung für das Kaufverhalten und Analytik über Kunden oder Käufer zu liefern (z.B. Visualisierung einer Graphendarstellung visueller Metadaten über den menschlichen Konsum).
-
Als weiteres Beispiel könnten die beschriebenen Ausführungsform verwendet werden, um eine automatisierte Demographieidentifikation in einer Privacy-schützenden Weise vorzunehmen (z.B. unter Verwendung von Draufsicht-Kameras oder -Sensoren für das demographische Mapping von Geschlecht, Alter, Rasse usw.).
-
Als weiteres Beispiel könnten die beschriebenen Ausführungsform verwendet werden, um ein Wärme-Mapping in Einzelhandelsgeschäften oder anderen standortgebundenen Umgebungen vorzunehmen, um eine Darstellung der Menschenmenge zu generieren (z.B. unter Verwendung von Draufsicht-Sensoren oder -Kameras und/oder eines multimodalen Menschenmengen-Emotionswärme-Mappings). In einigen Ausführungsformen könnte zum Beispiel ein Wärme-Mapping zur Optimierung der Geschäftsgestaltung genutzt werden, unter anderen Beispielen.
-
Als weiteres Beispiel könnten die beschriebenen Ausführungsform verwendet werden, um multimodale Echtzeit-Kundenbewertungen zu implementieren. Zum Beispiel könnten Kundenbewertungen und/oder Kundenzufriedenheitsinformationen in Echtzeit gesammelt und analysiert werden, unter Verwendung von multisensorischen Daten, die in quantitative Kunden-zu-Kunden-Bewertungen für beliebige Produkte oder Aktivitäten innerhalb des Geschäfts einer bestimmten Geschäfts- oder standortgebundenen Umgebung übersetzt werden können.
-
Ähnlich könnten die beschriebenen Ausführungsform verwendet werden, um eine multimodale Einzelhändler-Kunde-Doppelbewertung zu implementieren, die auf der Sammlung und Analyse von sowohl Produktbewertungen von Kunden als auch Kundenbewertungen von Einzelhändlern fokussieren können.
-
Als weiteres Beispiel könnten die beschriebenen Ausführungsformen für die automatisierte Kundenzufriedenheitsanalyse verwendet werden. Zum Beispiel könnten visuelle Daten verwendet werden, um die Kundenzufriedenheit an der Kasse auf der Basis von nicht verbaler Kommunikation oder Körpersprache zu messen. Auf diese Weise kann die Kundenzufriedenheit automatisch abgeleitet werden, ohne dass ein manuelles Kunden-Feedback erforderlich ist (z.B. über einen Knopf oder eine Umfrage).
-
Als weiteres Beispiel könnten die beschriebenen Ausführungsformen verwendet werden, um die Effektivität von Angestellten-Kunden-Interaktionen zu überwachen. Zum Beispiel könnten visuelle Daten verwendet werden, um die Effektivität der Kommunikation zwischen Kunden und Verkaufspersonal in Bezug auf das Finden gewünschte Produkte oder Waren zu messen. In einigen Ausführungsformen könnten zum Beispiel visuelle Daten verwendet werden, um Benutzer innerhalb eines Geschäfts zu verfolgen, den Kunden-Angestellten-Kontakt und Interaktionen zu identifizieren und die Reaktionen des Angestellten und/oder des Kunden zu überwachen.
-
Als weiteres Beispiel könnten die beschriebenen Ausführungsformen verwendet werden, um Umgebungen mit dynamischen Ambiente zu liefern, indem kontextuelle Informationen (z.B. Beziehungen oder Aktionen) innerhalb einer Gruppe von Menschen identifiziert werden. Zum Beispiel könnten visuelle Daten verwendet werden, um Personen und ihre assoziierten kontextuellen Informationen zu identifizieren, um zu bestimmen, ob sie ein Teil derselben Gruppe sind (z.B. auf der Basis physischer Nähe und/oder entsprechender Bewegung), und wenn dies so ist, um verschiedene Parameter oder Charakteristiken der Gruppe zu identifizieren (z.B. eine Familie, die gemeinsam in einem Geschäft einkauft).
-
Als weiteres Beispiel könnten die beschriebenen Ausführungsformen verwendet werden, um eine doppelte Auktion in Echtzeit (RTB) zu implementieren. In einigen Ausführungsformen könnten zum Beispiel visuelle Daten verwendet werden, um eine Echtzeit-Auktion (RTB) für mehrere Käufer und mehrere Bieter bei stationären Einzelhändlern zu implementieren.
-
Als weiteres Beispiel könnten die beschriebenen Ausführungsformen verwendet werden, um Änderungen in der Geschäftsgestaltung auf der Basis von visuellen Daten und/oder Sensoren zu überwachen und zu detektieren.
-
Als weiteres Beispiel könnten die beschriebenen Ausführungsformen für eine Bestandsverfolgung und Logistik durch Roboter verwendet werden (z.B. unter Verwendung stationärer und/oder sich bewegender Kameras, um Warenbestand von Einzelhandelsgeschäften, Lagerhallen, Büros usw. zu verfolgen).
-
Als weiteres Beispiel könnten die beschriebenen Ausführungsformen zur Roboterausrüstungsinspektion verwendet werden (z.B. unter Verwendung der Computer Vision Technologie, um die Sicherheit und Gesundheit von Ausrüstung in einer Fabrik, Anlage, einem Lagerhaus, Geschäft, Büro usw. zu inspizieren).
-
Als weiteres Beispiel könnten die beschriebenen Ausführungsformen verwendet werden, um automatisierte Trinkgeldempfehlungen zu geben, zum Beispiel auf der Basis multisensorischer Eingaben und/oder visueller Daten, die Faktoren reflektieren, welche typischerweise das Trinkgeldverhalten von Kunden beeinflussen.
-
Als weiteres Beispiel könnten die beschriebenen Ausführungsformen für die Arbeitsplatzautomatisierung verwendet werden, wie Arbeitsplatz-Qualitätskontrolle, Mitarbeiterüberwachung usw. In einigen Ausführungsformen könnten visuelle Daten verwendet werden, um die Emotionen der Mitarbeiter zu analysieren, um die Produktivität zu verbessern.
-
Als weiteres Beispiel könnten die beschriebenen Ausführungsformen für den Unterricht und/oder automatisiertes Lernen verwendet werden (z.B. unter Verwendung visueller Daten, um das Schülerverhalten im Klassenzimmer oder zu Hause zu analysieren, um weitere Unterstützung zu liefern, wenn geeignet).
-
Als weiteres Beispiel könnten die beschriebenen Ausführungsformen für eine Videowiedergabe verwendet werden, wie ein benutzerzentriertes Video-Rendering, fokussierte Wiederholungen usw. Zum Beispiel könnte das benutzerzentrierte Video-Rendering verwendet werden, um ein fokussiertes Rendering an einem 360 Grad Video durch die Analyse vorzunehmen, worauf dieser Benutzer fokussiert ist, und um keine oder eine niedrigauflösende Verarbeitung an Abschnitten des Videos vorzunehmen, die außerhalb des Fokusbereichs des Benutzers liegen (z.B. für Virtual Reality (VR) und/oder Augmented Reality (AR) Anwendungen). Als weiteres Beispiel könnten fokussierte Videowiederholungen verwendet werden, um das Rendering einer Videowiederholung automatisch auf einem Bereich von Interesse zu fokussieren, wie den Abschnitt einer Sportwiederholung, wo sich die meisten Spieler befinden.
-
Als weiteres Beispiel könnten die beschriebenen Ausführungsformen verwendet werden, um künstliche Intelligenzsysteme zu trainieren. In einigen Ausführungsformen könnten visuelle Daten zum Beispiel verwendet werden, um automatisch Ground Truth Informationen zu generieren, die verwendet werden können, um künstliche Intelligenz- oder maschinelle Lernmodelle zu trainieren, wie neuronale Deep Learning Netze.
-
Als weiteres Beispiel könnten die beschriebenen Ausführungsformen verwendet werden, um einen Ubiquitous Visual Computing Witness zu implementieren, wie in Verbindung mit 55 bis 61 im Nachstehenden weiter beschrieben.
-
Diese Beispiele dienen nur der Veranschaulichung des grenzenlosen Universums visueller Anwendungen und Anwendungsfälle, die unter Verwendung der in dieser gesamten Offenbarung beschriebenen Visual Fog-Architektur implementiert werden können.
-
Ubiquitous Visual Computing Witness
-
55 bis 56 veranschaulichen ein Beispiel einer Ausführungsform eines Ubiquitous Visual Computing Witness. Ein Ubiquitous Witness behandelt das Problem des Sammelns von Beweisen für Ereignisse, Vorfälle oder Anomalien von Interesse in einer zeitnahen, genauen und umfassenden Weise. Zum Beispiel ist die Polizei eine Regierungsbehörde, die für den Gesetzesvollzug und die öffentliche Sicherheit zuständig ist, was häufig erfordert, dass sie Untersuchungen über kriminelle Aktivitäten, Autounfälle (z.B. zur Identifikation der Ursache) usw. führt. Ähnlich ist eine Nachbarschaftswache eine organisierte Gruppe von Leuten, die für die Überwachung und Prävention von Verbrechen und Vandalismus innerhalb der Nachbarschaft zuständig ist. Diese Typen von Funktionen erfordern oft, dass Beweise von verschiedenen Quellen gesammelt werden, einschließlich Augenzeugen, physischer Umgebungen, elektronischer Quellen (z.B. Überwachungssysteme) usw. Die Hauptprobleme in den im Vorstehenden angeführten Anwendungsfällen liegen in der Tatsache, dass häufig der wichtigste Beweis von Drittpartien stammt. Bei einer Nachbarschaftsüberwachung kann zum Beispiel die Kamera eines Nachbars eine viel klarere Sicht auf einen Vorfall in oder um ein in der Nähe liegendes Haus aufnehmen. Bei Autounfalluntersuchungen kann es sein, dass Beweise von mehreren Quellen gesammelt und kombiniert werden müssen, wie Autos in der Nähe, Straßeninfrastruktur oder Roadside Units (RSU) (z.B. Laternenmaste, Beschilderung, Ampeln) usw. Somit sind eine umfassende Datenaggregation und die Zeitnähe beide für den Prozess der Faktensammlung kritisch.
-
Bestehende Ansätze zur Beweissammlung haben viele Nachteile. Es gibt zum Beispiel keine automatisierten Lösungen zur Beweissammlung. Außerdem können für elektronische Vorrichtungen, die kontinuierlich Daten generieren und/oder streamen (z.B. Sensoren, Kameras), die Datenspeicherungsregelungen aufgrund von Ressourceneinschränkungen eher kurz sein. Zum Beispiel können Daten für Fahrzeugarmaturenbrett/Überwachungskameras aufgrund der begrenzten Speicherkapazität auf einer SD Karte nur für einige Stunden gespeichert werden. Ferner unterliegen manuelle Ansätze zur Beweissammlung häufig verschiedenen Herausforderungen. Insbesondere kann das Eigentum an den Daten zu Problemen führen, insbesondere bei Fehlen einer gemeinsam genutzten Befugnis, die den Zugriff auf die Daten vermittelt.
-
Demgemäß beschreibt diese Offenbarung verschiedene Ausführungsformen eines Ubiquitous Visual Computing Witness. Insbesondere schlägt diese Offenbarung eine neuartige neue Anwendung eines Ubiquitous Witness vor, die unter Verwendung einer Infrastruktur von Visual Fog Computing und Visual Fog Networking für verschiedene Beispiele von Anwendungsfällen implementiert wird. Ferner behandelt der beschriebene Ubiquitous Witness die Herausforderungen, die mit der Datenspeicherung und Datenaggregation in Verbindung mit der Beweissammlung assoziiert sind. Insbesondere liefert der Ubiquitous Witness eine Echtzeit-Datensammlung unter Verwendung von Visual Fog Computing. Wenn zum Beispiel ein interessantes Ereignis z.B. abnormal, unüblich, selten) auftritt, wird ein Schnappschuss lokaler Daten gesperrt (z.B. sicher gespeichert) von der Subjektvorrichtung, die das Ereignis detektiert hat, wodurch verhindert wird, dass die Daten überschrieben werden. Ferner benachrichtigt das Subjekt, welches das Ereignis detektiert hat, andere relevante Subjekte (z.B. in vielen Fällen Subjekte in der Nähe) in Echtzeit, um ihre jeweiligen Gegenstück-Schnappschüsse zu sperren. Ferner kann das Datenspeicherungsproblem unter Verwendung von Quality of Service (QoS) Bezeichnungen behandelt werden, um zu priorisieren, welche Daten zu speichern sind und welche ablaufen (z.B. visuelle Daten gegenüber anderen Datenformen). Ferner können mit Visual Fog Computing die Daten vor-verarbeitet werden, um Bandbreite für den nächsten Schritt der Datenaggregation einzusparen. Insbesondere liefert der Ubiquitous Witness eine automatisierte Datenaggregation unter Verwendung von Visual Fog Networking. Sobald Daten gespeichert wurden und gegebenenfalls von den verschiedenen Subjektvorrichtungen vor-verarbeitet wurden, wird zum Beispiel die Sammlung von Daten und Metadaten, die quer über die jeweiligen Subjektvorrichtungen verteilt sind, unter Verwendung von Visual Fog Networking und/oder Information Centric Networking (ICN) aggregiert, wodurch es ermöglicht wird, die jeweiligen Datenschnappschüsse miteinander zu assoziieren und durch die Vorrichtungen oder Knoten in dem Visual Fog-Paradigma geeignet zu speichern.
-
Auf diese Weise liefert der Ubiquitous Witness verschiedene Vorteile in Verbindung mit der Beweissammlung. Zum Beispiel werden die zentralen oder Schlüsselbeweise, die mit einem Vorfall assoziiert sind, von Datenspeicherungsregelungen nicht behindert, da die relevanten Subjektvor-richtungen in Echtzeit benachrichtigt werden, um ihre jeweiligen Datenschnappschüsse zu sammeln und zu sperren. Als weiteres Beispiel können Information-centric Networking (ICN) und/oder eventbasiertes Daten-Routing genutzt werden, um einen effizienteren Ansatz zum Sammeln, Aggregieren und/oder Routen von Daten zu liefern. In einigen Ausführungsformen können relevante Daten zum Beispiel durch Ort, Zeit, Auslöserereignis, Quelle, Ziel (z.B. die verantwortlichen Behörden) und/oder andere auffallende Attribute geroutet werden, die Schlüsselmerk-male des Ereignisses oder Vorfalls beschreiben.
-
55 veranschaulicht ein Beispiel eines Anwendungsfalls 550 für einen Automotive Ubiquitous Witness. Der veranschaulichte Anwendungsfall 5500 umfasst Edge-Vorrichtungen 5510a-e, Fog-Vorrichtungen 5520a-c und ein Kommunikationsnetz 5530. In dem veranschaulichten Beispiel sind die Edge-Vorrichtungen 5510a-c Autos mit bordeigenen Sensoren und/oder Kameras zum Sammeln von Daten während des Betriebs, während die Fog-Vorrichtungen 5520a-c Ampeln oder andere Roadside Units (RSUs) mit Sensoren und/oder Kameras zur lokalen oder benachbarten Datensammlung sind. Außerdem kann das Kommunikationsnetz 5530 Visual Fog- und/oder Information-centric Networking-Fähigkeiten aufweisen, die verwendet werden können, um die Echtzeit-Sammlung und Aggregation von Daten sowohl von Autos 5510 als auch RSUs 5520 unter Verwendung ereignisbasierter Datenverwaltungs- und -Speicherungstechniken zu erleichtern. Auf diese Weise kann ein Automotive Ubiquitous Witness unter Verwendung einer Kombination von Visual Fog Computing (VCF) und Visual Fog Networking oder Information-centric Networking (ICN) implementiert werden, wie im Nachstehenden in Verbindung mit 56 weiter beschrieben.
-
56 veranschaulicht ein Beispiel eines Datenstroms 5600 für einen Ubiquitous Witness. In einigen Ausführungsformen kann der Datenstrom 5600 zum Beispiel in Verbindung mit dem Beispiel des in 55 veranschaulichten Autofalls vorgenommen werden.
-
Der veranschaulichte Datenstrom beginnt in Block 5602, indem bestimmt wird, ob ein Vorfall detektiert wurde. In verschiedenen Ausführungsformen kann ein Vorfall zum Beispiel durch die Verarbeitung von Sensordaten unter Verwendung eines beliebigen geeigneten Ansatzes detektiert werden, wie Identifizieren unerwarteter oder herausragender Änderungen in den Sensordaten (z.B. Daten von internen Sensoren von Fahrzeugen und/oder anderen Ausrüstungstypen), Vornehmen einer Ereignisdetektion und -erkennung unter Verwendung von Computer Vision- und/oder maschinellen Lerntechniken usw.
-
Sobald ein Vorfall detektiert wurde, wird dies eine lokale Datensammlung durch die Detektionsvorrichtung auslösen (Block 5604), zusammen mit einer Datensammlung in der Nähe durch irgendwelche Umgebungsvorrichtungen (Block 5608), und der Vorfall erhält auch einen Namen (Block 5610).
-
Zum Beispiel nimmt in Block 5604 die Detektionsvorrichtung eine lokale Datensammlung vor, was das Vornehmen lokaler Analytik involvieren kann, um Daten und/oder Metadaten, die mit dem Vorfall assoziiert sind, zu erfassen und/oder zu generieren. Die Metadaten können zum Beispiel umfassen oder auf andere Weise identifizieren: Regionen von Interesse (ROIs), Geolocation-Namen (z.B. Adressen, Städte, Staaten, Postleitzahlen, Landmarken, Länder), Tagging oder Markierungen auf der Szene des Vorfalls, die unter Verwendung von Computer Vision-Techniken abgeleitet werden (z.B. Bildklassifikation oder -segmentierung), Wetter, und/oder beliebige andere kontextuelle oder Umstandsinformationen, die mit dem Vorfall assoziiert sind, unter anderen Beispielen. Ferner können die relevanten Daten mit einer QoS mit hoher Priorität versehen werden, um sicherzustellen, dass die Daten behalten werden.
-
In Block 5606 werden dann Mechanismen verwendet, um Vorrichtungen in der Nähe von dem Vorfall zu benachrichtigen, was es diesen Vorrichtungen ermöglicht, ihre Daten zu sperren sowie irgendwelche anderen Aktionen vorzunehmen, die unter den bestimmten Umständen und/oder für den Anwendungsfall geeignet sein können. Zum Beispiel können im Kontext der Nachbarschaftswache ZigBee und/oder LTE verwendet werden, um Vorrichtungen in der Nähe von einem Vorfall für Datensammlungszwecke zu benachrichtigen, während LTE und/oder dedizierte Kommunikationen mit kurzer Reichweite (DSRC) im Kontext von Autounfällen verwendet werden können. Ungeachtet der zugrundeliegenden drahtlosen Kommunikationsinfrastruktur wird eine Alarmmeldung von der Vorrichtung, die den Vorfall detektiert hat, zu ihren Nachbarn geleitet, um den Prozess des Sperrens der relevanten Daten der umliegenden oder benachbarten Vorrichtungen auszulösen (Block 5608).
-
In Block 5610 erhält der Vorfall dann einen „Namen“ für Identifikations-, Routing- und/oder Vernetzungszwecke. In einigen Ausführungsformen kann der Vorfallname zum Beispiel unter Verwendung einer willkürlichen Kombination von Informationen abgeleitet werden, die mit dem Vorfall assoziiert sind, wie Ort, Zeit, Ereignis, Typ des Vorfalls, Priorität/Wichtigkeit/Todesopfer, Bild/Video, das von dem Ereignis aufgenommen wurde, usw. Auf diese Weise kann die Verkettung dieser deskriptiven Informationen als Ereignisname 5612 dienen, um die zugrundeliegenden Ereignisdaten innerhalb eines Information-centric Network (ICN) anzufordern, wie im Nachstehenden weiter beschrieben.
-
In Block 5818 kann zum Beispiel ein centric Network (ICN) verwendet werden, um die relevanten Daten (z.B. lokalen Vorrichtungsdaten 5614 und/oder umliegenden Vorrichtungsdaten 5615) auf der Basis des Vorfallnamens (z.B. der Attribute, die mit den Daten assoziiert sind) anzufordern, zu routen und zu aggregieren. Auf diese Weise kann das Netz dann Daten, die mit einem bestimmten Vorfall von Interesse assoziiert sind, routen oder nach diesen gefragt werden. Zum Beispiel können Beweise eines Diebstahls bei einer Nachbarschaftswache angefordert werden und anschließend an eine Polizeistation 5822 in der Nähe weitergeleitet werden, während Beweise über Schnellfahren mit dem Auto angefordert werden können und anschließend an die Verkehrsbehörde (DMV) 5824 und/oder eine Versicherungsgesellschaft weitergeleitet werden können.
-
Außerdem können die Daten, die mit einem Vorfall assoziiert sind, auch von bestimmten Netzressourcen 5820 gespeichert werden, um anschließende Fragen in Bezug auf den Vorfall zu beantworten. Zum Beispiel können in Block 5826 Benutzer Beweise anfragen, die mit einem Vorfall assoziiert sind, unter Verwendung der verschiedenen Attribute in dem Vorfallnamen. Zum Beispiel könnte ein Benutzer nur die ungefähre Zeit und den Ort eines Vorfalls für Zwecke der Anfrage beim Netz kennen, und somit kann das Netz die Anfrage an die relevanten Datenspeicher verteilen, und jene mit relevanten Daten können dann antworten.
-
Auf diese Weise kann ein Ubiquitous Witness implementiert werden, indem das Visual Fog Computing genutzt wird, um eine Datenverarbeitung und/oder -VorVerarbeitung an Edge- und/oder Fog-Knoten vorzunehmen, gefolgt von Visual Fog Networking und/oder Information-centric Networking (ICN), um die Beweissammlung für einen Vorfall (z.B. Daten und Metadaten von verschiedenen Quellen) zu assoziieren und/oder zu aggregieren, die Beweise zeitnah an das (die) geeignete(n) Ziel(e) zu routen, und/oder die Beweise in den geeigneten Datenspeichern zu speichern. Ferner kann In einigen Ausführungsformen ein Ubiquitous Witness innerhalb einer Netztopologie implementiert werden, die Router „mit konvergierten Knoten“ nutzt, wie im Nachstehenden in Verbindung mit 62 bis 63 beschrieben.
-
57 bis 60 veranschaulichen Beispiele einer Anomaliedetektion und Ereignisrekonstruktion für einen Ubiquitous Visual Computing Witness. Mit Bezugnahme auf die Autoindustrie werden Fahrzeuge zum Beispiel derzeit mit einem Array von Sensoren ausgestattet, die dafür ausgebildet sind, um eine Vielzahl von Daten (z.B. Geschwindigkeit, Richtung, Treibstoffpegel) zu erfassen und aufzuzeichnen. Diese Sensoren sind häufig intern innerhalb eines Fahrzeugs vorhanden sowie extern an dem Fahrzeug montiert. Extern montierte Sensoren können zum Beispiel visuelle/Audio-Sensoren, wie Kameras, umfassen, die zum Aufzeichnen oder Aufnehmen der Straße, Spurbegrenzungen, umgebunden Fahrzeuge oder Hindernisse usw. verwendet werden. In Bezug auf die anhaltende Entwicklung vernetzter und autonomer Fahrzeuge werden außerdem der Bereich und die Funktionalität solcher Sensoren nur zunehmen. Ähnlich wird auch die Anzahl von Sensoren drastisch zunehmen, die bereitgestellt werden, um die straßenseitige Infrastruktur zu instrumentalisieren. Ein wichtiger Anwendungsfall für dieses enorme Volumen an gesammelten Daten ist die Anomaliedetektion, wie die Detektion eines unüblichen Ereignisses oder Vorfalls, das oder der Fahrzeuge, Menschen und/oder Infrastruktur involviert. Zum Beispiel können nahsensorische Daten assimiliert werden, um in einer mehrdimensionalen Weise die Sequenz von Ereignissen zu rekonstruieren, die zu der Anomalie führen. Wenn die Anomalie ein Fahrzeugunfall ist, der Schäden an einer Person oder Eigentum involviert, kann ferner dieser Typ einer Rekonstruktion auch verwendet werden, um die primär verantwortlichen Partien für Zwecke der Wiedergutmachung und Versicherung zu bestimmen, insbesondere bei Fehlen traditioneller Augenzeugen.
-
Derzeit werden die Daten, die von den verschiedenen Sensoren in Fahrzeugen und straßenseitiger Infrastruktur generiert werden, sind häufig isoliert, da sie häufig in getrennten verkäufer- oder anwendungsspezifischen Clouds gespeichert werden. Es gibt dafür zahlreiche Gründe, umfassend, jedoch nicht beschränkt auf die folgenden: (1) Sensoren innerhalb eines einzelnen Fahrzeugs können von verschiedenen Herstellern bereitgestellt werden, und ihre jeweiligen Daten können zu Clouds im Eigentum der Verkäufer geroutet werden; (2) das Erhalten von Daten von Fahrzeugen in der Nähe ist oft schwierig, da die Fahrzeuge von verschiedenen Verkäufern hergestellt werden können, die verschiedene Wege des Aufnehmens und Speicherns von Informationen gehen, einschließlich potentiell unterschiedlicher Eigenformat für Sensordaten; und (3) die involvierten Einheiten können zuerst nicht verfügbar oder verfolgbar sein.
-
In Bezug auf bestehende Lösungen besteht eine Sensorfusion demgemäß streng innerhalb jedes einzelnen Fahrzeugs und ist von jedem Sensorverkäufer streng isoliert. Somit kann eine Sensorfusion nur genutzt werden, um Bilddaten zu aggregieren, die von einem Sichtfeld jedes Fahrzeugs isoliert gesammelt werden. Obwohl bestehende Videoaggregationslösungen Streams von mehreren Kameras sammeln können (z.B. Infrastrukturbasierte Lösungen, wie Videoüberwachung oder Erweiterte Realität), sind diese Lösung außerdem ineffektiv, wenn die Sensoren mehreren verschiedenen Herstellern gehören, ihre „Black Box“ Daten sind im Allgemeinen geschützt, und es gibt sehr wenig Kreuzorganisationszugriff oder - koordination. Demgemäß sind Videoaggregation und - Stitching unter Verwendung von Kameras in straßenseitiger Infrastruktur typischerweise auf spezifische Funktionen beschränkt (z.B. Verkehrsverwaltungssysteme, Information über Straßenbedingungen und/oder Überwachung). Diese jeweiligen Ansätze versagen bei der Behandlung einer Anomaliedetektion in global verteilter Weise, fliegend (d.h. in Echtzeit) und von mehreren Parteien, insbesondere in Bezug auf die Fusion von Daten sowohl von statischen als auch mobilen Einheiten.
-
Demgemäß präsentiert diese Offenbarung eine Lösung zur mehrdimensionalen Anomalieereignisrekonstruktion für automatisierte Smart Systeme, wie autonome Fahrzeuge und Smart Cities. Insbesondere ermöglichen die beschriebenen Ausführungsformen eine mehrdimensionale Rekonstruktion detektierter Anomalien, wobei sich der mehrdimensionale Aspekt auf die Fähigkeit bezieht, ein Ereignis aus vielen verschiedenen Perspektiven unter Verwendung multimodaler sensorischer Informationen von mehreren Quellen zu rekonstruieren. Diese Quellen können Sensoren, Kameras und/oder andere Audio/visuelle Elemente umfassen, die in mehreren Fahrzeug, straßenseitiger Infrastruktur und/oder der „Black Box“ von Informationen residieren, die für jedes Fahrzeug vorgeschrieben sind. Das Ziel ist, genügend Rekonstruktionsdaten einzuholen, um das Ereignis (das an einem bestimmten Punkt in Zeit und Raum aufgetreten ist) in mehreren Dimensionen (aus verschiedenen Blickwinkeln) zu rekonstruieren, während gleichzeitig das Einholen auf innerhalb einer abgegrenzten Region der Relevanz begrenzt wird.
-
Die Anomaliedetektion und Ereignisrekonstruktion ist ein mehrstufiger Prozess, der beginnt, wenn eine potentielle Anomalie detektiert wird. In einigen Ausführungsformen kann eine Anomalie zum Beispiel detektiert werden, indem Sensordaten von einer oder mehreren Quellen unter Verwendung beliebiger geeigneter Verarbeitungstechniken analysiert werden (z.B. Computer Vision, maschinelles Lernen, künstliche neuronale Netze). Die Detektion und Identifikation der Anomalie (z.B. Zeit, Ort und/oder Typ der Anomalie) können dann als Eingänge für den Ereignisrekonstruktionsprozess dienen. In einigen Ausführungsformen kann der Ereignisrekonstruktionsprozess involvieren: (1) digitale Witness-Identifikation, (2) Datensammlung und (3) mehrdimensionale Ereignisrekonstruktion, wie im Nachstehenden beschrieben.
-
Digitale Witness-Identifikation
-
Sobald die Anomalie detektiert wird, ist die erste Stufe die Identifikation der involvierten Parteien, einschließlich jener, die digitale Witnesses der Anomalie sind, von denen beide Daten besitzen können, die zur Rekonstruktion der Anomalie benötigt werden.
-
Datensammlung
-
Die zweite Stufe involviert die Datensammlung von den relevanten Parteien, die identifiziert wurden. Die Datensammlungsstufe kann unter Verwendung eines beliebigen geeigneten Ansatzes und/oder einer Technologie implementiert werden, einschließlich einer Cloud-basierten Lösung, die IP-basiertes Routing verwendet, und/oder einer Edge-basierten Lösung, die Information-centric Networking (ICN) oder ICN-basiertes Routing nutzt, unter anderen Beispielen. Ferner kann in einigen Ausführungsformen eine Netztopologie genutzt werden, die mit Routern „mit konvergierten Knoten“ implementiert wird, um den Datensammlungsprozess zu erleichtern, wie im Nachstehenden in Verbindung mit 62 bis 63 weiter beschrieben.
-
Mehrdimensionale Ereignisrekonstruktion
-
Die dritte Stufe verwendet dann die gesammelten Daten, um eine mehrdimensionale Ereignisrekonstruktion vorzunehmen. In einigen Ausführungsformen kann die dreidimensionale (3D) Ereignisrekonstruktion zum Beispiel verwendet werden, um das Ereignis aus verschiedensten unterschiedlichen Typen sensorischer Daten (z.B. Bild, Audio, Video) unter Verwendung verschiedener Medien-geeigneter Verarbeitungsalgorithmen zu rekonstruieren, um alle der sensorischen Informationen in einer zeitsynchronisierten Weise zu assimilieren.
-
Demgemäß präsentiert diese Offenbarung eine neue Lösung für die allgemeine Anomaliedetektion und Ereignisrekonstruktion, die für verschiedenste Anwendungsfälle genutzt werden kann, einschließlich vernetzter und autonomer Fahrzeuge, die innerhalb einer Smart Transportinfrastruktur existieren. Auf diese Weise können die Sensorfähigkeiten mehrerer Fahrzeuge und der umgebunden Infrastruktur für Zwecke der Anomaliedetektion und Ereignisrekonstruktion genutzt werden.
-
57 veranschaulicht ein Beispiel eines Anwendungsfalls 5700 zur Auto-Anomaliedetektion und Ereignisrekonstruktion. Der veranschaulichte Anwendungsfall 5700 umfasst eine Vielzahl von Autos 5710, die auf einer Straße fahren, zusammen mit mehreren Roadside Units (RSUs) 5720 an der Straßenseite (z.B. Ampeln, Laternenmaste, Straßenschilder und/oder anderer straßenseitiger Infrastruktur). Die Autos 5710 und RSUs 5720 sind jeweils mit einer Sammlung von Sensoren und/oder Kameras zum Aufnehmen von Daten ausgestattet, die mit ihren jeweiligen Betriebsumgebungen assoziiert sind, zusammen mit einer oder mehreren Kommunikationsschnittstellen, um die Kommunikation miteinander und/oder anderen Netzen zu erleichtern.
-
Außerdem portraitiert das veranschaulichte Beispiel einen Schnappschuss in Zeit und Raum einer Auto-Anomalie, die eine Kollision zwischen zwei Fahrzeuge involviert. Die Kollision kann als abnormales Ereignis (z.B. mit Details über Zeit und Ort) von irgendeinem der in die Kollision involvierten Fahrzeuge (entweder direkt involviert oder indirekt involviert als Zeugen) und/oder der straßenseitigen Infrastruktur oder den RSUs detektiert und aufgezeichnet werden. In verschiedenen Ausführungsformen kann eine Anomalie zum Beispiel durch die Verarbeitung von Sensordaten unter Verwendung eines beliebigen geeigneten Ansatzes detektiert werden, wie durch Identifizieren unerwarteter oder herausragender Änderungen in den Sensordaten (z.B. Daten von internen Sensoren von Fahrzeugen und/oder anderen Ausrüstungstypen), Vornehmen einer Ereignisdetektion und -erkennung unter Verwendung von Computer Vision- und/oder maschinellen Lerntechniken usw.
-
Sobald eine Anomalie detektiert wurde, kann dann die genaue Sequenz von Ereignissen n, die zu der Kollision geführt haben, und etwas darüber hinaus rekonstruiert werden, wie im Nachstehenden weiter beschrieben. Zum Beispiel präsentieren 58 bis 60 verschiedene Lösungen für die Anomaliedetektion und - rekonstruktion sowohl unter Verwendung von Internet Protocol- (IP) Netzen als auch Information-centric Networks (ICN).
-
In Bezug auf IP-basierte Ausführungsformen beginnt der Ereignisrekonstruktionsprozess durch das Identifizieren aller Einheiten, die nützliche Daten für den Rekonstruktionsprozess haben können. In vielen Fällen kann zum Beispiel angenommen werden, dass potentiell relevante Einheiten jene sind, die innerhalb einer Region von Interesse, welche als „Anomalieabdeckungsbereich“ 5730 bezeichnet wird, während eines bestimmten Zeitfensters, in dem die Anomalie aufgetreten ist, residieren. Der Prozess der Identifikation dieser Einheiten oder „Zeugen“ kann auf mehreren Wegen ausgelöst werden, einschließlich durch ein oder mehrere Fahrzeuge, die in den Vorfall involviert sind, und/oder straßenseitiger Infrastruktur in der Nähe.
-
In einigen Ausführungsformen kann der Prozess der Identifikation relevanter Einheiten oder „Zeugen“ zum Beispiel durch ein Fahrzeug ausgelöst werden, das eine Anomalie detektiert, wie ein Fahrzeug, das direkt in einen Vorfall involviert ist, oder ein Fahrzeug in der Nähe, das nur Zeuge des Vorfalls ist. Wie im Vorstehenden angeführt, sind viele Fahrzeuge mit Sensoren, Kameras und einem bestimmten Ausmaß an Automatisierung ausgestattet, und der Umfang und Entwicklungsstand dieser Technologie nehmen kontinuierlich zu aufgrund der anhaltenden Entwicklung vernetzter und autonomer Fahrzeuge. Demgemäß kann ein Fahrzeug diese verschiedenen Technologien nutzen, um einen abnormalen Vorfall oder ein abnormales Ereignis zu detektieren (z.B. auf der Basis eines plötzlichen Aufpralls, einer Airbag-Auslösung, eines Stoßes durch den Zusammenprall mit einem anderen Fahrzeug, durch unübliches Audio oder Video usw.). Bei der Detektion des abnormalen Ereignisses löst das Fahrzeugsystem einen Alarm aus und generiert eine automatische Push-Anforderung, um alle Sensor-Logs (einschließlich Kameravideostreams) innerhalb eines Zeitfensters, das von vor dem Vorfall bis nach dem Vorfall reicht, an die Cloud-Systeme des Fahrzeugs zu senden (z.B. Clouds des Fahrzeugherstellers, des Versicherers, der Gemeindebehörden usw.). Beim Empfang der Daten, die mit dem abnormalen Ereignis assoziiert sind, kann die Cloud dann eine Analytikmaschine verwenden, um ein Durchsuchen der visuellen/sensorischen Daten unter Verwendung von Zeitstempelinformationen vorzunehmen, um Nummernschilder und andere Identifikationsinformationen der umgebenden Fahrzeuge und/oder Infrastruktur zu finden. Die Nummernschildinformationen können dann auf die entsprechenden Fahrzeugbesitzer unter Verwendung einer Fahrzeugdatenbank gemappt werden (z.B. einer öffentlich verfügbaren Datenbank, die von der Verkehrsbehörde (DMV) in den US oder dem Äquivalent in anderen Ländern geführt wird). Die Cloud-Maschine sendet dann eine Anforderung für Informationen an die identifizierten Fahrzeuge und ihre Besitzer aus, um das Ereignis zu rekonstruierten, unter Verwendung eines Anwendungsservers. Alternativ dazu können die in den Vorfall involvierten Fahrzeuge ihre eigenen Logs innerhalb ihrer eigenen lokalen Analytikmaschine sogar vor dem Hochladen verarbeiten, und dann durch die lokale Analytikmaschine andere Fahrzeuge und Zeugen identifizieren, die sich innerhalb des Anomalieabdeckungsbereich 5730 befunden haben.
-
Alternativ dazu kann der Prozess zur Identifikation relevanter Einheiten oder „Zeugen“ durch straßenseitige Infrastruktur ausgelöst werden, die innerhalb des Anomalieabdeckungsbereichs 5730 lokalisiert ist. Zum Beispiel kann die straßenseitige Infrastruktur verschiedene Typen von Roadside Units (RSUs) mit Edge- und Fog Computing-Fähigkeiten (z.B. Speichern, Verarbeitung, Kommunikation/Routing, Sensoren/Kameras) umfassen, wie Verkehrsampeln, Straßenbeleuchtung, Laternenmaste, Straßenschilder usw. Auf diese Weise kann die straßenseitige Infrastruktur innerhalb des Anomalieabdeckungsbereichs 5730 einen abnormalen Vorfall detektieren, bezeugen oder auf andere Weise darauf aufmerksam werden und kann somit einen Alarm oder eine Reaktion auf den Vorfall auslösen. Zum Beispiel kann die straßenseitige Infrastrukturausrüstung sensorische Daten (z.B. Videostreaming-Aufzeichnungen) aus einem Zeitfenster, das sich von vor dem Vorfall bis nach dem Vorfall erstreckt, an eine geeignete Behörde und/oder ein Cloud-Ziel (z.B. Roadside Unit- (RSU) Infrastruktur-Cloud) senden, um einen Zeugennachweis zu erbringen. Auf diese Weise wird der Ereignisrekonstruktionsprozess von der straßenseitigen Infrastruktur ausgelöst, wie im Nachstehenden in Verbindung mit 58 weiter beschrieben.
-
58 veranschaulicht einen Prozessfluss 5800 zur Anomaliedetektion und -rekonstruktion durch Roadside Unit- (RSU) Infrastruktur über IP Netze. Insbesondere nimmt die lokale RSU Cloud eine Analytik unter Verwendung von Objekterkennungstechniken vor und generiert einen Ereignisauslöser an ihre eigene RSU Cloud (Block 5802), während sie gleichzeitig ihren Inhalt in diese Cloud hochlädt (Block 5804). Parallel dazu laden auch die anderen involvierten Einheiten (z.B. Fahrzeuge) ihre Daten in ihre eigenen lokalen Clouds hoch (Block 5806). Die RSU Cloud nimmt weitere Analytik vor, erhält zusätzliche Informationen über die in die Anomalie involvierten Einheiten und sendet Anfragen an die Clouds dieser Einheiten, um ihre Daten zu sammeln (Block 5808). Diese Clouds antworten dann mit entsprechenden Daten, die auf die Anomaliesuchanfrage antworten (z.B. auf der Basis des Abdeckungsbereichs, Zeit-Delta) (Block 5810). Während mehr Daten gesammelt werden und zusätzliche Verarbeitung vorgenommen wird, können ferner zusätzliche Einheiten mit potentiell relevanten Daten identifiziert werden, und bei diesen Einheiten können ihre jeweiligen Daten auf ähnliche Weise angefragt werden. Der Prozess kann auf diese Weise fortgesetzt werden, bis der gesamte Datensatz, der mit dem Anomalievorfall assoziiert ist, von allen Einheiten, die als relevant identifiziert wurden, gesammelt wurde.
-
Sobald als Beispiel die Aufforderungen zur Einholung von Daten ausgesendet wurden, können die Antwortdaten anschließend bei der Einheit aggregiert werden, die anfänglich den Prozess ausgelöst hat, wie der RSU Cloud oder ihrer zugeordneten Gemeindebehörde, dem Fahrzeughersteller, einem Versicherungsanbieter usw. Ferner kann in einigen Fällen dieselbe Anomalie von mehreren verschiedenen Teilnehmern rekonstruiert werden, wie den Gemeindebehörden, denen die RSUs gehören (z.B. zur Verbesserung von Verkehrssicherheitsmaßnahmen), den Fahrzeugherstellern (z.B. zur Verbesserung der vernetzten Fahrzeugtechnologie) und den Versicherungsanbietern (z.B. zum Verständnis sozialer Unfallsmuster), wobei großteils derselbe Prozess wie im Vorstehenden beschrieben verwendet wird. Nachdem die Daten gesammelt werden, müssen sie dann zusammengesetzt werden, um das Ereignis zu rekonstruieren. In verschiedenen Ausführungsformen kann die Ereignisrekonstruktion zum Beispiel durch das Konsolidieren von Sensordaten aus mehreren Quellen und Perspektiven zu einer mehrdimensionalen Darstellung unter Verwendung beliebiger geeigneter Verarbeitungstechniken vorgenommen werden, wie SensorFusion, Computer Vision, künstliche neuronale Netze, maschinelles Lernen usw.
-
In einigen Ausführungsformen können die verschiedenen Clouds Anwendungsprogrammierschnittstellen (APIs) bereitstellen, die es anderen Cloud oder Einheiten gestatten, um Daten in einem Format anzufragen und diese zu erhalten, das geparst und von den Empfängern decodiert werden kann. Ferner kann jede einzelne Datenbank innerhalb jeder einzelnen Cloud für die Bestimmung der Legitimität der Einheiten verantwortlich sein, die Daten anfordern oder anfragen, einschließlich ob sie die Berechtigung haben, um die Antwortdaten zu empfangen. Ähnlich kann der Empfänger der Daten für die Bestimmung der Authentizität von Daten verantwortlich sein, die in Beantwortung seiner Anfrage empfangen werden. In verschiedenen Ausführungsformen können diese Typen von Sicherheitsmaßnahmen unter Verwendung eines Offline-Prozesses implementiert werden, oder sie können in Echtzeit stattfinden, wenn die erforderlichen Systeme und Autorisierungen für einen Datenzugriff geeignet bereitgestellt und ausgelegt wurden.
-
59 bis 60 veranschaulichen einen Prozessfluss zur Anomaliedetektion und -rekonstruktion über Information-centric Networks (ICNs). In dem veranschaulichten Prozessfluss wird zum Beispiel angenommen, dass die teilnehmenden Einheiten, die in dem Anwendungsfall von 57 gezeigt werden (z.B. Fahrzeuge, umgebende Infrastruktur und/oder irgendwelche anderen Passanten oder Zeugen innerhalb des Anomalieabdeckungsbereichs), Teil eines ICN-fähigen Netzes sind. Wie im Nachstehenden weiter diskutiert, gibt es zwei wichtige Unterschiede zwischen ICN und IP Netzen, die genützt werden können, um die Betriebseffizienz in diesem Kontext zu verbessern.
-
Erstens ist ein ICN Netz fähig, Daten nach dem Namen zu routen (der häufig eine Serie von Attributen ist, die mit den Daten zusammenhängen, wie ihr Zweck, Eigentümer, Ort und/oder andere kontextuelle Informationen), anstatt nach der IP Adresse, was ein ortsunabhängiges Routing ermöglicht. Diese Fähigkeit kann durch die Verwendung einer „Fuzzy-Anforderung“ genutzt werden, die Daten in Bezug auf eine Anomalie auf der Basis eines Namens anfordert, der die Zeit und den Ort der Anomalie umfasst, sowie einen Unsicherheitsfaktor, unter anderen potentiellen Charakteristiken oder Attributen. Auf diese Weise dient die Fuzzy-Anforderung als Anfrage an das Netz selbst, ohne jedoch die Identitäten oder IP Adressen der Einheiten kennen zu müssen, welche die Anomalie detektiert haben. Ferner ermöglicht der Unsicherheitsfaktor Antworten beliebiger Einheiten, die innerhalb einer betreffenden physischen Region von Interesse lokalisiert waren - und die qualifizierende Daten von Interesse gesammelt haben - zu einer Zeit, als die Anomalie aufgetreten ist, plus oder minus einer Schwellenfehlerbreite vor und nach dem abnormalen Ereignis.
-
Zweitens bietet ein ICN Netz ein natives Caching in der Routing-Schicht, was bedeutet, dass, während die Daten durch einen Router gehen, können sie für eine spätere Verwendung gegebenenfalls gecacht werden (z.B. wenn die Quelle der Daten aufgrund von Mobilität, Interferenz, Diskonnektivität, Energiespar-Ruhemodus usw. nicht verfügbar ist). Dies hat den Nebeneffekt, dass die Daten an mehreren Orten und potentiell viel näher bei den Anforderern verfügbar gemacht werden, was kostbare und häufig begrenzte Netzressourcen spart. Wenn eine Fuzzy-Anforderung gestellt wird, können als Ergebnis alle Zeugen oder Knoten auf die Fuzzy-Anforderung mit Daten antworten, die innerhalb der ungefähren Zeit und am Ort der Anomalie gesammelt wurden, ungeachtet davon, ob die Daten an diesem Knoten erzeugt oder nur gecacht wurden.
-
Die Einheiten, welche die Fähigkeit haben, sensorische Daten aufzunehmen, zu erzeugen, zu verarbeiten und/oder zu speichern und sie in einer Form zur Verfügung zu stellen, die in der Netz-Routing-Schicht gemeinsam genutzt werden kann, sind als „Produzenten“ oder „Herausgeber“ in einem ICN Netz bekannt, während die Einheiten, die Informationen anfordern, als „Konsumenten“ oder „Abonnenten“ bekannt sind. Das physische Netz selbst wird durch die Zwischenverbindung der zugrundeliegenden Teil-nehmer unter Verwendung einer oder mehrerer bestimmter Konnektivitätslösungen gebildet (z.B. LTE, DSRC, Wi-Fi, 5G), und somit ändert sich das Netz kontinuierlich, während seine Teilnehmer beitreten und austreten (z.B. während sich Fahrzeuge mit Basisstationen verbinden und von diesen trennen, während sie sich von einer Zelle zur nächsten bewegen).
-
Dieser Rahmen ermöglicht das verteilte Speichern von Anomalieinformationen quer über Fahrzeug und straßenseitige Infrastruktur in dem Anomalieabdeckungsbereich, während es auch gestattet wird, dass „Abonnenten“-Knoten (z.B. die DMV, Untersuchungssysteme von Versicherungsgesellschaften, Dienste von Fahrzeugherstellern nach Unfällen) alle Elemente der gespeicherten Ansicht der Anomalie zusammenfügen und die Szene rekonstruieren. Angesichts der Tatsache, dass ICN nicht erfordert, dass alle zugrundeliegenden Teilnehmer spezifisch bekannt oder identifizierbar sind, sondern stattdessen nur erfordert, dass der Name und/oder Attribute relevanter Daten bekannt sind, ist der Prozess des Sammelns von Anomaliedaten von zahlreichen Quellen viel geradliniger. Die Szenenrekonstruktion kann dann in einer kaskadierten und kooperativen Weise stattfinden, wie im Nachstehenden weiter beschrieben.
-
59 veranschaulicht den gesamten Prozessfluss 5900 auf Systemebene zur Anomaliedetektion und -rekonstruktion über ein ICN Netz, während 60 den Prozessfluss 6000 an einem einzelnen Knoten innerhalb des ICN Netzes veranschaulicht. Mit Bezugnahme auf 59 beginnt der Prozessfluss 5900, wenn eine der Einheiten (entweder ein statisches Infrastrukturelement oder ein mobiles Element, wie ein Fahrzeug) eine Anomalie, wie eine Kollision, detektiert. Das veranschaulichte Beispiel nimmt an, dass die Anomalie von einer Roadside Unit (RSU) detektiert wird, die einen Alarm sendet, um den Rekonstruktionsprozess auszulösen.
-
Zum Beispiel sendet die RSU beim Detektieren der Anomalie ein „Bereichsinteresse“-Paket über das ICN Netz (Block 5902) unter Verwendung von Multicast, um zu gestatten, dass das Paket von den jeweiligen Einheiten gehört und/oder empfangen wird, die sich innerhalb des Abdeckungsbereichs des Netzes befinden. In typischen ICN Netzen sendet zum Beispiel ein Abonnent ein „Interessenpaket“, das den präzisen Namen des gewünschten Inhalts oder der Daten enthält. Da der Abonnent in diesem Fall jedoch den genauen Namen des Inhalts nicht kennt, identifiziert das Bereichsinteressenpaket nur bestimmte Attribute des gewünschten Inhalts. Somit unterscheidet sich die Struktur eines Bereichsinteressenpakets von traditionellen ICN Interessenpaketen, da ein Bereichsinteressenpaket im Wesentlichen eine „Fuzzy“-Anforderung von Daten ist, die bestimmte Kriterien erfüllen, anstatt einer Anforderung von Daten mit einem präzisen Namen. In einigen Ausführungsformen kann ein Bereichsinteressenpaket Daten auf der Basis eines ungefähren Orts in Raum und Zeit anfordern, wie Daten, die innerhalb bestimmter Deltas in Bezug auf einen Referenzort x,y,z (RefLoc) und eine Referenzzeit t (RefTime) aufgenommen werden.
-
Die Benennungskonvention für einen derartigen Anomalierekonstruktionsprozess wird a-priori ausgebildet und implementiert, um die Suche zu erleichtern. Zum Beispiel befolgt jeder teilnehmende dieselbe Benennungskonvention, so dass die Objektnamen der sensorischen Daten, die aufgezeichnet werden, konsistent benannt werden, wie unter Verwendung des folgenden Formats:
-
GeographicalLocation/Date/Timestamp/EntityName
-
Der geographische Ort könnte ein standardisiertes Format sein, das dem Benennungsmechanismus für Kartenkacheln ähnlich ist, die zur Erstellung von Fahrzeugkarten verwendet werden. Das Datum und der Zeitstempel reflektieren lokales Datum und Zeit für den bestimmten geographischen Ort. Der Einheitenname können eine einzigartige Identität für ein Fahrzeug oder die Infrastrukturausrüstung reflektieren. Die Anfrage enthält geographischen Ort, Datum und Zeitstempel in demselben Format wie die Benennungskonven-tion, um eine effiziente Suche zu erleichtern.
-
In einigen Ausführungsformen kann ein Bereichsinteressenpaket auch eine „Funktion“ für jeden Knoten identifizieren und/oder umfassen, um auf beliebige Daten angewendet zu werden, die ansprechend auf ein Interessenpaket gesammelt werden, wie eine bestimmte Verarbeitungsfunktion zum Aggregieren und/oder Komprimieren von Antwortdaten an den Zwischen-Hops, bevor sie den ursprünglichen Abonnenten erreichen, um eine effiziente Suche zu erleichtern.
-
Das Bereichsinteressenpaket wird von mehreren Fahrzeugen oder Knoten empfangen (Blöcke 5904 und 5906), und jeder Knoten sucht nach Antwortdaten und kann auch das Paket zu anderen Knoten weiterleiten (Blöcke 5908 und 5910) .
-
Der Prozessfluss eines einzelnen Knotens wird in Verbindung mit 60 weiter veranschaulicht und beschrieben. Nachdem, zum Beispiel mit Bezugnahme auf 60, die RSU ein Bereichsinteressenpaket gesendet hat (Block 6002), das von einem Fahrzeug oder anderen Knoten empfangen wird (Block 6004), prüft der Koten um zu sehen, ob eine andere Einheit ein ähnliches Interessenpaket ausgegeben hat, das in der anstehenden Interessenpakettabelle des Knotens gepuffert wurde (Block 6008). Wenn ein ähnliches Interessenpaket bereits empfangen wurde, bedeutet das, dass der Knoten diese Anforderung bereits gesehen hat, und somit löscht der Knoten das aktuelle Interessenpaket (Block 6008). Wenn kein ähnliches Interessenpaket empfangen wurde, hat der Knoten diese Anforderung nicht gesendet, und somit nimmt der Knoten die längste Präfix-Übereinstimmung für den benannten Inhalt innerhalb seines Cache vor, um nach dem Antwortinhalt zu suchen, der mit den Anfrageparametern übereinstimmt (Block 6010). Wenn ein Antwortinhalt identifiziert wird, sichert der Knoten dann den Inhalt (Block 6014).
-
Im Gegensatz zu einem herkömmlichen ICN, wo die Transaktion endet, sobald ein Knoten einen übereinstimmenden Inhalt ansprechend auf ein Interessenpaket liefert, leitet der Knoten jedoch hier das Interessenpaket an andere potentiell relevante Knoten weiter (Block 6014) und speichert das Paket auch in seiner anstehenden Interessentabelle, um eine Verarbeitung duplikativer Interessenpakete für dieselbe Anfrage oder denselben Vorfall zu vermeiden. Um die Region abzugrenzen, wo sich das Interessenpaket ausbreitet, wird eine „Bereichs“region von Interesse in dem Interessenpaket definiert, so dass sich das Interessenpaket weiterhin innerhalb der Bereichsregion ausbreitet, bis die erforderliche „Nähe“ überschritten wird. In einigen Fällen kann die Bereichsregion zum Beispiel als bestimmter Radius um das Anomalieereignis definiert werden, wie ein Radius, der dem maximalen Bereich oder der Sicht von Kameras entspricht, die potentiell das Ereignis aufnehmen könnten. Wenn ein bestimmter Knoten keinen übereinstimmenden Inhalt für ein gegebenes „Bereichsinteressen“paket findet, ist das eine Anzeige dafür, dass die Anfrage ihre geographische Grenze erreicht hat, und somit leitet der Knoten das Paket nicht mehr weiter (Block 6012).
-
Während Antwortdatenpakete von den verschieden Knoten und Endpunkten ansprechend auf das weitergeleitete Bereichsinteressenpaket empfangen werden, kann jeder Knoten auf einen bestimmten Zeitgeber T warten, um abzulaufen, um alle Antworten zu sammeln, bevor er seine eigene Antwort auf das Bereichsinteressenpaket sendet (Block 6016). Auf diese Weise enthält die letztliche Antwort eine umfassende Sammlung von Daten von vielen Inhaltlieferanten anstatt nur einem einzigen Inhaltlieferanten. Dieser Ansatz ermöglicht eine Transaktion vom Viele-zu-einem-Typ in der Netzschicht, wobei eine einzelne Anforderung, die mit einem Bereichsinteressenpaket assoziiert ist, von mehreren Lieferanten erfüllt werden kann, die ihrerseits das Bereichsinteressenpaket weiterleiten können, obwohl es von dem Typ der Anfrage und der Tiefe des Netzes abhängig sein kann, ob jeder Lieferant auch Antworten von mehreren Lieferanten akkumuliert. Angesichts der Tatsache, dass viele Antworten an den Zwischenknoten empfangen werden können, können die Knoten zum Beispiel wählen, die empfangenen Antworten zu aggregieren und/oder zu filtern, bevor sie diese mit ihrer eigenen Antwort weitersenden (Block 6018).
-
61 veranschaulicht ein Flussdiagramm 6100 für ein Beispiel einer Ausführungsform eines Ubiquitous Visual Computing Witness. In einigen Ausführungsformen kann das Flussdiagramm 6100 zum Beispiel unter Verwendung der Visual Computing-Architektur und -Funktionalität implementiert werden, die in dieser gesamten Offenbarung beschrieben werden.
-
Das Flussdiagramm beginnt bei Block 6102 durch den Zugriff auf Sensordaten, die von einem oder mehreren Sensoren einer ersten Vorrichtung aufgenommen werden. Die erste Vorrichtung kann zum Beispiel eine Verarbeitungsvorrichtung mit einem oder mehreren Prozessoren und/oder Kommunikationsschnittstellen sein. Die Sensoren können einen beliebigen Typ einer Vorrichtung umfassen, die zum Aufnehmen von Daten verwendet werden, welche mit einer Umgebung oder Betriebsumgebung assoziiert sind, wie Vision-Sensoren zum Generieren einer visuellen Darstellung einer umliegenden Umgebung (z.B. Kameras, Tiefensensoren, Ultraviolett- (UV) Sensoren, Laserentfernungsmesser (z.B. Light Detection and Ranging (LIDAR)), Infrarot-(IR) Sensoren, elektrooptische/Infrarot- (EO/IR) Sensoren), interne Sensoren von Fahrzeugen und andere Typen von Ausrüstung usw. In einigen Ausführungsformen kann die erste Vorrichtung zum Beispiel mit einem Fahrzeug assoziiert sein, und die Sensoren können eine Kombination von Vision-Sensoren und internen mechanischen Sensoren umfassen. Alternativ dazu kann die erste Vorrichtung mit einem Überwachungssystem assoziiert sein, und die Sensoren können einen oder mehrere Vision-Sensoren umfassen.
-
Das Flussdiagramm geht dann zu Block 6104 weiter, um zu bestimmen, dass ein Ereignis in der Nähe der ersten Vorrichtung aufgetreten ist. In einigen Ausführungsformen kann der Vorfall zum Beispiel auf der Basis einer Analyse der Sensordaten detektiert werden, die von den Sensoren der ersten Vorrichtung aufgenommen werden. Zum Beispiel kann ein Vorfall detektiert werden, indem Sensordaten unter Verwendung eines beliebigen geeigneten Ansatzes verarbeitet werden, wie durch Identifizieren unerwarteter oder herausragender Änderungen in Sensordaten (z.B. Daten von internen Sensoren von Fahrzeugen und/oder anderen Typen von Ausrüstung), Vornehmen einer Ereignisdetektion und - erkennung unter Verwendung von Computer Vision- und/oder maschinellen Lerntechniken usw. In einigen Ausführungsformen kann eine Anomalie zum Beispiel während der Analyse der Sensordaten identifiziert werden, und es kann bestimmt werden, dass die Anomalie einen bestimmten Vorfall oder ein Ereignis anzeigt. Zum Beispiel können während einer stationären Operation Sensorsignale überwacht und/oder aufgezeichnet werden, um eine Basislinie festzulegen, die unter Verwendung von einer statistischen Analyse, Schwellen, Raten usw. bestimmt werden kann. Alternativ dazu oder zusätzlich können Daten von visuellen Sensoren unter Verwendung von Bild- und/oder Videoverarbeitungstechniken analysiert werden, um einen Vorfall und/oder ein Ereignis zu identifizierten, der oder das in den visuellen Daten aufgenommen wurde (z.B. unter Verwendung von Gesichtserkennung, Bildklassifikation, künstlicher Intelligenz, maschinellem Lernen, künstlichen neuronalen Netzen usw.). Ferner kann in einigen Ausführungsformen die Detektion eines Vorfalls auf der Basis der kumulativen Detektion mehrerer Anomalien, Vorfälle und/oder Ereignisse über eine Zeitperiode ausgelöst werden.
-
Alternativ dazu kann die erste Vorrichtung von einer anderen Vorrichtung von dem Vorfall benachrichtigt werden. In einigen Ausführungsformen kann die erste Vorrichtung zum Beispiel eine mit dem Vorfall assoziierte Benachrichtigung über ein Information-centric Network (ICN) empfangen, wobei die Benachrichtigung eine Anforderung von Daten umfasst, die mit dem Vorfall assoziiert sind, und wobei die Anforderung von Daten eine Anzeige einer Vielzahl von Attributen umfasst, die mit dem Vorfall assoziiert sind, welche die erste Vorrichtung verwenden kann, um mit dem Vorfall assoziierte relevante Daten zu identifizieren.
-
Das Flussdiagramm geht dann zu Block 6106 weiter, um mit dem Vorfall assoziierte Daten zu identifizieren und zu sichern. Insbesondere können die von der ersten Vorrichtung aufgenommenen Sensordaten analysiert werden, um relevante Sensordaten zu identifizieren, die mit dem Vorfall assoziiert sind. In einigen Fällen können zum Beispiel Sensordaten, die von der ersten Vorrichtung zur ungefähren Zeit und am ungefähren Ort des Vorfalls aufgenommen werden, als relevant für den Vorfall erachtet werden. Demgemäß können die relevanten Sensordaten gesichert werden, wie indem sie mit einer hohen Prioritäts- und/oder Quality of Service- (QoS) Bezeichnung versehen werden, und indem sie auf einem geeigneten Speicher oder einer Speichervorrichtung gespeichert werden. Alternativ dazu kann in einigen Ausführungsformen ein Schnappschuss aller verfügbaren Sensordaten ansprechend auf einen Vorfall gesichert werden, mit verschiedenen Bezeichnungen für die relevantesten Daten gegenüber den übrigen Daten. Auf diese Weise wird die vollständige Sammlung von Sensordaten für eine nachfolgende Verarbeitung und/oder Analyse (z.B. offline) verfügbar, wenn notwendig.
-
Das Flussdiagramm geht dann zu Block 6108 weiter, um andere Vorrichtungen in der Nähe von Daten zu benachrichtigen und diese von ihnen anzufordern. Zum Beispiel kann die erste Vorrichtung ein Broadcasting/Multicasting einer Benachrichtigung, mit einer Anforderung von Daten, die mit dem Vorfall assoziiert sind, an andere Vorrichtungen in der Nähe der ersten Vorrichtung vornehmen. In verschiedenen Ausführungsformen kann die Benachrichtigung zum Beispiel über ein Information-centric Network (ICN) und/oder ein IP-basiertes Netz übertragen werden. Ferner kann in einigen Ausführungsformen die Benachrichtigung verschiedene Attribute identifizieren, die mit dem Vorfall assoziiert sind, und/oder einen Namen oder Identifikator, der mit dem Vorfall assoziiert ist, den die empfangenden Vorrichtungen verwenden können, um relevante Daten zu identifizieren, die mit dem Vorfall assoziiert sind.
-
Das Flussdiagramm geht dann zu Block 6110 weiter, um zu bestimmen, ob die Weiterleitung der Anforderung fortzusetzen ist. Wenn zum Beispiel die Benachrichtigung von anderen Vorrichtungen in der Nähe der ersten Vorrichtung empfangen wird, kann jede empfangende Vorrichtung bestimmen, ob sie irgendwelche relevanten Daten hat, die mit dem Vorfall assoziiert sind, sowie ob die Weiterleitung der Anforderung fortzusetzen ist. In einigen Ausführungsformen kann jede empfangende Vorrichtung zum Beispiel nach relevanten Daten (z.B. Sensordaten) auf der Basis der Attribute des Vorfalls suchen, die in der Benachrichtigung geliefert wurden, wie Zeit und/oder Ort des Vorfalls. Wenn relevante Daten von einer bestimmten Vorrichtung identifiziert werden, kann diese Vorrichtung außerdem die Benachrichtigung an andere Vorrichtungen in ihrer Nähe weiterleiten und Daten von diesen anfordern. Wenn jedoch keine relevanten Daten von dieser Vorrichtung identifiziert werden, kann es die Vorrichtung ablehnen, die Benachrichtigung weiterzuleiten.
-
Das Flussdiagramm geht dann zu Block 6112 weiter, um die relevanten Daten zu konsolidieren, zu aggregieren und/oder zu komprimieren, die von den jeweiligen Vorrichtungen identifiziert und/oder empfangen werden. Während zum Beispiel jede Vorrichtung ihre eigenen relevanten Daten identifiziert und auch relevante Daten von anderen Vorrichtungen empfängt, zu denen sie die Benachrichtigung weitergeleitet hat, kann jede Vorrichtung ihre Datensammlung konsolidieren, aggregieren und/oder komprimieren, bevor Daten ansprechend auf die Benachrichtigung geliefert werden. Auf diese Weise werden alle relevanten Daten von den jeweiligen Vorrichtungen letztlich gesammelt und konsolidiert ansprechend auf die Benachrichtigung, die mit dem Vorfall assoziiert ist.
-
Das Flussdiagramm geht dann zu Block 6114 weiter, um den Vorfall auf der Basis der konsolidierten Daten zu rekonstruieren. In verschiedenen Ausführungsformen kann die Ereignisrekonstruktion zum Beispiel vorgenommen werden, indem eine mehrdimensionale Darstellung des Vorfalls aus den konsolidierten Daten unter Verwendung beliebiger geeigneter Verarbeitungstechniken generiert wird, wie Sensor-Fusion, Computer Vision, künstliche neuronale Netze, maschinelles Lernen usw.
-
Das Flussdiagramm geht dann zu Block 6116 weiter, um die konsolidierten Daten und/oder den rekonstruierten Vorfall an eine geeignete Einheit zu senden, wie an eine Polizeiabteilung, DMV, Versicherungsgesellschaft, einen Fahrzeughersteller oder irgendeine andere Person oder Einheit, welche die Daten benötigt.
-
An diesem Punkt kann das Flussdiagramm vollendet sein. In einigen Ausführungsformen kann das Flussdiagramm jedoch neu starten, und/oder bestimmte Blöcke können wiederholt werden. Zum Beispiel kann in einigen Ausführungsformen das Flussdiagramm bei Block 6102 neu starten, um das Detektieren, Rekonstruieren und/oder Berichten von Vorfällen von Interesse fortzusetzen.
-
Konvergierter Knoten
-
Im Internet der Dinge (IoT) gibt es wachsende Anzahlen von Sensoren, die Netze verbinden. Viele davon, wie Kameras, generieren zeitempfindliche Datenströme mit großem Volumen. Da sich diese Sensoren an den tatsächlichen Rändern eines Netzes verbinden, fließen ihre Daten typischerweise in der Richtung vom Edge zur Cloud, was die umgekehrte Richtung zu dem ist, wie das Netz ursprünglich bereitgestellt wurde. Außerdem kann die Größe eines einzelnen Datenstroms von einer Bandbreitenperspektive signifikant sein und führt somit häufig zu Latenzeinschränkungen für Echtzeit-Anwendungen. Ferner haben viele dieser Ströme eine kontinuierliche Beschaffenheit. Wenn viele Ströme mit großem Volumen gleichzeitig an demselben Router ankommen und konvergieren, was häufig der Fall ist bei typischen hierarchischen und/oder drahtlosen Netztopologien, ist es somit möglich, dass diese Datenströme weder in einen Speicher, lokalen Speicher und/oder entlang des nächsten Hops in dem Netz passen (was zu einer Serviceablehnung führen kann, wenn der Router mit Verkehr über seine Kapazität hinaus überlastet ist). Auch wenn die Ströme kein großes Volumen aufweisen oder kontinuierlich sind, wenn die Anzahl von Strömen extrem hoch ist, könnte die aggregierten Bandbreitenanforderungen weiterhin die verfügbaren Ressourcen (sowohl on- als auch off-platform) überschreiten.
-
Diese Szenarios präsentieren ein Problem der Datenimplosion. Aktuelle Stausteuertechniken sind inadäquat, da sie das Problem nur teilweise behandeln, wenn es einfach zu viele Datenströme gibt, die um Router-Puffer-Warteschlangenressourcen im Netz konkurrieren. Zum Beispiel hat ein normaler Layer 3- (L3) Router einige Strategien, um einen übergroßen ankommenden Datenstrom zu verwalten: (1) einfach keine Pakete weiterleiten, die nicht passen (z.B. sie fallenlassen); oder (2) indirekt der Quelle, sowie den Zwischen-Routern, die Diskrepanz in der erforderlichen Bandbreite gegenüber der verfügbaren Bandbreite signalisieren (z.B. explizite Staubenachrichtigung (ECN) in IP Headern). In der Transportschicht (z.B. TCP) werden Zeitüberschreitungen der erneuten Übertragung verwendet, um einen Stau zu detektieren, um den Fluss von Paketen zu reduzieren, bis der Stau aufgelöst ist. In der Anwendungsschicht hat ein Sender von Daten die Möglichkeit, (1) zuerst Auslegungsdetails anzufragen oder auszuhandeln, bevor der Datenaustausch beginnt, oder (2) von Routing-Hinweisen entlang des Wegs abzuleiten, wie die Daten über die Route einzupassen sind und/oder einzelne Datenströme zu transformieren sind (z.B. indem ein Datenstrom aus seinem ursprünglichen Format herausgenommen wird und dieser in ein Format konvertiert wird, das in den eingeschränktesten Teil des Wegs durch das System passt), was durch dynamisches Verhandeln mit der Anwendung erzielt werden kann, wie die Daten über das Netz einzupassen sind. Ein Stau kann auch durch das Hinzufügen von mehr Ressourcen behandelt werden, wie mehr Bandbreite unter Verwendung eines größeren und teureren Basisnetzes für aggregierte Ströme, das ist jedoch häufig eine sehr kostspielige und unpraktische Lösung angesichts der Flexibilität und des potentiellen Maßstabs von IoT.
-
Die bestehenden Stausteuertechniken in der Anwendungs-, Transport- und Routing-Schicht sind unzureichend, da das IoT Kapazitätsproblem aufgrund der Erhöhung von Strömen gegenüber der existierenden Kapazität besteht, anstatt eines temporären Stauproblems, das sich nur auf einen Spitzenzeit- oder starkfrequentierten Verkehr bezieht. Ferner ist das Hinzufügen von Netzkapazität ohne das Entstehen signifikanter Kosten mit den existierenden Lösungen nicht möglich.
-
Obwohl Stausteueralgorithmen versuchen, einen Datenüberlauf an traditionellen Router-Knoten im Netz zu minimieren, führt der Stau letztlich zu einer wachsenden Warteschlange von Paketen, was die End-to-End-Verzögerung erhöht. Wenn eine Warteschlange überläuft, was bedeutet, dass es keinen Platz mehr gibt, um ankommende Daten zu speichern, beginnt ein Router, Pakete fallenzulassen, was einen großen Einfluss auf Ströme haben kann, welche die Lieferung von In-order-Paketen erfordern, oder sogar einen geringen Einfluss auf die Lieferung von Strömen, die eine zuverlässige (jedoch möglicherweise Out-of-oder-) Lieferung von Paketen erfordern, die eine Runde auf die erneute Übertragung irgendwelcher Paketverluste warten müssen. Zum Beispiel können eine Verzögerung und/oder ein Paketverlust höchst störend sein, ganz zu schweigen von unakzeptabel für eine Kamera, die an einem vernetzten Auto montiert ist, dessen Daten als Black Box oder Ground Truth für abnormale Auto- oder Umweltvorkommnisse archiviert werden sollten.
-
Demgemäß präsentiert diese Offenbarung verschiedene Ausführungsformen eines „konvergierten Knotens“, der dafür ausgebildet ist, um effizient visuelle Datenströme zu routen/zu verarbeiten/zu cachen, die in einer N-zu-1-Weise in Edge- und Fog Computing-Systemen fließen. Der konvergierte Knoten ermöglicht die fortgesetzte Übertragung von Daten, auch wenn eine große Differenz zwischen der Menge an ankommenden Daten und verfügbaren Ressourcen für die abgehenden Daten besteht. Dies ist möglich aufgrund der kollektiven Verarbeitung und des Cachens von kontextuell zusammenhängenden Strömen, wie wenn mehrere Kameras Bilder aus verschiedenen, jedoch überlappenden Perspektiven aufnehmen.
-
Der Grundgedanke des konvergierten Knotens ist, die Funktionalität eines traditionellen L3 Routers zu erweitern, um die Implosion von IoT Datenströmen zu verstehen und zu verhindern (z.B. die Viele-zu-1-Beschaffenheit von Daten, die stromaufwärts von einer dichten Kamerabereitstellung in einer Smart Umgebung fließen) . Da mehrere ankommende Ströme häufig kontextuell zusammenhängen (z.B. in Raum, Zeit und möglicher anderer Weise), bieten IoT Router mit einem konvergierten Knoten eine neue Strategie: die Ströme gemeinsam verarbeiten, analysieren und transformieren. Zum Beispiel nimmt ein konvergierter Knoten effektiv mehrere ankommende Ströme und transformiert sie in einen einzelnen Ausgangsstrom, indem transformative Rechenfunktionen an ihnen vorgenommen werden, wie Analytik, maschinelles Lernen, künstliche Intelligenz usw., was als neue Art einer „Kompression“ dient. Der neue aufkommende Strom wird dann zur Wiederverwendung durch beitragende Stakeholder oder Stakeholder in der Nähe gespeichert.
-
Der konvergierte Knoten impliziert einige neue Anforderungen für L3 Router, um IoT Bereitstellungen zu bedienen, die einen Bedarf an der Unterstützung umgekehrter Datenströme im Maßstab haben (z.B. Ströme mit hohem Volumen, kontinuierlich, geringer Latenz und/oder hoher Dichte), während das Datenimplosionsproblem vermieden wird. Zum Beispiel konvergieren in Bezug auf einen konvergierten Knoten die Netzdatenströme am Knoten und können aus mehreren ankommenden Strömen zu einem einzelnen ausgehenden Strom kombiniert oder zusammengeführt werden (fliegend und am Weg zu einem anderen Ort). Die Implikationen dieser Konvergenz von Strömen sind, dass Routing-, Verarbeitungs- und Rechensubsysteme in Hardware co-ausgebildet werden können, um eine Handhabung der Daten mit geringer Latenz zu unterstützen (z.B. über einen intern gemeinsam genutzten Datenbus oder gemeinsam genutzten Speicher). Die erweiterten Fähigkeiten des L3 Routers, wie durch den neuen konvergierten Knoten implementiert, werden im Nachstehenden weiter beschrieben.
-
Die Funktionalitäten eines konvergierten Knotens können in Software implementiert werden, obwohl zusätzliche Effizienzen in einer Hardware-Lösung gewonnen werden können (z.B. unter Verwendung von Beschleunigern und/oder FPGAs). Zum Beispiel kann eine Hardware-Version eine Zero-Copy-Ausbildung verwenden, was bedeutet, dass sie das Kopieren/Bewegen von Daten zu jedem Subsystem zur Behandlung vermeiden würde, und stattdessen die Funktionalität/den Dienst/die Operation zu den Daten selbst bewegt, gemäß der Philosophie „das Verarbeiten zu den Daten bewegen“.
-
Der konvergierte Knoten bietet eine Lösung für einen Netzstau, die auf eine kosteneffiziente Weise skalierbar ist und eine höhere Leistung liefert als bestehende Lösungen. Zum Beispiel können Router mit konvergiertem Knoten signifikante Kosten- und Leistungsvorteile für Netzbetreiber und andere Einheiten liefern, die Server für ein Edge Computing in realen Netzen bereitstellen, insbesondere in Bezug auf Video- und visuelle Datenströme. Zusätzlich ist diese Lösung stark auf Kontexte anwendbar, wo die umgekehrten End-to-End-Ströme durch mehrere konvergierte Knoten hindurchgehen, wie wenn Daten nach geographischer Region organisiert werden und somit eine hierarchische oder Multi-Tier-Topologie durchlaufen (z.B. geschichtete administrative Domänen oder Clouds), was häufig der Fall ist bei Videoüberwachung, Energieüberwachung und Anwendungsfällen im Gesundheitswesen, unter anderen Beispielen.
-
Der konvergierte Knoten bietet auch Vorteile in Bezug auf zeitsensitive Fähigkeiten, wie die Nutzung von Zeitstempeln mit hoher Auflösung (z.B. um sowohl die in der Zeit eingeschränkte Lieferung als auch die zeitsensitive Koordination quer über mehrere Ströme zu erfüllen), die Implementierung von Time Coordinated Compute- (TCC) Fähigkeiten usw.
-
Wie im Vorstehenden angeführt, kann ein konvergierter Knoten implementiert werden, indem die Funktionalität eines traditionellen Routers, wie eines L3 Routers, erweitert wird. Der Prozessfluss innerhalb dieses erweiterten Routers mit „konvergiertem Knoten“ kann wie folgt sein: (1) das ernste Datenimplosionsproblem für IoT Edge- und Fog-Systeme verstehen und verwalten; (2) mehrere kontextuell zusammenhängende Ströme gleichzeitig verarbeiten; (3) hinter Paket-Header schauen, um zu analysieren, ob und wie ein Strom interessant oder bemerkenswert ist; (4) über die Paket-Header hinausschauen, um zu analysieren, ob und wie die Ströme zusammenhängen und „komprimiert“ werden könnten, im breiteren Sinn des Ausdrucks; (5) eine funktionelle Strategie identifizieren, damit ein einzelner neuer weitergehender Strom aufkommt, der verschiedene Funktionen für verschiedene Szenarien einsetzten kann, wodurch die Fähigkeit notwendig ist, dynamisch Funktionen/Dienste/Verfahren anzufordern und abzurufen; (6) den neuen Strom zur Wiederverwendung durch kontextuell zusammenhängende Stakeholder cachen, insbesondere jene, die mobil, drahtlos sind, eine geringe Energie aufweisen und/oder in der Nähe sind, zwecks einer größeren Ressourceneffizienz; (7) den neuen Strom in die umgekehrte Richtung lenken, was dort ist, wohin er unterwegs war; (8) die Option bereitstellen, den neuen Strom in andere Richtungen zu lenken, z.B. innerhalb einer lokalen Edge-Cloud und/oder quer über benachbarte Clouds; (9) das Routing, Computing und Caching von Subsystemen co-ausbilden, um die On-platform-Zeitverzögerung zu minimieren; (10) Zero-Copy HW Design-Techniken verwenden, um eine effiziente Übergabe von Daten zwischen Subsystemen zu implementieren; und (11) Zeitsynchronisationsfähigkeiten in der Plattform nutzen, um quer über mehrere Datenströme zu synchronisieren, in Vorbereitung auf die Analyse/Transformationsphase des N-zu-1-Prozesses.
-
Es gibt verschiedene Wege, auf denen von Strömen angenommen werden kann, dass sie kontextuell miteinander zusammenhängen. Zum Beispiel kann in einigen Ausführungsformen eine breite Korrelation zwischen dem Namen des Inhalts und verschiedenen Strömen verwendet werden. In einem ICN Kontext wird angenommen, dass alle Ströme kontextuell zusammenhängen, die auf ein spezifisches ICN Interessenpaket antworten, das um Daten mit einem bestimmten Inhalts„namen“ anfragt. Das System könnte die Einträge in der anstehenden Interessentabelle (PIT) erneut als Einträge in einem Verzeichnis für „kontextuell zusammenhängende“ Gruppen verwenden. In einem Nicht-ICN-Kontext kann das System weiterhin den Namen des Inhalts oder namensähnliche Attribute nutzen, um Ströme in kontextuell zusammenhängende Gruppen zu organisieren, wie die URL/URI des Inhalts, oder die Transportpaket-Header-Tupel (z.B. Sender- und Empfängeradressen und Portnummern), oder die Ströme, die von derselben Subnetzadresse stammen (z.B. gleiches Subnetzadressenpräfix). Die Verwendung von namensbasierten Techniken ist gegenüber der Verwendung einer Deep-Packet Inspection des Inhalts selbst vorzuziehen, das ein äußerst ressourcenintensiver Prozess ist. Alternativ dazu können in einigen Ausführungsformen in der visuellen Welt, getrennt von ICN, Ströme innerhalb einer „Region von Interesse“ (z.B. Nähe in Raum und Zeit) zu kontextuell zusammenhängenden Gruppen von Paketen organisiert werden.
-
In einigen Ausführungsformen kann ein konvergierter Knoten zum Beispiel die folgenden Fähigkeiten zusätzlich zur traditionellen Router-Funktionalität umfassen: (1) Analysieren von Daten in Datenströmen über Paket-Header hinaus; (2) Definieren, was es bedeutet, kontextuell zusammenzuhängen (z.B. innerhalb einer geographischen Region von Interesse, die demselben Anbieter gehört, dieselbe Version von Malware-Software betreibt usw.); (3) kollektives Verarbeiten von N kontextuell zusammenhängenden ankommenden Datenströmen; (4) Empfehlen einer Funktion, die quer über diese Ströme vorzunehmen ist, um sie zu „komprimieren“, bevor sie geroutet/gecacht werden; (5) Transformieren der N Ströme in einen einzigen, neuen Datenstrom, der weniger Ressourcen verbraucht; (6) potentielles Cachen/Speichern des neuen Stroms lokal, wie für eine Anforderung und einen Abruf durch benachbarte Sensoren in der Nähe, die zu dem neuen Strom beigetragen haben können, und/oder durch jene, die ein Interesse an den Ergebnissen haben; und (7) Routen des neuen Datenstroms zu seinem nächsten beabsichtigten stromaufwärtigen Ziel, das die nördliche Richtung sein kann, in der die Daten ursprünglich geflossen sind, jedoch auch eine breitere Verbreitung umfassen kann, wie in der Ost-West-Richtung zu Peer-Clouds oder in der südlichen Richtung zu interessierten Parteien.
-
Obwohl diese Funktionalen im Allgemeinen so beschrieben sind, dass sie in einem einzelnen konvergierten Knoten im umgekehrten Datenflussweg vorgenommen werden (z.B. wie in 62 gezeigt), können sie in einer kaskadierenden Weise angetroffen werden und mehrere Male wiederholt werden, bis der Datenstrom seinen endgültigen Archivruheort erreicht, wie es bei einem digitalen Überwachungssystem der Fall sein kann, das mehrere Ebenen von N-zu-1-konvergierten Datenströmen unterstützt. Dieser End-to-End-Datenstrom und die Verarbeitungs-Caching-Routing-Fähigkeiten, die ihn umgeben, können als Reverse Content Distribution Network (rCDN) bezeichnet werden. Die konvergierten Knoten werden als erweiterte Router entlang des End-to-End-Wegs in einem rCDN angesehen, wie in 63 gezeigt.
-
Der konvergierte Knoten unterscheidet sich von früheren L3 Lösungen dadurch, dass er es erfordert, dass der Router in seinen Datenstrom über den Paket-Header hinaus schaut, jedoch eher auf den Inhalt „Paketnutzlast“ fokussiert ist, was der traditionellere Fokus eines L3 Routers ist. Zusätzlich ist der konvergierte Knoten in der Lage, seine beschriebene Funktionalität vorzunehmen, während die Datenströme fliegend gegenüber post-facto sind. Der Router mit konvergiertem Knoten nimmt eine N-zu-1-Transformation vor, die einen Bereich von Verarbeitungsfähigkeiten repräsentieren kann, umfassend, jedoch nicht beschränkt auf Kompression, Verschlüsselung, Transcodierung, Markierung, Aggregation/Gruppieren einiger Flüsse in größere Flüsse auf der Basis der kontextuellen Gemeinsamkeit, Subsampling, Kombination (z.B. Stitching) und Analytik (z.B. was sich allgemein auf einen beliebig Typ der Analyse bezieht, egal ob es eine statische Analyse ist, maschinelles Lernen (ML), Deep Learing (DL) oder irgendeine andere Form künstlicher Intelligenz oder maschinellen Lernens).
-
In Bezug auf die Analytikfunktionalität des konvergierten Knotens kann der Prozess die Daten aus ihrem ursprünglichen Format herausnehmen und sie in ein anderes Format konvertieren. Dies könnte der Fall sein bei einer Zusammenfassung von Phänomenen innerhalb des Datenstroms, wie der Objekterkennung und Objektzählung, oder bei der Markierung von Phänomenen innerhalb des Datenstroms, um einen neuen Strom von Metadaten zu erzeugen, der das Auftreten interessanter Ereignisse im visuellen Sichtfeld verfolgt.
-
Ein Hauptvorteil des vorgeschlagenen Verfahrens ist, dass es auf eine beliebige dichte IoT Bereitstellung anwendbar ist, die an einer N-zu-1-Datenimplosion leidet, egal ob die Ströme Video/visueller Beschaffenheit sind. Ferner koppelt sich diese Technik problemlos mit Information-centric Network-Architekturen, obwohl sie von diesen nicht abhängig ist.
-
Es gibt zahlreiche neue Konzepte, die mit dem konvergierten Knoten assoziiert sind, umfassend: das ernste Datenimplosionsproblem für IoT Edge- und Fog-Systeme verstehend und verwalten; mehrere kontextuell zusammenhängender Ströme gleichzeitig verarbeiten; über Paket-Header hinausschauen, um zu analysieren, ob und wie ein Strom interessant oder bemerkenswert ist; über die Paket-Header hinausschauen, um zu analysieren, ob und wie die Ströme zusammenhängen und „komprimiert“ werden könnten (im breiteren Sinn des Ausdrucks); eine funktionelle Strategie identifizieren, damit ein einzelner neuer weitergehender Strom aufkommt, der verschiedene Funktionen für verschiedene Szenarien einsetzen kann, wodurch die Fähigkeit notwendig wird, dynamisch Funktionen/Dienste/ Verfahren anzufordern und abzurufen; den neuen Strom zur Wiederverwendung durch kontextuell zusammenhängende Stakeholder cachen, insbesondere jene, die mobil, drahtlos sind, eine geringe Energie aufweisen und/oder in der Nähe sind, zwecks einer größeren Ressourceneffizienz; den neuen Strom in die umgekehrte Richtung lenken, was dort ist, wohin er unterwegs war; die Option bereitstellen, den neuen Strom in andere Richtungen zu lenken, z.B. innerhalb einer lokalen Edge-Cloud und/oder quer über benachbarte Clouds; das Routing, Computing und Caching von Subsystemen co-ausbilden, um die On-platform-Zeitverzögerung zu minimieren; Zero-Copy HW Design-Techniken verwenden, um eine effiziente Übergabe von Daten zwischen Subsystemen zu implementieren; und Zeitsynchronisationsfähigkeiten in der Plattform nutzen, um quer über mehrere Datenströme zu synchronisieren, in Vorbereitung auf die Analyse/Transformationsphase des N-zu-1-Prozesses.
-
Automatisierte semantische Inferenz unter Verwendung von Smart Kameras
-
Maschinelles Lernen wird üblicherweise zur visuellen Objekterkennung unter Verwendung von Kameras verwendet. Smart Kameras verwenden zum Beispiel eine Objekterkennung auf der Basis von maschinellem Lernen (ML), um Objekt im Sichtfeld einer Kamera durch Trainieren einer ML Maschine unter Verwendung einer Gemeinsamkeit ähnlicher Objekte zu detektieren, die als Referenzschablone (RT) bezeichnet wird. Wenn eine Kamera ein zuvor ungesehenes Feld von Objekten scannt, legt sie Musterkennungsalgorithmen an, die Schablonenergebnisse erzeugen, welche mit Referenzschablonenwerten verglichen werden. Der ML Designer benennt die Referenzschablone als Weg, um das Objekt zu charakterisieren, das er erkennt. Nach dem Trainieren von zum Beispiel sphärischen Objekten kann die Referenzschablone einen Namen erhalten wie „Ball“ oder „Kugel“.
-
Um zwischen verschiedenen Typen von Objekten mit derselben Form zu unterscheiden, ist zusätzliches Training für jedes Objekt erforderlich (z.B. ein Ping-Pong-Ball, Basketball, Football usw.). Die Referenzschablone für einen Fußball unterscheidet sich von der Referenzschablone für abstraktere Formen, wie „Ball“ oder „Kugel“. Die Entwicklung einer RT Datenbank für ein Spektrum von Objekten im Bereich von hoch abstrakt bis spezifisch erfordert Training, dass für jede Objektklassifikation ausgebildet ist, was laborintensiv sein kann.
-
Diese Objekterkennungsansätze haben verschiedene Nachteile. Die Objekterkennung erfordert zum Beispiel ein Training für jedes spezifische Objekt, das erkannt werden muss. Ferner greift die Erkennung abstrakter Objekte typischerweise auf eine Konvention zurück, die weniger Präzision in der RT Übereinstimmungswahrscheinlichkeit gestattet. Zum Beispiel kann eine schwache Wahrscheinlichkeit (z.B. eine 70 % Übereinstimmung anstelle einer 99 % Übereinstimmung) verwendet werden kann, um zu dem Schluss zu gelangen, dass ein abstrakterer „Ball“ übereingestimmt wird, wenn die Sichtsubjekte spezifischer sind (z.B. Ping-Pong-Ball, Basketball, Football). Dieser Ansatz würde einen Football jedoch nicht übereinstimmen, der ein Ball ist, jedoch nicht kugelförmig.
-
Ferner wird üblicherweise eine Objektklassifikation unter Verwendung von formalem logischen Modellieren, wie Taxonomien, Ontologien und semantische Implikations-Tags, verwendet, um „Dinge“ hinsichtlich einer reichhaltigen Klassenbibliothek zu beschreiben, die spezifische Dinge mit abstrakten Dingen in Beziehung setzt. Semantische Implikationsverfahren bauen Klassenhierarchien von Objektabstraktionen, wobei Objekte nahe der Wurzel abstrakter sind als Objekte an den Blättern. Logikprozessoren können über die Fuzzy-Äquivalenz von Blattknotenobjekten schlussfolgern, indem durch Durchqueren der Hierarchie ein gemeinsamer Stammknoten gefunden wird. Semantische Bibliotheken greifen jedoch auf allgemein akzeptierte Tagging-Syntax für Objekte in der Hierarchie zurück, um diese korrekt mit einer Anwendungsdomäne in Beziehung zu setzen.
-
Semantische Datenbanken und Ontologien können auch größere Speicherressourcen erfordern, und Aktualisierungen des Modells erfordern häufig eine menschliche Überprüfung, um sicherzustellen, dass semantische Beziehungen richtig sind.
-
Demgemäß veranschaulichen 66 bis 68 Beispiele von Ausführungsformen zum Vornehmen einer automatisierten semantischen Ableitung visueller Objekte unter Verwendung von Smart Kameras. Diese Ausführungsformen integrieren sowohl ML-basierte Objekterkennungs- als auch semantische Modellierungstechniken innerhalb von Smart Kameras, wodurch effektivere Schlussfolgerungen über Objektinteraktionen ermöglicht werden, die innerhalb des Sichtfelds auftreten.
-
Die beschriebenen Ausführungsformen bieten zahlreiche Vorteile. Zum Beispiel können modernere Smart Kameras erzeugt werden, indem verschiedenste Technologien kombiniert werden, wie 3D Kameras, spezialisiertes maschinelles Lernen und/oder neuronale Netzprozessoren (z.B. Movidius), moderne Speichertechnologien, wie 3D XPoint und Optane usw. Diese verstärkte Kameratechnologie kann als vierdimensionale (4D) Smart Kamera-Technologie bezeichnet werden.
-
Die 4D Smart Kamera-Technologie ermöglicht es zum Beispiel, dass die Kamera Schlussfolgerungen über Objektinteraktionssemantik anstellt. Angesichts einen Standbilds eines Picknicks am Strand kann eine Kamera zum Beispiel XIF (austauschbares Bilddateiformat) Daten generieren, die nicht nur einen Teller, einen Strandball und die Sonne erkennt, sondern auch das Bild „Picknick am Strand“ auto-benennt. Kombiniert mit GPS Daten könnte der auto-generierte Name auch den Namen des spezifischen Strands (z.B. „Picknick in Cannon Beach“ umfassen.
-
Ferner gestattet eine semantische Modellierung mit Ontologie das dynamische Hinzufügen ungesehener Objektklassen. Angesichts eines Objekts, das nicht in der Ontologie enthalten ist, können zum Beispiel Benutzerinteraktionen wie Crowdsourcing genutzt werden, um automatisch ein neues Tag zu erzeugen und dieses in die Taxonomie aufzunehmen.
-
Als Beispiel könnte diese Technologie für ein Fussballsportereignis verwendet werden, um den Spielball von anderen Bällen in der Nähe zu unterscheiden (z.B. Bällen, die nicht im Spiel sind, auf den Seitenlinien und/oder auf den Tribünen), das Feld, das Tor, den Ball im Spiel und Spielerpositionen zu analysieren und/oder Regelverstöße zu detektieren (z.B. Fouls und Strafen, wie einen Abseitsspieler). Auf diese Weise ermöglicht es die Technologie der Kamera, eine stärkere Rolle beim Schiedsrichtern des Spiels zu übernehmen.
-
In einigen Ausführungsformen können zum Beispiel die folgenden Komponenten verwendet werden, um die 4D Smart Kamera-Technologie zu implementieren: (1) eine ML oder neuronale Netzrechenplattform (z.B. Movidius oder Neron Plattform) mit einer Referenzschablonen- (RT) Datenbank zur Objekterkennung; (2) eine Ontologie/Taxonomiedatenbank, die sich auf einen reichhaltigen Satz von Objekten in verschiedenen Abstraktionsstufen bezieht; (3) ein Tag-Vokabular, das von der Ontologiedatenbank abgeleitet ist und verwendet wird, um Objekte in der RT Datenbank zu taggen; (4) ein Satz von zielorientierten Inferenzregeln, die dafür ausgebildet sind, um „interessante“ Objektinteraktionsbedingungen zu detektieren (z.B. Regelverstöße während eines Sportereignisses, ein Picknick am Strand usw.); und/oder (5) Cache-Wärmer, die kontinuierlich die Caches mit interessanten Referenzschablonen, Ontologien und Regeln aktualisieren.
-
66 veranschaulicht ein Beispiel einer Ausführungsform eines 4D Smart Kamera Systems 6600. Das veranschaulichte Beispiel umfasst eine 4D Smart Kamera 6610, ein Repository 6620 von Referenzschablonen, Ontologien und/oder Regeln, und eine Szene oder Umgebung 6630, um verarbeitet zu werden.
-
Zum Beispiel umfasst die 4D Smart Kamera 6610 eine Kamera 6611, die eine Trainingsszene(n) 6612 beobachtet, wo bekannte Objekte unter Verwendung eines Tag-Vokabulars getaggt werden, das von einer Ontologie geliefert wird. Der Training-Agent kann das Training durch Auswählen verschiedenster semantisch ähnlicher Objekte mit unterschiedlichen Formen oder Abmessungen optimieren (z.B. Football, Rugbyball, Murmel, Ping-Pong-Ball, Planet usw.), in Kenntnis dass die Objektontologie auch „Kugel“ semantisch ableiten lässt, da die Ontologie für „Ball“ auch „Kugel“ sowie andere abstraktere und spezialisiertere Darstellungen von „Ball“ beschreibt. Die Referenzschablonenwerte werden in einem RT Repository 6620 zur späteren Verwendung durch diese oder eine andere 4D Smart Kamera 6610 gespeichert.
-
Anschließend an das Training beobachtet die Kamera 6611 eine Szene 6630, die Objekte enthält, welche unter Verwendung eines ML oder neuronalen Netz-Objekterkennungsprozessors (ORP) 6613 übereingestimmt werden (z.B. Intel Movidius oder Neuron). Ein Referenzschablonen- (RT) Cache 6618a (z.B. Intex 3DXpoint) enthält einen Satz von Objekterkennungs-Referenzschablonen, die für üblicherweise erkannte Objekte ausgebildet sind. Je häufiger ein Objekt erkannt wird, desto größer ist die Wahrscheinlichkeit, dass die Referenzschablone in dem Cache 6618a gefunden wird.
-
Der Objekterkennungsprozessor 6613 identifiziert mehrere Objekte (so viele wie in der Szene angesichts verfügbarer Ressourcen gefunden werden können) und leitet sie zu einem Semantikprozessor (SP) 6614.
-
Der Semantikprozessor 6614 verwendet einen Ontologie-Cache 6618b, um die Ontologieelemente zu erhalten, welche die verschiedenen semantisch implizierten Objekt mit einem breiteren semantischen Kontext in Beziehung setzen. Diese Objekte werden einem Inferenzprozessor (IP) 6615 übermittelt, wo zielgerichtete Regeln angewendet werden. Die Regeln sind ein Satz von übereinstimmenden Kriterien, die, wenn sie übereinstimmen, einen signifikanteren Kontext implizieren (z.B. ein Fußballspiel, ein Ereignis am Strand).
-
Der Inferenzprozessor 6615 kann die Objekterkennung und semantische Implikation optimieren, indem Hinweise auf erwartete Objekte gegeben werden. Wenn zum Beispiel eine Regel des Inferenzprozessors 6615 ein „Picknick am Strand“ beschreibt, könnte der Objekterkennungsprozessor 6613 erwarten, zusätzliche Objekte zu finden, wie „Sonne“, „Meer“, „Teller“ usw.
-
Der Objekterkennungsprozessor 6613 kann eine Verarbeitungspriorität für die Erkennung erwarteter Objekte festlegen. Wenn sie gefunden werden, können die neuen Objekte zur semantischen Implikation verarbeitet werden und zu der Referenzschablone (RT) hinzugefügt werden, die vollständiger mit einem der möglichen Kontext übereinstimmen können. Daher kann eine 4D Smart Kamera 6610 eine Regelübereinstimmung optimieren, um auf den Szenekontext zu fokussieren, der am wahrscheinlichsten der aktuelle Kontext ist.
-
Wenn der Inferenzprozessor 6615 eine Regel mit hoher Wahrscheinlichkeit übereinstimmt, offenbart er seine Wahl für den Szenenkontext und das Szenario gegenüber einem Anwendungsprozessor 6616, der für verbesserte Menschen-Computer-Interaktionen verwendet werden kann. Wenn hingegen der Inferenzprozessor 6615 eine Regel mit niedrigerer Wahrscheinlichkeit übereinstimmt, kann er versuchen, die Wahrscheinlichkeit durch das Liefern von Hinweisen (wie im Vorstehenden beschrieben) zu verbessern, oder er kann Cache-Aktualisierungsanforderungen an das Regel-Repository 6620 senden und dieses anweisen, „ähnliche“ Regeln zu liefern, die mit einem höheren Score (z.B. höher als die Regel der ersten Wahl) übereinstimmen könnte.
-
Ähnlich kann der semantische Prozessor 6614 seinen Cache aufwärmen (z.B. unter Verwendung des Cache-Wärmers 6617b), indem Ontologiedaten angefordert werden, die „nahe“ bei den übereinstimmenden Ontologieelementen liegen.
-
67 veranschaulicht ein Flussdiagramm 6700 für ein Beispiel einer Ausführungsform eines Referenzschablonen-Trainings mit einem semantischen Implikations-Tagging. In einigen Ausführungsformen kann das Flussdiagramm von 67 zum Beispiel als Voraussetzung für das Flussdiagramm von 68 angewendet werden. Sobald eine Referenzschablonen- (RT) Datenbank ausreichend populiert ist (z.B. unter Verwendung des Flussdiagramms von 67), kann sie dann verwendet werden, um die Operationen vorzunehmen, die in Verbindung mit 68 beschrieben werden.
-
Das Flussdiagramm beginnt bei Block 6702, wo die Ontologiedatenbank in einen 4D Smart Kamera-Ontologie-Cache geladen wird. Das Flussdiagramm geht dann zu Block 6704 weiter, wo die RT Trainingsmaschine bestehende Ground Truth-Trainingswerte verwendet, um eine ungefähre Übereinstimmung mit dem Schablonenwert zu finden. Das Flussdiagramm geht dann zu Block 6708 weiter, wo die RT Trainingsmaschine Fragen und Antworten mit einem oder mehreren Benutzern austauscht, um die Tag-Auswahl zu verfeinern, wobei die Ontologie verwendet wird, um zu spezifischeren Objektklassifizierungen zu navigieren.
-
Das Flussdiagramm geht dann zu Block 6710 weiter, wo bestimmt wird, ob eine Mehrheit der Benutzerantworten eine spezifischere Objektklassifikation identifiziert. Wenn die Antwort in Block 6710 NEIN ist, geht das Flussdiagramm dann zu Block 6718 weiter, wo die Referenzschablone (RT) mit einem generischen Tag (erhalten von Ontologie) getaggt wird und für nachfolgende Q/A durch zusätzliche Benutzer (wenn verfügbar) markiert wird. Wenn die Antwort in Block 6710 JA ist, geht das Flussdiagramm dann zu Block 6712.
-
In Block 6712 wird bestimmt, ob die vom Benutzer beantwortete Klassifikation im Ontologie-Cache ist. Wenn die Antwort in Block 6712 NEIN ist, geht das Flussdiagramm dann zu Block 6714, wo ein neues Tag zur Ontologie hinzugefügt wird. Wenn die Antwort in Block 6712 JA ist, geht das Flussdiagramm dann zu Block 6712 weiter, wo die Referenzschablone (RT) mit dem vom Benutzer identifizierten Tag (erhalten von Ontologie) getaggt wird.
-
An diesem Punkt kann das Flussdiagramm vollendet sein. In einigen Ausführungsformen kann das Flussdiagramm jedoch neu starten, und/oder bestimmte Blöcke können wiederholt werden. Zum Beispiel kann in einigen Ausführungsformen das Flussdiagramm bei Block 6702 neu starten, um das den Referenzschablonen-Trainingsprozess fortzusetzen.
-
68 veranschaulicht ein Flussdiagramm 6800 für ein Beispiel einer Ausführungsform einer Szenenauswahl. Zum Beispiel kann das veranschaulichte Flussdiagramm verwendet werden, um eine Szenenauswahl auf der Basis des Aussehens eines Objekts und von Aktionen verwendet werden, die einer Regelbasis von Szenen entsprechen, von denen bekannt ist, dass sie für den Benutzer interessant sind.
-
Das Flussdiagramm von 68 kombiniert eine Objekt- und Aktionserkennung unter Verwendung visueller maschineller Lerntechniken mit semantischer Verarbeitung und Inferenzverarbeitung, um einen Satz von Szenen zu konstruieren, in denen erfasste Objekte und Aktionen interagieren können. Inferenzregeln beschreiben mögliche / erwartete Interaktionsmuster und können zusätzliche / erwartete Objekte und Aktionen vorschlagen, die aktuell nicht von dem (den) Sensor(en) detektiert werden. Hinweise können dem Sensor gegeben werden, welche die Erfassungsaktivität besser kalibrieren, um erwartete Objekt / Aktionen zu erkennen. Zum Beispiel kann der Hinweis einen niedrigere Schwelle für eine ML Übereinstimmung gestatten, um eine Varianz bei realen Objekten zu gestatten, oder er kann von einem semantischen Prozessor verwendet werden, um nach benachbarten Objekten / Aktionen zu suchen, um RT Werte zu identifizieren, die ursprünglich nicht Teil des RT Caches waren.
-
Dieser Ansatz macht die Visual Content-Erkennungs-Software und -Hardware „smarter“, indem die Szene gemäß der erwarteten oder üblichen Interaktionsdynamik kalibriert wird. Dies wird die Erkennungslatenz senken und die Erkennungsgenauigkeit für Anwendungen zur „assistiven Sensibilisierung der Benutzer“ verbessern.
-
Das Flussdiagramm beginnt bei Block 6802, wo ein 4D Smart Kameraobjekt- und Aktionserkennungsprozessor (ORP) Objekte und Aktionen unter Verwendung einer Referenzschablonen- (RT) Datenbank und/oder eines Caches detektiert.
-
Das Flussdiagramm geht dann zu Block 6804 weiter, wo der Objekterkennungsprozessor ein RT Tag mit der erfassten Schablone assoziiert und die getaggte Schablone (TT) zu einem semantischen Prozessor (SP) weiterleitet.
-
Das Flussdiagramm geht dann zu Block 6806 weiter, um zu bestimmen, ob ein weiteres Objekt oder eine weitere Aktion erkannt wurde. Wenn die Antwort in Block 6806 NEIN ist, geht das Flussdiagramm zurück zu Block 6802. Wenn die Antwort in beliebig 6806 JA ist, geht das Flussdiagramm zu Block 6808 weiter, wo angesichts mehrerer TT Fälle der semantische Prozessor die Ontologiedatenbank und/oder den Cache unter Verwendung eines Tags durchsucht, um einen gemeinsamen Ontologiestamm zu identifizieren.
-
Das Flussdiagramm geht dann zu Block 6810 weiter, um zu bestimmen, ob ein erwartetes Objekt oder eine erwartete Architektur in der aktuellen Szene ist. Wenn die Antwort in Block 6810 NEIN ist, geht das Flussdiagramm dann zu Block 6822 weiter. Wenn die Antwort in Block 6810 JA ist, geht das Flussdiagramm dann zu Block 6812 weiter, wo das erwartete Objekt oder die erwartete Aktion mit einer aktuellen Szene assoziiert wird, und die Szene wird dann zu einer Inferenzmaschine (IE) weitergeleitet.
-
Das Flussdiagramm geht dann zu Block 6814, wo die Inferenzmaschine eine Regeldatenbank und/oder einen Cache konsultiert, um die aktuelle Szene mit anderen möglichen Szenen übereinzustimmen.
-
Das Flussdiagramm geht dann zu Block 6816, um zu bestimmen, ob der aktuelle Block in eine zweite Szene passt, die besser passt als die erste Szene. Wenn die Antwort in Block 6816 NEIN ist, geht das Flussdiagramm zu Block 6820. Wenn die Antwort in Block 6816 JA ist, geht das Flussdiagramm zu Block 6818, wo die aktuelle Szene zur zweiten Szene umgeschaltet wird, und das Flussdiagramm geht dann zu Block 6820 weiter.
-
In Block 6820 wird bestimmt, ob zusätzliche erwartete Objekte und/oder Aktionen in der aktuellen Szene gefunden werden. Wenn die Antwort in Block 6820 NEIN ist, geht das Flussdiagramm dann zu Block 6822. Wenn die Antwort in Block 6820 JA ist, geht das Flussdiagramm dann zu Block 6824 weiter.
-
In Block 6822 werden Erkennungshinweise an den Objekterkennungsprozessor und/oder den semantischen Prozessor gesendet, und das Flussdiagramm geht zu Block 6802 zurück.
-
In Block 6824 wird bestimmt, ob der Score der aktuellen Szene über einer akzeptablen Genauigkeitsschwelle liegt. Wenn die Antwort in Block 6824 NEIN ist, geht das Flussdiagramm zu Block 6816 zurück. Wenn die Antwort in Block 6824 JA ist, geht das Flussdiagramm dann zu Block 6826 weiter, wo die übereingestimmte Szene an einen Benutzer berichtet wird.
-
An diesem Punkt kann das Flussdiagramm vollendet sein. In einigen Ausführungsformen kann das Flussdiagramm jedoch neu starten, und/oder bestimmte Blöcke können wiederholt werden.
-
Visual Fog Stream Multiplexing zur verbesserten Sicherheit
-
Visual Fog-Bereitstellungsszenarien können tausende von Kamerasensoren umfassen, die Videostreams an tausende Zuseher übertragen. Beim live Media Streaming können Streams nicht direkt vom Sensor an den Betrachter geliefert werden und können von Zwischenknoten gepuffert, gestreamt und/oder wiedergegeben werden. Diese Zwischenknoten nehmen im Wesentlichen eine Hop-by-Hop-Routing-Funktion vor. Dadurch wird es für potentielle Angreifer leichter, als Routing-Knoten zu posieren, um verschiedene Typen von Man-in-the-Middle- (MITM) Angriffen zu versuchen.
-
Bestehende Lösungen vertrauen den Puffer / Routing-Knoten, um „böswillige“ Wege zu vermeiden und Inhalt verborgen zu halten (wenn nicht bereits verschlüsselt). Da die Video-Streaming-Formate Zwischenknoten unterstützen müssen, sie sie für ein böswilliges Abfangen der Übertragung anfällig, und es gibt nicht viel, was ein Sender tun kann, um solche Attacken zu verhindern. Wenn zum Beispiel Inhalt verschlüsselt wird, müssen der Sender und Empfänger den Verschlüsselungsschlüssel haben, in Visual Fog-Anwendungsfällen könnte es jedoch tausende von Zusehern und tausende von Sendern geben, die jeweils unterschiedliche Schlüssel benötigen. Die Sicherstellung, dass die richtigen Schlüssel zur rechten Zeit verfügbar sind, ist keine skalierbare Lösung.
-
Demgemäß veranschaulichen 69 bis 70 Ausführungsformen, die mit Visual Fog Stream Multiplexing zur verbesserten Sicherheit assoziiert sind. Der beschriebene Ansatz verwendet Zwischen-Routing-Fähigkeiten zu seinem Vorteil durch Randomisieren der Wahl, welche (r) Zwischenknoten verwendet wird (werden), um zu verhindern, dass Angreifer eine Route antizipieren (und daher auf einen Man-in-the-Middle-Angriff abzielen).
-
Der beschriebene Ansatz multiplext auch Inhalt quer über mehrere Routen, so dass, auch wenn ein Stream erfolgreich angegriffen wird, nur ein Teilsatz des Inhalts den Angreifermanipulationen ausgesetzt wird. Wenn zum Beispiel ein Angreifer Rahmen in einen Stream einschleust, gäbe es eine Schwelle von M Streams, die gleich sind, gegenüber einer (N-M) Minderheit von Streams, die verschieden sind. Diese können ignoriert werden.
-
Streams können nach Bedarf unter Verwendung von Schlüsseln verschlüsselt werden, die für jede Streaming-Sitzung generiert werden (z.B. unter Verwendung von Diffie-Hellman). Wenn der legitime Router / die Zwischenknoten überprüft werden und ein Mitglied einer Enhanced Privacy ID- (EPID) Gruppe, können sie als vertrauenswürdige Ver-mittler authentifiziert werden, was es für den Angreifer schwierig macht, sich selbst als Vermittler zu bestätigen. Alternativ dazu kann eine Gruppenmitgliedschaft unter Verwendung traditioneller asymmetrischer Kryptographie bestätigt werden, indem ein Gruppennamensattribut einem Zertifikat zugewiesen wird, und indem asymmetrische Schlüssel häufig zurückgeführt werden. Eine andere Alternative auf der Basis symmetrischer Schlüsselkryptographie nutzt den symmetrischen Gruppenschlüssel gemeinsam mit jedem Gruppenteilnehmer und führt den Schlüssel jedes Mal zurück, wenn ein Gruppenmitglied aus der Gruppe entfernt wird.
-
Die beschriebenen Ausführungsformen bieten zahlreiche Vorteile. Dieser Ansatz erhöht zum Beispiel die Verfügbarkeit von Visual Fog-Videoinhalt aufgrund einer eingebauten Redundanz. In Anwendungsfällen, wo die Bandbreite kein Problem ist, gilt die Redundanz für alle Rahmen. In Anwendungsfällen, wo die Bandbreite ein Problem ist, gilt die Redundanz für Schlüsselrahmen und gilt gegebenenfalls für andere Rahmen. Zum Beispiel müssen beim live Video-Streaming I-Rahmen eine Redundanz aufweisen, während P-Rahmen oder B-Rahmen keine Redundanz aufweisen können; beim live 360 VR Video-Streaming muss ein Panorama mit niedriger Auflösung eine Redundanz aufweisen, während benutzerspezifische Ansichten mit hoher Auflösung keine Redundanz aufweisen können.
-
Zusätzlich stellt der M-of-N-Schwellenmechanismus sicher, dass Man-in-the-Middle-Angriffe weniger erfolgreich sind, da M erfolgreiche Angriffe notwendig sind, um die Betrachter zu betrügen. In Anwendungsfällen, wo die Bandbreite ein Problem ist, ist die Lieferung von Schlüsselrahmen, die benötigt werden, um andere Rahmen zu rekonstruieren, garantiert.
-
Ferner kann die Schlüsselverwaltung skalieren, um das M-of-N und das Redundanz-Fan out aufzunehmen, EPID Gruppenschlüssel können verwendet werden, um vertrauenswürde Vermittler / Router-Knoten zu authentifizieren, und die Randomisierung von Routen macht es für Angreifer schwierig, auf bestimmten Inhalt abzuzielen.
-
69 veranschaulicht ein Beispiel einer Ausführungsform eines Systems 6900 für Visual Fog Stream Multiplexing.
-
Das System besteht aus einer Visual Fog-Kamera und/oder einem Sensor 6910 und einem oder mehreren Abonnenten (Betrachtern) 6930 eines Content Streams. Content Streams können unter Verwendung eines Satzes von Zwischenknoten 6920a-g konsumiert werden, die Videoinhalt puffern, speichern und weiterleiten und die Routing-Knoten genannt werden. Es kann mehrere (N) Kopien des Content Streams geben, der von der Kamera 6910 an einen oder mehrere Abonnenten 6930 übertragen wird, so dass mehrere Abonnenten Inhalt diskret (mit verschiedener Wiedergabekontrolle) konsumieren können. Große Content Streams können in mehrere Content Bilder geteilt werden, die in der Kamera 6910 geteilt werden und beim Abonnenten zusammengefügt werden. Puffern und andere Streaming Techniken können verwendet werden, um ein nahtloses Streaming-Erlebnis zu bieten, wenn gewünscht.
-
Der veranschaulichte Ansatz erzeugt zusätzliche redundante Kopien, die über verschiedene Routen kommuniziert werden, welche einige Zwischen-Routing-Knoten 6920 involvieren. Jeder Routing-Knoten 6920 randomisiert seine Auswahl des nächsten Hop-Knotens, so dass potentielle Angreifer eine Endroute nicht leicht vorhersagen können. Der (die) Abonnent(en) 6930 abonniert (abonnieren) absichtlich mindestens (M) redundante Kopien des Inhalts, so dass sie einen M-of-N-Vergleich redundanter Streams vornehmen können. Der Zweck des Vornehmens des Vergleichs ist, ein mögliches Manipulieren zu detektieren. Wenn zum Beispiel ein böswilliger Routing-Knoten (R3) sich selbst in eine Route einsetzt, würde es (M-1) redundante Kopien des Inhalts geben, mit denen zu bestimmen ist, welche die gültige Kopie ist.
-
In Anwendungsfällen, wo die Bandbreite ein Problem ist, erstellt der veranschaulichte Ansatz nur zusätzliche redundante Kopien von Schlüsselrahmen, während selektiv redundante Kopien anderer Rahmen erzeugt werden. Ein anwendungsspezifisches Verhältnis zur Bestimmung des Prozentsatzes der Redundanz kann angesichts der Netzinfrastruktur berechnet werden. Alternativ dazu kann das Verhältnis auch online auf der Basis von QoS (z.B. unter Verwendung einer PID Steuereinheit) eingestellt werden.
-
Die folgende Funktion kann zur Bestimmung der Gesamtanzahl von Routen verwendet werden: Summe = Produkt(Count(S), Count(N)); wobei der Abonnent Sx M Kopien aus mindestens N empfangenen Kopien der gesamten gesendeten Kopien auswählt. Dieser Ansatz wird verwendet, wenn es nicht praktisch ist, eine Kryptographie, einen Schlüsselaustausch und/oder eine Authentifizierung zu implementieren.
-
In einigen Fällen kann es praktisch sein, Überprüfungsprozeduren für Routing-Knoten zu implementieren, wo die Entscheidung zur Vornahme der Routing-Funktion gesteuert werden kann. Unter diesen Bedingungen wird den Routing-Knoten eine EPID Gruppenbescheinigung zugewiesen, die sie autorisiert, als Routing-Knoten zu arbeiten. Ein EPID Gruppenschlüssel kann verwendet werden, um Routing-Knoten zu authentifizieren:
wobei z die Anzahl von Routing-Knoten (R) + Abonnenten (S) + 1 Kamera (C) ist.
-
Der EPID Privatschlüssel kann verwendet werden, um einen Integritätsprüfwert zu zeichnen, der mit jedem Bild assoziiert ist. Wenn ein Inhalt zu verschlüsseln ist, kann alternativ dazu ein Diffie-Hellman-Schlüsselaustausch vor der Inhaltsbereitstellung vorgenommen werden, wobei GA und GB Werte von dem EPID Privatschlüssel (K-1 Xn) gezeichnet werden. Der Routing-Knoten (oder Abonnent), der ausgewählt wird, um den Inhalt zu empfangen, verifiziert die Signatur unter Verwendung des EPID öffentlichen Schlüssels (Kx) . Dies stellt sicher, dass nur autorisierte Routing-Knoten die Inhaltsbilder handhaben können, wodurch das Potential für einen erfolgreichen Man-in-the-Middle-Angriff minimiert wird.
-
70 veranschaulicht ein Flussdiagramm 7000 für ein Beispiel einer Ausführungsform von Visual Fog Stream Multiplexing.
-
In dem veranschaulichten Flussdiagramm kann zum Beispiel eine Kamera mehrere Kopien eines Bilds durch ein Multi-Hop-Routing-Netz senden, wobei ein Angreifer nicht leicht vorhersagen kann, welcher Router oder MITM Hosts anzugreifen sind, und nicht leicht eine Schwelle T von Knoten beeinflussen kann, um die Schwellenpolitik des Abonnenten zu täuschen.
-
Das Flussdiagramm beginnt bei Block 7002, indem bestimmt wird, ob ein bestimmter Rahmen ein „Schlüssel“rahmen ist. Wenn die Antwort in Block 7002 JA ist, geht das Flussdiagramm zu Block 7010. Wenn die Antwort in Block 7002 NEIN ist, geht das Flussdiagramm zu Block 7004.
-
In Block 7004 wird bestimmt, ob der Rahmen ein redundanter Rahmen ist. Wenn die Antwort in Block 7400 NEIN ist, geht das Flussdiagramm zu Block 7010. Wenn die Antwort in Block 7004 JA ist, geht das Flussdiagramm zu Block 7006.
-
In Block 7006 wird bestimmt, ob die aktuelle Redundanz (µ) größer ist als die zulässige Redundanz (r) : µ > r? Wenn die Antwort in Block 7006 NEIN ist, ist das Flussdiagramm vollendet. Wenn die Antwort in Block 7006 JA ist, geht das Flussdiagramm zu Block 7008.
-
In Block
7008 wird bestimmt, ob die folgende Gleichung erfüllt wird:
Wenn die Antwort in Block
7008 NEIN ist, ist das Flussdiagramm vollendet. Wenn die Antwort in Block
7008 JA ist, geht das Flussdiagramm zu Block
7010 weiter.
-
In Block
7010 wird ein Rahmenzähler F inkrementiert: F = F + 1. Das Flussdiagramm geht dann zu Block
7012, wo die folgende Gleichung berechnet wird:
Das Flussdiagramm geht dann zu Block
7014, wo die Kamera einen N > M Wert auswählt.
-
Das Flussdiagramm geht dann zu Block 7016, um einen Routing-Knoten Rx zu schließen, wobei x = Count(1,N). Das Flussdiagramm geht dann zu Block 7018, um zu bestimmen, ob der Routing-Knoten Rx näher beim Ziel S liegt. Wenn die Antwort in Block 7018 NEIN ist, geht das Flussdiagramm zu Block 7016 zurück. Wenn die Antwort in Block 7018 JA ist, geht das Flussdiagramm zu Block 7020 weiter.
-
In Block 7020 wird bestimmt, ob x größer ist als N: x > N? Wenn die Antwort in Block 7020 NEIN ist, geht das Flussdiagramm zu Block 7016 zurück. Wenn die Antwort in Block 7020 JA ist, geht das Flussdiagramm zu Block 7022, wo der Sender eine Diffie-Hellman-Geheimganzzahl a und andere Werte G und P wählt und A = Ga mod P berechnet. Das Flussdiagramm geht dann zu Block 7024 weiter, wo der Sende eine Nachricht M1 sendet, gezeichnet mit K-1 Xn.
-
Das Flussdiagramm geht dann zu Block 7026, um zu bestimmen, ob der nächste Knoten der Abonnent S ist. Wenn die Antwort in Block 7026 NEIN ist, geht das Flussdiagramm zu Block 7028 weiter. Wenn die Antwort in Block 7026 JA ist, geht das Flussdiagramm zu Block 7030 weiter.
-
In Block 7028 wählt das Routing-Netz den nächsten Routing-Knoten zufällig aus und liefert die Nachricht M1 an den nächsten Knoten, und das Flussdiagramm geht zu Block 7022 zurück.
-
In Block 7030 wählt der Abonnent einen Wert N, der kleiner ist als N, und M/N erhält einen Schwellenwert T, der ein akzeptables Verhältnis beschreibt.
-
Das Flussdiagramm geht dann zu Block 7032 weiter, um zu bestimmen, ob M/N größer ist als T: M/N > T? Wenn die Antwort in Block 7032 NEIN ist, ist das Flussdiagramm vollendet. Wenn die Antwort in Block 7032 JA ist, geht das Flussdiagramm zu Block 7034 weiter.
-
In Block 7034 wird bestimmt, ob irgendeine Nachricht in dem Satz von Nachrichten M1(0,...,N-1) verschieden ist. Wenn die Antwort in Block 7034 JA ist, geht das Flussdiagramm zu Block 7036 weiter, wo die aktuelle Route zu einer Blacklist hinzugefügt wird, und ein Blacklist-Zähler B wird inkrementiert. Wenn die Antwort in Block 7034 NEIN ist, geht das Flussdiagramm zu Block 7038 weiter, wo der Abonnent die Nachricht M1 verifiziert und ihren Inhalt sieht.
-
An diesem Punkt kann das Flussdiagramm vollendet sein. In einigen Ausführungsformen kann das Flussdiagramm jedoch neu starten, und/oder bestimmte Blöcke können wiederholt werden.
-
Privacy-schützendes Visual Question Answering (VQA) mit Sanitisierung
-
Visual Question Answering (VQA) involviert Computing Systeme, die, angesichts einer bestimmten visuellen Darstellung (z.B. eines Bilds), in der Lage sind, automatisch Fragen zu beantworten, die von Menschen in einer bestimmten Form oder Syntax (z.B. einer natürlichen Sprache) gestellt werden. VQA dient als grundlegendstes Mittel für Endbenutzer, um mit einer Vielfalt visueller Daten leicht zu interagieren.
-
In realen Umgebungen werden Videos praktisch überall aufgezeichnet (z.B. bei allen Einzelhändlern und an jeder Straßenecke). Standortgebundene Einzelhändler können zum Beispiel wünschen, so viele Videodaten wie möglich zu sammeln, um (verwertbare) Einsichten über das Kundenverhalten zu sammeln, während Kunden wünschen können, die Offenlegung ihrer Identitäten und/oder anderer persönlicher Informationen zu verhindern.
-
Bestehende visuelle Verarbeitungssysteme leiten jedoch typischerweise Analytik und Einsichten aus Rohbildern als Eingabe ab (z.B. durch das Generieren von Aufmerksamkeitskarten), welche die Privacy von Menschen beeinträchtigen können, die in den Bilder aufgenommen sind, da sie ihre Identität und/oder andere persönliche Informationen offenlegen können.
-
Demgemäß präsentiert diese Offenbarung ein Privacy-schützendes VQA System, das topologische raumzeitliche Zwischendarstellungen verwendet, um die Identität von Menschen zu maskieren, die in Videos aufgenommen sind. Zum Beispiel können durch Einfügen einer neuen Zwischendarstellung einer Person in die visuelle Verarbeitungspipeline visuelle Anfragen beantwortet werden, ohne die Identität offenzulegen und/oder die Privacy der Person zu beeinträchtigen.
-
Der beschriebene Ansatz verwendet eine sanitisierte Darstellung eines Rohbilds, um als Eingang in ein VQA System zu dienen. Auf diese Weise ist dieser Ansatz Privacy-schützend, da er die Identitäten von Menschen verbirgt, die in den Originalbildern aufgenommen sind, er ermöglicht jedoch weiterhin, dass aussagekräftige Analytik abgeleitet wird, da die topologischen räumlichen und zeitlichen Beziehungen der Originalbilder beibehalten werden. Dies ist besonders vorteilhaft im Einzelhandelskontext, da es ermöglicht, Einsichten über Käufer für Einzelhandelsanalytikzwecke abzuleiten, ohne die Identitäten von Käufern offenzulegen.
-
71 veranschaulicht ein Beispiel einer Ausführungsform eines Privacy-schützend VQA Datenstroms 7100. Der veranschaulichte Datenstrom führt eine Sanitisierung (Bezugszahl 7106) in die visuelle Verarbeitungspipeline ein, um ein Originalbild oder Video in einen modifizierten Privacy-schützenden VQA Eingang zu konvertieren.
-
Eine beliebige Sanitisierungstechnik kann verwendet werden, welche die topologischen räumlichen und zeitlichen Beziehungen der ursprünglichen visuellen Rohdaten beibehält. In einigen Fällen kann die Sanitisierungstechnik ausreichend leichtgewichtig sein, so dass sie von ressourcenbeschränkten Vorrichtungen vorgenommen werden können (z.B. Vorrichtungen mit Leistungseinschränkungen und/oder begrenzten Rechenfähigkeiten), bevor sie die visuellen Daten entlang der Cloud zur weiteren VQA Verarbeitung weiterleiten.
-
In einigen Ausführungsformen kann die Sanitisierungstechnik zum Beispiel das Hinzufügen von zufälligem Rauschen zu dem Originalbild involvieren. Zum Beispiel kann die Menge an zufälligem Rauschen gesteuert werden, so dass die Identität einer Person in dem Originalbild verborgen wird, während die Gesamtcharakteristiken des Bilds beibehalten werden.
-
Die Sanitisierungstechnik kann auch die Verwendung von Avataren involvieren, um die Identitäten von Menschen zu maskieren, die in einem Bild aufgenommen sind, wie in 72 gezeigt. Da die Identität einer Person durch Gesicht offengelegt wird, kann zum Beispiel eine Gesichtserkennung am Originalbild vorgenommen werden, und alle detektierten Gesichter können dann durch Avatare ersetzt werden. In einigen Fällen kann zum Beispiel das Gesicht einer Person (z.B. Bezugszahl 7210a oder 7210b) durch einen Avatar (z.B. Bezugszahl 7220a oder 7220b) ersetzt werden, der den Gesichtscharakteristiken der Person ähnlich ist, ohne ausreichend detailliert zu sein, um die Identität der Person offenzulegen. Auf diese Weise wird die Identität der Person effektiv in der Pixel-Domäne eliminiert, während weiterhin eine kontextuelle Benutzererfahrung geliefert wird, die mehrere Teilnehmer involviert, welche von anderen innerhalb des Kollaborationskontexts desambiguiert werden können. Ferner kann der demographische Kontext entfernt, verdeckt und/oder mit einigem anderen virtuellen Kontext erhöht werden, der typischerweise aus umgebenden visuellen Rahmen abgeleitet werden kann.
-
Die Sanitisierungstechnik kann auch eine Pixel-Level-Markierung mit einer Segmentierung involvieren, wie in 73 gezeigt. Zum Beispiel kann ein Originalbild 7300 in ein Format konvertiert werden, das eine diskrete Pixel-Markierung für jeden Typ eines Objekts 7310a-e verwendet, welches in dem Bild dargestellt ist, wie Menschen, Bäume, Straßen, Fahrzeuge, Gebäude, Himmel usw. In 73 wird zum Beispiel jeder Objekttyp durch die Verwendung einer anderen Farbe dargestellt.
-
Dieser Privacy-schützende visuelle Verarbeitungsansatz dient als Schlüssel zur Ausskalierung von VQA Systemen (z.B. VQA System 7100 von 71), da die Identitäten von Menschen am Rand eines Visual Computing-Netzes eliminiert werden können, die leistungsstarke Cloud Computing-Infrastruktur kann jedoch weiter genauso effektiv für Analytikzwecke genutzt werden.
-
Die Sanitisierung kann auch durch konvolutionale neuronale Netze (CNNs), rekurrente neuronale Netze (RNNs) und/oder neuronale Netze mit Shepard-Interpolation (SINNs) informiert werden, wo ein trainiertes „Punktprodukt“ verwendet werden kann, um Privacy-sensitiven erlernten Inhalt zu filtern. Zum Beispiel verwendet eine konvolutionale Schicht die Parameter der Schicht, die aus einem Satz von erlernbaren Filtern (oder Kernen) besteht, welche ein kleines rezeptives Feld aufweisen, sich jedoch durch die gesamte Tiefe des Eingangsvolumens erstrecken. Während des Vorwärtsdurchlaufs wird jeder Filter quer über die Breite und Höhe des Eingangsvolumens gefaltet, wobei das Punktprodukt zwischen den Einträgen des Filters und dem Eingang berechnet wird und eine 2-dimensionale Aktivierungskarte dieses Filters erzeugt wird. Als Ergebnis lernt das Netz Filter, die aktiviert werden, wenn es irgendeinen spezifischen Typ eines Merkmals an irgendeiner räumlichen Position in dem Eingang detektiert. Eine zusätzliche Schicht kann eine „Stoppliste“ von Kernen verwenden, die codiert werden, um Privacy-sensitiv zu sein, wie „Gesichter von Menschen“ oder „geographische Orte“. Wenn ein Inhaltfilter mit einem Privacy-sensitiven Eingang detektiert wird, werden die Privacy-Filterkerne aktiviert, um zu detektieren, ob eine Privacy-Sensitivität vorliegt. Wenn ja, werden die konvolutionalen Schichten auch die Privacy-Sensitivität erkennen, die verwendet werden kann, um die Anwendung irgendeiner der obigen Privacy-Mitigationsstrategien mit einer Flagge zu versehen oder auszulösen.
-
Kacheln mit variabler Größe zum Array-basierten Speichern
-
Die Videoverarbeitung wird zunehmend ein grundlegendes Werkzeug für Software-Systeme, um Aufgaben auf hoher Ebene vorzunehmen, entweder zur Identifikation eines Käuferverhaltens in Einzelhandelsgeschäften, für Video-Sicherheitsüberwachungssysteme, zur Verkehrsüberwachung, für autonome Fahrerunterstützungssysteme, Virtual Reality-Systeme, zur Echtzeit-3D-Generierung für Sportsendungen und vieles mehr. Typische Instanziierungen solcher Systeme involvieren Verarbeitungspipelines, wo jede Pipelinestufe einige Videoalgorithmen laufen lässt und ihren Ausgang für eine stromabwärtige Stufe zur Weiterverarbeitung ausgibt. Häufig verwenden ressourcenbeschränkte Umgebungen eine solche Verarbeitung in der Cloud. Ein kritischer Aspekt der Gesamtleistung (sowohl Latenz als auch Durchsatz) solcher Systeme ist die Fähigkeit, massive Mengen an Videodaten effizient zu speichern und abzurufen.
-
Videoverarbeitungsalgorithmen arbeiten typischerweise an Subsektionen eines Bilds oder Videorahmens. Solche „Regionen von Interesse“ (ROIs) innerhalb eines Bilds oder Videorahmens identifizieren wichtige Objekte oder Merkmale und sind häufig die Quelle weiterer Analyse. Die Extraktion dieser Regionen aus dem Speicher ist jedoch häufig zeitaufwendig. Aufgrund der Weise, in der traditionelle Bildformate gespeichert werden, ist es notwendig, das gesamte Bild zuerst zu lesen, bevor die ROI gelesen werden kann. Auch wenn das Bild in einem Array-basierten Speicherverwalter gespeichert wird, kann die Subsektion mehrere Bereiche in dem Array überspannen, wodurch bewirkt wird, dass mehr Daten als notwendig gelesen werden. Somit kann der Zugriff auf Regionen von Interesse innerhalb eines Bilds häufig zeitaufwendig sein.
-
Wie im Vorstehenden in Verbindung mit 22 diskutiert, könnten in einigen Fällen Bilder/Video unter Verwendung eines analytischen Bildformats gespeichert werden (z.B. implementiert unter Verwendung eines Array-basierten Speicherverwalters wie TileDB), das dafür ausgebildet ist, die visuelle Datenverarbeitung zu erleichtern. Die Verwendung eines Arry-Datenverwalters für das analytische Bildformat ist vorteilhaft, da sie einen schnellen Zugriff auf Subsektionen innerhalb von Rahmen und Bildern bietet, indem logische Kacheln über das Bild erzeugt werden. Diese Kacheln werden einzeln komprimiert und geschrieben, so dass nur die Kacheln, welche die relevanten Informationen eh, zurückgelesen werden. Zusätzlich kann in einigen Ausführungsformen das analytische Bildformat nur unter Verwendung einer LZ4 Kompression implementiert werden, welche die Leistung gegenüber traditionellen Bildformaten verbessert, die eine komplexere Codierung und Decodierung erfordern.
-
Bei der Implementierung dieses analytischen Bildformats unter Verwendung eines Array-basierten Speicherverwalters (z.B. TileDB) liefert der Speicherverwalter typischerweise einen Mechanismus, um das Kachel-Layout über ein Auslegungsschema zu spezifizieren. Die Fähigkeit, Kacheln zu definieren, ist jedoch ziemlich grobkörnig, wobei nur Kacheln mit fester Größe zugelassen werden, die in keiner Weise anwendungsbewusst sein. Demgemäß überspannen ROIs häufig mehrere Kacheln. Das Abrufen solcher ROIs involviert das Lesen zusätzlicher Informationen in einen zusammenhängenden Speicherpuffer, bevor die irrelevanten Regionen ausgeschnitten werden können. Obwohl die Verwendung des analytischen Bildformats dazu führt, dass weniger Daten gelesen werden als bei traditionellen Bildformaten (z.B. welche die gesamte Datei lesen müssen), kann es jedoch weiterhin zu einer bestimmten unnötigen Datenbewegung kommen.
-
Demgemäß wird ein analytisches Bildformat mit Kacheln mit variabler Größe für verschiedene Regionen von Interesse (ROIs) in Verbindung mit 74 bis 81 präsentiert. Wenn zum Beispiel ein Bild oder Videorahmen in einem Array-basierten Speicher gespeichert wird, kann es in Kacheln mit variabler Größe geteilt werden, und diese Kacheln können auf der Basis anwendungsrelevanter Regionen von Interesse innerhalb des Bilds oder Rahmens definiert werden. Auf diese Weise sind die Regionen von Interesse innerhalb von Bildern die treibende Kraft dahinter, wie die Bilder innerhalb eines Array-basierten Speicherverwalters gespeichert werden, was letztlich Bildzugriffsgeschwindigkeiten verbessert.
-
Dieses verbesserte analytische Bildformat bietet verschiedene Vorteile. Zum Beispiel sind die Bildspeicherung und der Bildabruf primäre Flaschenhalse in der wachsenden Klasse wichtiger Videoverarbeitungssysteme, wie moderner Fahrerunterstützungssysteme (ADAS), Inter-der-Dinge (IoT), Überwachung, Virtual Reality, Echtzeit-3D-Videoerzeugung usw. Die beschriebenen Techniken und Algorithmen können verwendet werden, um anwendungsspezifizierte Kacheldefinitionen mit variabler Größe für ein analytisches Bildformat zu erzeugen, was es gestattet, dass ROIs in einer Weise gespeichert werden, dass die Geschwindigkeit des Zugriffs auf diese Regionen verbessert wird. Da ROIs üblicherweise viel kleiner sind als das gesamte Bild (z.B. in einem American Football-Spiel ist ein Spieler häufig in einer 100 x 100 Pixel-Region in einem 3840 x 2160 Pixel-Rahmen), übersetzen sich Kachelgrenzen, die mit ROI Grenzen übereinstimmen, auch in eine Verringerung der Datenbewegung sowie eine reduzierte Nachbearbeitung, sobald die Dateidaten gelesen wurden, um ROIs abzurufen. Ferner eröffnet die Kenntnis der Speichersystemebene wichtiger Subsektionen gespeicherter Anwendungsdaten zahlreiche Wege zur Erzeugung von Merkmalen auf Plattformebene zur weiteren Verbesserung des Zugriffs auf solche Daten.
-
Ein Array-Datenverwalter, wie TileDB, kann als zugrundeliegender Speicherverwalter des analytischen Bildformats verwendet werden. TileDB ist zum Beispiel für die Verwaltung des Speicherns und Abrufens dichter und dünn besetzter Arrays optimiert. Ein Array ist in Kacheln geteilt, jede Kachel wird komprimiert und sequentiell auf die Platte geschrieben. TileDB unterstützt Kacheln mit identischer Größe (z.B. die Höhe und Breite müssen jeweils gleich sein für alle Kacheln). Somit muss ein Array-Datenverwalter entwickelt werden oder auf andere Weise erweitert werden, um Kacheln mit variierender Größe innerhalb von Bildern/Videorahmen zu unterstützen. Außerdem müssen Informationen über Regionen von Interesse (z.B. Begrenzungskästchen, welche die Startkoordinaten (x, y) sowie Höhe und Breite anzeigen) von bestehenden Algorithmen geliefert werden, wie Algorithmen, die weiter stromaufwärts in der Video- oder Bildverarbeitungspipeline der Anwendung laufen. auf diese Weise können die ROI Informationen verwendet werden, um Kachelgrenzen zu definieren, die von dem Array-Speicherverwalter (z.B. TileDB) verwendet werden, um das Bild/den Videorahmen zu speichern. Zum Beispiel wird ein Array in TileDB von einem Schema definiert; das Schema hält Informationen über die Größe des Arrays und die Größe der Kacheln, und im Fall von Kacheln mit variabler Größe kann ferner eine Anzeige geliefert werden, welcher Algorithmus verwendet werden sollte.
-
Diese Offenbarung beschreibt mehrere Ausführungsformen und Techniken, die Kacheln mit variabler Größe nutzen, um ein Kachel-Layout zu definieren, das mit den anwendungsspezifizierten ROI Grenzen übereinstimmt, wie im Nachstehenden weiter beschrieben.
-
Der erste Algorithmus wird in 74 bis 75 veranschaulicht. Insbesondere ist der erste Algorithmus ein rekursiver Quadrantenteilungsalgorithmus (in 74 gezeigt), wobei das Bild rekursiv in vier Kacheln geteilt wird. Begrenzungskästcheninformationen werden verwendet, um zu bestimmen, welche Kacheln Regionen von Interesse enthalten (die Logik wird in 75 beschrieben). Der Algorithmus wird fortgesetzt, bis die Regionen von Interesse vollständig innerhalb eines Satzes von Kacheln enthalten sind. Der Endschritt in dem Algorithmus ist ein optionaler Zusammenführungsschritt, wo Kacheln, die an keine Region von Interesse angrenzen, zusammengeführt werden, um eine geringere Anzahl größerer Kacheln zu bilden. Die allgemeine Form davon ist einfach der rekursive Teilungsalgorithmus; Variationen davon reichen vom Hinzufügen eines Parameters, um die Anzahl von Kacheln anzuzeigen, bis zum Teilen in (zum Beispiel neun anstatt vier) eine komplexere Alternative, wie das Vornehmen einer binären Teilung entlang jeder Dimension.
-
76A-E veranschaulichen ein einfaches Beispiel des rekursiven Teilungsalgorithmus. Zuerst wird eine Region von Interesse 7602 innerhalb eines Bilds 7600 identifiziert (wie durch das schraffierte Rechteck in 76A gezeigt). Der rekursive Quadrantenalgorithmus teilt das Bild 7600 in vier Kacheln (wie in 76B gezeigt) und identifiziert dann die oberen beiden Quadranten/Kacheln, wobei die unteren beiden Quadranten/Kacheln unberührt bleiben (wie in 76C gezeigt). Die Kacheln, welche die Region von Interesse enthalten, werden rekursiv identifiziert und auf diese Weise unterteilt, bis die Region von Interesse 7602 ausschließlich innerhalb der gesamten Kacheln enthalten ist (wie in 76D gezeigt). Der letzte Schritt kombiniert dann die Kacheln, die nicht an die Region von Interesse angrenzen, zu größeren Kacheln (wie in 76E gezeigt).
-
77A-F veranschaulichen ein Beispiel des rekursiven Quadrantenteilungsalgorithmus mit mehreren Regionen von Interesse, die quer über das Bild ausgebreitet sind. In diesem Beispiel repräsentieren die Regionen von Interesse die Spieler und den Schiedsrichter. Jede Iteration des Algorithmus ist in einer getrennten Teilfigur gezeigt, die mit der letzten Teilfigur enden (77F), wo jede Region von Interesse von drei bis sechs Kacheln eingekapselt ist, während die anderen Kacheln kombiniert wurden, um größere Kacheln zu bilden.
-
Der rekursive Teilungsalgorithmus erfordert häufig eine weitere Unterteilung, um einige der Regionen von Interesse zu erhalten, wie es für den Spieler oben in 77A-F notwendig war. Das Übergehen von 77D zu 77E erfordert das Teilen eines Bereichs, der hauptsächlich Gras ist, mit Ausnahme der Füße des Spielers. In einigen Ausführungsformen können die Parameter des rekursiven Teilungsalgorithmus variiert werden, um eine andere Teilungsregel zuzulassen (wie das Teilen in neun anstatt vier), dies geht jedoch zu Lasten einer Erhöhung der Anzahl von Kacheln, die benötigt werden, um eine Region von Interesse zu identifizieren.
-
Der zweite Algorithmus wird von 78 bis 79 veranschaulicht. Insbesondere veranschaulichen 78A-B Pseudocode für einen regionenbasierten Kachelbildungsalgorithmus, während 79A-B Pseudocode zur Identifikation von Hindernissen veranschaulicht, die mit Kacheln assoziiert sind, welche unter Verwendung des regionenbasierten Kachelbildungsalgorithmus konstruiert werden. Zum Beispiel definiert der regionenbasierte Kachelbildungsalgorithmus einen Initialsatz von Kacheln als Regionen von Interesse (wie durch den Pseudocode von 78A-B gezeigt). Zusätzliche Kacheln werden dann bestimmt, indem die Kachelbreite und -höhe so weit wie möglich erweitert wird, wobei das Ziel ist zu bestimmen, ob es irgendwelche Regionen von Interesse (oder andere Kacheln) gibt, welche die Konstruktion der aktuellen Kachel in entweder der x oder y Dimension behindern (wie durch den Pseudocode von 79A-B gezeigt). Demgemäß behandelt dieser Algorithmus den Mangel, der im Vorstehenden in Bezug auf den ersten Algorithmus festgestellt wurde.
-
80A-C veranschaulichen ein Beispiel des zweiten Algorithmus (z.B. des regionenbasierten Kachelbildungsalgorithmus von 78 bis 79). Das veranschaulichte Beispiel von 80A-C basiert auf demselben Bild, das in dem Beispiel von 76A-E verwendet wird. Mit dem regionenbasierten Kachelbildungsalgorithmus wird zuerst eine Region von Interesse 8002 innerhalb eines Bilds 8000 identifiziert (wie in 80A gezeigt), und die Region von Interesse ist die erste Kachel, die zu definieren ist (wie in 80B gezeigt). Von da wird ein Startpunkt hinzugefügt (0,0), der die obere linke Ecke des Bilds ist. Es gibt keine behindernde Kachel in der x Richtung, so erstreckt sich die Kachel über die gesamte Breite des Bilds. In der y Richtung behindert jedoch die Region von Interesse die Kachelbildung, indem sie die untere Grenze der Kachel bildet. Ein Startpunkt in der unteren linken Ecke der Kachel wird hinzugefügt (wie in 80C gezeigt), und der Algorithmus wird fortgesetzt. Der Einfachheit halber verwendet das veranschaulichte Beispiel ausschließlich rechteckige Kacheln, einige Ausführungsformen können jedoch unter Verwendung willkürlicher polygonaler Kacheln mit variierenden Formen und Größen implementiert werden.
-
Ein primärer Vorteil des regionenbasierten Kachelbildungsansatzes ist, dass die Kacheln genauer sein können in Bezug auf die Region von Interesse, was zu weniger Kacheln führt. Der rekursive Quadrantenteilungsalgorithmus kann jedoch geeigneter sein, wenn es überlappende Regionen von Interesse gibt, wie im Nachstehenden in Verbindung mit 81A-C weiter erläutert.
-
81A-C veranschaulichen ein Beispiel unter Verwendung eines Bilds 8100 mit mehreren überlappenden Regionen von Interesse 8102a,b (wie ursprünglich in 81A gezeigt). Unter Verwendung des regionenbasierten Kachelbildungsalgorithmus ist es nicht möglich, das (die) überlappende(n) Pixel 8104 als in beiden Regionen von Interesse 8102a,b vorhanden zu identifizieren (wie in 81B gezeigt). Tatsächlich endet eine der Regionen von Interesse 8102b als Polygon, wenn versucht wird, nach Region zu teilen. Mit dem rekursiven Teilungsalgorithmus ist es jedoch möglich, die überlappende Kachel 8104 für beide Regionen von Interesse 8102a,b anzufordern (wie in 81C gezeigt).
-
Somit kann der regionenbasierte Kachelbildungsalgorithmus keine überlappenden Regionen von Interesse behandeln, während der rekursive Teilungsalgorithmus zulässt, dass ein oder mehrere überlappende Pixel in beiden Regionen von Interesse vorhanden sind. In Abhängigkeit von dem Verwendungsszenario haben die im Vorstehenden beschriebenen jeweiligen Ausführungsformen demgemäß Pros und Kontras. Für eine maximale Flexibilität kann ein Portfolio von Techniken zur Auswahl des Layouts von Kacheln mit variabler Größe angeboten werden, wodurch es ermöglicht wird, dass die Anwendungen die Steuerung relevanter Subsektionen unter Verwendung des effizientesten Ansatzes steuern.
-
Integrierte Kundeneinkaufserfahrung online und im Geschäft
-
Ungeachtet des Erfolgs und der Bequemlichkeit des Online Shopping, werden Kunden weiterhin von standortgebundenen Einzelhändlern angezogen, bevor sie Einkäufe tätigen (z.B. um ein Produkt anzuschauen, zu berühren und/oder zu testen). Tatsächlich haben aus diesem Grund viele Einzelhändlern, deren Präsenz ausschließlich online begonnen hat, seither ihrem Fußabdruck erweitert, um eine physische Präsenz einzuschließen.
-
Der integrierte Ansatz ermöglicht es, ergänzende Vorteile für ein verbessertes Kundenengagement anzubieten (z.B. Hinzufügen von online/offline Angeboten auf der Basis früherer offline/online Aktivitäten). Das Verbinden von online und offline Einkaufserfahrungen (z.B. Website gegenüber physischem Geschäft) ist jedoch nicht einfach.
-
Zuverlässige Kundenmodelle sind schwer zu konstruieren und zu aktualisieren. Standortgebundenen Geschäften fehlen die Mechanismen, Kundenprofile auf der Basis ihrer Aktivitäten in der gleichen Weise, wie es Online Stores tun können, aufzubauen. Wenn ein Kunde zum Beispiel einen Online Store besucht, nimmt der Store jeden Klick oder jede Mausbewegung auf, den oder die ein Kunde macht. In Online Stores sind Klicks und andere Mausereignisse wichtige Datenpunkte, die verwendet werden, um einen Kunden zu modellieren. Im Gegensatz dazu gibt es in einem standortgebundenen Geschäft viele von dem Kunden vorgenommene Aktionen, während er das Geschäft besucht, die in seinem Profil nicht berücksichtigt werden.
-
Zum Beispiel greifen die meisten Kundenmodellierungstechniken in standortgebundenen Geschäften auf abgeschlossenen Transaktionen zurück (z.B. Einkäufe und manchmal Rückgaben). Das heißt, das Geschäft weiß nur, was der Kunde gekauft hat, aber wenig oder nichts über andere Produkte, in die der Kunde interessiert sein hätte können, während der das Geschäft besucht. Außerdem sind viele Lösungen auf entweder Online Shopping oder Offline Shopping abgestimmt, jedoch nicht auf beides, wodurch die jeweiligen Einkaufserfahrungen getrennt werden. Im Gegensatz zu Online Stores nehmen ferner viele Techniken in standortgebundenen Geschäften nicht das Interesse an einem Produkt auf, das ein (potentieller) Kunde zeigt, indem er zum Beispiel einige Minuten vor dem Produkt-Display steht. Ein Nebeneffekt dieser Einschränkung ist, dass das standortgebundene Geschäft die potentiellen Kundeninteressen nicht nachverfolgen kann.
-
Demgemäß präsentiert diese Offenbarung verschiedene Ausführungsformen, die diese Einschränkung in standortgebundenen Geschäften behandeln und ferner die Lücke zwischen der Kundenaktivität online und im Geschäft überbrücken. Diese Ausführungsformen schließen verschiedene Datenpunkte in das Kundenmodell ein, die durch Aktionen generiert werden, welche vom Kunden während eines Besuchs in dem Geschäft getätigt werden und/oder welche aus visuellen Daten abgeleitet werden. Diese Datenpunkte werden dann verwendet, um die Kundenmodellierung zu verbessern. Ein verbessertes Kundenmodell kann bessere Analytik erzeugen, was unter anderem zu besseren Empfehlungen für den Kunden führt. Auf diese Weise verwenden die beschriebenen Ausführungsformen eine neue Kundenmodellierung, um die Lücke zwischen den Einkaufserfahrungen online und offline zu überbrücken.
-
82 bis 83 veranschaulichen Beispiele, die mit verbesserten Einzelhandelskundenmodellen assoziiert sind. Insbesondere veranschaulicht 82 ein Beispiel 8200 eines integrierten Kundenmodells auf der Basis der online und offline Kundenaktivität, während 83 ein Beispiel 8300 der Verbindung des visuellen Fußabdrucks im Geschäft und der online Aktivität eines Kunden veranschaulicht. Intelligente standortgebundene Geschäfte werden entwickelt, in denen eine massive Menge an visuellen Daten von Kameras verfügbar ist, die innerhalb des Geschäfts installiert sind. In diesen intelligenten Geschäften wird der Kunde üblicherweise verfolgt, während er sich in dem Geschäft bewegt, und werden auf der Basis von Algorithmen geladen, die den Erwerb eines Produkts ableiten, manchmal auf der Basis der Analytik von Daten, die von Sensoren, wie Kameras, aufgenommen werden. In dem Beispiel von 82 wird das traditionelle Kundenmodell erweitert, um das Kundenverhalten einzuschließen, das aus visuellen Daten abgeleitet wird, die in standortgebundenen Geschäften aufgenommen werden, was mit anderen Einkäufen und Aktivitäten des Kunden (entweder online oder im Geschäft) kombiniert wird, um ein verbessertes Kundenmodell zu konstruierten (82, 8223).
-
Dieser Ansatz bietet ein vorrichtungsfreies und nahtloses Einkaufserlebnis durch die Integration von online und offline Identitäten. Wie in 82 bis 83 veranschaulicht, wird dieses Ziel erreicht, indem die digitale Präsenz eines Kunden mit seinem visuellen Fußabdruck verbunden wird, der von den Kameras in einem standortgebundenen Geschäft aufgenommen wird (82, 8213). Wertvolle Aktivitäten (z.B. wahrgenommenes Interesse an einem Produkt während des Geschäftsbesuchs, Klicks auf der Website usw.) werden verbunden, um die Aktivitäten des Kunden sowohl im Geschäft als auch online (82, 8207-8210, 8215-8218) zu verbinden. Das integrierte Kundenmodell kann dann maschinellen Lernalgorithmen (82, 8221) zugeführt werden, um unter anderem bessere Empfehlungen für Produkte und Dienstleistungen abzugeben (82, 8206, 8219-8222, 8224) .
-
In einigen Fällen kann es erforderlich sein, dass sich ein Benutzer für die Verbindung dieser Identitäten anmeldet, da die Verbindung ansonsten eine Privacy-Verletzung wäre (z.B. auf der Basis einer assoziierten Privacy Policy oder eines PLA). Ferner kann eine nahtlose oder auf andere Weise erwünschte Kundenerfahren im Geschäft erzielt werden (ohne Verletzung von Privacy Policies für Benutzer), indem die online / offline Identitäten einem Satz von Gruppen / Kategorien zugewiesen werden, die dafür ausgebildet sind, um die Benutzererfahrung zu verbessern. Zum Beispiel könnte eine Kategorie „VEGAN“ definiert werden, so dass Produkte, die in die Kategorie passen, für Identitäten im Geschäft auf der Basis einer offline Erfahrung, welche die Kategorie VEGAN mit der offline Identität assoziiert haben kann, angeboten und/oder vertrieben werden. Die Mitgliedschaft in der Kategorie kann kryptographisch unter Verwendung eines EPID kryptographischen Gruppenschlüssels erzielt werden, wobei die Erfahrung offline / im Geschäft / online zuerst den Gruppenschlüssel registriert, und wobei eine SGX oder andere TEE den Gruppenschlüssel mit einer Identität im Geschäft gemeinsam nutzt, so dass die Identität im Geschäft wählen kann, nur als Teilnehmeranmeldung der Gruppe VEGAN authentifiziert zu werden, anstatt irgendeine einzigartige Identität zurückzuhalten. Demgemäß kann die Erfahrung im Geschäft durch Kenntnis der Mitgliedschaft in der Gruppe VEGAN erhöht werden (jedoch nichts anderes, da dies eine unerwünschte Privacy-verletzende Kundenerfahren darstellen könnte).
-
Dieser Ansatz bietet zahlreiche Vorteile. Insbesondere dient er als Grundlage für effektive Vernetzung von online und offline Einkaufserfahrungen auf dem Einzelhandelssektor. Zum Beispiel erleichtert die beschriebene Lösung einen nahtlosen Übergang zwischen Online Shopping und Offline Shopping. Indem ein Mapping zwischen einem online Profil und einem visuellen Fußabdruck im Geschäft vorhanden ist (82, 8213), kann die beschriebene Lösung die Aktivitäten eines Kunden entweder online oder im Geschäft verwenden, um sicherzustellen, dass sowohl die Person als auch die Aktivitäten des Kunden online und im Geschäft in das Kundenmodell eingeschlossen werden (82, 8210, 8218). Diese neuen Techniken zur Kundenmodellierung können ferner zu anderen Einzelhandelslösungen hinzugefügt werden, die eine visuelle Datenanalyse beinhalten, wodurch solche Einzelhandelsanwendungen sogar noch ansprechender werden.
-
Ferner ist diese Lösung vorrichtungsfrei, da sie es nicht erfordert, dass irgendeine Vorrichtung vom Kunden getragen wird. Der Kunde legt online ein Konto an (82, 8203), das auf seine Präsenz offline gemappt wird (82, 8213). Das erste Mal, wenn der Kunde ein physisches Geschäft betritt, loggt sich der Kunde an einem Kiosk ein und wird sanft und rasch gescannt, um einen visuellen Fußabdruck aufzunehmen (82, 8214), und sobald der anfängliche visuelle Fußabdruck verfügbar ist, wird er aktualisiert und während jedes späteren Besuchs verfolgt (82, 8213), ohne dass es notwendig ist, den Kunden einem weiteren vollen Scan zu unterziehen. Die geschätzte Zeit für einen vollen Scan beträgt weniger als eine Minute. Sobald vollendet, muss sich der Kunde nicht mehr in sein online Konto einloggen, während er im Geschäft ist, solange der visuelle Fußabdruck als weiterhin gültig angesehen wird.
-
Geschäfte, welche die Interaktion mit ihren Kunden nicht maximieren, sowohl online als auch in standortgebundenen Geschäften, werden wahrscheinlich scheitern. Unter Verwendung zusätzlicher nicht traditioneller Datenpunkte aus visuellen Daten (82, 8216) (wie im Nachstehenden weiter beschrieben) leitet demgemäß die beschriebene Lösung das Kundenverhalten ab (82, 8215) und nimmt interessante Datenpunkte aus relevanten Kundenaktivitäten im Geschäft auf.
-
84 veranschaulicht ein Beispiel 8400 der Verwendung von Kundenaktivitäten online und im Geschäft, um ein robusteres Kundenmodell zu erstellen. Wie in 84 gezeigt, werden Datenpunkte von Aktivitäten sowohl online als auch im Geschäft zu einem vollständigeren Kundenmodell kombiniert. Zum Beispiel werden relevante Aktivitäten, ak, unter Verwendung der Zeit indexiert, als die Aktivität aufgezeichnet wurde. Kundenaktivitäten können als online Aktivitäten, Oi, oder Aktivitäten im Geschäft, Ij, klassifiziert werden. Es gibt ein implizites Mapping, das von einer Analytikkomponente berücksichtigt werden kann. Zum Beispiel können Seiten oder Sektionen, die online besucht werden, auf Bereiche gemappt werden, die in dem physischen Geschäft besucht werden. Das erhaltene integrierte Kundenmodell liefert bessere Ergebnisse aus der Analytik (82, 8221), die verwendet werden können, um die Interaktionen zwischen dem Geschäft und dem Kunden zu verbessern (z.B. durch Abgeben besserer Produktempfehlungen (82, 8206, 8219, 8220, 8224)).
-
Die beschriebene Lösung schenkt besondere Aufmerksamkeit der Interkation, die der Kunde mit Produkten hat, während er das Geschäft besucht, insbesondere für Produkte, die der Kunde letztlich nicht kauft (82, 8215-8217, 8219). Auf ähnliche Weise wie Online Stores können standortgebundene Geschäfte diese Daten verwenden, um Kundenbedürfnisse besser zu identifizieren (82, 8221) und unter Verwendung traditioneller Kanäle (z.B. Post, E-Mail (82, 8222, 8224)) und/oder nicht traditioneller Kanäle (z.B. personalisierte visuelle Zeichnung (82, 8219) nachzuverfolgen.
-
85 veranschaulicht ein Beispiel 8500 mit einem Vergleich der Aktivitäten mehrerer Benutzer oder Kunden 8502a,b. Insbesondere wird ein realistischer Vergleich des Verhaltens von zwei Benutzern auf der Basis sowohl der online Aktivitäten als auch der Aktivitäten im Geschäft vorgenommen (82, 8221) . Wie in 85 gezeigt, hat der Benutzer 1 eine ausgeglichenere Verteilung zwischen Aktivitäten online und im Geschäft als der Benutzer 2. Unter Verwendung des integrierten Kundenmodells und nicht traditioneller Datenpunkte, die aus visuellen Daten erhalten werden, hat ein Geschäft Zugriff auf umfassendere Kundenprofile, was es ihm ermöglicht, ein besseres Verständnis für die Wünsche und Bedürfnisse seiner Kunden zu erlangen. Ferner ermöglicht die beschriebene Lösung, dass ein Geschäft die online Aktivität auf die Aktivität im Geschäft mappt. Wie im Vorstehenden angegeben, können die von dem Benutzer besuchten Webseiten auf physische Bereiche in einem Geschäft gemappt werden. Daher hat das Geschäft ein besseres Verständnis für die potentiellen Verhaltensweisen und Wünsche seiner Kunden, wenn sie das Geschäft besuchen.
-
Ein Beispiel der verschiedenen Typen einer Kundenaktivität, die in die beschriebene Lösung involviert sind (sowohl online als auch im Geschäft), wird in TABELLE 2 veranschaulicht.
TABELLE 2: Kundenaktivität
AKTIVITÄ TSTYP | ONLINE AKTIVITÄT (Oi) | AKTIVITÄT IM GESCHÄFT (Ij) |
Online Registri erung | Der Kunde registriert sich in dem System zum ersten Mal (82, 8205). Der Kunde kann dann das online Front-end (82, 8201) des Systems verwenden, um zu browsen oder Produkte zu kaufen. | |
Anfängli ches Aufnehme n des visuelle n Fußabdru cks im standort gebunden en Geschäft | | Das erste Mal, wenn der Kunde das standortgebundene Geschäft besucht (82, 8211, 8212), muss er sich in sein online Konto an einem Kiosk einloggen, das sich am Eingang in das Geschäft befindet (82, 8212). Nach dem Login nimmt eine Auslegung von Kameras den visuellen Fußabdruck auf, der für zukünftige Besuche verwendet wird (84, 8214). Unter Verwendung dieses visuellen Fußabdrucks kann das Geschäft Kundenaktivitäts-Datenpunkte von jedem Besuch im Geschäft ableiten (82, 8213, 8215, 8216). |
Andere Aktivitä ten online oder im Geschäft | Traditionelle Datenpunkte, z.B. Mausereignisse, vom Kunden eingegebener Text, während des Besuchs des Online Stores, einschließlich der Suche nach Produkten, werden gesammelt und verwendet, um das Kundenmodell zu verbessern (83, 8207-8210 ) . | Nicht traditionelle Datenpunkte werden auch gesammelt durch Ableiten der Kundenpräferenzen, die von seinem Verhalten abgeleitet werden, wie in visuellen Daten aufgenommen (82, 8215-8218) . |
-
Wie in TABELLE 2 gezeigt, registriert sich ein Kunde anfänglich in dem System online. Sobald der Kunde registriert ist, wird jede relevante Aktivität gesammelt und verwendet, um das Kundenmodell zu verbessern. Zusätzlich zu Datenpunkten, die aus online Aktivitäten erhalten werden, werden auch einige nicht traditionelle Datenpunkte zu dem Kundemodell hinzugefügt. Diese Datenpunkte werden aus der Analyse visueller Daten erhalten (82, 8215).
-
Als Beispiel kann die Dauer der Zeit, die ein Kunde in einem oder mehreren bestimmten Bereichen eines Geschäfts verbringt, als zusätzliche Datenpunkte verfolgt werden. Insbesondere wird ein Kunde kontinuierlich unter Verwendung von Vision-Sensoren (z.B. Kameras) verfolgt, wenn er ein Geschäft besucht. Bereiche, wo der Kunde dazu tendiert eine signifikante Zeitdauer zu verbringen, sind wichtige Datenpunkte für das zukünftige Marketing von Produkten. Diese Datenpunkte werden aus der Analyse von Zeitinformationen über Bereiche erhalten, die der Kunde besucht hat, während er im Geschäft war. Ähnlich zu dem, was in Online Stores geschieht, wenn der Kunde signifikante Zeit in einem bestimmten Bereich verbringt, wird dieses Verhalten als Datenpunkt registriert, der bei der Generierung des verbesserten Datenmodells verwendet wird. Das Geschäft kann dies dann nachverfolgen, wie geeignet (z.B. per Post/E-Mail über Werbeaktionen), wodurch die Beziehung mit dem Kunden verbessert wird.
-
Als weiteres Beispiel können die Kopfhaltungsschätzung, Kundenhaltungsdetektion und Produktpositionsverfolgung verwendet werden, um zusätzliche Datenpunkte abzuleiten. Zum Beispiel veranschaulicht 86 ein Beispiel 8600 der Verwendung einer Kopfhaltung, um Kundendatenpunkte abzuleiten. Insbesondere kann auf der Basis der Kundenkopfpositionsschätzung 8603, kombiniert mit der Produktpositionsverfolgung, abgeleitet werden, dass ein Kunde 8602 ein bestimmtes Produkt 8604 betrachtet. Wenn die Betrachtung eine zeitliche Schwelle überschreitet, wird ein Datenpunkt generiert und verwendet, um das Kundenmodell zu verbessern. Während er in einem Geschäft ist, kann ein Kunde zum Beispiel in die Richtung eines Produkts blicken. Dieses Verhalten wird zeitlich gemessen, und wenn eine Schwelle überschritten wird, wird ein Datenpunkt für dieses Ereignis generiert. Wenn der Kunde einen bestimmten Artikel betrachtet hat, kann auf diese Weise das Geschäft anschließend beim Kunden dies nachverfolgen, um zusätzliche Informationen über das Produkt zu liefern. Diese Lösung füllt das Vakuum, das bei der traditionellen Kundenmodellierung fehlt. Unter Verwendung einer Kombination von zeitlicher Schwellenbildung und Analyse visueller Daten werden zusätzliche Datenpunkt zum dem Kundenmodell hinzugefügt, wodurch es dem Geschäft ermöglicht wird, aktiv zu werden und dies beim Kunden mit Angeboten und anderen Informationen nachzuverfolgen. Durch die Verbesserung der Kundenmodellierung wird erwartet, dass das Geschäft seine Verkäufe steigert.
-
Als weiteres Beispiel können Produkte, mit denen ein Kunde interagiert (z.B. durch Berühren mit seinen Händen), als zusätzliche Datenpunkte verfolgt werden. In einigen Ausführungsformen können diese Datenpunkte zum Beispiel durch Triangulieren der Position der Hände eines Kunden, wie von den mehreren Kameras aufgenommen, in Verbindung mit einem Mapping der zur Schau gestellten Produkte generiert werden. Wenn zum Beispiel die Hand eines Kunden nahe bei einem Regal ist oder dieses berührt hat, wo einige Produkte angeordnet sind (z.B. Waschmittel), und eine zeitliche Schwelle überschritten wurde, wird ein Datenpunkt in Verbindung mit dem anscheinenden Interesse des Kunden für ein bestimmtes Produkt/eine Marke generiert.
-
Unter Verwendung dieser zusätzlichen Datenpunkt aus visuellen Daten im Geschäft kann ein besseres Modell des Kunden konstruiert werden. Zusätzlich zu dem Wissen, dass der Kunde X zum Beispiel Produkte <k, l, m> gekauft hat, kann auch bestimmt werden, dass der Kunde Interesse an Produkten <n, o> gezeigt hat, entweder im Geschäft oder online. Dieser Ansatz liefert wertvolle Informationen für ein Geschäft. Die verbesserten Kundenmodelle können in Verbindung mit Empfehlungssystemen verwendet werden, um Angebote an Kunden weiterzuverfolgen. Dies wird zu erhöhten Umsätzen für standortgebundene Geschäfte führen, zusammen mit verbesserten Kundenbeziehungen.
-
Die folgenden sind Beispiele der Typen von Kundenaktivitäten, die von dieser Lösung verfolgt und genutzt werden können:
- (1) traditionelle Aktivitäten, die verwendet werden, um online Kundenprofile aufzubauen: Zeitstempel des Besuchs, angeklickte Produkte und andere Mausereignisse, Suchen usw.;
- (2) traditionelle Aktivitäten, die verwendet werden, um ein Profil des Kunden im Geschäft aufzubauen: Einkäufe, Rückgaben usw.;
- (3) zusätzliche Aktivitäten, die aus visuellen Daten im Geschäft abgeleitet werden: für eine Zeit über einer Schwelle t1 betrachtete Produkte, für eine Zeit über einer Schwelle t2 besuchte Bereiche, vom Kunden berührte Produkte usw.
Auf diese Weise kann ein verbessertes Kundenmodell unter Verwendung aller der obigen Kategorien von Datenpunkten aufgebaut werden, anstelle nur der ersten oder zweiten Kategorie.
-
87 veranschaulicht ein Beispiel eines Datenflusses 8700 zur Erstellung eines verbesserten Kundenmodells unter Verwendung sowohl traditioneller als auch visueller Daten. Zum Beispiel werden traditionelle Datenpunkte im Geschäft (z.B. Produktkäufe) und online Datenpunkte (82, 8207 - 8210, 8217) in Verbindung mit Datenpunkten für abgeleitetes Kundenverhalten verwendet, die aus im Geschäft aufgenommenen visuellen Daten abgeleitet werden (82, 8215, 8216). Durch das Kombinieren traditioneller Datenpunkte mit visuellen Datenpunkten wird ein besseres Kundenmodell generiert.
-
88 veranschaulicht die Architektur eines Beispiels einer Anwendung 8800, die integrierte Kundenprofile online und im Geschäft nutzt. Insbesondere wird ein besseres Kundenprofil durch das Kombinieren von Datenpunkten generiert, die aus drei Quellen erhalten werden: Kundenverhalten im Geschäft, abgeleitet von visuellen Daten (82, 8215), Aktivität des Kunde online (82, 8210) und Kaufinformationen im Geschäft (82, 8217). Unter Verwendung des verbesserten Kundenmodells und von Bestandsinformationen kann das Geschäft dann dazu übergehen, dem Kunden Produkte zu empfehlen, was zu einer bedeutungsvolleren Beziehung mit dem Kunden auf der Basis des verbesserten Kundenmodells führt. Das Gewicht, das jedem Datenpunkt zugewiesen wird, der aus einer Kundenaktion generiert wird, wird in Abhängigkeit vom Geschäftstyp unterschiedlich gewichtet. Traditionelle maschinelle Lernalgorithmen können verwendet werden, um die beste Zuweisung von Gewichten für jeden Datenpunkttyp zu finden.
-
Obwohl Kunden typischerweise kein Problem damit haben, persönliche Informationen mit Einzelhändlern online zu teilen, kann die Verfolgung und Speicherung ihres visuellen Fußabdrucks beim Besuch eines standortgebundenen Geschäfts Anlass zu potentiellen Privacy-Bedenken geben. Demgemäß kann diese Lösung mit anderen Ausführungsformen kombiniert werden, die in dieser gesamten Offenbarung beschrieben werden - oder auf andere Weise verfügbar sind, und die sich auf den Privacy-Schutz für Visual Computing-Systeme beziehen. Zum Beispiel kann diese Lösung mit Lösungen kombiniert werden, die auf den Schutz der Identität von Menschen fokussiert sind, welche von Kameras aufgenommen werden. Kameras sind in Einzelhandelsgeschäften allgegenwärtig, und mit der Entwicklung besserer und leistbarerer Vorrichtungen wird erwartet, dass die Anzahl von real eingesetzten Kameras nur zunehmen wird. Diese Lösung nutzt diesen Trend, um Einzelhändler dabei zu unterstützen, bessere Modelle ihrer Kunde zu erstellen, und sie kann angepasst werden, um den geeigneten Privacy Level in Abhängigkeit vom Kontext bereitzustellen.
-
Die Flussdiagramme und Blockbilder in den FIGUREN veranschaulichen die Architektur, die Funktionalität und den Betrieb möglicher Implementierungen von Systemen, Verfahren und Computerprogrammprodukten gemäß verschiedenen Aspekten der vorliegenden Offenbarung. In dieser Hinsicht kann jeder Block in dem Flussdiagramm oder den Blockbildern ein Modul, ein Segment oder einen Abschnitt von Code repräsentieren, der eine oder mehrere ausführbare Instruktionen zur Implementierung der spezifizierten logischen Funktion(en) umfasst. Es ist auch anzumerken, dass in einigen alternativen Implementierungen die in dem Block verzeichneten Funktionen außerhalb der in den Figuren eingetragenen Reihenfolge auftreten können. Zum Beispiel können zwei aufeinanderfolgende gezeigte Blöcke tatsächlich im Wesentlichen gleichzeitig ausgeführt werden, oder die Blöcke können manchmal in der umgekehrten oder einer alternativen Reihenfolge ausgeführt werden, in Abhängigkeit von der involvierten Funktionalität. Es ist auch anzumerken, dass jeder Block der Blockbilder und/oder Flussdiagrammdarstellung sowie Kombinationen von Blöcken in den Blockbildern und/oder der Flussdiagrammdarstellung durch Spezial-Hardware-basierte Systeme implementiert werden kann, die spezifizierte Funktionen oder Aktionen vornehmen, oder Kombinationen von Spezial-Hardware und Computerinstruktionen.
-
Die obige Offenbarung beschreibt Merkmale einiger Ausführungsformen, so dass Fachleute verschiedene Aspekte der vorliegenden Offenbarung besser verstehen können. Fachleuten sollte es klar sein, dass sie die vorliegende Offenbarung leicht als Basis zur Ausbildung und Modifikation anderer Prozesse und Strukturen zur Durchführung derselben Zwecke und/oder zum Erzielen derselben Vorteile der hier vorgestellten Ausführungsformen verwenden können. Fachleute sollten auch erkennen, dass solche äquivalenten Konstruktionen nicht vom Grundgedanken und Umfang der vorliegenden Offenbarung abweichen, und dass sie verschiedene Änderungen, Substitutionen und Abänderungen hier vornehmen können, ohne vom Grundgedanken und Umfang der vorliegenden Offenbarung abzuweichen.
-
Alle oder ein Teil irgendeines hier geoffenbarten Hardware-Elements können leicht in einem System-on-Chip (SoC) bereitgestellt werden, umfassend ein Zentraleinheit- (CPU) Paket. Ein SoC repräsentiert eine integrierte Schaltung (IC), die Komponenten eines Computers oder anderen elektronischen Systems in einen einzelnen Chip integriert. Das SoC kann digitale, analoge, Mischsignal- und Funkfrequenzfunktionen enthalten, von denen alle auf einem einzelnen Chipsubstrat bereitgestellt sein können. Andere Ausführungsformen können ein Multi-Chip-Modul (MCM) umfassen, wobei eine Vielzahl von Chips innerhalb eines einzelnen elektronischen Pakets angeordnet ist und dafür ausgelegt ist, um miteinander durch das elektronische Paket eng zu interagieren. In verschiedenen anderen Ausführungsformen können die hier geoffenbarten Rechenfunktionalitäten in einem oder mehreren Siliciumkernen in anwendungsspezifischen integrierten Schaltungen (ASICs), feldprogrammierbaren Gate-Arrays (FPGAs) und anderen Halbleiterchips implementiert werden.
-
Wie in dieser gesamten Beschreibung verwendet, ist der Ausdruck „Prozessor“ oder „Mikroprozessor“ so zu verstehen, dass er nicht nur einen traditionellen Mikroprozessor (wie die spartenführenden Architekturen x86 und x64 von Intel®) umfasst, sondern auch Graphikprozessoren, Matrixprozessoren und beliebige von ASIC, FPGA, Mikrosteuereinheit, Digital Signal Processor (DSP), programmierbarer Logik-Array- (PLA) Mikrocode, Instruktionssatz, emulierter oder virtueller Maschinenprozessor, oder irgendeine ähnliche „Turingcomplete“-Vorrichtung, Kombination von Vorrichtungen oder logischen Elementen (Hardware und Software), welche die Ausführung von Instruktionen gestatten.
-
Es ist auch zu beachten, dass in bestimmten Ausführungsformen einige der Komponenten weggelassen oder konsolidiert werden können. In einem allgemeinen Sinn sollte die in den Figuren dargestellten Anordnungen als logische Vorrichtungen verstanden werden, während die physische Architektur verschiedene Permutationen, Kombinationen und/oder Hybride dieser Elemente umfassen kann. Es ist unerlässlich anzumerken, dass zahllose mögliche Ausbildungsauslegungen verwendet werden können, um die operationalen Ziele zu erreichen, die hier angeführt sind. Demgemäß hat die assoziierte Infrastruktur unzählige Ersatzanordnungen, Ausbildungsauswahlen, Möglichkeiten, Hardware-Auslegungen, Software-Implementierungen und Ausrüstungsoptionen.
-
In einem allgemeinen Sinn kann ein beliebiger geeignet ausgelegter Prozessor Infrastruktur ausführen, die mit Daten oder Mikrocode assoziiert sind, um die hier detailliert angegebenen Operationen zu erzielen. Ein beliebiger hier geoffenbarter Prozessor könnte ein Element oder einen Artikel (zum Beispiel Daten) aus einem Zustand oder ding in einen anderen Zustand oder ein anderes Ding transformieren. In einem weiteren Beispiel können einige hier angeführte Aktivitäten mit fester Logik oder programmierbarer Logik implementiert werden (zum Beispiel Software- und/oder Computerinstruktionen, die von einem Prozessor ausgeführt werden), und die hier identifizierten Elemente könnten irgendein Typ eines programmierbaren Prozessor sein, eine programmierbare Logik (zum Beispiel feldprogrammierbares Gate-Array (FPGA), ein löschbarer programmierbarer Nurlesespeicher (EPROM), ein elektrisch löschbarer programmierbarer Nurlesespeicher (EEPROM), eine ASIC, die digitale Logik enthält, Software, Code, elektronische Instruktionen, Flash-Speicher, optische Platten, CD-ROMs, DVD ROMs, magnetische oder optische Karten, anderen Typen maschinenlesbarer Medien, die zum Speichern elektronischer Instruktionen geeignet sind, oder irgendeine geeignete Kombination davon.
-
Im Betrieb kann ein Speicher Informationen in einem beliebigen geeigneten Typ eines greifbaren, nicht transitorischen Speichermediums speichern (zum Beispiel Speicher mit wahlfreiem Zugriff (RAM), Nurlesespeicher (ROM), feldprogrammierbares Gate-Array (FPGA), löschbarer programmierbarer Nurlesespeicher (EPROM), ein elektrisch löschbarer programmierbarer Nurlesespeicher (EEPROM), oder Mikrocode), Software, Hardware (zum Beispiel Prozessorinstruktionen oder Mikrocode), oder in irgendeiner anderen Komponente, Vorrichtung, einem Element oder Objekt, wo geeignet und auf der Basis bestimmter Anforderungen. Ferner könnten die Informationen, die verfolgt, gesendet, empfangen oder in einem Prozessor gespeichert werden, in irgendeiner Datenbank, einem Register, einer Tabelle, einem Cache, einer Warteschlange, einer Steuerliste oder Speicherstruktur auf der Basis der bestimmten Anforderungen und Implementierungen bereitgestellt werden, von denen auf alle in einem beliebigen geeigneten Zeitrahmen Bezug genommen werden kann. Jedes der hier geoffenbarten Memory- oder Speicherelemente ist so auszulegen, dass es innerhalb der breiteren Ausdrücke „Memory“ und „Speicher“ enthalten ist. Ein nicht transitorisches Speichermedium soll hier ausdrücklich jede nicht transitorische Spezial- oder programmierbare Hardware umfassen, die dafür ausgelegt ist, um die geoffenbarten Operationen bereitzustellen, oder um einen Prozessor zu veranlassen, die geoffenbarten Operationen vorzunehmen. Ein nicht transitorisches Speichermedium umfasst auch ausdrücklich einen Prozessor mit darauf gespeicherten Hardware-codierten Instruktionen, und gegebenenfalls Mikrocodeinstruktionen oder Sequenzen, die in Hardware, Firmware oder Software codiert sind.
-
Eine Computerprogrammlogik, die alle oder einen Teil hier beschriebenen Funktionalitäten implementiert, ist in verschiedenen Formen verkörpert, umfassend, jedoch in keiner Weise beschränkt auf Hardware-Beschreibungssprache, eine Sourcecode-Form, eine computerausführbare Form, Maschineninstruktionen oder Mikrocode, programmierbare Hardware und verschieden Zwischenformen (zum Beispiel Formen, die von einem HDL Prozessor, Assemblierer, Kompilierer, Linker oder Locator generiert werden). In einem Beispiel umfasst ein Quellcode eine Serie von Computerprogramminstruktionen, die in verschiedenen Programmiersprachen implementiert sind, wie einem Objektcode, einer Assembliersprache, wie OpenCL, FORTRAN, C, C++, JAVA oder HTML, zur Verwendung mit verschiedenen Betriebssystemen oder Betriebsumgebungen, oder in Hardware-Beschreibungssprachen, wie Spice, Verilog und VHDL. Der Quellcode kann verschiedene Datenstrukturen und Kommunikationsnachrichten definieren und verwenden. Der Quellcode kann in einer computerausführbaren Form sein (z.B. über einen Interpretierer), oder der Quellcode kann konvertiert werden (z.B. über einen Übersetzer, Assemblierer oder Kompilierer) in eine computerausführbare Form, oder in ein Zwischenformat konvertiert werden, wie Byte-Code. Wenn geeignet, kann irgendeines der Obigen verwendet werden, um geeignete diskrete oder integrierte Schaltungen zu bauen, egal ob sequentiell, kombinatorisch, Zustandsmaschinen oder auf andere Weise.
-
In einem Beispiel kann eine beliebige Anzahl elektrischer Schaltungen der FIGUREN auf einer Platte einer assoziierten elektronischen Vorrichtung implementiert sein. Die Platte kann eine allgemeine Leiterplatte sein, die verschiedene Komponenten des internen Elektroniksystems der elektronischen Vorrichtung halten kann, und ferner Anschlüsse für andere periphere Vorrichtungen liefern. Spezifischer kann die Platte die elektrischen Verbindungen liefern, durch welche die anderen Komponenten des Systems elektrisch kommunizieren können. Ein beliebiger geeigneter Prozessor und Speicher können geeignet mit der Platte auf der Basis bestimmter Auslegungsanforderungen, Verarbeitungsansprüche und Computerausbildungen gekoppelt werden. Andere Komponenten, wie externe Speicher, zusätzliche Sensoren, Steuereinheiten zur Audio/Video-Anzeige und periphere Vorrichtungen können an der Platte als Plug-in-Karten, über Kabel angebracht werden oder in die Platte selbst integriert werden. In einem weiteren Beispiel können die elektrischen Schaltungen der FIGUREN als unabhängige Module implementiert werden (z.B. eine Vorrichtung mit assoziierten Komponenten und Schaltungen, die dafür ausgelegt sind, um eine spezifische Anwendung oder Funktion vorzunehmen), oder als Plug-in-Module in anwendungsspezifische Hardware elektronischer Vorrichtungen implementiert werden.
-
Es ist zu beachten, dass mit den zahlreichen hier angegebenen Beispielen Interaktionen hinsichtlich zwei, drei, vier oder mehr elektrischen Komponenten beschrieben werden können. Dies erfolgte jedoch der Klarheit halber und nur als Beispiel. Es ist klar, dass das System in einer beliebigen geeigneten Weise konsolidiert oder neuausgelegt werden kann. Gemäß ähnlicher Ausbildungsalternativen können beliebige der veranschaulichten Komponenten, Module und Elemente der FIGUREN in verschiedenen möglichen Auslegungen kombiniert werden, von denen alle innerhalb des breiten Umfangs dieser Beschreibung sind. In bestimmten Fällen kann es einfacher sein, eine oder mehrere der Funktionalitäten eines gegebenen Satzes von Flüssen zu beschreiben, indem nur auf eine begrenzte Anzahl elektrischer Elemente Bezug genommen wird. Es ist klar, dass die elektrischen Schaltungen der FIGUREN und ihre Lehren leicht skalierbar sind und eine große Anzahl von Komponenten sowie kompliziertere/höher entwickelte Anordnungen und Auslegungen aufnehmen können. Demgemäß sollen die angegebenen Beispiele den Umfang nicht einschränken oder die breiten Lehren der elektrischen Schaltungen behindern, wie sie potentiell bei unzähligen anderen Architekturen angewendet werden können.
-
Zahlreiche andere Änderungen, Substitutionen, Variationen, Abänderungen und Modifikationen können von Fachleuten festgestellt werden, und es ist beabsichtigt, dass die vorliegenden Offenbarung alle solchen Änderungen, Substitutionen, Variationen, Abänderungen und Modifikationen umfasst, wie sie in den Umfang der beigeschlossenen Ansprüche fallen.
-
Beispiele von Implementierungen
-
Die folgenden Beispiele betreffen Ausführungsformen, die in dieser gesamten Offenbarung beschrieben werden.
-
Eine oder mehrere Ausführungsform kann oder können eine Vorrichtung umfassen, umfassend: einen Prozessor, um: eine Arbeitslast zu identifizieren, die eine Vielzahl von Aufgaben umfasst; einen Arbeitslastgraphen auf der Basis der Arbeitslast zu generieren, wobei der Arbeitslastgraph Informationen umfasst, die mit der Vielzahl von Aufgaben assoziiert sind; einen Vorrichtungskonnektivitätsgraphen zu identifizieren, wobei der Vorrichtungskonnektivitätsgraph Vorrichtungskonnektivitätsinformationen umfasst, die mit einer Vielzahl von Verarbeitungsvorrichtungen assoziiert sind; eine Privacy Policy zu identifizieren, die mit der Arbeitslast assoziiert ist; Privacy Level-Informationen zu identifizieren, die mit der Vielzahl von Verarbeitungsvorrichtungen assoziiert sind; eine Privacy-Einschränkung auf der Basis der Privacy Policy und der Privacy Level-Informationen zu identifizieren; und einen Arbeitslastplan zu bestimmen, wobei der Arbeitslastplan ein Mapping der Arbeitslast auf die Vielzahl von Verarbeitungsvorrichtungen umfasst, und wobei der Arbeitslastplan auf der Basis der Privacy-Einschränkung, des Arbeitslastgraphen und des Vorrichtungskonnektivitätsgraphen bestimmt wird; und eine Kommunikationsschnittstelle, um den Arbeitslastplan zu der Vielzahl von Verarbeitungsvorrichtungen zu senden.
-
In einem Beispiel einer Ausführungsform einer Vorrichtung hat der Prozessor, der den Arbeitslastplan zu bestimmen hat, ferner ein ganzzahliges lineares Programmierungsmodell auf der Basis der Privacy-Einschränkung zu lösen.
-
In einem Beispiel einer Ausführungsform einer Vorrichtung ist die Vielzahl von Aufgaben mit der Verarbeitung von Sensordaten von einem oder mehreren Sensoren assoziiert.
-
In einem Beispiel einer Ausführungsform einer Vorrichtung umfasst oder umfassen der eine oder die mehreren Sensoren eines oder mehrere von: einer Kamera, einem Infrarotsensor oder einem laserbasierten Sensor.
-
In einem Beispiel einer Ausführungsform einer Vorrichtung umfassen die Sensordaten visuelle Daten.
-
In einem Beispiel einer Ausführungsform einer Vorrichtung umfasst der Arbeitslastgraph ferner Informationen, die mit einer Vielzahl von Aufgabenabhängigkeiten unter der Vielzahl von Aufgaben assoziiert sind.
-
In einem Beispiel einer Ausführungsform einer Vorrichtung umfasst die Privacy-Einschränkung eine Vielzahl von Privacy-Anforderungen, die mit der Vielzahl von Aufgabenabhängigkeiten assoziiert sind.
-
In einem Beispiel einer Ausführungsform einer Vorrichtung umfassen die Vorrichtungskonnektivitätsinformationen Informationen, die mit einer Vielzahl von Vorrichtungskonnektivitätsverbindungen unter der Vielzahl von Verarbeitungsvorrichtungen assoziiert sind.
-
In einem Beispiel einer Ausführungsform einer Vorrichtung umfassen die Privacy Level-Informationen eine Vielzahl von Privacy Levels, die mit der Vielzahl von Vorrichtungskonnektivitätsverbindungen assoziiert sind.
-
Eine oder mehrere Ausführungsformen kann oder können ein System umfassen, umfassend: eine Vielzahl von Sensoren, um Sensordaten aufzunehmen, die mit einer Umgebung assoziiert sind; eine Vielzahl von Verarbeitungsvorrichtungen, wobei die Vielzahl von Verarbeitungsvorrichtungen eine Vielzahl von Edge-Verarbeitungsvorrichtungen und eine Vielzahl von Cloud-Verarbeitungsvorrichtungen umfasst; und wobei die Vielzahl von Verarbeitungsvorrichtungen: eine Arbeitslast zu identifizieren hat, wobei die Arbeitslast eine Vielzahl von Aufgaben umfasst, die mit der Verarbeitung der Sensordaten assoziiert sind, welche von der Vielzahl von Sensoren aufgenommen werden; einen Arbeitslastgraphen auf der Basis der Arbeitslast zu generieren hat, wobei der Arbeitslastgraph Informationen umfasst, die mit der Vielzahl von Aufgaben assoziiert sind; einen Vorrichtungskonnektivitätsgraphen zu identifizieren hat, wobei der Vorrichtungskonnektivitätsgraph Vorrichtungskonnektivitätsinformationen umfasst, die mit der Vielzahl von Verarbeitungsvorrichtungen assoziiert sind; eine Privacy Policy zu identifizieren hat, die mit der Arbeitslast assoziiert ist; Privacy Level-Informationen zu identifizieren hat, die mit der Vielzahl von Verarbeitungsvorrichtungen assoziiert sind; eine Privacy-Einschränkung auf der Basis der Privacy Policy und der Privacy Level-Informationen zu identifizieren hat; einen Arbeitslastplan zu bestimmen hat, wobei der Arbeitslastplan ein Mapping der Arbeitslast auf die Vielzahl von Verarbeitungsvorrichtungen umfasst, und wobei der Arbeitslastplan auf der Basis der Privacy-Einschränkung, des Arbeitslastgraphen und des Vorrichtungskonnektivitätsgraphen bestimmt wird; und den Arbeitslastplan an die Vielzahl von Verarbeitungsvorrichtungen zu verteilen hat.
-
In einem Beispiel einer Ausführungsform eines Systems hat die Vielzahl von Verarbeitungsvorrichtungen, die den Arbeitslastplan zu bestimmen haben, ferner ein ganzzahliges lineares Programmierungsmodell auf der Basis der Privacy-Einschränkung zu lösen.
-
In einem Beispiel einer Ausführungsform eines Systems umfasst die Vielzahl von Sensoren eines oder mehrere von: einer Kamera, einem Infrarotsensor oder einem laserbasierten Sensor.
-
In einem Beispiel einer Ausführungsform eines Systems umfasst der Arbeitslastgraph ferner Informationen, die mit einer Vielzahl von Aufgabenabhängigkeiten unter der Vielzahl von Aufgaben assoziiert sind.
-
In einem Beispiel einer Ausführungsform eines Systems umfasst die Privacy Policy eine Vielzahl von Privacy-Anforderungen, die mit der Vielzahl von Aufgabenabhängigkeiten assoziiert sind.
-
In einem Beispiel einer Ausführungsform eines Systems umfassen die Vorrichtungskonnektivitätsinformationen Informationen, die mit einer Vielzahl von Vorrichtungskonnektivitätsverbindungen unter der Vielzahl von Verarbeitungsvorrichtungen assoziiert sind.
-
In einem Beispiel einer Ausführungsform eines Systems umfassen die Privacy Level-Informationen eine Vielzahl von Privacy Levels, die mit der Vielzahl von Vorrichtungskonnektivitätsverbindungen assoziiert sind.
-
Eine oder mehrere Ausführungsformen kann oder können mindestens ein maschinenzugängliches Speichermedium umfassen, das darauf gespeicherte Instruktionen aufweist, wobei die Instruktionen, wenn sie auf einer Maschine ausgeführt werden, die Maschine veranlassen: eine Arbeitslast zu identifizieren, die eine Vielzahl von Aufgaben umfasst; einen Arbeitslastgraphen auf der Basis der Arbeitslast zu generieren, wobei der Arbeitslastgraph Informationen umfasst, die mit der Vielzahl von Aufgaben assoziiert sind; einen Vorrichtungskonnektivitätsgraphen zu identifizieren, wobei der Vorrichtungskonnektivitätsgraph Vorrichtungskonnektivitätsinformationen umfasst, die mit einer Vielzahl von Verarbeitungsvorrichtungen assoziiert sind; eine Privacy Policy zu identifizieren, die mit der Arbeitslast assoziiert ist; Privacy Level Informationen zu identifizieren, die mit der Vielzahl von Verarbeitungsvorrichtungen assoziiert sind; eine Privacy-Einschränkung auf der Basis der Privacy Policy und der Privacy Level-Informationen zu identifizieren; einen Arbeitslastplan zu bestimmen, wobei der Arbeitslastplan ein Mapping der Arbeitslast auf die Vielzahl von Verarbeitungsvorrichtungen umfasst, und wobei der Arbeitslastplan auf der Basis der Privacy-Einschränkung, des Arbeitslastgraphen und des Vorrichtungskonnektivitätsgraphen bestimmt wird; und den Arbeitslastplan an die Vielzahl von Verarbeitungsvorrichtungen zu verteilen.
-
In einem Beispiel einer Ausführungsform eines Speichermediums können die Instruktionen, welche die Maschine veranlassen, den Arbeitslastplan zu bestimmen, ferner die Maschine veranlassen, ein ganzzahliges lineares Programmierungsmodell auf der Basis der Privacy-Einschränkung zu lösen.
-
In einem Beispiel einer Ausführungsform eines Speichermediums ist die Vielzahl Aufgaben mit der Verarbeitung von Sensordaten von einem oder mehreren Sensoren assoziiert.
-
In einem Beispiel einer Ausführungsform eines Speichermediums umfasst der Arbeitslastgraph ferner Informationen, die mit einer Vielzahl von Aufgabenabhängigkeiten unter der Vielzahl von Aufgaben assoziiert sind; und umfasst die Privacy Policy eine Vielzahl von Privacy-Anforderungen, die mit der Vielzahl von Aufgabenabhängigkeiten assoziiert sind.
-
In einem Beispiel einer Ausführungsform eines Speichermediums umfassen die Vorrichtungskonnektivitätsinformationen Informationen, die mit einer Vielzahl von Vorrichtungskonnektivitätsverbindungen unter der Vielzahl von Verarbeitungsvorrichtungen assoziiert sind; und umfassen die Privacy Level-Informationen eine Vielzahl von Privacy Levels, die mit der Vielzahl von Vorrichtungskonnektivitätsverbindungen assoziiert sind.
-
Eine oder mehrere Ausführungsformen kann oder können ein Verfahren umfassen, umfassend: Identifizieren einer Arbeitslast, wobei die Arbeitslast eine Vielzahl von Aufgaben umfasst, die mit der Verarbeitung von Sensordaten von einem oder mehreren Sensoren assoziiert sind; Generieren eines Arbeitslastgraphen auf der Basis der Arbeitslast, wobei der Arbeitslastgraph Informationen umfasst, die mit der Vielzahl von Aufgaben assoziiert sind; Identifizieren eines Vorrichtungskonnektivitätsgraphen, wobei der Vorrichtungskonnektivitätsgraph Vorrichtungskonnektivitätsinformationen umfasst, die mit einer Vielzahl von Verarbeitungsvorrichtungen assoziiert sind; Identifizieren einer Privacy Policy, die mit der Arbeitslast assoziiert ist; Identifizieren von Privacy Level-Informationen, die mit der Vielzahl von Verarbeitungsvorrichtungen assoziiert sind; Identifizieren einer Privacy-Einschränkung auf der Basis der Privacy Policy und der Privacy Level-Informationen; Bestimmen eines Arbeitslastplans, wobei der Arbeitslastplan ein Mapping der Arbeitslast auf die Vielzahl von Verarbeitungsvorrichtungen umfasst, und wobei der Arbeitslastplan auf der Basis der Privacy-Einschränkung, des Arbeitslastgraphen und des Vorrichtungskonnektivitätsgraphen bestimmt wird; und Verteilen des Arbeitslastplans an die Vielzahl von Verarbeitungsvorrichtungen.
-
In einem Beispiel einer Ausführungsform eines Verfahrens umfasst das Bestimmen des Arbeitslastplans das Lösen eines ganzzahligen linearen Programmierungsmodells auf der Basis der Privacy-Einschränkung.
-
In einem Beispiel einer Ausführungsform eines Verfahrens umfasst der Arbeitslastgraph ferner Informationen, die mit einer Vielzahl von Aufgabenabhängigkeiten unter der Vielzahl von Aufgaben assoziiert sind; und umfasst die Privacy Policy eine Vielzahl von Privacy-Anforderungen, die mit der Vielzahl von Aufgabenabhängigkeiten assoziiert sind.
-
In einem Beispiel einer Ausführungsform eines Verfahrens umfassen die Vorrichtungskonnektivitätsinformationen Informationen, die mit einer Vielzahl von Vorrichtungskonnektivitätsverbindungen unter der Vielzahl von Verarbeitungsvorrichtungen assoziiert sind; und umfassen die Privacy Level-Informationen eine Vielzahl von Privacy Levels, die mit der Vielzahl von Vorrichtungskonnektivitätsverbindungen assoziiert sind.
-
Eine oder mehrere Ausführungsformen kann oder können eine Vorrichtung umfassen, umfassend: eine Draufsicht-Sensorvorrichtung, um Sensordaten aufzunehmen, die mit einer Umgebung unter der Draufsicht-Sensorvorrichtung assoziiert sind; und einen Prozessor, um: die Sensordaten, die von der Draufsicht-Sensorvorrichtung aufgenommen werden, zu erhalten; auf der Basis der Sensordaten, eine visuelle Darstellung der Umgebung unter der Draufsicht-Sensorvorrichtung zu generieren; zu bestimmen, dass die visuelle Darstellung eine Darstellung einer Person umfasst; ein oder mehrere Merkmale, die mit der Darstellung der Person assoziiert sind, zu identifizieren; und demographische Informationen, die mit der Person assoziiert sind, auf der Basis des einen oder der mehreren Merkmale zu identifizieren.
-
In einem Beispiel einer Ausführungsform einer Vorrichtung umfasst die Draufsicht-Sensorvorrichtung eine Vielzahl von Sensoren.
-
In einem Beispiel einer Ausführungsform einer Vorrichtung umfasst die Vielzahl von Sensoren eines oder mehrere von: einer Kamera, einem Infrarotsensor oder einem laserbasierten Sensor.
-
In einem Beispiel einer Ausführungsform einer Vorrichtung umfasst die Darstellung der Person eine Draufsicht-Darstellung der Person.
-
In einem Beispiel einer Ausführungsform einer Vorrichtung umfassen die demographischen Informationen eines oder mehrere von: Alter, Geschlecht oder Rasse.
-
In einem Beispiel einer Ausführungsform einer Vorrichtung umfasst oder umfassen das eine oder die mehreren Merk-male ein oder mehrere anthropometrische Merkmale, die mit der Person assoziiert sind.
-
In einem Beispiel einer Ausführungsform einer Vorrichtung hat der Prozessor, der das eine oder die mehreren Merkmale zu identifizieren hat, die mit der Darstellung der Person assoziiert sind, ferner eine Merkmalextraktion an der Darstellung der Person vorzunehmen.
-
In einem Beispiel einer Ausführungsform einer Vorrichtung hat der Prozessor, der die Merkmalextraktion an der Darstellung der Person vorzunehmen hat, ferner eine diskrete Cosinustransformation vorzunehmen, um ein Merkmal zu extrahieren, das mit der Darstellung der Person assoziiert ist.
-
In einem Beispiel einer Ausführungsform einer Vorrichtung hat der Prozessor, der die Merkmalextraktion an der Darstellung der Person vorzunehmen hat, ferner eine Hauptkomponentenanalyse vorzunehmen, um ein Merkmal zu extrahieren, das mit der Darstellung der Person assoziiert ist.
-
In einem Beispiel einer Ausführungsform einer Vorrichtung hat der Prozessor, der die demographischen Informationen, die mit der Person assoziiert sind, auf der Basis des einen oder der mehreren Merkmale zu identifizieren hat, ferner das eine oder die mehreren Merkmale unter Verwendung eines maschinellen Lernmodells zu klassifizieren.
-
In einem Beispiel einer Ausführungsform einer Vorrichtung hat der Prozessor ferner eine Vor-Verarbeitung an den Sensordaten vorzunehmen.
-
In einem Beispiel einer Ausführungsform einer Vorrichtung hat der Prozessor, der die Vor-Verarbeitung an den Sensordaten vorzunehmen hat, ferner eine oder mehrere von einer Datentransformation oder einer Rauschreduktion vorzunehmen.
-
Eine oder mehrere Ausführungsformen kann oder können ein System umfassen, umfassend: eine Draufsicht-Sensorvorrichtung, um Sensordaten aufzunehmen, die mit einer Umgebung unter der Draufsicht-Sensorvorrichtung assoziiert sind; und eine Edge-Verarbeitungsvorrichtung, um: die Sensordaten, die von der Draufsicht-Sensorvorrichtung aufgenommen werden, zu erhalten; auf der Basis der Sensordaten, eine visuelle Darstellung der Umgebung unter der Draufsicht-Sensorvorrichtung zu generieren; zu bestimmen, dass die visuelle Darstellung eine Darstellung einer Person umfasst; ein oder mehrere anthropometrische Merkmale, die mit der Darstellung der Person assoziiert sind, zu identifizieren; und demographische Informationen, die mit der Person assoziiert sind, auf der Basis des einen oder der mehreren anthropometrischen Merkmale zu identifizieren.
-
In einem Beispiel einer Ausführungsform eines Systems umfasst die Vielzahl von Sensoren eines oder mehrere von: einer Kamera, einem Infrarotsensor oder einem laserbasierten Sensor.
-
In einem Beispiel einer Ausführungsform eines Systems hat die Edge-Verarbeitungsvorrichtung, welche die demographischen Informationen zu identifizieren hat, die mit der Person assoziiert sind, auf der Basis des einen oder der mehreren anthropometrischen Merkmale zu identifizieren hat, ferner das eine oder die mehreren anthropometrischen Merkmale unter Verwendung eines maschinellen Lernmodells zu klassifizieren.
-
In einem Beispiel einer Ausführungsform eines Systems umfasst die Edge-Verarbeitungsvorrichtung ein Edge-Gateway.
-
In einem Beispiel einer Ausführungsform eines Systems umfasst das System ferner eine Cloud-Verarbeitungsvorrichtung, um eine Analytik auf der Basis der demographischen Informationen vorzunehmen; und umfasst die Edge-Vorrichtung eine Kommunikationsschnittstelle, um die demographischen Informationen zur Cloud-Verarbeitungsvorrichtung zu übertragen.
-
In einem Beispiel einer Ausführungsform eines Systems hat die Cloud-Verarbeitungsvorrichtung, die eine Analytik auf der Basis der demographischen Informationen vorzunehmen hat, ferner eine Wärmekarte oder ein Menschenprofil zu generieren.
-
Eine oder mehrere Ausführungsformen kann oder können mindestens ein maschinenzugängliches Speichermedium umfassen, das darauf gespeicherte Instruktionen aufweist, wobei die Instruktionen, wenn sie auf einer Maschine ausgeführt werden, die Maschine veranlassen: Sensordaten, die von einer Draufsicht-Sensorvorrichtung aufgenommen werden, zu erhalten, wobei die Sensordaten Informationen umfassen, die mit einer Umgebung unter der Draufsicht-Sensorvorrichtung assoziiert sind; auf der Basis der Sensordaten eine visuelle Darstellung der Umgebung unter der Draufsicht-Sensorvorrichtung zu generieren; zu bestimmen, dass die visuelle Darstellung eine Darstellung einer Person umfasst; ein oder mehrere anthropometrische Merkmale, die mit der Darstellung der Person assoziiert sind, zu identifizieren; und demographische Informationen, die mit der Person assoziiert sind, auf der Basis des einen oder der mehreren anthropometrischen Merkmale zu identifizieren.
-
In einem Beispiel einer Ausführungsform eines Speichermediums umfasst die Draufsicht-Sensorvorrichtung eines oder mehrere von: einer Kamera, einem Infrarotsensor oder einem laserbasierten Sensor.
-
In einem Beispiel einer Ausführungsform eines Speichermediums veranlassen die Instruktionen, welche die Maschine veranlassen, das eine oder die mehreren anthropometrischen Merkmale zu identifizieren, die mit der Darstellung der Person assoziiert sind, ferner die Maschine, eine Merkmalextraktion an der Darstellung der Person vorzunehmen.
-
In einem Beispiel einer Ausführungsform eines Speichermediums veranlassen die Instruktionen, welche die Maschine veranlassen, die demographischen Informationen, die mit der Darstellung der Person assoziiert sind, auf der Basis des einen oder der mehreren anthropometrischen Merkmale zu identifizieren, ferner die Maschine, das eine oder die mehreren anthropometrischen Merkmale unter Verwendung eines maschinellen Lernmodells zu klassifizieren.
-
Eine oder mehrere Ausführungsformen kann oder können ein Verfahren umfassen, umfassend: Erhalten von Sensordaten, die von einer Draufsicht-Sensorvorrichtung aufgenommen werden, wobei die Sensordaten Informationen umfassen, die mit einer Umgebung unter der Draufsicht-Sensorvorrichtung assoziiert sind; Generieren, auf der Basis der Sensordaten, einer visuellen Darstellung der Umgebung unter der Draufsicht-Sensorvorrichtung; Bestimmen, dass die visuelle Darstellung eine Darstellung einer Person umfasst; Identifizieren eines oder mehrerer anthropometrischer Merkmale, die mit der Darstellung der Person assoziiert sind; und Identifizieren demographischer Informationen, die mit der Person assoziiert sind, auf der Basis des einen oder der mehreren anthropometrischen Merkmale.
-
In einem Beispiel einer Ausführungsform eines Verfahrens umfasst das Identifizieren des einen oder der mehreren anthropometrischen Merkmale, die mit der Darstellung der Person assoziiert sind, das Vornehmen einer Merkmalextraktion an der Darstellung der Person.
-
In einem Beispiel einer Ausführungsform eines Verfahrens umfasst das Identifizieren der demographischen Informationen, die mit der Person assoziiert sind, auf der Basis des einen oder der mehreren anthropometrischen Merkmale das Klassifizieren des einen oder der mehreren anthropometrischen Merkmale unter Verwendung eines maschinellen Lernmodells.
-
Eine oder mehrere Ausführungsformen kann oder können ein System umfassen, umfassend: Mittel zum Erhalten von Sensordaten, die von einer Draufsicht-Sensorvorrichtung aufgenommen werden, wobei die Sensordaten Informationen umfassen, die mit einer Umgebung unter der Draufsicht-Sensorvorrichtung assoziiert sind; Mittel zum Generieren, auf der Basis der Sensordaten, einer visuellen Darstellung der Umgebung unter der Draufsicht-Sensorvorrichtung; Mittel zum Bestimmen, dass die visuelle Darstellung eine Darstellung einer Person umfasst; Mittel zum Identifizieren eines oder mehrerer anthropometrischer Merkmale, die mit der Darstellung der Person assoziiert sind; und Mittel zum Identifizieren demographischer Informationen, die mit der Person assoziiert sind, auf der Basis des einen oder der mehreren anthropometrischen Merkmale.
-
Eine oder mehrere Ausführungsformen kann oder können eine Vorrichtung umfassen, umfassend: eine Kommunikationsschnittstelle, um mit einer Vielzahl von Kameras zu kommunizieren; und einen Prozessor, um: Metadaten zu erhalten, die mit einem Initialzustand eines Objekts assoziiert sind, wobei das Objekt von einer ersten Kamera von der Vielzahl von Kameras in einem ersten Videostream zu einem ersten Zeitpunkt aufgenommen wird, und wobei die Metadaten auf der Basis des ersten Videostreams erhalten werden; auf der Basis der Metadaten, einen zukünftigen Zustand des Objekts zu einem zweiten Zeitpunkt vorherzusagen; eine zweite Kamera zum Aufnehmen des Objekts zu dem zweiten Zeitpunkt zu identifizieren, wobei die zweite Kamera aus der Vielzahl von Kameras identifiziert wird auf der Basis von: dem zukünftigen Zustand des Objekts; und einer Vielzahl von Kameraansichten der Vielzahl von Kameras; und die zweite Kamera auszulegen, um das Objekt in einem zweiten Videostream zu dem zweiten Zeitpunkt aufzunehmen, wobei die zweite Kamera dafür ausgelegt ist, um das Objekt auf der Basis des zukünftigen Zustands des Objekts aufzunehmen.
-
In einem Beispiel einer Ausführungsform einer Vorrichtung umfassen die Metadaten, die mit dem Initialzustand des Objekts assoziiert sind, eine Anzeige von: einem aktuellen Ort des Objekts; und einer aktuellen Bewegungsrichtung des Objekts.
-
In einem Beispiel einer Ausführungsform einer Vorrichtung umfassen die Metadaten, die mit dem Initialzustand des Objekts assoziiert sind, eine Anzeige einer oder mehrerer aktueller Verhaltenscharakteristiken des Objekts.
-
In einem Beispiel einer Ausführungsform einer Vorrichtung umfassen die Metadaten, die mit dem Initialzustand des Objekts assoziiert sind, eine Anzeige einer oder mehrerer physischer Charakteristiken des Objekts.
-
In einem Beispiel einer Ausführungsform einer Vorrichtung hat der Prozessor, der, auf der Basis der Metadaten, den zukünftigen Zustand des Objekts zu dem zweiten Zeitpunkt vorherzusagen hat, ferner ein maschinelles Lernmodell auf die Metadaten anwenden, wobei das maschinelle Lernmodell darauf trainiert ist, um den zukünftigen Zustand des Objekts auf der Basis des Initialzustand des Objekts vorherzusagen.
-
In einem Beispiel einer Ausführungsform einer Vorrichtung hat der Prozessor ferner: einen tatsächlichen Zustand des Objekts zu dem zweiten Zeitpunkt zu bestimmen, wobei der tatsächliche Zustand des Objekts auf der Basis eines oder mehrerer Videostreams bestimmt wird, die von der Vielzahl von Kameras zu dem zweiten Zeitpunkt aufgenommen werden; und das maschinelle Lernmodell zu optimieren, um eine Korrelation zwischen dem tatsächlichen Zustand des Objekts und den Metadaten zu lernen, die mit dem Initialzustand des Objekts assoziiert sind.
-
In einem Beispiel einer Ausführungsform einer Vorrichtung hat der Prozessor, der die zweite Kamera dafür auszulegen hat, um das Objekt in dem zweiten Videostream zu dem zweiten Zeitpunkt aufzunehmen, ferner eine oder mehrere Einstellungen der zweiten Kamera einzustellen, um das Objekt auf der Basis des zukünftigen Zustands des Objekt aufzunehmen.
-
In einem Beispiel einer Ausführungsform einer Vorrichtung umfasst der zukünftige Zustand des Objekts eine Anzeige eines zukünftigen Orts des Objekts zu dem zweiten Zeitpunkt; und hat der Prozessor, um der die zweite Kamera zum Aufnehmen des Objekts zu dem zweiten Zeitpunkt zu identifizieren hat, ferner zu bestimmen, dass der zukünftige Ort des Objekts innerhalb einer Kamerasicht der zweiten Kamera liegt.
-
In einem Beispiel einer Ausführungsform einer Vorrichtung hat der Prozessor ferner auf den zweiten Videostream zuzugreifen, der von der zweiten Kamera zu dem zweiten Zeitpunkt aufgenommen wird; das Objekt in dem zweiten Videostream auf der Basis der Metadaten zu detektieren, die mit dem Initialzustand des Objekts assoziiert sind; und das Objekt in dem ersten Videostrom und dem zweiten Videostream zu verfolgen.
-
In einem Beispiel einer Ausführungsform einer Vorrichtung hat der Prozessor ferner auf den ersten Videostream zuzugreifen, der von der ersten Kamera aufgenommen wird; zu bestimmen, dass das Objekt auf der Basis des ersten Videostreams nicht identifiziert werden kann; auf der Basis des zukünftigen Zustands des Objekts zu bestimmen, dass das Objekt auf der Basis des zweiten Videostreams identifiziert werden kann, der von der zweiten Kamera zu dem zweiten Zeitpunkt aufzunehmen ist; auf den zweiten Videostream zuzugreifen, der von der zweiten Kamera zu dem zweiten Zeitpunkt aufgenommen wird; und das Objekt auf der Basis des zweiten Videostreams zu identifizieren.
-
In einem Beispiel einer Ausführungsform der Vorrichtung ist das Objekt eine Person; und der Prozessor, der das Objekt auf der Basis des zweiten Videostreams zu identifizieren hat, hat ferner die Person unter Verwendung einer Gesichtserkennung zu identifizieren.
-
In einem Beispiel einer Ausführungsform der Vorrichtung ist das Objekt ein Auto; und der Prozessor, der das Objekt auf der Basis des zweiten Videostreams zu identifizieren hat, hat ferner die Nummer eines Nummernschilds des Autos zu identifizieren; oder eine oder mehrere physische Charakteristiken des Autos zu bestimmen.
-
Eine oder mehrere Ausführungsformen kann oder können ein System umfassen, umfassend: eine Vielzahl von Kameras, um eine Vielzahl von Videostreams aufzunehmen; und eine oder mehrere Verarbeitungsvorrichtungen, um: auf einen ersten Videostream zuzugreifen, der von einer ersten Kamera der Vielzahl von Kameras zu einem ersten Zeitpunkt aufgenommen wird; ein Objekt in dem ersten Videostream zu detektieren; Metadaten zu generieren, die mit einem Initialzustand des Objekts assoziiert sind, wobei die Metadaten auf der Basis des ersten Videostreams generiert werden; auf der Basis der Metadaten einen zukünftigen Zustand des Objekts zu einem zweiten Zeitpunkt vorherzusagen; eine zweite Kamera zum Aufnehmen des Objekts zu dem zweiten Zeitpunkt zu identifizieren, wobei die zweite Kamera aus der Vielzahl von Kameras identifiziert wird auf der Basis von: dem zukünftigen Zustand des Objekts; und einer Vielzahl von Kameraansichten der Vielzahl von Kameras; und die zweite Kamera dafür auszulegen, um das Objekt in einem zweiten Videostream zu dem zweiten Zeitpunkt aufzunehmen, wobei die zweite Kamera dafür ausgelegt ist, das Objekt auf der Basis des zukünftigen Zustands des Objekts aufzunehmen.
-
In einem Beispiel einer Ausführungsform eines Systems umfasst die erste Kamera einen Tiefensensor, um eine Tiefe des Objekts relativ zu der ersten Kamera zu bestimmen; und die eine oder mehreren Verarbeitungsvorrichtungen, um Metadaten zu generieren, die mit dem Initialzustand des Objekts assoziiert sind, haben ferner: einen aktuellen Ort des Objekts auf der Basis der Tiefe des Objekts relativ zu der ersten Kamera zu bestimmen; und eine aktuelle Bewegungsrichtung des Objekts zu bestimmen.
-
In einem Beispiel einer Ausführungsform eines Systems hat oder haben die eine oder mehreren Verarbeitungsvorrichtungen, die auf der Basis der Metadaten, den zukünftigen Zustand des Objekts zu dem zweiten Zeitpunkt vorherzusagen haben, ferner ein maschinelles Lernmodell auf die Metadaten anzuwenden, wobei das maschinelle Lernmodell darauf trainiert ist, den zukünftigen Zustand des Objekts auf der Basis des Initialzustands des Objekts vorherzusagen.
-
In einem Beispiel einer Ausführungsform eines Systems hat oder haben die eine oder mehreren Verarbeitungsvorrichtungen ferner: einen tatsächlichen Zustand des Objekts zu dem zweiten Zeitpunkt zu bestimmen, wobei der tatsächliche Zustand des Objekts auf der Basis eines oder mehrerer Videostreams bestimmt wird, die von der Vielzahl von Kameras zu dem zweiten Zeitpunkt aufgenommen werden; und das maschinelle Lernmodell zu optimieren, um eine Korrelation zwischen dem tatsächlichen Zustand des Objekts und den Metadaten zu lernen, die mit dem Initialzustand des Objekts assoziiert sind.
-
In einem Beispiel einer Ausführungsform eines Systems umfasst der zukünftige Zustand des Objekts eine Anzeige eines zukünftigen Orts des Objekts zu dem zweiten Zeitpunkt; und die eine oder mehreren Verarbeitungsvorrichtungen, welche die zweite Kamera zum Aufnehmen des Objekts zu dem zweiten Zeitpunkt zu identifizieren haben, haben ferner zu bestimmen, dass der zukünftige Ort des Objekts innerhalb einer Kamerasicht der zweiten Kamera liegt.
-
In einem Beispiel einer Ausführungsform eines Systems hat oder haben die eine oder mehreren Verarbeitungsvorrichtung ferner: auf den zweiten Videostream zuzugreifen, der von der zweiten Kamera zu dem zweiten Zeitpunkt aufgenommen wird; das Objekt in dem zweiten Videostream auf der Basis der Metadaten zu detektieren, die mit dem Initialzustand des Objekts assoziiert sind; und das Objekt in dem ersten Videostream und dem zweiten Videostream zu verfolgen.
-
In einem Beispiel einer Ausführungsform eines Systems hat oder haben die eine oder mehreren Verarbeitungsvorrichtung ferner: zu bestimmen, dass das Objekt auf der Basis des ersten Videostreams nicht identifiziert werden kann; auf der Basis des zukünftigen Zustands des Objekts zu bestimmen, dass das Objekt auf der Basis des zweiten Videostreams identifiziert werden kann, der von der zweiten Kamera zu dem zweiten Zeitpunkt aufzunehmen ist; und das Objekt auf der Basis des zweiten Videostreams zu identifizieren.
-
Eine oder mehrere Ausführungsformen kann oder können mindestens ein maschinenzugängliches Speichermedium umfassen, das darauf gespeicherte Instruktionen aufweist, wobei die Instruktionen, wenn sie auf einer Maschine ausgeführt werden, die Maschine veranlassen: Metadaten zu erhalten, die mit dem Initialzustand eines Objekts assoziiert sind, wobei das Objekt von einer ersten Kamera von einer Vielzahl von Kameras in einem ersten Videostream zu einem ersten Zeitpunkt aufgenommen wird, und wobei die Metadaten auf der Basis des ersten Videostreams erhalten werden; auf der Basis der Metadaten einen zukünftigen Zustand des Objekts zu einem zweiten Zeitpunkt vorherzusagen; eine zweite Kamera zum Aufnehmen des Bilds zu dem zweiten Zeitpunkt zu identifizieren, wobei die zweite Kamera aus der Vielzahl von Kameras identifiziert wird auf der Basis von: einem zukünftigen Zustand des Objekts; und einer Vielzahl von Kameraansichten der Vielzahl von Kameras; und die zweite Kamera dafür auszulegen, um das Objekt in einem zweiten Videostream zu dem zweiten Zeitpunkt aufzunehmen, wobei die zweite Kamera dafür ausgelegt ist, um das Objekt auf der Basis des zukünftigen Zustands des Objekts aufzunehmen.
-
In einem Beispiel einer Ausführungsform eines Speichermediums veranlassen die Instruktionen, welche die Maschine veranlassen, auf der Basis der Metadaten den zukünftigen Zustand des Objekts zu dem zweiten Zeitpunkt vorherzusagen, ferner die Maschine, ein maschinelles Lernmodell auf die Metadaten anzuwenden, wobei das maschinelle Lernmodell dafür trainiert ist, den zukünftigen Zustand des Objekts auf der Basis des Initialzustands des Objekts vorherzusagen.
-
In einem Beispiel einer Ausführungsform eines Speichermediums veranlassen die Instruktionen die Maschine ferner: einen tatsächlichen Zustand des Objekts zu dem zweiten Zeitpunkt zu bestimmen, wobei der tatsächliche Zustand des Objekts auf der Basis eines oder mehrerer Videostreams bestimmt wird, die von der Vielzahl von Kameras zu dem zweiten Zeitpunkt aufgenommen werden; und das maschinelle Lernmodell zu optimieren, um eine Korrelation zwischen dem tatsächlichen Zustand des Objekts und den Metadaten zu lernen, die mit dem Initialzustand des Objekts assoziiert sind.
-
In einem Beispiel einer Ausführungsform eines Speichermediums veranlassen die Instruktionen die Maschine ferner: auf den zweiten Videostream zuzugreifen, der von der zweiten Kamera zu dem zweiten Zeitpunkt aufgenommen wird; das Objekt in dem zweiten Videostream auf der Basis der Metadaten zu detektieren, die mit dem Initialzustand des Objekts assoziiert sind; und das Objekt in dem ersten Videostream und dem zweiten Videostream zu verfolgen.
-
In einem Beispiel einer Ausführungsform eines Speichermediums veranlassen die Instruktionen die Maschine ferner: zu bestimmen, dass das Objekt auf der Basis des ersten Videostreams nicht identifiziert werden kann; auf der Basis des zukünftigen Zustands des Objekts zu bestimmen, dass das Objekt auf der Basis des zweiten Videostreams identifiziert werden kann, der von der zweiten Kamera zu dem zweiten Zeitpunkt aufzunehmen ist; und das Objekt auf der Basis des zweiten Videostreams zu identifizieren.
-
Eine oder mehrere Ausführungsformen kann oder können ein Verfahren umfassen, umfassend: Erhalten von Metadaten, die mit einem Initialzustand eines Objekts assoziiert sind, wobei das Objekt von einer ersten Kamera von einer Vielzahl von Kameras in einem ersten Videostream zu einem ersten Zeitpunkt aufgenommen wird, und wobei die Metadaten auf der Basis des ersten Videostreams erhalten werden; Vorhersagen, auf der Basis der Metadaten, eines zukünftigen Zustands des Objekts zu einem zweiten Zeitpunkt; Identifizieren einer zweiten Kamera zum Aufnehmen des Objekts zu dem zweiten Zeitpunkt, wobei die zweite Kamera aus der Vielzahl von Kameras identifiziert wird auf der Basis von: dem zukünftigen Zustand des Objekts; und einer Vielzahl von Kameraansichten der Vielzahl von Kameras; und Auslegen der zweiten Kamera, um das Objekt in einem zweiten Videostream zu dem zweiten Zeitpunkt aufzunehmen, wobei die zweite Kamera dafür ausgelegt ist, um das Objekt auf der Basis des zukünftigen Zustands des Objekts aufzunehmen.
-
In einem Beispiel einer Ausführungsform eines Verfahrens umfasst das Vorhersagen, auf der Basis der Metadaten, des zukünftigen Zustands des Objekts zu einem zweiten Zeitpunkt ferner das Anwenden eines maschinellen Lernmodells auf die Metadaten, wobei das maschinelle Lernmodell darauf trainiert ist, den zukünftigen Zustand des Objekts auf der Basis des Initialzustands des Objekts vorherzusagen.
-
Eine oder mehrere Ausführungsformen kann oder können ein System umfassen, umfassend: Mittel zum Erhalten von Metadaten, die mit einem Initialzustand eines Objekts assoziiert sind, wobei das Objekt von einer ersten Kamera von einer Vielzahl von Kameras in einem ersten Videostream zu einem ersten Zeitpunkt aufgenommen wird, und wobei die Metadaten auf der Basis des ersten Videostreams erhalten werden; Mittel zum Vorhersagen, auf der Basis der Metadaten, des zukünftigen Zustands des Objekts zu einem zweiten Zeitpunkt; Mittel zum Identifizieren einer zweiten Kamera zum Aufnehmen des Objekts zu dem zweiten Zeitpunkt, wobei die zweite Kamera aus der Vielzahl von Kameras identifiziert wird auf der Basis von: dem zukünftigen Zustand des Objekts; und einer Vielzahl von Kameraansichten der Vielzahl von Kameras; und Mittel zum Auslegen der zweiten Kamera, um das Objekt in einem zweiten Videostream zu dem zweiten Zeitpunkt aufzunehmen, wobei die zweite Kamera dafür ausgelegt ist, um das Objekt auf der Basis des zukünftigen Zustands des Objekts aufzunehmen.
-
Eine oder mehrere Ausführungsformen kann oder können eine Vorrichtung umfassen, umfassend: einen Speicher, um Sensordaten zu speichern, die von einem oder mehreren Sensoren aufgenommen werden, welche mit einer ersten Vorrichtung assoziiert sind; und einen Prozessor, umfassend Schaltungen, um: auf die Sensordaten zuzugreifen, die von dem einen oder den mehreren Sensoren aufgenommen werden, welche mit der ersten Vorrichtung assoziiert sind; zu bestimmen, dass ein Ereignis in der Nähe der ersten Vorrichtung aufgetreten ist; eine erste Sammlung von Sensordaten, die mit dem Ereignis assoziiert sind, zu identifizieren, wobei die erste Sammlung von Sensordaten aus den Sensordaten, die von dem einen oder den mehreren Sensoren aufgenommen werden, identifiziert wird; in dem Speicher, die erste Sammlung von Sensordaten, die mit dem Ereignis assoziiert sind, zu sichern; und eine oder mehrere zweite Vorrichtungen von dem Ereignis zu benachrichtigen, wobei die eine oder mehreren zweiten Vorrichtungen in der Nähe der ersten Vorrichtung angeordnet sind.
-
In einem Beispiel einer Ausführungsform einer Vorrichtung haben die Schaltungen, die zu bestimmen haben, dass der Vorfall in der Nähe der ersten Vorrichtung aufgetreten ist, ferner: die Sensordaten zu analysieren, die von dem einen oder den mehreren Sensoren aufgenommen werden; eine Anomalie zu identifizieren, die mit den Sensordaten assoziiert ist; und den Vorfall auf der Basis der Anomalie zu detektieren, die mit den Sensordaten assoziiert ist.
-
In einem Beispiel einer Ausführungsform einer Vorrichtung haben die Schaltungen ferner: eine Benachrichtigung, die mit dem Vorfall assoziiert ist, über ein Information-centric Network zu empfangen, wobei die Benachrichtigung eine Anforderung für Daten umfasst, die mit dem Vorfall assoziiert sind, und wobei die Anforderung für Daten eine Anzeige der Vielzahl von Attributen umfasst, die mit dem Vorfall assoziiert sind; und zu bestimmen, ob die Sensordaten, die von dem einen oder den mehreren Sensoren aufgenommen werden, der Vielzahl von Attributen entspricht, die mit dem Vorfall assoziiert sind.
-
In einem Beispiel einer Ausführungsform einer Vorrichtung umfasst die Vielzahl von Attributen, die mit dem Vorfall assoziiert sind, eine Zeit und einen Ort des Vorfalls.
-
In einem Beispiel einer Ausführungsform einer Vorrichtung haben die Schaltungen ferner einen Identifikator für den Vorfall zu generieren, wobei der Identifikator auf der Basis eines oder mehrerer Attribute generiert wird, die mit dem Vorfall assoziiert sind.
-
In einem Beispiel einer Ausführungsform einer Vorrichtung haben die Schaltungen, welche die eine oder mehreren zweiten Vorrichtungen von dem Vorfall zu benachrichtigen haben, ferner: eine Benachrichtigung, die dem Vorfall assoziiert ist, über ein Information-centric Network zu senden, wobei die Benachrichtigung eine Anforderung für Daten umfasst, die mit dem Vorfall assoziiert sind, und wobei die Benachrichtigung von der einen oder den mehreren zweiten Vorrichtungen empfangen wird.
-
In einem Beispiel einer Ausführungsform einer Vorrichtung haben die Schaltungen ferner: eine oder mehrere zweite Sammlungen von Sensordaten zu empfangen, die mit dem Vorfall assoziiert sind, wobei die eine oder mehreren zweiten Sammlungen von Sensordaten von der einen oder den mehreren zweiten Vorrichtungen empfangen werden; und eine konsolidierte Sammlung von Sensordaten zu generieren, die mit dem Vorfall assoziiert sind, wobei die konsolidierte Sammlung von Sensordaten aus der ersten Sammlung von Sensordaten und der einen oder den mehreren zweiten Sammlungen von Sensordaten generiert wird.
-
In einem Beispiel einer Ausführungsform einer Vorrichtung haben die Schaltungen ferner die konsolidierte Sammlung von Sensordaten an eine Einheit zu senden, die mit dem Vorfall assoziiert ist.
-
In einem Beispiel einer Ausführungsform einer Vorrichtung haben die Schaltungen ferner eine rekonstruierte Darstellung des Vorfalls auf der Basis der konsolidierten Sammlung von Sensordaten zu generieren.
-
In einem Beispiel einer Ausführungsform einer Vorrichtung umfasst der Vorfall einen Autounfall, wobei die erste Vorrichtung assoziiert ist mit: einem Fahrzeug, das in den Autounfall involviert ist; oder einer straßenseitigen Infrastruktur, die nahe bei dem Autounfall lokalisiert ist.
-
In einem Beispiel einer Ausführungsform einer Vorrichtung ist die erste Vorrichtung mit einem Überwachungssystem assoziiert, und wobei der eine oder die mehreren Sensoren eine oder mehrere Kameras umfassen.
-
Eine oder mehrere Ausführungsformen kann oder können ein System umfassen, umfassend: eine Vielzahl von Sensoren, um Sensordaten aufzunehmen, die mit einer Betriebsumgebung einer ersten Vorrichtung assoziiert sind; eine Kommunikationsschnittstelle, um mit einer oder mehreren zweiten Vorrichtungen zu kommunizieren; und einen Prozessor, um: zu bestimmen, dass ein Unfall in der Nähe der ersten Vorrichtung geschehen ist; eine erste Sammlung von Sensordaten zu identifizieren, die mit dem Vorfall assoziiert sind, wobei die erste Sammlung von Sensordaten von aus den Sensordaten identifiziert wird, die von der Vielzahl von Sensoren aufgenommen werden; die erste Sammlung von Sensordaten zu sichern, die mit dem Vorfall assoziiert sind; und die eine oder mehreren zweiten Vorrichtungen von dem Vorfall zu benachrichtigen, wobei die eine oder mehreren zweiten Vorrichtungen in der Nähe der ersten Vorrichtung lokalisiert sind.
-
In einem Beispiel einer Ausführungsform eines Systems hat der Prozessor, der zu bestimmen hat, dass der Vorfall in der Nähe der ersten Vorrichtung geschehen ist, ferner den Vorfall auf der Basis einer Analyse der Sensordaten zu detektieren, die von der Vielzahl von Sensoren aufgenommen werden.
-
In einem Beispiel einer Ausführungsform eines Systems hat der Prozessor ferner: eine Benachrichtigung, die mit dem Vorfall assoziiert ist, über ein Information-centric Network zu empfangen, wobei die Benachrichtigung eine Anforderung für Daten umfasst, die mit dem Vorfall assoziiert sind, und wobei die Anforderung für Daten eine Anzeige einer Vielzahl von Attributen umfasst, die mit dem Vorfall assoziiert sind; und zu bestimmen, ob die Sensordaten, die von der Vielzahl von Sensoren aufgenommen wurden, der Vielzahl von Attributen entsprechen, die mit dem Vorfall assoziiert sind.
-
In einem Beispiel einer Ausführungsform eines Systems hat der Prozessor, der die eine oder mehreren zweiten Vorrichtungen von dem Vorfall zu benachrichtigen hat, ferner: eine Benachrichtigung, die mit dem Vorfall assoziiert ist, über ein Information-centric Network zu senden, wobei die Benachrichtigung eine Anforderung für Daten umfasst, die mit dem Vorfall assoziiert sind, und wobei die Benachrichtigung von der einen oder den mehreren zweiten Vorrichtungen empfangen wird.
-
In einem Beispiel einer Ausführungsform eines Systems hat der Prozessor ferner: eine oder mehrere zweite Sammlungen von Sensordaten zu empfangen, die mit dem Vorfall assoziiert sind, wobei die eine oder mehreren zweiten Sammlungen von Sensordaten von der einen oder den mehreren zweiten Vorrichtungen empfangen werden; und eine konsolidierte Sammlung von Sensordaten zu generieren, die mit dem Vorfall assoziiert sind, wobei die konsolidierte Sammlung von Sensordaten aus der ersten Sammlung von Sensordaten und der einen oder den mehreren zweiten Sammlungen von Sensordaten generiert wird.
-
In einem Beispiel einer Ausführungsform eines Systems hat der Prozessor ferner die konsolidierte Sammlung von Sensordaten zu einer Einheit zu senden, die mit dem Vorfall assoziiert ist.
-
In einem Beispiel einer Ausführungsform eines Systems hat der Prozessor ferner eine rekonstruierte Darstellung des Vorfalls auf der Basis der konsolidierten Sammlung von Sensordaten zu generieren.
-
Eine oder mehrere Ausführungsformen kann oder können mindestens ein maschinenzugängliches Speichermedium umfassen, das darauf gespeicherte Instruktionen aufweist, wobei die Instruktionen, wenn sie auf einer Maschine ausgeführt werden, die Maschine veranlassen: auf Sensordaten zuzugreifen, die von einem oder mehreren Sensoren aufgenommen werden, welche mit einer ersten Vorrichtung assoziiert sind; einen Vorfall zu detektieren, der in der Nähe der ersten Vorrichtung auftritt, wobei der Vorfall auf der Basis einer Analyse der Sensordaten detektiert wird; eine erste Sammlung von Sensordaten zu identifizieren, die mit dem Vorfall assoziiert sind, wobei die erste Sammlung von Sensordaten aus den Sensordaten identifiziert wird, die von dem einen oder den mehreren Sensoren aufgenommen werden; die erste Sammlung von Sensordaten zu sichern, die mit dem Vorfall assoziiert sind; und eine oder mehrere zweite Vorrichtungen von dem Vorfall zu benachrichtigen, wobei die eine oder mehreren zweiten Vorrichtungen in der Nähe der ersten Vorrichtung lokalisiert sind.
-
In einem Beispiel einer Ausführungsform eines Speichermediums veranlassen die Instruktionen die Maschine ferner: eine Benachrichtigung, die mit dem Vorfall assoziiert ist, über ein Information-centric Network zu empfangen, wobei die Benachrichtigung eine Anforderung für Daten umfasst, die mit dem Vorfall assoziiert sind, und wobei die Anforderung für Daten eine Anzeige einer Vielzahl von Attributen umfasst, die mit dem Vorfall assoziiert sind; und zu bestimmen, ob die Sensordaten, die von dem einen oder den mehreren Sensoren aufgenommen wurde, der Vielzahl von Attributen entsprechen, die mit dem Vorfall assoziiert sind.
-
In einem Beispiel einer Ausführungsform eines Speichermediums veranlassen die Instruktionen die Maschine ferner: eine Benachrichtigung, die mit dem Vorfall assoziiert ist, über ein Information-centric Network zu senden, wobei die Benachrichtigung eine Anforderung für Daten umfasst, die mit dem Vorfall assoziiert sind, und wobei die Benachrichtigung von der einen oder den mehreren zweiten Vorrichtungen empfangen wird; eine oder mehrere zweite Sammlungen von Sensordaten zu empfangen, die mit dem Vorfall assoziiert sind, wobei die eine oder mehreren zweiten Sammlungen von Sensordaten von der einen oder den mehreren zweiten Vorrichtungen empfangen werden; eine konsolidierte Sammlung von Sensordaten zu generieren, die mit dem Vorfall assoziiert sind, wobei die konsolidierte Sammlung von Sensordaten aus der ersten Sammlung von Sensordaten und der einen oder den mehreren zweiten Sammlungen von Sensordaten generiert wird; und die konsolidierte Sammlung von Sensordaten an eine Einheit zu senden, die mit dem Vorfall assoziiert ist.
-
In einem Beispiel einer Ausführungsform eines Speichermediums veranlassen die Instruktionen die Maschine ferner eine rekonstruierte Darstellung des Vorfalls auf der Basis der konsolidierten Sammlung von Sensordaten zu generieren.
-
Eine oder mehrere Ausführungsformen kann oder können ein Verfahren umfassen, umfassend: Zugreifen auf Sensordaten, die von einem oder mehreren Sensoren aufgenommen werden, welche mit einer ersten Vorrichtung assoziiert sind; Detektieren eines Vorfalls, der in der Nähe der ersten Vorrichtung auftritt, wobei der Vorfall auf der Basis einer Analyse der Sensordaten detektiert wird; Identifizieren einer ersten Sammlung von Sensordaten, die mit dem Vorfall assoziiert sind, wobei die erste Sammlung von Sensordaten aus den Sensordaten identifiziert wird, die von dem einen oder den mehreren Sensoren aufgenommen werden; Sichern der ersten Sammlung von Sensordaten, die mit dem Vorfall assoziiert sind; und Benachrichtigen einer oder mehrerer zweiter Vorrichtung von dem Vorfall, wobei die eine oder mehreren zweiten Vorrichtungen in der Nähe der ersten Vorrichtung lokalisiert sind.
-
In einem Beispiel einer Ausführungsform eines Verfahrens umfasst das Verfahren ferner: Empfangen einer Benachrichtigung, die mit dem Vorfall assoziiert ist, über ein Information-centric Network, wobei die Benachrichtigung eine Anforderung für Daten umfasst, die mit dem Vorfall assoziiert sind, und wobei die Anforderung für Daten eine Anzeige einer Vielzahl von Attributen umfasst, die mit dem Vorfall assoziiert sind; und Bestimmen, ob die Sensordaten, die von dem einen oder den mehreren Sensoren aufgenommen wurden, der Vielzahl von Attributen entsprechen, die mit dem Vorfall assoziiert sind.
-
In einem Beispiel einer Ausführungsform eines Verfahrens umfasst das Verfahren ferner: Senden einer Benachrichtigung, die mit dem Vorfall assoziiert ist, über ein Information-centric Network, wobei die Benachrichtigung eine Anforderung für Daten umfasst, die mit dem Vorfall assoziiert sind, und wobei die Benachrichtigung von der einen oder den mehreren zweiten Vorrichtungen empfangen wird; Empfangen einer oder mehrerer zweiter Sammlungen von Sensordaten, die mit dem Vorfall assoziiert sind, wobei die eine oder mehreren zweiten Sammlungen von Sensordaten von der einen oder den mehreren zweiten Vorrichtungen empfangen werden; Generieren einer konsolidierten Sammlung von Sensordaten, die mit dem Vorfall assoziiert sind, wobei die konsolidierte Sammlung von Sensordaten aus der ersten Sammlung von Sensordaten und der einen oder den mehreren zweiten Sammlungen von Sensordaten generiert wird; und Senden der konsolidierten Sammlung von Sensordaten zu einer Einheit, die mit dem Vorfall assoziiert ist.
-
Eine oder mehrere Ausführungsformen kann oder können eine Vorrichtung umfassen, umfassend: eine Kommunikationsschnittstelle, um mit einer Vielzahl von Vorrichtungen über ein Netz zu kommunizieren; und einen Prozessor, um: komprimierte Daten von einer ersten Vorrichtung der Vielzahl von Vorrichtungen zu empfangen, wobei die komprimierten Daten mit visuellen Daten assoziiert sind, die von einem oder mehreren Sensoren aufgenommen werden; eine aktuelle Verarbeitungsstufe an den komprimierten Daten unter Verwendung eines aktuellen konvolutionalen neuronalen Netzes (CNN) vorzunehmen, wobei die aktuelle Verarbeitungsstufe einer von einer Vielzahl von Verarbeitungsstufen entspricht, die mit den visuellen Daten assoziiert sind, und wobei das aktuelle CNN einem von einer Vielzahl von konvolutionalen neuronalen Netzen (CNNs) entspricht, die mit der Vielzahl von Verarbeitungsstufen assoziiert sind; einen Ausgang zu erhalten, der mit der aktuellen Verarbeitungsstufe assoziiert ist, wobei der Ausgang aus dem aktuellen CNN erhalten wird; auf der Basis des Ausgangs, der mit der aktuellen Verarbeitungsstufe assoziiert ist, die aktuelle Verarbeitungsstufe zu bestimmen; und bei der Bestimmung, dass die mit den visuellen Daten assoziierte Verarbeitung vollendet ist, ein Ergebnis auszugeben, das mit den visuellen Daten assoziiert ist.
-
In einem Beispiel einer Ausführungsform einer Vorrichtung hat der Prozessor ferner, bei der Bestimmung, dass die mit den visuellen Daten assoziierte Verarbeitung nicht vollendet ist, die komprimierten Daten zu einer zweiten Vorrichtung der Vielzahl von Vorrichtungen zu übertragen, wobei die zweite Vorrichtung eine anschließende Verarbeitungsstufe der Vielzahl von Verarbeitungsstufen vorzunehmen hat.
-
In einem Beispiel einer Ausführungsform einer Vorrichtung umfasst die Vielzahl von CNNs: ein erstes konvolutionales neuronales Netz (CNN), das darauf trainiert ist, einen oder mehrere erste Typen komprimierter Merkmale zu verarbeiten; ein zweites konvolutionales neuronales Netz (CNN), das darauf trainiert ist, einen oder mehrere zweite Typen komprimierter Merkmale zu verarbeiten; und ein drittes konvolutionales neuronales Netz (CNN), das darauf trainiert ist, unkomprimierte visuelle Daten zu verarbeiten.
-
In einem Beispiel einer Ausführungsform einer Vorrichtung ist das aktuelle CNN eines von dem ersten CNN, dem zweiten CNN und dem dritten CNN.
-
In einem Beispiel einer Ausführungsform einer Vorrichtung umfasst oder umfassen der eine oder die mehreren ersten Typen komprimierter Merkmale einen oder mehrere der folgenden Typen komprimierter Merkmale: Bewegungsvektoren, Prädiktionsreste, Transformationskoeffizienten, Quantisierungsparameter oder Makroblock-Codierungsmodi.
-
In einem Beispiel einer Ausführungsform einer Vorrichtung ist oder sind der eine oder die mehreren zweiten Typen komprimierter Merkmale verschieden von dem einen oder den mehreren ersten Typen komprimierter Merkmale.
-
In einem Beispiel einer Ausführungsform einer Vorrichtung wird oder werden der eine oder die mehreren zweiten Typen komprimierter Merkmale und der eine oder die mehreren ersten Typen komprimierter Merkmale von verschiedenen Quellen generiert.
-
In einem Beispiel einer Ausführungsform einer Vorrichtung ist jedes konvolutionale neuronale Netz (CNN) der Vielzahl von CNNs mit einer bestimmten Verarbeitungsstufe der Vielzahl von Verarbeitungsstufen assoziiert.
-
In einem Beispiel einer Ausführungsform einer Vorrichtung wird jede Verarbeitungsstufe der Vielzahl von Verarbeitungsstufen von einer bestimmten Vorrichtung der Vielzahl von Vorrichtungen vorgenommen.
-
In einem Beispiel einer Ausführungsform einer Vorrichtung umfasst das Ergebnis, das mit den visuellen Daten assoziiert ist, eine Verarbeitungsentscheidung.
-
Eine oder mehrere Ausführungsformen kann oder können mindestens ein maschinenzugängliches Speichermedium umfassen, das darauf gespeicherte Instruktionen aufweist, wobei die Instruktionen, wenn sie auf einer Maschine ausgeführt werden, die Maschine veranlassen: komprimierte Daten von einer ersten Vorrichtung der Vielzahl von Vorrichtungen zu empfangen, wobei die komprimierten Daten mit visuellen Daten assoziiert sind, die von einem oder mehreren Sensoren aufgenommen werden; eine aktuelle Verarbeitungsstufe an den komprimierten Daten unter Verwendung eines aktuellen konvolutionalen neuronalen Netzes (CNN) vorzunehmen, wobei die aktuelle Verarbeitungsstufe einer von einer Vielzahl von Verarbeitungsstufen entspricht, die mit den visuellen Daten assoziiert sind, und wobei das aktuelle CNN einem von einer Vielzahl von konvolutionalen neuronalen Netzen (CNNs) entspricht, die mit der Vielzahl von Verarbeitungsstufen assoziiert sind; einen Ausgang zu erhalten, der mit der aktuellen Verarbeitungsstufe assoziiert ist, wobei der Ausgang aus dem aktuellen CNN erhalten wird; auf der Basis des Ausgangs, der mit der aktuellen Verarbeitungsstufe assoziiert ist, zu bestimmen, ob die Verarbeitung, die mit den visuellen Daten assoziiert ist, vollendet ist; bei der Bestimmung, dass die mit den visuellen Daten assoziierte Verarbeitung vollendet ist, ein Ergebnis auszugeben, das mit den visuellen Daten assoziiert ist; und bei der Bestimmung, dass die mit den visuellen Daten assoziierte Verarbeitung nicht vollendet ist, die komprimierten Daten zu einer zweiten Vorrichtung der Vielzahl von Vorrichtungen zu übertragen.
-
In einem Beispiel einer Ausführungsform eines Speichermediums hat die zweite Vorrichtung eine nachfolgende Verarbeitungsstufe der Vielzahl von Verarbeitungsstufen vorzunehmen.
-
In einem Beispiel einer Ausführungsform eines Speichermediums umfasst die Vielzahl von CNNs: ein erstes konvolutionales neuronales Netz (CNN), das darauf trainiert ist, einen oder mehrere erste Typen komprimierter Merkmale zu verarbeiten; ein zweites konvolutionales neuronales Netz (CNN), das darauf trainiert ist, einen oder mehrere zweite Typen komprimierter Merkmale zu verarbeiten; und ein drittes konvolutionales neuronales Netz (CNN), das darauf trainiert ist, unkomprimierte visuelle Daten zu verarbeiten; und das aktuelle CNN ist eines von dem ersten CNN, dem zweiten CNN und dem dritten CNN.
-
In einem Beispiel einer Ausführungsform eines Speichermediums umfasst oder umfassen der eine oder die mehreren ersten Typen komprimierter Merkmale einen oder mehrere der folgenden Typen komprimierter Merkmale: Bewegungsvektoren, Prädiktionsreste, Transformationskoeffizienten, Quantisierungsparameter oder Makroblock-Codierungsmodi.
-
In einem Beispiel einer Ausführungsform eines Speichermediums ist jedes konvolutionale neuronale Netz (CNN) der Vielzahl von CNNs mit einer bestimmten Verarbeitungsstufe der Vielzahl von Verarbeitungsstufen assoziiert.
-
Eine oder mehrere Ausführungsformen kann oder können ein Verfahren umfassen, umfassend: Empfangen komprimierter Daten von einer ersten Vorrichtung einer Vielzahl von Vorrichtungen, wobei die komprimierten Daten mit visuellen Daten assoziiert sind, die von einem oder mehreren Sensoren aufgenommen werden; Vornehmen einer aktuellen Verarbeitungsstufe an den komprimierten Daten unter Verwendung eines aktuellen konvolutionalen neuronalen Netzes (CNN), wobei die aktuelle Verarbeitungsstufe einer von einer Vielzahl von Verarbeitungsstufen entspricht, die mit den visuellen Daten assoziiert sind, und wobei das aktuelle CNN einem von einer Vielzahl von konvolutionalen neuronalen Netzen (CNNs) entspricht, die mit der aktuellen Verarbeitungsstufe assoziiert sind, wobei der Ausgang aus dem aktuellen CNN erhalten wird; Bestimmen, auf der Basis des Ausgangs, der mit der aktuellen Verarbeitungsstufe assoziiert ist, ob die Verarbeitung, die mit den visuellen Daten assoziiert ist, vollendet ist; bei einer Bestimmung, dass die mit den visuellen Daten assoziierte Verarbeitung vollendet ist, Ausgeben eines Ergebnisses, das mit den visuellen Daten assoziiert ist; und bei einer Bestimmung, dass die mit den visuellen Daten assoziierte Verarbeitung nicht vollendet ist, Übertragung der komprimierten Daten zu einer zweiten Vorrichtung der Vielzahl von Vorrichtungen.
-
In einem Beispiel einer Ausführungsform eines Verfahrens hat die zweite Vorrichtung eine nachfolgende Verarbeitungsstufe der Vielzahl von Verarbeitungsstufen vorzunehmen.
-
In einem Beispiel einer Ausführungsform eines Verfahrens umfasst die Vielzahl von CNNs: ein erstes konvolutionales neuronales Netz (CNN), das darauf trainiert ist, einen oder mehrere erste Typen komprimierter Merkmale zu verarbeiten; ein zweites konvolutionales neuronales Netz (CNN), das darauf trainiert ist, einen oder mehrere zweite Typen komprimierter Merkmale zu verarbeiten, wobei der eine oder die mehreren Typen von komprimierten Merkmalen von dem einen oder den mehreren ersten Typen komprimierter Merkmale verschieden sind; und ein drittes konvolutionales neuronales Netz (CNN), das darauf trainiert ist, unkomprimierte visuelle Daten zu verarbeiten; und das aktuelle CNN ist eines von dem ersten CNN, dem zweiten CNN und dem dritten CNN.
-
In einem Beispiel einer Ausführungsform eines Verfahrens umfasst oder umfassen der eine oder die mehreren ersten Typen komprimierter Merkmale einen oder mehrere der folgenden Typen komprimierter Merkmale: Bewegungsvektoren, Prädiktionsreste, Transformationskoeffizienten, Quantisierungsparameter oder Makroblock-Codierungsmodi.
-
Eine oder mehrere Ausführungsformen kann oder können ein System umfassen, umfassend: einen oder mehrere Sensoren, um visuelle Daten aufzunehmen; und eine Vielzahl von Verarbeitungsvorrichtungen, um: komprimierte Daten zu erhalten, die den visuellen Daten entsprechen, welche von dem einen oder den mehreren Sensoren aufgenommen wurden; einen ersten Satz von komprimierten Merkmalen unter Verwendung eines ersten konvolutionalen neuronalen Netzes (CNN) zu extrahieren, wobei das erste CNN darauf trainiert ist, einen oder mehrere erste Typen komprimierter Merkmale zu verarbeiten; einen zweiten Satz von komprimierten Merkmalen unter Verwendung eines zweiten konvolutionalen neuronalen Netzes (CNN) zu extrahieren, wobei das zweite CNN darauf trainiert ist, einen oder mehrere zweite Typen komprimierter Merkmale zu verarbeiten, die von dem einen oder den mehreren ersten Typen komprimierter Merkmale verschieden sind; und die visuellen Daten unter Verwendung eines dritten konvolutionalen neuronalen Netzes (CNN) zu verarbeiten, wobei das dritte CNN darauf trainiert ist, visuelle Rohdaten zu verarbeiten.
-
In einem Beispiel einer Ausführungsform eines Systems umfasst oder umfassen der eine oder die mehreren ersten Typen komprimierter Merkmale einen oder mehrere der folgenden Typen komprimierter Merkmale: Bewegungsvektoren, Prädiktionsreste, Transformationskoeffizienten, Quantisierungsparameter oder Makroblock-Codierungsmodi.
-
In einem Beispiel einer Ausführungsform eines Systems umfasst die Vielzahl von Verarbeitungsvorrichtungen: eine oder mehrere erste Verarbeitungsvorrichtungen, um den ersten Satz von komprimierten Merkmalen unter Verwendung des ersten CNN zu verarbeiten; eine oder mehrere zweite Verarbeitungsvorrichtungen, um den zweiten Satz von komprimierten Merkmalen unter Verwendung des zweiten CNN zu verarbeiten; und eine oder mehrere dritte Verarbeitungsvorrichtungen, um den dritten Satz von komprimierten Merkmalen unter Verwendung des zweiten CNN zu verarbeiten.
-
In einem Beispiel einer Ausführungsform eines Systems umfasst oder umfassen die eine oder mehreren ersten Verarbeitungsvorrichtungen eine oder mehrere Edge-Verarbeitungsvorrichtungen.
-
In einem Beispiel einer Ausführungsform eines Systems umfasst oder umfassen die eine oder mehreren zweiten Verarbeitungsvorrichtungen eine oder mehrere Fog-Verarbeitungsvorrichtungen.
-
In einem Beispiel einer Ausführungsform eines Systems umfasst oder umfassen die eine oder mehreren dritten Verarbeitungsvorrichtungen eine oder mehrere Cloud-Verarbeitungsvorrichtungen.
-
In einem Beispiel einer Ausführungsform eines Systems umfasst oder umfassen der eine oder die mehreren Sensoren einen oder mehrere Vision-Sensoren, wobei der eine oder die mehreren Vision-Sensoren mindestens eine Kamera umfassen.
-
Eine oder mehrere Ausführungsformen kann oder können eine Vorrichtung umfassen, umfassend: einen Speicher, um visuelle Daten zu speichern, die mit einer visuellen Darstellung assoziiert sind, welche von einem oder mehreren Sensoren aufgenommen wird; und einen Prozessor, um: die visuellen Daten zu erhalten, die mit der visuellen Darstellung assoziiert sind, welche von dem einen oder den mehreren Sensoren aufgenommen werden, wobei die visuellen Daten unkomprimierte visuelle Daten oder komprimierte visuelle Daten umfassen; die visuellen Daten unter Verwendung eines konvolutionalen neuronalen Netzes (CNN) zu verarbeiten, wobei das CNN eine Vielzahl von Schichten umfasst, wobei die Vielzahl von Schichten eine Vielzahl von Filtern umfasst, und wobei die Vielzahl von Filtern umfasst: einen oder mehrere Pixel-Domänenfilter, um eine Verarbeitung vorzunehmen, die mit unkomprimierten Daten assoziiert ist; und einen oder mehrere Kompressionsdomänenfilter, um eine Verarbeitung vorzunehmen, die mit komprimierten Daten assoziiert ist; und die visuellen Daten auf der Basis eines Ausgangs des CNN zu klassifizieren.
-
In einem Beispiel einer Ausführungsform einer Vorrichtung umfasst die Vorrichtung ferner eine Kommunikationsschnittstelle, um die visuellen Daten von der einen oder den mehreren Vorrichtungen über ein Netz zu empfangen, wobei die eine oder mehreren Vorrichtungen mit dem einen oder den mehreren Sensoren assoziiert sind.
-
In einem Beispiel einer Ausführungsform einer Vorrichtung wird das CNN drauf trainiert, auf eine Verarbeitung zurückzugreifen, die mit dem einen oder den mehreren Pixel-Domänenfilter assoziiert ist, wenn die visuellen Daten unkomprimiert sind; und wird das CNN drauf trainiert, auf eine Verarbeitung zurückzugreifen, die mit dem einen oder den mehreren Kompressionsdomänenfiltern assoziiert ist, wenn die visuellen Daten komprimiert sind.
-
In einem Beispiel einer Ausführungsform einer Vorrichtung hat oder haben der eine oder die mehreren Kompressionsdomänenfilter ferner eine Verarbeitung vorzunehmen, die mit nicht angrenzenden Elementen der visuellen Daten assoziiert sind, wobei eine Korrelation zwischen den nicht angrenzenden Elementen vorhanden ist, wenn die visuellen Daten komprimiert werden.
-
In einem Beispiel einer Ausführungsform einer Vorrichtung umfasst oder umfassen der eine oder die mehreren Kompressionsdomänenfilter einen oder mehrere Schmetterlings filter.
-
In einem Beispiel einer Ausführungsform einer Vorrichtung hat jeder Schmetterlingsfilter eine partielle inverse Transformationen vorzunehmen, die mit den visuellen Daten assoziiert ist.
-
In einem Beispiel einer Ausführungsform einer Vorrichtung hat jeder Schmetterlingsfilter eine Summe und eine Differenz für eine Vielzahl von Paaren von Elementen innerhalb der visuellen Daten zu berechnen.
-
In einem Beispiel einer Ausführungsform einer Vorrichtung ist jedes Paar von Elementen an Orten innerhalb von visuellen Daten positioniert, die in einer bestimmten Distanz beabstandet sind.
-
In einem Beispiel einer Ausführungsform einer Vorrichtung umfasst oder umfassen der eine oder die mehreren Schmetterlingsfilter: einen horizontalen Schmetterlingsfilter, wobei die Vielzahl von Paaren von Elementen, die von dem horizontalen Schmetterlingsfilter verarbeitet werden, an unterschiedlichen horizontalen Orten innerhalb der visuellen Daten positioniert sind; und einen vertikalen Schmetterlingsfilter, wobei die Vielzahl von Paaren von Elementen, die von dem vertikalen Schmetterlingsfilter verarbeitet werden, an unterschiedlichen vertikalen Orten innerhalb der visuellen Daten positioniert sind.
-
In einem Beispiel einer Ausführungsform einer Vorrichtung umfasst oder umfassen der eine oder die mehreren Kompressionsdomänenfilter einen oder mehrere dreidimensionale (3D) Konvolutionsfilter, um eine Verarbeitung vorzunehmen, die mit dreidimensionalen (3D) visuellen Daten assoziiert ist; werden die 3D visuellen Daten auf der Basis einer dreidimensionalen (3D) Transformation der visuellen Daten generiert; und ordnet die 3D Transformation die visuellen Daten in drei Dimensionen um, so dass eine Korrelation unter einem oder mehreren benachbarten Elementen innerhalb einer bestimmten Dimension vorhanden ist, wenn die für die 3D Transformationen verwendeten visuellen Daten komprimiert werden.
-
In einem Beispiel einer Ausführungsform hat der Prozessor ferner die 3D visuellen Daten zu generieren, wobei die 3D visuellen Daten generiert werden, indem die 3D Transformation an den visuellen Daten vorgenommen wird; und die 3D visuellen Daten als Eingang an den einen oder die mehreren 3D Konvolutionsfilter zu liefern.
-
In einem Beispiel einer Ausführungsform hat der Prozessor, der die 3D visuellen Daten zu generieren hat, ferner die visuellen Daten in eine Vielzahl von Blöcken zu teilen, wobei jeder Block eine Vielzahl von Elementen umfasst; die Vielzahl von Blöcken entlang einer ersten Dimension und einer zweiten Dimension der 3D visuellen Daten anzuordnen; und die Vielzahl von Elementen, die mit jedem Block assoziiert sind, entlang einer dritten Dimension der 3D visuellen Daten anzuordnen.
-
In einem Beispiel einer Ausführungsform umfasst die Vielzahl von Elementen, die mit jedem Block assoziiert sind, eine Vielzahl von Transformationskoeffizienten, wenn die visuellen Daten komprimiert werden.
-
In einem Beispiel einer Ausführungsform umfasst die Vielzahl von Transformationskoeffizienten eine Vielzahl diskreter Cosinustransformations- (DCT) Koeffizienten.
-
Eine oder mehrere Ausführungsformen kann oder können ein System umfassen, umfassend: einen oder mehrere Sensoren, um eine visuelle Darstellung einer Umgebung aufzunehmen; und eine oder mehrere Verarbeitungsvorrichtungen, um: visuelle Daten zu erhalten, die mit der visuellen Darstellung assoziiert sind, welche von dem einen oder den mehreren Sensoren aufgenommen werden, wobei die visuellen Daten unkomprimierte visuelle Daten oder komprimierte visuelle Daten umfassen; die visuellen Daten unter Verwendung eines konvolutionalen neuronalen Netzes (CNN) zu verarbeiten, wobei das CNN eine Vielzahl von Schichten umfasst, wobei die Vielzahl von Schichten eine Vielzahl von Filtern umfasst, und wobei die Vielzahl von Filtern umfasst: einen oder mehrere Pixel-Domänenfilter und einen oder mehrere Kompressionsdomänenfilter, wobei: der eine oder die mehreren Pixel-Domänenfilter zum Vornehmen einer Verarbeitung dienen, die mit unkomprimierten Daten assoziiert ist; der eine oder die mehreren Kompressionsdomänenfilter zur Verarbeitung dienen, die mit komprimierten Daten assoziiert ist; und das CNN darauf trainiert ist, auf eine Verarbeitung zurückzugreifen, die mit dem einen oder den mehreren Kompressionsdomänenfiltern assoziiert ist, wenn die visuellen Daten komprimiert sind; und die visuellen Daten auf der Basis eines Ausgangs des CNN zu klassifizieren.
-
In einem Beispiel einer Ausführungsform eines Systems haben der eine oder die mehreren Kompressionsdomänenfilter ferner eine Verarbeitung vorzunehmen, die mit nicht angrenzenden Elementen der visuellen Daten assoziiert ist, wobei eine Korrelation zwischen den nicht angrenzenden Elementen vorhanden ist, wenn die visuellen Daten komprimiert werden.
-
In einem Beispiel einer Ausführungsform eines Systems umfasst oder umfassen der eine oder die mehreren Kompressionsdomänenfilter einen oder mehrere Schmetterlingsfilter, wobei jeder Schmetterlingsfilter eine partielle inverse Transformation vorzunehmen hat, die mit den visuellen Daten assoziiert ist.
-
In einem Beispiel einer Ausführungsform eines Systems hat jeder Schmetterlingsfilter ferner eine Summe und Differenz für eine Vielzahl von Paaren von Elementen innerhalb der visuellen Daten zu berechnen, wobei jedes Paar von Elementen an Orten innerhalb der visuellen Daten positioniert ist, die in einer bestimmten Distanz voneinander entfernt sind.
-
In einem Beispiel einer Ausführungsform eines Systems umfasst oder umfassen der eine oder die mehreren Kompressionsdomänenfilter einen oder mehrere dreidimensionale (3D) Konvolutionsfilter, um eine Verarbeitung vorzunehmen, die mit dreidimensionalen (3D) visuellen Daten assoziiert ist, wobei die 3D visuellen Daten auf der Basis einer dreidimensionalen (3D) Transformation der visuellen Daten generiert werden, wobei die 3D Transformation die visuellen Daten in drei Dimensionen umordnet, so dass eine Korrelation unter einem oder mehreren benachbarten Elementen innerhalb einer bestimmten Dimension vorhanden ist, wenn die für die 3D Transformationen verwendeten visuellen Daten komprimiert werden; wobei die eine oder die mehreren Verarbeitungsvorrichtungen ferner die 3D visuellen Daten zu generieren haben, wobei die 3D visuellen Daten generiert werden, indem die 3D Transformation an den visuellen Daten vorgenommen wird; und die 3D visuellen Daten als Eingang an den einen oder die mehreren 3D Konvolutionsfilter zu liefern haben.
-
In einem Beispiel einer Ausführungsform eines Systems hat oder haben die eine oder die mehreren Vorrichtungen, welche die 3D visuellen Daten zu generieren haben, ferner die visuellen Daten in eine Vielzahl von Blöcken zu teilen, wobei jeder Block eine Vielzahl von Elementen umfasst, und wobei die Vielzahl von Elementen eine Vielzahl von diskreten Cosinustransformations- (DCT) Koeffizienten umfasst, wenn die visuellen Daten komprimiert werden; die Vielzahl von Blöcken entlang einer ersten Dimension und einer zweiten Dimension der 3D visuellen Daten anzuordnen; und die Vielzahl von Elementen, die mit jedem Block assoziiert sind, entlang einer dritten Dimension der 3D visuellen Daten anzuordnen.
-
Eine oder mehrere Ausführungsformen kann oder können mindestens ein maschinenzugängliches Speichermedium umfassen, das darauf gespeicherte Instruktionen aufweist, wobei die Instruktionen, wenn sie auf einer Maschine ausgeführt werden, die Maschine veranlassen: visuelle Daten zu erhalten, die mit einer visuellen Darstellung assoziiert sind, welche von einem oder mehreren Sensoren aufgenommen werden, wobei die visuellen Daten unkomprimierte visuelle Daten oder komprimierte visuelle Daten umfassen; die visuellen Daten unter Verwendung eines konvolutionalen neuronalen Netzes (CNN) zu verarbeiten, wobei das CNN eine Vielzahl von Schichten umfasst, wobei die Vielzahl von Schichten eine Vielzahl von Filtern umfasst, und wobei die Vielzahl von Filtern umfasst: einen oder mehrere Pixel-Domänenfilter und einen oder mehrere Kompressionsdomänenfilter, wobei: der eine oder die mehreren Pixel-Domänenfilter zum Vornehmen einer Verarbeitung dienen, die mit unkomprimierten Daten assoziiert ist; der eine oder die mehreren Kompressionsdomänenfilter zur Verarbeitung dienen, die mit komprimierten Daten assoziiert ist; und das CNN darauf trainiert ist, auf eine Verarbeitung zurückzugreifen, die mit dem einen oder den mehreren Pixel-Domänenfiltern assoziiert ist, wenn die visuellen Daten unkomprimiert sind, und das CNN darauf trainiert ist, auf eine Verarbeitung zurückzugreifen, die mit dem einen oder den mehreren Kompressionsdomänenfiltern assoziiert ist, wenn die visuellen Daten komprimiert sind; und die visuellen Daten auf der Basis eines Ausgangs des CNN zu klassifizieren.
-
In einem Beispiel einer Ausführungsform eines Speichermediums umfasst oder umfassen der eine oder die mehreren Kompressionsdomänenfilter einen oder mehrere Schmetterlingsfilter, um eine oder mehrere partielle inverse Transformationen vorzunehmen, die mit den visuellen Daten assoziiert sind.
-
In einem Beispiel einer Ausführungsform eines Speichermediums umfasst oder umfassen der eine oder die mehreren Kompressionsdomänenfilter einen oder mehrere dreidimensionale (3D) Konvolutionsfilter, um eine Verarbeitung vorzunehmen, die mit dreidimensionalen (3D) visuellen Daten assoziiert ist, wobei die 3D visuellen Daten auf der Basis einer dreidimensionalen (3D) Transformation der visuellen Daten generiert werden, wobei die 3D Transformation die visuellen Daten in drei Dimensionen umordnet, so dass eine Korrelation unter einem oder mehreren benachbarten Elementen innerhalb einer bestimmten Dimension vorhanden ist, wenn die für die 3D Transformationen verwendeten visuellen Daten komprimiert werden.
-
Eine oder mehrere Ausführungsform kann oder können ein Verfahren umfassen, umfassend: Erhalten visueller Daten, die mit einer visuellen Darstellung assoziiert sind, welche von einem oder mehreren Sensoren aufgenommen werden, wobei die visuellen Daten unkomprimierte visuelle Daten oder komprimierte visuelle Daten umfassen; Verarbeiten der visuellen Daten unter Verwendung eines konvolutionalen neuronalen Netzes (CNN), wobei das CNN eine Vielzahl von Schichten umfasst, wobei die Vielzahl von Schichten eine Vielzahl von Filtern umfasst, und wobei die Vielzahl von Filtern umfasst: einen oder mehrere Pixel-Domänenfilter und einen oder mehrere Kompressionsdomänenfilter, wobei: der eine oder die mehreren Pixel-Domänenfilter zum Vornehmen einer Verarbeitung dienen, die mit unkomprimierten Daten assoziiert ist; der eine oder die mehreren Kompressionsdomänenfilter zur Verarbeitung dienen, die mit komprimierten Daten assoziiert ist; und das CNN darauf trainiert ist, auf eine Verarbeitung zurückzugreifen, die mit dem einen oder den mehreren Pixel-Domänenfiltern assoziiert ist, wenn die visuellen Daten unkomprimiert sind, und das CNN darauf trainiert ist, auf eine Verarbeitung zurückzugreifen, die mit dem einen oder den mehreren Kompressionsdomänenfiltern assoziiert ist, wenn die visuellen Daten komprimiert sind; und Klassifizieren der visuellen Daten auf der Basis eines Ausgangs des CNN.
-
In einem Beispiel einer Ausführungsform eines Verfahrens umfasst oder umfassen der eine oder die mehreren Kompressionsdomänenfilter einen oder mehrere Schmetterlingsfilter, um eine oder mehrere partielle inverse Transformationen vorzunehmen, die mit den visuellen Daten assoziiert sind; oder ein oder mehrere dreidimensionale (3D) Konvolutionsfilter, um eine Verarbeitung vorzunehmen, die mit dreidimensionalen (3D) visuellen Daten assoziiert ist, wobei die 3D visuellen Daten auf der Basis einer dreidimensionalen (3D) Transformation der visuellen Daten generiert werden, wobei die 3D Transformation die visuellen Daten in drei Dimensionen umordnet, so dass eine Korrelation unter einem oder mehreren benachbarten Elementen innerhalb einer bestimmten Dimension vorhanden ist, wenn die für die 3D Transformationen verwendeten visuellen Daten komprimiert werden.
-
Eine oder mehrere Ausführungsformen kann oder können eine Vorrichtung umfassen, umfassend: eine Speichervorrichtung, um eine Vielzahl von komprimierten Bildern zu speichern, wobei die Vielzahl von komprimierten Bildern ein oder mehrere komprimierte Master-Bilder und ein oder mehrere komprimierte Slave-Bilder umfasst, wobei das eine oder die mehreren komprimierten Slave-Bilder mit einer Referenz auf das eine oder die mehreren komprimierten Master-Bilder komprimiert werden; und einen Prozessor, um: ein unkomprimiertes Bild zu identifizieren; auf Kontextinformationen zuzugreifen, die mit einer Vielzahl von Bildern assoziiert sind, wobei die Vielzahl von Bildern das unkomprimierte Bild und das eine oder die mehreren komprimierten Master-Bilder umfasst; mindestens teilweise auf der Basis der Kontextinformationen, zu bestimmen, ob das unkomprimierte Bild mit einem entsprechenden Master-Bild von dem einen oder den mehreren komprimierten Master-Bildern assoziiert ist; bei einer Bestimmung, dass das unkomprimierte Bild mit dem entsprechenden Master-Bild assoziiert ist, das unkomprimierte Bild zu einem entsprechenden komprimierten Bild mit einer Referenz auf das entsprechende Master-Bild zu komprimieren; bei einer Bestimmung, dass das unkomprimierte Bild nicht mit dem entsprechenden Master-Bild assoziiert ist, das unkomprimierte Bild zu dem entsprechenden komprimierten Bild ohne Referenz auf das eine oder die mehreren komprimierten Master-Bilder zu komprimieren; und das entsprechende komprimierte Bild auf der Speichervorrichtung zu speichern.
-
In einem Beispiel einer Ausführungsform einer Vorrichtung hat der Prozessor, der, mindestens teilweise auf der Basis der Kontextinformationen, zu bestimmen hat, ob das unkomprimierte Bild mit dem entsprechenden Master-Bild von dem einen oder den mehreren komprimierten Master-Bilder assoziiert ist, ferner: eine Korrelation zwischen den Kontextinformationen zu identifizieren, die mit jedem von dem unkomprimierten Bild und dem entsprechenden Master-Bild assoziiert ist; eine Korrelation zwischen einer Vielzahl von Bildmerkmalen zu identifizieren, die mit jedem von dem unkomprimierten Bild und dem entsprechenden Master-Bild assoziiert sind; und, mindestens teilweise auf der Basis der Korrelation zwischen den Kontextinformationen und der Korrelation zwischen der Vielzahl von Bildmerkmalen, zu bestimmen, dass das unkomprimierte Bild mit dem entsprechenden Master-Bild assoziiert ist.
-
In einem Beispiel einer Ausführungsform einer Vorrichtung umfassen die Kontextinformationen die Folgenden für mindestens ein Bild der Vielzahl von Bildern: eine Zeit und einen Ort.
-
In einem Beispiel einer Ausführungsform einer Vorrichtung umfassen die Kontextinformationen die Folgenden für mindestens ein Bild der Vielzahl von Bildern: Bildpixeldaten oder extrahierte Bildmerkmaldaten.
-
In einem Beispiel einer Ausführungsform einer Vorrichtung umfassen die Kontextinformationen ferner eine mobile Vorrichtungsorientierung für das mindestens eine Bild der Vielzahl von Bildern.
-
In einem Beispiel einer Ausführungsform einer Vorrichtung hat der Prozessor, der die Korrelation zwischen den Kontextinformationen zu identifizieren hat, die mit jedem von dem unkomprimierten Bild und dem entsprechenden Master-Bild assoziiert sind, ferner, auf der Basis der Kontextinformationen, zu bestimmen, dass das unkomprimierte Bild und das entsprechende Master-Bild zu einer ähnlichen Zeit und an einem ähnlichen Ort aufgenommen wurden.
-
In einem Beispiel einer Ausführungsform einer Vorrichtung hat der Prozessor ferner bei der Kompression des unkomprimierten Bilds zu dem entsprechenden komprimierten Bild mit einer Referenz auf das entsprechende Master-Bild, das entsprechende komprimierte Bild mit einer Slave-Bild-Bezeichnung zu bezeichnen; und bei der Kompression des unkomprimierten Bilds zu dem entsprechenden komprimierten Bild ohne Referenz auf das eine oder die mehreren komprimierten Master-Bild, das entsprechende komprimierte Bild mit einer Master-Bild-Bezeichnung zu bezeichnen.
-
In einem Beispiel einer Ausführungsform einer Vorrichtung hat der Prozessor ferner zu bestimmen, dass das unkomprimierte Bild nicht mit dem entsprechenden Master-Bild von dem einen oder den mehreren komprimierten Master-Bildern assoziiert ist; das unkomprimierte Bild zu dem entsprechenden komprimierten Bild ohne Referenz auf das eine oder die mehreren komprimierten Master-Bild zu komprimieren; und das entsprechende komprimierte Bild mit der Master-Bild-Bezeichnung zu bezeichnen.
-
In einem Beispiel einer Ausführungsform einer Vorrichtung hat der Prozessor ferner ein zweites unkomprimiertes Bild zu identifizieren; zu bestimmen, dass das zweite unkomprimierte Bild mit dem entsprechenden komprimierten Bild mit der Master-Bild-Bezeichnung assoziiert ist; und das zweite unkomprimierte Bild mit einer Referenz auf das entsprechende komprimierte Bild mit der Master-Bild-Bezeichnung zu komprimieren.
-
In einem Beispiel einer Ausführungsform einer Vorrichtung hat der Prozessor, der das unkomprimierte Bild mit einer Referenz auf das entsprechende Master-Bild zu komprimieren hat, ferner das unkomprimierte Bild unter Verwendung einer Zwischenrahmencodierung zu komprimieren; und der Prozessor, der das unkomprimierte Bild zu dem entsprechenden komprimierten Bild ohne Referenz auf das eine oder die mehreren Master-Bild zu komprimieren hat, hat ferner das unkomprimierte Bild unter Verwendung einer Zwischenrahmencodierung zu komprimieren.
-
In einem Beispiel einer Ausführungsform einer Vorrichtung hat der Prozessor, der das unkomprimierte Bild unter Verwendung einer Zwischenrahmencodierung zu komprimieren hat, ferner das unkomprimierte Bild unter Verwendung eines Video-Codec zu komprimieren.
-
In einem Beispiel einer Ausführungsform einer Vorrichtung umfasst die Vorrichtung ferner eine Kommunikationsschnittstellen, um das unkomprimierte Bild und die Kontextinformationen, die mit dem unkomprimierten Bild assoziiert sind, von einer mobilen Vorrichtung zu empfangen.
-
In einem Beispiel einer Ausführungsform einer Vorrichtung ist die Vorrichtung eine mobile Vorrichtung, und die mobile Vorrichtung umfasst eine Speichervorrichtung, den Prozessor und eine Kamera, um das unkomprimierte Bild aufzunehmen.
-
In einem Beispiel einer Ausführungsform einer Vorrichtung umfasst die mobile Vorrichtung ferner einen oder mehrere Sensoren, um die Kontextinformationen aufzunehmen, die mit dem unkomprimierten Bild assoziiert sind, wobei der eine oder die mehreren Sensoren mindestens eines von einem GPS Empfänger, einem Gyroskop oder einem Akzelerometer umfassen.
-
Eine oder mehrere Ausführungsformen kann oder können ein System umfassen, umfassend: eine Speichervorrichtung, um eine Vielzahl von komprimierten Bildern zu speichern, wobei die Vielzahl von komprimierten Bildern ein oder mehrere komprimierte Master-Bilder und ein oder mehrere komprimierte Slave-Bilder umfasst, wobei das eine oder die mehreren komprimierten Slave-Bilder mit einer Referenz auf das eine oder die mehreren komprimierten Master-Bilder komprimiert werden; und einen Prozessor, um: das unkomprimierte Bild zu identifizieren, das von der mobilen Vorrichtung empfangen wird; auf Kontextinformationen zuzugreifen, die mit einer Vielzahl von Bildern assoziiert sind, wobei die Vielzahl von Bildern das unkomprimierte Bild und das eine oder die mehreren komprimierten Master-Bilder umfasst; mindestens teilweise auf der Basis der Kontextinformationen, zu bestimmen, ob das unkomprimierte Bild mit einem entsprechenden Master-Bild von dem einen oder den mehreren komprimierten Master-Bildern assoziiert ist; bei einer Bestimmung, dass das unkomprimierte Bild mit dem entsprechenden Master-Bild assoziiert ist, das unkomprimierte Bild zu einem entsprechenden komprimierten Bild mit einer Referenz auf das entsprechende Master-Bild zu komprimieren; bei einer Bestimmung, dass das unkomprimierte Bild nicht mit dem entsprechenden Master-Bild assoziiert ist, das unkomprimierte Bild zu dem entsprechenden komprimierten Bild ohne Referenz auf das eine oder die mehreren komprimierten Master-Bilder zu komprimieren; und das entsprechende komprimierte Bild auf der Speichervorrichtung zu speichern.
-
In einem Beispiel einer Ausführungsform einer Vorrichtung hat der Prozessor, der, mindestens teilweise auf der Basis der Kontextinformationen, zu bestimmen hat, ob das unkomprimierte Bild mit dem entsprechenden Master-Bild von dem einen oder den mehreren komprimierten Master-Bilder assoziiert ist, ferner: eine Korrelation zwischen den Kontextinformationen zu identifizieren, die mit jedem von dem unkomprimierten Bild und dem entsprechenden Master-Bild assoziiert ist; eine Korrelation zwischen einer Vielzahl von Bildmerkmalen zu identifizieren, die mit jedem von dem unkomprimierten Bild und dem entsprechenden Master-Bild assoziiert sind; und, mindestens teilweise auf der Basis der Korrelation zwischen den Kontextinformationen und der Korrelation zwischen der Vielzahl von Bildmerkmalen, zu bestimmen, dass das unkomprimierte Bild mit dem entsprechenden Master-Bild assoziiert ist.
-
In einem Beispiel einer Ausführungsform einer Vorrichtung hat der Prozessor, der die Korrelation zwischen den Kontextinformationen zu identifizieren hat, die mit jedem von dem unkomprimierten Bild und dem entsprechenden Master-Bild assoziiert sind, ferner, auf der Basis der Kontextinformationen, zu bestimmen, dass das unkomprimierte Bild und das entsprechende Master-Bild zu einer ähnlichen Zeit und an einem ähnlichen Ort aufgenommen wurden.
-
In einem Beispiel einer Ausführungsform einer Vorrichtung hat der Prozessor ferner bei der Kompression des unkomprimierten Bilds zu dem entsprechenden komprimierten Bild mit einer Referenz auf das entsprechende Master-Bild, das entsprechende komprimierte Bild mit einer Slave-Bild-Bezeichnung zu bezeichnen; und bei der Kompression des unkomprimierten Bilds zu dem entsprechenden komprimierten Bild ohne Referenz auf das eine oder die mehreren komprimierten Master-Bild, das entsprechende komprimierte Bild mit einer Master-Bild-Bezeichnung zu bezeichnen.
-
In einem Beispiel einer Ausführungsform einer Vorrichtung hat der Prozessor ferner zu bestimmen, dass das unkomprimierte Bild nicht mit dem entsprechenden Master-Bild von dem einen oder den mehreren komprimierten Master-Bildern assoziiert ist; das unkomprimierte Bild zu dem entsprechenden komprimierten Bild ohne Referenz auf das eine oder die mehreren komprimierten Master-Bild zu komprimieren; und das entsprechende komprimierte Bild mit der Master-Bild-Bezeichnung zu bezeichnen; ein zweites unkomprimiertes Bild zu identifizieren, das von der mobilen Vorrichtung erhalten wird; zu bestimmen, dass das zweite unkomprimierte Bild mit dem entsprechenden komprimierten Bild mit der Master-Bild-Bezeichnung assoziiert ist; und das zweite unkomprimierte Bild mit einer Referenz auf das entsprechende komprimierte Bild mit der Master-Bild-Bezeichnung zu komprimieren.
-
In einem Beispiel einer Ausführungsform einer Vorrichtung hat der Prozessor, der das unkomprimierte Bild mit einer Referenz auf das entsprechende Master-Bild zu komprimieren hat, ferner das unkomprimierte Bild unter Verwendung einer Zwischenrahmencodierung zu komprimieren; und der Prozessor, der das unkomprimierte Bild zu dem entsprechenden komprimierten Bild ohne Referenz auf das eine oder die mehreren Master-Bild zu komprimieren hat, hat ferner das unkomprimierte Bild unter Verwendung einer Zwischenrahmencodierung zu komprimieren.
-
In einem Beispiel einer Ausführungsform einer Vorrichtung hat der Prozessor, der das unkomprimierte Bild unter Verwendung einer Zwischenrahmencodierung zu komprimieren hat, ferner das unkomprimierte Bild unter Verwendung eines Video-Codec zu komprimieren.
-
Eine oder mehrere Ausführungsformen kann oder können mindestens ein maschinenzugängliches Speichermedium umfassen, das darauf gespeicherte Instruktionen aufweist, wobei die Instruktionen, wenn sie auf einer Maschine ausgeführt werden, die Maschine veranlassen: ein unkomprimiertes Bild zu identifizieren, das von einer mobilen Vorrichtung aufgenommen wird; auf Kontextinformationen zuzugreifen, die mit einer Vielzahl von Bildern assoziiert sind, wobei die Vielzahl von Bildern das unkomprimierte Bild und eine Vielzahl von komprimierten Bildern umfasst, wobei die Vielzahl von komprimierten Bildern ein oder mehrere komprimierte Master-Bilder und ein oder mehrere komprimierte Slave-Bilder umfasst, wobei das eine oder die mehreren Slave-Bilder mit einer Referenz auf das eine oder die mehreren komprimierten Master-Bild komprimiert werden; mindestens teilweise auf der Basis der Kontextinformationen, zu bestimmen, ob das unkomprimierte Bild mit einem entsprechenden Master-Bild von dem einen oder den mehreren komprimierten Master-Bildern assoziiert ist; bei einer Bestimmung, dass das unkomprimierte Bild mit dem entsprechenden Master-Bild assoziiert ist, das unkomprimierte Bild zu einem entsprechenden komprimierten Bild mit einer Referenz auf das entsprechende Master-Bild zu komprimieren unter Verwendung einer Zwischenrahmencodierung; bei einer Bestimmung, dass das unkomprimierte Bild nicht mit dem entsprechenden Master-Bild assoziiert ist, das unkomprimierte Bild zu dem entsprechenden komprimierten Bild ohne Referenz auf das eine oder die mehreren komprimierten Master-Bilder zu komprimieren unter Verwendung einer Zwischenrahmencodierung; und das entsprechende komprimierte Bild auf der Speichervorrichtung zu speichern.
-
In einem Beispiel einer Ausführungsform eines Speichermediums veranlassen, die Instruktionen, welche die Maschine veranlassen, mindestens teilweise auf der Basis der Kontextinformationen, zu bestimmen, ob das unkomprimierte Bild mit dem entsprechenden Master-Bild von dem einen oder den mehreren komprimierten Master-Bilder assoziiert ist, ferner die Maschine: eine Korrelation zwischen den Kontextinformationen zu identifizieren, die mit jedem von dem unkomprimierten Bild und dem entsprechenden Master-Bild assoziiert ist; eine Korrelation zwischen einer Vielzahl von Bildmerkmalen zu identifizieren, die mit jedem von dem unkomprimierten Bild und dem entsprechenden Master-Bild assoziiert sind; und, mindestens teilweise auf der Basis der Korrelation zwischen den Kontextinformationen und der Korrelation zwischen der Vielzahl von Bildmerkmalen, zu bestimmen, dass das unkomprimierte Bild mit dem entsprechenden Master-Bild assoziiert ist.
-
In einem Beispiel einer Ausführungsform eines Speichermediums veranlassen die Instruktionen ferner die Maschine: zu bestimmen, dass das unkomprimierte Bild nicht mit dem entsprechenden Master-Bild von dem einen oder den mehreren komprimierten Master-Bildern assoziiert ist; das unkomprimierte Bild zu dem entsprechenden komprimierten Bild ohne Referenz auf das eine oder die mehreren komprimierten Master-Bild zu komprimieren unter Verwendung einer Zwischenrahmencodierung; das entsprechende komprimierte Bild mit einer Master-Bild-Bezeichnung zu bezeichnen; ein zweites unkomprimiertes Bild zu identifizieren, das von der mobilen Vorrichtung aufgenommen wird; zu bestimmen, dass das zweite unkomprimierte Bild mit dem entsprechenden komprimierten Bild mit der Master-Bild-Bezeichnung assoziiert ist; und das zweite unkomprimierte Bild mit einer Referenz auf das entsprechende komprimierte Bild mit der Master-Bild-Bezeichnung zu komprimieren.
-
Eine oder mehrere Ausführungsformen kann oder können ein Verfahren umfassen, umfassend: Identifizieren eines unkomprimierten Bilds, das von einer mobilen Vorrichtung aufgenommen wird; Zugreifen auf Kontextinformationen, die mit einer Vielzahl von Bildern assoziiert sind, wobei die Vielzahl von Bildern das unkomprimierte Bild und eine Vielzahl von komprimierten Bildern umfasst, wobei die Vielzahl von komprimierten Bildern ein oder mehrere komprimierte Master-Bilder und ein oder mehrere komprimierte Slave-Bilder umfasst, wobei das eine oder die mehreren Slave-Bilder mit einer Referenz auf das eine oder die mehreren komprimierten Master-Bild komprimiert werden; Bestimmen, mindestens teilweise auf der Basis der Kontextinformationen, ob das unkomprimierte Bild mit einem entsprechenden Master-Bild von dem einen oder den mehreren komprimierten Master-Bildern assoziiert ist; bei einer Bestimmung, dass das unkomprimierte Bild mit dem entsprechenden Master-Bild assoziiert ist, das unkomprimierte Bild zu einem entsprechenden komprimierten Bild mit einer Referenz auf das entsprechende Master-Bild zu komprimieren unter Verwendung einer Zwischenrahmencodierung; bei einer Bestimmung, dass das unkomprimierte Bild nicht mit dem entsprechenden Master-Bild assoziiert ist, das unkomprimierte Bild zu dem entsprechenden komprimierten Bild ohne Referenz auf das eine oder die mehreren komprimierten Master-Bilder zu komprimieren unter Verwendung einer Zwischenrahmencodierung; und Speichern des entsprechenden komprimierten Bilds auf der Speichervorrichtung.
-
In einem Beispiel einer Ausführungsform eines Verfahrens umfasst das Verfahren ferner: Bestimmen, dass das unkomprimierte Bild nicht mit dem entsprechenden Master-Bild von dem einen oder den mehreren komprimierten Master-Bildern assoziiert ist; Komprimieren des unkomprimierten Bilds zu dem entsprechenden komprimierten Bild ohne Referenz auf das eine oder die mehreren komprimierten Master-Bild unter Verwendung einer Zwischenrahmencodierung; Bezeichnen des entsprechenden komprimierten Bilds mit einer Master-Bild-Bezeichnung; Identifizieren eines zweiten unkomprimierten Bilds, das von der mobilen Vorrichtung aufgenommen wird; Bestimmen, dass das zweite unkomprimierte Bild mit dem entsprechenden komprimierten Bild mit der Master-Bild-Bezeichnung assoziiert ist; und Komprimieren des zweiten unkomprimierten Bilds mit einer Referenz auf das entsprechende komprimierte Bild mit der Master-Bild-Bezeichnung.
-
Eine oder mehrere Ausführungsformen kann oder können eine Vorrichtung umfassen, umfassend: eine Kommunikationsschnittstelle, um mit einer oder mehreren Vorrichtung zu kommunizieren; einen Speicher, um eine Vorrichtungsidentitäts-Blockchain zu speichern; und einen Prozessor, um: eine Vorrichtungsidentitätstransaktion von einer ersten Vorrichtung zu empfangen, wobei die Vorrichtungsidentitätstransaktion eine Vorrichtungsidentität umfasst; einen Hash der Vorrichtungsidentität zu berechnen; auf der Basis des Hash zu bestimmen, ob die Vorrichtungsidentität in der Vorrichtungsidentitäts-Blockchain registriert ist; und bei einer Bestimmung, dass die Vorrichtungsidentität nicht in der Vorrichtungsidentitäts-Blockchain registriert ist, die Vorrichtungsidentitätstransaktion zu der Vorrichtungsidentitäts-Blockchain hinzuzufügen.
-
In einem Beispiel einer Ausführungsform einer Vorrichtung hat der Prozessor ferner, bei einer Bestimmung, dass die Vorrichtungsidentität in der Vorrichtungsidentitäts-Blockchain registriert ist, einen Fehler zu der ersten Vorrichtung zu übertragen, wobei der Fehler anzeigt, dass die Vorrichtungsidentität bereits registriert ist.
-
In einem Beispiel einer Ausführungsform einer Vorrichtung hat der Prozessor, der auf der Basis des Hash, zu bestimmen hat, ob die Vorrichtungsidentität in der Vorrichtungsidentitäts-Blockchain registriert ist, ferner einen Hash-Baum zu durchsuchen, der mit der Vorrichtungsidentitäts-Blockchain assoziiert ist, um zu bestimmen, ob die Vorrichtungsidentitäts-Blockchain eine bestehende Transaktion enthält, die mit dem Hash assoziiert ist.
-
In einem Beispiel einer Ausführungsform einer Vorrichtung hat der Prozessor, der die Vorrichtungsidentitätstransaktion zu der Vorrichtungsidentität-Blockchain hinzufügen hat, ferner die Vorrichtungsidentitätstransaktion zu einem aktuellen Block hinzufügen, der mit der Vorrichtungsidentitäts-Blockchain assoziiert ist; und den aktuellen Block in die Vorrichtungsidentitäts-Blockchain zu schreiben.
-
In einem Beispiel einer Ausführungsform einer Vorrichtung hat der Prozessor ferner: eine Identitätsnachschlaganforderung von einem ersten Netz zu empfangen, wobei die Identitätsnachschlaganforderung mit einem Versuch assoziiert ist, die erste Vorrichtung an Bord des ersten Netzes zu nehmen, und wobei die Identitätsnachschlaganforderung die Vorrichtungsidentität umfasst; die Vorrichtungsidentitäts-Blockchain zu durchsuchen, um die Vorrichtungsidentitätstransaktion zu identifizieren, die mit der Vorrichtungsidentität assoziiert ist; und die Vorrichtungsidentitätstransaktion zu dem ersten Netz zu übertragen, wobei das erste Netz, auf der Basis der Vorrichtungsidentitätstransaktion, zu verifizieren hat, dass die Vorrichtungsidentität in der ersten Vorrichtung registriert ist.
-
In einem Beispiel einer Ausführungsform einer Vorrichtung hat der Prozessor ferner: eine zweite Identitätsnachschlaganforderung von einem zweiten Netz zu empfangen, wobei die zweite Identitätsnachschlaganforderung mit einem Versuch assoziiert ist, die erste Vorrichtung an Bord des zweiten Netzes zu nehmen, und wobei die zweite Identitätsnachschlaganforderung die Vorrichtungsidentität umfasst; die Vorrichtungsidentitäts-Blockchain zu durchsuchen, um die Vorrichtungsidentitätstransaktion zu identifizieren, die mit der Vorrichtungsidentität assoziiert ist; und die Vorrichtungsidentitätstransaktion zu dem zweiten Netz zu übertragen, wobei das zweite Netz, auf der Basis der Vorrichtungsidentitätstransaktion, zu verifizieren hat, dass die Vorrichtungsidentität in der ersten Vorrichtung registriert ist.
-
In einem Beispiel einer Ausführungsform einer Vorrichtung umfasst die erste Vorrichtung eine Internet der Dinge- (IoT) Vorrichtung, die in der Lage ist, an mehreren Internet der Dinge- (IoT) Netzen teilzunehmen.
-
In einem Beispiel einer Ausführungsform einer Vorrichtung hat der Prozessor ferner: eine zweite Vorrichtungsidentitätstransaktion von einer zweiten Vorrichtung zu empfangen, wobei die zweite Vorrichtungsidentitätstransaktion die Vorrichtungsidentität umfasst; einen zweiten Hash der Vorrichtungsidentität zu berechnen; auf der Basis des zweiten Hash, zu bestimmen, dass die Vorrichtungsidentität in der Vorrichtungsidentitäts-Blockchain registriert ist; und einen Fehler an die zweite Vorrichtung zu übertragen, wobei der Fehler anzeigt, dass die Vorrichtungsidentität bereits registriert ist.
-
In einem Beispiel einer Ausführungsform einer Vorrichtung hat der Speicher ferner eine Algorithmus-Blockchain zu speichern; und der Prozessor hat ferner: eine Algorithmusregistrierungstransaktion von einem ersten Netz zu empfangen, wobei die Algorithmusregistrierungstransaktion einen Algorithmusidentifikator und eine Darstellung eines Algorithmus umfasst; einen oder mehrere Tests vorzunehmen, um den Algorithmus zu validieren; und die Algorithmusregistrierungstransaktion zu der Algorithmus-Blockchain hinzuzufügen.
-
In einem Beispiel einer Ausführungsform einer Vorrichtung hat der Prozessor ferner ein zweites Netz zu benachrichtigen, dass der Algorithmus verfügbar ist.
-
In einem Beispiel einer Ausführungsform einer Vorrichtung hat der Prozessor ferner: eine Algorithmusnachschlaganforderung von einem zweiten Netz zu empfangen, wobei die Algorithmusnachschlaganforderung den Algorithmusidentifikator umfasst; die Algorithmus-Blockchain zu durchsuchen, um die Algorithmusregistrierungstransaktion zu identifizieren, die mit dem Algorithmusidentifikator assoziiert ist; und die Algorithmusregistrierungstransaktion zu dem zweiten Netz zu übertragen, wobei das zweite Netz, auf der Basis der Algorithmusregistrierungstransaktion, zu bestimmen hat, ob der Algorithmus zu verwenden ist.
-
In einem Beispiel einer Ausführungsform einer Vorrichtung hat der Prozessor, der einen oder mehrere Tests vorzunehmen hat, um den Algorithmus zu validieren, ferner die Darstellung des Algorithmus zu analysieren, um eine oder mehrere Verhaltenseigenschaften zu identifizieren; oder die Darstellung des Algorithmus in einer Sandbox auszuführen.
-
Eine oder mehrere Ausführungsformen kann oder können ein System umfassen, umfassend: eine Vielzahl von Vorrichtungen, die in der Lage sind, über eine Vielzahl von Netzen zu kommunizieren; und eine oder mehrere Blockchain-Vorrichtungen, um: eine Vorrichtungsidentitätstransaktion von einer ersten Vorrichtung der Vielzahl von Vorrichtungen zu empfangen, wobei die Vorrichtungsidentitätstransaktion eine Vorrichtungsidentität umfasst; einen Hash der Vorrichtungsidentität zu berechnen; auf der Basis des Hash zu bestimmen, ob die Vorrichtungsidentität in einer Vorrichtungsidentitäts-Blockchain registriert ist; und bei der Bestimmung, dass die Vorrichtungsidentität nicht in der Vorrichtungsidentitäts-Blockchain registriert ist, die Vorrichtungsidentitätstransaktion zu der Vorrichtungsidentitäts-Blockchain hinzuzufügen.
-
In einem Beispiel einer Ausführungsform eines Systems hat oder haben die eine oder mehreren Blockchain-Vorrichtungen, die auf der Basis des Hash zu bestimmen haben, ob die Vorrichtungsidentität in der Vorrichtungsidentitäts-Blockchain registriert ist, ferner einen Hash-Baum zu durchsuchen, der mit der Vorrichtungsidentitäts-Blockchain assoziiert ist, um zu bestimmen, ob die Vorrichtungsidentitäts-Blockchain eine bestehende Transaktion enthält, die mit dem Hash assoziiert ist.
-
In einem Beispiel einer Ausführungsform eines Systems hat oder haben die eine oder mehreren Blockchain-Vorrichtungen ferner: eine Identitätsnachschlaganforderung von einem ersten Netz der Vielzahl von Netzen zu empfangen, wobei die Identitätsnachschlaganforderung mit einem Versuch assoziiert ist, die erste Vorrichtung an Bord des ersten Netzes zu nehmen, und wobei die Identitätsnachschlaganforderung die Vorrichtungsidentität umfasst; die Vorrichtungsidentitäts-Blockchain zu durchsuchen, um die Vorrichtungsidentitätstransaktion zu identifizieren, die mit der Vorrichtungsidentität assoziiert ist; und die Vorrichtungsidentitätstransaktion zu dem ersten Netz zu übertragen, wobei das erste Netz, auf der Basis der Vorrichtungsidentitätstransaktion, zu verifizieren hat, dass die Vorrichtungsidentität in der ersten Vorrichtung registriert ist.
-
In einem Beispiel einer Ausführungsform eines Systems hat oder haben die eine oder mehreren Blockchain-Vorrichtungen ferner: eine zweite Identitätsnachschlaganforderung von einem zweiten Netz zu empfangen, wobei die zweite Identitätsnachschlaganforderung mit einem Versuch assoziiert ist, die erste Vorrichtung an Bord des zweiten Netzes zu nehmen, und wobei die zweite Identitätsnachschlaganforderung die Vorrichtungsidentität umfasst; die Vorrichtungsidentitäts-Blockchain zu durchsuchen, um die Vorrichtungsidentitätstransaktion zu identifizieren, die mit der Vorrichtungsidentität assoziiert ist; und die Vorrichtungsidentitätstransaktion zu dem zweiten Netz zu übertragen, wobei das zweite Netz, auf der Basis der Vorrichtungsidentitätstransaktion, zu verifizieren hat, dass die Vorrichtungsidentität in der ersten Vorrichtung registriert ist.
-
In einem Beispiel einer Ausführungsform eines Systems umfasst die erste Vorrichtung eine Internet der Dinge- (IoT) Vorrichtung, die in der Lage ist, an mehreren Internet der Dinge- (IoT) Netzen teilzunehmen.
-
In einem Beispiel einer Ausführungsform eines Systems hat oder haben die eine oder mehreren Blockchains ferner: eine zweite Vorrichtungsidentitätstransaktion von einer zweiten Vorrichtung der Vielzahl von Vorrichtungen zu empfangen, wobei die zweite Vorrichtungsidentitätstransaktion die Vorrichtungsidentität umfasst; einen zweiten Hash der Vorrichtungsidentität zu berechnen; auf der Basis des zweiten Hash, zu bestimmen, dass die Vorrichtungsidentität in der Vorrichtungsidentitäts-Blockchain registriert ist; und einen Fehler an die zweite Vorrichtung zu übertragen, wobei der Fehler anzeigt, dass die Vorrichtungsidentität bereits registriert ist.
-
In einem Beispiel einer Ausführungsform eines Systems hat der Speicher ferner eine Algorithmus-Blockchain zu speichern; und die eine oder mehreren Blockchain-Vorrichtungen hat oder haben ferner: eine Algorithmusregistrierungstransaktion von einem ersten Netz der Vielzahl von Netzen zu empfangen, wobei die Algorithmusregistrierungstransaktion einen Algorithmusidentifikator und eine Darstellung eines Algorithmus umfasst; einen oder mehrere Tests vorzunehmen, um den Algorithmus zu validieren; und die Algorithmusregistrierungstransaktion zu der Algorithmus-Blockchain hinzuzufügen.
-
In einem Beispiel einer Ausführungsform eines Systems hat oder haben die eine oder mehreren Blockchain-Vorrichtungen ferner: eine Algorithmusnachschlaganforderung von einem zweiten Netz der Vielzahl von Netzen zu empfangen, wobei die Algorithmusnachschlaganforderung den Algorithmusidentifikator umfasst; die Algorithmus-Blockchain zu durchsuchen, um die Algorithmusregistrierungstransaktion zu identifizieren, die mit dem Algorithmusidentifikator assoziiert ist; und die Algorithmusregistrierungstransaktion zu dem zweiten Netz zu übertragen, wobei das zweite Netz, auf der Basis der Algorithmusregistrierungstransaktion, zu bestimmen hat, ob der Algorithmus zu verwenden ist.
-
Eine oder mehrere Ausführungsformen kann oder können mindestens ein maschinenzugängliches Speichermedium umfassen, das darauf gespeicherte Instruktionen aufweist, wobei die Instruktionen, wenn sie auf einer Maschine ausgeführt werden, die Maschine veranlassen: eine Vorrichtungsidentitätstransaktion von einer ersten Vorrichtung der Vielzahl von Vorrichtungen zu empfangen, wobei die Vorrichtungsidentitätstransaktion eine Vorrichtungsidentität umfasst; einen Hash der Vorrichtungsidentität zu berechnen; auf der Basis des Hash zu bestimmen, ob die Vorrichtungsidentität in einer Vorrichtungsidentitäts-Blockchain registriert ist; und bei der Bestimmung, dass die Vorrichtungsidentität nicht in der Vorrichtungsidentitäts-Blockchain registriert ist, die Vorrichtungsidentitätstransaktion zu der Vorrichtungsidentitäts-Blockchain hinzuzufügen.
-
In einem Beispiel einer Ausführungsform eines Speichermediums veranlassen die Instruktion die Maschine ferner: eine zweite Vorrichtungsidentitätstransaktion von einer zweiten Vorrichtung zu empfangen, wobei die zweite Vorrichtungsidentitätstransaktion die Vorrichtungsidentität umfasst; einen zweiten Hash der Vorrichtungsidentität zu berechnen; auf der Basis des zweiten Hash, zu bestimmen, dass die Vorrichtungsidentität in der Vorrichtungsidentitäts-Blockchain registriert ist; und einen Fehler an die zweite Vorrichtung zu übertragen, wobei der Fehler anzeigt, dass die Vorrichtungsidentität bereits registriert ist.
-
In einem Beispiel einer Ausführungsform eines Speichermediums veranlassen die Instruktion die Maschine ferner: eine Algorithmusregistrierungstransaktion von einem ersten Netz zu empfangen, wobei die Algorithmusregistrierungstransaktion einen Algorithmusidentifikator und eine Darstellung eines Algorithmus umfasst; einen oder mehrere Tests vorzunehmen, um den Algorithmus zu validieren; und die Algorithmusregistrierungstransaktion zu der Algorithmus-Blockchain hinzuzufügen.
-
Eine oder mehrere Ausführungsformen kann oder können ein Verfahren umfassen, umfassend: Empfangen einer Vorrichtungsidentitätstransaktion von einer ersten Vorrichtung, wobei die Vorrichtungsidentitätstransaktion eine Vorrichtungsidentität umfasst; Berechnen eines Hash der Vorrichtungsidentität; Bestimmen, auf der Basis des Hash, ob die Vorrichtungsidentität in einer Vorrichtungsidentitäts-Blockchain registriert ist; und bei der Bestimmung, dass die Vorrichtungsidentität nicht in der Vorrichtungsidentitäts-Blockchain registriert ist, Hinzufügen der Vorrichtungsidentitätstransaktion zu der Vorrichtungsidentität-Blockchain.
-
In einem Beispiel einer Ausführungsform eines Verfahrens umfasst das Verfahren ferner: Empfangen einer Algorithmusregistrierungstransaktion von einem ersten Netz, wobei die Algorithmusregistrierungstransaktion einen Algorithmusidentifikator und einen Darstellung eines Algorithmus umfasst; Vornehmen eines oder mehrerer Tests, um den Algorithmus zu validieren; und Hinzufügen der Algorithmusregistrierungstransaktion zu einer Algorithmus-Blockchain.