DE102020127706A1 - Inferenz, markenzeichen und tm spielereigniserfassung - Google Patents

Inferenz, markenzeichen und tm spielereigniserfassung Download PDF

Info

Publication number
DE102020127706A1
DE102020127706A1 DE102020127706.7A DE102020127706A DE102020127706A1 DE 102020127706 A1 DE102020127706 A1 DE 102020127706A1 DE 102020127706 A DE102020127706 A DE 102020127706A DE 102020127706 A1 DE102020127706 A1 DE 102020127706A1
Authority
DE
Germany
Prior art keywords
event
game
data
player
memory
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
DE102020127706.7A
Other languages
English (en)
Inventor
Jonathan White
Dave Clark
Nathan Otterness
Travis Muhlestein
Prabindh Sundareson
Jim van Welzen
Jack Van Welzen
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Nvidia Corp
Original Assignee
Nvidia Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Nvidia Corp filed Critical Nvidia Corp
Publication of DE102020127706A1 publication Critical patent/DE102020127706A1/de
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G07CHECKING-DEVICES
    • G07FCOIN-FREED OR LIKE APPARATUS
    • G07F17/00Coin-freed apparatus for hiring articles; Coin-freed facilities or services
    • G07F17/32Coin-freed apparatus for hiring articles; Coin-freed facilities or services for games, toys, sports, or amusements
    • G07F17/3202Hardware aspects of a gaming system, e.g. components, construction, architecture thereof
    • G07F17/3204Player-machine interfaces
    • G07F17/3209Input means, e.g. buttons, touch screen
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/50Controlling the output signals based on the game progress
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/30Interconnection arrangements between game servers and game devices; Interconnection arrangements between game devices; Interconnection arrangements between game servers
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/20Input arrangements for video game devices
    • A63F13/21Input arrangements for video game devices characterised by their sensors, purposes or types
    • A63F13/213Input arrangements for video game devices characterised by their sensors, purposes or types comprising photodetecting means, e.g. cameras, photodiodes or infrared cells
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/20Input arrangements for video game devices
    • A63F13/21Input arrangements for video game devices characterised by their sensors, purposes or types
    • A63F13/215Input arrangements for video game devices characterised by their sensors, purposes or types comprising means for detecting acoustic signals, e.g. using a microphone
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/40Processing input control signals of video game devices, e.g. signals generated by the player or derived from the environment
    • A63F13/42Processing input control signals of video game devices, e.g. signals generated by the player or derived from the environment by mapping the input signals into game commands, e.g. mapping the displacement of a stylus on a touch screen to the steering angle of a virtual vehicle
    • A63F13/424Processing input control signals of video game devices, e.g. signals generated by the player or derived from the environment by mapping the input signals into game commands, e.g. mapping the displacement of a stylus on a touch screen to the steering angle of a virtual vehicle involving acoustic input signals, e.g. by using the results of pitch or rhythm extraction or voice recognition
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/40Processing input control signals of video game devices, e.g. signals generated by the player or derived from the environment
    • A63F13/42Processing input control signals of video game devices, e.g. signals generated by the player or derived from the environment by mapping the input signals into game commands, e.g. mapping the displacement of a stylus on a touch screen to the steering angle of a virtual vehicle
    • A63F13/426Processing input control signals of video game devices, e.g. signals generated by the player or derived from the environment by mapping the input signals into game commands, e.g. mapping the displacement of a stylus on a touch screen to the steering angle of a virtual vehicle involving on-screen location information, e.g. screen coordinates of an area at which the player is aiming with a light gun
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/40Processing input control signals of video game devices, e.g. signals generated by the player or derived from the environment
    • A63F13/42Processing input control signals of video game devices, e.g. signals generated by the player or derived from the environment by mapping the input signals into game commands, e.g. mapping the displacement of a stylus on a touch screen to the steering angle of a virtual vehicle
    • A63F13/428Processing input control signals of video game devices, e.g. signals generated by the player or derived from the environment by mapping the input signals into game commands, e.g. mapping the displacement of a stylus on a touch screen to the steering angle of a virtual vehicle involving motion or position input signals, e.g. signals representing the rotation of an input controller or a player's arm motions sensed by accelerometers or gyroscopes
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/40Processing input control signals of video game devices, e.g. signals generated by the player or derived from the environment
    • A63F13/44Processing input control signals of video game devices, e.g. signals generated by the player or derived from the environment involving timing of operations, e.g. performing an action within a time slot
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/45Controlling the progress of the video game
    • A63F13/49Saving the game status; Pausing or ending the game
    • A63F13/497Partially or entirely replaying previous game actions
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/50Controlling the output signals based on the game progress
    • A63F13/52Controlling the output signals based on the game progress involving aspects of the displayed game scene
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/50Controlling the output signals based on the game progress
    • A63F13/53Controlling the output signals based on the game progress involving additional visual information provided to the game scene, e.g. by overlay to simulate a head-up display [HUD] or displaying a laser sight in a shooting game
    • A63F13/537Controlling the output signals based on the game progress involving additional visual information provided to the game scene, e.g. by overlay to simulate a head-up display [HUD] or displaying a laser sight in a shooting game using indicators, e.g. showing the condition of a game character on screen
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/50Controlling the output signals based on the game progress
    • A63F13/54Controlling the output signals based on the game progress involving acoustic signals, e.g. for simulating revolutions per minute [RPM] dependent engine sounds in a driving game or reverberation against a virtual wall
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/60Generating or modifying game content before or while executing the game program, e.g. authoring tools specially adapted for game development or game-integrated level editor
    • A63F13/67Generating or modifying game content before or while executing the game program, e.g. authoring tools specially adapted for game development or game-integrated level editor adaptively or by learning from player actions, e.g. skill level adjustment or by storing successful combat sequences for re-use
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/70Game security or game management aspects
    • A63F13/77Game security or game management aspects involving data related to game devices or game servers, e.g. configuration data, software version or amount of memory
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/70Game security or game management aspects
    • A63F13/79Game security or game management aspects involving player-related data, e.g. identities, accounts, preferences or play histories
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/80Special adaptations for executing a specific game genre or game mode
    • A63F13/837Shooting of targets
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/23Processing of content or additional data; Elementary server operations; Server middleware
    • H04N21/234Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs
    • H04N21/23418Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs involving operations for analysing video streams, e.g. detecting features or characteristics
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/43Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
    • H04N21/44Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream or rendering scenes according to encoded video stream scene graphs
    • H04N21/44008Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream or rendering scenes according to encoded video stream scene graphs involving operations for analysing video streams, e.g. detecting features or characteristics in the video stream
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/85Providing additional services to players
    • A63F13/86Watching games played by other players

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Human Computer Interaction (AREA)
  • Physics & Mathematics (AREA)
  • Signal Processing (AREA)
  • Computer Security & Cryptography (AREA)
  • Business, Economics & Management (AREA)
  • General Physics & Mathematics (AREA)
  • General Business, Economics & Management (AREA)
  • Acoustics & Sound (AREA)
  • Optics & Photonics (AREA)
  • User Interface Of Digital Computer (AREA)
  • Image Analysis (AREA)

Abstract

Ein Spiel nicht wahrnehmender Ereignisdetektor kann dazu verwendet werden, automatisch Spielereignisse zu identifizieren. Spielspezifische Konfigurationsdaten können dazu verwendet werden, Arten einer Vorverarbeitung, die auf Medien für eine Spielsitzung durchzuführen ist, sowie Arten von Detektoren, die zur Erfassung von Ereignissen für das Spiel zu verwenden sind, zu spezifizieren. Ereignisdaten für erfasste Ereignisse können in ein Ereignisprotokoll in einer Form geschrieben werden, die sowohl für Menschen als auch für Prozesse lesbar ist. Die Ereignisdaten können für verschiedene Zwecke verwendet werden, wie beispielsweise zum Erzeugen von Höhepunkt-Videos oder zur Bereitstellung von Rückmeldung zur Spielerleistung.

Description

  • HINTERGRUND
  • Da sich Videospielinhalte und -nutzungen weiterentwickeln, besteht ein entsprechender Bedarf, die Art und Weise, wie Spielinhalte genutzt und verfügbar gemacht werden, anzupassen. Beispielsweise werden Videos von Gameplays zunehmend von einer großen Anzahl von Zuschauern gestreamt, und verändern Aktivitäten wie beispielsweise E-Sports die Art und Weise, wie Online-Gaming entwickelt und Zuschauern Inhalte präsentiert werden. In vielen Fällen haben diese schnellen Veränderungen dazu geführt, dass Inhalte präsentiert werden, die für den beabsichtigten Zweck nicht optimal sind oder die manuelle Eingriffe erfordern, um den gewünschten Inhalt zu erstellen. Neben dem erhöhten Ressourcenaufwand verlängert sich durch solche manuellen Eingriffe oft die Zeit, bis solche Inhalte einem Publikum von Zuschauern oder Spielern präsentiert werden können.
  • Figurenliste
  • Verschiedene Ausführungsformen in Übereinstimmung mit der Erfindung werden nachstehend unter Bezugnahme auf die Zeichnungen beschrieben, in welchen:
    • 1A und 1B Anzeigen von Spielinhalten veranschaulichen, die analysiert werden können, gemäß zumindest einer Ausführungsform;
    • 2A, 2B und 2C Anzeigen von Spielinhalten veranschaulichen, die analysiert werden können, gemäß zumindest einer Ausführungsform;
    • 3 eine beispielhafte Ereigniserfassungs-Pipeline veranschaulicht, gemäß zumindest einer Ausführungsform;
    • 4 einen beispielhaften Ereignismanager zum Spezifizieren einer Ereigniserfassungsfunktionalität für ein Spiel veranschaulicht, gemäß zumindest einer Ausführungsform;
    • 5 ein beispielhaftes System veranschaulicht, das zur Bestimmung, Kommunikation und Nutzung von Spielereignisdaten verwendet werden kann, gemäß zumindest einer Ausführungsform;
    • 6 einen Prozess zum Erzeugen eines Protokolls von Spielereignisdaten veranschaulicht, gemäß zumindest einer Ausführungsform;
    • 7 einen Prozess zur Bestimmung von Ereignisdaten aus einem Gameplay-Video veranschaulicht, gemäß zumindest einer Ausführungsform;
    • 8 eine Inferenzierungs- und/oder Trainingslogik veranschaulicht, gemäß zumindest einer Ausführungsform;
    • 9 eine Inferenzierungs- und/oder Trainingslogik veranschaulicht, gemäß zumindest einer Ausführungsform;
    • 10 ein Rechenzentrumssystem veranschaulicht, gemäß zumindest einer Ausführungsform;
    • 11 ein Computersystem veranschaulicht, gemäß zumindest einer Ausführungsform;
    • 12 ein Computersystem veranschaulicht, gemäß zumindest einer Ausführungsform;
    • 13 ein Computersystem veranschaulicht, gemäß zumindest einer Ausführungsform;
    • 14 ein Computersystem veranschaulicht, gemäß zumindest einer Ausführungsform; und
    • 15 ein Computersystem veranschaulicht, gemäß zumindest einer Ausführungsform.
  • DETAILLIERTE BESCHREIBUNG
  • 1A veranschaulicht eine beispielhafte Anzeige 100, die für ein Spiel gerendert werden kann, in Übereinstimmung mit zumindest einer Ausführungsform. In diesem Beispiel ist das Spiel ein Spiel vom Typ Ego-Shooter, in dem ein Spieler einen Avatar 102 oder eine spielbare Figur durch eine Szene oder virtuelle Umgebung steuern soll, um verschiedene Aufgaben auszuführen. In diesem Beispiel beinhalten diese Aufgaben ein Abschießen von Zielen 110, obwohl im Rahmen verschiedener Ausführungsformen auch verschiedene andere Arten von Aufgaben ausgeführt werden können. Eine Spiel-Session bzw. -Sitzung kann in zumindest einer Ausführungsform eine bestimmte Zeitspanne, bis alle Ziele getroffen sind oder bis ein anderes derartiges Endkriterium erfüllt ist, dauern. Das Spiel kann offline oder online gespielt werden, z.B. wenn ein Spieler gegen einen oder mehrere andere Spieler antritt, um zu versuchen, als Erster die Aufgaben des aktuellen Levels oder der aktuellen Sitzung zu erfüllen, usw.
  • Wie dargestellt, können verschiedene Spiel- bzw. Gameplay-Objekte zur Anzeige gerendert werden, wie z.B. der Avatar 102 des Spielers, eine von diesem Avatar gehaltene Waffe, Ziele 110, Gebäude, Hintergrundelemente und dergleichen. Diese Objekte sowie ihre Position können sich während des Spielverlaufs bzw. Gameplays signifikant verändern. Zusätzlich zu diesen Gameplay-Objekten gibt es Mechanismen der Benutzeroberfläche, die dazu dienen, dem Spieler bestimmte Arten von Informationen zu vermitteln. In der beispielhaften Anzeige 100 von 1A wird ein erster Schnittstellenmechanismus 104 in der Nähe eines oberen Teils des gerenderten Bildes angezeigt. Dieser Mechanismus, der oft als Statusleiste oder Head-Up-Display (HUD) bezeichnet wird, vermittelt einem Spieler oder Betrachter des Spiels bestimmte Arten von Informationen. In diesem Beispiel zeigt das HUD eine verbleibende Zeit einer aktuellen Gameplay-Sitzung sowie Informationen über eine Anzahl von Zielen in dem Level an, die der Benutzer erfolgreich getroffen oder anvisiert hat. In dem Beispiel von 1A spielt der Spieler in der Sitzung gegen einen Konkurrenten, und zeigt das HUD daher den Status sowohl des Spielers als auch des Konkurrenten an und gibt die Anzahl der von beiden getroffenen Ziele an.
  • Es kann verschiedene Situationen oder Anwendungsfälle geben, in welchen es von Interesse sein kann, einen Spieler, der eine Aufgabe oder Aktion ausführt, zu bestimmen. Dies kann z.B. der Fall sein, wenn ein Höhepunkt-Video oder eine Videomontage für interessante Ereignisse in einer Spielsitzung erstellt werden soll, oder wenn Gameplay-Daten für eine Sitzung zur Spieleranalyse oder zum Coaching verwendet werden sollen, neben anderen derartigen Anwendungsfällen. In zumindest einigen Ausführungsformen kann es wünschenswert sein, zu bestimmen, wann bestimmte Arten von Ereignissen innerhalb einer Spielsitzung auftreten, um diese Daten zu protokollieren oder ein Videosegment („Videoclip“) zu erfassen, das für eines oder mehrere dieser Ereignisse repräsentativ ist, neben anderen derartigen Optionen. In einigen Ausführungsformen kann ein Spieleentwickler Hooks oder Auslöser im Spielcode platzieren, die dabei helfen können, diese Ereignisse aus dem Spiel heraus zu bestimmen. In einigen Ausführungsformen kann die Ereignisbestimmung jedoch von einer dritten Partei oder einer Drittvorrichtung durchgeführt werden, die möglicherweise keinen Zugriff auf den Code oder interne Spieldaten hat.
  • In zumindest einer Ausführungsform können Medien, die für eine Spielsitzung repräsentativ sind, analysiert werden. Dies kann z.B. einen Audio- und Videostream einer Spielsitzung umfassen, oder Audio- und/oder Videodaten, die für eine Spielsitzung aufgezeichnet und gespeichert wurden, neben anderen derartigen Optionen. Die Medien können analysiert werden, um das Vorhandensein von bestimmten Ereignissen oder Ereignissen im Spiel zu erfassen oder zu identifizieren. Dies kann jedes beliebige Ereignis oder Vorkommnis in einem Spiel umfassen, wie z.B. das Erscheinen oder Verschwinden eines Objekts oder Charakters, den Tod oder die Wiederbelebung eines Charakters, eine Verwendung eines Gegenstands, eine Aktivierung eines Schalters, ein Einsammeln eines Gegenstands, eine Errungenschaft und dergleichen. In einigen Ausführungsformen können Mediendaten analysiert werden, um zu versuchen, diese Vorkommnisse durch Erfassen dieser spezifischen Aktionen in den Audio-, Video-, Text- oder anderen derartigen Spielinhalten zu bestimmen.
  • In vielen Fällen würde es jedoch eine beträchtliche Menge an Trainingsdaten erfordern, um ein Modell zu trainieren, oder Aufwand, einen Algorithmus zu programmieren, um die verschiedenen Ereignisse durch die Art und Weise, wie diese Ereignisse dargestellt werden können, zu erfassen. Zum Beispiel kann ein Kill in einem Shooter-Spiel auf viele verschiedene Arten, aus vielen verschiedenen Blickwinkeln und an vielen verschiedenen Charakteren geschehen, und ohne Zugriff auf den Spielcode kann es eine erhebliche Herausforderung sein, zu versuchen, ein Modell zu trainieren oder einen Algorithmus zu programmieren oder Computer Vision zu verwenden, um zu versuchen, all diese Ereignisgenerationen zu erfassen.
  • Für verschiedene Arten von Ereignissen kann es jedoch bestimmte Arten von Aktionen oder Ereignissen im Spiel geben, die ohne die Notwendigkeit komplexen Modelltrainings oder komplexer Algorithmusprogrammierung erkannt werden können. Es sei wieder die Anzeige 100 von 1A betrachtet. Das HUD 104 in diesem Beispiel zeigt die Anzahl verbleibender Ziele für jeden Spieler an. Jedes Mal, wenn ein Spieler erfolgreich und/oder vollständig ein Ziel 110 trifft, wird das HUD aktualisiert, um dieses Ereignis widerzuspiegeln. In ähnlicher Weise sinkt jedes Mal, wenn ein Spieler erheblichen Schaden durch einen Gegner erleidet, die Gesundheitsanzeige oder die Schildanzeige, die in einer Statusmeldung 106 auf dem Bildschirm angezeigt wird, und kann der Erhalt eines Power-Ups, eines Schildes oder einer Rüstung ebenfalls dazu führen, dass diese Zahlen steigen. Eine weitere Statusmeldung 108 zeigt eine Menge an Munition für eine aktuelle Waffe an. Jedes Mal, wenn ein Spieler eine neue Waffe erhält, kann sich das Munitions- (oder Kraft-, Farb-, usw.) Symbol entsprechend ändern. Jede dieser Statusmeldungen oder Anzeigen kann an ungefähr der gleichen Stelle mit sehr ähnlichem Aussehen auftreten und sich auf gut definierte Weise ändern. Dementsprechend kann die Erfassung zumindest bestimmter Arten von Ereignissen durch Überwachen von Änderungen in diesen und anderen Arten von Informationen, Symbolen oder Darstellungen von Inhalten bestimmt werden, die mit dem tatsächlichen, die Avatare, Objekte und Spielercharaktere im Spiel involvierenden Spielgeschehen bzw. Gameplay zusammenhängen, bestimmt werden.
  • 1B veranschaulicht eine nachfolgende Anzeige 150 zu einem späteren Zeitpunkt in der Spielsitzung. In dieser Anzeige ist zu ersehen, dass der Spieler innerhalb weniger Sekunden, bezogen auf die Anzeige 100 von 1A, zwei zusätzliche Ziele getroffen hat. Dies wird durch zwei Änderungen von Symbolen 154 in dem HUD widergespiegelt. Eine weitere Statusanzeige veranschaulicht, dass es eine entsprechende Reduzierung eines bestimmten Munitionstyps entsprechend den Schüssen, die die Ziele getroffen haben, gab. Durch Erfassen dieser sehr spezifischen Änderungen kann bestimmt werden, dass ein Ereignis oder eine Reihe von Ereignissen aufgetreten ist, das bzw. die dazu geführt hat/haben, dass der Spieler zwei der Ziele getroffen hat. Die Erfassung dieses Ereignisses kann dann für eine Reihe von verschiedenen Zwecken verwendet werden, wie später noch näher erläutert werden wird. Es können auch Audio-Töne erzeugt worden sein, die einem von einem Spieler getroffenen Ziel entsprechen, usw.
  • Da bei einem solchen Ansatz nach bestimmten Arten von Ereignissen in einem Spiel oder anderen Medieninhalten gesucht wird, kann ein Satz von Detektoren verwendet werden, um Vorkommnisse zu erkennen, die möglicherweise interessierenden Ereignissen entsprechen. In den Beispielen von 1A und 1B werden Videoinhalte analysiert (obwohl in zumindest einigen Ausführungsformen auch Audio- und andere Inhalte analysiert werden können). Die Detektoren, die für solche Videos verwendet werden, können u. a. Detektoren beinhalten, die versuchen, bestimmte Muster, Symbole, Texte oder Bilder zu erfassen oder zu erkennen. Ferner können, da sich die Symbole, der Text oder andere Inhalte typischerweise an bestimmten Stellen im Gameplay befinden, diese Detektoren auf den entsprechenden Bereichen oder Teilen der Anzeige ausgeführt werden, was im Vergleich zur Ausführung mehrerer Detektoren auf ganzen Bildern erhebliche Ressourcen einsparen kann, insbesondere bei Anzeigen mit hoher Auflösung. In 1B ist beispielsweise dargestellt, dass Abschnitte oder Bereiche 154, 156, 158 der Anzeige, die für die Erfassung berücksichtigt werden, zumindest einen gewissen Umfang an Füllung um die erwartete Position des zu erfassenden Inhalts beinhalten. Zumindest in einigen Ausführungsformen ist es wünschenswert, nicht mehr Pixel als nötig heranzuziehen, um den Ressourcenbedarf zu reduzieren und die Erfassungsgeschwindigkeit zu verbessern. In zumindest einigen Ausführungsformen ist es jedoch wünschenswert, über eine ausreichende Menge an Padding (z.B. einen „räumlichen Puffer“ in einer oder mehreren Richtungen ausgehend von der erwarteten Position des zu erfassenden Inhalts) zu verfügen, oder eine geeignete Anzahl zusätzlicher Pixeln zu berücksichtigen, um geringfügige Abweichungen zu ermöglichen. Abweichungen können aufgrund von Faktoren wie z.B. dem Rendering eines Wackelns des Bildschirminhalts, Änderungen der Auflösung oder der Benutzereinstellungen, dem Auftauchen oder Verschwinden von Objekten in oder aus dem Sichtfeld und dergleichen auftreten. In einigen Ausführungsformen kann sich auch der Inhalt im Laufe der Zeit bewegen oder sein Aussehen verändern. Daher können zumindest in einigen Ausführungsformen der Umfang des zu verwendenden Paddings sowie die Anzahl von zu analysierenden Bereichen bzw. Regionen spielspezifisch sein.
  • 2A und 2B veranschaulichen beispielhafte Anzeigen 200, 240 für andere Arten von Spielen, die analysiert werden können, in Übereinstimmung mit verschiedenen Ausführungsformen. Die Anzeige 200 von 2A veranschaulicht ein für ein fahrzeugbasiertes Spiel, bei dem ein Spieler für Aufgaben wie beispielsweise die Durchführung von Tricks oder das Verursachen von Schäden an Objekten in der Umgebung belohnt werden kann, gerendertes Bild. Für dieses Beispiel können Detektoren einen Bereich 202, der einen HUD entspricht, mit verschiedenen Informationen analysieren, in diesem Fall einschließlich Informationen über eine aktuelle Geschwindigkeit, eine Trickpunktzahl bzw. einen Trick-Score und ein Schadensniveau. Solche Informationen können analysiert werden, um bestimmte Arten von Ereignissen zu bestimmen, wie z.B. Unfälle, die zu plötzlichen Verzögerungen führen, oder Explosionen, die zu schnellen Beschleunigungen führen. Große Änderungen in der Trickpunktzahl, entweder zu einem Zeitpunkt oder über einen kurzen Zeitraum, können auch auf einen oder mehrere interessante Tricks hinweisen. In ähnlicher Weise können große Änderungen in der Schadensbewertung zu einem Zeitpunkt oder über einen kurzen Zeitraum hinweg auf interessante Ereignisse im Spiel hinweisen. Ein anderer Bereich 204 für die Analyse kann einen Kartenbereich umfassen, der Symbole oder grafische Elemente für Objekte oder Gameplay-Elemente in der Nähe des Spielers in dem Spiel enthalten kann, welche sich entsprechend bestimmten Arten von Ereignissen ändern, erscheinen oder verschwinden können. Ein Detektor kann darauf trainiert sein, diese und andere Vorkommnisse auf der Karte, die auf bestimmte Ereignisse von Interesse hindeuten können, zu erkennen.
  • Die beispielhafte Anzeige 240 von 2B veranschaulicht ein gerendertes Bild für ein Golfspiel. In diesem Beispiel wird ein Bereich 242 zur Analyse ausgewählt, der Textinformationen und Aktualisierungen über den Status des Spiels enthält. Der Detektor kann in diesem Fall einen Texterfassungsalgorithmus beinhalten, wie z.B. eine OCR-Engine bzw. -Maschine und einen Textanalysator, um zu bestimmen, wann bestimmte Informationen angezeigt oder aktualisiert werden. Diese Informationen können z.B. eine aktuelle Anzahl von Schwüngen an einem bestimmten Loch, eine Änderung des aktuellen Griffs und andere derartige Informationen umfassen. In Fällen wie diesem ist es nicht unbedingt die angezeigte Information, die auf ein interessantes Ereignis hinweist, sondern eine bestimmte Art der Änderung in dieser Information, wie z.B. ein Erzielen eines doppelten Birdies an einem Loch. Es könnte jedoch sein, dass zu bestimmten Zeiten zusätzliche Informationen angezeigt werden können, wie z.B. ein Text, der „Birdie“ anzeigt, oder ein Symbol, das „schöner Schlag“ anzeigt, was ebenfalls auf ein interessantes Ereignis hinweisen könnte.
  • Wie bereits erwähnt, können verschiedene Ausführungsformen jedoch auch zusätzliche Arten von Informationen analysieren oder erfassen, um Ereignisse von Interesse genauer zu identifizieren. Als ein Beispiel entspricht die Anzeige 280 von 2C erneut dem Golfspiel. Zusätzlich zur Analyse von Daten des HUD-Typs 292 können Detektoren auch dazu verwendet werden, zu versuchen, andere Objekte, Merkmale, Aktionen oder Vorkommnisse in Gameplay erkennen. Dies kann beispielsweise ein Erfassen einer Schwungbewegung 286 des Spieler-Avatars, ein Erfassen des Vorhandenseins 282 und der Bewegung 284 eines Golfballs oder ein Erfassen von Bewegung (oder fehlender Bewegung) in einer Umgebung 290 wie beispielsweise einem Golfplatz umfassen. In einigen Ausführungsformen können auch Audio-Trigger bzw. -Auslöser oder -Detektoren verwendet werden. In diesem Beispiel veranlasst ein Spieler-Avatar, der einen Golfball mit einem Golfschläger schlägt, das Spiel, eine bestimmte Art von Ton 288 zu erzeugen, der als mit einem Audiomuster oder -clip übereinstimmend identifiziert werden kann. Dieser Audio-Trigger kann auf ein Ereignis hinweisen, bei dem der Spieler den Ball trifft. Solche Auslöser oder Ereignisse können verwendet werden, um schnell die Punkte in einer Spielsitzung zu identifizieren, an denen ein Benutzer den Ball getroffen hat, und ähnliche Audioauslöser können verwendet werden, um zu identifizieren, wann der Ball den Boden berührt usw. Verschiedene Bewegungs-, optische Fluss-, Audio- und andere derartige Detektoren, Modelle maschinellen Lernens oder trainierte neuronale Netze können verwendet werden, um einen Medienstrom bzw. Medienstream oder eine Datei des Gameplays zu analysieren, um solche Ereignisse zu erkennen, die zusammen verwendet werden können, um potenzielle Ereignisse von Interesse zu bestimmen oder zu erkennen und potenziell genauere Beschreibungen über diese individuellen Aktionen zu liefern.
  • 3 veranschaulicht ein beispielhaftes System 300, das zur Erkennung von Ereignissen aus Gameplay-Daten bzw. Spieldaten verwendet werden kann, in Übereinstimmung mit verschiedenen Ausführungsformen. In diesem Beispiel kann ein Ereigniserfassungsmodul 304, das in verschiedenen Ausführungsformen auch die Form einer Vorrichtung, eines Systems, eines Dienstes oder eines Prozesses haben kann, eine oder mehrere Arten von Gameplay-Daten 302 als Eingabe entgegennehmen. Die Eingabe kann z.B. Live-Gameplay, das in einem Medienstream empfangen wird, aufgezeichnete Medien, die auf einem zugänglichen Speichermedium gespeichert sind, oder Medien, die in Echtzeit für die Darstellung auf einer Spielervorrichtung gerendert werden, neben anderen solchen Optionen umfassen. Zumindest in einigen Ausführungsformen können auch zusätzliche Gameplay-Daten empfangen werden, sofern solche Informationen verfügbar sind. Dazu können Text, Metadaten, Spielereingaben (z.B. Audio, Tastenanschlag oder Tastendruck) oder andere Informationen gehören, die bei der Erkennung von Ereignissen, der Bestimmung von zu verwendenden Detektoren und dergleichen nützlich sein können. In einigen Ausführungsformen kann dies zumindest Informationen über das gespielte Spiel und/oder den Spieler, dessen Gameplay-Daten analysiert werden, enthalten.
  • In diesem Beispiel kann das Ereigniserfassungsmodul 304 alle Videoframes eines Streams für eine Spielsitzung empfangen, oder kann eine Stichprobe von Frames, z.B. einen Frame pro 100 ms oder jeden zehnten Frame, empfangen. In einigen Ausführungsformen kann das Modul alle Frames empfangen, aber nur eine solche Stichprobe analysieren. Die zu analysierenden Frames (oder andere Inhalte) können an ein Vorverarbeitungsmodul 306 geleitet werden, das die Vorverarbeitung einzelner Frames unter Verwendung eines oder mehrerer Vorverarbeitungsalgorithmen durchführen oder verwalten kann. In diesem Beispiel kann ein Repository 308 einen Satz von Vorverarbeitungsalgorithmen speichern, und kann das Vorverarbeitungsmodul 306 den für den Inhalt geeigneten Algorithmus oder die für den Inhalt geeigneten Algorithmen auswählen. In einigen Ausführungsformen können die anzuwendenden Algorithmen zumindest teilweise auf der Art des zu analysierenden Inhalts oder auf einem Ergebnis eines vorherigen Vorverarbeitungsschritts basieren. In diesem Beispiel kann eine spielspezifische Konfigurationsdatei 312 konsultiert werden, die die Arten von Vorverarbeitungen angeben kann, die für ein bestimmtes Spiel durchzuführen sind. Verschiedene andere Bestimmungsansätze können im Rahmen der verschiedenen Ausführungsformen ebenfalls verwendet werden.
  • In zumindest einer Ausführungsform kann für ein oder mehrere Videoframes eine Verarbeitung abhängiger Bereiche durchgeführt werden. Wenn eine Verarbeitung abhängiger Bereichen durchgeführt wird, kann die Erkennung eines Objekts oder Vorkommnisses eine zusätzliche Verarbeitung für einen oder mehrere andere Bereiche eines Frames auslösen. Beispielsweise kann das Erscheinen eines Symbols in einem ersten Bereich eines Videobildes erfasst werden. Das Erscheinen dieses Symbols kann auf das Vorhandensein zusätzlicher Informationen an anderer Stelle in dem Videoframe hinweisen. Ein oder mehrere entsprechende Bereiche des Frames bzw. Bilds könnten dann unter Verwendung eines oder mehrerer Detektoren analysiert werden, die mit dieser Art von Zusatzinformationen verknüpft sind. In zumindest einer Ausführungsform kann die Erfassung eines solchen Objekts oder Vorkommnisses eine Sequenz oder Reihe von Detektoren auslösen, um zu versuchen, zusätzliche Informationen über einen Zustand des Spiels zu erhalten, unabhängig davon, ob diese in Audio, Video, Benutzereingaben oder anderen derartige Daten repräsentiert sind. Es kann sein, dass einer oder mehrere dieser zusätzlichen Detektoren nicht aktiviert waren, als das Symbol erfasst wurde, sondern stattdessen bei einer solchen Erfassung aktiviert oder ausgelöst werden. In einigen Ausführungsformen werden Kombinationen von Ereignissen analysiert, um ein bestimmtes Ergebnis zu ermitteln. Zum Beispiel könnte ein Symbol auf einem Bildschirm erscheinen, das anzeigt, dass ein bestimmtes Ereignis eingetreten ist, aber dies könnte von einer anderen Aktion oder Anzeige begleitet werden, die Informationen über die Partei oder den Spieler anzeigt, die bzw. der dieses Ereignis verursacht hat oder von diesem Ereignis betroffen war, neben anderen solchen Optionen.
  • In diesem Beispiel können auf einzelne Videoframes eine Reihe von Vorverarbeitungsalgorithmen angewendet werden. Dazu kann z.B. zunächst aus der Konfigurationsdatei ermittelt werden, welche(r) Bereich(e) des Bildframes zu analysieren sind. In diesem Beispiel sind die Bereiche Rechtecke, die durch Koordinaten oder Prozentwerte definiert sind. Prozentwerte können in einigen Ausführungsformen bevorzugt sein, da das Spiel mit vielen verschiedenen möglichen Auflösungen ausgeführt werden kann, und falls diskrete Koordinaten verwendet werden, dann müssen die Koordinaten entweder für jede Auflösung gespeichert werden oder es muss eine Berechnung durchgeführt werden, um in verschiedene Koordinaten bei verschiedenen Auflösungen umzurechnen. In einem Beispiel kann eine Bereichsspezifikation einen Bereich angeben, der 10% der Anzeige in Breite und Höhe einnimmt und sich 5% von der oberen Mitte der Anzeige entfernt befindet. Diese Werte sind in hohem Maße parametrisierbar und können für einzelne Spiele, Levels, Szenarien und dergleichen festgelegt werden. Wie bereits erwähnt wurde, kann eine gegebene Bereichsgröße ein ausreichendes Padding ermöglichen, um sicherzustellen, dass die beabsichtigten Informationen oder Inhalte erfasst werden.
  • Für jeden Bereich eines zur Analyse ausgewählten Bilds können ein oder mehrere Vorverarbeitungsalgorithmen angewendet werden. Diese Algorithmen können z.B. Grauskalierung, Farbisolierung, Konvertierung in den HSV (hue, saturation, value bzw. Farbton, Sättigung, Wert)-Farbraum, Hochskalierung, Herunterskalierung, Glättung, Rauschentfernung, Filterung, Streckung, Verzerrung oder perspektivische Korrektur und andere derartige Optionen umfassen. Verschiedene andere Bild- oder Inhaltsmanipulationstechniken werden ebenfalls verwendet. Als ein letzter Vorverarbeitungsschritt in diesem Beispiel kann ein gewisses Maß oder eine Art von Schwellenwertbildung auf die Pixel der ausgewählten Bereiche angewendet werden, um zumindest ein gewisses Maß an Hintergrundentfernung bereitzustellen. Wie erwähnt, wird in zumindest einigen Spielen der interessierende Inhalt (z.B. Text) vor einem Hintergrund des Spiels angezeigt. Damit Erkennungsalgorithmen, wie z.B. solche, die auf OCR beruhen, genauer funktionieren, kann eine Schwellenwertbildung bzw. ein Schwellenwertverfahren dazu verwendet werden, Hintergrundpixel zu entfernen (oder einen bestimmten Wert anzuwenden), so dass der einmal verarbeitete Bereich eher wie Schwarz-Weiß-Inhalt erscheint, insbesondere für Text, der eher wie die Arten von Inhalten erscheinen kann, für deren Verarbeitung OCR-Engines konzipiert wurden. Ferner können Aspekte wie beispielsweise Anti-Aliasing und Blending die Genauigkeit einer OCR-Engine beeinträchtigen, wenn sie nicht ausreichend entfernt oder bei der Verarbeitung berücksichtigt werden. Die Schwellenwertberechnung kann ggf. auch dazu beitragen, vorübergehendes Hintergrundrauschen zu entfernen. In diesem Beispiel können die Daten für die vorverarbeiteten Bereiche dann vorübergehend in einem Zwischenspeicher bzw. Cache 310 oder an einem anderen Ort gespeichert werden.
  • Ein Erkennungsmodul 314 oder eine Engine bzw. Maschine, welche(s) auch die Form einer Vorrichtung, eines Systems, eines Dienstes oder eines Prozesses annehmen kann, kann dann auf die Bereichsdaten aus dem Cache 310 zugreifen und die Daten mit einem oder mehreren Detektoren verarbeiten. In diesem Beispiel kann die spielspezifische Konfigurationsdatei 312 den/die zu verwendenden Detektor(en) spezifizieren, der/die auch je nach Auswahl oder Typ des zu analysierenden Bereichs variieren kann/können. Die Detektoren können einen beliebigen einer Vielzahl von Detektortypen beinhalten, die sich auf Mustererfassung, Symbolerfassung, Texterfassung, Audioerfassung, Bilderfassung, Bewegungserfassung und dergleichen beziehen können. Das Erfassungsmodul 314 kann auf die relevanten Detektoren aus einem Detektor-Repository 316 oder einem anderen derartigen Ort zugreifen, falls diese nicht bereits in lokalem Speicher gespeichert sind. In verschiedenen Ausführungsformen kann für einen Bereich, der einem HUD entspricht, zumindest eine Text- und Symbolerkennung durchgeführt werden, wie an anderer Stelle hierin beschrieben. Wenn zusätzliche Spieldaten verfügbar sind, kann die Erfassung auch eine Analyse der Benutzereingaben beinhalten, z.B. um Eingaben oder Kombinationen von Eingaben auf einer Tastatur, einem Joypad, einem Controller usw. zu erfassen. Falls die zusätzlichen Daten Ton oder Webcam-Video beinhalten, kann der Detektor auch nach Mustern im Ton suchen, z.B. wo ein Benutzer eine bestimmte Erklärung abgibt, die auf eine Art von Ereignis hinweist, oder nach Mustern im Video, wo der Benutzer eine bestimmte Aktion oder Bewegung ausführt, die auf eine Art von Ereignis hinweist. Es können auch andere Datentypen analysiert werden, z.B. biometrische Daten für einen Spieler, die auf Aktionen hinweisen oder auf Reaktionen hinweisen, die auf bestimmte Arten von Ereignissen hindeuten. Wie erwähnt, kann die Analyse nahezu in Echtzeit unter Verwendung von Datenströmen bzw. Datenstreams oder nach einer Gameplay-Sitzung unter Verwendung gespeicherter Daten erfolgen, neben anderen solchen Optionen. Die Arten verfügbarer Daten können dann zumindest teilweise davon abhängen, wann die Daten analysiert werden.
  • Das Detektormodul 314 kann die ausgewählten Bereiche der Frames (oder anderer Spielinhalte) unter Verwendung des/der spezifizierten Detektors/Detektoren verarbeiten, welches einen oder mehrere Hinweise oder andere derartige Ausgaben erzeugen kann, welche in diesem Beispiel in dem lokalen Cache 318 gespeichert werden können. Die Hinweise können alle geeigneten Hinweise sein, die auf einen Ereignistyp hinweisen oder diesem zugeordnet sind. Als ein Beispiel könnte ein Spiel eine Anzahl von Schädelsymbolen anzeigen, die eine Anzahl von Kills angeben, die ein Spieler während einer aktuellen Gameplay-Sitzung verursacht hat. Eine Änderung in der Anzahl der Schädel zeigt ein Kill-Ereignis an. Ein visueller Hinweis in diesem beispielhaften Anwendungsfall wäre der Schädel selbst, z.B. das Erscheinen des dritten Schädels an einer Position, an der er vorher nicht vorhanden war. Das Erscheinen des dritten Schädels könnte dann als ein Hinweis weitergegeben werden, der zur Bestimmung eines entsprechenden Ereignisses verwendet werden kann. In zumindest einigen Ausführungsformen kann ein Hinweis unabhängig davon sein, was der Hinweis bedeutet, oder auf welches Ereignis ein gegebener Hinweis hindeutet. Die Erfassungs-Engine bzw. -Maschine 314 in diesem Beispiel kann sich nur mit der Erfassung oder Bestimmung des Hinweises befassen und nicht mit dem Versuch, ein Ereignis zu bestimmen.
  • Es kann wünschenswert sein, ein oder mehrere Ereignisse oder Ereignistypen zu bestimmen, die durch den/die ermittelten Hinweis(e) angegeben werden. Dies kann in zumindest einigen Ausführungsformen von einem Hinweis-Ereignis-Übersetzungsmodul 320 durchgeführt werden. Dieses Modul 320 kann Logik enthalten, die durch das spielspezifische Skript bereitgestellt wird, um einen Ereignistyp aus den ermittelten Hinweisen zu bestimmen. Sobald ein Ereignistyp bestimmt ist, ist es in zumindest einigen Ausführungsformen wünschenswert, Informationen für das/die erkannte(n) Ereignis(e) in einer Weise bereitzustellen oder zu kommunizieren, die sowohl für Menschen als auch für Prozesse lesbar ist. In diesem Beispiel wendet ein Hinweis-Ereignis-Übersetzungsmodul 320 ein spielspezifisches Skript 322 oder eine Logik an und verwendet Terminologie aus einem definierten Wörterbuch 324, um die Hinweise in einen für Menschen lesbaren Text umzuwandeln oder zu übersetzen, der mit dem bereitgestellten Wörterbuch übereinstimmt. Verschiedene Detektoren können verschiedene Arten von Ausgaben in verschiedenen Formaten bereitstellen, und ein Hinweis-Ereignis-Übersetzungsmodul 320 kann zumindest ein gewisses Maß an Standardisierung bereitstellen, so dass die Ausgaben über verschiedene Detektoren hinweg verglichen werden können. Dies kann besonders wichtig sein, wenn mehrere Detektoren Hinweise für dieselben Ereignisse erkennen, die dann geeignet korreliert werden müssen. Diese Hinweise können Hinweise beinhalten, die sich auf erkannten Text, Symbole, Bewegungen, Merkmale, Bilder, Töne, Gesten, biometrische Daten usw. beziehen. Das Hinweise-Ereignis-Übersetzungsmodul 320 in zumindest einigen Ausführungsformen kann ein oder mehrere trainierte neuronale Netze, verkettet oder anderweitig, beinhalten, das/die die Hinweise für eine bestimmte Zeit oder einen bestimmten Zeitraum des Gameplays entgegennehmen und einen Ereignistyp ableiten können, der mit einem entsprechenden Konfidenzwert aufgetreten ist. In diesem Beispiel können die übersetzten Ereignisdaten dann in ein Ereignisdatenprotokoll 326 oder einen anderen derartigen Ort für den Zugriff geschrieben werden. Wie bereits erwähnt, kann dieses Protokoll für Menschen lesbar sein, so dass ein Benutzer oder Entwickler die Protokolldaten lesen und verstehen kann. Das Protokoll kann die Daten auch in einem Format speichern, das von einem oder mehreren Prozessen, Algorithmen oder einer oder mehreren Anwendungen verwendet werden kann, um eine oder mehrere Aufgaben auszuführen, wie sie hierin diskutiert wurden, wie z.B. mit Bezug zu der Erzeugung von Montagen oder Höhepunkt-Videos, zu der Analyse von Spielerfähigkeiten, dem Spielertraining, der Spieleinstellung, der Spieleranpassung und dergleichen. In einigen Ausführungsformen wird das Ereignisdatenprotokoll Daten für alle erfassten Ereignisse beinhalten, während in anderen Ausführungsformen das Protokoll nur Daten für bestimmte Arten oder Anzahlen von Ereignissen oder für Ereignisse, die mit zumindest einer Mindestkonfidenz bzw. einem Mindestvertrauenswert bestimmt wurden, neben anderen solchen Optionen, speichern kann. In zumindest einigen Ausführungsformen können Parameter der Erfassung, wie z.B. ein Suchbereich, ein gewünschter Hinweis und eine Zuordnung der Zustandsänderungen des Hinweises zu den Ereignisprotokollen, über menschenlesbare Skripte (z.B. JSON - JavaScript Object Notation) konfigurierbar sein.
  • In zumindest einer Ausführungsform wird die Ausgabe eines Satzes von Detektoren (z.B. fünf oder sechs Detektoren für ein bestimmtes Spiel) eine Übereinstimmung oder eine Nichtübereinstimmung für einen Ereignistyp sein, mit einem entsprechenden Konfidenzwert oder Konfidenzniveau. Diese Hinweise oder andere Werte können dann einem Prozess zugeführt werden, wie z.B. einem spielspezifischen Skript 322 (z.B. JavaScript) in dem Übersetzungsmodul 320, das zusätzliche Heuristiken pro Frame durchführen kann. Diese Heuristiken können helfen, die Bestimmung der Ereignisübereinstimmung zu verbessern. Beispielsweise könnte ein OCR-Detektor eine Übereinstimmung für die Erfassung eines bestimmten Textinhalts melden, jedoch können Heuristiken angewendet werden, um zu sehen, wie und wann sich dieser Textinhalt geändert hat, und um wie viel und über welchen Zeitraum, um zu bestimmen, ob das Ereignis tatsächlich einem Ereignis von Interesse für eine bestimmte Anwendung entspricht. Diese Heuristiken können auch dazu beitragen, dass ein spielagnostisches bzw. das Spiel nicht wahrnehmendes Ereigniserfassungsmodul pro Spiel angepasst werden kann, indem Skript- und Konfigurationsdateien verwendet werden, die die Vorverarbeitungs- und Erkennungslogik beschreiben, die für ein Spiel zu verwenden ist, zusammen mit einem Skript pro Spiel zur Durchführung einer heuristischen Analyse der Daten, die aus dem Kernerfassungsmodul 314 kommen, das in einigen Ausführungsformen auch als eine Ereigniserfassungs-Engine bezeichnet wird.
  • Ein Entwickler oder ein anderer autorisierter Benutzer kann Informationen über zu erfassende Ereignisse von Interesse bereitstellen. 4 veranschaulicht ein System 400 mit einem Ereignismanager 402, der in Übereinstimmung mit verschiedenen Ausführungsformen verwendet werden kann. In diesem Beispiel können aufgezeichnete Gameplay-Daten auf eine Offline-Art analysiert werden. Ein Benutzer kann auf eine Schnittstelle des Ereignismanagers zugreifen, um Frames des aufgezeichneten Gameplays einzuziehen, welche von einem Videodecoder 404 verarbeitet werden können, um eine Vorschau einzelner Frames über eine erste Benutzerschnittstelle 406 zu erzeugen. Der Benutzer kann dann ein oder mehrere interaktive Steuerelemente der Schnittstelle 410 verwenden, um einen oder mehrere Bereiche von Frames zu spezifizieren, die auf Ereignisse von Interesse hinweisen. In vielen Fällen kann es sein, dass es in einem Bild nichts gibt, was auf ein solches Ereignis hinweist, so dass der Benutzer zum nächsten Frame oder zu einem nachfolgenden Frame in dem Video fortschreiten kann. Falls der Benutzer etwas bemerkt, das auf ein Ereignis von Interesse hinweist, kann der Benutzer die Steuerelemente mit der Anzeigeschnittstelle verwenden, um einen Bereich des Frames zu zeichnen oder anzuzeigen, wie z.B. um einen Begrenzungsrahmen um den den Inhalt von Interesse beinhaltenden Bereich zu zeichnen. In einigen Ausführungsformen sollte der Benutzer ein Ausmaß an Padding bzw. Füllung in den Bereich einfügen, während in anderen Ausführungsformen das Padding durch die Werkzeuglogik 408 des Ereignismanagers hinzugefügt werden kann, neben anderen solchen Optionen. Der Benutzer kann die Steuerelemente verwenden, um den Bereich weiter mit einem Ereignistyp sowie einem Typ von zu erkennendem Inhalt zu verknüpfen, wie z.B. einem bestimmten Text, Bild, Symbol, Muster usw. Die Informationen für diese Ereignisse, einschließlich der zu analysierenden Bereiche und zugehörigen Informationen, können dann in eine spielspezifische Konfigurationsdatei 312 für das Spiel geschrieben werden. Wenn dann diesem Spiel zugeordnete Inhalte an dem Ereigniserfassungsmodul 304 empfangen werden, kann auf die spielspezifische Konfigurationsdatei zugegriffen werden, um die zu analysierenden Bereiche sowie die durchzuführende Vorverarbeitung und die für diese Bereiche zu verwendenden Detektoren für dieses bestimmte Spiel zu bestimmen.
  • Wie bereits erwähnt, ist in verschiedenen Ausführungsformen die Erkennungs-Engine oder das Modul spielagnostisch bzw. das Spiel nicht wahrnehmend, erlaubt aber Plug-ins und Skripte, um sie/es für bestimmte Spiele anpassen zu können. Dies kann z.B. die Spezifikation verschiedener Auslöser und Stabilisierungsfaktoren beinhalten. Eine native Kernerfassungs-Engine wird das Spiel, dem das Video entspricht, nicht kennen, wird aber über Informationen über den zu analysierenden Bereich und die durchzuführende Vorverarbeitung sowie über ein Modell, das für den Ereignisabgleich zu verwenden ist, verfügen. In zumindest einer Ausführungsform kann eine Engine unter Verwendung einer Zustandsmaschine einen gefundenen Trigger auslösen, wenn ein Muster in einem Frame gefunden wird, das in einem vorherigen Frame nicht vorhanden war. Ein geänderter Trigger kann auftreten, wenn das Muster zuvor vorhanden war, sich aber geändert hat, wie z.B. wenn sich der Text geändert hat. Es kann auch einen verlorenen Trigger geben, bei dem das Muster zuvor da war, aber in diesem Frame nicht mehr länger da ist. In zumindest einer Ausführungsform können diese Trigger durch eine Stabilitätsschwelle gesteuert werden, die konfigurierbar und parametrierbar ist. Ein Benutzer kann spezifizieren, dass erwartet wird, dass ein Bild über zumindest eine bestimmte Zeitspanne von zeitlichen Abtastungen mit einer Mindestkonfidenz erkannt wird. Als ein Beispiel könnte die Spezifikation einen Wunsch dahingehend angeben, ein Bild oder ein Symbol in dem Bereich mit zumindest 80 % Konfidenz über drei Abtastungen hinweg zu erkennen, wie z.B. dann, wenn die Abtastrate alle 100 ms ist. Wie erwähnt, können für bestimmte Arten von Ereignissen spezifische Auslöser festgelegt werden, entweder im Voraus oder im Nachhinein, wenn Ereignisdaten erzeugt oder gefiltert werden sollen.
  • Die Ereigniserfassungs-Engine 304 kann Teil eines Gesamt-Frameworks oder einer Plattform sein, die es ermöglicht, unter Verwendung verschiedener Arten von Spieldaten Ereignisse für verschiedene Zwecke zu erfassen, zu kommunizieren und darauf zu reagieren. Ein Vorteil eines solchen Frameworks ist, dass es Benutzern ermöglichen kann, Plug-ins bereitzustellen, um verschiedene Arten von zu verwendenden Detektoren hinzuzufügen sowie zusätzliche Arten von zu erfassenden Ereignissen zu definieren. Ein Benutzer kann auch auswählen, welche Arten von Ereignissen für ein bestimmtes Spiel oder eine bestimmte Anwendung von Interesse sind, sowie die Form der Ausgabe, die protokolliert, gespeichert oder kommuniziert werden soll. Ein Benutzer kann auch eine Art der Ausgabe der Pipeline festlegen, wie z.B. ob Ereignisdaten in ein Protokoll geschrieben, in einem zentralen Repository gespeichert oder direkt an ein Ziel zur Verarbeitung weitergeleitet werden sollen usw.
  • In einigen Ausführungsformen kann der Benutzer auch zumindest eine bestimmte Verarbeitungsstufe für die Ereignisdaten festlegen. In einigen Ausführungsformen könnte ein Benutzer z.B. wünschen, dass automatisch ein Höhepunkt- oder Montagevideo für ein Segment des Gameplays generiert wird. In einer Ausführungsform kann dies eine Anwendung veranlassen, das Ereignisprotokoll zu lesen, um Ereignisse zu identifizieren, die ein oder mehrere Kriterien für die Aufnahme in die zu erzeugende Videodatei erfüllen. Dabei könnte es sich beispielsweise um allgemeine Kriterien für ein Höhepunkt-Video handeln oder um spiel-, benutzer-, sitzungs- oder instanzspezifische Kriterien, z.B. um ein Video zu erzeugen, das nur Kills, Unfälle oder bestimmte Arten von Ereignissen zeigt. Die Kriterien können z.B. auf die Ereignisdaten in einem Ereignisprotokoll und identifizierte Ereignisse, die die Kriterien erfüllen, angewendet werden. Zur Videoerstellung kann dies dann dazu führen, dass die Anwendung aus einer gespeicherten Kopie des Gameplay-Sitzungs-Videos Segmente des Videos zieht, die diesen Ereignissen entsprechen. Diese können z.B. eine Anzahl oder Dauer von Videoframes vor und nach dem Zeitpunkt des Ereignisses in der Gameplay-Sitzung beinhalten. Die Dauer oder Anzahl kann zum Teil von dem Spiel und der Art von Ereignis abhängen. Die Segmente können dann aneinandergereiht werden, mit entsprechendem Audio und möglicherweise hinzugefügtem Text oder zusätzlichem Inhalt in Bezug auf die Ereignisse, und dann zur Anzeige bereitgestellt werden. Das Video kann für verschiedene Anwendungsfälle und sofern dies zulässig ist einem Spieler des Spiels zur Verfügung stehen oder für andere Benutzer oder Betrachter zugänglich sein. Ein solches Video kann auch für andere Zwecke verwendet werden, wie z.B. zur Leistungsüberprüfung und zum Coaching von E-Sport-Spielern.
  • In einigen Ausführungsformen können ein oder mehrere Detektoren trainierten Modellen maschinellen Lernens entsprechen, wie z.B. trainierten neuronalen Netzen. Diese Modelle können für bestimmte Spiele trainiert sein, um bestimmte Aktionen, Objekte, Bewegungen oder Vorkommnisse zu erfassen, die bestimmten Arten von interessierenden Aktionen entsprechen. Es können auch andere Detektoren verwendet werden, wie hier diskutiert, die sich auf Algorithmen zur Zeichenerkennung, Mechanismen optischen Flusses, Merkmalserkennung und dergleichen beziehen können.
  • Zumindest in einigen Ausführungsformen kann es wünschenswert sein, eine spielspezifische Anpassung vorzunehmen, da sich Inhalt zwischen Spielen signifikant ändern kann. Während ein Objekt, wie z.B. eine Hunderasse, in tatsächlichem Video ein relativ einheitliches Aussehen haben kann, kann die künstlerische Darstellung dieser Rasse von Spiel zu Spiel erheblich variieren. Objekte wie z.B. Waffen können eine Vielzahl von Erscheinungsbildern haben, die von Spiel zu Spiel und sogar innerhalb von Spielen variieren, sodass zumindest ein gewisses Maß an spielspezifischem Training oder Ereignisdefinitionen für verbesserte Leistung genutzt werden kann. Ansätze, die HUDs oder andere Arten von Informationsanzeigen verwenden, die sowohl im Aussehen als auch in der Position relativ konsistent sind, können ebenfalls dazu beitragen, die Genauigkeit zu verbessern und den Anpassungsaufwand zu verringern, anstatt zu versuchen, Aktionen auf der Grundlage von Objekten zu identifizieren, die im Laufe einer Spielsitzung stark im Aussehen variieren können. Ferner können Spieleranpassungen vorgenommen werden, die das Aussehen und die Funktionalität des Spiels weiter verändern können, aber alle Änderungen an einem HUD werden wahrscheinlich während einer Spielsitzung konsistent sein.
  • In einigen Ausführungsformen können Ereignisdaten auch dazu verwendet werden, Aspekte des Gameplays zu ändern. In einer Einzelspieler-Kampagnensitzung könnte das Spiel beispielsweise eine Anzahl der Gegner oder den Schwierigkeitsgrad der Computer-KI auf der Grundlage von Informationen in den Ereignisdaten anpassen. Bei Online-Spielen könnten jüngere oder unerfahrene Spieler auf der Grundlage von erfassten Ereignissen Tipps zur Verbesserung des Gameplays oder zum Verständnis, wie das Spiel zu spielen ist, erhalten. Spieler können auch mit ähnlichen Spielern oder Spielern mit kompatiblen Fähigkeiten zusammengebracht werden, neben anderen solchen Optionen. Falls ein Spieler aufgrund von Ereignisdaten eine Art von Minispiel oder einen Gameplay-Stil gegenüber einem anderen zu bevorzugen scheint, kann das Spiel auswählen, die Art der Spieloptionen anzupassen, die einem Benutzer präsentiert werden, um das Spiel angenehmer zu gestalten. Verschiedene andere Modifikationen können ebenfalls in Übereinstimmung mit verschiedenen Ausführungsformen vorgenommen werden.
  • In zumindest einer Ausführungsform können auf Computer Vision und maschinellem Lernen basierende Techniken verwendet werden, um Spielinhalte zu verarbeiten und Ereignisse zu erfassen. In zumindest einer Ausführungsform können Spielinhalte analysiert werden, um bestimmte Arten von Merkmalen in einer Szene zu erkennen, wie z.B. Szenen, in welchen ein Gameplay stattfindet, Objekte, die in einer Spielsitzung erkannt wurden und die sich auf das Gameplay beziehen, und Aktionen, die von einem Spieler (oder einem Avatar oder einem vom Spieler gesteuerten Gameplay-Element) während einer oder mehrerer Gameplay-Sitzungen durchgeführt werden. In zumindest einer Ausführungsform können ein oder mehrere Gameplay-Segmente für eine Spielszene analysiert werden, und kann ein Modell eines trainierten neuronalen Netzwerks einen Satz von Schlüsselwörtern generieren, die für für diese Spielszene ermittelte Merkmale repräsentativ sind. In zumindest einer Ausführungsform können diese Schlüsselwörter aggregiert und an eine Erfassungs-Engine übergeben werden.
  • In zumindest einer Ausführungsform wird zumindest ein neuronales Netz pro Spiel trainiert. In zumindest einer Ausführungsform wird ein Satz von neuronalen Netzen pro Spiel trainiert, wobei verschiedene Netze dazu trainiert werden, verschiedene Arten von Merkmalen, wie beispielsweise Szenen, Aktionen oder Objekte zu erkennen. In zumindest einer Ausführungsform kann ein Netzwerk trainiert werden, das zur Inferenzierung über eine Vielzahl von Spielen oder zumindest über Spiele eines bestimmten Typs oder einer bestimmten Kategorie mit zumindest einigermaßen ähnlichem Gameplay verwendet werden kann. In zumindest einer Ausführungsform könnte ein erstes Modell dazu trainiert werden, Merkmale eines Spieltyps, wie z.B. eines Ego-Shooters, zu erkennen, während ein anderes Modell dazu trainiert werden könnte, Merkmale eines Spieltyps, wie z.B. eines Platformer- oder Third-Person-Adventure-Spiels, zu erkennen, da es unterschiedliche Arten von Merkmalen zu erkennen gäbe. In zumindest einer Ausführungsform können Arten der zu erkennenden Merkmale je nach Spiel oder Spieltyp variieren. In zumindest einer Ausführungsform können Trainingsdaten für diese Modelle Videoströme bzw. Videostreams beinhalten, die Anmerkungen für die zu erkennenden Merkmalstypen für dieses Spiel oder diesen Spieltyp beinhalten. In zumindest einer Ausführungsform werden diese Anmerkungen manuell oder mit Modellierungsunterstützung durchgeführt. In zumindest einer Ausführungsform kann ein Modell dazu konfiguriert sein, ein oder mehrere erkannte Merkmalsschlüsselwörter mit entsprechenden Konfidenzwerten auszugeben, und Schlüsselwörter mit höheren Konfidenzwerten oder Werten, die zumindest ein minimales Konfidenzkriterium erfüllen, können zur Aktualisierung eines Spielerprofils oder zur Erzeugung von Empfehlungen verwendet werden.
  • 5 veranschaulicht eine beispielhafte Spielumgebung 500, in welcher Aspekte der verschiedenen Ausführungsformen implementiert sein können. In diesem Beispiel kann ein Spieler eine Spielervorrichtung 502 dazu verwenden, ein Spiel über eine Spielanwendung 510 zu spielen. Die Spielervorrichtung 502 kann eine beliebige geeignete Vorrichtung sein, die zumindest einen Prozessor 514, nicht-flüchtigen Speicher 516 und Speicher 512 zum Ausführen von Spielinhalten oder zumindest zum Empfangen von Spielinhalten und Veranlassen, dass diese Inhalte einem Spieler über eine Anzeige 508, ein Headset 548 oder einen anderen derartigen Mechanismus präsentiert werden, beinhaltet. Derartige Vorrichtungen beinhalten zum Beispiel Desktop-Computer, Notebook-Computer, Smartphones, Tablet-Computer, Spielkonsolen, Set-Top-Boxen und dergleichen. In einigen Ausführungsformen kann das Spiel einen oder mehrere Online-Aspekte aufweisen, die erfordern, dass das Spielervorrichtung 502 mit zumindest einem Spielserver 518 über zumindest ein Netzwerk 504 kommuniziert. Das (die) Netzwerk(e) kann (können) jedes geeignete Netzwerk zum Kommunizieren von Spieldaten beinhalten, wie z.B. ein kabelgebundenes oder drahtloses Netzwerk, das Internet, ein Mobilfunknetz, ein Ethernet, ein lokales Netzwerk (LAN), ein Peer-to-Peer-Netzwerk usw. Der Spielserver kann eine Spielsitzung hosten, an der Spieler beteiligt sein können, die andere Spielervorrichtungen 520 verwenden, die über zumindest eines der Netzwerke 504 kommunizieren, das dasselbe wie das von der Spielervorrichtung 502 verwendete oder ein anderes sein kann.
  • Wie erwähnt, wird es in einigen Ausführungsformen wünschenswert sein, eine Ereigniserfassung für eine Gameplay-Sitzung für einen oder mehrere dieser Spieler durchzuführen. In verschiedenen Ausführungsformen kann die Ereigniserfassung auf einer Spielervorrichtung 502, auf dem Spielserver 518 oder auf einer zugehörigen Vorrichtung, durch einen Drittanbieter von Diensten oder Ressourcen aus einer Anbieterumgebung 506 oder durch ein Drittanbieter-Inhaltsanbietersystem 542 durchgeführt werden. In einigen Ausführungsformen kann eine Entität eine oder mehrere dieser Rollen spielen. Bei Ausführungsformen, bei denen Medien wie beispielsweise Audio und/oder Video analysiert werden, können diese Daten an einem beliebigen geeigneten Ort gespeichert oder von dort aus gestreamt werden. Beispielsweise können die Gameplay-Medien auf der Spielervorrichtung 502 gespeichert werden, auf der sie angezeigt werden, auf dem Spielserver 518, der für die Verwaltung des Spielstatus verantwortlich ist, oder auf einem Drittsystem oder einer Umgebung 542, 506, die einen Stream der Inhalte empfängt. In ähnlicher Weise kann die Ereigniserfassung, obwohl sie in diesem Beispiel „in der Cloud“ von einem Ressourcenanbieter durchgeführt wird, wie sie als Teil eines Ereigniserfassungsdienstes angeboten werden kann, auf jedem dieser oder anderer solcher Systeme oder Vorrichtungen von diesen oder anderen Parteien durchgeführt werden.
  • In diesem Beispiel kann ein Medienstream von der Spielervorrichtung 502 über ein Netzwerk 504 an eine Ressourcenumgebung 506 gesendet werden, um die Ereigniserfassung durchzuführen. Wie erörtert, können zumindest einige der Komponenten der Ressourcenumgebung Gegenstücke auf der Spielervorrichtung haben, um zumindest einige der gleichen Funktionen auszuführen. Unabhängig vom Standort können die Mediendaten an einer Schnittstelle oder Schnittstellenschicht 522 empfangen werden, die die Medien an das entsprechende Ziel leiten kann. Die Schnittstellenschicht kann verschiedene Komponenten umfassen, wie beispielsweise (ohne darauf beschränkt zu sein) eine oder mehrere Anwendungsprogrammierschnittstellen (APIs), Router, Switches, Lastausgleicher, Webserver und dergleichen. In diesem Beispiel können die Medien an einen Ereignismanager 524 geleitet werden, der dafür verantwortlich ist, dass die Medien analysiert und ermittelte Ereignisdaten verfügbar gemacht werden, z.B. für autorisierte Benutzer, die ein Konto beim Ressourcenanbieter haben. Wie in Bezug auf 3 erörtert wurde, kann der Ereignismanager 524 die Medien an eine Ereigniserfassungs-Engine 526 weiterleiten, die die spielspezifische Konfiguration 530 und Skriptdaten 532 von einem Ereignismanager 528 verwenden kann, um Ereignisse zu erfassen, die an einen Ereignisdatenmanager 536 weitergeleitet und in ein Ereignisprotokoll 534 geschrieben werden können. Der Ereignisdatenmanager kann auch Spieldaten 538 und Benutzerdaten 540 entsprechend den Ereignisdaten in dem Ereignisdatenprotokoll 534 speichern. Der Ereignisdatenmanager 524 kann dann diese Ereignisdaten einer geeigneten Entität zur Verfügung stellen. Dies kann z.B. ein Bereitstellen der Ereignisdaten an die Spielervorrichtung 502 beinhalten, welche dann eine lokale Kopie der Gameplay-Medien dazu verwenden kann, ein Höhepunkt-Video oder eine Montage für die Spielsitzung oder über gespeicherte Wiederholungen aus mehreren Spielsitzungen hinweg zu erstellen. In ähnlicher Weise könnte ein Spielserver 518 die Ereignisdaten empfangen, um ein Höhepunkt- oder Montagevideo für eine Online-Spielsitzung zu erzeugen, das dann auch von Spielern auf den anderen Spielervorrichtungen 520 angesehen werden kann. Im Falle von Online-Videohosting oder -Streaming könnte ein Höhepunkt-Video unter Verwendung der Ereignisdaten generiert werden, das dann von einem Drittanbieter von Inhalten 542 wie beispielsweise YouTube®, TwitchⓇ oder Facebook LiveⓇ zur Verfügung gestellt werden kann, wie es beispielsweise mit GeForce ExperienceⓇ von NVIDIA übertragen werden kann.
  • In einigen Ausführungsformen können zusätzliche Daten verwendet werden, um die Genauigkeit der Ereigniserfassung, wie hierin erörtert, zu verbessern. Diese Daten können z.B. biometrische Daten umfassen, die von einem Spieler mit einem oder mehreren biometrischen Trackern 544, wie z.B. einem Fitness-Tracker oder Herzfrequenzmonitor, erfasst wurden. Die Daten können Videoaufnahmen des Spielers während des Gameplays enthalten, die von einer Webcam aufgenommen wurden und Änderungen im Verhalten oder Aussehen des Spielers während des Gameplays anzeigen können. Eine Hörsprechgarnitur bzw. ein Headset 548 oder eine andere Vorrichtung, die ein Mikrofon beinhaltet, wie z.B. die Webcam, kann auch Ausrufe des Benutzers oder Änderungen im Atemmuster aufzeichnen, die bestimmten Arten von Ereignissen entsprechen können. Verschiedene andere Datentypen und Mechanismen zum Aufnehmen dieser Daten können im Rahmen verschiedener Ausführungsformen ebenfalls verwendet werden.
  • 6 veranschaulicht einen beispielhaften Prozess 600 zur Durchführung einer Ereigniserfassung, der in Übereinstimmung mit verschiedenen Ausführungsformen verwendet werden kann. Es versteht sich für diesen und andere hierin erörterte Prozesse, dass es zusätzliche, alternative oder weniger Schritte geben kann, die in ähnlicher oder alternativer Reihenfolge oder parallel im Rahmen der verschiedenen Ausführungsformen durchgeführt werden, sofern nicht anders angegeben. In diesem Beispiel werden Medien 602 erhalten, die einer Gaming-Sitzung für einen Spieler eines bestimmten Spiels entsprechen. Die Medien können z.B. Audio- und Videodaten enthalten, die über einen Datenstrom empfangen oder aus einem Medienspeicher übertragen werden können, neben anderen solchen Optionen. Eine Art oder ein Ausmaß einer Vorverarbeitung, die an den Medien durchzuführen ist, kann bestimmt werden 604, wie z.B. durch Betrachten einer Konfigurationsdatei, die dem spezifischen Spiel entspricht. Die Vorverarbeitung kann in einigen Ausführungsformen die Bestimmung eines oder mehrerer Bereiche der Medien beinhalten, die mit einem bestimmten interessierenden Ereignistyp verbunden sind. Eine weitere Vorverarbeitung eines solchen Bereichs kann ebenfalls durchgeführt werden, wobei dies zumindest teilweise von der Art des Mediums oder des Ereignisses abhängen kann. Zum Beispiel können Audiodaten verarbeitet werden, um Rauschen zu reduzieren. Bilddaten können einem Upsampling unterzogen, in einen anderen Farbraum (z.B. Graustufen oder HSV) konvertiert und schwellenwertgefiltert werden, um Hintergrundpixel zu entfernen. Verschiedene andere Arten der Vorverarbeitung können ebenfalls verwendet werden, wie an anderer Stelle hierin erörtert und vorgeschlagen wurden. Die bestimmte Vorverarbeitung kann durchgeführt werden 606, um einen oder mehrere verarbeitete Ereignisbereiche für die Analyse zu erzeugen.
  • Um die Analyse durchzuführen, können ein oder mehrere zu verwendende Detektoren bestimmt werden 608, wie sie auch in einer Konfigurationsdatei für ein bestimmtes Spiel spezifiziert sein können, und können zumindest teilweise von der Art der zu analysierenden Medien oder des zu analysierenden Ereignisses abhängig sein. Wie erörtert, können sich derartige Detektoren auf Objektdetektoren, Symboldetektoren, OCR-Engines, Mechanismen optischen Flusses und dergleichen beziehen. Der/die zu verwendende(n) Detektor(en) kann/können auch zwischen Ereignisbereichen variieren, falls mehr als ein Ereignisbereich für einen bestimmten Frame, ein bestimmtes Segment oder eine bestimmte Instanz von Gameplay-Medien identifiziert wird. Der/die ermittelte(n) Detektor(en) kann/können dann auf den/die jeweilige(n) Bereich(e) angewendet werden 610. Die Detektoren in diesem Beispiel können Ereignishinweise zusammen mit entsprechenden Konfidenz- bzw. Vertrauenswerten generieren. In einigen Ausführungsformen können zusätzliche Heuristiken auf diese Hinweise angewendet werden, um zu bestimmen, ob Kriterien für interessierende Ereignisse erfüllt sind. Es kann bestimmt werden 612, ob zumindest ein Ereignis von Interesse oder ein Ereignis eines bestimmten Typs identifiziert wurde. Falls nicht, können die Ereignisdaten verworfen werden 614. Falls zumindest ein Ereignis mit zumindest einer minimalen Konfidenz bzw. Mindestwahrscheinlichkeit erfasst wurde, dann können in einigen Ausführungsformen die generierten Hinweise für das Ereignis so in eine textuelle Beschreibung umgewandelt werden 616, dass sie einem Ereigniswörterbuch entsprechen. Die Beschreibung kann sowohl prozess- als auch menschenlesbar sein und kann einem Wörterbuch entsprechen, das über mehrere Spiele hinweg konsistent ist. Die textuellen Beschreibungen können dann dazu veranlasst werden 618, in einem Ereignisprotokoll für die Sitzung und/oder den Spieler gespeichert zu werden, und kann beispielsweise auf einem Spielserver, einem Spielervorrichtung oder einem anderen derartigen Ort gespeichert werden. Diese Daten können jeder autorisierten Partei aus jedem geeigneten Grund oder für jede geeignete Verwendung zur Verfügung gestellt werden, wie hier erörtert und vorgeschlagen wurde.
  • 7 veranschaulicht einen beispielhaften Prozess 700 zur Erfassung eines Ereignisses, wie in Bezug auf 6 erörtert wurde, im Fall von Videodaten, die in einem Videostream empfangen wurden. In diesem Beispiel, welches in Übereinstimmung mit verschiedenen Ausführungsformen verwendet werden kann, kann ein Frame von Videodaten auf einem Videostream empfangen werden 702, der einer Gameplay-Sitzung für einen Spieler eines Spiels entspricht. Ein spielspezifischer Ereignisbereich kann innerhalb des Frames bestimmt werden 704. Der Bereich kann in zumindest einigen Ausführungsformen durch eine spielspezifische Konfigurationsdatei spezifiziert werden, was der Position eines HUD oder einer anderen derartigen Anzeige entsprechen kann. Die Vorverarbeitung des Ereignisbereichs kann durchgeführt werden 706, um zumindest Hintergrundpixeldaten zu entfernen. Dies kann z.B. ein Durchführen eines Upscalings bzw. einer Hochskalierung und ein Wechseln zu einem bestimmten Farbraum, ein Durchführen einer Rauschentfernung und dann eine Schwellenwertfilterung zur Entfernung von Hintergrundrauschen beinhalten. Wie erwähnt, kann eine solche Vorverarbeitung in einem Bild resultieren, das im Wesentlichen binarisiert ist, welches die Leistung von OCR-Engines zumindest für Texterfassung verbessern kann. Eine spielspezifische Zeichen-, Symbol- und/oder Objekterkennung kann an dem verarbeiteten Bereich durchgeführt werden 708, um Ereignishinweise zu erzeugen, wobei Detektoren verwendet werden, die durch die spielspezifische Konfigurationsdatei festgelegt sein können. Es kann bestimmt werden 710, z.B. durch Verwendung verschiedener Heuristiken, ob diese Hinweise einem Ereignis von Interesse oder einem bestimmten Typ für das spezifische Spiel entsprechen. Falls bestimmt wird 712, dass ein solches Ereignis erfasst wurde, dann können Ereignisdaten für das Ereignis in ein Ereignisprotokoll oder an einen anderen derartigen Ort geschrieben 714 und für den Zugriff und die Verwendung verfügbar gemacht werden. Falls kein Ereignis erfasst wurde, dann können die Ereignisdaten und die verwandten Daten aus der Verarbeitung verworfen werden 716.
  • INFERENZIERUNGS- UND TRAININGSLOGIK
  • 8 zeigt eine Inferenzierungs- und/oder Trainingslogik 815, die dazu verwendet wird, Inferenzierungs- und/oder Trainingsoperationen in Verbindung mit zumindest einer Ausführungsform durchzuführen. Details zur Inferenzierungs- und/oder Trainingslogik 815 werden nachstehend in Verbindung mit 8 und 9 beschrieben.
  • In zumindest einer Ausführungsform kann die Inferenzierungs- und/oder Trainingslogik 815, ohne darauf beschränkt zu sein, einen Code- und/oder Datenspeicher 801 beinhalten, um Vorwärts- und/oder Ausgangsgewichte und/oder Eingangs-/ Ausgangsdaten und/oder andere Parameter zu speichern, um Neuronen oder Schichten eines neuronalen Netzes zu konfigurieren, das in Aspekten einer oder mehrerer Ausführungsformen zur Inferenzierung trainiert und/oder zum Inferenzieren verwendet wird. In zumindest einer Ausführungsform kann die Trainingslogik 815 einen Code- und/oder Datenspeicher 801 beinhalten oder mit diesem gekoppelt sein, um einen Graphikcode bzw. Graphencode oder eine andere Software zu speichern, um das Zeitverhalten und/oder die Reihenfolge zu steuern, in welcher Gewichts- und/oder Parameterinformationen zu laden sind, um eine Logik einschließlich Ganzzahl- und/oder Gleitkommaeinheiten (zusammenfassend als Arithmetiklogik-einheiten (ALUs) bezeichnet) zu konfigurieren. In zumindest einer Ausführungsform lädt Code, wie z.B. Graphencode, Gewichts- oder andere Parameterinformationen in Prozessor-ALUs auf der Grundlage einer Architektur eines neuronalen Netzwerks, dem dieser Code entspricht. In zumindest einer Ausführungsform speichert der Code und/oder der Datenspeicher 801 Gewichtsparameter und/oder Eingabe-/Ausgabedaten jeder Schicht eines neuronalen Netzes, das während der Vorwärtspropagierung von Eingabe-/Ausgabedaten und/oder Gewichtsparametern während des Trainings und/oder der Inferenzierung unter Verwendung von Aspekten einer oder mehrerer Ausführungsformen trainiert oder in Verbindung mit einer oder mehrerer Ausführungsformen verwendet wird. In zumindest einer Ausführungsform kann jeder beliebige Teil des Code- und/oder Datenspeichers 801 innerhalb anderen On-Chip- oder Off-Chip-Datenspeichers enthalten sein, einschließlich des L1-, L2- oder L3-Caches oder Systemspeichers eines Prozessors.
  • In zumindest einer Ausführungsform kann jeder Teil des Code- und/oder Datenspeichers 801 intern oder extern zu einem oder mehreren Prozessoren oder anderen Hardware-Logikvorrichtungen oder -Schaltungen sein. In zumindest einer Ausführungsform kann der Code und/oder der Code- und/oder Datenspeicher 801 ein Cache-Speicher, ein dynamischer, zufällig adressierbarer Speicher bzw. dynamischer Direktzugriffsspeicher („DRAM“), ein statischer, zufällig adressierbarer Speicher bzw. statischer Direktzugriffsspeicher („SRAM“), ein nichtflüchtiger Speicher (z.B. ein Flash-Speicher) oder ein anderer Speicher sein. In zumindest einer Ausführungsform kann die Wahl, ob der Code- und/oder Code- und/oder Datenspeicher 801 beispielsweise intern oder extern zu einem Prozessor ist oder aus DRAM, SRAM, Flash oder einem anderen Speichertyp besteht, von verfügbarem Speicher auf dem Chip gegenüber Speicher außerhalb des Chips, Latenzanforderungen der durchgeführten Trainings- und/oder Inferenzierungs-Funktionen, der Stapelgröße von Daten, die bei der Inferenzierung und/oder dem Training eines neuronalen Netzwerks verwendet werden, oder einer Kombination dieser Faktoren abhängen.
  • In zumindest einer Ausführungsform kann die Inferenzierungs- und/oder Trainingslogik 815, ohne darauf beschränkt zu sein, einen Code- und/oder Datenspeicher 805 enthalten, um Rückwärts- und/oder Ausgangsgewichts- und/oder Eingabe-/Ausgabedaten zu speichern, die Neuronen oder Schichten eines neuronalen Netzes entsprechen, das in Aspekten einer oder mehrerer Ausführungsformen trainiert und/oder zum Inferieren verwendet wird. In zumindest einer Ausführungsform speichert der Code- und/oder Datenspeicher 805 Gewichtsparameter und/oder Eingabe-/Ausgabedaten jeder Schicht eines neuronalen Netzes, das während der Rückwärtspropagation von Eingabe-/Ausgabedaten und/oder Gewichtsparametern während des Trainings und/oder der Inferenzierung unter Verwendung von Aspekten einer oder mehrerer Ausführungsformen trainiert oder in Verbindung mit einer oder mehrerer Ausführungsformen verwendet wird. In zumindest einer Ausführungsform kann die Trainingslogik 815 einen Code- und/oder Datenspeicher 805 beinhalten oder mit diesem gekoppelt sein, um Graphencode oder eine Software zu speichern, um das Zeitverhalten und/oder die Reihenfolge zu steuern, in welcher Gewichts- und/oder andere Parameterinformationen zu laden sind, um Logik einschließlich Ganzzahl- und/oder Gleitkommaeinheiten (zusammenfassend als Arithmetiklogikeinheiten (ALUs) bezeichnet) zu konfigurieren. In zumindest einer Ausführungsform lädt Code, wie z.B. Graphencode, Gewichts- oder andere Parameterinformationen in Prozessor-ALUs, basierend auf einer Architektur eines neuronalen Netzwerks, dem dieser Code entspricht. In zumindest einer Ausführungsform kann ein beliebiger Teil des Code- und/oder Datenspeichers 805 in anderen On-Chip- oder Off-Chip-Datenspeicher, einschließlich des L1-, L2- oder L3-Caches oder Systemspeichers eines Prozessors, aufgenommen sein. In zumindest einer Ausführungsform kann jeder Teil des Code- und/oder Datenspeichers 805 intern oder extern zu einem oder mehreren Prozessoren oder anderen Hardware-Logikvorrichtungen oder -Schaltungen sein. In zumindest einer Ausführungsform kann der Code- und/oder Datenspeicher 805 ein Cache-Speicher, DRAM, SRAM, nichtflüchtiger Speicher (z.B. Flash-Speicher) oder ein anderer Speicher sein. In zumindest einer Ausführungsform kann die Wahl, ob der Code- und/oder Datenspeicher 805 beispielsweise intern oder extern zu einem Prozessor ist oder aus DRAM, SRAM, Flash oder einem anderen Speichertyp besteht, von verfügbarem Speicher auf dem Chip gegenüber Speicher außerhalb des Chips, Latenzanforderungen der durchgeführten Trainings- und/oder Inferenzierungs-Funktionen, einer Stapelgröße der Daten, die bei der Inferenzierung und/oder dem Training eines neuronalen Netzwerks verwendet werden, oder einer Kombination dieser Faktoren abhängen.
  • In zumindest einer Ausführungsform können der Code- und/oder Datenspeicher 801 und der Code- und/oder Datenspeicher 805 separate Speicherstrukturen sein. In zumindest einer Ausführungsform können der Code- und/oder Datenspeicher 801 und der Code- und/oder Datenspeicher 805 dieselbe Speicherstruktur sein. In zumindest einer Ausführungsform können der Code- und/oder Datenspeicher 801 und der Code- und/oder Datenspeicher 805 teilweise dieselbe Speicherstruktur und teilweise separate Speicherstrukturen sein. In zumindest einer Ausführungsform kann ein beliebiger Teil des Code- und/oder Datenspeichers 801 und des Code- und/oder Datenspeichers 805 in anderem On-Chip- oder Off-Chip-Datenspeicher, einschließlich des L1-, L2- oder L3-Cache oder Systemspeichers eines Prozessors, enthalten sein.
  • In zumindest einer Ausführungsform kann die Inferenzierungs- und/oder Trainingslogik 815, ohne darauf beschränkt zu sein, eine oder mehrere Arithmetiklogikeinheit(en) („ALU(s)“) 910, einschließlich Ganzzahl- und/oder Gleitkommaeinheiten, enthalten, um logische und/oder mathematische Operationen basierend zumindest teilweise auf oder angegeben durch Trainings- und/oder Inferenzierungs-Code (z.B. Graphencode) durchzuführen, deren Ergebnis in einem Aktivierungsspeicher 920 gespeicherte Aktivierungen (z.B. Ausgabewerte von Schichten oder Neuronen innerhalb eines neuronalen Netzes) erzeugen kann, die Funktionen von in einem Code- und/oder Datenspeicher 901 und/oder einem Code- und/oder Datenspeicher 905 gespeicherten Eingabe/Ausgabe- und/oder Gewichtsparameterdaten sind. In zumindest einer Ausführungsform werden in dem Aktivierungsspeicher 920 gespeicherte Aktivierungen in Übereinstimmung mit linearer algebraischer und/oder matrixbasierter Mathematik erzeugt, die von ALU(s) im Ansprechen auf die Durchführung von Anweisungen oder anderen Codes ausgeführt wird, wobei in dem Code- und/oder Datenspeicher 905 und/oder dem Code- und/oder Datenspeicher 901 gespeicherte Gewichtswerte als Operanden verwendet werden, zusammen mit anderen Werten, wie z.B. Bias-Werten, Gradienteninformationen, Momentenwerten oder anderen Parametern oder Hyperparametern, von welchen beliebige oder alle in dem Code- und/oder Datenspeicher 905 oder dem Code- und/oder Datenspeicher 901 oder einem anderen Speicher auf oder außerhalb des Chips gespeichert sein können.
  • In zumindest einer Ausführungsform sind ALU(s) in einem oder mehreren Prozessoren oder anderen Hardware-Logikvorrichtungen oder -Schaltungen enthalten, während in einer anderen Ausführungsform ALU(s) extern zu einem Prozessor oder einer anderen Hardware-Logikvorrichtung oder einer Schaltung sein können, die sie verwenden (beispielsweise ein Co-Prozessor). In zumindest einer Ausführungsform können ALUs in den Ausführungseinheiten eines Prozessors oder anderweitig in einer Bank von ALUs enthalten sein, auf die die Ausführungseinheiten eines Prozessors zugreifen können, und zwar entweder innerhalb desselben Prozessors oder verteilt auf verschiedene Prozessoren unterschiedlichen Typs (z.B. zentrale Verarbeitungseinheiten, Grafikverarbeitungseinheiten, feste Funktionseinheiten usw.). In zumindest einer Ausführungsform können sich der Code- und/oder Datenspeicher 901, der Code- und/oder Datenspeicher 905 und der Aktivierungsspeicher 920 auf demselben Prozessor oder einer anderen Hardware-Logikvorrichtung oder -schaltung befinden, wohingegen sie in einer anderen Ausführungsform in verschiedenen Prozessoren oder anderen Hardware-Logikvorrichtungen oder -schaltungen oder in einer Kombination aus gleichen und verschiedenen Prozessoren oder anderen Hardware-Logikvorrichtungen oder -schaltungen untergebracht sein können. In zumindest einer Ausführungsform kann ein beliebiger Teil des Aktivierungsspeichers 920 in anderem On-Chip- oder Off-Chip-Datenspeicher enthalten sein, einschließlich des L1-, L2- oder L3-Caches oder des Systemspeichers eines Prozessors. Ferner kann der Inferenzierungs- und/oder Trainingscode zusammen mit anderem Code gespeichert sein, auf den ein Prozessor oder eine andere Hardware-Logik oder -Schaltung zugreifen kann und der unter Verwendung einer Abruf-, Dekodier-, Planungs-, Ausführungs-, Rückzugs- und/oder von anderen logischen Schaltungen eines Prozessors abgerufen und/oder verarbeitet wird.
  • In zumindest einer Ausführungsform kann der Aktivierungsspeicher 920 ein Cache-Speicher, DRAM, SRAM, nichtflüchtiger Speicher (z.B. Flash-Speicher) oder ein anderer Speicher sein. In zumindest einer Ausführungsform kann sich der Aktivierungsspeicher 920 vollständig oder teilweise innerhalb oder außerhalb eines oder mehrerer Prozessoren oder anderer logischer Schaltungen befinden. In zumindest einer Ausführungsform kann die Wahl, ob der Aktivierungsspeicher 920 z.B. intern oder extern zu einem Prozessor ist oder aus DRAM, SRAM, Flash oder einem anderen Speichertyp besteht, von verfügbarem Speicher auf dem Chip im Vergleich zu außerhalb des Chips, Latenzanforderungen der ausgeführten Trainings- und/oder Inferenzierungs-Funktionen, der Stapelgröße der bei der Inferenzierung und/oder dem Training eines neuronalen Netzes verwendeten Daten oder einer Kombination dieser Faktoren abhängen. In zumindest einer Ausführungsform kann die in 9 dargestellte Inferenzierungs- und/oder Trainingslogik 815 in Verbindung mit einem anwendungsspezifischen integrierten Schaltkreis („ASIC“) verwendet werden, wie z.B. der Tensorflow0 Processing Unit von Google, einer Inferenzierungsverarbeitungseinheit (IPU) von Graphcore™ oder einem NervanaⓇ (z.B. „Lake Crest“) Prozessor von Intel Corp. In zumindest einer Ausführungsform kann die in 9 dargestellte Inferenzierungs- und/oder Trainingslogik 815 in Verbindung mit Hardware einer Zentralverarbeitungseinheit („CPU“), einer Grafikverarbeitungseinheit („GPU“) oder anderer Hardware, wie z.B. Field Programmable Gate Arrays („FPGAs“), verwendet werden.
  • 9 veranschaulicht die Inferenzierungs- und/oder Trainingslogik 915 gemäß zumindest einer oder mehreren Ausführungsformen. In zumindest einer Ausführungsform kann die Inferenzierungs- und/oder Trainingslogik 915, ohne darauf beschränkt zu sein, eine Hardware-Logik umfassen, in der Rechenressourcen dediziert oder anderweitig ausschließlich in Verbindung mit Gewichtswerten oder anderen Informationen verwendet werden, die einer oder mehreren Schichten von Neuronen innerhalb eines neuronalen Netzwerks entsprechen. In zumindest einer Ausführungsform kann die in 9 dargestellte Inferenzierungs- und/oder Trainingslogik 915 in Verbindung mit einem anwendungsspezifischen integrierten Schaltkreis (ASIC) verwendet werden, wie z.B. der Tensorflow® Processing Unit von Google, einer Inferenzierungsverarbeitungseinheit (IPU) von Graphcore™ oder einem NervanaⓇ (z.B. „Lake Crest“) Prozessor von Intel Corp. In zumindest einer Ausführungsform kann die in 9 dargestellte Inferenzierungs- und/oder Trainingslogik 915 in Verbindung mit Hardware einer Zentralverarbeitungseinheit (CPU), einer Grafikverarbeitungseinheit (GPU) oder anderer Hardware, wie z.B. FPGAs (Field Programmable Gate Arrays), verwendet werden. In zumindest einer Ausführungsform umfasst die Inferenzierungs- und/oder Trainingslogik 915, ohne darauf beschränkt zu sein, den Code- und/oder Datenspeicher 901 und den Code- und/oder Datenspeicher 905, die zum Speichern von Code (z.B. Graphencode), Gewichtswerten und/oder anderen Informationen, einschließlich Bias-Werten, Gradienteninformationen, Momentenwerten und/oder anderen Parameter- oder Hyperparameterinformationen, verwendet werden können. In zumindest einer in 9 dargestellten Ausführungsform ist jeder des Code- und/oder Datenspeichers 901 und des Code- und/oder Datenspeichers 905 mit einer dedizierten Rechenressource verbunden, wie z.B. Rechenhardware 902 bzw. Rechenhardware 906. In zumindest einer Ausführungsform umfasst jede der Rechenhardware 902 und der Rechenhardware 906 eine oder mehrere ALUs, die mathematische Funktionen, wie z.B. lineare algebraische Funktionen, nur auf Informationen ausführen, die in dem Code- und/oder Datenspeicher 901 bzw. in dem Code- und/oder Datenspeicher 905 gespeichert sind, und deren Ergebnis im Aktivierungsspeicher 920 gespeichert wird.
  • In zumindest einer Ausführungsform entsprechen jeder der Code- und/oder Datenspeicher 901 und 905 und die entsprechende Rechenhardware 902 bzw. 906 verschiedenen Schichten eines neuronalen Netzes, so dass eine resultierende Aktivierung von einem „Speicher-/Rechenpaar 901/902“ des Codes und/oder Datenspeichers 901 und der Rechenhardware 902 als eine Eingabe für das „Speicher-/Rechenpaar 905/906“ des Code- und/oder Datenspeichers 905 und der Rechenhardware 906 bereitgestellt wird, um eine konzeptionelle Organisation eines neuronalen Netzes zu spiegeln. In zumindest einer Ausführungsform kann jedes der Speicher-/Rechenpaare 901/902 und 905/906 mehr als einer Schicht eines neuronalen Netzes entsprechen. In zumindest einer Ausführungsform können zusätzliche Speicher-/Rechenpaare (nicht gezeigt) im Anschluss an oder parallel zu den Speicher-/Berechnungspaaren 901/902 und 905/906 in der Inferenzierungs- und/oder Trainingslogik 915 enthalten sein.
  • Eine Inferenzierungs- und Trainingslogik, wie sie in Bezug auf 9 erörtert wurde, kann dazu verwendet werden, ein oder mehrere neuronale Netze zu trainieren, um einen Medienstream oder eine Datei von Videodaten zu analysieren, die Gameplay-Daten entsprechen können. Diese neuronalen Netze, die auf den beschriebenen Hardwarestrukturen 915 ausgeführt werden können, können für eine Inferenzierung zur Erkennung von Objekten oder Vorkommnissen bzw. Ereignissen sowie zum Ableiten von Arten von Ereignissen basierend auf Daten für diese erfassten Objekte oder Vorkommnisse verwendet werden. Verschiedene neuronale Netze oder Modelle maschinellen Lernens können unter anderem für verschiedene Spiele, Arten von Spielen, Arten von Videoinhalten oder Arten von Ereignissen trainiert sein.
  • RECHENZENTRUM
  • 10 zeigt ein Beispiel für ein Daten- bzw. Rechenzentrum 1000, in welchem zumindest eine Ausführungsform verwendet werden kann. In zumindest einer Ausführungsform beinhaltet das Rechenzentrum 1000 eine RechenzentrumsInfrastrukturschicht 1010, eine Frameworkschicht 1020, eine Softwareschicht 1030 und eine Anwendungsschicht 1040.
  • In zumindest einer Ausführungsform, wie in 10 gezeigt, kann die Rechenzentrumsinfrastrukturschicht 1010 einen Ressourcenorchestrator 1012, gruppierte Rechenressourcen 1014 und Knoten-Rechenressourcen („Knoten-C.R.s“) 1016(1)-1016(N) umfassen, wobei „N“ eine beliebige ganze, positive Zahl darstellt. In zumindest einer Ausführungsform können die Knoten-C.R.s 1016(1)-1016(N) eine beliebige Anzahl von Zentralverarbeitungseinheiten („CPUs“) oder anderen Prozessoren (einschließlich Beschleunigern, feldprogrammierbaren Gate-Arrays (FPGAs), Grafikprozessoren usw.), Speichervorrichtungen (z.B. dynamischer Festspeicher), Speichervorrichtungen (z.B. Festkörper- bzw. Solid-State- oder Festplatten-Laufwerke), Netzwerk-Eingabe-/Ausgabe („NW I/O“)-Vorrichtungen, Netzwerk-Switches, virtuelle Maschinen („VMs“), Leistungs- bzw. Stromversorgungsmodule und Kühlmodule usw. beinhalten. In zumindest einer Ausführungsform können ein oder mehrere Knoten-C.R.s unter den Knoten-C.R.s 1016(1)-1016(N) ein Server mit einer oder mehreren der vorstehend genannten Rechenressourcen sein.
  • In zumindest einer Ausführungsform können die gruppierten Rechenressourcen 1014 separate Gruppierungen von Knoten-C.R.s umfassen, die in einem oder mehreren Einschubschränken bzw. Racks (nicht gezeigt) oder in vielen Racks in Rechenzentren an verschiedenen geografischen Standorten (ebenfalls nicht gezeigt) untergebracht sind. Separate Gruppierungen von Knoten-C.R.s innerhalb der gruppierten Rechenressourcen 1014 können gruppierte Rechen-, Netzwerk-, Speicher- oder Speicherressourcen umfassen, die zur Unterstützung einer oder mehrerer Arbeitslasten konfiguriert oder alloziert sein können. In zumindest einer Ausführungsform können mehrere Knoten-C.R.s mit CPUs oder Prozessoren innerhalb eines oder mehrerer Racks gruppiert sein, um Rechenressourcen zur Unterstützung einer oder mehrerer Arbeitslasten bereitzustellen. In zumindest einer Ausführungsform können ein oder mehrere Racks auch eine beliebige Anzahl von Stromversorgungsmodulen, Kühlmodulen und Netzwerk-Switches in beliebiger Kombination enthalten.
  • In zumindest einer Ausführungsform kann der Ressourcenorchestrator 1012 einen oder mehrere Knoten C.R.s 1016(1)-1016(N) und/oder gruppierte Rechenressourcen 1014 konfigurieren oder anderweitig steuern. In zumindest einer Ausführungsform kann der Ressourcenorchestrator 1012 eine Software-Design-Infrastruktur („SDI“)-Verwaltungsentität für das Rechenzentrum 1000 enthalten. In zumindest einer Ausführungsform kann der Ressourcenorchestrator Hardware, Software oder eine Kombination davon umfassen.
  • In zumindest einer Ausführungsform, wie in 10 gezeigt, umfasst die Frameworkschicht 1020 einen Auftragsplaner bzw. Job-Scheduler 1022, einen Konfigurationsmanager 1024, einen Ressourcenmanager 1026 und ein verteiltes Dateisystem 1028. In zumindest einer Ausführungsform kann die Frameworkschicht 1020 ein Framework zur Unterstützung der Software 1032 der Softwareschicht 1030 und/oder einer oder mehrerer Anwendung(en) 1042 der Anwendungsschicht 1040 enthalten. In zumindest einer Ausführungsform können die Software 1032 oder die Anwendung(en) 1042 jeweils webbasierte Dienstsoftware oder Anwendungen umfassen, wie sie beispielsweise von Amazon Web Services, Google Cloud und Microsoft Azure bereitgestellt werden. In zumindest einer Ausführungsform kann die Frameworkschicht 1020, ohne darauf beschränkt zu sein, eine Art freies und quelloffenes Software-Webanwendungs-Framework sein, wie z.B. Apache Spark™ (nachstehend „Spark“), das das verteilte Dateisystem 1028 für die Verarbeitung großer Datenmengen (z.B. „Big Data“) nutzen kann. In zumindest einer Ausführungsform kann der Job-Scheduler 1022 einen Spark-Treiber enthalten, um die Planung von Arbeitslasten zu erleichtern, die von verschiedenen Schichten des Rechenzentrums 1000 unterstützt werden. In zumindest einer Ausführungsform kann der Konfigurationsmanager 1024 in der Lage sein, verschiedene Schichten zu konfigurieren, wie z.B. die Softwareschicht 1030 und die Frameworkschicht 1020 einschließlich Spark und des verteilten Dateisystems 1028 zur Unterstützung der Verarbeitung großer Datenmengen. In zumindest einer Ausführungsform kann der Ressourcenmanager 1026 in der Lage sein, geclusterte oder gruppierte Rechenressourcen zu verwalten, die zur Unterstützung des verteilten Dateisystems 1028 und des Job-Schedulers 1022 zugeordnet oder alloziert sind. In zumindest einer Ausführungsform können geclusterte oder gruppierte Rechenressourcen gruppierte Rechenressourcen 1014 auf der Infrastrukturschicht 1010 des Rechenzentrums umfassen. In zumindest einer Ausführungsform kann der Ressourcenmanager 1026 mit dem Ressourcenorchestrator 1012 koordiniert werden, um diese zugeordneten oder allozierten Rechenressourcen zu verwalten.
  • In zumindest einer Ausführungsform kann die in der Softwareschicht 1030 enthaltene Software 1032 Software enthalten, die von zumindest Teilen der Knoten-C.R.s 1016(1)-1016(N), den gruppierten Rechenressourcen 1014 und/oder dem verteilten Dateisystem 1028 der Frameworkschicht 1020 verwendet wird. Eine oder mehrere Arten von Software können, ohne darauf beschränkt zu sein, Internet-Webseiten-Suchsoftware, E-Mail-Virenscan-Software, Datenbanksoftware und Software für Streaming-Videoinhalte umfassen.
  • In zumindest einer Ausführungsform kann (können) die in der Anwendungsschicht 1040 enthaltene(n) Anwendung(en) 1042 eine oder mehrere Arten von Anwendungen umfassen, die von zumindest Teilen der Knoten-C.R.s 1016(1)-1016(N), den gruppierten Rechenressourcen 1014 und/oder dem verteilten Dateisystem 1028 der Frameworkschicht 1020 verwendet werden. Eine oder mehrere Arten von Anwendungen können, ohne darauf beschränkt zu sein, eine beliebige Anzahl von genomischen Anwendungen, kognitiven Berechnungsanwendungen und Anwendungen für maschinelles Lernen umfassen, einschließlich Trainings- oder Inferenzierungs-Software, Framework-Software für maschinelles Lernen (z.B. PyTorch, TensorFlow, Caffe usw.) oder andere Anwendungen für maschinelles Lernen, die in Verbindung mit einer oder mehreren Ausführungsformen verwendet werden.
  • In zumindest einer Ausführungsform können der Konfigurationsmanager 1024, der Ressourcenmanager 1026 und der Ressourcenorchestrator 1012 eine beliebige Anzahl und Art von selbstmodifizierenden Aktionen implementieren, basierend auf einer beliebigen Menge und Art von Daten, die auf jede technisch mögliche Weise erfasst wurden. In zumindest einer Ausführungsform können selbstmodifizierende Aktionen einen Rechenzentrumsbetreiber des Rechenzentrums 1000 davon entlasten, möglicherweise schlechte Konfigurationsentscheidungen zu treffen und möglicherweise nicht ausgelastete und/oder schlecht funktionierende Abschnitte eines Rechenzentrums zu vermeiden.
  • In zumindest einer Ausführungsform kann das Rechenzentrum 1000 Werkzeuge, Dienste, Software oder andere Ressourcen enthalten, um ein oder mehrere Modelle maschinellen Lernens zu trainieren oder Informationen unter Verwendung eines oder mehrerer Modelle maschinellen Lernens gemäß einer oder mehrerer hier beschriebener Ausführungsformen vorherzusagen oder abzuleiten bzw. zu inferenzieren. Zum Beispiel kann in zumindest einer Ausführungsform ein Modell maschinellen Lernens durch Berechnen von Gewichtsparametern gemäß einer neuronalen Netzwerkarchitektur unter Verwendung von Software und Rechenressourcen, die vorstehend in Bezug auf das Rechenzentrum 1000 beschrieben wurden, trainiert werden. In zumindest einer Ausführungsform können trainierte Modelle maschinellen Lernens, die einem oder mehreren neuronalen Netzen entsprechen, verwendet werden, um Informationen unter Verwendung von vorstehend in Bezug auf das Rechenzentrum 1000 beschriebenen Ressourcen unter Verwendung von Gewichtsparametern, die durch eine oder mehrere hier beschriebene Trainingstechniken berechnet wurden, abzuleiten oder vorherzusagen.
  • In zumindest einer Ausführungsform kann das Rechenzentrum CPUs, anwendungsspezifische integrierte Schaltkreise (ASICs), GPUs, FPGAs oder andere Hardware verwenden, um das Training und/oder die Inferenzierung unter Verwendung der vorstehend beschriebenen Ressourcen durchzuführen. Außerdem können eine oder mehrere der vorstehend beschriebenen Software- und/oder Hardwareressourcen als ein Dienst konfiguriert sein, um es Benutzern zu ermöglichen, zu trainieren oder die Inferenzierung von Informationen durchzuführen, wie beispielsweise Bilderkennung, Spracherkennung oder andere Dienste der künstlichen Intelligenz.
  • Die Inferenzierungs- und/oder Trainingslogik 815 wird verwendet, um Inferenzierungs- und/oder Trainingsoperationen in Verbindung mit einer oder mehreren Ausführungsformen durchzuführen. Details zur Inferenzierungs- und/oder Trainingslogik 815 werden nachstehend in Verbindung mit 9 und/oder 10 bereitgestellt. In zumindest einer Ausführungsform kann die Inferenzierungs- und/oder Trainingslogik 815 in dem System von 10 für Inferenzierungs- oder Vorhersageoperationen verwendet werden, die zumindest teilweise auf Gewichtsparametern basieren, die unter Verwendung von Trainingsoperationen für neuronale Netze, Funktionen neuronaler Netze und/oder -architekturen oder hierin beschriebenen Anwendungsfällen für neuronale Netze berechnet werden. Ein Rechenzentrum 1000, wie es in 10 dargestellt ist, kann dazu verwendet werden, zumindest einen Teil der hierin erörterten Verarbeitung und/oder Speicherung entfernt von einer Vorrichtung durchzuführen, auf welcher das Video erzeugt oder analysiert wird oder auf welcher das Spiel gespielt wird. Ein solches Rechenzentrum kann in zumindest einigen Ausführungsformen auch Server enthalten, die diese Spiele oder andere relevante Anwendungen hosten.
  • COMPUTERSYSTEME
  • 11 ist ein Blockdiagramm, das ein beispielhaftes Computersystem veranschaulicht, welches ein System mit miteinander verbundenen Vorrichtungen und Komponenten, ein System-on-a-Chip (SOC) oder eine Kombination davon 1100 sein kann, ausgebildet mit einem Prozessor, der Ausführungseinheiten zur Ausführung einer Anweisung enthalten kann, gemäß zumindest einer Ausführungsform. In zumindest einer Ausführungsform kann das Computersystem 1100, ohne darauf beschränkt zu sein, eine Komponente, wie z.B. einen Prozessor 1102, umfassen, um Ausführungseinheiten einschließlich Logik zur Ausführung von Algorithmen zur Verarbeitung von Daten gemäß der Erfindung zu verwenden, wie z.B. in der hier beschriebenen Ausführungsform. In zumindest einer Ausführungsform kann das Computersystem 1100 Prozessoren enthalten, wie z.B. die PENTIUMⓇ-Prozessorfamilie, Xeon™, Itanium®, XScale™ und/oder StrongARM™, IntelⓇ Core™ oder IntelⓇ Nervana™-Mikroprozessoren, die von der Intel Corporation aus Santa Clara, Kalifornien, erhältlich sind, obwohl auch andere Systeme (einschließlich PCs mit anderen Mikroprozessoren, technische Workstations, Set-Top-Boxen und dergleichen) verwendet werden können. In zumindest einer Ausführungsform kann das Computersystem 1100 eine Version des Betriebssystems WINDOWS ausführen, das von der Microsoft Corporation in Redmond, Washington, erhältlich ist, obwohl auch andere Betriebssysteme (z.B. UNIX und Linux), eingebettete Software und/oder grafische Benutzeroberflächen verwendet werden können.
  • Ausführungsformen können in anderen Vorrichtungen wie beispielsweise in der Hand haltbare Geräte bzw. Handgeräte und eingebetteten Anwendungen verwendet werden. Einige Beispiele für Handgeräte beinhalten Mobiltelefone, Internet Protocol-Geräte, Digitalkameras, persönliche digitale Assistenten („PDAs“) und Handheld-PCs. In zumindest einer Ausführungsform können eingebettete Anwendungen einen Mikrocontroller, einen digitalen Signalprozessor („DSP“), ein System auf einem Chip, Netzwerkcomputer („NetPCs“), Set-Top-Boxen, Netzwerk-Hubs, Wide-Area-Network („WAN“)-Switches oder ein beliebiges andere System, das eine oder mehrere Anweisungen in Übereinstimmung mit zumindest einer Ausführungsform ausführen kann, beinhalten.
  • In zumindest einer Ausführungsform kann das Computersystem 1100, ohne darauf beschränkt zu sein, einen Prozessor 1102 beinhalten, der, ohne darauf beschränkt zu sein, eine oder mehrere Ausführungseinheiten 1108 enthalten kann, um ein Training eines Modells maschinellen Lernens und/oder eine Inferenzierung gemäß hierin beschriebenen Techniken durchzuführen. In zumindest einer Ausführungsform ist das Computersystem 1100 ein Einzelprozessor-Desktop- oder -Serversystem, aber in einer anderen Ausführungsform kann das Computersystem 1100 ein Multiprozessorsystem sein. In zumindest einer Ausführungsform kann der Prozessor 1102, ohne darauf beschränkt zu sein, einen CISC (Complex Instruction Set Computer)-Mikroprozessor, einen RISC (Reduced Instruction Set Computing)-Mikroprozessor, einen VLIW (Very Long Instruction Word)-Mikroprozessor, einen Prozessor, der eine Kombination von Befehlssätzen implementiert, oder eine beliebige andere Prozessoreinheit, wie z.B. einen digitalen Signalprozessor, beinhalten. In zumindest einer Ausführungsform kann der Prozessor 1102 an einen Prozessorbus 1110 gekoppelt sein, der Datensignale zwischen dem Prozessor 1102 und anderen Komponenten in dem Computersystem 1100 übertragen kann.
  • In zumindest einer Ausführungsform kann der Prozessor 1102, ohne darauf beschränkt zu sein, einen internen Cache-Speicher der Ebene 1 („L1“) („Cache“) bzw. Level 1-Cache 1104 enthalten. In zumindest einer Ausführungsform kann der Prozessor 1102 einen einzigen internen Cache oder mehrere Ebenen von internem Cache aufweisen. In zumindest einer Ausführungsform kann sich der Cache-Speicher außerhalb des Prozessors 1102 befinden. Andere Ausführungsformen können auch eine Kombination aus sowohl internen als auch externen Caches enthalten, je nach spezieller Implementierung und Bedürfnissen. In zumindest einer Ausführungsform kann die Registerdatei 1106 verschiedene Arten von Daten in verschiedenen Registern speichern, einschließlich, ohne darauf beschränkt zu sein, Ganzzahlregistern, Gleitkommaregistern, Statusregistern und Befehlszeigerregister.
  • In zumindest einer Ausführungsform befindet sich die Ausführungseinheit 1108, einschließlich, ohne darauf beschränkt zu sein, Logik zur Durchführung von Ganzzahl- und Gleitkommaoperationen, ebenfalls im Prozessor 1102. In zumindest einer Ausführungsform kann der Prozessor 1102 auch einen Festspeicher („ROM“) für Mikrocode („ucode“) beinhalten, der Mikrocode für bestimmte Makrobefehle speichert. In zumindest einer Ausführungsform kann die Ausführungseinheit 1108 Logik zur Handhabung eines gepackten Befehlssatzes 1109 beinhalten. In zumindest einer Ausführungsform können durch die Aufnahme des gepackten Befehlssatzes 1109 in einen Befehlssatz eines Universalprozessors 1102, zusammen mit zugehöriger Schaltung zur Ausführung von Anweisungen, Operationen, die von vielen Multimedia-Anwendungen verwendet werden, unter Verwendung gepackter Daten in einem Universalprozessor 1102 durchgeführt werden. In einer oder mehreren Ausführungsformen können viele Multimedia-Anwendungen beschleunigt und effizienter ausgeführt werden, indem die volle Breite eines Datenbusses eines Prozessors für die Ausführung von Operationen mit gepackten Daten genutzt wird, wodurch die Notwendigkeit entfallen kann, kleinere Dateneinheiten über den Datenbus des Prozessors zu übertragen, um eine oder mehrere Operationen mit jeweils einem Datenelement zu einer Zeit durchzuführen.
  • In zumindest einer Ausführungsform kann die Ausführungseinheit 1108 auch in Mikrocontrollern, eingebetteten Prozessoren, Grafikvorrichtungen, DSPs und anderen Arten von Logikschaltungen verwendet werden. In zumindest einer Ausführungsform kann das Computersystem 1100, ohne darauf beschränkt zu sein, einen Speicher 1120 beinhalten. In zumindest einer Ausführungsform kann der Speicher 1120 als eine dynamische Direktzugriffsspeicher („DRAM“)-Vorrichtung, eine statische Direktzugriffsspeicher („SRAM“)-Vorrichtung, eine Flash-SpeicherVorrichtung oder eine andere Speichervorrichtung implementiert sein. In zumindest einer Ausführungsform kann der Speicher 1120 einen oder mehrere Befehl(e) 1119 und/oder Daten 1121 speichern, die durch Datensignale repräsentiert werden, die von dem Prozessor 1102 ausgeführt werden können.
  • In zumindest einer Ausführungsform kann der Systemlogikchip mit dem Prozessorbus 1110 und dem Speicher 1120 gekoppelt sein. In zumindest einer Ausführungsform kann der Systemlogikchip, ohne darauf beschränkt zu sein, einen Speicher-Controller-Hub („MCH“) 1116 beinhalten, und kann der Prozessor 1102 mit dem MCH 1116 über den Prozessorbus 1110 kommunizieren. In zumindest einer Ausführungsform kann der MCH 1116 einen Speicherpfad 1118 mit hoher Bandbreite zu dem Speicher 1120 für die Befehls- und Datenspeicherung und zur Speicherung von Grafikbefehlen, Daten und Texturen bereitstellen. In zumindest einer Ausführungsform kann der MCH 1116 Datensignale zwischen dem Prozessor 1102, dem Speicher 1120 und anderen Komponenten in dem Computersystem 1100 leiten und Datensignale zwischen dem Prozessorbus 1110, dem Speicher 1120 und einer System-E/A 1122 brücken. In zumindest einer Ausführungsform kann der Systemlogikchip einen Grafikport zur Kopplung mit einem Grafikcontroller bereitstellen. In zumindest einer Ausführungsform kann der MCH 1116 über einen Speicherpfad 1118 mit hoher Bandbreite mit dem Speicher 1120 gekoppelt sein und kann die Grafik-/Video-Karte 1112 über eine Accelerated Graphics Port (AGP)-Verbindung 1114 mit dem MCH 1116 gekoppelt sein.
  • In zumindest einer Ausführungsform kann das Computersystem 1100 die System-E/A 1122 verwenden, die ein proprietärer Hub-Schnittstellenbus ist, um den MCH 1116 mit einem I/O- bzw. E/A-Controller-Hub („ICH“) 1130 zu koppeln. In zumindest einer Ausführungsform kann der ICH 1130 direkte Verbindungen zu einigen E/A-Vorrichtungen über einen lokalen E/A-Bus bereitstellen. In zumindest einer Ausführungsform kann der lokale E/A-Bus, ohne darauf beschränkt zu sein, einen Hochgeschwindigkeits-E/A-Bus zum Anschluss von Peripheriegeräten an den Speicher 1120, den Chipsatz und den Prozessor 1102 umfassen. Beispiele können, ohne darauf beschränkt zu sein, einen Audio-Controller 1129, einen Firmware-Hub („Flash-BIOS“) 1128, einen drahtlosen Transceiver 1126, einen Datenspeicher 1124, einen Legacy-E/A-Controller 1123 mit Benutzereingabe- und Tastatur-Schnittstellen 1125, einen seriellen Erweiterungsport 1127, wie beispielsweise Universal Serial Bus („USB“), und einen Netzwerk-Controller 1134 beinhalten. Der Datenspeicher 1124 kann ein Festplattenlaufwerk, ein Diskettenlaufwerk, ein CD-ROM-Gerät, eine Flash-Speicher-Vorrichtung oder eine andere Massenspeichervorrichtung umfassen.
  • In zumindest einer Ausführungsform veranschaulicht 11 ein System, welches miteinander verbundene Hardwarevorrichtungen oder „Chips“ beinhaltet, wohingegen in anderen Ausführungsformen 11 ein beispielhaftes System auf einem Chip (System on a Chip, „SoC“) veranschaulichen kann. In zumindest einer Ausführungsform können in 11 dargestellten Vorrichtungen mit proprietären Interconnects, standardisierten Interconnects (z.B. PCle) oder einer Kombination davon miteinander verbunden sein. In zumindest einer Ausführungsform sind eine oder mehrere Komponenten des Computersystems 1100 unter Verwendung von Compute Express Link (CXL)-Interconnects miteinander verbunden.
  • Die Inferenzierungs- und/oder Trainingslogik 815 wird dazu verwendet, Inferenzierungs- und/oder Trainingsoperationen durchzuführen, die einer oder mehreren Ausführungsformen zugeordnet sind. Details zur Inferenzierungs- und/oder Trainingslogik 815 werden nachstehend in Verbindung mit 9 und/oder 10 beschrieben. In zumindest einer Ausführungsform kann die Inferenzierungs- und/oder Trainingslogik 815 in dem System von 11 für Inferenzierungs- oder Vorhersageoperationen verwendet werden, die zumindest teilweise auf Gewichtsparametern basieren, die unter Verwendung von Trainingsoperationen für neuronale Netze, Funktionen und/oder Architekturen neuronaler Netze oder hierin beschriebenen Anwendungsfällen für neuronale Netze berechnet werden.
  • 12 ist ein Blockdiagramm, das eine elektronische Vorrichtung 1200 zur Nutzung eines Prozessors 1210 veranschaulicht, gemäß zumindest einer Ausführungsform. In zumindest einer Ausführungsform kann die elektronische Vorrichtung 1200, zum Beispiel und ohne darauf beschränkt zu sein, ein Notebook, ein Tower-Server, ein Rack-Server, ein Blade-Server, ein Laptop, ein Desktop, ein Tablet, ein mobiles Gerät, ein Telefon, ein eingebetteter Computer oder eine andere geeignete elektronische Vorrichtung sein.
  • In zumindest einer Ausführungsform kann das System 1200, ohne darauf beschränkt zu sein, einen Prozessor 1210 beinhalten, der kommunikativ mit einer beliebigen Anzahl oder Art von Komponenten, Peripheriegeräten, Modulen oder Vorrichtungen verbunden ist. In zumindest einer Ausführungsform ist der Prozessor 1210 unter Verwendung eines Busses oder einer Schnittstelle, wie z.B. ein 1°C-Bus, ein System Management Bus („SMBus“), ein Low Pin Count (LPC)-Bus, eine serielle Peripherieschnittstelle („SPI“), ein High Definition Audio („HDA“)-Bus, ein Serial Advance Technology Attachment („SATA“)-Bus, ein Universal Serial Bus („USB“) (Versionen 1, 2, 3) oder ein Universal Asynchronous Receiver/Transmitter („UART“)-Bus, gekoppelt. In zumindest einer Ausführungsform veranschaulicht 12 ein System, welches miteinander verbundene Hardwarevorrichtungen oder „Chips“ beinhaltet, wohingegen in anderen Ausführungsformen 12 ein beispielhaftes System auf einem Chip („SoC“) veranschaulichen zeigen kann. In zumindest einer Ausführungsform können in 12 veranschaulichte Vorrichtungen mit proprietären Interconnects, standardisierten Interconnects (z.B. PCIe) oder einer Kombination davon miteinander verbunden sein. In zumindest einer Ausführungsform sind eine oder mehrere Komponenten von 12 unter Verwendung von Compute Express Link (CXL)-Interconnects miteinander verbunden.
  • In zumindest einer Ausführungsform kann 12 eine Anzeige 1224, einen Touchscreen 1225, ein Touchpad 1230, eine Nahfeld- bzw. Near Field Communications („NFC“)-Einheit 1245, einen Sensor Hub 1240, einen Wärmesensor 1246, einen Express Chipsatz („EC“) 1235, ein Trusted Platform Module („TPM“) 1238, BIOS/Firmware/Flash-Speicher („BIOS, FW Flash“) 1222, einen DSP 1260, ein Laufwerk 1220 wie beispielsweise eine Solid State Disk („SSD“) oder eine Festplatte („HDD“), eine Wireless Local Area Network („WLAN“)-Einheit 1250, eine Bluetooth-Einheit 1252, eine Wireless Wide Area Network („WWAN“)-Einheit 1256, ein Global Positioning System (GPS) 1255, eine Kamera („USB 3.0-Kamera“) 1254, wie z.B. eine USB 3.0-Kamera, und/oder eine Low Power Double Data Rate („LPDDR“)-Speichereinheit („LPDDR3“) 1215, die z.B. im LPDDR3-Standard implementiert ist, beinhalten. Diese Komponenten können jeweils in jeder geeigneten Weise implementiert sein.
  • In zumindest einer Ausführungsform können andere Komponenten über vorstehend beschriebene Komponenten kommunikativ mit dem Prozessor 1210 verbunden sein. In zumindest einer Ausführungsform können ein Beschleunigungsmesser 1241, ein Umgebungslichtsensor (Ambient Light Sensor, „ALS“) 1242, ein Kompass 1243 und ein Gyroskop 1244 kommunikativ mit dem Sensor Hub 1240 verbunden sein. In zumindest einer Ausführungsform können der Wärmesensor 1239, ein Lüfter 1237, eine Tastatur 1246 und ein Touchpad 1230 kommunikativ mit dem EC 1235 gekoppelt sein. In zumindest einer Ausführungsform können Lautsprecher 1263, Kopfhörer 1264 und ein Mikrofon („mic“) 1265 kommunikativ mit einer Audioeinheit („audio codec and class d amp“) 1262 gekoppelt sein, welche wiederum kommunikativ mit dem DSP 1260 gekoppelt sein kann. In zumindest einer Ausführungsform kann die Audioeinheit 1264, zum Beispiel und ohne darauf beschränkt zu sein, einen Audio-Codierer/-Decodierer („Codec“) und einen Klasse-D-Verstärker enthalten. In zumindest einer Ausführungsform kann eine SIM-Karte („SIM“) 1257 kommunikativ mit der WWAN-Einheit 1256 gekoppelt sein. In zumindest einer Ausführungsform können Komponenten wie beispielsweise die WLAN-Einheit 1250 und die Bluetooth-Einheit 1252 sowie die WWAN-Einheit 1256 in einem Next Generation Form Factor („NGFF“) implementiert sein.
  • Die Inferenzierungs- und/oder Trainingslogik 815 wird verwendet, um Inferenzierungs- und/oder Trainingsoperationen in Verbindung mit einer oder mehreren Ausführungsformen durchzuführen. Details bezüglich der Inferenzierungs- und/oder Trainingslogik 815 werden nachstehend in Verbindung mit 9 und/oder 10 beschrieben. In zumindest einer Ausführungsform kann die Inferenzierungs- und/oder Trainingslogik 815 in dem System von 12 für Inferenzierungs- oder Vorhersageoperationen verwendet werden, die zumindest teilweise auf Gewichtsparametern basieren, die unter Verwendung von Trainingsoperationen für neuronale Netze, Funktionen und/oder Architekturen neuronaler Netze oder hierin beschriebenen Anwendungsfällen für neuronale Netze berechnet werden.
  • 13 veranschaulicht ein Computersystem 1300 gemäß zumindest einer Ausführungsform. In zumindest einer Ausführungsform ist das Computersystem 1300 dazu konfiguriert, verschiedene, in dieser Offenbarung beschrieben Prozesse und Verfahren zu implementieren.
  • In zumindest einer Ausführungsform umfasst das Computersystem 1300, ohne darauf beschränkt zu sein, zumindest eine Zentralverarbeitungseinheit („CPU“) 1302, die mit einem Kommunikationsbus 1310 verbunden ist, der unter Verwendung eines beliebigen geeigneten Protokolls, wie z.B. PCI („Peripheral Component Interconnect“), Peripheral Component Interconnect Express („PCI-Express“), AGP („Accelerated Graphics Port“), HyperTransport oder einem oder mehreren beliebigen anderen Bus oder Punkt-zu-Punkt-Kommunikationsprotokoll(en) implementiert ist. In zumindest einer Ausführungsform beinhaltet das Computersystem 1300, ohne darauf beschränkt zu sein, einen Hauptspeicher 1304 und Steuerlogik (z.B. implementiert als Hardware, Software oder eine Kombination davon), und werden Daten in dem Hauptspeicher 1304 gespeichert, der die Form eines Direktzugriffsspeichers („RAM“) annehmen kann. In zumindest einer Ausführungsform stellt ein Netzwerkschnittstellen-Subsystem („Netzwerkschnittstelle“) 1322 eine Schnittstelle zu anderen Rechenvorrichtungen und Netzwerken bereit, um Daten von anderen Systemen zu empfangen und von dem Computersystem 1300 an andere Systeme zu senden.
  • In zumindest einer Ausführungsform beinhaltet das Computersystem 1300, ohne darauf beschränkt zu sein, Eingabevorrichtungen 1308, ein Parallelverarbeitungssystem 1312 und Anzeigevorrichtungen 1306, die unter Verwendung einer Kathodenstrahlröhre („CRT“), einer Flüssigkristallanzeige („LCD“), einer lichtemittierenden Diode („LED“), einem Plasmadisplay oder anderen geeigneten Anzeigetechnologien realisiert sein können. In zumindest einer Ausführungsform werden Benutzereingaben von den Eingabevorrichtungen 1308 wie beispielsweise einer Tastatur, einer Maus, einem Touchpad, einem Mikrofon und anderen empfangen. In zumindest einer Ausführungsform kann jedes der vorgenannten Module auf einer einzigen Halbleiterplattform angeordnet sein, um ein Verarbeitungssystem zu bilden.
  • Die Inferenzierungs- und/oder Trainingslogik 815 wird verwendet, um Inferenzierungs- und/oder Trainingsoperationen in Verbindung mit einer oder mehreren Ausführungsformen durchzuführen. Details zur Inferenzierungs- und/oder Trainingslogik 815 werden nachstehend in Verbindung mit 9 und/oder 10 beschrieben. In zumindest einer Ausführungsform kann die Inferenzierungs- und/oder Trainingslogik 815 in dem System von 13 für Inferenzierungs- oder Vorhersageoperationen verwendet werden, die zumindest teilweise auf Gewichtsparametern basieren, die unter Verwendung von Trainingsoperationen für neuronale Netze, Funktionen und/oder Architekturen neuronaler Netze oder hierin beschriebenen Anwendungsfällen für neuronale Netze berechnet werden.
  • 14 veranschaulicht eine beispielhafte Architektur, in welcher eine Vielzahl von GPUs 1410-1413 über Hochgeschwindigkeitsverbindungen 1440-1443 (z.B. Busse, Punkt-zu-Punkt-Verbindungen usw.) kommunikativ mit einer Vielzahl von Mehrkern-Prozessoren 1405-1406 gekoppelt sind. In einer Ausführungsform unterstützen die Hochgeschwindigkeitsverbindungen 1440-1443 einen Kommunikationsdurchsatz von 4GB/s, 30GB/s, 80GB/s oder höher. Es können verschiedene Verbindungs- bzw. Interconnect-Protokolle verwendet werden, einschließlich, aber nicht beschränkt auf, PCle 4.0 oder 5.0 und NVLink 2.0.
  • Darüber hinaus und in einer Ausführungsform sind zwei oder mehr der GPUs 1410-1413 über Hochgeschwindigkeitsverbindungen 1429-1430 miteinander verbunden, die mit denselben oder anderen Protokollen/Verbindungen wie denjenigen, die für die Hochgeschwindigkeitsverbindungen 1440-1443 verwendet werden, implementiert sein können. In ähnlicher Weise können zwei oder mehr der Mehrkern-Prozessoren 1405-1406 über Hochgeschwindigkeitsverbindungen 1428 verbunden sein, welche symmetrische Multiprozessor (SMP)-Busse sein können, die mit 20GB/s, 30GB/s, 120GB/s oder höher arbeiten. Alternativ kann die gesamte Kommunikation zwischen den verschiedenen in 14 gezeigten Systemkomponenten unter Verwendung derselben Protokolle/Verbindungen (z.B. über ein gemeinsames Interconnect Fabric) erzielt werden.
  • In einer Ausführungsform ist jeder Mehrkern-Prozessor 1405-1406 kommunikativ mit einem Prozessorspeicher 1401-1402 über jeweils Speicher-Interconnects 1426-1427 verbunden, und ist jede GPU 1410-1413 kommunikativ mit GPU-Speicher 1420-1423 über jeweils GPU-Speicher-Interconnects 1450-1453 verbunden. Die Speicher-Interconnects 1426-1427 und 1450-1453 können gleiche oder unterschiedliche Speicherzugriffstechnologien verwenden. Beispielhaft und ohne darauf beschränkt zu sein können die Prozessorspeicher 1401-1402 und die GPU-Speicher 1420-1423 flüchtige Speicher wie beispielsweise dynamische Direktzugriffsspeicher (DRAMs) (einschließlich gestapelter DRAMs), Grafik-DDR-SDRAM (GDDR) (z.B. GDDR5, GDDR6) oder High Bandwidth Memory (HBM) sein und/oder können nichtflüchtige Speicher wie beispielsweise 3D XPoint oder Nano-Ram sein. In einer Ausführungsform kann ein Teil der Prozessorspeicher 1401-1402 flüchtiger Speicher und ein anderer Teil nichtflüchtiger Speicher sein (z.B. unter Verwendung einer zweistufigen Speicher (2LM)-Hierarchie).
  • Wie nachstehend beschrieben wird, kann, obwohl verschiedene Prozessoren 1405-1406 und GPUs 1410-1413 physisch mit einem bestimmten Speicher 1401-1402 bzw. 1420-1423 gekoppelt sein können, eine einheitliche Speicherarchitektur implementiert sein, in welcher ein und derselbe virtuelle Systemadressraum (auch als „effektiver Adress-Raum" bezeichnet) auf verschiedene physische Speicher verteilt ist. Beispielsweise können die Prozessorspeicher 1401-1402 jeweils 64 GB Systemadressraum und die GPU-Speicher 1420-1423 jeweils 32 GB Systemadressraum umfassen (was in diesem Beispiel in einem adressierbaren Gesamtspeicher von 256 GB resultiert).
  • 14 veranschaulicht zusätzliche Details für eine Verbindung zwischen einem Mehrkern-Prozessor 1407 und einem Grafikbeschleunigungsmodul 1446 gemäß einer beispielhaften Ausführungsform. Das Grafikbeschleunigungsmodul 1446 kann einen oder mehrere GPU-Chips enthalten, die auf einer Leitungskarte integriert sind, welche über eine Hochgeschwindigkeitsverbindung 1440 mit dem Prozessor 1407 gekoppelt ist. Alternativ kann das Grafikbeschleunigungsmodul 1446 in einem gleichen Gehäuse oder auf einem gleichen Chip wie der Prozessor 1407 integriert sein.
  • In zumindest einer Ausführungsform beinhaltet der dargestellte Prozessor 1407 eine Vielzahl von Kernen 1460A-1460D, die jeweils einen Translation-Lookaside-Buffer 1461A-1461D und einen oder mehrere Caches 1462A-1462D besitzen. In zumindest einer Ausführungsform können die Kerne 1460A-1460D verschiedene andere Komponenten zur Ausführung von Anweisungen und zur Verarbeitung von Daten beinhalten, die nicht dargestellt sind. Die Caches 1462A-1462D können Level 1 (L1) und Level 2 (L2) Caches umfassen. Darüber hinaus können ein oder mehrere gemeinsam genutzte Caches bzw. Shared Caches 1456 in den Caches 1462A-1462D enthalten sein und von Gruppen von Kernen 1460A-1460D gemeinsam genutzt werden. Eine Ausführungsform des Prozessors 1407 beinhaltet beispielsweise 24 Kerne, jeder mit seinem eigenen L1-Cache, zwölf gemeinsam genutzten L2-Caches und zwölf gemeinsam genutzten L3-Caches. In dieser Ausführungsform werden ein oder mehrere L2- und L3-Caches von zwei benachbarten Kernen gemeinsam genutzt. Der Prozessor 1407 und das Grafikbeschleunigungsmodul 1446 sind mit Systemspeicher 1414 verbunden, der die Prozessorspeicher 1401-1402 von 14 enthalten kann.
  • Kohärenz wird für Daten und Anweisungen, die in verschiedenen Caches 1562A-1562D, 1556 und in dem Systemspeicher 1514 gespeichert sind, über eine Zwischenkern- bzw. Inter-Core-Kommunikation über einen Kohärenzbus 1564 aufrechterhalten, wie in 15 dargestellt ist. Beispielsweise kann jeder Cache über eine Cache-Kohärenzlogik/-schaltung verfügen, die ihm zugeordnet ist, um im Ansprechen auf erfasste Lese- oder Schreibvorgänge auf bestimmte Cache-Leitungen über den Kohärenzbus 1564 zu kommunizieren. In einer Implementierung ist ein Cache-Snooping-Protokoll über den Kohärenzbus 1564 implementiert, um Cache-Zugriffe zu snoopen bzw. zu „erschnüffeln“.
  • In einer Ausführungsform koppelt eine Proxy-Schaltung 1525 das Grafikbeschleunigungsmodul 1546 kommunikativ an den Kohärenzbus 1564, sodass das Grafikbeschleunigungsmodul 1546 als Peer von Kernen 1560A-1560D an einem Cache-Kohärenzprotokoll partizipieren kann. Insbesondere stellt eine Schnittstelle 1535 Konnektivität zu der Proxy-Schaltung 1525 über eine Hochgeschwindigkeitsverbindung 1540 (z.B. einen PCIe-Bus, NVLink usw.) her, und verbindet eine Schnittstelle 1537 das Grafikbeschleunigungsmodul 1546 mit der Verbindung 1540.
  • In einer Implementierung bietet eine Beschleunigerintegrationsschaltung 1536 Cache-Verwaltung, Speicherzugriff, Kontextverwaltung und Interrupt-Verwaltungsdienste für eine Vielzahl von Grafikverarbeitungs-Engines 1531, 1532, N des Grafikbeschleunigungsmoduls 1546. Die Grafikverarbeitungs-Engines 1531, 1532, N können jede eine separate Grafikverarbeitungseinheit (GPU) umfassen. Alternativ können die Grafikverarbeitungs-Engines 1531, 1532, N verschiedene Arten von Grafikverarbeitungs-Engines innerhalb einer GPU umfassen, wie z.B. Grafikausführungseinheiten, Medienverarbeitungs-Engines (z.B. Video-Encoder/Decoder), Abtaster bzw. Sampler und Blit-Engines. In zumindest einer Ausführungsform kann das Grafikbeschleunigungsmodul 1546 eine GPU (GPU) mit mehreren Grafikverarbeitungs-Engines 1531-1532, N sein, oder können die Grafikverarbeitungs-Engines 1531-1532, N einzelne GPUs sein, die in einem gemeinsamen Gehäuse, auf einer gemeinsamen einer Leiterkarte oder auf einem gemeinsamen Chip integriert sind.
  • In einer Ausführungsform beinhaltet die Beschleuniger-Integrationsschaltung 1536 eine Speicherverwaltungseinheit (MMU) 1539 zur Durchführung verschiedener Speicherverwaltungsfunktionen, wie z.B. Übersetzungen von virtuellem zu physischen Speicher (auch als Übersetzungen von effektivem zu realem Speicher bezeichnet) und Speicherzugriffsprotokolle für den Zugriff auf den Systemspeicher 1514. Die MMU 1539 kann auch einen Translations-Lookaside-Buffer (TLB) (nicht gezeigt) zur Zwischenspeicherung von Übersetzungen von virtuellen/effektiven zu physischen/realen Adressen enthalten. In einer Implementierung speichert ein Cache 1538 Befehle und Daten für effizienten Zugriff durch die Grafikverarbeitungs-Engines 1531-1532, N. In einer Ausführungsform werden die im Cache 1538 und in den Grafikspeichern 1533-1534, M gespeicherten Daten mit Kern-Caches 1562A-1562D, 1556 und dem Systemspeicher 1514 kohärent gehalten. Wie vorstehend erwähnt wurde, kann dies über die Proxy-Schaltung 1525 im Namen des Caches 1538 und der Speicher 1533-1534, M erzielt werden (z.B. durch Senden von Aktualisierungen an den Cache 1538 mit Bezug zu Änderungen von/Zugriffen auf Cache-Zeilen in den Prozessor-Caches 1562A-1562D, 1556 und Empfangen von Aktualisierungen von dem Cache 1538).
  • Ein Satz von Registern 1545 in 15 speichert Kontextdaten für Threads, die von den Grafikverarbeitungs-Engines 1531-1532, N ausgeführt werden, und eine Kontextverwaltungsschaltung 1548 verwaltet Thread-Kontexte. Beispielsweise kann die Kontextverwaltungsschaltung 1548 Speicher- und Wiederherstellungs-Operationen durchführen, um Kontexte verschiedener Threads während Kontextumschaltungen zu speichern und wiederherzustellen (z.B. wenn ein erster Thread gesichert und ein zweiter Thread gespeichert wird, damit ein zweiter Thread von einer Grafikverarbeitungs-Engine ausgeführt werden kann). Bei einer Kontextumschaltung kann die Kontextverwaltungsschaltung 1548 beispielsweise aktuelle Registerwerte in einem bestimmten Bereich im Speicher speichern (z.B. identifiziert durch einen Kontextzeiger). Sie kann dann die Registerwerte wiederherstellen, wenn sie zu einem Kontext zurückkehrt. In einer Ausführungsform empfängt und verarbeitet eine Unterbrechungs- bzw. Interruptverwaltungsschaltung 1547 von Systemgeräten empfangene Interrupts.
  • In einer Implementierung werden virtuelle/effektive Adressen von einer Grafikverarbeitungs-Engine 1531 durch die MMU 1539 in reale/physische Adressen im Systemspeicher 1514 übersetzt. Eine Ausführungsform der Beschleunigerintegrationsschaltung 1536 unterstützt mehrere (z.B. 4, 8, 16) Grafikbeschleunigermodule 1546 und/oder andere Beschleunigervorrichtungen. Das Grafikbeschleunigermodul 1546 kann für eine einzelne Anwendung dediziert sein, die auf dem Prozessor 1507 ausgeführt wird, oder kann von mehreren Anwendungen gemeinsam genutzt werden. In einer Ausführungsform wird eine virtualisierte Grafikausführungsumgebung präsentiert, in welcher Ressourcen der Grafikverarbeitungs-Engines 1531-1532, N mit mehreren Anwendungen oder virtuellen Maschinen (VMs) geteilt bzw. gemeinsam genutzt werden. In zumindest einer Ausführungsform können Ressourcen in Scheiben bzw. „Slices“ unterteilt sein, die zu verschiedenen VMs und/oder Anwendungen auf der Grundlage von Verarbeitungsanforderungen und Prioritäten, die VMs und/oder Anwendungen zugeordnet sind, alloziert werden.
  • In zumindest einer Ausführungsform arbeitet die Beschleunigerintegrationsschaltung 1536 als eine Brücke zu einem System für das Grafikbeschleunigungsmodul 1546 und stellt Adressübersetzung und Systemspeicher-Cache-Dienste bereit. Darüber hinaus kann die Beschleunigerintegrationsschaltung 1536 Virtualisierungseinrichtungen für einen Host-Prozessor bereitstellen, um die Virtualisierung der Grafikverarbeitungsmodule 1531-1532, N, Interrupts und die Speicherverwaltung zu verwalten.
  • Weil Hardware-Ressourcen der Grafikverarbeitungs-Engines 1531-1532, N explizit auf einen realen Adressraum abgebildet werden, den der Host-Prozessor 1507 sieht, kann jeder Host-Prozessor unter Verwendung eines effektiven Adresswerts direkt auf diese Ressourcen zugreifen. Eine Funktion der Beschleunigerintegrationsschaltung 1536 ist in einer Ausführungsform die physische Trennung der Grafikverarbeitungs-Engines 1531-1532, N, so dass sie einem System als unabhängige Einheiten erscheinen.
  • In zumindest einer Ausführungsform sind ein oder mehrere Grafikspeicher 1533-1534, M mit jeweils jeder der Grafikverarbeitungs-Engines 1531-1532, N gekoppelt. Die Grafikspeicher 1533-1534, M speichern Anweisungen und Daten, die von jeder der Grafikverarbeitungs-Engines 1531-1532, N verarbeitet werden. Die Grafikspeicher 1533-1534, M können um flüchtige Speicher wie beispielsweise DRAMs (einschließlich gestapelter DRAMs), GDDR-Speicher (z.B. GDDR5, GDDR6) oder HBM und/oder nichtflüchtige Speicher wie beispielsweise 3D XPoint oder Nano-Ram sein.
  • In einer Ausführungsform werden zur Verringerung des Datenverkehrs über die Verbindung 1540 Biasing-Techniken verwendet, um sicherzustellen, dass in den Grafikspeichern 1533-1534, M gespeicherte Daten Daten sind, die am häufigsten von den Grafikverarbeitungs-Engines 1531-1532, N verwendet werden werden und vorzugsweise nicht (zumindest nicht häufig) von den Kernen 1560A-1560D verwendet werden werden. In ähnlicher Weise versucht ein Biasing-Mechanismus, Daten, die von Kernen (und vorzugsweise nicht von den Grafikverarbeitungs-Engines 1531-1532, N) benötigt werden, in den Caches 1562A-1562D, 1556 der Kerne und im Systemspeicher 1514 zu halten.
  • In zumindest einer Ausführungsform kann sich eine einzelne Halbleiterplattform auf eine einzige einheitliche halbleiterbasierte integrierte Schaltung oder einen solchen Chip beziehen. In zumindest einer Ausführungsform können Multi-Chip-Module mit erhöhter Konnektivität verwendet werden, welche einen On-Chip-Betrieb simulieren und wesentliche Verbesserungen gegenüber der Verwendung einer zentralen Verarbeitungseinheit („CPU“) und einer Bus-Implementierung bieten. In zumindest einer Ausführungsform können je nach Wunsch des Benutzers verschiedene Module auch separat oder in verschiedenen Kombinationen von Halbleiterplattformen angeordnet sein.
  • In zumindest einer Ausführungsform sind Computerprogramme in Form von maschinenlesbarem, ausführbarem Code oder Computersteuerungslogik-Algorithmen in dem Hauptspeicher 1404 und/oder in einem Sekundärspeicher gespeichert. Computerprogramme ermöglichen, wenn sie von einem oder mehreren Prozessoren ausgeführt werden, dem System 1400, verschiedene Funktionen gemäß zumindest einer Ausführungsform auszuführen. In zumindest einer Ausführungsform sind der Speicher 1404, Speicher und/oder jeder beliebige andere Speicher mögliche Beispiele für computerlesbare Medien. In zumindest einer Ausführungsform kann sich Sekundärspeicher auf eine beliebige geeignete Speichervorrichtung oder auf ein beliebiges geeignetes Speichersystem beziehen, wie z.B. ein Festplattenlaufwerk und/oder ein Wechselspeicherlaufwerk, das ein Diskettenlaufwerk, ein Magnetbandlaufwerk, ein Compact-Disk-Laufwerk, ein Digital Versatile Disk („DVD“)-Laufwerk, eine Aufzeichnungsvorrichtung, einen Universal Serial Bus („USB“)-Flash-Speicher usw. repräsentiert. In zumindest einer Ausführungsform ist die Architektur und/oder die Funktionalität verschiedener vorangehender Figuren im Kontext einer CPU, eines Parallelverarbeitungssystems, eines integrierten Schaltkreises, der zumindest einen Teil der Fähigkeiten sowohl der CPU als auch des Parallelverarbeitungssystems besitzt, eines Chipsatzes (z.B. einer Gruppe integrierter Schaltkreise, die so konzipiert sind, dass sie als Einheit arbeiten und verkauft werden, um Bezug zueinander habende Funktionen auszuführen usw.) und jeder geeigneten Kombination integrierter Schaltkreise implementiert.
  • In zumindest einer Ausführungsform ist die Architektur und/oder die Funktionalität verschiedener vorheriger Figuren im Kontext eines allgemeinen Computersystems, eines Leiterplattensystems, eines für Unterhaltungszwecke bestimmten Spielkonsolensystems, eines anwendungsspezifischen Systems usw. implementiert. In zumindest einer Ausführungsform kann das Computersystem die Form eines Desktop-Computers, eines Laptop-Computers, eines Tablet-Computers, eines Servers, eines Supercomputers, eines Smartphones (z.B. eines drahtlosen, in der Hand haltbaren Geräts), eines persönlichen digitalen Assistenten („PDA“), einer Digitalkamera, eines Fahrzeugs, einer kopfgestützten Anzeige bzw. eines Head-Mounted-Displays, eines in der Hand haltbaren elektronischen Geräts, eines Mobiltelefons, eines Fernsehers, einer Workstation, von Spielkonsolen, eines eingebetteten Systems und/oder einer anderen Art von Logik annehmen. Derartige Hardware kann zur Ausführung von Anwendungen und Code verwendet werden, um verschiedene Arten der hierin beschriebenen Verarbeitung, Analyse und Speicherung zu unterstützen. Beispielsweise könnte ein bestimmtes Computersystem ein Spiel ausführen und die Videoausgabe des Spiels analysieren, um Ereignisse zu ermitteln, und dann diese Ereignisdaten zur Analyse oder Speicherung auf einen entfernten Server hochladen. In anderen Ausführungsformen könnte ein Stream von Videodaten von einem Spielserver erzeugt werden, der ein Spiel hostet, an dem mehrere verschiedene Clientgeräte beteiligt sind, und dieser Stream könnte von einem anderen Server oder Computersystem analysiert werden, um Ereignisse zu bestimmen, die während des Spiels bzw. Gameplays aufgetreten sind. In einigen Ausführungsformen können diese Ereignisdaten dann von demselben oder einem anderen Server oder Computersystem zur Verarbeitung verwendet werden, z.B. um ein Höhepunkt-Video oder eine Videomontage zu erzeugen.
  • Andere Variationen liegen im Sinne der Erfindung. Folglich sind, während offenbarte Techniken verschiedenen Modifikationen und alternativen Anordnungen zugänglich sind, bestimmte dargestellte Ausführungsformen derselben in Zeichnungen gezeigt und vorstehend im Einzelnen beschrieben. Es versteht sich jedoch, dass nicht beabsichtigt ist, die Erfindung auf eine bestimmte Form oder bestimmte Formen zu beschränken, sondern dass im Gegenteil beabsichtigt ist, alle Modifikationen, alternativen Anordnungen und Äquivalente abzudecken, die zu der Idee der Erfindung gehören und in den Schutzumfang der Erfindung, wie er in den beigefügten Ansprüchen definiert ist, fallen.
  • Die Verwendung von Begriffen wie „ein“ und „eine“ und „der/die/das“ und ähnlicher Bezeichnungen im Kontext der Beschreibung offenbarter Ausführungsformen (insbesondere im Kontext nachfolgender Ansprüche) ist so auszulegen, dass sie sowohl die Einzahl als auch die Mehrzahl umfasst, sofern hierin nicht anders angegeben ist oder durch Kontext eindeutig widerlegt wird, und nicht als Definition eines Begriffs. Begriffe wie „umfassend“, „mit“, „einschließlich“ und „beinhaltend‟ sind, sofern nicht anders angegeben, als nicht abschließende Begriffe (im Sinne von „einschließlich, aber nicht beschränkt auf‟) zu verstehen. Der Begriff „verbunden“ ist, wenn er unmodifiziert ist und sich auf physische Verbindungen bezieht, als in etwas teilweise oder ganz enthalten, an etwas angebracht oder mit etwas verbunden zu verstehen, selbst wenn etwas dazwischen liegen sollte. Die Angabe von Wertebereichen dient lediglich als eine Kurzbezeichnung für jeden einzelnen Wert, der in den Bereich fällt, sofern hierin nichts anderes angegeben ist, und jeder einzelne Wert ist in die Spezifikation einbezogen, als ob er hierin einzeln aufgeführt wäre. Die Verwendung des Begriffs „Satz“ (z.B. „ein Satz von Elementen“) oder „Teilmenge“ ist, sofern nicht anders vermerkt oder durch den Kontext widerlegt, als eine nicht leere Ansammlung zu verstehen, die ein oder mehrere Elemente umfasst. Sofern nicht anders vermerkt oder durch den Kontext widerlegt, bezeichnet der Begriff „Teilmenge“ einer entsprechenden Menge nicht unbedingt eine echte Teilmenge der entsprechenden Menge, sondern Teilmenge und entsprechende Menge können gleich sein.
  • Konjunktive Sprache, wie z.B. Ausdrücke der Form „zumindest eines von A, B und C“ oder „zumindest eines von A, B und C“, sind, sofern nicht ausdrücklich anders angegeben oder anderweitig eindeutig durch den Kontext widersprochen, im Allgemeinen so zu verstehen, dass damit ausgedrückt wird, dass ein Element, ein Begriff usw., entweder A oder B oder C oder eine beliebige nicht leere Teilmenge der Menge von A und B und C sein kann. Beispielsweise beziehen sich in einem veranschaulichenden Beispiel einer Menge mit drei Elementen die konjunktiven Ausdrücke „zumindest eines von A, B und C“ und „zumindest eines von A, B und C“ auf eine der folgenden Mengen: {A}, {B}, {C}, {A, B}, {A, C}, {B, C}, {A, B, C}. Daher ist eine solche konjunktivische Sprache im Allgemeinen nicht so zu verstehen, dass bestimmte Ausführungsformen erfordern, dass zumindest eines von A, zumindest eines von B und zumindest eines von C jeweils vorhanden sein muss. Darüber hinaus bezeichnet der Begriff „Mehrzahl“, sofern nicht anders vermerkt oder durch den Kontext widerlegt, einen Zustand der Pluralität (z.B. bezeichnet „eine Mehrzahl von Elementen“ mehrere Elemente). Eine Mehrzahl besteht aus zumindest zwei Elementen, kann aber auch mehr sein, wenn dies entweder explizit oder durch den Kontext angegeben wird. Sofern nicht anders angegeben oder anderweitig aus dem Kontext ersichtlich, bedeutet „basierend auf‟ „zumindest teilweise basierend auf‟ und nicht „ausschließlich basierend auf“.
  • Betriebsabläufe der hierin beschriebenen Prozesse können in jeder geeigneten Reihenfolge ausgeführt werden, sofern hierin nicht anders angegeben oder durch Kontext eindeutig widerlegt wird. In zumindest einer Ausführungsform wird ein Prozess wie beispielsweise die hierin beschriebenen Prozesse (oder Variationen und/oder Kombinationen davon) gesteuert durch ein oder mehrerer Computersysteme durchgeführt, die mit ausführbaren Anweisungen konfiguriert sind, die als Code (z.B. ausführbare Anweisungen, ein oder mehrere Computerprogramme oder eine oder mehrere Anwendungen) implementiert sind, die gemeinsam auf einem oder mehreren Prozessoren, durch Hardware oder Kombinationen davon ausgeführt werden. In zumindest einer Ausführungsform ist Code auf einem computerlesbaren Speichermedium gespeichert, z.B. in Form eines Computerprogramms, das eine Vielzahl von Anweisungen umfasst, die von einem oder mehreren Prozessoren ausgeführt werden können. In zumindest einer Ausführungsform ist ein computerlesbares Speichermedium ein nicht-flüchtiges computerlesbares Speichermedium, das flüchtige Signale (z.B. eine sich ausbreitende transiente elektrische oder elektromagnetische Übertragung) ausschließt, aber nicht-flüchtige Datenspeicherschaltungen (z.B. Puffer, Cache und Warteschlangen) innerhalb der Transceiver von transitorischen Signalen enthält. In zumindest einer Ausführungsform ist Code (z.B. ausführbarer Code oder Quellcode) auf einem Satz von einem oder mehreren nicht-flüchtigen, computerlesbaren Speichermedien (oder einem anderen Speicher zum Speichern von ausführbaren Anweisungen) gespeichert, auf denen ausführbare Anweisungen gespeichert sind, die, wenn sie von einem oder mehreren Prozessoren eines Computersystems ausgeführt werden (d. h. als ein Ergebnis des Ausgeführtwerdens), das Computersystem veranlassen, hierin beschriebene Operationen durchzuführen. In zumindest einer Ausführungsform umfasst ein Satz nicht-flüchtiger computerlesbarer Speichermedien mehrere nicht-flüchtige computerlesbare Speichermedien, und fehlt einem oder mehreren der einzelnen nicht-flüchtigen Speichermedien mehrerer nicht-flüchtiger computerlesbarer Speichermedien der gesamte Code, während mehrere nicht-flüchtige computerlesbare Speichermedien gemeinsam den gesamten Code speichern. In zumindest einer Ausführungsform werden ausführbare Befehle so ausgeführt, dass verschiedene Befehle von verschiedenen Prozessoren ausgeführt werden - zum Beispiel speichert ein nicht-flüchtiges computerlesbares Speichermedium Befehle und führt eine Haupt-Zentralverarbeitungseinheit („CPU“) einige der Befehle aus, während eine Grafikverarbeitungseinheit („GPU“) andere Befehle ausführt. In zumindest einer Ausführungsform haben verschiedene Komponenten eines Computersystems separate Prozessoren und führen verschiedene Prozessoren verschiedene Teilmengen von Anweisungen aus.
  • Demgemäß sind in zumindest einer Ausführungsform Computersysteme dazu konfiguriert, einen oder mehrere Dienste zu implementieren, die einzeln oder kollektiv Operationen von hierin beschriebenen Prozessen durchführen, und sind solche Computersysteme mit anwendbarer Hardware und/oder Software konfiguriert, die die Durchführung der Operationen ermöglichen. Ferner ist ein Computersystem, das zumindest eine Ausführungsform der Erfindung implementiert, eine einzelne Vorrichtung, und ist in einer anderen Ausführungsform ein verteiltes Computersystem, das mehrere Geräte umfasst, die unterschiedlich derart arbeiten, dass das verteilte Computersystem die hierin beschriebenen Operationen durchführt und eine einzelne Vorrichtung nicht alle Operationen durchführt.
  • Die Verwendung von beliebigen und allen Beispielen, oder beispielhafter Formulierungen (z.B. „wie beispielsweise“) dient lediglich der besseren Veranschaulichung von Ausführungsformen der Offenbarung und stellt keine Beschränkung des Schutzumfangs der Erfindung dar, sofern nicht anders oder anderweitig beansprucht. Keine Formulierung in der Beschreibung ist so auszulegen, dass ein beliebiges nicht beanspruchtes Element als wesentlich für die praktische Umsetzung der Erfindung anzusehen ist.
  • Alle Referenzen, einschließlich Veröffentlichungen, Patentanmeldungen und Patente, die hierin zitiert werden, werden hiermit durch Bezugnahme in demselben Umfang einbezogen, als ob jede Referenz einzeln und spezifisch als durch Bezugnahme einbezogen angegeben wäre und hierin in ihrer Gesamtheit wiedergegeben würde.
  • In der Beschreibung und den Ansprüchen können Begriffe wie „gekoppelt“ und „verbunden“ sowie deren Ableitungen verwendet werden. Es versteht sich, dass diese Begriffe nicht als Synonyme füreinander gedacht sind. Vielmehr kann in bestimmten Beispielen „verbunden“ oder „gekoppelt“ verwendet werden, um anzuzeigen. dass zwei oder mehr Elemente in direktem oder indirektem physischem oder elektrischem Kontakt miteinander stehen. „Gekoppelt“ kann auch bedeuten, dass zwei oder mehr Elemente nicht in direktem Kontakt miteinander stehen, aber dennoch miteinander kooperieren oder interagieren.
  • Sofern nicht ausdrücklich anders angegeben wird, beziehen sich Begriffe wie „Verarbeitung“, „Berechnung“, „Berechnen“, „Bestimmen“ oder dergleichen in der gesamten Spezifikation auf Aktionen und/oder Prozesse eines Computers oder Computer- bzw. Rechensystems oder einer ähnlichen elektronischen Rechenvorrichtung, die Daten, die als physikalische, wie beispielsweise elektronische, Größen in den Registern und/oder Speichern des Rechensystems repräsentiert werden, manipulieren und/oder in andere Daten umwandeln, die in ähnlicher Weise als physikalische Größen in den Speichern, Registern oder anderen derartigen Informationsspeicher-, -übertragungs- oder -anzeigevorrichtungen des Rechensystems repräsentiert werden.
  • In ähnlicher Weise kann sich der Begriff „Prozessor“ auf eine beliebige Vorrichtung oder einen Teil einer Vorrichtung beziehen, das elektronische Daten aus Registern und/oder Speichern verarbeitet und diese elektronischen Daten in andere elektronische Daten umwandelt, die in Registern und/oder Speichern gespeichert werden können. Als nicht beschränkende Beispiele kann ein „Prozessor“ eine CPU oder eine GPU sein. Eine „Datenverarbeitungsplattform“ bzw. „Rechenplattform“ kann einen oder mehrere Prozessoren umfassen. Wie hierin verwendet, können „Software“-Prozesse z.B. Software- und/oder Hardware-Entitäten beinhalten, die Arbeit im Laufe der Zeit verrichten, wie z.B. Aufgaben, Threads und intelligente Agenten. Darüber hinaus kann sich jeder Prozess auf mehrere Prozesse beziehen, um Anweisungen nacheinander oder parallel, kontinuierlich oder intermittierend auszuführen. Die Begriffe „System“ und „Verfahren“ werden hierin austauschbar verwendet, insofern als ein System ein oder mehrere Verfahren verkörpern kann und Verfahren als ein System betrachtet werden können.
  • In dem vorliegenden Dokument können Bezugnahmen auf das Erhalten, Beschaffen, Erfassen, Empfangen oder Eingeben von analogen oder digitalen Daten in ein Subsystem, ein Computersystem oder eine computer-implementierte Maschine erfolgen. Das Erhalten, Beschaffen, Erfassen, Empfangen oder Eingeben von analogen und digitalen Daten kann auf verschiedene Weise erfolgen, wie beispielsweise durch Empfangen von Daten als Parameter eines Funktionsaufrufs oder eines Aufrufs einer Anwendungsprogrammierschnittstelle. In einigen Implementierungen kann der Prozess des Erhaltens, Beschaffens, Erfassens, Empfangens oder Eingebens von analogen oder digitalen Daten durch die Übertragung von Daten über eine serielle oder parallele Schnittstelle erreicht werden. In einer anderen Implementierung kann der Prozess des Erhaltens, Beschaffens, Erfassens, Empfangens oder Eingebens von analogen oder digitalen Daten durch Übertragen von Daten über ein Computernetzwerk von der bereitstellenden Entität zur der erfassenden Einheit durchgeführt werden. Bezugnahmen können auch auf ein Bereitstellen, Ausgeben, Übertragen, Senden oder Präsentieren analoger oder digitaler Daten erfolgen. In verschiedenen Beispielen kann der Prozess des Bereitstellens, Ausgebens, Übertragens, Sendens oder Darstellens analoger oder digitaler Daten durch Übertragen von Daten als Eingangs- bzw. Eingabe- oder Ausgangs- bzw. Ausgabeparameter eines Funktionsaufrufs, eines Parameters einer Anwendungsprogrammierschnittstelle oder eines Interprozess-Kommunikationsmechanismus erfolgen.
  • Obwohl die vorstehende Erörterung beispielhafte Implementierungen beschriebener Techniken darlegt, können auch andere Architekturen verwendet werden, um die beschriebene Funktionalität zu implementieren, und sollen diese in den Anwendungsbereich und Schutzumfang dieser Erfindung fallen. Ferner könnten, obwohl spezifische Verteilungen von Verantwortlichkeiten vorstehend zu Erörterungszwecken definiert sind, verschiedene Funktionen und Verantwortlichkeiten abhängig von Umständen auf unterschiedliche Weisen verteilt und aufgeteilt werden.
  • Obwohl ein Gegenstand in einer Sprache beschrieben wurde, die für strukturelle Merkmale und/oder methodische Handlungen spezifisch ist, versteht sich ferner, dass ein in den beigefügten Ansprüchen beanspruchter Gegenstand nicht notwendigerweise auf bestimmte beschriebene Merkmale oder Handlungen beschränkt ist. Vielmehr sind bestimmte Merkmale und Handlungen als beispielhafte Formen der Implementierung der Ansprüche offenbart.

Claims (20)

  1. Computer-implementiertes Verfahren, umfassend: Empfangen von Videodaten, die einer Gameplay-Sitzung für einen Spieler eines Spiels entsprechen; Durchführen einer Vorverarbeitung eines Frames der Videodaten, um einen Ereignisbereich zu bestimmen; Analysieren der Daten für den Ereignisbereich unter Verwendung eines oder mehrerer Ereignisdetektoren; Bestimmen eines Ereignisses, entsprechend dem Ereignisbereich, mit zumindest einem minimalen Vertrauensniveau; und Bereitstellung von Ereignisdaten, die dem bestimmten Ereignis entsprechen.
  2. Computer-implementiertes Verfahren nach Anspruch 1, ferner umfassend: Bestimmen des einen oder der mehreren Ereignisdetektoren unter Verwendung einer spielspezifischen Konfigurationsdatei, wobei die Ereignisdetektoren zumindest eines einer Bilderkennung, eines Mustervergleichs, einer Symbolerkennung, einer optischen Zeichenerkennung, einer Audioerkennung oder einer Analyse von Spielereingaben durchführen.
  3. Computer-implementiertes Verfahren nach Anspruch 1 oder 2, ferner umfassend: Bestimmen eines oder mehrerer Vorverarbeitungsalgorithmen, die für die Vorverarbeitung zu verwenden sind, unter Verwendung einer spielspezifischen Konfigurationsdatei, wobei die Vorverarbeitungsalgorithmen zumindest eines einer Bereichsauswahl, eines Upscaling, eines Downscaling, einer Filterung, einer Dehnung, einer Verzerrung, einer perspektivischen Korrektur, einer Rauschentfernung, einer Farbraumtransformation, einer Farbisolierung oder eines Wert-Schwellenwertverfahrens durchführen.
  4. Computer-implementiertes Verfahren nach einem der vorangehenden Ansprüche, ferner umfassend: Empfangen, von dem einen oder den mehreren Ereignisdetektoren, eines oder mehrerer Ereignishinweise; und Nutzen zumindest eines Algorithmus zur Übersetzung von Hinweisen in Ereignisse, um, zumindest teilweise basierend auf dem einen oder den mehreren Ereignishinweisen, das Ereignis zu bestimmen.
  5. Computer-implementiertes Verfahren nach einem der vorangehenden Ansprüche, ferner umfassend: Empfangen der Videodaten in Form einer Datei oder eines Streams während oder nach der Gameplay-Sitzung.
  6. Computer-implementiertes Verfahren nach einem der vorangehenden Ansprüche, ferner umfassend: Schreiben der Ereignisdaten in ein Ereignisprotokoll für die Gameplay-Sitzung.
  7. Computer-implementiertes Verfahren nach Anspruch 6, ferner umfassend: Analysieren der Ereignisdaten in dem Ereignisprotokoll zu Zwecken der Identifizierung von Ereignissen eines oder mehrerer Ereignistypen, die dem Spieler zugeordnet sind, in der Gameplay-Sitzung.
  8. Computer-implementiertes Verfahren nach Anspruch 7, ferner umfassend: Erzeugen von spielbezogenem Inhalt, der den Ereignisdaten in dem Ereignisprotokoll entspricht, wobei der spielbezogene Inhalt zumindest eines eines Höhepunkt-Videos, einer Spielmontage, eines Spieler-Coachings, einer Bestimmung von Spielerfähigkeiten oder einer Analyse des Gameplay-Stils des Spielers beinhaltet.
  9. Computer-implementiertes Verfahren nach einem der vorangehenden Ansprüche, ferner umfassend: Analysieren zusätzlicher Daten für die Gameplay-Sitzung, wobei die zusätzlichen Daten zumindest eines von Videodaten des Spielers, Audiodaten des Spielers, biometrischen Daten des Spielers oder Spieleingaben des Spielers beinhalten.
  10. System, umfassend: einen oder mehrere Prozessoren; und Speicher, der Befehle enthält, die dann, wenn sie von dem einen oder den mehreren Prozessoren ausgeführt werden, das System veranlassen zum: Empfangen von Medien, die einer Gameplay-Sitzung für einen Spieler eines Spiels entsprechen; Bestimmen zumindest eines Ereignisbereichs in den Medien; Analysieren von Daten für den zumindest einen Ereignisbereich unter Verwendung einer das Spiel nicht wahrnehmenden Erfassungs-Engine und eines oder mehrerer für das Spiel identifizierter Ereignisdetektoren; Bestimmen eines Ereignisses entsprechend dem zumindest einen Ereignisbereich; und Bereitstellen von Ereignisdaten entsprechend dem bestimmten Ereignis.
  11. System nach Anspruch 10, wobei die Befehle, wenn sie ausgeführt werden, das System außerdem veranlassen zum: Bestimmen des einen oder der mehreren Ereignisdetektoren unter Verwendung einer spielspezifischen Konfigurationsdatei, wobei die Ereignisdetektoren zumindest eines einer Bilderkennung, eines Mustervergleichs, einer Symbolerkennung, einer optischen Zeichenerkennung, einer Audioerkennung oder einer Analyse von Spielereingaben durchführen.
  12. System nach Anspruch 10 oder 11, wobei die Befehle, wenn sie ausgeführt werden, ferner das System veranlassen zum: Bestimmen eines oder mehrerer Vorverarbeitungsalgorithmen, die für die Vorverarbeitung der Medien zu verwenden sind, unter Verwendung einer spielspezifischen Konfigurationsdatei, wobei die Vorverarbeitungsalgorithmen zumindest eines einer Ereignisbereichsauswahl, eines Upscaling, eines Downscaling, einer Filterung, einer Dehnung, einer Verzerrung, einer perspektivischen Korrektur, einer Rauschentfernung, einer Farbraumtransformation, einer Farbisolierung oder eines Wert-Schwellenwertverfahrens durchführen.
  13. System nach einem der Ansprüche 10 bis 12, wobei die Anweisungen, wenn sie ausgeführt werden, das System ferner veranlassen zum: Empfangen, von dem einen oder den mehreren Ereignisdetektoren, eines oder mehrerer Ereignishinweise; und Nutzen zumindest eines Algorithmus zur Übersetzung von Hinweisen in Ereignisse, um, zumindest teilweise basierend auf dem einen oder den mehreren Ereignishinweisen, das Ereignis zu bestimmen.
  14. System nach einem der Ansprüche 10 bis 13, wobei die Anweisungen, wenn sie ausgeführt werden, das System ferner veranlassen zum: Empfangen der Medien in Form einer Datei oder eines Streams während oder nach der Gameplay-Sitzung.
  15. System nach einem der Ansprüche 10 bis 14, wobei die Anweisungen, wenn sie ausgeführt werden, das System ferner veranlassen zum: Schreiben der Ereignisdaten in ein Ereignisprotokoll für die Gameplay-Sitzung, wobei die Ereignisdaten sowohl für einen Menschen als auch für einen Prozess lesbar sind, wobei das Ereignisprotokoll in der Gameplay-Sitzung zumindest zum Identifizieren von Ereignissen eines oder mehrerer Ereignistypen zugänglich und dem Spieler zugeordnet ist.
  16. Nicht-flüchtiges, maschinenlesbares Medium, auf dem ein Satz von Anweisungen gespeichert ist, die dann, wenn sie von einem oder mehreren Prozessoren ausgeführt werden, den einen oder die mehreren Prozessoren veranlassen zum: Empfangen von Medien, die für eine Gameplay-Sitzung für ein Spiel repräsentativ sind; Bestimmen zumindest eines Ereignisbereichs in den Medien; Analysieren des zumindest einen Ereignisbereichs unter Verwendung eines oder mehrerer Ereignisdetektoren, die für das Spiel identifiziert wurden; Bestimmen eines Ereignisses entsprechend dem zumindest einen Ereignisbereich; und Bereitstellen von Ereignisdaten entsprechend dem bestimmten Ereignis.
  17. Nicht-flüchtiges maschinenlesbares Medium nach Anspruch 16, wobei die Anweisungen, wenn sie ausgeführt werden, ferner den einen oder die mehreren Prozessoren veranlassen zum: Bestimmen des einen oder der mehreren Ereignisdetektoren unter Verwendung einer spielspezifischen Konfigurationsdatei, wobei die Ereignisdetektoren zumindest eines einer Bilderkennung, eines Mustervergleichs, einer Symbolerkennung, einer optischen Zeichenerkennung, einer Audioerkennung oder einer Analyse von Spielereingaben durchführen.
  18. Nicht-flüchtiges maschinenlesbares Medium nach Anspruch 16 oder 17, wobei die Anweisungen, wenn sie ausgeführt werden, ferner den einen oder die mehreren Prozessoren veranlassen zum: Bestimmen eines oder mehrerer Vorverarbeitungsalgorithmen, die für die Vorverarbeitung der Medien zu verwenden sind, unter Verwendung einer spielspezifischen Konfigurationsdatei, wobei die Vorverarbeitungsalgorithmen zumindest eines einer Ereignisbereichsauswahl, eines Upscaling, eines Downscaling, einer Filterung, einer Dehnung, einer Verzerrung, einer perspektivischen Korrektur, einer Rauschentfernung, einer Farbraumtransformation, einer Farbisolierung oder eines Wert-Schwellenwertverfahrens durchführen.
  19. Nicht-flüchtiges maschinenlesbares Medium nach einem der Ansprüche 16 bis 18, wobei die Anweisungen, wenn sie ausgeführt werden, ferner den einen oder die mehreren Prozessoren veranlassen zum: Empfangen, von dem einen oder den mehreren Ereignisdetektoren, eines oder mehrerer Ereignishinweise; und Nutzen zumindest eines Algorithmus zur Übersetzung von Hinweisen in Ereignisse, um, zumindest teilweise basierend auf dem einen oder den mehreren Ereignishinweisen, das Ereignis zu bestimmen.
  20. Nicht-flüchtiges maschinenlesbares Medium nach einem der Ansprüche 16 bis 19, wobei die Anweisungen, wenn sie ausgeführt werden, ferner den einen oder die mehreren Prozessoren veranlassen zum: Schreiben der Ereignisdaten in ein Ereignisprotokoll für die Gameplay-Sitzung, wobei die Ereignisdaten in der Gameplay-Sitzung sowohl von Menschen als auch von Prozessen lesbar sind, wobei das Ereignisprotokoll zumindest zum Identifizieren von Ereignissen eines oder mehrerer Ereignistypen zugänglich und einem Spieler zugeordnet ist.
DE102020127706.7A 2019-10-31 2020-10-21 Inferenz, markenzeichen und tm spielereigniserfassung Pending DE102020127706A1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US16/669,939 2019-10-31
US16/669,939 US11154773B2 (en) 2019-10-31 2019-10-31 Game event recognition

Publications (1)

Publication Number Publication Date
DE102020127706A1 true DE102020127706A1 (de) 2021-05-06

Family

ID=75485524

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102020127706.7A Pending DE102020127706A1 (de) 2019-10-31 2020-10-21 Inferenz, markenzeichen und tm spielereigniserfassung

Country Status (3)

Country Link
US (3) US11154773B2 (de)
CN (1) CN112742025A (de)
DE (1) DE102020127706A1 (de)

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2020106650A1 (en) * 2018-11-19 2020-05-28 Nant Holdings Ip, Llc Distributed ledger tracking of event data
GB2587627B (en) * 2019-10-01 2023-05-03 Sony Interactive Entertainment Inc Apparatus and method for generating a recording
US20220328076A1 (en) * 2020-02-28 2022-10-13 Beijng Baidu Netcom Science and Technology Co.,Ltd. Method and apparatus of playing video, electronic device, and storage medium
US11838562B1 (en) * 2020-03-30 2023-12-05 Twitch Interactive, Inc. Activity-based streaming video replacement
US11554324B2 (en) * 2020-06-25 2023-01-17 Sony Interactive Entertainment LLC Selection of video template based on computer simulation metadata
US11369885B1 (en) 2020-08-28 2022-06-28 Electronic Arts Inc. Telemetric video processing
BR112023008719A2 (pt) 2020-11-05 2023-10-31 Onmobile Global Solutions Canada Ltd Sistema de implementação de fase de jogo e método de uso respectivo
US11724196B2 (en) * 2021-06-15 2023-08-15 Microsoft Technology Licensing, Llc Enhancing gaming content for previously developed gaming applications
US11826644B2 (en) * 2021-10-05 2023-11-28 Sony Interactive Entertainment Inc. Bifurcation of gameplay between mobile and non-mobile play with intelligent game state saving, and startups
CN114047981B (zh) * 2021-12-24 2024-06-21 珠海金山数字网络科技有限公司 项目配置方法及装置
CN116139468B (zh) * 2022-11-23 2024-03-15 广州小鸡快跑网络科技有限公司 一种游戏手柄的按键操控检测方法及系统
CN115659054B (zh) * 2022-12-14 2023-06-06 优友互动(北京)科技有限公司 基于强化学习的游戏关卡推荐方法和装置

Family Cites Families (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8944234B1 (en) 2001-09-27 2015-02-03 Cummins-Allison Corp. Apparatus and system for imaging currency bills and financial documents and method for using the same
US9734730B2 (en) 2013-01-31 2017-08-15 Sri International Multi-modal modeling of temporal interaction sequences
CN103902546A (zh) * 2012-12-25 2014-07-02 腾讯科技(深圳)有限公司 一种游戏音乐的处理方法和客户端
US9007189B1 (en) 2013-04-11 2015-04-14 Kabam, Inc. Providing leaderboard based upon in-game events
US9452354B2 (en) * 2013-06-07 2016-09-27 Sony Interactive Entertainment Inc. Sharing three-dimensional gameplay
EP3131053B1 (de) 2014-04-07 2020-08-05 Sony Interactive Entertainment Inc. Bewegtbildverteilungsvorrichtung für ein spiel, bewegtbildverteilungsverfahren für ein spiel und bewegtbildverteilungsprogramm für ein spiel
US20170228600A1 (en) 2014-11-14 2017-08-10 Clipmine, Inc. Analysis of video game videos for information extraction, content labeling, smart video editing/creation and highlights generation
US10255763B2 (en) * 2014-12-12 2019-04-09 Synergy Blue, Llc Interactive event outcome reveal techniques implemented in wager-based video games and non wager-based video games
US20170065888A1 (en) 2015-09-04 2017-03-09 Sri International Identifying And Extracting Video Game Highlights
US20170128843A1 (en) * 2015-09-28 2017-05-11 Versaci Interactive Gaming, Inc. Systems, methods, and apparatuses for extracting and analyzing live video content
US10232272B2 (en) * 2015-10-21 2019-03-19 Activision Publishing, Inc. System and method for replaying video game streams
US10737183B1 (en) * 2015-10-27 2020-08-11 BlueStack Systems, Inc. Smart streaming
US20170140570A1 (en) * 2015-11-13 2017-05-18 Intel Corporation Facilitating efficeint centralized rendering of viewpoint-agnostic graphics workloads at computing devices
WO2017162539A1 (en) * 2016-03-22 2017-09-28 Philips Lighting Holding B.V. Lighting for video games
US10226703B2 (en) * 2016-04-01 2019-03-12 Activision Publishing, Inc. System and method of generating and providing interactive annotation items based on triggering events in a video game
CN108126342A (zh) * 2017-12-28 2018-06-08 珠海市君天电子科技有限公司 一种信息处理方法、装置以及终端
US11148062B2 (en) * 2018-05-18 2021-10-19 Sony Interactive Entertainment LLC Scene tagging
CN108635852B (zh) * 2018-05-21 2022-03-25 网易(杭州)网络有限公司 信息处理方法、装置、电子设备及存储介质
CN108769821B (zh) * 2018-05-25 2019-03-29 广州虎牙信息科技有限公司 游戏场景描述方法、装置、设备及存储介质
US11260295B2 (en) 2018-07-24 2022-03-01 Super League Gaming, Inc. Cloud-based game streaming
US11182927B2 (en) 2018-09-18 2021-11-23 Shanghai United Imaging Healthcare Co., Ltd. Systems and methods for positioning an object
US10931853B2 (en) 2018-10-18 2021-02-23 Sony Corporation Enhanced color reproduction for upscaling
US11093781B2 (en) * 2018-12-03 2021-08-17 Amazon Technologies, Inc. Customized action based on video item events
US11017818B2 (en) 2019-01-02 2021-05-25 Synaptics Incorporated Event-based media playback
US20200346121A1 (en) * 2019-05-01 2020-11-05 Microsoft Technology Licensing, Llc Creation, curation, and sharing of playlists of game moments

Also Published As

Publication number Publication date
US20220040570A1 (en) 2022-02-10
US20210129017A1 (en) 2021-05-06
US11806616B2 (en) 2023-11-07
US11154773B2 (en) 2021-10-26
US20240082704A1 (en) 2024-03-14
CN112742025A (zh) 2021-05-04

Similar Documents

Publication Publication Date Title
DE102020127706A1 (de) Inferenz, markenzeichen und tm spielereigniserfassung
DE112020004541T5 (de) Spieleranalyse unter verwendung eines oder mehrerer neuronaler netze
DE112021000225T5 (de) Auflösungshochskalierung zur Ereigniserkennung
US11007445B2 (en) Techniques for curation of video game clips
DE112020004107T5 (de) Inhaltsempfehlungen unter verwendung eines oder mehrerer neuronaler netze
DE112019007506T5 (de) Bestimmen von dauern von hohem interesse von gameplay-sitzungen aus benutzereingaben
DE102021128292A1 (de) Skalierbare semantische bildsuche mit deep- template- matching
US20230149819A1 (en) Dynamically selecting from multiple streams for presentation by predicting events using artificial intelligence
DE102022100521A1 (de) Automatische inhaltserkennung und information im livestreaming geeignet für videospiele
DE102022121508A1 (de) Extraktion von ereignisinformation aus spielprotokollendurch natursprachenverarbeitung
US11452940B2 (en) Real-world activity simulation augmentation with real-world data of the activity
DE102022114647A1 (de) Automatisch generierte erweiterte aktivitäts- und ereignis-zu-sammelfassungen für spielsitzungen
DE102021132992A1 (de) Messen und Detektieren von Leerlaufzeiten und Erkennen der Ursachen dafür in Cloud-basierten Streaming-Anwendungen
DE102022108108A1 (de) Zwischenspeicherung von kompilierten shader-programmen in einer cloud-computing-umgebung
DE112021000598T5 (de) Erweiterbares wörterbuch für spielereignisse
DE112019007270T5 (de) Fluidsimulationen unter verwendung eines oder mehrerer neuronaler netzwerke
DE102022132167A1 (de) Spielstilanalyse für Spielempfehlungen
US11705150B2 (en) Machine learning based generation of synthetic crowd responses
DE102022120731A1 (de) Multimodale sensorfusion zur identifizierung von inhalten bei anwendungen von mensch-maschine-schnittstellen
DE112021004742T5 (de) Speicherbandbreiten-Drosselung für virtuelle Maschinen
DE102021126668A1 (de) Spielereigniserkennung für benutzergenerierte inhalte
US20230274536A1 (en) Augmentation method of visual training data for behavior detection machine learning
US20230381643A1 (en) Method and system for processing gender voice compensation
US20230152885A1 (en) Heads up display in virtual reality
Tekgül et al. Snake detection and blurring system to prevent unexpected appearance of snake images on visual media sources using deep learning

Legal Events

Date Code Title Description
R012 Request for examination validly filed