-
HINTERGRUND
-
Frameraten-Heraufkonvertierung (Frame Rate Up-Conversion, FRUC) bezieht sich auf Techniken zum Erhöhen der Framerate eines Videos mittels Erhöhens der Anzahl der zum Anzeigen verfügbaren Frames je Zeitdauer. Einige beliebte FRUC-Techniken erhöhen die Anzahl der verfügbaren Frames, indem sie bereits gerenderte Frames als eine Referenz verwenden, um die Pixeldaten für einen oder mehrere neue Frames zu generieren, anstatt eine vollständige Rendering-Pipeline zu verwenden. Diese neuen Frames können als zusätzliche Frames in das Video eingefügt werden, um die Gesamtzahl der Frames in einem Video zu erhöhen. Diese FRUC-Techniken können optischen Fluss nutzen, um Muster des Pixelverhaltens zwischen den gerenderten Referenzframes basierend auf der Bewegung in einer Szene zu erkennen. Diese Muster können verwendet werden, um Pixeldaten in den Pixeln des neuen Frames vorherzusagen, indem Quellpixel aus den Referenzframes verzerrt (warped) werden, um die Pixeldaten für Pixel des Zwischenframes zu generieren. Beim Durchführen von Pixel-Warping kann es zu einer Kollision kommen, wo mehrere Quellpixel aus demselben oder unterschiedlichen Referenzframes auf denselben Ort für einen Zwischenframe abgebildet werden - z.B. beispielsweise dort, wo die Quellpixel Features entsprechen (z.B. Objekten und Objektoberflächen), die sich in unterschiedlichen Tiefen in einer in den Frames dargestellten Umgebung befinden. Um einen realistischeren Zwischenframe zu erzeugen, sollten diese Kollisionen aufgelöst werden, um die relativen Tiefen der Quellpixel im Zwischenframe widerzuspiegeln.
-
Herkömmliche Ansätze zum Auflösen einer Kollision zwischen Quellpixeln von Referenzframes können Tiefenwerte für die Pixel verwenden, um das Vordergrundpixel für die Position im Zwischenbild auszuwählen. In einigen Beispielen werden die Tiefenwerte von einer Spiel-Engine (game-engine) bereitgestellt, die zum Rendern der Frames verwendet wird. Jedoch kann Zugriff auf Tiefenwerte über eine Spiel-Engine eine enge Integration mit der Spiel-Engine erfordern, was möglicherweise nicht immer machbar oder verfügbar ist. In anderen Beispielen können die Tiefenwerte unter Verwenden von Daten, korrespondierend zu den Frames selber, generiert werden. Jedoch kann Erzeugen von Tiefenwerten aus Frames rechenintensiv und zeitintensiv sein, was die Fähigkeit zur Durchführung von FRUC mit Echtzeit- oder nahezu mit Echtzeit-Raten beeinträchtigen kann.
-
ZUSAMMENFASSUNG
-
Ausführungsbeispiele der vorliegenden Offenbarung betreffen ein Verwenden optischen Flusses zur Kollisionsauflösung in Frameraten-Heraufkonvertierungs-Anwendungen. Insbesondere betrifft die Offenbarung Ansätze zum Bestimmen, ob zum Erzeugen von Pixeldaten für eine Position in einem Frame Pixeldaten eines Pixels aus einem anderen Frame verwendet werden, basierend zumindest darauf wie ähnlich ein Bewegungsvektor für den Pixel zu einem globalen Bewegungsvektor ist, berechnet unter Verwenden optischen Flusses. Offenbarte Ansätze können verwendet werden, um Kollisionen zwischen Pixeln von verschiedenen Quell- oder Referenzframes aufzulösen, wenn Zwischenframes erzeugt werden, basierend auf zumindest dem Auswählen des Pixels - z.B. aus den Pixeln, die mit der Kollision assoziiert sind - der einen Bewegungsvektor hat, der dem globalen Bewegungsvektor weniger ähnlich ist.
-
Im Gegensatz zu konventionellen Ansätzen, wie denen, die oben beschrieben sind, können offenbarte Ansätze Pixeldaten für zumindest eine Position in einem oder mehreren Frames erzeugen unter Verwenden eines oder mehrerer Teile von einem oder mehreren anderen Frames basierend auf zumindest einem Level von Ähnlichkeit zwischen einem oder mehreren Global-Bewegungsvektoren und einem oder mehreren Bewegungsvektoren für den/die Teil(e) des/der anderen Frame(s). Ein Global-Bewegungsvektor für einen Frame(s) kann für die Bewegung des/der Gesamtframe(s) repräsentativ sein. Der Level der Ähnlichkeit kann zum Beispiel verwendet werden, um zu bestimmen, ob Pixeldaten für eine Position in einem Bild erzeugt werden unter Verwenden eines Pixels und/oder einer Gewichtung für den Pixel für eine Position in einem Frame. Der Level an Ähnlichkeit kann (in einem oder mehreren Ausführungsbeispielen) als ein Ähnlichkeitswert berechnet werden unter Verwenden einer Ähnlichkeitsmetrik basierend zumindest auf einer Differenz zwischen einem oder mehreren Winkel(n) des/der Global-Bewegungsvektors/en und einem oder mehreren Winkel des/der Bewegungsvektors/en, der/die zu dem einen oder mehreren Teil(en) korrespondiert. Zusätzlich, oder alternativ, kann die Ähnlichkeitsmetrik auf zumindest eine Differenz zwischen einer oder mehreren Beträge des/der Global-Bewegungsvektors/en und einer oder mehrere Beträge des/der Bewegungsvektors/en, der/die zu dem einen oder mehreren Teil(en) korrespondiert/en. Die Ähnlichkeitsmetrik kann die Differenz zwischen dem einen oder mehreren Winkeln im Verhältnis zu der/den Größenordnung(en) des/der Global-Bewegungsvektors/en gewichten.
-
KURZE BESCHREIBUNG DER ZEICHNUNGEN
-
Die vorliegenden Systeme und Verfahren zum Verwenden globaler Bewegung zur Kollisionsauflösung beim Frameraten-Heraufkonvertieren werden unten mit Bezug auf die angefügten Zeichnungsfiguren im Detail beschrieben, wobei:
- 1 ein Beispiel eines Frameerzeugungs-Systems zeigt, in Übereinstimmung mit einigen Ausführungsbeispielen der vorliegenden Offenbarung;
- 2 ein Beispiel für eine Kollision zwischen Bildteilen illustriert, in Übereinstimmung mit einigen Ausführungsbeispielen der vorliegenden Offenbarung;
- 3 Beispiele für Bildinhalt für Frames und extrapolierte Frames illustriert, die von den Frames erzeugt werden können, in Übereinstimmung mit einigen Ausführungsbeispielen der vorliegenden Offenbarung;
- 4 einen Graphen illustriert, der Beispiele eines Global-Bewegungsvektors und Bewegungsvektoren, die mit dem Global-Bewegungsvektor verglichen werden können, illustriert, in Übereinstimmung mit einigen Ausführungsbeispielen der vorliegenden Offenbarung;
- 5 ein Flussdiagramm ist, dass ein Verfahren zum Bestimmen von Pixeldaten für eine Position in einem Bild zeigt, basierend auf zumindest einem Bestimmen der Position von mehreren Bildteilen, in Übereinstimmung mit einigen Ausführungsbeispielen der vorliegenden Offenbarung;
- 6 ein Flussdiagramm ist, dass ein Verfahren zum Bestimmen von Pixeldaten für eine Position in einem Bild zeigt, basierend zumindest auf einem Identifizieren eines Konflikts in der Position zwischen mehreren Bildteilen, in Übereinstimmung mit einigen Ausführungsbeispielen der vorliegenden Offenbarung;
- 7 ein Flussdiagramm ist, dass ein Verfahren zum Bestimmen von Pixeldaten für eine Position in einem Bild zeigt, basierend zumindest auf einem Level von Ähnlichkeit zwischen Global-Bewegung und Bewegung, die zu einem oder mehreren Bildteilen korrespondiert, in Übereinstimmung mit einigen Ausführungsbeispielen der vorliegenden Offenbarung;
- 8 ein Blockdiagramm eines beispielhaften Inhalts-Streaming-Systems ist, das zum Verwenden beim Implementieren einiger Ausführungsbeispiele der vorliegenden Offenbarung geeignet ist;
- 9 ein Blockdiagramm einer beispielhaften Rechenvorrichtung ist, die zum Verwenden beim Implementieren einiger Ausführungsbeispiele der vorliegenden Offenbarung geeignet ist; und
- 10 ein Blockdiagramm eines beispielhaften Datencenters ist, das zum Verwenden beim Implementieren einiger Ausführungsbeispiele der vorliegenden Offenbarung geeignet ist.
-
DETAILLIERTE BESCHREIBUNG
-
Die vorliegende Offenbarung betrifft ein Verwenden von Global-Bewegung zur Kollisionsauflösung bei Frameraten-Heraufkonvertieren. Insbesondere betrifft die Offenbarung Ansätze zum Bestimmen, ob zum Erzeugen von Pixeldaten für eine Position in einem Frame Pixeldaten eines Pixels aus einem anderen Frame verwendet werden, basierend zumindest darauf wie ähnlich ein Bewegungsvektor für den Pixel zu einem Global-Bewegungsvektor ist. Offenbarte Ansätze können verwendet werden, um Kollisionen zwischen Pixeln von verschiedenen Frames aufzulösen, basierend auf zumindest Auswählen des Pixels, der einen Bewegungsvektor hat, der dem Global-Bewegungsvektor weniger ähnlich ist.
-
Offenbarte Ansätze können Pixeldaten für zumindest eine Position in einem oder mehreren Frames erzeugen unter Verwenden eines oder mehrerer Teile eines oder mehrerer anderer Frames basierend zumindest auf einem Ähnlichkeitslevel zwischen einem oder mehrerer Global-Bewegungsvektoren und einem oder mehreren Bewegungsvektoren für den einen oder die mehreren Teile von einem oder mehreren anderen Frames. Wenn ein Bewegungsvektor für einen Pixel ähnlich einem Global-Bewegungsvektor für einen Frame ist, kann dies anzeigen, dass der Pixel ein Objekt oder eine Oberfläche im Hintergrund des Frames zeigt. Ähnlich kann es zeigen, wenn ein Bewegungsvektor für einen Pixel signifikant verschieden zu einem Global-Bewegungsvektor für einen Frame ist, dass der Pixel ein Objekt oder eine Oberfläche im Vordergrund des Frames zeigt. Daher kann der Ähnlichkeitslevel verwendet werden, um zum Beispiel zu bestimmen, ob Pixeldaten für eine Position in einem Bild erzeugt werden unter Verwenden der Pixel und/oder einer Gewichtung für den Pixel für die Position. Zum Beispiel kann der Pixel für eine Position eher als ein anderer Pixel ausgewählt werden basierend darauf, dass der Bewegungsvektor für den Pixel dem Global-Bewegungsvektor weniger ähnlich ist als ein Bewegungsvektor für den anderen Pixel.
-
Ein Global-Bewegungsvektor für einen Frame(s) kann für Bewegung des/der Gesamtframe(s) repräsentativ sein. In zumindest einem Ausführungsbeispiel kann der Global-Bewegungsvektor unter Verwenden von Bewegungsvektoren für den/die Frame(s) berechnet werden. Zum Beispiel kann der Global-Bewegungsvektor basierend auf zumindest einer statistischen Kombination der Bewegungsvektoren berechnet werden. Beispiele von statistischen Kombinationen schließen einen Mittelwert, einen Maximalwert, einen Median und/oder einen oder mehrere andere statistisch abgeleitete Werte ein.
-
In zumindest einem Ausführungsbeispiel kann der Level an Ähnlichkeit für ein oder mehrere Teile des einen oder der mehreren Frames als ein Ähnlichkeitswert berechnet werden unter Verwenden einer Ähnlichkeitsmetrik. Die Ähnlichkeitsmetrik kann zumindest auf einer Differenz zwischen einem oder mehreren Winkeln des einen oder der mehreren Global-Bewegungsvektoren und dem einem oder den mehreren Winkeln von einem oder mehreren Bewegungsvektoren für den einen oder die mehreren Teile basieren. Zusätzlich oder alternativ kann die Ähnlichkeitsmetrik zumindest auf einer Differenz zwischen einem oder mehrerer Beträge des einen oder der mehreren Global-Bewegungsvektoren und einem oder mehreren Beträge eines oder mehrerer Bewegungsvektoren (z.B. lokale Bewegungsvektoren) für den einen oder die mehreren Teile basieren. In zumindest einem Ausführungsbeispiel kann die Ähnlichkeitsmetrik die Differenz zwischen dem einen oder den mehreren Winkeln im Verhältnis zu dem einen oder den mehreren Beträgen des einen oder der mehreren Global-Bewegungsvektoren gewichten. Zum Beispiel kann eine Winkeldifferenz ein größeres Gewicht gegeben werden, wenn ein Betrag eines Global-Bewegungsvektors ansteigt, und ein kleineres Gewicht, wenn der Betrag fällt.
-
Obwohl die offenbarten Ansätze primär als für Frameraten-Heraufkonvertierung (Frame Rate Up-Conversion, FRUC) verwendet beschrieben werden, dies ist nicht einschränkend gedacht. Zum Beispiel können die offenbarten Ansätze allgemein verwendet werden, um einen oder mehrere Teile von einem oder mehreren Bildern zu evaluieren, zum Verwenden beim Bestimmen von Pixeldaten für eine oder mehrere Bildpositionen (z.B. in einem gleichen oder anderen Bild, zur Bildinterpolation, für Bilderzeugung, für Bildmodifizierung, usw.). Zusätzlich können, obwohl primär Bewegungsvektoren als Beispiele für Bewegungsschätzung beschrieben werden, jedwede geeigneten Repräsentationen von Bewegungsschätzungen verwendet werden.
-
Die Systeme und Verfahren, die hierin beschrieben werden, können für eine Vielfalt von Zwecken verwendet werden, im Wege eines Beispiels und ohne Einschränkung, können diese Zwecke Systeme oder Anwendungen zur Maschinensteuerung, Maschinenbewegung, Maschinenfahren, Synthetik-Daten-Erzeugung, Modelltraining, Wahrnehmung, erweiterte Realität, virtuelle Realität, gemischte Realität, Robotik, Sicherheit und Überwachung, autonome oder halb-autonome Maschinenanwendungen, Deep-Learning, Umgebungssimulation, Datencenter-Verarbeitung, Dialog-AI, Lichttransport-Simulation (z.B. Raytracing Pfadtracing, usw.) Erzeugung gemeinschaftlichen Inhalts für 3D-Aktiva (3D-assets), Digital-Zwillings-Systeme, Cloudberechnung und/oder jede andere geeignete Anwendung umfassen.
-
Offenbarte Ausführungsbeispiele können in einer Vielfalt von verschiedenen Systemen, wie beispielsweise Fahrzeugsystemen (z.B. einem Steuerungssystem für eine autonome oder halb-autonome Maschine, ein Wahrnehmungssystem für eine autonome oder halb-autonome Maschine), Systemen, die unter Verwenden eines Roboters implementiert sind, Luftsystemen, medizinischen Systemen, Bootssysteme, smarten Bereichs-Überwachungssystemen, Systemen zum Durchführen von Deep-Learning-Operationen, Systemen zum Durchführen von Simulationsoperationen, Systemen, die unter Verwenden einer Edge-Vorrichtung implementiert sind, Systemen, die eine oder mehrere virtuelle Maschinen (VMs) beinhalten, Systemen zum Durchführen von Synthetik-Daten-Erzeugungs-Operationen, Systemen, die zumindest teilweise in einem Datencenter implementiert sind, Systemen zum Durchführen von Dialog-Al-Operationen, Systemen zum Durchführen von Lichttransport-Simulation, Systemen zum Durchführen von Erzeugung gemeinsamen Inhalts für 3D-Aktiva, Systemen zum Erzeugen oder Aufrechterhalten von Digital-Zwilling-Repräsentationen von physikalischen Objekten, Systemen, die zumindest teilweise unter Verwenden von CloudBerechnungsressourcen implementiert werden und/oder anderen Typen von Systemen beinhaltet sein.
-
1 zeigt ein Beispiel eines Frame-Erzeugungssystems 100 (hierin auch als „System 100“ in Bezug genommen), in Übereinstimmung mit einigen Ausführungsbeispielen der vorliegenden Offenbarung. Es sollte verstanden werden, dass diese und andere hierin beschriebene Anordnungen nur als Beispiele dargelegt werden. Andere Anordnungen und Elemente (z.B. Maschinen, Schnittstellen, Funktionen, Reihenfolgen, Gruppierungen von Funktionen, usw.) können zusätzlich oder anstelle der gezeigten verwendet werden und einige Elemente können gänzlich weggelassen werden. Ferner sind viele der hierin beschriebenen Elemente funktionelle Entitäten, die als diskrete oder verteilte Komponenten oder in Zusammenhang mit anderen Komponenten und in jeder geeigneten Kombination und Position implementiert sein können. Verschiedene Funktionen, die hierin als mittels Entitäten ausgeführt beschrieben werden, können mittels Hardware, Firmware und/oder Software ausgeführt werden. Zum Beispiel können verschiedene Funktionen mittels eines Prozessors ausgeführt werden, der Instruktionen ausführt, die im Arbeitsspeicher gespeichert sind.
-
Das System 100 kann unter Verwenden, neben zusätzlichen oder alternativen Komponenten, eines Bewegungsschätzers 104, eines Global-Bewegung-Bestimmers 106, eines Ähnlichkeitsevaluators 108 und/oder eines Pixeldaten-Bestimmers 110 implementiert werden.
-
Als ein Überblick kann der Bewegungsschätzer 104 konfiguriert sein, um Bewegung zwischen einen oder mehreren Frames, wie beispielsweise ein Frame(s) 102A und ein Frame(s) 102B eines Videos 102, zu schätzen. Die Bewegungsschätzungen (z.B. Bewegungsvektoren) können eine oder mehrere Bewegungsschätzungen für einen oder mehrere spezifische Pixel und/oder Bildteile (z.B. Blocks) des einen oder der mehreren Frames umfassen. Der Global-Bewegungs-Bestimmer 106 kann konfiguriert sein, eine oder mehrere Global-Bewegungs-Schätzungen (z.B. Global-Bewegungsvektoren) zu bestimmen, die zu der einen oder mehreren Bewegungsschätzungen korrespondieren, die unter Verwenden des Bewegungsschätzers 104 bestimmt werden. Der Ähnlichkeitsevaluator 108 kann konfiguriert sein, Ähnlichkeitslevel zwischen einer oder mehreren Bewegungsschätzungen für Pixel und/oder Bildteile (z.B. für den Frame 102A und/oder Frame 102B), bestimmt unter Verwendung des Bewegungsschätzers 104, und einer oder mehreren Global-Bewegungs-Schätzungen, bestimmt unter Verwenden des Global-Bewegungs-Bestimmers 106, zu evaluieren. Pixeldaten-Bestimmer 110 kann konfiguriert sein, Pixeldaten für eine oder mehrere Positionen in einem Frame(s), wie beispielsweise einem Frame(s) 112, zu bestimmen, basierend zumindest auf der Evaluation des einen oder der mehreren Ähnlichkeitslevel, durchgeführt unter Verwenden des Ähnlichkeitsevaluators 108.
-
In zumindest einem Ausführungsbeispiel kann das System 100 zur Frameraten-Heraufkonvertierung (FRUC) verwendet werden. Gemäß einem oder mehreren Ausführungsbeispielen kann ein System oder eine Anwendung von FRUC Frames vom Video 102, wie beispielsweise Frames 102A und 102B, verwenden, um einen oder mehrere dazwischenliegende oder extrapolierte Frames vom Video 102 zu erzeugen, ein Beispiel davon kann Frame 112 umfassen. Zum Beispiel kann der Pixeldaten-Bestimmer 110 FRUC durchführen zumindest basierend auf Bestimmen von Mappings zwischen einem oder mehreren Bildteilen des Frames 102A und/oder des Frames 102B und zumindest einer Position im Frame 112, um Pixeldaten für die zumindest eine Position im Frame 112 zu bestimmen. Als ein Beispiel kann der Pixeldaten-Bestimmer 110 Pixeldaten (z.B. für einen oder mehrere Pixel) für eine Position erzeugen, unter Verwenden, zumindest zum Teil, eines oder mehrerer Teile von Pixeldaten (z.B. für einen oder mehrere Pixel), die auf diese Position gemappt sind. In einem oder mehreren Ausführungsbeispielen kann das System 100 den einen oder die mehreren dazwischenliegenden oder extrapolierten Frames des Videos 102 basierend zumindest auf einer Zielframerate erzeugen. Zum Beispiel kann, wenn das Video 102 eine Framerate von 30 Frames pro Sekunde (FPS) hat, das System, um eine Zielframerate von 60 FPS zu erreichen, einen dazwischenliegenden Frame pro Paar von Frames in einer Sequenz von Frames des Videos 102 erzeugen. In zumindest einem Ausführungsbeispiel kann die Zielframerate benutzerkonfigurierbar sein.
-
Nun Bezug nehmend auf 2 zeigt 2 ein Beispiel einer Kollision zwischen Bildteilen 230 und 234, in Übereinstimmung mit einigen Ausführungsbeispielen der vorliegenden Offenbarung. In zumindest einem Ausführungsbeispiel kann der Pixeldaten-Bestimmer 110 eine Position für ein Bildteil von Frame 102A bestimmen, der zumindest teilweise mit einer Position überlappt, die der Pixeldaten-Bestimmer 110 für ein Bildteil von Frame 102B bestimmt, was zu einer Kollision (z.B. eine Pixelkollision) führt. Zum Beispiel kann der Pixeldaten-Bestimmer 110 eine Position 232 (z.B. eine Pixelposition) in dem Frame 112 für den Bildteil 230 (z.B. ein Pixel) bestimmen und kann eine Position 232 in dem Frame 112 für den Bildteil 234 (z.B. ein Pixel) bestimmen. Wenn Positionen, die für Bildteile bestimmt werden, zumindest teilweise überlappen, kann dies zu einem Konflikt führen. Zum Beispiel mag es nötig sein, dass der Pixeldaten-Bestimmer 110, um Pixeldaten für den Frame 112 zu erzeugen, die die Umgebung genau repräsentieren, bestimmen muss, welch(er) Bildteil(e) für die Pixeldaten und/oder ein Gewichten von Bildteil(en) verwendet werden, die zum Erzeugen von Pixeldaten verwendet werden. In zumindest einem Ausführungsbeispiel kann, um dies zu tun, der Pixeldaten-Bestimmer 110 eine oder mehrere Evaluationen - die unter Verwenden des Ähnlichkeitsevaluator 108 durchgeführt werden - für einen oder mehrere Bildteile verwenden, die auf die Position gemappt werden. Die Evaluation(en) kann/können von einem Ähnlichkeitslevel zwischen einer oder mehreren korrespondierenden Bewegungsschätzungen und einer oder mehrerer Global-Bewegungs-Schätzungen sein. Während die Bildteile 234 und 230 als zu verschiedenen Frames gehörend gezeigt werden, können die Bildteile 234 und 230 zumindest in einem Ausführungsbeispiel zu dem gleichen Frame korrespondieren.
-
Nun Bezug nehmend auf 3 zeigt 3 Beispiele von Bildinhalten der Frames 102A und 102B und extrapolierten Frames 110A und 110B, die aus den Frames 102A und 102B erzeugt werden können, in Übereinstimmung mit einigen Ausführungsbeispielen der vorliegenden Offenbarung. Jeder Block in 3 kann einen oder mehrere Bildteile (z.B. Pixel) eines Bildes repräsentieren.
-
3 zeigt Beispiele, wo der Bildinhalt der Frames 102A und 102B ein Objekt 310 (oder Oberfläche) und ein Objekt 320 (oder Oberfläche) vor (in Bezug auf die Kameraperspektive oder den Ansichtsbereich) einem Hintergrund 330 umfasst. In zumindest einem Ausführungsbeispiel folgt der Frame 102B (z.B. unmittelbar oder auf andere Weise folgend) dem Frame 102A im Video 102. Zum Beispiel kann der Frame 102B einen Zustand einer Umgebung zu einer späteren Zeit zeigen als der Frame 102A. Wie in 3 angegeben, können sich eines oder mehrere der Objekte 310 und 320 (oder Oberflächen) in Bezug auf den Hintergrund 330 bewegt haben. Diese Bewegung kann dazu führen, dass der Pixeldaten-Bestimmer 110 eine oder mehrere Kollisionen zwischen Bildteilen detektiert, wie beispielsweise die Kollision 200 von 2. Da eine Global-Bewegungs-Schätzung für Bewegung für einen Frame(s) (z.B. 50% oder mehr) repräsentativ sein kann, wenn Bildinhalt des Frames primär der Hintergrund 330 ist, kann die Global-Bewegungs-Schätzung Bewegung des Hintergrundes 330 entsprechen. Wenn ein Objekt im oder nahe des Hintergrundes 330 ist, wenn eine Kamera, die das Video 102 aufnimmt, schwenkt, können Bewegungs-Schätzungen, die zu dem Objekt (oder Oberfläche) korrespondieren, ähnlich zu der Global-Bewegungs-Schätzung sein, die zu dem Hintergrund 330 korrespondiert. Die Bewegungsschätzungen können unähnlicher werden, wenn sich das Objekt weiter weg vom Hintergrund 330 bewegt. Ähnlich kann, wenn Bildinhalt eines Frames primär Vordergrund ist, eine Global-Bewegungs-Schätzung zur Bewegung des Vordergrundes korrespondieren. Der Pixeldaten-Bestimmer 110 kann diese Beziehungen in Bewegungsschätzungen verwenden, um zu bestimmen, welche Bildteile näher oder weiter vom Hintergrund oder Vordergrund entfernt sind, wenn er Pixeldaten für einen Frame(s) bestimmt. Daher können beispielsweise Kollisionen von Bildteilen aufgelöst werden basierend zumindest auf diesen Beziehungen.
-
Ein Frame 310A kann zu dem Frame 112 korrespondieren, wenn der Pixeldaten-Bestimmer 110 den Bildteil 230 auswählt, um ihn eher als den Bildteil 234 für die Pixeldaten an der Position 232 zu verwenden. Zusätzlich, oder alternativ, kann der Frame 310A zum Frame 112 korrespondieren, wenn der Pixeldaten-Bestimmer 110 den Bildteil 230 für die Pixeldaten an der Position 232 höher als den Bildteil 234 gewichtet. Der Frame 310A kann sich ergeben, zum Beispiel, wo die Evaluation(en), die unter Verwenden des Ähnlichkeitsevaluators 108 durchgeführt werden, anzeigen, dass eine oder mehrere Bewegungsschätzungen für das Objekt 310 ähnlicher zu einer oder mehreren Global-Bewegungs-Schätzungen als zu einer oder mehreren Bewegungsschätzungen für das Objekt 320 sind. Zum Beispiel kann, weil Bildinhalt der Frames 102A und 102B primär den Hintergrund 330 umfassen, eine Global-Bewegung für die Frames die gleiche oder ähnlich wie eine Bewegung des Hintergrunds 330 sein. Daher können Bewegungsschätzungen, wo das Objekt 320 im Vordergrund in Bezug auf das Objekt 310 ist, für das Objekt 310 ähnlicher einer Global-Bewegungs-Schätzung als für das Objekt 320 sein. Als solches kann, basierend auf der größeren Ähnlichkeit, der Pixeldaten-Bestimmer 110 eher Bildteile des Objekts 320 als Bildteile des Objekts 310 auswählen, um den Frame 310A zu erzeugen.
-
Ähnlich kann ein Frame 310B zu dem Frame 112 korrespondieren, wenn der Pixeldaten-Bestimmer 110 den Bildteil 234 vor dem Bildteil 230 bevorzugt, um ihn für die Pixeldaten an der Position 232 zu verwenden. Zusätzlich, oder alternativ, kann der Frame 310B zum Frame 112 korrespondieren, wenn der Pixeldaten-Bestimmer 110 für die Pixeldaten an der Position 232 den Bildteil 234 höher als den Bildteil 230 gewichtet. Der Frame 310B kann sich ergeben, zum Beispiel, wo die Evaluation(en), die unter Verwenden des Ähnlichkeitsevaluators 108 durchgeführt werden, anzeigt, dass eine oder mehrere Bewegungsschätzungen für das Objekt 320 ähnlicher zu einer oder mehreren Global-Bewegungs-Schätzungen sind als eine oder mehrere Bewegungsschätzungen für das Objekt 310. Zum Beispiel kann, wie hierin beschrieben, weil Bildinhalt der Frames 102A und 102B primär den Hintergrund 330 umfasst, Global-Bewegung für die Frames die gleiche oder ähnlich wie Bewegung des Hintergrunds 330 sein. Daher können Bewegungsschätzungen, wo das Objekt 310 im Vordergrund in Bezug auf das Objekt 320 ist, für das Objekt 320 einer Global-Bewegungs-Schätzung ähnlicher sein als für das Objekt 310. Als solches kann, basierend auf der größeren Ähnlichkeit, der Pixeldaten-Bestimmer 110 Bildteile des Objekts 310 vor Bildteilen des Objekts 320 bevorzugen, um den Frame 310B zu erzeugen.
-
Wie hierin beschrieben kann der Bewegungsschätzer 104 konfiguriert sein, um Bewegung zwischen einem oder mehreren Frames, wie beispielsweise dem/den Frame(s) 102A und dem/den Frame(s) 102B des Videos 102 (oder allgemeiner einer Sequenz von Frames oder Bildern) zu schätzen. Die Bewegungsschätzungen (z.B. Bewegungsvektoren) können eine oder mehrere Bewegungsschätzungen für einen oder mehrere spezifische Pixel und/oder Bildteile (z.B. Blocks) des einen oder der mehreren Frames umfassen. Bewegungsschätzungen für einen Frame können kollektiv zumindest einen Teil einer Transformation von einem Bild in ein anderes Referenzbild beschreiben. In zumindest einem Ausführungsbeispiel kann eine Bewegungsschätzung einen Bewegungsvektor umfassen. Ein Bewegungsvektor kann zum Beispiel einen Vektor (z.B. einen 2D-Vektor) umfassen, der einen Offset von Koordinaten in einem Frame(s) zu Koordinaten in einem anderen Frame(s) bereitstellt. In einem oder mehreren Ausführungsbeispielen kann ein Bewegungsvektor einen X-Offset zu einer X-Komponente eines Pixels und einen Y-Offset zu einer Y-Komponente des Pixels umfassen. In zumindest einem Ausführungsbeispiel kann der Bewegungsschätzer 104 eine oder mehrere Bewegungsschätzungen für jeden Pixel und/oder Block in einem Frame bestimmen.
-
Der Bewegungsschätzer 104 kann Bewegungsschätzungen bestimmen unter Verwenden irgendeines geeigneten Ansatzes, wie beispielsweise unter Verwenden einer oder mehrerer Block-Matching-Algorithmen, Phasenkorrelations-Algorithmen, Pixel-Rekursiv-Algorithmen und oder Optischer-Fluss-Algorithmen. In verschiedenen Ausführungsbeispielen kann der Bewegungsschätzer 104 Bewegungsschätzungen für Vorwärts- und/oder Rückwärtsbewegungen berechnen. Bewegungsschätzungen für Vorwärtsbewegung können den/die Frames(s) 102A als ein Eingabebild(er) und den/die Frame(s) 102B als ein Referenzbild(er) verwenden. Bewegungsschätzungen für Rückwärtsbewegung können den den/die Frame(s) 102B als ein Eingabebild(er) und den/die Frame(s) 102A als ein Referenzbild(er) verwenden.
-
Der Bewegungsschätzer 104 kann dichte (dense) Bewegungsschätzung und/oder dünne (sparse) Bewegungsschätzung durchführen. Dichte Bewegungsschätzung kann Bewegungsschätzungen für individuelle Pixel berechnen. Dünne Bewegungsschätzung kann Bewegungsschätzungen für Gruppen von Pixeln, wie beispielsweise Blöcke (z.B. 2x2, 4x4, 6x6, 8x8, usw.) berechnen. Offenbarte Ansätze können irgendeine Kombination von dichten und/oder dünnen Bewegungsschätzungen verwenden. In zumindest einem Ausführungsbeispiel kann der Bewegungsschätzer 104 dünne Bewegungsschätzungen bestimmen. Der Bewegungsschätzer 104 kann dann ein oder mehrere Teile der dünnen Bewegungsschätzungen auf dichte und/oder weniger dünne Bewegungsschätzungen hochkonvertieren oder heraufskalieren, was in offenbarten Ausführungsbeispielen verwendet werden kann. In zumindest einem Ausführungsbeispiel kann ein Heraufskalieren zumindest auf Faktoren wie beispielsweise Bildintensität und Kantenpositionen basiert sein.
-
In zumindest einem Ausführungsbeispiel kann der Bewegungsschätzer 104 eine oder mehrere Bewegungsschätzungen analysieren und, basierend auf zumindest der Analyse, zumindest eine Bewegungsschätzung verwerfen. Zum Beispiel kann der Bewegungsschätzer 104 die Analyse verwenden, um zu bestimmen, dass eine Bewegungsschätzung inkorrekt ist und die Bewegungsschätzung verwerfen. Im Wege eines Beispiels und nicht als Einschränkung kann die Analyse eine Vorwärts-Projektion einer ersten Bildposition auf eine erste Referenzbildposition unter Verwenden einer Vorwärtsbewegungsschätzung, und eine Rückwärts-Projektion einer zweiten Bildposition auf eine zweite Referenzbildposition unter Verwenden einer Rückwärtsbewegungsschätzung involvieren. Wenn die zweite Referenzbildposition, die sich aus der Rückwärtsprojektion ergibt, nicht innerhalb einer Schwellendistanz von der ersten Bildposition (z.B. nicht auf die gleiche Pixelposition oder innerhalb einer Schwellen-Pixeldistanz davon gemappt) ist, kann/können die Bewegungsschätzung(en) verworfen werden. In zumindest einem Ausführungsbeispiel kann der Bewegungsschätzer 104 nach Verwerfen aller inkonsistenten Bewegungsschätzungen ein Heraufskalieren durchführen.
-
In zumindest einem Ausführungsbeispiel verwendet der Pixeldaten-Bestimmer 110 die Bewegungsschätzungen für die Bildteile, um die Position(en) für die Bildteile in einem extrapolierten Frame zu bestimmen. Zum Beispiel kann der Pixeldaten-Bestimmer 110 eine Bewegungsschätzung 240 verwenden, um den Bildteil 230 auf die Position 232 zu mappen, und kann eine Bewegungsschätzung 242 verwenden, um den Bildteil 234 auf die Position 232 zu mappen. In zumindest einem Ausführungsbeispiel kann das Mappen ein Warpen von Quellpixeln der Frames 102A und/oder 102B umfassen, um den Frame 112 zu erzeugen. Jedoch kann jeder geeignete Ansatz zum Mappen von Bildteilen auf Positionen verwendet werden. Die Kollision 200 von 2 kann sich ergeben, wenn der Pixeldaten-Bestimmer 110 versucht, den Frame 112 so zu erzeugen, dass er zeitlich auf halber Strecke zwischen den Frames 102A und 102B liegt, aber dies muss nicht der Fall sein. Zum Beispiel kann mehr als ein Frame 112 mit irgendeiner geeigneten zeitlichen Beziehung zu den Frames 102A und 102B erzeugt werden. In dem gezeigten Beispiel können die Bildteile 230 und 234 auf die Positionen 232 gemappt werden basierend auf zumindest einem virtuellen Bewegen oder Projizieren der Bildteile 230 und 234 entlang korrespondierender Bewegungsvektoren mit Bezug auf den Frame 112, und einem Bestimmen, wo die Bildteile 230 und 234 sich mit dem Frame 112 schneiden, der auf halben Weg zwischen den Frames 102A und 102B positioniert ist. Dieser Prozess kann für jede beliebige Zahl von Bildteilen des Frame 102A und/oder des Frame 102B durchgeführt werden, was zu mehreren Kollisionen ähnlich der Kollision 200 führen kann. Der Pixeldaten-Bestimmer 110 kann konfiguriert sein, um eine oder mehrere dieser Kollisionen aufzulösen basierend auf entsprechenden Evaluationen von Leveln von Ähnlichkeit, die unter Verwenden des Ähnlichkeitsevaluators 108 durchgeführt werden.
-
Wie hierin beschrieben, kann der Global-Bewegungs-Bestimmer 106 konfiguriert sein, um eine oder mehrere Global-Bewegungs-Schätzungen (z.B. Globalbewegungsvektoren) zu bestimmen, die zu einer oder mehreren Bewegungsschätzungen (z.B. Lokalbewegungs-Schätzungen oder Vektoren) korrespondieren, die unter Verwenden des Bewegungsschätzers 104 bestimmt werden. Eine Global-Bewegungs-Schätzung für einen Frame(s), wie beispielsweise Frame 102A, kann für eine Bewegung des/der Gesamtframe(s) repräsentativ sein. In zumindest einem Ausführungsbeispiel kann die Global-Bewegungs-Schätzung unter Verwenden einer oder mehrerer der Bewegungsschätzungen berechnet werden, die für den/die Frame(s) unter Verwenden des Bewegungsschätzers 104 bestimmt werden. Zum Beispiel kann der Globalbewegungs-Bestimmer 106 eine Global-Bewegungs-Schätzung (z.B. einen Globalbewegungsvektor) für Frame 102 berechnen basierend zumindest auf einer statistischen Kombination der Bewegungsschätzungen (z.B. der dichten Bewegungsschätzungen) für den Frame 102A. Beispiele für statistische Kombinationen umfassen einen Mittelwert, einen Maximalwert, einen Median und/oder einen oder mehrere andere statistisch abgeleitete Werte. In zumindest einem Ausführungsbeispiel kann der Globalbewegungs-Bestimmer 106 eine Global-Bewegungs-Schätzung je Frame berechnen. Zusätzlich oder alternativ kann der Globalbewegungs-Bestimmer 106 eine Global-Bewegungs-Schätzung berechnen, die zu mehreren Frames korrespondiert. Zum Beispiel kann der Globalbewegungs-Bestimmer 106 eine Multiframe Global-Bewegungs-Schätzung berechnen, die zu einem Bewegungsmittelwert oder einer anderen statistischen Kombination von Global-Bewegungs-Schätzung über eine Vielzahl von Frames (z.B. einem Fenster von Frames) korrespondiert.
-
Auf dem Wege eines Beispiels und nicht einer Einschränkung kann in zumindest einem Ausführungsbeispiel der Globalbewegungs-Bestimmer 106 eine oder mehrere Bildverarbeitungstechniken durchführen oder auf andere Weise bestimmen, ob und/oder in welchem Umfang eine Global-Bewegungs-Schätzung zu Hintergrund oder Vordergrund korrespondiert. Der Pixeldaten-Bestimmer 110 kann diese Bestimmung verwenden, wenn er die Evaluationen von Ähnlichkeitsleveln interpretiert. Zum Beispiel kann, wie hierin beschrieben, wo eine Global-Bewegungs-Schätzung zu einem Hintergrund korrespondiert, eine große Ähnlichkeit für einen Bildteil anzeigen, dass der Bildteil im oder nahe des Hintergrundes ist. Wo eine Global-Bewegungs-Schätzung zu einem Vordergrund korrespondiert, kann eine große Ähnlichkeit für einen Bildteil anzeigen, dass der Bildteil entfernt vom Hintergrund- und daher im oder näher zu dem Vordergrund - ist. Daher kann der Pixeldaten-Bestimmer 110 die Interpretation der Ähnlichkeitslevel entsprechend an den Bildinhalt anpassen. In anderen Beispielen mag der Pixeldaten-Bestimmer 110 die Interpretation der Level an Ähnlichkeit nicht an den Bildinhalt anpassen, und kann, zum Beispiel, unter der Annahme operieren, dass eine Global-Bewegungs-Schätzung zum Hintergrund korrespondiert, oder in der Alternative, dass eine Global-Bewegungs-Schätzung zum Vordergrund korrespondiert.
-
In zumindest einem Ausführungsbeispiel kann der Globalbewegungs-Bestimmer 106 bestimmen, ob und/oder in welchem Umfang (z.B. Prozentsatz) ein Bild zum Hintergrund oder Vordergrund korrespondiert basierend auf zumindest einer Anzahl von Pixeln des Bildes, die mit einer Global-Bewegungs-Schätzung (z.B. einer Multiframe-Globalschätzung) ausgerichtet sind. Zum Beispiel kann der Globalbewegungs-Bestimmer 106 eine Anzahl von Pixeln des Bildes bestimmen, die mit der Global-Bewegungs-Schätzung ausgerichtet sind. Wo die Anzahl von Pixeln unter einem Schwellwert ist, kann der Globalbewegungs-Bestimmer 106 bestimmen, dass das Bild primär Vordergrund entspricht. Wo die Anzahl von Pixeln über einem Schwellwert ist, kann der Globalbewegungs-Bestimmer 106 bestimmen, dass das Bild primär Hintergrund entspricht. Der Pixeldaten-Bestimmer 110 kann die Interpretation der Ähnlichkeitslevel entsprechend an den Bildinhalt anpassen.
-
Nun Bezug nehmend auf 4 zeigt 4 einen Graphen 400, der Beispiele eines Globalbewegungsvektors 402 und Bewegungsvektoren 406 und 408 (z.B. Lokalbewegungsvektoren) zeigt, die mit dem Globalbewegungsvektor 402 verglichen werden können, in Übereinstimmung mit einigen Ausführungsbeispielen der vorliegenden Offenbarung. 4 kann verwendet werden, um verschiedene Faktoren zu beschreiben, die der Ähnlichkeitsevaluator 108 berücksichtigen kann, wenn er Ähnlichkeitslevel zwischen einer oder mehreren Schätzungen für Pixel und/oder Bildteile (z.B. für den Frame 102A und/oder Frame 102B), die unter Verwenden des Bewegungsschätzers 104 bestimmt werden, und einer oder mehreren Global-Bewegungs-Schätzungen, die unter Verwenden des Globalbewegungs-Bestimmer 106 bestimmt werden, evaluiert.
-
Der Ähnlichkeitsevaluator 108 kann ein Ähnlichkeitslevel basierend auf einer Vielfalt von potentiellen Faktoren evaluieren. In zumindest einem Ausführungsbeispiel kann ein Ähnlichkeitslevel für ein oder mehrere Bildteile zumindest auf einer Differenz zwischen einem oder mehreren Winkeln von einem oder mehreren Globalbewegungsvektoren und einem oder mehreren Winkeln von einem oder mehreren Bewegungsvektoren für den einen oder die mehreren Bildteile basiert werden. Zum Beispiel kann der Ähnlichkeitsevaluator 108 ein Ähnlichkeitslevel zwischen dem Globalbewegungsvektor 402 und dem Bewegungsvektor 404 für ein Bildteil evaluieren basierend zumindest auf einer Differenz zwischen einem Winkel 414 des Bewegungsvektors 404 und einem Winkel 412 des Globalbewegungsvektors 402. Ähnlich kann der Ähnlichkeitsevaluator 108 ein Ähnlichkeitslevel zwischen dem Globalbewegungsvektor 402 und dem Bewegungsvektor 406 für ein Bildteil evaluieren basierend zumindest auf einer Differenz zwischen einem Winkel 416 des Bewegungsvektors 406 und dem Winkel 412 des Globalbewegungsvektors 402. Ein Ähnlichkeitslevel kann steigen, wenn die Differenz sinkt.
-
Zusätzlich oder alternativ kann ein Ähnlichkeitslevel für einen oder mehrere Bildteile auf zumindest einer Differenz zwischen einem und mehreren Beträgen von einem oder mehreren Globalbewegungsvektoren und einem oder mehreren Beträgen von einem oder mehreren Bewegungsvektoren für den einen oder die mehreren Bildteile basieren. Zum Beispiel kann der Ähnlichkeitsevaluator 108 ein Ähnlichkeitslevel zwischen dem Globalbewegungsvektor 402 und dem Bewegungsvektor 404 für einen Bildteil evaluieren basierend zumindest auf einer Differenz zwischen dem Betrag des Bewegungsvektors 404 und dem Betrag des Globalbewegungsvektor 402. Ähnlich kann der Ähnlichkeitsevaluator 108 ein Ähnlichkeitslevel zwischen dem Globalbewegungsvektor 402 und dem Bewegungsvektor 406 für einen Bildteil evaluieren basierend zumindest auf einer Differenz zwischen dem Betrag des Bewegungsvektors 406 und dem Betrag des Globalbewegungsvektor 402. Ein Ähnlichkeitslevel kann steigen, wenn die Differenz sinkt.
-
In zumindest einem Ausführungsbeispiel kann der Ähnlichkeitsevaluator 108 die Differenz zwischen dem einen oder den mehreren Winkeln im Verhältnis zu dem einen oder mehreren Beträgen des einen oder der mehreren Globalbewegungsvektoren gewichten. Zum Beispiel kann der Winkeldifferenz des Bewegungsvektors 404 mehr Gewicht gegeben werden als der Winkeldifferenz des Bewegungsvektors 406, wenn der Bewegungsvektor 404 einen größeren Betrag hat.
-
In zumindest einem Ausführungsbeispiel kann der Ähnlichkeitsevaluator 108 einen oder mehrere Werte (z.B. einen Ähnlichkeitswert) berechnen, der/die einen oder mehrere Ähnlichkeitslevel für einen oder mehrere Bildteile repräsentiert oder zu diesen korrespondiert, unter Verwenden eines oder mehrerer Ähnlichkeitsmetriken. Eine Ähnlichkeitsmetrik kann einen oder mehrere Parameter umfassen, der/die einen oder mehrere Aspekte oder Merkmale eines Bildteils/en und/oder Bewegungsschätzung(en) repräsentiert. Beispiele der Aspekte umfassen Bewegungsschätzungsbetrag, Bewegungsvektorwinkel, usw.
-
Ein Beispiel eines Algorithmus zum Berechnen zumindest eines Teils einer Ähnlichkeitsmetrik wird gegeben. Jedoch sind viele Variationen des Algorithmus und der Ähnlichkeitsmetrik möglich. Global_Fx kann auf eine X-Komponente eines Globalbewegungsvektors (z.B. der Globalbewegungsvektor 402 für den Frame 102A) Bezug nehmen und Global_Fy kann auf eine Y-Komponente des Globalbewegungsvektors Bezug nehmen. Fx kann auf eine X-Komponente eines Bewegungsvektors für ein Bildteil Bezug nehmen (z.B. der Bewegungsvektor 404 für einen Pixel im Frame 102A) und Fy kann auf eine Y-Komponente des Bewegungsvektors Bezug nehmen.
-
Der Ähnlichkeitsevaluator 108 kann einen Betrag rGlobal des Globalbewegungsvektors berechnen unter Verwenden beispielsweise der Gleichung (1):
-
Der Ähnlichkeitsevaluator 108 kann einen Winkel thetaGlobal des Globalbewegungsvektors berechnen unter Verwenden beispielsweise der Gleichung (2):
-
Der Ähnlichkeitsevaluator 108 kann auch einen Betrag rPixel des Bewegungsvektors berechnen unter Verwenden beispielsweise der Gleichung (3):
-
Ferner kann der Ähnlichkeitsevaluator 108 einen Winkel thetaPixel des Bewegungsvektors berechnen unter Verwenden beispielsweise der Gleichung (4):
-
Wenn thetaGlobal kleiner als Null ist, kann der Ähnlichkeitsevaluator 108 den Winkel in einen positiven Winkel konvertieren unter Verwenden beispielsweise der Gleichung (5):
-
Ähnlich kann, wenn thetaPixel kleiner als Null ist, der Ähnlichkeitsevaluator 108 den Winkel in einen positiven Winkel konvertieren unter Verwenden beispielsweise der Gleichung (6):
-
Der Ähnlichkeitsevaluator 108 kann dann eine Differenz thetaDiff zwischen thetaGlobal und thetaPixel berechnen unter Verwenden beispielsweise der Gleichung (7):
-
Wenn thetaDiff größer als π ist, dann kann der Ähnlichkeitsevaluator 108 thetaDiff anpassen unter Verwenden beispielsweise der Gleichung (8):
-
Der Ähnlichkeitsevaluator 108 kann eine winkelbasierte Ähnlichkeitsmetrik WarpCostAngle berechnen unter Verwenden beispielsweise der Gleichung (9):
wobei α und β Konstanten sind, welche heuristisch abgeleitet werden können. Unter Verwenden der Gleichung (9) kann der Beitrag von thetaDiff proportional zu rGlobal sein.
-
Der Ähnlichkeitsevaluator 108 kann eine euklidische differenzbasierte Ähnlichkeitsmetrik EuclidDist berechnen unter Verwenden beispielsweise der Gleichung (10):
wobei delta_fx = Fx - Global_Fx and delta_fy = Fy - Global_Fy.
-
Der Ähnlichkeitsevaluator 108 kann dann eine Ähnlichkeitsmetrik WarpCost berechnen unter Verwenden beispielsweise der Gleichung (11):
-
Der Pixeldaten-Bestimmer 110 kann jede Kombination dieser Ähnlichkeitsmetriken verwenden, um Pixeldaten für Positionen in einem Frame, wie beispielsweise Frame 112, zu bestimmen. In zumindest einem Ausführungsbeispiel kann, wenn es eine Kollision zwischen mehreren Quellpixeln gibt, der Pixeldaten-Bestimmer 110 den Quellpixel mit höchsten WarpCost als den Pixel auswählen, der die Pixeldaten für den interpolierten und/oder extrapolierten Frame bereitstellt.
-
Der Pixeldaten-Bestimmer 110 kann Vorwärtsbewegungswerte einer Ähnlichkeitsmetrik für Bildteile im Frame 102A (z.B. unter Verwenden von Vorwärtsbewegungsschätzungen und einer Vorwärts-Global-Bewegungs-Schätzung) für Positionen im Frame 112 bestimmen. Zusätzlich oder alternativ kann der Pixeldaten-Bestimmer 110 Rückwärtsbewegungswerte der Ähnlichkeitsmetrik für Bildteile im Frame 102B (z.B. unter Verwenden von Rückwärtsbewegungsschätzungen und einer Rückwärts-Global-Bewegungs-Schätzung) für Positionen im Frame 112 bestimmen. In zumindest einem Ausführungsbeispiel kann der Pixeldaten-Bestimmer 110 zum Verwenden für die Positionen im Frame 112 aus den Bildteilen auswählen (und/oder die Bildpositionen gewichten) basierend zumindest auf korrespondierenden Vorwärtsbewegungswerten und Rückwärtsbewegungswerten. Zum Beispiel können ein Vorwärtsbewegungswert und ein Rückwärtsbewegungswert kombiniert (z.B. gemittelt) werden, um einen zusammengesetzten Wert zu berechnen, der verwendet wird, um ein Bildteil auszuwählen und/oder eine Gewichtung für ein Bildteil zu bestimmen. Als ein weiteres Beispiel können Vorwärtsbewegungswerte als ein Default verwendet werden und wo Vorwärtsbewegungswerte nicht verfügbar sind, können Rückwärtsbewegungswerte verwendet werden. In einem oder mehreren Ausführungsbeispielen kann der Ähnlichkeitsevaluator 108 nur Vorwärtsbewegungswerte oder nur Rückwärtsbewegungswerte verwenden. In zumindest einem Ausführungsbeispiel können Vorwärtsbewegungsschätzungen und eine Vorwärts-Global-Bewegungs-Schätzung mit Rückwärtsbewegungsschätzungen und einer Rückwärts-Global-Bewegungs-Schätzung kombiniert werden und der Ähnlichkeitsevaluator 108 kann die vereinigten Bewegungsschätzungen verwenden, um Werte für die Ähnlichkeitsmetrik(en) zu berechnen.
-
Nun bezugnehmend auf die 5-7 kann jeder Block von den Verfahren 500, 600 und 700 und anderer hierin beschriebene Verfahren einen Berechnungsprozess aufweisen, der unter Verwenden irgendeiner Kombination von Hardware, Firmware und/oder Software durchgeführt wird. Zum Beispiel können verschiedene Funktionen mittels eines Prozessors ausgeführt werden, der Instruktionen ausführt, die im Arbeitsspeicher gespeichert sind. Die Verfahren können auch als computerlesbare Instruktionen verkörpert werden, die auf einem Computerspeichermedium gespeichert sind. Das Verfahren kann auch mittels einer Standalone-Anwendung, einem Dienst oder gehosteten Dienst (Standalone oder in Kombination mit einem anderen gehosteten Dienst), oder einem Plug-In zu einem anderen Produkt, um einige zu nennen, bereitgestellt werden. Zusätzlich werden Verfahren mittels eines Beispiels, mit Bezug auf spezifische Figuren beschrieben. Jedoch können diese Verfahren zusätzlich oder alternativ mittels jedes einen Systems oder Kombination von Systemen ausgeführt werden, einschließlich, aber nicht darauf beschränkt, der hierin beschriebenen.
-
In zumindest einem Ausführungsbeispiel kann das System 100 eine oder mehrere Komponenten eines Inhalts-Streaming-Systems 800 von 8 umfassen. Zum Beispiel kann das System 100 in dem Anwendungsserver(n) 802 beinhaltet sein. Zusätzlich oder alternativ kann/können eine oder mehrere Komponenten des Inhalts-Streaming-Systems 800 von 8 einen oder mehrere Teile von irgendwelchen der vielfältigen hierin beschriebenen Verfahren durchführen.
-
5 ist ein Flussdiagramm, das ein Verfahren 500 zum Bestimmen von Pixeldaten für eine Position in einem Bild zeigt, basierend zumindest auf einem Bestimmen der Position für mehrere Bildteile, in Übereinstimmung mit einigen Ausführungsbeispielen der vorliegenden Offenbarung. Das Verfahren 500 umfasst bei Block B502 ein Bestimmen zumindest einer Position für einen oder mehrere erste Bildteile. Zum Beispiel kann der Pixeldaten-Bestimmer 110 die Position 232 für den Bildteil 230 bestimmen.
-
Bei Block B504 umfasst das Verfahren 500 ein Bestimmen der zumindest einen Position für einen oder mehrere zweite Bildteile. Zum Beispiel kann der Pixeldaten-Bestimmer 110 die Position 232 für den Bildteil 234 bestimmen.
-
Bei Block B506 umfasst das Verfahren 500 ein Evaluieren eines Levels an Ähnlichkeit zwischen Globalbewegung und Bewegung, die zu dem einem oder mehreren ersten Bildteilen korrespondiert. Zum Beispiel kann der Ähnlichkeitsevaluator 108 ein Ähnlichkeitslevel zwischen dem Globalbewegungsvektor 402, der zu Frame 102A korrespondiert, und dem Bewegungsvektor 404, der zu dem Bildteil 230 korrespondiert (z.B. wo der Bewegungsvektor 404 zu dem Bewegungsvektor 240 in 2 korrespondiert) evaluieren. In zumindest einem Ausführungsbeispiel umfasst das Verfahren 500 ferner ein Evaluieren eines Ähnlichkeitslevels zwischen Globalbewegung und Bewegung, die zu dem einen oder mehreren zweiten Bildteilen korrespondiert. Zum Beispiel kann der Ähnlichkeitsevaluator 108 ein Ähnlichkeitslevel zwischen dem Globalbewegungsvektor 402, der zu Frame 102A korrespondiert, und dem Bewegungsvektor 406, der zu dem Bildteil 234 korrespondiert (z.B. wo der Bewegungsvektor 406 zu dem Bewegungsvektor 242 in 2 korrespondiert) evaluieren.
-
Bei Block B508 umfasst Verfahren 500 ein Bestimmen von Pixeldaten für die zumindest eine Position basierend zumindest auf dem Ähnlichkeitslevel. Zum Beispiel kann der Pixeldaten-Bestimmer 110 Pixeldaten für die Position 232 bestimmen unter Verwenden des Bildteils 230 basierend zumindest auf dem Ähnlichkeitslevel, das zu dem Bewegungsvektor 404 korrespondiert. In zumindest einem Ausführungsbeispiel kann der Pixeldaten-Bestimmer 110 ferner die Pixeldaten für die Position 232 erzeugen unter Verwenden des Bildteils 230 basierend auf zumindest dem Ähnlichkeitslevel, der zu dem Bewegungsvektor 406 korrespondiert.
-
Nun Bezug nehmend auf 6 ist 6 ein Flussdiagramm, das ein Verfahren zum Bestimmen von Pixeldaten für eine Position in einem Bild zeigt basierend auf einem Identifizieren eines Konflikts in der Position zwischen mehreren Bildteilen, in Übereinstimmung mit einigen Ausführungsbeispielen der vorliegenden Offenbarung. Das Verfahren 600 umfasst bei Block B602 ein Identifizieren zumindest eines Konflikts in zumindest einer Position für einen oder mehrere erste Bildteile und einem oder mehreren zweiten Bildteilen. Zum Beispiel kann der Pixeldaten-Bestimmer 110 zumindest einen Konflikt in der Position 232 zwischen dem Bildteil 230 des Frame 102A im Video 102 und dem Bildteil 230 des Frame 102B im Video 102 identifizieren.
-
Bei Block B604 umfasst das Verfahren 600 ein Evaluieren eines Ähnlichkeitslevels zwischen Globalbewegung und Bewegung, die zu dem einem oder den mehreren ersten Bildteilen korrespondiert. Zum Beispiel kann der Ähnlichkeitsevaluator 108 ein Ähnlichkeitslevel zwischen dem Globalbewegungsvektor 402, der zu Frame 102A korrespondiert, und dem Bewegungsvektor 404, der zu dem Bildteil 230 korrespondiert, evaluieren. In zumindest einem Ausführungsbeispiel kann der Ähnlichkeitsevaluator 108 auch ein Ähnlichkeitslevel zwischen dem Globalbewegungsvektor 402, der zu dem Frame 102A korrespondiert, und dem Bewegungsvektor 406, der zu dem Bildteil 234 korrespondiert evaluieren.
-
Bei Block B608 umfasst Verfahren 600 ein Bestimmen von Pixeldaten für die zumindest eine Position basierend zumindest auf dem Ähnlichkeitslevel. Zum Beispiel kann der Pixeldaten-Bestimmer 110 Pixeldaten für die Position 232 bestimmen unter Verwenden des Bildteils 230 basierend zumindest auf dem Ähnlichkeitslevel für den Bewegungsvektor 404. In zumindest einem Ausführungsbeispiel kann der Pixeldaten-Bestimmer 110 ferner Pixeldaten für die Position 232 erzeugen unter Verwenden des Bildteils 230 basierend auf zumindest dem Ähnlichkeitslevel für den Bewegungsvektor 406.
-
Nun Bezug nehmend auf 7 ist 7 ein Flussdiagramm, das ein Verfahren 700 zum Bestimmen von Pixeldaten für eine Position in einem Bild zeigt basierend zumindest auf einem Ähnlichkeitslevel zwischen Globalbewegung und Bewegung, die zu einem oder mehreren Bildteilen korrespondiert, in Übereinstimmung mit einigen Ausführungsbeispielen der vorliegenden Offenbarung. Das Verfahren 700 umfasst bei Block B702 ein Evaluieren eines Ähnlichkeitslevels zwischen Globalbewegung und Bewegung, die zu einem oder mehreren Bildteilen korrespondiert. Zum Beispiel kann der Ähnlichkeitsevaluator 108 ein Ähnlichkeitslevel zwischen dem Globalbewegungsvektor 402, der zu Frame 102A korrespondiert, und dem Bewegungsvektor 404, der zu Bildteil 230 korrespondiert, evaluieren.
-
Bei Block B704 umfasst das Verfahren 700 ein Bestimmen von Pixeldaten für zumindest eine Position basierend auf dem Ähnlichkeitslevel. Zum Beispiel kann der Pixeldaten-Bestimmer 110 Pixeldaten für die Position 232 erzeugen unter Verwenden des Bildteils 230 basierend zumindest auf dem Ähnlichkeitslevel.
-
BEISPIELHAFTES INHALTS-STREAMING-SYSTEM
-
Nun Bezug nehmend auf 8 ist 8 ein beispielhaftes Systemdiagramm für ein Inhalts-Streaming-System 800, in Übereinstimmung mit einigen Ausführungsbeispielen der vorliegenden Offenbarung. 8 weist einen/mehrere Anwendungsserver 802 (der/die ähnliche(n) Komponenten, Merkmale und/oder Funktionalität wie die beispielhafte Rechenvorrichtung 900 von 9 umfassen kann/können), Client-Vorrichtung(en) 804 (die ähnliche Komponenten, Merkmale und/oder Funktionalität wie die beispielhafte Rechenvorrichtung 900 von 9 umfassen kann/können) und Netzwerk(e) 806 auf (das/die ähnlich wie das/die Netzwerk(e), das/die hierin beschrieben ist/sind, sein kann/können). In einigen Ausführungsbeispielen der vorliegenden Offenbarung kann das System 800 implementiert sein. Die Anwendungssitzung kann zu einer Spiele-Streaming-Anwendung (z.B. NVIDIA GeFORCE NOW), einer remote Desktop-Anwendung, einer Simulations-Anwendung (z.B. autonome oder halbautonome Fahrzeugsimulation), rechnergestütztes Konstruieren- (computer aided design, CAD)-Anwendungen, virtuelle Realitäts- (VR)- und/oder Erweiterte Realitäts- (AR)-Streaming-Anwendungen und/oder gemischte Realitäts-(MR)-Streaming-Anwendungen, Deep-Learning-Anwendungen und/oder anderen Anwendungstypen korrespondieren.
-
In dem System 800 mag/mögen, für eine Anwendungssitzung, die Client-Vorrichtung(en) 804 nur Eingabedaten in Reaktion auf Eingaben in die EingabeVorrichtung(en) empfangen, die Eingabedaten zu dem/den Anwendungsserver(n) 802 übermitteln, kodierte Anzeigedaten von dem/den Anwendungsserver(n) 802 empfangen und die Anzeigedaten auf der Anzeige 824 anzeigen. Als solches wird das rechenmäßig intensivere Berechnen und Prozessieren auf den/die Anwendungsserver 802 ausgelagert (z.B. wird Rendern - insbesondere Ray- oder Pfad-Tracing - für graphische Ausgabe der Anwendungssitzung mittels der GPU(s) des/der Spieleserver 802 ausgeführt). Mit anderen Worten wird die Anwendungssitzung von dem/den Anwendungsserver(n) 802 zu der/den Client-Vorrichtung(en) 804 gestreamt, wodurch die Vorgaben für die Client-Vorrichtung(en) 804 fürs Graphikprozessieren und Rendern reduziert werden.
-
Zum Beispiel kann, bezüglich einer Instanziierung einer Anwendungssitzung, eine Client-Vorrichtung 804 einen Frame der Anwendungssitzung auf der Anzeige 824 anzeigen, basierend auf Empfangen der Anzeigedaten von dem/den Anwendungsserver(n) 802. Die Client-Vorrichtung 804 kann eine Eingabe in eine der Eingabe-Vorrichtung(en) empfangen und in Reaktion Eingabedaten erzeugen. Die Client-Vorrichtung 804 kann die Eingabedaten via die Kommunikationsschnittstelle 820 und über das/die Netzwerk(e) 806 (z.B. das Internet) zu dem/den Anwendungsserver(n) 802 übermitteln, und der/die Anwendungsserver 802 kann/können die Eingabedaten via die Kommunikations-Schnittstelle 818 empfangen. Die CPU(s) kann/können die Eingabedaten empfangen, die Eingabedaten prozessieren und Daten zu der/den GPU(s) übermitteln, was die GPU(s) veranlasst, ein Rendering der Anwendungssitzung zu erzeugen. Zum Beispiel können die Eingabedaten für eine Bewegung von einem Charakter des Benutzers in einer Spielesitzung in einer Spieleanwendung, einem Abfeuern einer Waffe, Nachladen, Abgeben eines Balles, Drehen eines Fahrzeugs, usw. repräsentativ sein. Die Rendering-Komponente 812 kann die Anwendungssitzung (z.B. repräsentativ für das Ergebnis der Eingabedaten) rendern und die Render-Erfassungskomponente 814 kann das Rendering der Anwendungssitzung als Anzeigedaten (z.B. als Bilddaten, die den gerenderten Frame der Anwendungssitzung erfassen) erfassen. Das Rendering der Anwendungssitzung kann ray- oder pfad-traced Beleuchtungs- und/oder Schatteneffekte umfassen, die unter Verwenden von einer oder mehreren Parallel-Prozessor-Einheiten - wie beispielsweise GPUs, die ferner die Verwendung von einen oder mehreren dedizierten Hardwarebeschleunigern oder Prozessorkernen einsetzen können, um Ray- oder Pfad-Tracing-Techniken durchzuführen - des/der Anwendungsserver(s) 802 berechnet werden. In einigen Ausführungsbeispielen können eine oder mehrere virtuelle Maschinen (VMs) - z.B. welche eine oder mehrere virtuelle Komponenten, wie beispielweise vGPUs, vCPUs, usw., umfassen - mittels des/der Anwendungsserver 802 verwendet werden, um die Anwendungssitzungen zu unterstützen. Der Kodierer 816 kann dann die Anzeigedaten kodieren, um kodierte Anzeigedaten zu erzeugen, und die kodierten Anzeigedaten können über das/die Netzwerk(e) 808 via die Kommunikationsschnittstelle 818 zu der Client-Vorrichtung 804 übermittelt werden. Die Client-Vorrichtung 804 kann die kodierten Anzeigedaten via die Kommunikationsschnittstelle 820 empfangen und der Dekodierer 822 kann die kodierten Anzeigedaten dekodieren, um die Anzeigedaten zu erzeugen. Die Client-Vorrichtung 804 kann dann die Anzeigedaten via die Anzeige 824 anzeigen.
-
Die hierin beschriebenen Systeme und Verfahren können für eine Vielfalt von Zwecken verwendet werden, im Wege eines Beispiels und ohne Einschränkung, Maschinensteuerung, Maschinenantrieb, Maschinenfahren, Synthetik-Daten-Erzeugung, Modelltraining, Wahrnehmung, Erweiterte-Realität-, Virtuelle-Realität-, Gemischte-Realität-, Robotik-, Sicherheits- und Beobachtungs-, Simulation und digitale Zwillingsbildung, autonome oder halbautonome Maschinenanwendungen, Deep-Learning, Umgebungssimulation, Datencenterverarbeitung, Kommunikations-AI, Lichtübertragungssimulation (z.B. Raytracing, Pfadtracing, usw.), kollaborative Inhaltserzeugung für 3D-Aktiva (assets), Cloudberechnung und/oder irgendwelchen andere geeignete Anwendungen.
-
Offenbarte Ausführungsbeispiele können in einer Vielfalt von verschiedenen Systemen wie zum Beispiel Automotive-Systemen z.B. einem Steuerungssystem für eine autonome oder halbautonome Maschine, ein Wahrnehmungssystem für eine autonome oder halbautonome Maschine), Systeme, die unter Verwendung einer Robotik, Luft-Systemen, mediale System, Boots-Systemen, smarter Raumüberwachung, Systemen zum Durchführen von Deep-Learning-Operationen, Systemen zum Durchführen von Simulationsoperationen, Systemen zum Durchführen von digitalen Zwillings-Operationen, Systemen, die unter Verwenden von Edge-Vorrichtungen implementiert werden, Systemen, die eine oder mehrere virtuelle Maschinen (VMs) enthalten, Systeme, die Synthetik-Daten-Erzeugungs-Operationen, Systemen, die zumindest teilweise in einem Datenzentrum implementiert werden, Systeme zum Durchführen von Konversations-Al-Operationen, Systemen zum Durchführen von Lichtübertragungs-Simulation, Systemen zum Durchführen kollaborativer Inhalts-Erzeugung für 3D-Aktiva, Systemen, die unter zumindest teilweiser Verwendung von Cloudberechnungsressourcen implementiert sind und/oder andere Typen vom Systemen enthalten sein.
-
BEISPIELHAFTE RECHENVORRICHTUNG
-
9 ist ein Blockdiagramm von einem beispielhaften Rechengerät(en) 900, das/die zur Verwendung bei der Implementierung einiger Ausführungsbeispiele der vorliegenden Offenbarung geeignet ist/sind. Rechengerät 900 kann ein Interconnect-System 902 umfassen, das direkt oder indirekt die folgenden Geräte koppelt: Arbeitsspeicher 904, eine oder mehrere Zentral-Prozessor-Einheiten (CPUs) 906, eine oder mehrere Grafik-Prozessor-Einheiten (GPUs) 908, eine Kommunikationsschnittstelle 910, Eingabe-/Ausgabe-(EZA)-Ports 912, Eingabe-/Ausgabekomponenten 914, eine Leistungsversorgung 916 und eine oder mehrere Präsentationskomponenten 918 (z.B. Anzeige(n)), und eine oder mehrere Logikeinheiten 920. In zumindest einem Ausführungsbeispiel kann das/die Rechengeräte) 900 eine oder mehrere virtuelle Maschinen (VMs) aufweisen und/oder irgendwelche von dessen Komponenten können virtuelle Komponenten (z.B. virtuelle Hardware-Komponenten) aufweisen. Als nicht einschränkende Beispiele können eine oder mehrere der GPUs 908 eine oder mehrere vGPUs aufweisen, eine oder mehrere der CPUs 906 können eine oder mehrere vCPUs aufweisen und/oder eine oder mehrere der Logik-Einheiten 920 können eine oder mehrere virtuelle Logik-Einheiten aufweisen. Als solches kann/können ein Rechengerät(e) 900 diskrete Komponenten (z.B. eine vollständige GPU, die dem Rechengerät 900 fest zugeordnet ist), virtuelle Komponenten (z.B. ein Teil einer GPU, die dem Rechengerät 900 fest zugeordnet ist), oder eine Kombination davon umfassen.
-
Obwohl die verschiedenen Blöcke in 9 als über das Interconnect-System 902 mit Leitungen verbunden dargestellt sind, ist dies nicht einschränkend zu verstehen und dient nur der Übersichtlichkeit. In einigen Ausführungsbeispielen kann z.B. eine Präsentationskomponente 918, wie beispielsweise ein Anzeigegerät, als eine E/A-Komponente 914 betrachtet werden (z.B. wenn die Anzeige ein Touchscreen ist). Als ein anderes Beispiel können die CPUs 906 und/oder GPUs 908 Arbeitsspeicher umfassen (z.B. kann der Arbeitsspeicher 904 ein Speichergerät zusätzlich zum Arbeitsspeicher der GPUs 908, der CPUs 906 und/oder anderer Komponenten repräsentieren). Mit anderen Worten ist das Rechengerät von 9 lediglich illustrativ. Es wird nicht zwischen solchen Kategorien wie „Workstation“, „Server“, „Laptop“, „Desktop“, „Tablet“, „Client-Vorrichtung“, „mobiles Gerät“, „Handheld-Gerät“, „Spielekonsole“, „elektronische Steuereinheit (ECU)“, „virtuelles-Realitäts-System“ und/oder anderen Geräte- oder Systemtypen unterschieden, da alle als im Umfang der Rechenvorrichtung von 9 liegend in Betracht gezogen werden.
-
Das Interconnect-System 902 kann einen oder mehrere Links oder Busse repräsentieren, wie z.B. einen Adressbus, einen Datenbus, einen Steuerbus oder eine Kombination davon. Das Interconnect-System 902 kann einen oder mehrere Bus- oder Linktypen umfassen, wie beispielsweise einen ISA-Bus (Industry Standard Architecture), einen EISA-Bus (Extended Industry Standard Architecture), einen VESA-Bus (Video Electronics Standards Association), einen PCI-Bus (Peripheral Component Interconnect), einen PCIe-Bus (Peripheral Component Interconnect express), und/oder einen anderen Typ von Bus oder Link. In einigen Ausführungsbeispielen gibt es direkte Verbindungen zwischen Komponenten. Als ein Beispiel kann die CPU 906 direkt an den Arbeitsspeicher 904 verbunden sein. Ferner kann die CPU 906 direkt an die GPU 908 verbunden sein. Wo es eine direkte, oder point-to-point Verbindung zwischen Komponenten gibt, kann das Interconnect-System 902 einen PCIe Link umfassen, um die Verbindung auszuführen. In diesen Beispielen braucht ein PCI Bus nicht in dem Rechengerät 900 enthalten zu sein.
-
Der Arbeitsspeicher 904 kann jedes von einer Vielfalt von computerlesbaren Medien umfassen. Bei den computerlesbaren Medien kann es sich um alle verfügbaren Medien handeln, auf die das Rechengerät 900 zugreifen kann. Die computerlesbaren Medien können sowohl flüchtige als auch nicht-flüchtige Medien sowie entfernbare und nicht-entfernbare Medien umfassen. Beispielhaft und nicht einschränkend können die computerlesbaren Medien Computer-Speichermedien und Kommunikationsmedien umfassen.
-
Die Computer-Speichermedien können sowohl flüchtige als auch nicht-flüchtige Medien und/oder entfernbare und nicht entfernbare Medien umfassen, die in einem beliebigen Verfahren oder einer beliebigen Technologie zur Speicherung von Informationen, wie z.B. computerlesbare Instruktionen, Datenstrukturen, Programmmodulen und/oder andere Datentypen, implementiert sind. Zum Beispiel kann der Arbeitsspeicher 904 computerlesbare Anweisungen speichern (z. B., die ein Programm(e) und/oder ein oder mehrere Programmelemente darstellen, wie z.B. ein Betriebssystem). Computerspeichermedien können RAM, ROM, EEPROM, Flash-Speicher oder eine andere Memorytechnologie, CD-ROM, Digital Versatile Disks (DVD) oder andere optische Plattenspeicher, Magnetkassetten, Magnetbänder, Magnetplattenspeicher oder andere magnetische Speichervorrichtungen oder jedes andere Medium, das zur Speicherung der gewünschten Informationen verwendet werden kann und auf die das Rechengerät 900 zugreifen kann, umfassen, sind aber nicht darauf beschränkt. Wie hierin verwendet, umfasst „Computer-Speichermedien“ nicht Signale per se.
-
Die Computerspeichermedien können computerlesbare Instruktionen, Datenstrukturen, Programmmodule und/oder andere Datentypen in einem modulierten Datensignal verkörpern, wie beispielsweise einer Trägerwelle oder einem anderen Transportmechanismus, und umfassen alle Informations-Übermittlungs-Medien. Der Term „moduliertes Datensignal“ kann sich auf ein Signal beziehen, das ein oder mehrere seiner Charakteristiken in solch einer Weise gesetzt oder geändert hat, um Information in das Signal zu kodieren. Auf dem Wege eines Beispiels und nicht Beschränkung können die Computerspeichermedien drahtgebundene Medien, wie ein drahtgebundenes Netzwerk oder eine Direkt-Draht-Verbindung, und drahtlose Medien, wie akustische, RF, Infrarot und andere drahtlose Medien, umfassen. Kombinationen von allen oben genannten sollen ebenfalls innerhalb des Umfangs von computerlesbaren Medien umfasst sein.
-
Die CPU(s) 906 kann/können so konfiguriert sein, dass sie zumindest einige der computerlesbaren Instruktionen ausführt/ausführen, um eine oder mehrere Komponenten des Rechengeräts 900 zu steuern, um eines oder mehrere der hier beschriebenen Verfahren und/oder Prozesse durchzuführen. Die CPU(s) 906 kann/können jeweils einen oder mehrere Kerne umfassen (z.B. einen, zwei, vier, acht, achtundzwanzig, zweiundsiebzig, usw.), die in der Lage sind, eine Vielzahl von Software-Threads simultan zu verarbeiten. Die CPU(s) 906 kann/können jede Art von Prozessor umfassen und je nach Art des implementierten Rechengeräts 900 unterschiedliche Arten von Prozessoren umfassen (z.B. Prozessoren mit weniger Kernen für mobile Geräte und Prozessoren mit mehr Kernen für Server). Zum Beispiel kann, je nach Art des Rechengeräts 900, der Prozessor ein ARM-Prozessor (Advanced RISC Machines Processor), der unter Verwenden eines reduzierten Befehlssatzes (RISC) implementiert ist, oder ein x86-Prozessor sein, der unter Verwenden eines komplexen Befehlssatzes (Complex Instruction Set Computing, CISC) implementiert ist. Das Rechengerät 900 kann eine oder mehrere CPUs 906 umfassen, zusätzlich zu einem oder mehreren Mikroprozessoren oder Zusatz-Coprozessoren, wie z.B. mathematischen Coprozessoren.
-
Zusätzlich oder alternativ zu der/den CPU(s) 906 kann/können die GPU(s) 908 so konfiguriert sein, dass sie zumindest einige der computerlesbaren Instruktionen ausführt/ausführen, um eine oder mehrere Komponenten des Rechengeräts 900 zu steuern, um eines oder mehrere der hierin beschriebenen Verfahren und/oder Prozesse durchzuführen. Eine oder mehrere der GPU(s) 908 kann/können eine integrierte GPU (z.B. mit einem oder mehreren der CPU(s) 906 sein und/oder eine oder mehrere der GPU(s) 909 kann/können eine diskrete GPU sein. In Ausführungsbeispielen kann/können eine oder mehrere der GPU(s) 908 ein Coprozessor von einer oder mehreren der CPU(s) 906 sein. Die GPU(s) 908 kann/können von dem Rechengerät 900 zum Rendern von Grafiken (z.B. 3D-Grafiken) verwendet werden oder um Universalberechnungen durchzuführen. Zum Beispiel kann/können die GPU(s) 908 zum Universalberechnen auf GPU(s) (General-Purpose computing on GPUs, GPGPU) verwendet werden. Die GPU(s) 908 kann/können hunderte oder tausende von Kernen umfassen, die in der Lage sind, hunderte oder tausende von Software-Threads simultan zu verarbeiten. Die GPU(s) 908 kann/können in Reaktion auf Rendering-Befehle (z.B. Rendering-Befehle von der/den CPU(s) 906, die über eine Host-Schnittstelle empfangen werden) Pixeldaten für Ausgabebilder erzeugen. Die GPU(s) 908 kann/können einen Grafikarbeitsspeicher, wie beispielsweise Anzeigearbeitsspeicher, zum Speichern von Pixeldaten oder irgendwelchen anderen geeigneten Daten, wie beispielsweise GPGPU Daten, umfassen. Der Anzeigearbeitsspeicher kann als Teil des Arbeitsspeichers 904 eingefügt sein. Die GPU(s) 908 kann/können zwei oder mehr GPUs umfassen, die parallel arbeiten (z.B. über eine Verbindung). Die Verbindung kann die GPUs direkt (z.B. unter Verwenden von NVLINK) verbinden oder kann die GPUs durch einen Switch (z.B. unter Verwenden von NVSwitch) verbinden. Wenn zusammen kombiniert, kann jede GPU 908 Pixeldaten oder GPGPU Daten für verschiedene Teile einer Ausgabe oder für verschiedene Ausgaben erzeugen (z.B. eine erste GPU für ein erstes Bild und eine zweite GPU für ein zweites Bild). Jede GPU kann ihren eigenen Speicher umfassen oder kann Arbeitsspeicher gemeinsam mit anderen GPUs nutzen.
-
Zusätzlich oder alternativ zu der/den CPU(s) 906 und/oder der/den (GPU(s) 908 kann/können die Logikeinheit(en) 920 so konfiguriert sein, dass sie zumindest einige der computerlesbaren Instruktionen ausführt/ausführen, um eine oder mehrere Komponenten des Rechengeräts 900 zu steuern, um eines oder mehrere der hierin beschriebenen Verfahren und/oder Prozesse durchzuführen. In Ausführungsbeispielen kann/können die CPU(s) 906, die GPU(s) 908 und/oder die Logikeinheit(en) 920 einzeln oder zusammen jede Kombination der Verfahren, Prozesse und/oder Teile davon ausführen. Eine oder mehrere der Logikeinheiten 920 kann/können Teil von und/oder in eine oder mehrere der CPU(s) 906 und/oder der GPU(s) 908 integriert sein und/oder eine oder mehrere der Logikeinheiten 920 kann/können diskrete Komponenten oder auf andere Weise extern zu der/den CPU(s) 906 und/oder der/den GPU(s) 908 sein. In Ausführungsbeispielen kann/können eine oder mehrere der Logikeinheiten 920 ein Coprozessor von einer oder mehreren der CPU(s) 906 und/oder einer oder mehreren der GPU(s) 908 sein.
-
Beispiele für die Logikeinheit(en) 920 umfassen einen oder mehrere Prozessorkerne und/oder Komponenten davon, wie beispielsweise Daten-Prozessor-Kerne (DPUs), Tensorkerne (TCs), Tensor Processing Units (TPUs), Pixel Visual Cores (PVCs), Vision Processing Units (VPUs), Graphikprozessorcluster (GPCs), Texture Processing Clusters (TPCs), Streaming Multiprocessors (SMs), Baum-Traversierungseinheiten (Tree Traversal Units, TTUs), künstliche Intelligenz Beschleuniger (Artificial Intelligence Accelerators, AlAs), Deep Learning Beschleuniger (DLAs), Arithmetisch-logische Einheiten (ALUs), Anwendungsspezifische integrierte Schaltungen (ASICs), Gleitkommaeinheiten (FPUs), Eingabe/Ausgabe-(E/A)-Elemente, Peripheral Component Interconnect (PCI), Peripheral Component Interconnect Express (PCIe) Elemente, und/oder ähnliche.
-
Die Kommunikationsschnittstelle 910 kann einen oder mehrere Empfänger, Sender und/oder Transceiver umfassen, die es dem Rechengerät 900 ermöglichen, mit anderen Rechengeräten über ein elektronisches Kommunikationsnetzwerk zu kommunizieren, einschließlich drahtgebundener und/oder drahtloser Kommunikationen. Die Kommunikationsschnittstelle 910 kann Komponenten und Funktionalität umfassen, um Kommunikation über jedes von einer Anzahl von verschiedenen Netzwerken zu ermöglichen, wie beispielsweise drahtlose Netzwerke (z.B. Wi-Fi, Z-Wave, Bluetooth, Bluetooth LE, ZigBee, usw.), drahtgebundene Netzwerke (z.B. Kommunikation über Ethernet oder InfiniBand), Weitverkehrsnetzwerke mit geringer Leistung (z.B. LoRaWAN, SigFox, usw.) und/oder das Internet. In einem oder mehreren Ausführungsbeispielen kann/können Logikeinheit(en) 920 und/oder Kommunikationsschnittstelle 910 eine oder mehrere Daten-Prozessor-Einheiten (DPUs) umfassen, um Daten, die über ein Netzwerk und/oder durch Interconnect-System 902 empfangen werden, direkt an (z.B. einen Arbeitsspeicher von) eine oder mehrere GPU(s) 908 zu übermitteln.
-
Die E/A-Anschlüsse 912 können es ermöglichen, dass das Rechengerät 900 mit anderen Geräten logisch gekoppelt ist, einschließlich der E/A-Komponenten 914, der Präsentationskomponente(n) 918 und/oder anderer Komponenten, von denen einige in das Rechengerät 900 eingebaut (z.B. integriert in) sein können. Beispielhafte E/A-Komponenten 914 umfassen ein Mikrophon, eine Maus, Tastatur, einen Joystick, ein Gamepad, eine Spielsteuerung, Satellitenschüssel, einen Scanner, einen Drucker, ein drahtloses Gerät, usw. Die E/A-Komponenten 914 können eine natürliche Benutzerschnittstelle (NUI) bereitstellen, die Luftgesten, Stimme oder andere physiologische Eingaben verarbeitet, die von einem Benutzer erzeugt werden. In einigen Instanzen können Eingaben zur weiteren Verarbeitung an ein geeignetes Netzwerkelement übermittelt werden. Eine NUI kann eine beliebige Kombination aus Spracherkennung, Stifterkennung, Gesichtserkennung, biometrischer Erkennung, Gestenerkennung sowohl auf dem Bildschirm als auch neben dem Bildschirm, Luftgesten, Kopf- und Augenverfolgung und Berührungserkennung (wie unten in größeren Detail beschrieben) implementieren, was mit einer Anzeige des Rechengeräts 900 assoziiert ist. Das Rechengerät 900 kann Tiefenkameras, wie z.B. stereoskopische Kamerasysteme, Infrarotkamerasysteme, RGB-Kamerasysteme, Touchscreen-Technologie und Kombinationen davon, zur Gestendetektion und -erkennung umfassen. Zusätzlich kann das Rechengerät 900 Beschleunigungsmesser oder Gyroskope (z.B. als Teil einer Trägheitsmesseinheit (IMU)) umfassen, die Erkennung von Bewegung ermöglichen. In einigen Beispielen kann die Ausgabe der Beschleunigungsmesser oder Gyroskope von dem Rechengerät 900 verwendet werden, um immersive Augmented Reality oder virtuelle Realität zu rendern.
-
Die Leistungsversorgung 916 kann eine fest verdrahtete Stromversorgung, eine Batteriestromversorgung oder eine Kombination davon umfassen. Die Stromversorgung 916 kann das Rechengerät 900 mit Strom versorgen, um die Komponenten des Rechengeräts 900 zu befähigen, zu operieren.
-
Die Präsentationskomponente(n) 918 kann/können eine Anzeige (z.B. einen Monitor, einen Touchscreen, einen Fernsehbildschirm, ein Heads-up-Display (HUD), andere Anzeigetypen oder eine Kombination davon), Lautsprecher und/oder andere Präsentationskomponenten umfassen. Die Präsentationskomponente(n) 918 kann/können Daten von anderen Komponenten (z.B. der/den GPU(s) 908, der/den CPU(s) 906, DPUs, usw.) empfangen und die Daten ausgeben (z.B. als ein Bild, Video, Ton, usw.).
-
BEISPIELHAFTES DATENCENTER
-
10 illustriert ein beispielhaftes Datencenter 1000, das zumindest in einem Ausführungsbeispielen der vorliegenden Offenbarung verwendet werden kann. Das Datencenter 1000 kann eine Datencenter-Infrastrukturschicht 1010, eine Framework-Schicht 1020, eine Softwareschicht 1030 und/oder eine Anwendungsschicht 1040 umfassen.
-
Wie in 10 gezeigt, kann die Datencenter-Infrastrukturschicht 1010 einen Ressourcen-Orchestrator 1012, gruppierte Berechnungsressourcen 1014 und Knoten-Berechnungsressourcen („Knoten C.R.s“) 1016(1)-1016(N), wobei „N“ eine ganze positive Integerzahl repräsentiert, umfassen. In zumindest einem Ausführungsbeispiel können die Knoten C.R.s 1016(1)-1016(N), sind aber nicht darauf beschränkt, jede Anzahl von Zentral-Prozessor-Einheiten (CPUs) oder andere Prozessoren (einschließlich DPUs, Beschleunigern, Field Programmable Gate Arrays (FPGAs), Graphikprozessoren oder Graphikprozessoreinheiten (GPUs), usw.), Memoryvorrichtungen (z.B. dynamische Festwertspeicher), Speichervorrichtungen (z.B. Festkörper- oder Plattenlaufwerke), Netzwerk Eingabe/Ausgabe-(NW E/A)-Vorrichtungen, Netzwerkswitches, virtuelle Maschinen (VMs), Powermodule, und/oder Kühlmodule, usw. umfassen. In einigen Ausführungsbeispielen können ein oder mehrere Knoten C.R.s von Knoten C.R.s 1016(1)-1016(N) zu einem Server korrespondieren, der eine oder mehrere der oben genannten Rechenressourcen hat. Zusätzlich können in einigen Ausführungsbeispielen die Knoten C.R.s 1016(1)-1016(N) eine oder mehrere virtuelle Komponenten, wie beispielsweise vGPUs, vCPUs und/oder ähnliche umfassen und/oder einer oder mehrere der Knoten C.R.s 1016(1)-1016(N) können zu einer virtuellen Maschine (VM) korrespondieren.
-
In zumindest einem Ausführungsbeispiel können gruppierte Rechenressourcen 1014 separate Gruppierungen von Knoten C.R.s 1016 umfassen, die innerhalb eines oder mehrerer Racks (nicht gezeigt) untergebracht sind, oder viele Racks, die in Datencentern an verschiedenen geographischen Positionen (auch nicht gezeigt) untergebracht sind. Separate Gruppierungen von Knoten C.R.s 1016 innerhalb gruppierter Rechenressourcen 1014 können gruppierte Rechen-, Netzwerk-, Arbeitsspeicher-, oder Speicher-Ressourcen einschließen, die konfiguriert oder allokiert sein können, um eine oder mehrere Arbeitslasten zu unterstützen. In zumindest einem Ausführungsbeispiel können mehrere Knoten C.R.s 1016 einschließlich CPUs, GPUs, DPUs und/oder anderer Prozessoren innerhalb eines oder mehrerer Racks gruppiert sein, um Rechenressourcen bereitzustellen, um eine oder mehrere Arbeitslasten zu unterstützen. Das eine oder die mehrere Racks können auch jede Anzahl von Powermodulen, Kühlmodulen und/oder Netzwerk-Switches in jeder Kombination umfassen.
-
Der Ressourcen-Orchestrator 1012 kann einen oder mehrere Knoten C.R.s 1016(1)-1016(N) und/oder gruppierte Rechenressourcen 1014 konfigurieren oder anderweitig steuern. In zumindest einem Ausführungsbeispiel kann Ressourcen-Orchestrator 1012 eine Software-Design-Infrastruktur-(SDI)-Management-Entität für das Datencenter 1000 umfassen. Der Ressourcen-Orchestrator 1012 kann Hardware, Software oder irgendeine Kombination davon umfassen.
-
In zumindest einem Ausführungsbeispiel, wie in 10 gezeigt, kann Framework-Schicht 1020 einen Job-Scheduler 1028, einen Konfigurationsmanager 1034, einen Ressourcenmanager 1036 und/oder ein verteiltes File-System 1038 umfassen. Die Framework-Schicht 1020 kann ein Framework umfassen, um Software 1032 von Softwareschicht 1030 und/oder eine oder mehrere Anwendung(en) 1042 von Anwendungsschicht 1040 zu unterstützen. Die Software 1032 oder Anwendung(en) 1042 können jeweils web-basierte Dienstsoftware oder Anwendungen umfassen, wie beispielsweise diejenigen, die von Amazon Web Services, Google Cloud und Microsoft Azure bereitgestellt werden. Die Framework-Schicht 1020 kann, ist aber nicht darauf beschränkt, ein Typ von Freier- und Open-Source Software Web-Anwendungs-Framework sein, wie zum Beispiel Apache Spark™ (nachfolgend „Spark“), das ein verteiltes File-System 1038 für Datenprozessierung in großen Maßstab (z.B. „Big Data“) verwenden kann. In zumindest einem Ausführungsbeispiel kann Job-Scheduler 1028 einen Spark-Treiber umfassen, um Scheduling von Arbeitslasten zu ermöglichen, unterstützt mittels verschiedener Schichten von Datencenter 1000. Der Konfigurationsmanager 1034 kann fähig sein, verschiedene Schichten, wie beispielsweise Software-Schicht 1030 und Framework-Schicht 1020, einschließlich Spark und verteiltem File-System 1038 zum Unterstützen von Datenprozessierung großen Maßstabs, zu konfigurieren. Der Ressourcenmanager 1036 kann fähig sein, geclusterte oder gruppierte Rechenressourcen zu managen, die zum Unterstützen vom verteiltem File-System 1038 und Job-Scheduler 1028 zugeordnet oder dafür allokiert sind. In zumindest einem Ausführungsbeispiel können geclusterte oder gruppierte Rechenressourcen gruppierte Rechenressource 1014 bei der Datencenter-Infrastrukturschicht 1010 umfassen. Der Ressourcenmanager 1036 kann mit Ressourcen-Orchestrator 1012 koordinieren, um diese zugeordneten oder allokierten Rechenressourcen zu managen.
-
In zumindest einem Ausführungsbeispiel kann Software 1032, die in Softwareschicht 1030 enthalten ist, Software enthalten, die von zumindest Teilen von Knoten C.R.s 1016(1)-1016(N), gruppierten Berechnungsressourcen 1014 und/oder verteilten File-System 1038 von Framework-Schicht 1020 verwendet wird. Ein oder mehrere Typen von Software können, aber sind nicht darauf beschränkt, Internet Webpage Suchsoftware, E-Mail Virus-Scansoftware, Datenbank-Software und Streaming-Video-Inhalt-Software umfassen.
-
In zumindest einem Ausführungsbeispiel kann/können Anwendung(en) 1042, die in Anwendungs-Schicht 1040 enthalten sind, ein oder mehrere Typen von Anwendungen umfassen, die durch zumindest Teile von Knoten C.R.s 1016(1)-1016(N), gruppierten Rechenressourcen 1014 und/oder verteiltes File-System 1038 von Framework-Schicht 1020 verwendet werden. Ein oder mehrere Typen von Anwendungen können umfassen, sind aber nicht darauf beschränkt, jede Anzahl von einer genomischen Anwendung, einem kognitiven Berechnen (cognitive compute) und einer maschinenlern-Anwendung, einschließlich Trainings- oder Inferenzier-Software, maschinenlern-Framework-Software (z.B. PyTorch, TensorFlow, Caffe, usw.) und/oder andere maschinenlern-Anwendungen, die in Verbindung mit einem oder mehreren Ausführungsbeispielen verwendet werden.
-
In zumindest einem Ausführungsbeispiel kann jeder von Konfigurationsmanager 1034, Ressourcenmanager 1036 und Ressourcen-Orchestrator 1012 jede Anzahl und Typ von selbstmodifizierenden Aktionen implementieren, basierend auf jedem Umfang und Typ von Daten, die in jeder technisch realisierbare Weise erlangt werden. Selbstmodifizierende Aktionen können einen Datenbank-Operator vom Datencenter 1000 davon befreien möglicherweise schlechte Konfigurations-Entscheidungen zu machen und möglicherweise unausgenutzte und/oder schlecht performende Teile eines Datencenters vermeiden.
-
Das Datencenter 1000 kann Tools, Dienste, Software oder andere Ressourcen umfassen, um eine oder mehrere maschinenlern-Modelle zu trainieren, oder Informationen vorherzusagen oder zu folgern, unter Verwenden eines oder mehrerer maschinenlern-Modelle, in Übereinstimmung mit einem oder mehreren hierin beschriebenen Ausführungsbeispielen. Zum Beispiel kann/können ein maschinenlern-Modell(e) mittels Berechnens von Gewichtsparametern trainiert werden, gemäß einer neuronales-Netzwerk-Architektur, unter Verwenden von Software und/oder Rechenressourcen, die oben in Bezug auf das Datencenter 1000 beschrieben werden. In zumindest einem Ausführungsbeispiel können trainierte oder eingesetzte maschinenlern-Modelle, die zu einem oder mehreren neuronalen Netzwerken korrespondieren, verwendet werden, um Informationen zu folgern oder vorherzusagen, unter Verwenden von Ressourcen die oben in Bezug auf das Datencenter 1000 beschrieben werden, mittels Verwendens von Gewichtsparametern, die durch eine oder mehrere Trainingstechniken berechnet werden, wie die, aber nicht auf diese eingeschränkt, hierin beschriebenen.
-
In zumindest einem Ausführungsbeispiel kann das Datencenter 1000 CPUs, anwendungsspezifische integrierte Schaltkreise (ASICs), GPUs, FPGAs und/oder andere Hardware (oder virtuelle Berechnungsressourcen, die dazu korrespondieren) verwenden, um Training und/oder Inferenzieren durchzuführen, unter Verwenden von oben beschriebenen Ressourcen. Ferner können eine oder mehrere oben beschriebene Software- und/oder Hardwareressourcen als ein Dienst konfiguriert werden, um es Benutzern zu erlauben, um zu trainieren oder Inferenzieren von Informationen durchzuführen, wie beispielsweise Bilderkennung, Spracherkennung oder andere Dienste künstlicher Intelligenz.
-
BEISPIELHAFTE NETZWERKUMGEBUNGEN
-
Netzwerkumgebungen, die für die Verwendung beim Implementieren von Ausführungsbeispielen der Offenbarung geeignet sind, können eine oder mehrere Client-Vorrichtungen, Server, netzgebundenen Speicher (network attached storage, NAS), andere Backend-Vorrichtungen und/oder andere Vorrichtungstypen umfassen. Die Client-Vorrichtungen, Server und/oder anderen Vorrichtungs-Typen (z.B. jede Vorrichtung) können auf einer oder mehreren Instanzen der Rechenvorrichtung(en) 900 von 9 implementiert werden - z.B. kann jede Vorrichtung ähnliche Komponenten, Merkmale und/oder Funktionalität der Rechenvorrichtung(en) 900 umfassen. Zusätzlich können, wo Backend-Vorrichtungen (z.B. Server, NAS, usw.) implementiert werden, die Backend-Vorrichtungen als Teil eines Datencenters 1000 eingebunden sein, von dem ein Beispiel hierin in größerem Detail unter Bezug auf 10 beschrieben ist.
-
Komponenten einer Netzwerk-Umgebung können miteinander via ein Netzwerk(e) kommunizieren, das/die kabelgebunden, kabellos oder beides sein kann/können. Das Netzwerk kann mehrere Netzwerke oder ein Netzwerk von Netzwerken umfassen. Auf dem Wege eines Beispiels kann das Netzwerk ein oder mehrere Weitverkehrsnetze (Wide Area Networks, WANs), ein oder mehrere lokale Netzwerke (Local Area Networks, LANs), ein oder mehrere öffentliche Netzwerke, wie beispielsweise das Internet, und/oder ein Telefonnetz (public switched telephone network, PSTN), und/oder ein oder mehrere private Netzwerke umfassen. Wo das Netzwerk ein drahtloses Telekommunikationsnetzwerk umfasst, können Komponenten, wie beispielsweide eine Basisstation, ein Kommunikationsturm oder selbst Zugangspunkte (access points) (sowie auch andere Komponenten) drahtlose Konnektivität bereitstellen.
-
Kompatible Netzwerkumgebungen können eine oder mehrere Peer-to-Peer Netzwerkumgebungen - in dem Fall mag ein Server nicht in einer Netzwerkumgebung enthalten sein - und eine oder mehrere Client-Server Netzwerkumgebungen - in dem Fall mögen ein oder mehrere Server in einer Netzwerkumgebung enthalten sein - umfassen. In Peer-to-Peer Netzwerkumgebungen kann eine hierin in Bezug auf einen/mehrere Server beschriebene Funktionalität auf jeder Anzahl von Client-Vorrichtungen implementiert werden.
-
In zumindest einem Ausführungsbeispiel kann eine Netzwerkumgebung eine oder mehrere cloudbasierte Netzwerkumgebungen, eine verteilte-Rechenumgebung (distributed computing environment), eine Kombination davon, usw. umfassen. Eine cloudbasierte Netzwerkumgebung kann eine Framework-Schicht, einen Job-Scheduler, einen Ressourcenmanager und ein verteiltes File-System umfassen, die auf einen oder mehreren Servern implementiert werden, die einen oder mehrere Kern-Netzwerk-Server und/oder Edge-Server umfassen können. Eine Framework-Schicht kann ein Framework umfassen, um Software von einer Softwareschicht und/oder eine oder mehrere Anwendung(en) von einer Anwendungsschicht zu unterstützen. Die Software oder Anwendung(en) können web-basierte Dienstsoftware bzw. Anwendungen umfassen. In Ausführungsbeispielen können ein oder mehrere Client-Vorrichtungen die web-basierte Dienstsoftware oder Anwendungen verwenden (z.B. indem auf die Dienstsoftware und/oder Anwendungen via eine oder mehrere Programmschnittstellen (APIs) zugegriffen wird). Die Framework-Schicht kann, aber ohne darauf beschränkt zu sein, ein Typ von Freier- und Open-Source Software Web Anwendungs-Framework sein, wie eines das ein verteiltes Filesystem für Datenprozessierung in großen Maßstab (z.B. „Big Data“) verwenden kann.
-
Eine cloudbasierte Netzwerkumgebung kann Cloud-Computing und/oder Cloud-Speichern bereitstellen, das jede Kombination von Berechnungs- und/oder Datenspeicherungsfunktionen ausführt, die hierin beschrieben sind (oder ein oder mehrere Teile davon). Jede dieser verschiedenen Funktionen kann über mehrere Positionen von Zentral- oder Kernservern verteilt sein (z.B. von einem oder mehreren Datencentern, die über einen Staat, eine Region, ein Land, den Globus, usw. verteilt sind). Wenn eine Verbindung zu einem Benutzer (z.B. eine Client-Vorrichtung) relativ nahe zu einem Edge-Server(n) ist, kann ein/mehrere Kern-Server den/die Edge-Server für zumindest einen Teil der Funktionalität ausersehen. Eine cloudbasierte Netzwerkumgebung kann privat sein (z.B. auf eine einzelne Organisation beschränkt), kann öffentlich sein (z.B. nutzbar für viele Organisationen) und/oder eine Kombination davon (z.B. eine hybride Cloudumgebung).
-
Der/die Client-Vorrichtung(en) kann/können zumindest einige der Komponenten, Merkmale und Funktionalität der beispielhaften Rechenvorrichtung(en) 900, die hierin mit Bezug auf 9 beschrieben wurde(n) umfassen. Auf dem Wege eines Beispiels und nicht beschränkend kann eine Client-Vorrichtung als ein Personal Computer (PC), ein Laptopcomputer, eine mobile Vorrichtung, ein Smartphone, ein Tabletcomputer, eine Smartwatch, ein anziehbarer Computer, ein Personal Digital Assistant (PDA), ein MP3-Spieler, ein virtuelle Realität Headset, ein Global Positioning System (GPS) oder Vorrichtung, ein Videospieler, eine Videokamera, eine Überwachungsvorrichtung oder System, ein Fahrzeug, ein Boot, ein fliegendes Fahrzeug, eine virtuelle Maschine, eine Drohne, ein Roboter, eine Handheld-Kommunikationsvorrichtung, eine Krankenhaus-Vorrichtung, eine Spielevorrichtung oder -system, ein Unterhaltungssystem, ein Fahrzeugcomputersystem, eine eingebettete Systemsteuerung, eine Fernbedienung, ein Gerät, eine Unterhaltungselektronik-Vorrichtung, eine Workstation, eine Edge-Vorrichtung, irgendeine Kombination von diesen skizzierten Vorrichtungen oder irgendeine andere geeignete Vorrichtung verkörpert sein.
-
Die Offenbarung kann im allgemeinen Kontext von Computercode oder maschinell verwendbaren Instruktionen beschrieben werden, einschließlich computerausführbarer Instruktionen, wie z.B. Programmmodule, die von einem Computer oder einer anderen Maschine, wie z.B. einem Personal Data Assistant oder einem anderen Handheld-Gerät, ausgeführt werden. Im Allgemeinen beziehen sich Programmmodule, einschließlich Routinen, Programme, Objekten, Komponenten, Datenstrukturen, usw., auf Code, der bestimmte Aufgaben ausführt oder bestimmte abstrakte Datentypen implementiert. Die Offenbarung kann in einer Vielzahl von Systemkonfigurationen praktiziert werden, einschließlich Handheld-Geräten, Unterhaltungselektronik, Universalcomputern, spezielleren Rechenvorrichtungen, usw. Die Offenbarung kann auch in verteilten Rechenumgebungen angewendet werden, in denen Aufgaben von entfernt arbeitenden Vorrichtungen ausgeführt werden, die über ein Kommunikationsnetzwerk verbunden sind.
-
Wie hier verwendet, sollte eine Rezitation von „und/oder“ in Bezug auf zwei oder mehr Elemente interpretiert werden, nur ein Element oder eine Kombination von Elementen zu meinen. Beispielsweise kann „Element A, Element B und/oder Element C“ nur Element A, nur Element B, nur Element C, Element A und Element B, Element A und Element C, Element B und Element C oder die Elemente A, B und C umfassen. Darüber hinaus kann „zumindest eines von Element A oder Element B“ zumindest eines von Element A, zumindest eines von Element B oder zumindest eines von Element A und zumindest eines von Element B umfassen. Weiter kann „zumindest eines von Element A und Element B“ zumindest eines von Element A, zumindest eines von Element B oder zumindest eines von Element A und zumindest eines von Element B umfassen.
-
Der Gegenstand der vorliegenden Offenbarung wird hierin spezifisch beschrieben, um gesetzliche Anforderungen zu erfüllen. Die Beschreibung selbst soll jedoch nicht den Umfang dieser Offenbarung einschränken. Vielmehr haben die Erfinder in Erwägung gezogen, dass der beanspruchte Gegenstand auch auf andere Weisen verkörpert werden kann, um andere Schritte oder Kombinationen von Schritten ähnlich den in diesem Dokument beschriebenen in Verbindung mit anderen gegenwärtigen oder zukünftigen Technologien zu umfassen. Ferner sollten, obwohl die Begriffe „Schritt“ und/oder „Block“ hierin verwendet werden können, um verschiedene Elemente von verwendeten Verfahren zu bezeichnen, die Begriffe nicht so ausgelegt werden, dass sie eine bestimmte Reihenfolge unter oder zwischen den verschiedenen hier offenbarten Schritten implizieren, solange nicht und außer, wenn die Reihenfolge der einzelnen Schritte ausdrücklich beschrieben wird.