DE102023116064A1 - Bildbeleuchtung auf der basis neuronaler netzwerke - Google Patents

Bildbeleuchtung auf der basis neuronaler netzwerke Download PDF

Info

Publication number
DE102023116064A1
DE102023116064A1 DE102023116064.8A DE102023116064A DE102023116064A1 DE 102023116064 A1 DE102023116064 A1 DE 102023116064A1 DE 102023116064 A DE102023116064 A DE 102023116064A DE 102023116064 A1 DE102023116064 A1 DE 102023116064A1
Authority
DE
Germany
Prior art keywords
neural networks
objects
data
memory
images
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
DE102023116064.8A
Other languages
English (en)
Inventor
Ting-Chun Wang
Ming-Yu Liu
Koki Nagano
Sameh Khamis
Jan Kautz
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 DE102023116064A1 publication Critical patent/DE102023116064A1/de
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T11/002D [Two Dimensional] image generation
    • G06T11/60Editing figures and text; Combining figures or text
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/20Processor architectures; Processor configuration, e.g. pipelining
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/044Recurrent networks, e.g. Hopfield networks
    • G06N3/0442Recurrent networks, e.g. Hopfield networks characterised by memory or gating, e.g. long short-term memory [LSTM] or gated recurrent units [GRU]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/045Combinations of networks
    • G06N3/0455Auto-encoder networks; Encoder-decoder networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/0464Convolutional networks [CNN, ConvNet]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/047Probabilistic or stochastic networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/0475Generative networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • G06N3/084Backpropagation, e.g. using gradient descent
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/005General purpose rendering architectures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/50Lighting effects
    • G06T15/506Illumination models
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T5/00Image enhancement or restoration
    • G06T5/80Geometric correction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N20/00Machine learning
    • G06N20/10Machine learning using kernel methods, e.g. support vector machines [SVM]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N20/00Machine learning
    • G06N20/20Ensemble learning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N5/00Computing arrangements using knowledge-based models
    • G06N5/01Dynamic search techniques; Heuristics; Dynamic trees; Branch-and-bound
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N7/00Computing arrangements based on specific mathematical models
    • G06N7/01Probabilistic graphical models, e.g. probabilistic networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2207/00Indexing scheme for image analysis or image enhancement
    • G06T2207/20Special algorithmic details
    • G06T2207/20084Artificial neural networks [ANN]

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Biomedical Technology (AREA)
  • Health & Medical Sciences (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Biophysics (AREA)
  • Evolutionary Computation (AREA)
  • Software Systems (AREA)
  • Computational Linguistics (AREA)
  • Data Mining & Analysis (AREA)
  • Artificial Intelligence (AREA)
  • General Health & Medical Sciences (AREA)
  • Molecular Biology (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Mathematical Physics (AREA)
  • Computer Graphics (AREA)
  • Neurology (AREA)
  • Probability & Statistics with Applications (AREA)
  • Image Analysis (AREA)
  • Geometry (AREA)
  • Image Processing (AREA)

Abstract

Es werden Einrichtungen, Systeme und Techniken zum Erzeugen von Bilddaten vorgestellt. In mindestens einer Ausführungsform werden ein oder mehrere neuronale Netzwerke verwendet, um zu bewirken, dass ein Lichteffekt auf ein oder mehrere Objekte in einem oder mehreren Bildern angewendet wird, die zumindest teilweise auf synthetisch erzeugten Bildern des einen oder der mehreren Objekte basieren.

Description

  • TECHNISCHES GEBIET
  • Mindestens eine Ausführungsform betrifft Verarbeitungsressourcen, die verwendet werden, um künstliche Intelligenz durchzuführen und zu erleichtern. Zum Beispiel betrifft mindestens eine Ausführungsform Prozessoren oder Rechensysteme, die zum Trainieren neuronaler Netzwerke verwendet werden, und mindestens eine Ausführungsform betrifft Prozessoren und Rechensysteme zum Durchführen von Inferenzieren unter Verwendung neuronaler Netzwerke gemäß verschiedener neuartiger Verfahren, die hierin beschrieben sind.
  • STAND DER TECHNIK
  • Die digitale Fotografie wird zum Erfassen einer Vielzahl verschiedener Objekte und Szenen verwendet, wobei eine Vielzahl von Vorrichtungen mit unterschiedlichen Fähigkeiten verwendet wird, die von einer Vielzahl von Benutzern mit unterschiedlichen Fähigkeiten bedient wird. Folglich können Bilder, die unter einer Vielzahl unterschiedlicher Lichtbedingungen aufgenommen wurden, zu Bildern führen, deren Aussehen nicht optimal ist, z.B. solchen mit schlechter Beleuchtung oder unerwünschten Schatten in den Bildern. In anderen Situationen ist das ursprünglich aufgenommene Bild des Objekts zwar möglicherweise ausreichend beleuchtet, eine Anpassung des Bildhintergrunds kann jedoch dazu führen, dass die Beleuchtung nicht mehr angemessen oder natürlich aussieht. Da manuelle Anpassung teuer, zeitaufwändig oder ungenau sein kann, haben bestimmte frühere Ansätze maschinelles Lernen genutzt, um zu versuchen, eine Neubeleuchtung für Objekte in Bildern durchzuführen. Diese früheren Ansätze erfordern ein Training der Netzwerke für maschinelles Lernen unter Verwendung realer Lichtbühnendaten, deren Erfassung sehr teuer und zeitaufwändig sein kann. Darüber hinaus können diese Trainingsdatensätze, zumindest teilweise aufgrund des Kosten- und Zeitaufwands, hinsichtlich der Beleuchtung oder der Objektvielfalt eingeschränkt sein, was sich negativ auf die Inferenzleistung auswirken und verhindern kann, dass die Netzwerke auf eine breite Vielfalt von Objekttypen oder Beleuchtungssituationen skaliert werden können.
  • KURZE BESCHREIBUNG DER ZEICHNUNGEN
    • 1 veranschaulicht ein Bilderzeugungssystem mit Neubeleuchtungsfähigkeit gemäß mindestens einer Ausführungsform;
    • 2 veranschaulicht einen Instrinsic-Schätzer eines Bilderzeugungssystems gemäß mindestens einer Ausführungsform;
    • 3A und 3B veranschaulichen verschiedene Bilder und Komponentenbilder, die von einem Bild-Neubeleuchtungssystem gemäß mindestens einer Ausführungsform erzeugt werden;
    • 4 veranschaulicht einen Prozess zum Erzeugen eines Bildes mit Zielbeleuchtung gemäß mindestens einer Ausführungsform;
    • 5 veranschaulicht einen Prozess zum Erzeugen eines oder mehrerer Bilder gemäß mindestens einer Ausführungsform;
    • 6 veranschaulicht ein beispielhaftes System zum Durchführen von Bilderzeugung mit Beleuchtungsmodifikation gemäß mindestens einer Ausführungsform;
    • 7A veranschaulicht Inferenz- und/oder Trainingslogik gemäß mindestens einer Ausführungsform;
    • 7B veranschaulicht Inferenz- und/oder Trainingskomponenten gemäß mindestens einer Ausführungsform;
    • 8 veranschaulicht das Training und den Einsatz eines neuronalen Netzwerks gemäß mindestens einer Ausführungsform;
    • 9 veranschaulicht ein beispielhaftes Rechenzentrumssystem gemäß mindestens einer Ausführungsform;
    • 10A veranschaulicht ein beispielhaftes autonomes Fahrzeug gemäß mindestens einer Ausführungsform;
    • 10B veranschaulicht ein Beispiel für Kamerastandorte und Sichtfelder für das autonome Fahrzeug aus 10A gemäß mindestens einer Ausführungsform;
    • 10C ist ein Blockdiagramm, das eine beispielhafte Systemarchitektur für das autonome Fahrzeug aus 10A veranschaulicht, gemäß mindestens einer Ausführungsform;
    • 10D ist eine Darstellung, die ein System zur Kommunikation zwischen cloudbasierten Server(n) und dem autonomen Fahrzeug aus 10A veranschaulicht, gemäß mindestens einer Ausführungsform;
    • 11 ist ein Blockdiagramm, das ein Computersystem veranschaulicht, gemäß mindestens einer Ausführungsform;
    • 12 ist ein Blockdiagramm, das ein Computersystem veranschaulicht, gemäß mindestens einer Ausführungsform;
    • 13 veranschaulicht ein Computersystem gemäß mindestens einer Ausführungsform;
    • 14 veranschaulicht ein Computersystem gemäß mindestens einer Ausführungsform;
    • 15A veranschaulicht ein Computersystem gemäß mindestens einer Ausführungsform;
    • 15B veranschaulicht ein Computersystem gemäß mindestens einer Ausführungsform;
    • 15C veranschaulicht ein Computersystem gemäß mindestens einer Ausführungsform;
    • 15D veranschaulicht ein Computersystem gemäß mindestens einer Ausführungsform;
    • 15E und 15F veranschaulichen ein gemeinsam genutztes Programmiermodell gemäß mindestens einer Ausführungsform;
    • 16 veranschaulicht beispielhafte integrierte Schaltungen und damit assoziierte Grafikprozessoren gemäß mindestens einer Ausführungsform;
    • 17A-17B veranschaulichen beispielhafte integrierte Schaltungen und damit assoziierte Grafikprozessoren gemäß mindestens einer Ausführungsform;
    • 18A-18B veranschaulichen zusätzliche beispielhafte Grafikprozessorlogik gemäß mindestens einer Ausführungsform;
    • 19 veranschaulicht ein Computersystem gemäß mindestens einer Ausführungsform;
    • 20A veranschaulicht einen Parallelprozessor gemäß mindestens einer Ausführungsform;
    • 20B veranschaulicht eine Partitionseinheit gemäß mindestens einer Ausführungsform;
    • 20C veranschaulicht einen Verarbeitungscluster gemäß mindestens einer Ausführungsform;
    • 20D veranschaulicht einen Grafik-Multiprozessor gemäß mindestens einer Ausführungsform;
    • 21 veranschaulicht ein System mit mehreren Grafikverarbeitungseinheiten (graphics processing unit - GPU) gemäß mindestens einer Ausführungsform;
    • 22 veranschaulicht einen Grafikprozessor gemäß mindestens einer Ausführungsform;
    • 23 ist ein Blockdiagramm, das eine Prozessor-Mikroarchitektur für einen Prozessor veranschaulicht, gemäß mindestens einer Ausführungsform;
    • 24 veranschaulicht einen Deep-Learning-Anwendungsprozessor gemäß mindestens einer Ausführungsform;
    • 25 ist ein Blockdiagramm, das einen beispielhaften neuromorphen Prozessor veranschaulicht, gemäß mindestens einer Ausführungsform;
    • 26 veranschaulicht mindestens Abschnitte eines Grafikprozessors gemäß einer oder mehreren Ausführungsformen;
    • 27 veranschaulicht mindestens Abschnitte eines Grafikprozessors gemäß einer oder mehreren Ausführungsformen;
    • 28 veranschaulicht mindestens Abschnitte eines Grafikprozessors gemäß einer oder mehreren Ausführungsformen;
    • 29 ist ein Blockdiagramm einer Grafikverarbeitungs-Engine eines Grafikprozessors gemäß mindestens einer Ausführungsform;
    • 30 ist ein Blockdiagramm von mindestens Abschnitten eines Grafikprozessorkerns gemäß mindestens einer Ausführungsform;
    • 31A-31 B veranschaulichen Thread-Ausführungslogik, die ein Array von Verarbeitungselementen eines Grafikprozessorkerns beinhaltet, gemäß mindestens einer Ausführungsform;
    • 32 veranschaulicht eine Parallelverarbeitungseinheit (parallel processing unit - „PPU“) gemäß mindestens einer Ausführungsform;
    • 33 veranschaulicht einen Universalverarbeitungscluster (general processing cluster - „GPC“) gemäß mindestens einer Ausführungsform;
    • 34 veranschaulicht eine Speicherpartitionseinheit einer Parallelverarbeitungseinheit („PPU“) gemäß mindestens einer Ausführungsform;
    • 35 veranschaulicht einen Streaming-Multiprozessor gemäß mindestens einer Ausführungsform.
    • 36 ist ein beispielhaftes Datenflussdiagramm für eine fortschrittliche Rechenpipeline gemäß mindestens einer Ausführungsform;
    • 37 ist eine Systemdarstellung für ein beispielhaftes System zum Trainieren, Anpassen, Instanziieren und Einsetzen von Modellen des maschinellen Lernens in einer weiterentwickelten Rechenpipeline gemäß mindestens einer Ausführungsform;
    • 38 beinhaltet eine beispielhafte Veranschaulichung einer weiterentwickelten Rechenpipeline 3710A zum Verarbeiten von Bildgebungsdaten gemäß mindestens einer Ausführungsform;
    • 39A beinhaltet ein beispielhaftes Datenablaufdiagramm eines virtuellen Instruments, das eine Ultraschallvorrichtung unterstützt, gemäß mindestens einer Ausführungsform;
    • 39B beinhaltet ein beispielhaftes Datenablaufdiagramm eines virtuellen Instruments, das einen CT-Scanner unterstützt, gemäß mindestens einer Ausführungsform;
    • 40A veranschaulicht ein Datenablaufdiagramm für einen Prozess zum Trainieren eines Modells des maschinellen Lernens gemäß mindestens einer Ausführungsform; und
    • 40B ist eine beispielhafte Veranschaulichung einer Client-Server-Architektur zum Erweitern von Annotationswerkzeugen mit vorab trainierten Annotationsmodellen gemäß mindestens einer Ausführungsform.
  • DETAILLIERTE BESCHREIBUNG
  • In mindestens einer Ausführungsform kann ein Bild-Neubeleuchtungssystem 100 verwendet werden, um Beleuchtung oder Lichteffekte, die in einem Bild eines Objekts oder einer Szene vorhanden sind, z.B. eine Person in einem Porträtbild, unter Verwendung von Komponenten anzupassen, wie etwa jenen, die in 1 dargestellt sind. In mindestens einer Ausführungsform kann das Bild-Neubeleuchtungssystem 100 ein Framework verwenden, das einen synthetischen Lichtbühnendatensatz nur unter Verwendung synthetischer Daten rendern kann, der zum Trainieren eines Bild-Neubeleuchtungsnetzwerks verwendet werden kann. In mindestens einer Ausführungsform kann ein Eingabebild 102 als Eingabe für ein Geometrienetzwerk 104 bereitgestellt werden, das geometrische Informationen über ein oder mehrere Objekte im Bild 102 inferenzieren kann, wie etwa Oberflächennormalen und eine oder mehrere Lichtkarten. Um eine Domänenlücke zu schließen, die sich aus der Verwendung synthetischer Daten zum Trainieren eines Modells zum Durchführen von Inferenzieren an realen Bilddaten ergibt, kann in mindestens einer Ausführungsform eine Albedo-Schätzung durch ein Albedo-Bestimmungsnetzwerk 106 sowie durch ein zusätzliches Albedo-Verfeinerungsteilnetzwerk (z.B. das Albedo-Verfeinerungsnetzwerk 210 des Intrinsics-Schätzers 108, wie in 2 veranschaulicht) durchgeführt werden. In mindestens einer Ausführungsform kann dieses zusätzliche Albedo-Verfeinerungsteilnetzwerk verwendet werden, um einen Rest zu inferenzieren oder vorherzusagen, der zu einer ursprünglichen Albedo-Vorhersage aus dem Albedo-Netzwerk 106 hinzugefügt werden soll. In mindestens einer Ausführungsform kann Albedo einen Ausdruck der Fähigkeit einer Oberfläche zum Reflektieren von Licht bereitstellen. In mindestens einer Ausführungsform neigen dunklere Oberflächen dazu, Licht zu absorbieren und somit einem niedrigeren Albedo-Wert zu entsprechen, während hellere Oberflächen dazu neigen, Licht zu reflektieren und somit einem höheren Albedo-Wert zu entsprechen. In mindestens einer Ausführungsform kann das Geometrienetzwerk 104 verwendet werden, um eine Richtung zu inferenzieren, in der Licht einfallen und von Punkten entlang einer Oberfläche eines Objekts reflektiert werden würde, und das Albedo-Netzwerk 106 kann verwendet werden, um eine Menge dieses Lichts zu inferenzieren, die absorbiert und von dieser Oberfläche an diesen Punkten reflektiert wird.
  • In mindestens einer Ausführungsform können die Komponenten des in 1 veranschaulichten Systems 100 unter Verwendung synthetischer Daten trainiert werden. In mindestens einer Ausführungsform können diese Komponenten eingefroren oder mindestens vorübergehend von weiterem Lernen abgehalten werden, während nur dieses Albedo-Restnetzwerk 210 auf realen Daten trainiert wird. In mindestens einer Ausführungsform ermöglicht dies, dass ein Großteil des Systems 100 auf synthetischen Daten trainiert wird, um lernen zu können, genaue geometrische Inferenzen und grobe (oder anfängliche) Albedo-Inferenzen aus einer breiten Vielfalt synthetischer Trainingsdaten zu erzeugen, während das System 100 außerdem lernen kann, genaue Albedo-Bestimmungen zu inferenzieren, indem es ein Albedo-Verfeinerungsnetzwerk auf realen Bilder trainiert, die z.B. von einer oder mehreren Kameras oder Bildaufnahmevorrichtungen aufgenommen werden können. In mindestens einer Ausführungsform kann zur Verbesserung der zeitlichen Stabilität bei Neubeleuchtung von Videos ein weiteres zeitliches Teilnetzwerk 212 verwendet werden, wie in 2 veranschaulicht, das verfeinerte Normalen- und Albedo-Karten vorhersagen kann, die zeitlich konsistenter sind, um Artefakte wie Flimmern im Laufe der Zeit zu vermeiden, wenn Neubeleuchtungsdaten für einzelne Videoframes bestimmt werden. In mindestens einer Ausführungsform kann das System 100 Details vorhersagen, die von einem physischen Renderer nicht modelliert werden können, anstatt die neu beleuchtete Ausgabe direkt vorherzusagen. In mindestens einer Ausführungsform können dann ein oder mehrere zusätzliche Teilnetzwerke verwendet werden, um eine Domänenlücke zwischen synthetischen und realen Datensätzen zu schließen und, wie oben erwähnt, die zeitliche Stabilität zu verbessern.
  • In mindestens einer Ausführungsform kann ein Porträt-Neubeleuchtungsprozess bei einem gegebenen Porträtbild einer Person und einer Umgebungskarte der Zielbeleuchtung darauf abzielen, eine Person in diesem Bild erneut zu beleuchten, als ob diese Person in einer Umgebung mit dieser Zielbeleuchtung erscheinen würde. In mindestens einer Ausführungsform kann Deep Learning genutzt werden, um qualitativ hochwertige Ergebnisse zu erzielen. In mindestens einer Ausführungsform besteht ein wirksamer Ansatz darin, das Training tiefer neuronaler Netzwerke mit einem High-Fidelity-Datensatz gewünschter Eingabe-Ausgabe-Paare zu überwachen. In mindestens einer Ausführungsform können die zum Trainieren eines solchen Datensatzes verwendeten Daten mindestens in erster Linie synthetischer Natur sein, was die Erzeugung eines großen, vielfältigen Datensatzes ohne Kosten und Zeitaufwand für die Aufnahme tatsächlicher Bilder unter Verwendung einer Lichtbühne ermöglicht. In mindestens einer Ausführungsform kann die erfolgreiche Neubeleuchtung eines Bildes, beispielsweise eines Porträtbilds, von mindestens zwei Bedingungen abhängen. In mindestens einer Ausführungsform besteht eine erste Bedingung darin, dass die Physik des Lichttransports korrekt sein muss. In mindestens einer Ausführungsform besteht eine zweite Bedingung darin, dass die erzeugte Ausgabe fotorealistisch (oder zumindest stilistisch realistisch) sein muss. Um diese erste Bedingung zu erfüllen, kann in mindestens einer Ausführungsform ein Neubeleuchtungsnetzwerk unter Verwendung von Trainingsdaten trainiert werden, die von einer virtuellen Lichtbühne erzeugt werden, die physikalisch basiertes Rendering an verschiedenen synthetischen 3D-Menschen gemäß verschiedenen Umgebungskarten durchführt. Um diese zweite Bedingung zu erfüllen, kann in mindestens einer Ausführungsform ein Synthetisch-zu-real-Ansatz verwendet werden, um Fotorealismus in die Ausgabe des Neubeleuchtungsnetzwerks einzubringen. In mindestens einer Ausführungsform kann ein solcher Ansatz nicht nur eine genaue Neubeleuchtung, sondern auch steuerbare Blendwirkungen auf Gläsern und zeitlich konsistentere Ergebnisse für die Neubeleuchtung von Videos bereitstellen.
  • In mindestens einer Ausführungsform kann Porträt-Neubeleuchtung bei einem gegebenen Foto einer Person (oder eines anderen physischen Objekts) diese Person erneut beleuchten, als ob sie in einer neuen Lichtumgebung oder unter einer oder mehreren unterschiedlichen Lichtbedingungen erscheinen würde. In mindestens einer Ausführungsform kann es wünschenswert sein, eine solche Neubeleuchtung schnell und automatisch durchzuführen, beispielsweise für Smartphone-Fotografie und Videokonferenzen. In mindestens einer Ausführungsform kann Neubeleuchtung einer Person, als ob sie wirklich zu einer anderen Szene gehört, Kenntnisse über die Geometrie und Materialien dieser 3D-Szene erfordern, um komplexe Beleuchtungsinteraktionen, einschließlich globaler Beleuchtung, zu simulieren. In mindestens einer Ausführungsform kann dies Neubeleuchtung eines Porträts aus einem 2D-Freilandporträt ohne vorherige Kenntnis dieser Person oder Szene beinhalten. In mindestens einer Ausführungsform kann Deep Learning für eine solche Neubeleuchtung von Freilandporträts verwendet werden, wobei tiefe neuronale Netzwerke zumindest teilweise unter Verwendung eines überwachten Frameworks unter Verwendung hochwertiger Ground-Truth-Daten trainiert werden können. In mindestens einer Ausführungsform können diese Ground-Truth-Daten Bilder, die unter Verwendung einer physischen Lichtbühne aufgenommen wurden, und/oder synthetisierte Bilder unter Verwendung einer virtuellen Lichtbühne beinhalten. In mindestens einer Ausführungsform kann dies zumindest teilweise basierend auf einer Beobachtung durchgeführt werden, wobei eine Neubeleuchtungstask entkoppelt werden kann in: 1) Lernen einer Annäherung an die Physik des Lichttransports, der für die Porträt-Neubeleuchtung erforderlich ist, und 2) Lernen, fotorealistische Porträtbilder zu synthetisieren.
  • In mindestens einer Ausführungsform kann eine virtuelle Lichtbühne aufgebaut werden, um vorab aufgenommene fotogrammetrische Gesichtsscans erneut zu beleuchten, um einen Trainingsdatensatz unter Verwendung eines physikalisch basierten Renderers zu erstellen. In mindestens einer Ausführungsform kann die Verwendung einer virtuellen Lichtbühne mehrere Vorteile bieten. In mindestens einer Ausführungsform werden Workstations nur zum Rendern eines Ground-Truth-Trainingsdatensatzes benötigt, wodurch Kosten und Aufwand beim Erstellen eines physischen Trainingsdatensatzes gespart werden. Da auf Fotogrammetrie basierende Gesichtsscans viel einfacher zu erfassen sind als OLAT-Scans, kann ein solcher Ansatz in mindestens einer Ausführungsform einen vielfältigeren Datensatz mit einer größeren Vielfalt an Altersgruppen, Geschlechtern und ethnischer Zugehörigkeit erstellen. In mindestens einer Ausführungsform kann das Rendern eines synthetischen Datensatzes auch die Ground Truth für mehrere andere nützliche Attribute bereitstellen. In mindestens einer Ausführungsform kann dies verschiedene Funktionen ermöglichen, beispielsweise das Steuern von Blendwirkungen bei Brillen.
  • Obwohl in mindestens einer Ausführungsform eine virtuelle Lichtbühne eine Möglichkeit zur Annäherung an die Physik des Lichttransports bereitstellen kann, kann der Realismus der Deep-Network-Ausgabe zumindest etwas eingeschränkt sein, wenn nur mit synthetischen Daten trainiert wird. In mindestens einer Ausführungsform kann ein fotogrammetrischer Gesichtsscan nur grundlegende Informationen zum Reflexionsgrad enthalten, wie z.B. diffuse Albedo, und stellt nicht alle notwendigen Informationen für eine realistische Porträt-Neubeleuchtung bereit, wie z.B. Oberflächen - und Untergrund-Reflexionseigenschaften. In mindestens einer Ausführungsform kann dies dazu führen, dass erzeugte synthetische Trainingsdaten eine Domänenlücke gegenüber realen Gegenstücken aufweisen. In mindestens einer Ausführungsform kann diese Lücke geschlossen oder auf andere Weise ausgeglichen werden, indem ein Ansatz der Synthetisch-an-real-Anpassung gewählt wird. In mindestens einer Ausführungsform können Freiland-Porträtbilder (z.B. verfügbare, mit der Kamera aufgenommene Bilder von physischen Personen) verwendet werden, um in einem Porträt-Neubeleuchtungsnetzwerk erlernte Zwischendarstellungen zum Erzielen fotorealistischer Ergebnisse anzupassen. In mindestens einer Ausführungsform besteht eine besondere Herausforderung für eine solche Anpassung darin, den Fotorealismus zu verbessern und gleichzeitig die Fähigkeit beizubehalten, ein Bild kohärent mit einer bereitgestellten Lichtbedingung neu zu beleuchten. In mindestens einer Ausführungsform können selbstüberwachte Beleuchtungskonsistenzverluste verwendet werden, die dazu beitragen, dass dieses Netzwerk während der Domänenanpassung eine konsistente Neubeleuchtung aufrechterhält.
  • In mindestens einer Ausführungsform kann ein Neubeleuchtungs-Framework auch auf die Neubeleuchtung anderen bildbasierten Inhalts, z.B. die Neubeleuchtung von Porträts, Objekten oder Szenen für Videos, Augmented Reality, Virtual Reality, Enhanced Reality oder andere derartige Anwendungen oder Operationen, erweitert werden. In mindestens einer Ausführungsform kann anstelle der bildweisen Neubeleuchtung, die zu Flimmerartefakten führen kann, auch eine Erweiterung von Bild zu Video als Domänenanpassungsproblem modelliert werden. In mindestens einer Ausführungsform können mit der Kamera aufgenommene Videos von physischen Personen, Objekten oder Szenen verwendet werden, um in einem Porträt-Neubeleuchtungsnetzwerk erlernte Zwischendarstellungen anzupassen, um die zeitliche Konsistenz zu verbessern, was zu einem Video-Porträt-Neubeleuchtungsnetzwerk führen kann, das für verschiedene Videoanwendungen nützlich ist. In mindestens einer Ausführungsform kann „Kamera“ in diesem Zusammenhang im weitesten Sinne so ausgelegt werden, dass sie alle Systeme, Vorrichtungen, Dienste, Operationen oder Techniken, die zum Erfassen oder Erzeugen von eine Person, ein Objekt oder eine Szene darstellenden Bilddaten in der Lage sind, wie beispielsweise eine Vielfalt bildgebender Sensoren und Systeme, umfasst.
  • In mindestens einer Ausführungsform kann die Porträt-Neubeleuchtung erreicht werden, indem eine Umgebungskarte auf ein Reflexionsfeld projiziert wird, das durch OLAT (one light at a time)-Bilder erstellt wird, die mit einem Lichtbühnenaufbau aufgenommen wurden. In mindestens einer Ausführungsform kann ein solches Framework auch moderate Bewegungen von Motiven während der OLAT-Bilderfassung ermöglichen. In mindestens einer Ausführungsform können diese OLAT-basierten Ansätze qualitativ hochwertige Neubeleuchtungsergebnisse für ein Motiv liefern, dessen OLAT-Aufnahme verfügbar ist, sie können aber nicht auf ungesehene Motive angewendet werden. In mindestens einer Ausführungsform können diese Verfahren trotz einer solchen Einschränkung für den Aufbau eines Ground-Truth-Datensatzes für die hier erörterten lernbasierten Porträt-Neubeleuchtungsverfahren wertvoll sein.
  • In mindestens einer Ausführungsform können verschiedene Architekturen tiefer neuronaler Netzwerke für die Porträt-Neubeleuchtung basierend auf gerichteter Beleuchtung und HDR-Umgebungskartenbeleuchtung verwendet werden. In mindestens einer Ausführungsform kann eine Encoder-Decoder-Architektur verwendet werden. In mindestens einer Ausführungsform kann ein Satz von U-Nets kombiniert werden, um eine endgültige Ausgabe mit hochpräzisen Ergebnissen zu erzeugen. In mindestens einer Ausführungsform kann eine Netzwerkarchitektur für Neubeleuchtung von Videoporträts die bei der Einrichtung der Erzeugung synthetischer Daten verfügbare Nutzungsüberwachung zumindest im Hinblick auf andere Ansätze etwas vereinfachen. In mindestens einer Ausführungsform können Module verwendet werden, um eine Lücke zwischen synthetischen und realen Domänen zu schließen und zeitlich konsistente Ergebnisse bei der Neubeleuchtung von Videoporträts zu erzielen.
  • In mindestens einer Ausführungsform können synthetische Daten eine wertvolle Überwachung für Tasks bereitstellen, bei denen die Erfassung realer Ground-Truth-Daten eine Herausforderung darstellen kann. In mindestens einer Ausführungsform besteht eine potenzielle Herausforderung bei der Verwendung synthetischer Daten zum Trainieren eines lernbasierten Ansatzes darin, dass ein Problem einer Lücke zwischen synthetischen und realen Domänen vorliegt. In mindestens einer Ausführungsform ist dies zumindest teilweise darauf zurückzuführen, dass synthetische Daten und reale Daten zwei unterschiedlichen Verteilungen folgen. Um diese Lücke zu schließen, kann in mindestens einer Ausführungsform ein Ansatz verwendet werden, der sich auf Bilder (z.B. Porträtbilder) konzentriert, die hochauflösende Gesichtsdetails enthalten, bei denen Fehler möglicherweise weniger verzeihlich sind. In mindestens einer Ausführungsform kann ein solcher Ansatz auch Umgebungskarten als Beleuchtungsdarstellung für eine bildbasierte Neubeleuchtung verwenden, was in vielen Situationen sehr ausdrucksstark sein kann. In mindestens einer Ausführungsform kann ein neuartiger selbstüberwachter Beleuchtungskonsistenzverlust verwendet werden, um qualitativ hochwertige Ergebnisse zu erzielen.
  • In mindestens einer Ausführungsform können gepaarte Daten zur Überwachung beim Training eines Neubeleuchtungsnetzwerks verwendet werden. In mindestens einer Ausführungsform kann jedes Sample in einem Datensatz aus einem Bildpaar derselben Person mit derselben Pose und demselben Gesichtsausdruck, jedoch unter zwei unterschiedlichen Lichtbedingungen, bestehen. In mindestens einer Ausführungsform kann dieser gepaarte Trainingsdatensatz mit einer virtuellen Lichtbühne und einer Pipeline zur Erzeugung synthetischer Menschen erzeugt werden. In mindestens einer Ausführungsform kann eine Pipeline zur Erzeugung synthetischer Menschen vorab aufgenommene Gesichtsscans nutzen, die verschiedene Identitäten in unterschiedlichen Gesichtsausdrücken enthalten. In mindestens einer Ausführungsform enthalten diese Gesichtsscans möglicherweise weder Haare noch Accessoires und können zufällig mit Haarsträhnenmodellen verschiedener Stile und mit verschiedenen Accessoires und Kleidungsstücken gepaart sein. In mindestens einer Ausführungsform können diese synthetischen Menschen in einer virtuellen Lichtbühne platziert werden, wo sie beispielsweise unter Verwendung von High-Dynamic-Range-(HDR-)Umgebungskarten beleuchtet werden können. In mindestens einer Ausführungsform kann ein Rendering einer virtuellen Lichtbühne unter Verwendung eines physikalisch basierten Pfadverfolgungs-Renderers durchgeführt werden, um den Lichttransport wirklichkeitsgetreu zu simulieren.
  • In mindestens einer Ausführungsform können für diese synthetischen Menschen hochwertige, auf Fotogrammetrie basierende 3D-Gesichtsscans mit hochauflösenden Texturkarten verwendet werden. In mindestens einer Ausführungsform können solche Assets durch ein relativ kostengünstiges System aufgenommen werden, das auf einem passiven Kamera-Array basiert, was erheblich kostengünstiger sein kann als die Verwendung einer Lichtbühne. In mindestens einer Ausführungsform kann eine im Handel erhältliche Sammlung von 3D-Gesichtsscans bezogen werden, wobei jedem Gesichtsscan eine hochwertige diffuse 4k-Textur und eine hochauflösende Gesichtsgeometrie zugeordnet werden können, um mesoskopische Gesichtsdetails darzustellen. Da in mindestens einer Ausführungsform ein Ausgabenetz aus einem Stereoprozess mit mehreren Ansichten unstrukturiert sein kann, kann ein Vorlagenmodell mit beispielsweise 12.325 Eckpunkten für einen Scan verwendet werden, wobei die verbleibende Gesichtsgeometrie Details aus einer 4K-Verschiebungskarte beinhaltet. In mindestens einer Ausführungsform kann ein Shader wie etwa ein aiStandardSurface-Shader verwendet werden, um Gesichtsmaterial zu beschreiben, das pfadverfolgte Streuung unter der Oberfläche und spiegelnde Glanzlichter beinhalten kann. In mindestens einer Ausführungsform kann die diffuse Textur als eine unter der Oberfläche streuende Farbe eingestellt werden und unterschiedliche Materialien können auf unterschiedliche Augenregionen angewendet werden, um eine Spiegelung der Augen wiederzugeben. In mindestens einer Ausführungsform kann ein Datensatz verwendet werden, der aus etwa ein paar hundert Männern und etwa ein paar hundert Frauen mit eindeutigen Identitäten besteht. In mindestens einer Ausführungsform kann jede Identität eine Anzahl (z.B. 20) von Gesichtsausdrucksvarianten aufweisen, was insgesamt zu über 10.000 Gesichtsscans führt. In mindestens einer Ausführungsform kann ein solcher Datensatz auch ein vielfältiges Spektrum an Altersgruppen und ethnischer Zugehörigkeit aufweisen, einschließlich Altersgruppen von etwa 18 bis etwa 76 Jahren, und er kann eine Anzahl (z.B. mindestens sechs) von unterschiedlichen ethnischen Gruppen darstellen.
  • Wenn Gesichtsscans keine Haare enthalten, kann in mindestens einer Ausführungsform ein Deskriptor, beispielsweise ein XGen-Deskriptor in Maya, zum Modellieren benutzerdefinierter Haarsträhnenvorlagen verwendet werden. In mindestens einer Ausführungsform kann jede Frisur von einem erfahrenen Künstler erstellt werden und aus mehreren XGen-Deskriptoren für verschiedene Haarabschnitte wie Wimpern, Augenbrauen und Bärte bestehen. In mindestens einer Ausführungsform kann ein physikalisch basierter Haar-Shader wie aiStandardHair auf diese XGen-Deskriptoren angewendet werden. In mindestens einer Ausführungsform kann dies verwendet werden, um Dutzende von Frisuren zu erzeugen, von denen jede in viele Variationen verzweigt werden kann. In mindestens einer Ausführungsform können zur weiteren Erhöhung der Diversität Melanin (innerhalb von (0, 1)) und Melaninrötung (innerhalb von (0, 1)) zufällig ausgewählt werden, um die Haarfarben zu ändern, wobei jede Frisur dann an verschiedene Kopfhauttypen von 3D-Gesichtsscans angepasst wird.
  • In mindestens einer Ausführungsform kann eine Anzahl (z.B. mindestens sieben) von 3D-Kleidungsstückmodellen erlangt werden, um diesen synthetischen Menschen Kleidungsvarianten hinzuzufügen. In mindestens einer Ausführungsform weisen diese Kleidungsstücke unterschiedliche Stile auf, die von Businesshemden bis hin zu T-Shirts reichen. In mindestens einer Ausführungsform können Farbe und Rauheit dieser Kleidung zufällig ausgewählt werden (z.B. von 0,1 bis 1,5), um ein breiteres Spektrum an Kleidung abzudecken. In mindestens einer Ausführungsform können auch Modelle für verschiedene Arten von Brillen und Kopfhörern erfasst und genutzt werden, die beim Rendern zufällig zu diesen synthetischen Menschen hinzugefügt werden können. In mindestens einer Ausführungsform können diese Assets hinzugefügt werden, da sie häufig für Videokonferenzen verwendet werden, was eine potenzielle Anwendung für die Neubeleuchtung von Einzelbildporträts darstellt, obwohl auch andere Accessoires bereitgestellt werden können, wie z.B. Modelle für Ohrringe, Halsketten, Schals und Masken.
  • In mindestens einer Ausführungsform kann zum Rendern eines Trainingsdatensatzes ein Renderer oder ein physikalisch basierter Pfad-Tracer wie Arnold in Maya verwendet werden. In mindestens einer Ausführungsform kann ein Renderer den Lichttransport basierend auf der Physik simulieren und realistische Ausgaben erzeugen. In mindestens einer Ausführungsform kann ein Trainingsdatensatz aus gepaarten Samples bestehen. In mindestens einer Ausführungsform kann jedes Sample aus einem synthetischen Menschen mit derselben Pose und demselben Gesichtsausdruck bestehen, der unter zwei unterschiedlichen Beleuchtungen gerendert wird. In mindestens einer Ausführungsform kann ein synthetischer Mensch durch Abtasten eines Gesichtsscans, einer Frisur, eines Kleidungsstücks, einer Brille (z.B. mit einer Wahrscheinlichkeit von 0,2) und eines Kopfhörers (z.B. mit einer Wahrscheinlichkeit von 0,05) erstellt werden. In mindestens einer Ausführungsform kann ein synthetischer Mensch in der Nähe des Weltzentrums mit einer gewissen Zufälligkeit der genauen Position positioniert werden. In mindestens einer Ausführungsform kann die Kamerapose von einer Kugel mit Mittelpunkt im Weltzentrum und einem festen Radius abgetastet werden. In mindestens einer Ausführungsform kann ein Betrachtungswinkel auf einen Bereich (z.B. -45°, 45°) horizontal und (z.B. -22,5°, 22,5°) vertikal vor diesen Flächen beschränkt werden. In mindestens einer Ausführungsform können solche Variationen der Kamerapose zu Variationen der Kopfhaltungen in gerenderten Bildern dieser synthetischen Menschen führen.
  • In mindestens einer Ausführungsform können, sobald ein synthetischer Mensch erstellt und eine Kamerapose abgetastet wurde, zwei verschiedene Umgebungskarten verwendet werden, um ein gepaartes Sample zu beleuchten und zu erstellen. In mindestens einer Ausführungsform können HDR-Bilder im Breitengrad-Längengrad-Format als Beleuchtung verwendet werden. In mindestens einer Ausführungsform kann eine große Anzahl (z.B. über 1.500) von HDR-Bildern für das Training verwendet werden, wobei eine kleinere Anzahl für die Auswertung aus einer Vielzahl von Quellen verwendet wird. In mindestens einer Ausführungsform können diese HDR-Bilder aus verschiedenen Umgebungen, einschließlich Innen- und Außenbereichen, aufgenommen werden. Um weitere Beleuchtungsvariationen hinzuzufügen, können in mindestens einer Ausführungsform zufällige Drehungen und horizontale Kippungen auf diese HDR-Bilder angewendet werden.
  • In mindestens einer Ausführungsform können zusätzlich zu Farbbildern auch andere Attribute wie Albedo- und Normalenkarten gerendert werden, die unter Verwendung einer Pipeline zur Erzeugung synthetischer Daten wie hier beschrieben berechnet werden können. In mindestens einer Ausführungsform können zwei Versionen von Oberflächennormalen gerendert werden, darunter eine mit Brillen und eine ohne. In mindestens einer Ausführungsform kann eine doppelte Normalenkartenbehandlung dabei helfen, Blendwirkungen bei Brillen zu synthetisieren. In mindestens einer Ausführungsform sind Beispiele für gerenderte Ergebnisse mit Linsen 360 und ohne Linsen 362 in 3B veranschaulicht. In mindestens einer Ausführungsform können etwa 300.000 gepaarte Samples gerendert werden, wobei jedes Sample ein Paar RGB-Bilder und verschiedene Attribute wie die hier erörterten enthält. In mindestens einer Ausführungsform kann jedes dieser Bilder eine Auflösung von 512 x 512 Pixel aufweisen und in einem HDR-Format gespeichert werden.
  • In mindestens einer Ausführungsform ist ein Framework eines Neubeleuchtungssystems in den 1 und 2 veranschaulicht. In mindestens einer Ausführungsform wird ein Vordergrundbild unter Verwendung eines handelsüblichen Mattierungsnetzwerks bei einem gegebenen Eingabebild 102, beispielsweise einem Eingabeporträtbild, erlangt. In mindestens einer Ausführungsform können dieses Bild und eine Umgebungskarte als Eingaben für ein Neubeleuchtungsnetzwerk dienen, um ein neu beleuchtetes Bild vorherzusagen. In mindestens einer Ausführungsform kann ein solches Framework (unter Verwendung des Geometrienetzwerks 104) eine Normalenkarte speziell für Merkmale wie Gläser oder Linsen vorhersagen, sodass es verwendet werden kann, um eine stark spiegelnde Lichtkarte zu erstellen, die Informationen zur Blendwirkung auf Gläsern beinhaltet. In mindestens einer Ausführungsform kann eine grobe Ausgabe unter Verwendung von geschätzten Albedo-Werten (vom Albedo-Netzwerk 106) und Lichtkarten erhalten werden. In mindestens einer Ausführungsform werden auch feine Details zur Hinzufügung zu dieser groben Ausgabe unter Verwendung der in 2 veranschaulichten Komponenten geschätzt, um eine endgültige Ausgabe zu erlangen. In mindestens einer Ausführungsform veranschaulicht 2 das Synthetisch-an-real-Anpassungsnetzwerk 210 und die zeitlichen Verfeinerungsnetzwerke 212, 214. In mindestens einer Ausführungsform kann ein solches System den Intrinsics-Schätzerblock 108 verwenden, um eine Domänenlücke zwischen synthetischen und realen Domänen zu schließen, da beobachtet wurde, dass diese Lücke zumindest zum Großteil auf eine geschätzte Albedo-Karte zurückzuführen ist. In mindestens einer Ausführungsform kann ein Domänenanpassungsnetzwerk (z.B. das Albedo-Restnetzwerk 210) verwendet werden, um diese Albedo-Karte durch Vorhersage eines Albedo-Rests zu verfeinern, wobei nur ungepaarte reale Daten verwendet werden. Um die zeitliche Stabilität bei Neubeleuchtung von Videos zu erhöhen, kann ein solches System in mindestens einer Ausführungsform zwei Restnetzwerke (212, 214) trainieren, um Normalen- bzw. Albedo-Karten unter Verwendung realer Videos zu verfeinern.
  • In mindestens einer Ausführungsform kann ein solches Framework bei einem gegebenen Eingabebild 102 eine Normalenkarte unter Verwendung eines Geometrieschätznetzwerks 104 und eine Albedo-Karte unter Verwendung eines Albedo-Schätznetzwerks 106 vorhersagen. In mindestens einer Ausführungsform werden diffuse und spiegelnde Lichtkarten 116, 118, beispielsweise durch Verwenden des Spiegelnetzwerks 110, in Bezug auf die Beleuchtung einer Zielumgebungskarte unter Verwendung vorhergesagter Normalen vorhergesagt. In mindestens einer Ausführungsform werden diese Komponenten als Eingabe für das Rendering-Restnetzwerk 112 verkettet, um ein endgültiges, neu beleuchtetes Ausgabebild zu erzeugen. In mindestens einer Ausführungsform können diese Netzwerke alle unter Verwendung einer UNet-Architektur implementiert werden.
  • In mindestens einer Ausführungsform nimmt das Geometrienetzwerk 104 zunächst das Vordergrundbild I als Eingabe und erzeugt eine Oberflächennormalenkarte N. In mindestens einer Ausführungsform wird das Vordergrundbild I mit der Oberflächennormalen N als Eingabe verkettet und an das Albedo-Netzwerk 106 gesendet. In mindestens einer Ausführungsform ist die Ausgabe dieses Netzwerks eine Albedo-Karte. In mindestens einer Ausführungsform können für Umgebungskarten eine Karte der diffusen Bestrahlungsstärke und ein Satz vorgefilterter Umgebungskarten gemäß spiegelnden Phong-Exponenten (z.B. 1, 16, 32, 64) vorberechnet werden. In mindestens einer Ausführungsform kann Vorfiltern von Umgebungskarten die Integrationsberechnung offline durchführen und so Echtzeit-Rendering diffuser und spiegelnder Materialien ermöglichen. In mindestens einer Ausführungsform können Lichtkarten L d , L S 1 , L S 16 , L S 32 , L S 64
    Figure DE102023116064A1_0001
    durch einfaches Indizieren vorgefilterter Karten unter Verwendung von Normalen- oder Reflexionsrichtungen berechnet werden, die zumindest teilweise von vorhergesagten Oberflächennormalen abhängen. In mindestens einer Ausführungsform können diese diffusen und spiegelnden Lichtkarten effizientere Beleuchtungsdarstellungen sein als eine ursprüngliche Umgebungskarte, da sie diffuse und spiegelnde Beleuchtungskomponenten in den Pixelraum einbetten.
  • In mindestens einer Ausführungsform kann ein Spiegelnetzwerk das Vordergrundbild I, die Albedokarte A und diese vier Spiegellichtkarten L d , L S 1 , L S 16 , L S 32 , L S 64
    Figure DE102023116064A1_0002
     
    Figure DE102023116064A1_0003
    als Eingabe verwenden und eine Vierkanal-Gewichtungskarte vorhersagen W S 1 , W S 16 , W S 32 , W S 64 .
    Figure DE102023116064A1_0004
    In mindestens einer Ausführungsform kann eine gewichtete Karte für spiegelndes Licht Ls berechnet werden durch: L S = i W S i L S o
    Figure DE102023116064A1_0005
    wobei i = 1, 16, 32, 64 und ⊙ eine pixelweise Multiplikation angibt. In mindestens einer Ausführungsform verwendet dieses Rendering-Netzwerk die Albedo-Karte A, die Karte für diffuses Licht LD und die Karte für spiegelndes Licht Ls als Eingabe und sagt das neu belichtete Bild R voraus. In mindestens einer Ausführungsform können diese Netzwerke unter Verwendung von L1-Verlusten, Wahrnehmungsverlusten und GAN-Verlusten auf Normalen-, Albedo- und Spiegelkarten sowie dieser endgültigen Ausgabe trainiert werden.
  • In mindestens einer Ausführungsform kann ein Framework ein anfängliches Rendering aus vorhergesagten Albedo-Karten, Karten für diffuses Licht und Karten für spiegelndes Licht berechnen. In mindestens einer Ausführungsform kann ein Ergebnis verfeinert werden, indem nur Details geschätzt werden, die durch dieses grobe Rendering nicht modelliert werden können. In mindestens einer Ausführungsform kann ein endgültiges Rendering in zwei Schritte zerlegt werden. In mindestens einer Ausführungsform können Koeffizienten vorhergesagt werden, um Karten für diffuses und spiegelndes Licht linear zu kombinieren und dann diese kombinierte Karte mit dieser Albedo-Karte zu multiplizieren, um ein anfängliches Ergebnis zu erhalten, das angegeben werden kann wie folgt: R 0 = A ( C d L d + C S L S )
    Figure DE102023116064A1_0006
    wobei ⊙ für elementweise Multiplikation steht und Cd, CS vorhergesagte Dreikanalkoeffizienten sind. In mindestens einer Ausführungsform kann eine Restkarte δR geschätzt werden, um Details zu berücksichtigen, die durch dieses anfängliche Rendering nicht modelliert wurden. In mindestens einer Ausführungsform kann dann ein endgültiges neu beleuchtetes Bild durch R = R0 + δR berechnet werden.
  • In mindestens einer Ausführungsform werden Koeffizienten und eine Restkarte durch fR vorhergesagt, wobei das eingegebene Vordergrundbild I, die Albedo-Karte A, die Karte für diffuses Licht Ld und die Karte für spiegelndes Licht Ls als Eingabe verwendet werden. In mindestens einer Ausführungsform können Verluste für diese Normalen-, Albedo- und Spiegelkarten sowie für diese endgültige Ausgabe eingesetzt werden. In mindestens einer Ausführungsform kann, um zu vermeiden, dass diese Restkarte δR zu groß wird und die grobe Rendering-Ausgabe R0 vollständig dominiert, eine L1-Regularisierung zu δR hinzugefügt werden, wie sie beispielsweise gegeben sein kann durch: L δ R = δ R 1
    Figure DE102023116064A1_0007
  • Wenn in mindestens einer Ausführungsform ein synthetischer Datensatz Normalenkarten sowohl mit Linsen als auch ohne Linsen für Gläser enthält, kann ein Netzwerk darauf trainiert werden, beides vorherzusagen. In mindestens einer Ausführungsform kann ein Geometrienetzwerk zwei Normalen N, NI erzeugen, wobei N eine Normalenkarte ohne Linsen und NI eine Normalenkarte mit Linsen ist. In mindestens einer Ausführungsform kann beim Erzeugen von Karten für spiegelndes Licht zusätzlich zu den vier ursprünglichen spiegelnden Exponenten ( L S 1 , L S 16 , L S 32 , L S 64 )
    Figure DE102023116064A1_0008
    unter Verwendung von N ein zusätzlicher hochspiegelnder Exponent L S , l 1024
    Figure DE102023116064A1_0009
    unter Verwendung von NI zum Berücksichtigen von Vorkommnissen von Blendung erzeugt werden. In mindestens einer Ausführungsform kann dieses Spiegelnetzwerk dann eine zusätzliche Gewichtung vorhersagen W S , l 1024 .
    Figure DE102023116064A1_0010
    In mindestens einer Ausführungsform wird eine gewichtete Karte für spiegelndes Licht dann zu: L S = i W S i L S i + W S , l 1024 L S , l 1024
    Figure DE102023116064A1_0011
    wobei i = 1, 16, 32, 64. In mindestens einer Ausführungsform ist ein Blendsteuerungsmerkmal für Brillen vorgesehen.
  • In mindestens einer Ausführungsform kann es zwar sein, dass ein unter Verwendung eines synthetischen Datensatzes trainiertes Modell vernünftige Neubeleuchtungsergebnisse erzeugen kann, der Ausgabe kann es jedoch an Fotorealismus mangeln, wenn sie an realen Bildern getestet wird. In mindestens einer Ausführungsform ist dies zumindest teilweise auf eine Domänenlücke zwischen gerenderten und realen Fotos zurückzuführen. Um diese Lücke zu schließen, kann in mindestens einer Ausführungsform ein Synthetisch-zu-real-Mechanismus für die Neubeleuchtung des Bildes verwendet werden. In mindestens einer Ausführungsform kann eine Domänenlücke zwischen synthetischen und realen Daten zumindest teilweise aus einer Diversität der Motiv-Albedo resultieren, die das endgültige Erscheinungsbild in einem neu beleuchteten Bild stark beeinflussen kann. In mindestens einer Ausführungsform können Personen auf Bildern in der Realität auch sehr unterschiedliche Frisuren, Gesichtsfarben, geringfügige Gesichtsunregelmäßigkeiten, Kleidungen und Accessoires aufweisen, die in synthetischen Daten möglicherweise fehlen. In mindestens einer Ausführungsform kann dies dazu führen, dass ein Albedo-Netzwerk 106, das nur mit synthetischen Daten trainiert wird, bei der Modellierung von realen Erscheinungsbildern fehlschlägt.
  • In mindestens einer Ausführungsform kann zur Handhabung von Domänenlücken zwischen Albedo-Karten ein Albedo-Restnetzwerk 210 verwendet werden, wie in 2 veranschaulicht und mit f A bezeichnet, um eine ursprünglich geschätzte Albedo zu verfeinern. In mindestens einer Ausführungsform nimmt dieses Netzwerk f A ein Eingabebild I, eine Normalenkarte N und eine geschätzte Albedo A als Eingabe und gibt einen Albedo-Rest δA aus. In mindestens einer Ausführungsform ersetzt dann eine verfeinerte Albedo A = A + δA die ursprüngliche Albedo A als Eingabe für einen Rest dieses Modells, um eine neue neu beleuchtete Ausgabe R vorherzusagen. In mindestens einer Ausführungsform kann eine verfeinerte Albedo nach der Anpassung Eingabedetails (z.B. Stofffarbe) wiederherstellen, die nicht in synthetischen Daten dargestellt sind. In mindestens einer Ausführungsform wird bei der Feinabstimmung auf reale Daten nur das Albedo-Restnetzwerk 210 trainiert, während ein Rest dieses Modells unveränderlich bleibt. In mindestens einer Ausführungsform kann eine für dieses Training verwendete Verlustfunktion einen Ähnlichkeitsverlust, einen Identitätsverlust, einen GAN-Verlust und zwei Konsistenzverluste beinhalten.
  • In mindestens einer Ausführungsform können Konsistenzverluste zwischen dem neu beleuchteten Bild R und dem eingegebenen Vordergrundbild I angewendet werden, um einen Neubeleuchtungseffekt vor und nach einer Synthetisch-an-real-Anpassung konsistent zu halten. In mindestens einer Ausführungsform kann ein OLAT-Beleuchtungskonsistenzverlust verwendet werden, was voraussetzt, dass Beleuchtungen und neu beleuchtete Ausgaben eine Verteilungseigenschaft aufweisen, sodass die Summierung zweier Umgebungskarten und die Neubeleuchtung mit dieser Summe zum gleichen Ergebnis führt wie die Summierung dieser beiden neu beleuchteten Ausgaben. In mindestens einer Ausführungsform kann ein Satz von OLAT-Umgebungskarten erzeugt werden, in denen jeweils nur ein Pixel beleuchtet wird, um ein Lichtbühnenszenario zu simulieren. In mindestens einer Ausführungsform kann ein Ansatz während jeder Trainingsiteration darin bestehen, zufällig zwei davon abzutasten , um zwei verschiedene Lichtquellenstandorte zu simulieren und eine kombinierte Umgebungskarte zu erlangen, die zwei gleichzeitig eingeschaltete Lichtquellen simuliert. In mindestens einer Ausführungsform sind fi Ausgabebilder, die meine Karten OLAT1, OLAT2 und OLAT1+1 zu R 01, R 02 bzw. R 01+2 neu beleuchtet haben. In mindestens einer Ausführungsform kann dieser Verlust gegeben sein durch: L R ¯ C o l a t = ( R ¯ o 1 + R ¯ o 2 ) R ¯ 01 + 02 1
    Figure DE102023116064A1_0012
  • In mindestens einer Ausführungsform kann auch ein relativer Beleuchtungskonsistenzverlust verwendet werden. In mindestens einer Ausführungsform setzt dieser Verlust voraus, dass diese Anpassung nur den Fotorealismus ändern, aber die Lichttransportphysik bewahren sollte, die dieses Netzwerk von einem physikalisch basierten Renderer gelernt hat. Da möglicherweise keine Ground-Truth-Beleuchtungsdaten vorliegen, kann dies in mindestens einer Ausführungsform durch ein Paar von Neubeleuchtungsausgaben erzwungen werden. In mindestens einer Ausführungsform seien E1 und E2 zwei Umgebungskarten. In mindestens einer Ausführungsform können Neubeleuchtungsergebnisse unter Verwendung von E1 und E2 vor der Anpassung als R1 und R2 und nach der Anpassung als R 1, R 2 bezeichnet werden. In mindestens einer Ausführungsform kann dann ein L1-Verlust zwischen diesen beiden Differenzen angewendet werden, wie er gegeben sein kann durch: L R ¯ C r e l a = ( R 1 R 2 ) ( R ¯ 1 R ¯ 2 ) 1
    Figure DE102023116064A1_0013
    In mindestens einer Ausführungsform hat ein Netzwerk dann einen stärkeren Anreiz, die erzeugte Beleuchtung vor der Synthetisch-an-real-Anpassung beizubehalten, da Abweichungen von den ursprünglichen Ausgaben erschwert werden. In mindestens einer Ausführungsform erzwingt dieser in einem relativen Beleuchtungsraum berechnete Verlust sanft die Beleuchtungskonsistenz und ermöglicht gleichzeitig eine Änderung des Fotorealismus der Ausgabe.
  • Um zu verhindern, dass die verfeinerte Albedo zu stark von der ursprünglichen Albedo abweicht, können in mindestens einer Ausführungsform VGG-Merkmale aus diesem Original extrahiert und die Albedo-Karten verfeinert werden, wodurch ein L1-Verlust dazwischen gesetzt wird. Um sicherzustellen, dass sich die Identität nach der Neubeleuchtung nicht ändert, kann in mindestens einer Ausführungsform ein Gesichtserkennungsnetzwerk, das Merkmale auf hoher Ebene extrahiert und einen L1-Abstand zwischen diesen beiden Merkmalen berechnet, auf die Eingabe I und neu beleuchtete Bilder R angewendet werden. Um diese neu beleuchteten Bilder realistisch erscheinen zu lassen, kann in mindestens einer Ausführungsform auch ein GAN-Verlust auf diese neu beleuchteten Bilder R angewendet werden, wobei sich der Gesamtverlust dann ergibt durch: L a d a p = λ C o l a t L R ¯ C o l a t + λ C r e l a L R ¯ C r e l a + λ s i m L A ¯ s i m + λ I d L R ¯ I d + λ G L R ¯ G
    Figure DE102023116064A1_0014
    wobei λ Gewichtungen sind und in diesem Framework jeweils auf 10, 10, 10, 1, 1 gesetzt werden.
  • In mindestens einer Ausführungsform kann Video-Neubeleuchtung auf eine Weise durchgeführt werden, die Flimmern und andere Probleme vermeidet, die andernfalls bei bildweisen Ansätzen auftreten könnten. In mindestens einer Ausführungsform sind flimmernde Artefakte in neu beleuchteten Videos häufig darauf zurückzuführen, dass sich Zwischenausgaben in einem gegebenen Framework zu häufig zwischen Einzelbildern ändern. In mindestens einer Ausführungsform können solche Zwischenausgaben geschätzte Normalen- und Albedo-Karten beinhalten. Um dieses Problem zu lösen, können in mindestens einer Ausführungsform zwei zeitliche Restnetzwerke f und f trainiert und verwendet werden, um diese Normalen- bzw. Albedo-Karten zeitlich konsistent zu machen. In mindestens einer Ausführungsform können diese zeitlichen Netzwerke für die Neubeleuchtung von Videoporträts verwendet und trainiert werden, während andere Teile dieses Frameworks unverändert bleiben.
  • In mindestens einer Ausführungsform nehmen diese zeitlichen Restnetzwerke 212, 214 Ausgaben von einem früheren Einzelbild und Vorhersagen von einem Nur-Bild-Neubeleuchtungsteil dieses Frameworks bei einem aktuellen Einzelbild als Eingaben. In mindestens einer Ausführungsform nimmt f eine ursprüngliche Normalenvorhersage Nt zum Zeitpunkt t und eine verfeinerte Normale aus einem vorherigen Einzelbild Ñt-1 zum Zeitpunkt t - 1 als Eingabe für die Vorhersage eines zeitlichen Rests δÑt. In mindestens einer Ausführungsform wird dieser Rest zur ursprünglichen Normalenvorhersage Nt hinzugefügt, um eine verfeinerte Normale Ñt zu erlangen, wie sie gegeben sein kann durch: δ N ˜ t = f N ˜ ( N ˜ t 1 , N t )
    Figure DE102023116064A1_0015
    N ˜ t = N t + δ N ˜ t
    Figure DE102023116064A1_0016
  • In mindestens einer Ausführungsform nimmt f die zeitlich verfeinerte Normale Ñt-1, Ñt, die zeitlich verfeinerte Albedo Ãt-1 und die Albedo Ãt (nach Synthetisch-an-real-Anpassung) als Eingabe und sagt ein zeitlichen Albedo-Rest δÃt voraus. In mindestens einer Ausführungsform wird dieser Rest zu einer Synthetisch-zu-real-Albedo A t hinzugefügt, um eine zeitlich verfeinerte Albedo Ãt zu erlangen.
  • In mindestens einer Ausführungsform können diese Karten nach Erlangen verfeinerter Normalen- und Albedo-Karten in einen Rest dieses Frameworks eingespeist werden, um eine endgültige neu beleuchtete Ausgabe R̃t zu erlangen. In mindestens einer Ausführungsform können zum Trainieren dieser beiden Netzwerke ein Ähnlichkeitsverlust und ein Identitätsverlust verwendet werden, wie zuvor erörtert, und um die zeitliche Konsistenz sicherzustellen, kann ein Warping-Verlust zwischen benachbarten Einzelbildern angewendet werden.
  • In mindestens einer Ausführungsform kann ein Wahrnehmungsverlust zwischen ursprünglichen und zeitlich verfeinerten Attributen hinzugefügt werden, um zu verhindern, dass diese verfeinerten Attribute zu stark von den ursprünglichen Attributen abweichen. Um sicherzustellen, dass sich die Identität nach der Verfeinerung nicht ändert, können in mindestens einer Ausführungsform Identitätsmerkmale aus der Eingabe It aus der Eingabe und der verfeinerten Ausgabe R̃t extrahiert werden, indem ein Gesichtserkennungsnetzwerk verwendet und ein L1-Verlust dazwischen gesetzt wird. In mindestens einer Ausführungsform kann der optische Fluss an benachbarten eingegebenen Einzelbildern It-1 und It berechnet werden. In mindestens einer Ausführungsform kann ein Fluss angewendet werden, um ein vorheriges neu beleuchtetes Einzelbild zu verzerren und seinen Unterschied zu einem aktuellen neu beleuchteten Einzelbild zu berechnen, wie es gegeben sein kann durch: L R ˜ W = W ( R ˜ t 1 ) R ˜ t 1
    Figure DE102023116064A1_0017
    wobei Weine Warping-Funktion ist, die auf einem geschätzten optischen Fluss basiert. In mindestens einer Ausführungsform kann ein endgültiger Verlust dann gegeben sein durch: L t e m = λ s i m ( L N ˜ s i m + L A ˜ s i m ) + λ I d L R ˜ I d + λ W L R ˜ W
    Figure DE102023116064A1_0018
  • In mindestens einer Ausführungsform ermöglicht ein solcher Ansatz die Verwendung eines synthetischen Datensatzes für Tasks wie die Neubeleuchtung von Einzelbildporträts, wobei dieser Datensatz über 500 Personen unterschiedlichen Alters und Geschlechts, verschiedener Rassen und mit zufällig zugewiesenen Frisuren, Kleidungsstücken und Accessoires enthalten kann und mit einem physikalisch basierten Renderer gerendert wird. In mindestens einer Ausführungsform können Einzelbild- und Videoporträt-Neubeleuchtungstasks ohne Lichtbühnendaten bewältigt werden, indem ein Basis-Neubeleuchtungsmodell auf diesem vielfältigen synthetischen Datensatz trainiert und später eine Synthetisch-an-real-Domänenanpassung unter Verwendung realer Freiland-Porträtbilder und -Videos angewendet wird. In mindestens einer Ausführungsform können selbstüberwachte Beleuchtungskonsistenzverluste verwendet werden, um die Beleuchtungskonsistenz während des Anpassungslernens sicherzustellen. Wie bereits erörtert, kann dies in mindestens einer Ausführungsform ermöglichen, dass ein Eingabeporträtbild 302, wie im Bildsatz 300 von 3A veranschaulicht, unterschiedliche erzeugte Ausgabebilder 304, 306, 308 aufweist, die eine Beleuchtung beinhalten, die zu einem neuen, in dieses Bild eingefügten Hintergrund passt, der beispielsweise virtuellen Hintergründen entsprechen kann, die während einer Videokonferenz dargestellt werden. In mindestens einer Ausführungsform kann bei einem Eingabeporträtbild und einer Zielumgebungskarte mit hohem Dynamikbereich (gerendert als diffuse Kugel und als spiegelnde Kugel im Nebenbild) ein Neubeleuchtungsverfahren neu beleuchtete Ergebnisse unter unterschiedlichen Beleuchtungen mit hohem Fotorealismus erzeugen. In mindestens einer Ausführungsform wird dies durch das Erlernen der Neubeleuchtungsphysik aus einem synthetischen Datensatz erreicht, der unter Verwendung einer virtuellen Lichtbühne gerendert wurde, sowie durch die Anpassung dieses erlernten Modells mit einem realen Datensatz, um eine Domänenlücke zu schließen.
  • In mindestens einer Ausführungsform können solche Bilder unter Verwendung eines Systems wie jenen erzeugt werden, die in Bezug auf 1 und/oder 2 beschrieben werden. In mindestens einer Ausführungsform kann eine Reihe von Bildern oder Lichtkarten erzeugt werden, wie in Satz 350 von 3B veranschaulicht, in dem es zwei Bilder 352, 354 mit unterschiedlicher Beleuchtung geben kann, wobei eines eingegeben wird und eines basierend auf der Erzeugung von Komponenten wie einer Maske 356, einem Albedo-Bild 358, einer Normalen mit Linsen 360 und einer Normalen ohne Linsen 362 ausgegeben wird, wobei diese Geometrie- und Albedo-Informationen durch einen Renderer zusammen mit eingegebenen Beleuchtungsdaten verwendet werden können, um ein Bild zu erzeugen, das diese Person beinhaltet, die gemäß diesen eingegebenen Beleuchtungsdaten beleuchtet wird, die einer Umgebungslichtkarte entsprechen können.
  • In mindestens einer Ausführungsform kann ein Prozess 400 zum Trainieren eines Netzwerks zum Erzeugen eines Bildes mit einem oder mehreren unterschiedlichen Beleuchtungsaspekten durchgeführt werden, wie in 4. veranschaulicht. In mindestens einer Ausführungsform können synthetische Trainingsdaten erlangt werden 402, die eine Vielzahl von Arten virtueller Objekte unter unterschiedlichen Lichtbedingungen, beispielsweise in Paaren unterschiedlicher Lichtbedingungen, beinhalten. In mindestens einer Ausführungsform kann ein Abschnitt dieser synthetischen Trainingsdaten als Eingabe für das Training eines Bilderzeugungsnetzwerks mit Neubeleuchtungsfähigkeit bereitgestellt werden 404, um Geometrie- und Reflexionsdaten (z.B. Albedo) für diese virtuellen Objekte vorherzusagen. In mindestens einer Ausführungsform können Verlustwerte durch Vergleichen dieser vorhergesagten Geometrie- und Reflexionswerte mit entsprechenden Ground-Truth-Daten aus diesem synthetischen Datensatz berechnet werden 406. In mindestens einer Ausführungsform können ein oder mehrere Netzwerkparameter angepasst werden 408, um zu versuchen, diese Verlustwerte zu minimieren. In mindestens einer Ausführungsform kann bestimmt werden 410, ob eine Endbedingung erreicht wurde, ob z.B. bestimmt wurde, dass dieses Netzwerk konvergiert, eine maximale Anzahl von Trainingsiterationen erreicht wurde oder alle Trainingsdaten für das Training verwendet wurden. In mindestens einer Ausführungsform kann dieser Prozess mit mehr Trainingsdaten fortgesetzt werden, wenn ein solches Kriterium nicht erfüllt wird.
  • In mindestens einer Ausführungsform kann dann, wenn dieser Abschnitt dieses Trainingsprozesses endet, eine nächste Trainingsphase eingeleitet werden, in der reale Trainingsdaten erlangt werden 412, die Reflektivitätsdaten für eine Vielzahl von Arten physischer Objekten beinhalten, wie sie in von der Kamera aufgenommenen Bildern dargestellt werden können. In mindestens einer Ausführungsform kann ein Abschnitt dieser realen Trainingsdaten als Eingabe für das Training nur eines Reflektivitäts-/Albedo-Abschnitts dieses Bilderzeugungsnetzwerks bereitgestellt werden 414, während andere Abschnitte dieses Netzwerks (z.B. Netzwerkparameter, die nicht mit Reflektivität in Beziehung stehen) unverändert belassen werden. In mindestens einer Ausführungsform können Verlustwerte durch Vergleichen dieser vorhergesagten und verfeinerten Reflektivitätswerte mit entsprechenden Ground-Truth-Daten aus diesem realen Datensatz berechnet werden 416. In mindestens einer Ausführungsform können ein oder mehrere Netzwerkparameter, die mit Reflektivität in Beziehung stehen, angepasst werden 418, um zu versuchen, diese Verlustwert zu minimieren. In mindestens einer Ausführungsform kann bestimmt werden 420, ob eine Endbedingung erreicht wurde, ob z.B. bestimmt wurde, dass dieses Netzwerk konvergiert, eine maximale Anzahl von Trainingsiterationen erreicht wurde oder alle Trainingsdaten für das Training verwendet wurden. In mindestens einer Ausführungsform kann dieser Prozess mit mehr Trainingsdaten fortgesetzt werden, wenn ein solches Kriterium nicht erfüllt wird. In mindestens einer Ausführungsform kann dieses trainierte Netzwerk nach Abschluss beider Trainingsphasen zur Bilderzeugung und Neubeleuchtung bereitgestellt werden 422.
  • In mindestens einer Ausführungsform kann ein Prozess 500 zum Veranlassen des Anwendens eines Lichteffekts durchgeführt werden, wie in 5 veranschaulicht. In mindestens einer Ausführungsform können ein oder mehrere synthetisch erzeugte Bilder eines oder mehrerer Objekte erlangt werden 502. In mindestens einer Ausführungsform können ein oder mehrere neuronale Netzwerke verwendet werden 504, um zu bewirken, dass ein Lichteffekt auf dieses eine oder mehrere Objekte in einem oder mehreren Bildern zumindest teilweise basierend auf diesen synthetisch erzeugten Bildern angewendet wird. In mindestens einer Ausführungsform kann dadurch eine erneute Beleuchtung dieser Objekte erreicht werden, etwa um die Beleuchtungsqualität zu verbessern, Schatten zu entfernen, die Beleuchtung eines neuen Hintergrunds anzupassen oder auf andere Weise dafür zu sorgen, dass die Beleuchtung dieser Objekte der Zielbeleuchtung entspricht. In mindestens einer Ausführungsform kann sich dies auf den Standort einer oder mehrerer virtueller Lichtquellen auswirken, die zum Beleuchten dieser Objekte verwendet werden, sowie auf die Anzahl, Intensität oder andere Variation einer oder mehrerer dieser virtuellen Lichtquellen.
  • In mindestens einer Ausführungsform können Aspekte des Netzwerktrainings und der Inferenzierung sowie Anwendungen oder Vorgänge, die solche Netzwerke nutzen, auf einer einzigen Vorrichtung oder einem einzigen System durchgeführt werden, wie in Bezug auf ein System von 2 oder 3 erörtert, oder sie können an verschiedenen Standorten auf verschiedene Vorrichtungen verteilt sein. In mindestens einer Ausführungsform kann eine Client-Vorrichtung 602 eine oder mehrere Tasks für eine Sitzung gemäß einer Inhaltsanwendung 604, die auf der Client-Vorrichtung 602 ausgeführt wird, und Daten durchführen, die lokal auf dieser Client-Vorrichtung gespeichert sind, wie in 6 veranschaulicht. In mindestens einer Ausführungsform kann eine Inhaltsanwendung 624, die auf dem Inhaltsserver 620 ausgeführt wird, eine Sitzung initiieren, die mindestens der Client-Vorrichtung 602 zugeordnet ist, indem sie beispielsweise einen Sitzungsmanager und Benutzerdaten nutzt, die in einer Benutzerdatenbank 634 gespeichert sind, und sie kann veranlassen, dass Inhalt 632 für eine Inhaltsanwendung 624 unter Verwendung eines Inhaltsmanagers 626 verarbeitet oder erzeugt wird, der ein oder mehrere neuronale Netzwerke verwenden kann, die unter Verwendung eines Trainingsmoduls 628 oder -prozesses trainiert wurden. In mindestens einer Ausführungsform können diese Netzwerke Tasks wie etwa die Erzeugung eines oder mehrerer Bilder eines oder mehrerer Objekte mit gezielter Beleuchtung durchführen. In mindestens einer Ausführungsform kann ein Beleuchtungsmodul 630 ein oder mehrere neuronale Netzwerke verwenden, um Informationen über ein Objekt in einem Eingabebild zu inferenzieren, wobei diese Informationen Geometrie- und Albedo-Informationen beinhalten können. In mindestens einer Ausführungsform kann ein Renderer 632 diese Informationen zusammen mit gezielten Lichtinformationen (z.B. einer Umgebungslichtkarte) verwenden, um ein Bild dieses Objekts unter Zielbeleuchtungsbedingungen zu erzeugen. In mindestens einer Ausführungsform können Ergebnisse jeder beliebiger dieser Komponenten (z.B. intrinsische oder gerenderte Bilddaten) unter Verwendung eines geeigneten Übertragungsmanagers 622 an die Client-Vorrichtung 602 übertragen werden, um sie per Download, Streaming oder einen anderen solchen Übertragungskanal zu senden. In mindestens einer Ausführungsform kann die Client-Vorrichtung 602, die diesen Inhalt empfängt, diesen Inhalt einer entsprechenden Anwendung 604 bereitstellen, die auch oder alternativ einen Inhaltsmanager 610 zum Bereitstellen mindestens einiger dieser Inhalte zur Darstellung über die Client-Vorrichtung 602, wie etwa von Bild- oder Videoinhalt über eine Anzeige 606 und Audioinhalt über mindestens eine Audiowiedergabevorrichtung 608, wie etwa einen oder mehrere Lautsprecher oder Lautsprecherarrays, beinhalten kann. In mindestens einer Ausführungsform kann das Beleuchtungsmodul 612 oder das Rendering-Modul 614 auf der Client-Vorrichtung 602 auch zur Unterstützung oder Durchführung solcher Tasks verwendet werden. In mindestens einer Ausführungsform kann der Ort, an dem diese Funktionalität ganz oder teilweise ausgeführt wird, zumindest teilweise davon abhängen, wo Trainingstasks stattfinden sollen, wo Inferenztasks stattfinden sollen und wo sensible Daten gespeichert oder in ihrer Verteilung eingeschränkt sein können. In mindestens einer Ausführungsform können Daten oder Inhalte, die über das Netzwerk 640 übertragen werden, vor der Übertragung komprimiert werden, wobei eine empfangende Entität oder ein empfangendes System dann versucht, diese Daten oder Inhalte zu dekomprimieren. In mindestens einer Ausführungsform können mindestens einige dieser Inhalte bereits auf der Client-Vorrichtung 602 gespeichert, gerendert oder für diese zugänglich sein, sodass zumindest für diesen Abschnitt von Inhalt keine Übertragung über das Netzwerk 640 notwendig ist, wie etwa wenn dieser Inhalt vielleicht zuvor heruntergeladen oder lokal auf einer Festplatte oder einer optischen Platte gespeichert wurde. In mindestens einer Ausführungsform kann ein Übertragungsmechanismus, wie etwa Daten-Streaming, verwendet werden, um diesen Inhalt vom Server 620 oder der Inhaltsdatenbank 634 an die Client-Vorrichtung 602 zu übertragen. In mindestens einer Ausführungsform kann mindestens ein Abschnitt dieses Inhalts von einer anderen Quelle erlangt oder gestreamt werden, wie etwa von einem Drittanbieter-Dienst 660, der auch eine Anwendung 662 zum Durchführen solcher Tasks beinhalten kann. In mindestens einer Ausführungsform können Abschnitte dieser Funktionalität unter Verwendung mehrerer Rechenvorrichtungen oder mehrerer Prozessoren in einer oder mehreren Rechenvorrichtungen, beispielsweise einer Kombination aus CPUs und GPUs, durchgeführt werden. In mindestens einer Ausführungsform können Standorte, an denen mindestens ein Teil dieser Funktionalität durchgeführt wird, konfigurierbar sein oder unter anderem von Faktoren wie der Art der Client-Vorrichtung 602 oder der Verfügbarkeit einer Netzwerkverbindung mit geeigneter Bandbreite abhängen. In mindestens einer Ausführungsform können ein oder mehrere neuronale Netzwerke zum Durchführen oder Unterstützen dieser Funktionalität verwendet werden, wobei diese neuronalen Netzwerke (oder mindestens Netzwerkparameter für diese Netzwerke) vom Inhaltsserver 620 oder vom Drittanbieter-System 660 bereitgestellt werden können. In mindestens einer Ausführungsform können erzeugte Inhalte oder Daten auch anderen Client-Vorrichtungen 650, die ähnliche Berechnungen oder Trainingstasks durchführen können, bereitgestellt oder verfügbar gemacht werden, wie etwa zum Download oder Streaming von einer Datenquelle, die eine Kopie dieses Inhalts speichert.
  • INFERENZ- UND TRAININGSLOGIK
  • 7A veranschaulicht Inferenz- und/oder Trainingslogik 715, die verwendet wird, um Inferenzierungs- und/oder Trainingsoperationen durchzuführen, die mit einer oder mehreren Ausführungsformen assoziiert sind. Details bezüglich der Inferenz- und/oder Trainingslogik 715 werden nachstehend in Verbindung mit 7A und/oder 7B bereitgestellt.
  • In mindestens einer Ausführungsform kann die Inferenz- und/oder Trainingslogik 715 ohne Einschränkung Code- und/oder Datenspeicher 701 beinhalten, um Vorwärts- und/oder Ausgabegewichtungs- und/oder Eingabe-/Ausgabedaten und/oder andere Parameter zu speichern, um Neuronen oder Schichten eines neuronalen Netzwerks zu konfigurieren, das in Aspekten einer oder mehrerer Ausführungsformen trainiert und/oder zum Inferenzieren verwendet wird. In mindestens einer Ausführungsform kann die Trainingslogik 715 den Code- und/oder Datenspeicher 701 beinhalten oder damit gekoppelt sein, um Graphencode oder andere Software zu speichern, um die Zeitsteuerung und/oder Reihenfolge zu steuern, mit der Gewichtungs- und/oder andere Parameterinformationen zu laden sind, um die Logik, einschließlich Ganzzahl- und/oder Gleitkommaeinheiten (gemeinsam arithmetisch-logische Einheiten (arithmetic logic units - ALUs)), zu konfigurieren. In mindestens einer Ausführungsform lädt Code, wie etwa Graphencode, Gewichtungs- oder andere Parameterinformationen in Prozessor-ALUs auf Grundlage einer Architektur eines neuronalen Netzwerks, dem derartiger Code entspricht. In mindestens einer Ausführungsform speichert der Code- und/oder Datenspeicher 701 die Gewichtungsparameter und/oder Eingabe-/Ausgabedaten jeder Schicht eines neuronalen Netzwerks, das in Verbindung mit einer oder mehreren Ausführungsformen während der Vorwärtsausbreitung von Eingabe-/Ausgabedaten und/oder Gewichtungsparametern während des Trainings und/oder der Inferenzierung unter Verwendung der Aspekte einer oder mehrerer Ausführungsformen trainiert oder verwendet wird. In mindestens einer Ausführungsform kann ein beliebiger Abschnitt des Code- und/oder Datenspeichers 701 in einem anderen chipinternen oder chipexternen Datenspeicher, einschließlich des L1-, L2- oder L3-Caches oder Systemspeichers eines Prozessors, beinhaltet sein.
  • In mindestens einer Ausführungsform kann ein beliebiger Abschnitt des Code- und/oder Datenspeichers 701 zu einem oder mehreren Prozessoren oder anderen Hardware-Logikvorrichtungen oder -Schaltungen intern oder extern sein. In mindestens einer Ausführungsform kann der Code und/oder Code- und/oder Datenspeicher 701 Cache-Speicher, dynamischer zufällig adressierbarer Speicher (dynamic randomly addressable memory - „DRAM“), statischer zufällig adressierbarer Speicher (static randomly addressable memory - „SRAM“), nichtflüchtiger Speicher (z.B. Flash-Speicher) oder anderer Speicher sein. In mindestens einer Ausführungsform kann eine Wahl, ob der Code und/oder Code- und/oder Datenspeicher 701 zum Beispiel zu einem Prozessor intern oder extern ist oder DRAM, SRAM, Flash oder einen anderen Speichertyp umfasst, von dem verfügbaren chipinternen oder chipexternen Speicher, den Latenzanforderungen der Trainings- und/oder Inferenzfunktionen, die durchgeführt werden, der Batch-Größe der Daten, die beim Inferenzieren und/oder Trainieren eines neuronalen Netzwerks verwendet werden, oder einer Kombination dieser Faktoren abhängen.
  • In mindestens einer Ausführungsform kann die Inferenz- und/oder Trainingslogik 715 ohne Einschränkung einen Code- und/oder Datenspeicher 705 beinhalten, um eine Rückwärts- und/oder Ausgabegewichtung und/oder Eingabe-/Ausgabedaten zu speichern, die Neuronen oder Schichten eines neuronalen Netzwerks entsprechen, das zur Inferenzierung bei den Aspekten einer oder mehrerer Ausführungsformen trainiert und/oder verwendet wird. In mindestens einer Ausführungsform speichert der Code- und/oder Datenspeicher 705 Gewichtungsparameter und/oder Eingabe-/Ausgabedaten jeder Schicht eines neuronalen Netzwerks, die in Verbindung mit einer oder mehreren Ausführungsformen trainiert oder verwendet wird, während der Rückwärtspropagierung von Eingabe-/Ausgabedaten und/oder Gewichtungsparametern während des Trainierens und/oder Inferenzierens unter Verwendung von Aspekten einer oder mehrerer Ausführungsformen. In mindestens einer Ausführungsform kann die Trainingslogik 715 den Code- und/oder Datenspeicher 705 beinhalten oder damit gekoppelt sein, um Graphencode oder andere Software zu speichern, um die Zeitsteuerung und/oder Reihenfolge zu steuern, mit der Gewichtungs- und/oder andere Parameterinformationen zu laden sind, um die Logik, einschließlich Ganzzahl- und/oder Gleitkommaeinheiten (gemeinsam arithmetisch-logische Einheiten (arithmetic logic units - ALUs)), zu konfigurieren.
  • In mindestens einer Ausführungsform bewirkt Code, wie etwa Graphencode, das Laden von Gewichtungs- oder anderen Parameterinformationen in Prozessor-ALUs auf Grundlage einer Architektur eines neuronalen Netzwerks, dem dieser Code entspricht. In mindestens einer Ausführungsform kann ein beliebiger Abschnitt des Code- und/oder Datenspeichers 705 in einem anderen chipinternen oder chipexternen Datenspeicher, einschließlich des L1-, L2- oder L3-Caches oder Systemspeichers eines Prozessors, beinhaltet sein. In mindestens einer Ausführungsform kann ein beliebiger Abschnitt des Code- und/oder Datenspeichers 705 zu einem oder mehreren Prozessoren oder anderen Hardware-Logikvorrichtungen oder -Schaltungen intern oder extern sein. In mindestens einer Ausführungsform kann der Code- und/oder Datenspeicher 705 Cache-Speicher, DRAM, SRAM, nichtflüchtiger Speicher (z.B. Flash-Speicher) oder anderer Speicher sein. In mindestens einer Ausführungsform kann eine Wahl, ob der Code- und/oder Datenspeicher 705 zum Beispiel zu einem Prozessor intern oder extern ist oder DRAM, SRAM, Flash-Speicher oder einen anderen Speichertyp umfasst, von dem verfügbaren chipinternen oder chipexternen Speicher, den Latenzanforderungen der Trainings- und/oder Inferenzfunktionen, die durchgeführt werden, der Batch-Größe der Daten, die beim Inferenzieren und/oder Trainieren eines neuronalen Netzwerks verwendet werden, oder einer Kombination dieser Faktoren abhängen.
  • In mindestens einer Ausführungsform können der Code- und/oder Datenspeicher 701 und der Code- und/oder Datenspeicher 705 separate Speicherstrukturen sein. In mindestens einer Ausführungsform können der Code- und/oder Datenspeicher 701 und der Code- und/oder Datenspeicher 705 eine kombinierte Speicherstruktur sein. In mindestens einer Ausführungsform können der Code- und/oder Datenspeicher 701 und der Code- und/oder Datenspeicher 705 teilweise kombiniert und teilweise separat sein. In mindestens einer Ausführungsform kann ein beliebiger Teil des Code- und/oder Datenspeichers 701 und des Code- und/oder Datenspeichers 705 in einem anderen chipinternen oder chipexternen Datenspeicher beinhaltet sein, was einen L1-, L2- oder L3-Cache oder Systemspeicher eines Prozessors beinhaltet.
  • In mindestens einer Ausführungsform kann die Inferenz- und/oder Trainingslogik 715 ohne Einschränkung eine oder mehrere arithmetisch-logische Einheit(en) („ALU(s)“) 710 beinhalten, einschließlich Ganzzahl- und/oder Gleitkommaeinheiten, um logische und/oder mathematische Operationen durchzuführen, die mindestens zum Teil auf Trainings- und/oder Inferenzcode (z.B. Graphencode) basieren oder dadurch angegeben werden, wobei ein Ergebnis davon Aktivierungen (z.B. Ausgabewerte von Schichten oder Neuronen innerhalb eines neuronalen Netzwerks) produzieren kann, die in einem Aktivierungsspeicher 720 gespeichert sind und die Funktionen von Eingabe/Ausgabe- und/oder Gewichtungsparameterdaten sind, die in dem Code- und/oder Datenspeicher 701 und/oder dem Code- und/oder Datenspeicher 705 gespeichert sind. In mindestens einer Ausführungsform werden in dem Aktivierungsspeicher 720 gespeicherte Aktivierungen gemäß linearer algebraischer und/oder matrixbasierter Mathematik generiert, die durch die ALU(s) 710 als Reaktion auf das Durchführen von Anweisungen oder anderem Code durchgeführt wird, wobei in dem Code- und/oder Datenspeicher 705 und/oder dem Datenspeicher 701 gespeicherte Gewichtungswerte als Operanden zusammen mit anderen Werten, wie etwa Verzerrungswerten, Gradienteninformationen, Momentwerten oder anderen Parametern oder Hyperparametern, verwendet werden, von denen beliebige oder alle in dem Code- und/oder Datenspeicher 705 oder dem Code- und/oder Datenspeicher 701 oder einem anderen chipinternen oder -externen Speicher gespeichert sein können.
  • In mindestens einer Ausführungsform ist/sind die ALU(s) 710 in einem oder mehreren Prozessoren oder anderen Hardware-Logikvorrichtungen oder Schaltungen beinhaltet, wohingegen bei einer anderen Ausführungsform die ALU(s) 710 für einen Prozessor oder eine andere Hardware-Logikvorrichtung oder Schaltung, die diese verwendet (z.B. ein Coprozessor), extern sein kann/können. In mindestens einer Ausführungsform können die ALUs 710 innerhalb der Ausführungseinheiten eines Prozessors oder anderweitig innerhalb einer Bank von ALUs enthalten sein, worauf die Ausführungseinheiten eines Prozessors zugreifen können, entweder innerhalb des gleichen Prozessors oder verteilt auf unterschiedliche Prozessoren unterschiedlichen Typs (z.B. zentrale Verarbeitungseinheiten, Grafikverarbeitungseinheiten, Festfunktionseinheiten usw.). In mindestens einer Ausführungsform können sich der Code- und/oder Datenspeicher 701, der Code- und/oder Datenspeicher 705 und der Aktivierungsspeicher 720 einen Prozessor oder eine andere Hardware-Logikvorrichtung oder -schaltung teilen, während sie sich in einer anderen Ausführungsform in unterschiedlichen Prozessoren oder anderen Hardware-Logikvorrichtungen oder -Schaltungen oder in einer Kombination aus gleichen und unterschiedlichen Prozessoren oder anderen Hardware-Logikvorrichtungen oder -Schaltungen befinden können. In mindestens einer Ausführungsform kann ein beliebiger Abschnitt des Aktivierungsspeichers 720 in einem anderen chipinternen oder chipexternen Datenspeicher, einschließlich des L1-, L2- oder L3-Caches oder Systemspeichers eines Prozessors, beinhaltet sein. Darüber hinaus kann Inferenzierungs- und/oder Trainingscode mit anderem Code gespeichert werden, auf den ein Prozessor oder eine andere Hardwarelogik oder - schaltung zugreifen kann, und unter Verwendung der Abruf-, Decodier-, Planungs-, Ausführungs-, Stilllegungs- und/oder anderen logischen Schaltungen eines Prozessors abgerufen und/oder verarbeitet werden.
  • In mindestens einer Ausführungsform kann der Aktivierungsspeicher 720 Cache-Speicher, DRAM, SRAM, nichtflüchtiger Speicher (z.B. Flash-Speicher) oder anderer Speicher sein. In mindestens einer Ausführungsform kann sich der Aktivierungsspeicher 720 ganz oder teilweise innerhalb oder außerhalb eines oder mehrerer Prozessoren oder anderer logischer Schaltungen befinden. In mindestens einer Ausführungsform kann eine Wahl, ob der Aktivierungsspeicher 720 zum Beispiel zu einem Prozessor intern oder extern ist oder DRAM, SRAM, Flash-Speicher oder einen anderen Speichertyp umfasst, von dem verfügbaren chipinternen oder chipexternen Speicher, den Latenzanforderungen der Trainings- und/oder Inferenzfunktionen, die durchgeführt werden, der Batch-Größe der Daten, die beim Inferenzieren und/oder Trainieren eines neuronalen Netzwerks verwendet werden, oder einer Kombination dieser Faktoren abhängen.
  • In mindestens einer Ausführungsform kann die in 7A veranschaulichte Inferenz- und/oder Trainingslogik 715 in Verbindung mit einer anwendungsspezifischen integrierten Schaltung (application-specific integrated circuit - „ASIC“) verwendet werden, wie etwa einer TensorFlow® Processing Unit von Google, einer Inferenzverarbeitungseinheit (inference processing unit - IPU) von Graphcore™ oder einem Prozessor vom Typ Nervana® (z.B. „Lake Crest“) der Intel Corp. In mindestens einer Ausführungsform kann die Inferenz- und/oder Trainingslogik 715, die in 7A veranschaulicht ist, in Verbindung mit Hardware einer Zentraleinheit („CPU“), Hardware einer Grafikverarbeitungseinheit („GPU“) oder anderer Hardware, wie etwa feldprogrammierbaren Gatearrays („FPGA“) verwendet werden.
  • 7B veranschaulicht Inferenz- und/oder Trainingslogik 715 gemäß mindestens einer Ausführungsform. In mindestens einer Ausführungsform kann die Inferenz- und/oder Trainingslogik 715 ohne Einschränkung Folgendes beinhalten: Hardwarelogik, bei der Berechnungsressourcen dediziert oder anderweitig ausschließlich in Verbindung mit Gewichtungswerten oder anderen Informationen verwendet werden, die einer oder mehreren Schichten von Neuronen innerhalb eines neuronalen Netzwerks entsprechen. In mindestens einer Ausführungsform kann die in 7B veranschaulichte Inferenz- und/oder Trainingslogik 715 in Verbindung mit einer anwendungsspezifischen integrierten Schaltung (ASIC) verwendet werden, wie etwa der TensorFlow® Processing Unit von Google, einer Inferenzverarbeitungseinheit (IPU) von Graphcore™ oder einem Prozessor vom Typ Nervana® (z.B. „Lake Crest“) der Intel Corp. In mindestens einer Ausführungsform kann die Inferenz- und/oder Trainingslogik 715, die in 7B veranschaulicht ist, in Verbindung mit Hardware einer Zentraleinheit (CPU), Hardware einer Grafikverarbeitungseinheit (GPU) oder anderer Hardware, wie etwa feldprogrammierbaren Gatearrays (FPGA) verwendet werden. In mindestens einer Ausführungsform beinhaltet die Inferenz- und/oder Trainingslogik 715 ohne Einschränkung den Code- und/oder Datenspeicher 701 und den Code- und/oder Datenspeicher 705, die zum Speichern von Code (z.B. Graphencode), Gewichtungswerten und/oder anderen Informationen, einschließlich Verzerrungswerten, Gradienteninformationen, Momentwerten und/oder anderer Parameter- oder Hyperparameterinformationen, verwendet werden können. In mindestens einer Ausführungsform, die in 7B veranschaulicht ist, ist jeder von dem Code- und/oder Datenspeicher 701 und dem Code- und/oder Datenspeicher 705 einer dedizierten Rechenressource, wie etwa der Rechenhardware 702 bzw. der Rechenhardware 706, zugeordnet. In mindestens einer Ausführungsform umfasst jede von der Rechenhardware 702 und der Rechenhardware 706 eine oder mehrere ALU, die mathematische Funktionen, wie etwa lineare algebraische Funktionen, nur an Informationen durchführen, die im Code- und/oder Datenspeicher 701 und Code- und/oder Datenspeicher 705 gespeichert sind, deren Ergebnis im Aktivierungsspeicher 720 gespeichert ist.
  • In mindestens einer Ausführungsform entspricht jeder von dem Code- und/oder Datenspeicher 701 und 705 und der entsprechenden Rechenhardware 702 und 706 jeweils verschiedenen Schichten eines neuronalen Netzwerks, sodass die sich ergebende Aktivierung von einem Speicher-/Rechenpaar 701/702 des Code- und/oder Datenspeichers 701 und der Rechenhardware 702 als Eingabe für ein nächstes Speicher-/Rechenpaar 705/706 des Code- und/oder Datenspeichers 705 und der Rechenhardware 706 bereitgestellt wird, um die konzeptuelle Organisation eines neuronalen Netzwerks zu spiegeln. In mindestens einer Ausführungsform kann jedes der Speicher-/Rechenpaare 701/702 und 705/706 mehr als einer Schicht eines neuronalen Netzwerks entsprechen. In mindestens einer Ausführungsform können zusätzliche Speicher-/Berechnungspaare (nicht gezeigt) nach oder parallel zu den Speicherberechnungspaaren 701/702 und 705/706 in der Inferenz- und/oder Trainingslogik 715 beinhaltet sein.
  • TRAINING UND EINSATZ VON NEURONALEN NETZWERKEN
  • 8 veranschaulicht das Training und den Einsatz eines tiefen neuronalen Netzwerks gemäß mindestens einer Ausführungsform. In mindestens einer Ausführungsform wird das untrainierte neuronale Netzwerk 806 unter Verwendung eines Trainingsdatensatzes 802 trainiert. In mindestens einer Ausführungsform ist das Trainings-Framework 804 ein PyTorch-Framework, wohingegen das Trainings-Framework 804 in anderen Ausführungsformen ein TensorFlow-, Boost-, Caffe-, Microsoft-Cognitive-Toolkit/CNTK-, MXNet-, Chainer-, Keras-, Deeplearning4j- oder ein anderes Trainings-Framework ist. In mindestens einer Ausführungsform trainiert das Trainings-Framework 804 ein untrainiertes neuronales Netzwerk 806 und ermöglicht, dass es unter Verwendung der hierin beschriebenen Verarbeitungsressourcen trainiert wird, um ein trainiertes neuronales Netzwerk 808 zu erzeugen. In mindestens einer Ausführungsform können die Gewichtungen zufällig oder durch Vorabtraining unter Verwendung eines Deep-Belief-Netzwerks gewählt werden. In mindestens einer Ausführungsform kann das Training entweder auf überwachte, teilweise überwachte oder nicht überwachte Weise durchgeführt werden.
  • In mindestens einer Ausführungsform wird das untrainierte neuronale Netzwerk 806 unter Verwendung von überwachtem Lernen trainiert, wobei der Trainingsdatensatz 802 eine Eingabe beinhaltet, die mit einer gewünschten Ausgabe für eine Eingabe gepaart ist, oder wobei der Trainingsdatensatz 802 eine Eingabe beinhaltet, die eine bekannte Ausgabe aufweist, und eine Ausgabe des neuronalen Netzwerks 806 manuell bewertet wird. In mindestens einer Ausführungsform wird das untrainierte neuronale Netzwerk 806 auf überwachte Weise trainiert und es verarbeitet Eingaben aus dem Trainingsdatensatz 802 und vergleicht die resultierenden Ausgaben mit einem Satz von erwarteten oder gewünschten Ausgaben. In mindestens einer Ausführungsform werden Fehler dann durch das untrainierte neuronale Netzwerk 806 rückpropagiert. In mindestens einer Ausführungsform stellt das Trainings-Framework 804 Gewichtungen ein, die das untrainierte neuronale Netzwerk 806 steuern. In mindestens einer Ausführungsform beinhaltet das Trainings-Framework 804 Werkzeuge, um zu überwachen, wie gut das untrainierte neuronale Netzwerk 806 zu einem Modell konvergiert, wie etwa dem trainierten neuronalen Netzwerk 808, das dazu geeignet ist, korrekte Antworten zu erzeugen, wie etwa in dem Ergebnis 814, die auf Eingabedaten wie etwa einem neuen Datensatz 812 basieren. In mindestens einer Ausführungsform trainiert das Trainings-Framework 804 das untrainierte neuronale Netzwerk 806 wiederholt, während Gewichtungen eingestellt werden, um eine Ausgabe des untrainierten neuronalen Netzwerks 806 unter Verwendung einer Verlustfunktion und eines Einstellungsalgorithmus, wie etwa des stochastischen Gradientenabstiegs, zu verfeinern. In mindestens einer Ausführungsform trainiert das Trainings-Framework 804 das untrainierte neuronale Netzwerk 806, bis das untrainierte neuronale Netzwerk 806 eine gewünschte Genauigkeit erreicht. In mindestens einer Ausführungsform kann das trainierte neuronale Netzwerk 808 dann zum Implementieren einer beliebigen Anzahl von Operationen des maschinellen Lernens eingesetzt werden.
  • In mindestens einer Ausführungsform wird das untrainierte neuronale Netzwerk 806 unter Verwendung von nicht überwachtem Lernen trainiert, wobei das untrainierte neuronale Netzwerk 806 versucht, sich selbst unter Verwendung von unbeschrifteten Daten zu trainieren. In mindestens einer Ausführungsform beinhaltet der Trainingsdatensatz 802 für nicht überwachtes Lernen Eingabedaten ohne assoziierte Ausgabedaten oder „Ground-Truth“-Daten. In mindestens einer Ausführungsform kann das untrainierte neuronale Netzwerk 806 Gruppierungen innerhalb des Trainingsdatensatzes 802 lernen und bestimmen, wie einzelne Eingaben mit dem untrainierten Datensatz 802 in Bezug stehen. In mindestens einer Ausführungsform kann nicht überwachtes Training verwendet werden, um eine selbstorganisierende Karte in dem trainierten neuronalen Netzwerk 808 zu erzeugen, die dazu in der Lage ist, Operationen durchzuführen, die beim Reduzieren der Dimensionalität des neuen Datensatzes 812 nützlich sind. In mindestens einer Ausführungsform kann nicht überwachtes Training auch verwendet werden, um Anomalieerkennung durchzuführen, was die Identifizierung von Datenpunkten in einem neuen Datensatz 812 ermöglicht, die von normalen Mustern des neuen Datensatzes 812 abweichen.
  • In mindestens einer Ausführungsform kann halbüberwachtes Lernen verwendet werden, wobei es sich um eine Technik handelt, bei der der Trainingsdatensatz 802 eine Mischung aus beschrifteten und unbeschrifteten Daten beinhaltet. In mindestens einer Ausführungsform kann das Trainings-Framework 804 verwendet werden, um inkrementelles Lernen durchzuführen, wie etwa durch Transferlerntechniken. In mindestens einer Ausführungsform ermöglicht das inkrementelle Lernen es dem trainierten neuronalen Netzwerk 808, sich an den neuen Datensatz 812 anzupassen, ohne das Wissen zu vergessen, das dem trainierten neuronalen Netzwerk 808 während des anfänglichen Trainings beigebracht wurde.
  • In mindestens einer Ausführungsform ist das Trainings-Framework 804 ein Framework, das in Verbindung mit einem Softwareentwicklungs-Toolkit wie einem OpenVINO (Open Visual Inference and Neural Network Optimization) Toolkit verarbeitet wird. In mindestens einer Ausführungsform handelt es sich bei einem OpenVINO-Toolkit um ein Toolkit, wie es von der Intel Corporation in Santa Clara, CA, entwickelt wurde.
  • In mindestens einer Ausführungsform ist OpenVINO ein Toolkit zur Erleichterung der Entwicklung von Anwendungen, insbesondere Anwendungen neuronaler Netzwerke, für verschiedene Aufgaben und Operationen, wie etwa die Emulation des menschlichen Sehens, Spracherkennung, Verarbeitung natürlicher Sprache, Empfehlungssysteme und/oder Variationen davon. In mindestens einer Ausführungsform unterstützt OpenVINO neuronale Netzwerke wie etwa neuronale Faltungsnetzwerke (convolutional neural networks - CNNs), rekurrente und/oder aufmerksamkeitsbasierte neuronale Netzwerke und/oder verschiedene andere neuronale Netzwerkmodelle. In mindestens einer Ausführungsform unterstützt OpenVINO verschiedene Softwarebibliotheken wie OpenCV, OpenCL und/oder Variationen davon.
  • In mindestens einer Ausführungsform unterstützt OpenVINO neuronale Netzwerkmodelle für verschiedene Aufgaben und Operationen, wie etwa Klassifizierung, Segmentierung, Objekterkennung, Gesichtserkennung, Spracherkennung, Posenschätzung (z.B. Menschen und/oder Objekte), monokulare Tiefenschätzung, Image Inpainting, Stilübertragung, Handlungserkennung, Kolorierung und/oder Variationen davon.
  • In mindestens einer Ausführungsform umfasst OpenVINO ein oder mehrere Softwaretools und/oder Module für eine Modelloptimierung, was auch als Modelloptimierer bezeichnet wird. In mindestens einer Ausführungsform ist ein Modelloptimierer ein Befehlszeilentool, das Übergänge zwischen Training und Einsatz neuronaler Netzwerkmodelle erleichtert. In mindestens einer Ausführungsform optimiert ein Modelloptimierer neuronale Netzwerkmodelle für die Ausführung auf verschiedenen Vorrichtungen und/oder Verarbeitungseinheiten, wie etwa einer GPU, CPU, PPU, GPGPU und/oder Variationen davon. In mindestens einer Ausführungsform erzeugt ein Modelloptimierer eine interne Darstellung eines Modells und optimiert das Modell, um eine Zwischendarstellung zu erzeugen. In mindestens einer Ausführungsform reduziert ein Modelloptimierer die Anzahl der Schichten eines Modells. In mindestens einer Ausführungsform entfernt ein Modelloptimierer die Schichten eines Modells, die für das Training verwendet werden. In mindestens einer Ausführungsform führt ein Modelloptimierer verschiedene neuronale Netzwerkoperationen durch, wie etwa das Modifizieren von Eingaben in ein Modell (z.B. Ändern der Größe von Eingaben in ein Modell), das Modifizieren einer Größe von Eingaben eines Modells (z.B. Modifizieren einer Stapelgröße eines Modells), Modifizieren einer Modellstruktur (z.B. Modifizieren von Schichten eines Modells), Normalisierung, Standardisierung, Quantisierung (z.B. Konvertieren von Gewichtungen eines Modells von einer ersten Darstellung, wie etwa Gleitkomma, in eine zweite Darstellung, wie etwa Ganzzahl) und /oder Variationen davon.
  • In mindestens einer Ausführungsform umfasst OpenVINO eine oder mehrere Softwarebibliotheken zum Inferenzieren, auch als Inferenz-Engine bezeichnet. In mindestens einer Ausführungsform ist eine Inferenz-Engine eine C++-Bibliothek oder eine beliebige geeignete Programmiersprachenbibliothek. In mindestens einer Ausführungsform wird eine Inferenz-Engine verwendet, um Eingabedaten zu inferenzieren. In mindestens einer Ausführungsform implementiert eine Inferenz-Engine verschiedene Klassen, um Eingabedaten zu inferenzieren und ein oder mehrere Ergebnisse zu erzeugen. In mindestens einer Ausführungsform implementiert eine Inferenz-Engine eine oder mehrere API-Funktionen, um eine Zwischendarstellung zu verarbeiten, Eingabe- und/oder Ausgabeformate festzulegen und/oder ein Modell auf einer oder mehreren Vorrichtungen auszuführen.
  • In mindestens einer Ausführungsform stellt OpenVINO verschiedene Fähigkeiten zur heterogenen Ausführung eines oder mehrerer neuronaler Netzwerkmodelle bereit. In mindestens einer Ausführungsform bezieht sich heterogene Ausführung oder heterogenes Rechnen auf einen oder mehrere Rechenprozesse und/oder -systeme, die einen oder mehrere Arten von Prozessoren und/oder Kernen nutzen. In mindestens einer Ausführungsform stellt OpenVINO verschiedene Softwarefunktionen bereit, um ein Programm auf einer oder mehreren Vorrichtungen auszuführen. In mindestens einer Ausführungsform stellt OpenVINO verschiedene Softwarefunktionen bereit, um ein Programm und/oder Abschnitte eines Programms auf verschiedenen Vorrichtungen auszuführen. In mindestens einer Ausführungsform stellt OpenVINO verschiedene Softwarefunktionen bereit, um beispielsweise einen ersten Abschnitt von Code auf einer CPU und einen zweiten Abschnitt von Code auf einer GPU und/oder einem FPGA auszuführen. In mindestens einer Ausführungsform stellt OpenVINO verschiedene Softwarefunktionen bereit, um eine oder mehrere Schichten eines neuronalen Netzwerks auf einer oder mehreren Vorrichtungen auszuführen (z.B. einen ersten Satz Schichten auf einer ersten Vorrichtung, beispielsweise einer GPU, und einen zweiten Satz Schichten auf einer zweiten Vorrichtung, beispielsweise einer CPU).
  • In mindestens einer Ausführungsform beinhaltet OpenVINO verschiedene Funktionen, die den mit einem CUDA-Programmiermodell assoziierten Funktionen ähneln, wie beispielsweise verschiedene Operationen neuronaler Netzwerkmodelle, die mit Frameworks wie TensorFlow, PyTorch und/oder Variationen davon assoziiert sind. In mindestens einer Ausführungsform werden eine oder mehrere CUDA-Programmiermodelloperationen mit OpenVINO durchgeführt. In mindestens einer Ausführungsform sind verschiedene Systeme, Verfahren und/oder Techniken, die hier beschrieben sind, unter Verwendung von OpenVINO implementiert.
  • RECHENZENTRUM
  • 9 veranschaulicht ein beispielhaftes Rechenzentrum 900, in dem mindestens eine Ausführungsform verwendet werden kann. In mindestens einer Ausführungsform beinhaltet das Rechenzentrum 900 eine Rechenzentrumsinfrastrukturschicht 910, eine Rahmenschicht 920, eine SoftwareSchicht 930 und eine Anwendungsschicht 940.
  • In mindestens einer Ausführungsform, wie in 9 gezeigt, kann die Rechenzentrumsinfrastrukturschicht 910 einen Ressourcenorchestrator 912, gruppierte Rechenressourcen 914 und Knoten-Rechenressourcen (node computing resources - „Knoten-CRs“) 916(1 )-916(N) beinhalten, wobei „N“ eine positive ganze Zahl darstellt (die eine andere ganze Zahl „N“ sein kann, als in anderen Figuren verwendet). In mindestens einer Ausführungsform können die Knoten-CRs 916(1)-916(N) eine beliebige Anzahl von zentralen Verarbeitungseinheiten („CPUs“) oder anderen Prozessoren (einschließlich Beschleunigern, feldprogrammierbarer GateArrays (FPGAs), Grafikprozessoren usw.), Speichervorrichtungen 918(1)-918(N) (z.B. dynamischer Festwertspeicher, Festkörperspeicher oder Festplattenlaufwerke), Vorrichtungen zur Netz-Eingabe/Ausgabe (network input/output- „NW-E/A“), Netz-Switches, virtuellen Maschinen (virtual machines - „VMs“), Leistungsmodulen und Kühlmodulen usw. beinhalten, ohne darauf beschränkt zu sein. In mindestens einer Ausführungsform kann es sich bei einer oder mehreren Knoten-CRs aus den Knoten-CRs 916(1)-916(N) um einen Server handeln, der eine oder mehrere der vorstehend erwähnten Rechenressourcen aufweist.
  • In mindestens einer Ausführungsform können die gruppierten Rechenressourcen 914 separate Gruppierungen von Knoten-CRs beinhalten, die innerhalb eines oder mehrerer Racks (nicht gezeigt) oder vieler Racks untergebracht sind, die in Rechenzentren an verschiedenen geografischen Standorten untergebracht sind (ebenfalls nicht gezeigt). Separate Gruppierungen von Knoten-CRs innerhalb der gruppierten Rechenressourcen 914 können in mindestens einer Ausführungsform gruppierte Rechen-, Netz-, Arbeitsspeicher- oder Datenspeicherressourcen beinhalten, die dazu konfiguriert oder zugewiesen sein können, eine oder mehrere Arbeitslasten zu unterstützen. In mindestens einer Ausführungsform können mehrere Knoten-CRs, die CPUs oder Prozessoren beinhalten, innerhalb eines oder mehrerer Racks gruppiert sein, um Rechenressourcen zum Unterstützen einer oder mehrerer Arbeitslasten bereitzustellen. In mindestens einer Ausführungsform können ein oder mehrere Racks auch eine beliebige Anzahl von Leistungsmodulen, Kühlmodulen und Netz-Switches in beliebiger Kombination beinhalten.
  • In mindestens einer Ausführungsform kann der Ressourcen-Orchestrator 912 einen oder mehrere Knoten-CRs 916(1)-916(N) und/oder gruppierte Rechenressourcen 914 konfigurieren oder anderweitig steuern. In mindestens einer Ausführungsform kann der Ressourcen-Orchestrator 912 eine Verwaltungsentität für Softwaregestaltungsinfrastruktur (software design infrastructure - „SDI“) für das Rechenzentrum 900 beinhalten. In mindestens einer Ausführungsform kann der Ressourcen-Orchestrator 712 Hardware, Software oder eine Kombination davon beinhalten.
  • In mindestens einer Ausführungsform, wie in 9 dargestellt, beinhaltet die Framework-Schicht 920 einen Job-Scheduler 922, einen Konfigurationsmanager 924, einen Ressourcenmanager 926 und ein verteiltes Dateisystem 928. In mindestens einer Ausführungsform kann die Framework-Schicht 920 ein Framework beinhalten, um Software 932 der Softwareschicht 930 und/oder eine oder mehrere Anwendung(en) 942 der Anwendungsschicht 940 zu unterstützen. In mindestens einer Ausführungsform kann/können die Software 932 oder die Anwendung(en) 942 jeweils webbasierte Dienstsoftware oder -anwendungen beinhalten, wie etwa diejenigen, die von Amazon Web Services, Google Cloud und Microsoft Azure bereitgestellt sind. In mindestens einer Ausführungsform kann es sich bei der Framework-Schicht 920 um eine Art freien und quelloffenen Software-Webanwendungsframeworks wie etwa Apache Spark™ (im Folgenden „Spark“) handeln, der das verteilte Dateisystem 928 für die Verarbeitung großer Datenmengen (z.B. „Big Data“) verwenden kann, ohne darauf beschränkt zu sein. In mindestens einer Ausführungsform kann der Job-Scheduler 922 einen Spark-Treiber beinhalten, um die zeitliche Planung von Workloads zu erleichtern, die von verschiedenen Schichten des Rechenzentrums 900 unterstützt werden. In mindestens einer Ausführungsform kann der Konfigurationsmanager 924 in der Lage sein, unterschiedliche Schichten zu konfigurieren, wie etwa die Softwareschicht 930 und die Framework-Schicht 920, was Spark und das verteilte Dateisystem 928 zum Unterstützen umfangreicher Datenverarbeitung beinhaltet. In mindestens einer Ausführungsform kann der Ressourcenmanager 926 in der Lage sein, geclusterte oder gruppierte Rechenressourcen zu verwalten, die dem verteilten Dateisystem 928 und dem Job-Scheduler 922 zur Unterstützung zugeordnet oder zugewiesen sind. In mindestens einer Ausführungsform können geclusterte oder gruppierte Rechenressourcen gruppierte Rechenressourcen 914 in der Rechenzentrumsinfrastrukturschicht 910 beinhalten. In mindestens einer Ausführungsform kann sich der Ressourcenmanager 926 mit dem Ressourcen-Orchestrator 912 koordinieren, um diese zugeordneten oder zugewiesenen Rechenressourcen zu verwalten.
  • In mindestens einer Ausführungsform kann die in der Softwareschicht 930 beinhaltete Software 932 Software beinhalten, die mindestens durch Teile der Knoten-CRs 916(1)—916(N), gruppierte Rechenressourcen 914 und/oder das verteilte Dateisystem 928 der Framework-Schicht 920 verwendet werden. Zu einem oder mehreren Typen von Software können in mindestens einer Ausführungsform Software zum Durchsuchen von Internet-Webseiten, Software zum Scannen von EMails auf Viren, Datenbank-Software und Software für Streaming-Videoinhalte gehören, ohne darauf beschränkt zu sein.
  • In mindestens einer Ausführungsform kann/können die Anwendung(en) 942, die in der Anwendungsschicht 940 beinhaltet ist/sind, eine oder mehrere Arten von Anwendungen beinhalten, die zumindest von Abschnitten der Knoten-CRs 916(1)-916(N), gruppierten Rechenressourcen 914 und/oder dem verteilten Dateisystem 928 der Framework-Schicht 920 verwendet werden. Zu einem oder mehreren Typen von Anwendungen können in mindestens einer Ausführungsform eine beliebige Anzahl von einer Genomikanwendung, einer Anwendung zur kognitiven Berechnung und einer Anwendung für maschinelles Lernen gehören, einschließlich Trainings- oder Inferenz-Software, Rahmen-Software für maschinelles Lernen (z.B. PyTorch, TensorFlow, Caffe usw.) oder anderer Anwendungen für maschinelles Lernen, die in Verbindung mit einer oder mehreren Ausführungsformen verwendet werden, ohne darauf beschränkt zu sein.
  • In mindestens einer Ausführungsform können beliebige des Konfigurationsmanagers 924, des Ressourcenmanagers 926 und des Ressourcenorchestrators 912 eine beliebige Anzahl und Art von selbstmodifizierenden Handlungen implementieren, die auf einer beliebigen Menge und Art von Daten basieren, die auf eine beliebige technisch machbare Weise erfasst wurden. In mindestens einer Ausführungsform können selbstmodifizierende Handlungen einen Rechenzentrumsbetreiber des Rechenzentrums 900 dahingehend entlasten, möglicherweise schlechte Konfigurationsentscheidungen zu treffen und möglicherweise nicht ausgelastete und/oder schlecht funktionierende Abschnitte eines Rechenzentrums zu vermeiden.
  • In mindestens einer Ausführungsform kann das Rechenzentrum 900 Werkzeuge, Dienste, Software oder andere Ressourcen beinhalten, um ein oder mehrere Modelle für maschinelles Lernen zu trainieren oder Informationen unter Verwendung eines oder mehrerer Modelle für maschinelles Lernen gemäß einer oder mehrerer hierin beschriebener Ausführungsformen vorherzusagen oder zu inferenzieren. Zum Beispiel kann in mindestens einer Ausführungsform ein Modell für maschinelles Lernen trainiert werden, indem Gewichtungsparameter gemäß einer Architektur eines neuronalen Netzwerks unter Verwendung von Software und Rechenressourcen berechnet werden, die vorstehend in Bezug auf das Rechenzentrum 900 beschrieben sind. In mindestens einer Ausführungsform können trainierte Modelle für maschinelles Lernen, die einem oder mehreren neuronalen Netzwerken entsprechen, verwendet werden, um Informationen unter Verwendung der vorstehend in Bezug auf das Rechenzentrum 900 beschriebenen Ressourcen zu inferenzieren oder vorherzusagen, indem Gewichtungsparameter verwendet werden, die durch eine oder mehrere hierin beschriebene Trainingstechniken berechnet werden.
  • In mindestens einer Ausführungsform kann das Rechenzentrum CPUs, anwendungsspezifische integrierte Schaltungen (ASICs), GPUs, FPGAs oder andere Hardware verwenden, um Training und/oder Inferenzieren unter Verwendung der vorstehend beschriebenen Ressourcen durchzuführen. Darüber hinaus können eine oder mehrere der vorstehend beschriebenen Software- und/oder Hardware-Ressourcen als Dienst konfiguriert sein, um Benutzern das Trainieren oder Durchführen des Inferenzierens von Informationen zu ermöglichen, wie etwa Bilderkennung, Spracherkennung oder andere Dienste der künstlichen Intelligenz.
  • Die Inferenz- und/oder Trainingslogik 715 wird verwendet, um Inferenzierungs- und/oder Trainingsoperationen durchzuführen, die mit einer oder mehreren Ausführungsformen assoziiert sind. Details bezüglich der Inferenz- und/oder Trainingslogik 715 sind hierin in Verbindung mit 7A und/oder 7B bereitgestellt. In mindestens einer Ausführungsform kann die Inferenz- und/oder Trainingslogik 715 in dem System aus 9 für Inferenzierungs- oder Vorhersageoperationen zumindest teilweise basierend auf Gewichtungsparametern verwendet werden, die unter Verwendung von hierin beschriebenen Trainingsoperationen für neuronale Netzwerke, Funktionen und/oder Architekturen für neuronale Netzwerke oder Anwendungsfälle für neuronale Netzwerke berechnet wurden.
  • In mindestens einer Ausführungsform können solche Komponenten verwendet werden, um Bildsegmentierung durchzuführen, wie oben erörtert, beispielsweise in Bezug auf ein System der 1 oder 2 oder Prozesse von 4 oder 5. In mindestens einer Ausführungsform kann dies das Erzeugen eines ersten Bildes eines Objekts beinhalten, das zumindest teilweise auf dem Hinzufügen von Rauschen zu und dem Entfernen dieses Rauschens aus einem zweiten Bild dieses Objekts basiert.
  • AUTONOMES FAHRZEUG
  • 10A veranschaulicht ein beispielhaftes autonomes Fahrzeug 1000 gemäß mindestens einer Ausführungsform. In mindestens einer Ausführungsform kann das autonome Fahrzeug 1000 (hierin alternativ als „Fahrzeug 1000“ bezeichnet) ohne Einschränkung ein Personenkraftwagen sein, wie etwa ein Auto, ein Truck, ein Bus und/oder ein anderer Fahrzeugtyp, der einen oder mehrere Fahrgäste aufnimmt. In mindestens einer Ausführungsform kann das Fahrzeug 1000 ein Sattelschlepper sein, der zum Befördern von Fracht verwendet wird. In mindestens einer Ausführungsform kann das Fahrzeug 1000 ein Flugzeug, ein Roboterfahrzeug oder eine andere Art von Fahrzeug sein.
  • Autonome Fahrzeuge können in Form von Automatisierungsstufen beschrieben werden, die von der National Highway Traffic Safety Administration („NHTSA“), einer Abteilung des US-Verkehrsministeriums, und der Society of Automotive Engineers („SAE“) „Taxonomy and Definitions for Terms Related to Driving Automation Systems for On-Road Motor Vehicles“ (z.B. Standard Nr. J3016-201806, veröffentlicht am 15. Juni 2018, Standard Nr. J3016-201609, veröffentlicht am 30. September 2016, sowie frühere und zukünftige Versionen dieses Standards) definiert sind. In mindestens einer Ausführungsform kann das Fahrzeug 1000 zu einer Funktionalität gemäß einem oder mehreren von Level 1 bis einschließlich Level 5 der Levels für autonomes Fahren in der Lage sein. Zum Beispiel kann in mindestens einer Ausführungsform das Fahrzeug 1000 in Abhängigkeit von der Ausführungsform zu einer bedingten Automatisierung (Level 3), einer hohen Automatisierung (Level 4) und/oder einer vollständigen Automatisierung (Level 5) in der Lage sein.
  • In mindestens einer Ausführungsform kann das Fahrzeug 1000 ohne Einschränkung Komponenten wie etwa ein Fahrgestell, eine Fahrzeugkarosserie, Räder (z.B. 2, 4, 6, 8, 18 usw.), Reifen, Achsen und andere Komponenten eines Fahrzeugs beinhalten. In mindestens einer Ausführungsform kann das Fahrzeug 1000 ohne Einschränkung ein Antriebssystem 1050 beinhalten, wie etwa eine Brennkraftmaschine, ein Hybridelektrotriebwerk, einen vollelektrischen Motor und/oder einen anderen Typ von Antriebssystem. In mindestens einer Ausführungsform kann das Antriebssystem 1050 mit einem Antriebsstrang des Fahrzeugs 1000 verbunden sein, der ohne Einschränkung ein Getriebe beinhalten kann, um den Antrieb des Fahrzeugs 1000 zu ermöglichen. In mindestens einer Ausführungsform kann das Antriebssystem 1050 als Reaktion auf das Empfangen von Signalen von einer Drossel/Fahrpedal(en) 1052 gesteuert werden.
  • In mindestens einer Ausführungsform wird ein Lenksystem 1054, das ohne Einschränkung ein Lenkrad beinhalten kann, verwendet, um das Fahrzeug 1000 zu lenken (z.B. entlang eines gewünschten Pfads oder einer gewünschten Route), wenn das Antriebssystem 1050 in Betrieb ist (z.B., wenn das Fahrzeug 1000 in Bewegung ist). In mindestens einer Ausführungsform kann das Lenksystem 1054 Signale von Lenkaktor(en) 1056 empfangen. In mindestens einer Ausführungsform kann ein Lenkrad für die Funktionalität einer vollständigen Automatisierung (Level 5) optional sein. In mindestens einer Ausführungsform kann ein Bremssensorsystem 1046 verwendet werden, um Fahrzeugbremsen als Reaktion auf das Empfangen von Signalen von Bremsaktor(en) 1048 und/oder Bremssensoren zu betreiben.
  • In mindestens einer Ausführungsform stellen Steuerung(en) 1036, die ohne Einschränkung ein oder mehrere Systeme auf einem Chip (system on chips - „SoCs“) (in 10A nicht gezeigt) und/oder Grafikverarbeitungseinheit(en) („GPU(s)“) beinhalten können, einer/einem oder mehreren Komponenten und/oder Systemen des Fahrzeugs 1000 Signale (die z.B. für Befehle repräsentativ sind) bereit. Zum Beispiel können in mindestens einer Ausführungsform die Steuerung(en) 1036 Signale zum Betreiben von Fahrzeugbremsen über die Bremsaktor(en) 1048, zum Betreiben des Lenksystems 1054 über die Lenkaktor(en) 1056, zum Betreiben des Antriebssystems 1050 über die Drossel/Fahrpedal(e) 1052 senden. In mindestens einer Ausführungsform können die Steuerung(en) 1036 eine oder mehrere bordeigene (z.B. integrierte) Rechenvorrichtungen beinhalten, die Sensorsignale verarbeiten und Betriebsbefehle ausgeben (z.B. Signale, die Befehle darstellen), um autonomes Fahren zu ermöglichen und/oder einen menschlichen Fahrer beim Fahren des Fahrzeugs 1000 zu unterstützen. In mindestens einer Ausführungsform können die Steuerung(en) 1036 eine erste Steuerung für Funktionen des autonomen Fahrens, eine zweite Steuerung für funktionelle Sicherheitsfunktionen, eine dritte Steuerung für eine Funktionalität der künstlichen Intelligenz (z.B. maschinelles Sehen), eine vierte Steuerung für eine Infotainment-Funktionalität, eine fünfte Steuerung für Redundanz in Notfällen und/oder andere Steuerungen beinhalten. In mindestens einer Ausführungsform kann eine einzelne Steuerung zwei oder mehr der vorstehenden Funktionalitäten handhaben, können zwei oder mehr Steuerungen eine einzelne Funktionalität handhaben und/oder eine beliebige Kombination davon.
  • In mindestens einer Ausführungsform können eine oder mehrere Steuerungen 1036 Signale zum Steuern einer oder mehrerer Komponenten und/oder Systeme des Fahrzeugs 1000 als Reaktion auf Sensordaten bereitstellen, die von einem oder mehreren Sensoren empfangen wurden (z.B. Sensoreingaben). In mindestens einer Ausführungsform können Sensordaten zum Beispiel und ohne Einschränkung von Folgenden empfangen werden: Sensoren von globalen Navigationssatellitensystemen („GNSS“) 1058 (z.B. einen oder mehrere Sensoren von globalen Positionsbestimmungssystemen), einen oder mehrere Radarsensorsen 1060, einen oder mehrere Ultraschallsensoren 1062, einen oder mehrere Lidarsensoren 1064, einen oder mehrere Sensoren von Trägheitsmesseinheiten (inertial measurement unit- „IMU“) 1066 (z.B. einen oder mehrere Beschleunigungssensoren, ein oder mehrere Gyroskope, einen Magnetkompass oder Magnetkompasse, ein oder mehrere Magnetometer usw.), ein oder mehrere Mikrofone 1096, eine oder mehrere Stereokameras 1068, eine oder mehrere Weitsichtkameras 1070 (z.B. Fischaugenkameras), eine oder mehrere Infrarotkameras 1072, eine oder mehrere Rundumkameras 1074 (z.B. 360-Grad-Kameras), Langstreckenkameras (in 10A nicht gezeigt), eine oder mehrere Mittelstreckenkameras (in 10A nicht gezeigt), einen oder mehrere Drehzahlsensoren 1044 (z.B. zum Messen der Drehzahl des Fahrzeugs 1000), einen oder mehrere Vibrationssensoren 1042, einen oder mehrere Lenksensoren 1040, einen oder mehrere Bremssensoren (z.B. als Teil des Bremssensorsystems 1046) und/oder andere Sensorarten.
  • In mindestens einer Ausführungsform können eine oder mehrere der Steuerung(en) 1036 Eingaben (z.B. durch Eingabedaten dargestellt) von einem Kombiinstrument 1032 des Fahrzeugs 1000 empfangen und Ausgaben (z.B. durch Ausgabedaten, Anzeigedaten usw. dargestellt) über eine Anzeige 1034 einer Mensch-Maschine-Schnittstelle (human-machine interface - „HMI“), einen akustischen Melder, einen Lautsprecher und/oder über andere Komponenten des Fahrzeugs 1000 bereitstellen. In mindestens einer Ausführungsform können Ausgaben Informationen wie etwa Fahrzeuggeschwindigkeit, Drehzahl, Zeit, Kartendaten (z.B. eine hochauflösende Karte (in 10A nicht gezeigt), Standortdaten (z.B. den Standort des Fahrzeugs 1000, wie etwa auf einer Karte), Richtung, Standort anderer Fahrzeuge (z.B. ein Belegungsgitter), Informationen über Objekte und den Status von Objekten, wie durch die Steuerung(en) 1036 wahrgenommen, usw. beinhalten. Zum Beispiel kann in mindestens einer Ausführungsform die HMI-Anzeige 1034 Informationen über das Vorhandensein eines oder mehrerer Objekte (z.B. eines Straßenschilds, eines Warnschilds, einer umschaltenden Ampel usw.) und/oder Informationen über Fahrmanöver anzeigen, die das Fahrzeug durchgeführt hat, gerade durchführt oder durchführen wird (z.B. jetzt die Spur wechseln, in zwei Meilen die Ausfahrt 34B nehmen usw.).
  • In mindestens einer Ausführungsform beinhaltet das Fahrzeug 1000 ferner eine Netzwerkschnittstelle 1024, die drahtlose Antenne(n) 1026 und/oder Modem(s) zum Kommunizieren über ein oder mehrere Netzwerke verwenden kann. Zum Beispiel kann in mindestens einer Ausführungsform die Netzwerkschnittstelle 1024 dazu in der Lage sein, über Netzwerke mit Long-Term Evolution („LTE“), Breitband-Codemultiplexverfahren (Wideband Code Division Multiple Access - „WCDMA“), Universal Mobile Telecommunications System („UMTS“), Global System for Mobile Communication („GSM“), IMT-CDMA Multi-Carrier („CDMA2000“) usw. zu kommunizieren. In mindestens einer Ausführungsform können die drahtlose(n) Antenne(n) 1026 auch Kommunikation zwischen Objekten in der Umgebung (z.B. Fahrzeugen, mobilen Vorrichtungen usw.) unter Verwendung von lokalen Netzwerk(en), wie etwa Bluetooth, Bluetooth Low Energy („LE“), Z-Wave, ZigBee usw., und/oder Weitverkehrsnetzwerk(en) mit geringem Leistungsverbrauch (low power wide-area networks - „LPWAN“), wie etwa LoRaWAN-Protokollen, SigFox-Protokollen usw., ermöglichen.
  • Die Inferenz- und/oder Trainingslogik 715 wird verwendet, um Inferenzierungs- und/oder Trainingsoperationen durchzuführen, die mit einer oder mehreren Ausführungsformen assoziiert sind. Details bezüglich der Inferenz- und/oder Trainingslogik 715 sind hierin in Verbindung mit 7A und/oder 7B bereitgestellt. In mindestens einer Ausführungsform kann die Inferenz- und/oder Trainingslogik 715 in dem System aus 10A für Inferenzierungs- oder Vorhersageoperationen zumindest teilweise basierend auf Gewichtungsparametern verwendet werden, die unter Verwendung von hierin beschriebenen Trainingsoperationen für neuronale Netzwerke, Funktionen und/oder Architekturen für neuronale Netzwerke oder Anwendungsfälle für neuronale Netzwerke berechnet wurden.
  • In mindestens einer Ausführungsform können solche Komponenten verwendet werden, um Bildsegmentierung durchzuführen, wie oben erörtert, beispielsweise in Bezug auf ein System von 1 oder 2 oder Prozesse von 4 oder 5. In mindestens einer Ausführungsform kann dies die Verwendung eines oder mehrerer erster neuronaler Netzwerke beinhalten, um zu bewirken, dass ein Lichteffekt auf ein oder mehrere Objekte in einem oder mehreren Bildern angewendet wird, die zumindest teilweise auf synthetisch erzeugten Bildern des einen oder der mehreren Objekte basieren.
  • 10B veranschaulicht ein Beispiel für Kamerastandorte und Sichtfelder für das autonome Fahrzeug 1000 aus 10A gemäß mindestens einer Ausführungsform. In mindestens einer Ausführungsform stellen die Kameras und die jeweiligen Sichtfelder eine beispielhafte Ausführungsform dar und sie sollen nicht einschränkend sein. Beispielsweise können in mindestens einer Ausführungsform zusätzliche und/oder alternative Kameras beinhaltet sein und/oder Kameras an anderen Stellen des Fahrzeugs 1000 angeordnet sein.
  • In mindestens einer Ausführungsform können Kameratypen für Kameras Digitalkameras beinhalten, ohne darauf beschränkt zu sein, die zur Verwendung mit Komponenten und/oder Systemen des Fahrzeugs 1000 ausgelegt sind. In mindestens einer Ausführungsform können die Kamera(s) mit dem Automobilsicherheitsintegritätslevel (automotive safety integrity level - „ASIL“) B und/oder mit einem anderen ASIL betrieben werden. In mindestens einer Ausführungsform können die Kameratypen in Abhängigkeit von der Ausführungsform zu einer beliebigen Bildaufnahmerate in der Lage sein, wie etwa 60 Einzelbilder pro Sekunde (frames per second - fps), 1220 fps, 240 fps usw. In mindestens einer Ausführungsform können Kameras dazu in der Lage sein, Rollblendenverschlüsse, globale Blendenverschlüsse, einen anderen Typ von Blendenverschluss oder eine Kombination davon zu verwenden. In mindestens einer Ausführungsform kann das Farbfilterarray ein Red-Clear-Clear-Clear-(„RCCC“-)Farbfilterarray, ein Red-Clear-Clear-Blue-(„RCCB“-)Farbfilterarray, ein Red-Blue-Green-Clear-(„RBGC“-)Farbfilterarray, ein Foveon-X3-Farbfilterarray, ein Bayer-Sensoren-(„RGGB“-)Farbfilterarray, ein Monochromsensor-Farbfilterarray und/oder einen anderen Typ von Farbfilterarray beinhalten. In mindestens einer Ausführungsform können Klarpixelkameras, wie etwa Kameras mit einem RCCC-, einem RCCB- und/oder einem RBGC-Farbfilterarray, in einem Bestreben zum Erhöhen der Lichtempfindlichkeit verwendet werden.
  • In mindestens einer Ausführungsform können eine oder mehrere der Kamera(s) verwendet werden, um Funktionen der weiterentwickelten Fahrerassistenzsysteme (advanced driver assistance systems - ADAS) durchzuführen (z.B. als Teil einer redundanten oder ausfallsicheren Ausgestaltung). Zum Beispiel kann in mindestens einer Ausführungsform eine Multifunktions-Monokamera installiert sein, um Funktionen bereitzustellen, die Spurverlassenswarnung, Verkehrszeichenassistent und intelligente Scheinwerfersteuerung beinhalten. In mindestens einer Ausführungsform können eine oder mehrere der Kamera(s) (z.B. alle Kameras) simultan Bilddaten (z.B. Video) aufnehmen und bereitstellen.
  • In mindestens einer Ausführungsform können eine oder mehrere Kameras in einer Montagebaugruppe, wie etwa einer kundenspezifisch entworfenen (dreidimensional („3D“) gedruckten) Baugruppe, montiert sein, um Streulicht und Reflexionen aus dem Inneren des Fahrzeugs 1000 (z.B. Reflexionen von dem Armaturenbrett, die in den Windschutzscheibenspiegeln reflektiert werden) herauszuschneiden, die die Bilddatenerfassungsfähigkeiten der Kameras beeinträchtigen können. Unter Bezugnahme auf Seitenspiegelmontagebaugruppen können in mindestens einer Ausführungsform die Seitenspiegelbaugruppen kundenspezifisch 3D-gedruckt werden, sodass eine Kameramontageplatte mit einer Form eines Seitenspiegels übereinstimmt. In mindestens einer Ausführungsform kann (können) die Kamera(s) in den Außenspiegeln integriert sein. In mindestens einer Ausführungsform können bei Seitensichtkameras die Kamera(s) auch innerhalb von vier Säulen an jeder Ecke einer Kabine integriert sein.
  • In mindestens einer Ausführungsform können Kameras mit einem Sichtfeld, das Abschnitte einer Umgebung vor dem Fahrzeug 1000 beinhaltet (z.B. nach vorn gerichtete Kameras), für die Rundumsicht verwendet werden, um dabei zu helfen, nach vorn gerichtete Pfade und Hindernisse zu identifizieren, sowie unter Verwendung einer oder mehrerer Steuerung(en) 1036 und/oder Steuer-SoCs beim Bereitstellen von Informationen zu helfen, die zum Erzeugen eines Belegungsgitters und/oder Bestimmen bevorzugter Fahrzeugpfade entscheidend sind. In mindestens einer Ausführungsform können nach vorn gerichtete Kameras verwendet werden, um viele ähnliche ADAS-Funktionen wie LIDAR durchzuführen, einschließlich ohne Einschränkung Notbremsung, Fußgängerdetektion und Kollisionsvermeidung. In mindestens einer Ausführungsform können nach vorn gerichtete Kameras auch für ADAS-Funktionen und -Systeme verwendet werden, einschließlich ohne Einschränkung Spurverlassenswarnungen (Lane Departure Warnings - „LDW“), autonomer Geschwindigkeitssteuerung (Autonomous Cruise Control - „ACC“) und/oder anderer Funktionen wie etwa Verkehrszeichenerkennung.
  • In mindestens einer Ausführungsform kann eine Vielfalt an Kameras in einer nach vorn gerichteten Konfiguration verwendet werden, einschließlich zum Beispiel einer monokularen Kameraplattform, die einen Farbbildsensor mit CMOS („complementary metal oxide semiconductor“ - komplementärer Metalloxid-Halbleiter) beinhaltet. In mindestens einer Ausführungsform kann eine Weitsichtkamera 1070 verwendet werden, um Objekte wahrzunehmen, die aus einer Peripherie ins Blickfeld kommen (z.B. Fußgänger, kreuzender Verkehr oder Fahrräder). Obwohl in 10B nur eine Weitsichtkamera 1070 veranschaulicht ist, kann in anderen Ausführungsformen eine beliebige Anzahl (einschließlich null) von Weitsichtkameras an dem Fahrzeug 1000 vorhanden sein. In mindestens einer Ausführungsform kann eine beliebige Anzahl von Langstreckenkamera(s) 1098 (z.B. ein Weitsichtstereokamerapaar) zur tiefenbasierten Objektdetektion verwendet werden, insbesondere für Objekte, für die ein neuronales Netzwerk noch nicht untrainiert wurde. In mindestens einer Ausführungsform können die Langstreckenkamera(s) 1098 auch zur Objektdetektion und -klassifizierung sowie zur grundlegenden Objektverfolgung verwendet werden.
  • In mindestens einer Ausführungsform kann eine beliebige Anzahl von Stereokamera(s) 1068 auch in einer nach vorne gerichteten Konfiguration beinhaltet sein. In mindestens einer Ausführungsform können eine oder mehrere der Stereokamera(s) 1068 eine integrierte Steuereinheit beinhalten, die eine skalierbare Verarbeitungseinheit umfasst, die eine programmierbare Logik („FPGA“) und einen Mehrkern-Mikroprozessor mit einer integrierten Schnittstelle für ein Controller Area Network („CAN“) oder Ethernet auf einem einzelnen Chip bereitstellen kann. In mindestens einer Ausführungsform kann eine derartige Einheit verwendet werden, um eine 3D-Karte einer Umgebung des Fahrzeugs 1000 zu erzeugen, einschließlich einer Abstandsschätzung für alle Punkte in einem Bild. In mindestens einer Ausführungsform können eine oder mehrere der Stereokamera(s) 1068 ohne Einschränkung kompakte(n) Stereosichtsensor(en) beinhalten, die ohne Einschränkung zwei Kameraobjektive (je eines links und rechts) und einen Bildverarbeitungschip beinhalten können, die den Abstand von dem Fahrzeug 1000 zu einem Zielobjekt messen und die generierten Informationen (z.B. Metadaten) verwenden können, um autonome Notbrems- und Spurverlassenswarnfunktionen zu aktivieren. In mindestens einer Ausführungsform können andere Typen von Stereokamera(s) 1068 zusätzlich oder alternativ zu den hierin beschriebenen verwendet werden.
  • In mindestens einer Ausführungsform können Kameras mit einem Sichtfeld, das Abschnitte der Umgebung seitlich des Fahrzeugs 1000 beinhaltet (z.B. Seitensichtkameras), für die Rundumsicht verwendet werden, wodurch Informationen bereitgestellt werden, die zum Erstellen und Aktualisieren eines Belegungsgitters sowie zum Erzeugen von Seitenaufprallkollisionswarnungen verwendet werden. Zum Beispiel könnten in mindestens einer Ausführungsform die Rundumkamera(s) 1074 (z.B. vier Rundumkameras, wie in 10B veranschaulicht) an dem Fahrzeug 1000 positioniert sein. In mindestens einer Ausführungsform können die Rundumkamera(s) 1074 ohne Einschränkung eine beliebige Anzahl und Kombination von Weitsichtkameras, Fischaugenkamera(s), 360-Grad-Kamera(s) und/oder ähnlichen Kameras beinhalten. Zum Beispiel können in mindestens einer Ausführungsform vier Fischaugenkameras an einer Vorderseite, einer Rückseite und Seiten des Fahrzeugs 1000 positioniert sein. In mindestens einer Ausführungsform kann das Fahrzeug 1000 drei Rundumkamera(s) 1074 (z.B. links, rechts und hinten) verwenden und eine oder mehrere andere Kamera(s) (z.B. eine nach vorn gerichtete Kamera) als vierte Rundumsichtkamera ausnutzen.
  • In mindestens einer Ausführungsform können Kameras mit einem Sichtfeld, das Abschnitte einer Umgebung hinter dem Fahrzeug 1000 beinhaltet (z.B. Rückfahrkameras), für die Einparkhilfe, für die Rundumsicht, für Heckkollisionswarnungen und zum Erstellen und Aktualisieren eines Belegungsgitters verwendet werden. In mindestens einer Ausführungsform kann eine große Vielfalt an Kameras verwendet werden, einschließlich, aber nicht beschränkt auf, Kameras, die auch als nach vorn gerichtete Kamera(s) geeignet sind (z.B. Langstreckenkameras 1098 und/oder Mittelstreckenkamera(s) 1076, Stereokamera(s) 1068, Infrarotkamera(s) 1072 usw.), wie hierin beschrieben.
  • Die Inferenz- und/oder Trainingslogik 715 wird verwendet, um Inferenzierungs- und/oder Trainingsoperationen durchzuführen, die mit einer oder mehreren Ausführungsformen assoziiert sind. Details bezüglich der Inferenz- und/oder Trainingslogik 715 sind hierin in Verbindung mit 7A und/oder 7B bereitgestellt. In mindestens einer Ausführungsform kann die Inferenz- und/oder Trainingslogik 715 in dem System aus 10B für Inferenzierungs- oder Vorhersageoperationen zumindest teilweise basierend auf Gewichtungsparametern verwendet werden, die unter Verwendung von hierin beschriebenen Trainingsoperationen für neuronale Netzwerke, Funktionen und/oder Architekturen für neuronale Netzwerke oder Anwendungsfälle für neuronale Netzwerke berechnet wurden.
  • In mindestens einer Ausführungsform können solche Komponenten verwendet werden, um Bildsegmentierung durchzuführen, wie oben erörtert, beispielsweise in Bezug auf ein System von 1 oder 2 oder Prozesse von 4 oder 5. In mindestens einer Ausführungsform kann dies die Verwendung eines oder mehrerer erster neuronaler Netzwerke beinhalten, um zu bewirken, dass ein Lichteffekt auf ein oder mehrere Objekte in einem oder mehreren Bildern angewendet wird, die zumindest teilweise auf synthetisch erzeugten Bildern des einen oder der mehreren Objekte basieren.
  • 10C ist ein Blockdiagramm, das eine beispielhafte Systemarchitektur für das autonome Fahrzeug 1000 aus 10A veranschaulicht, gemäß mindestens einer Ausführungsform. In mindestens einer Ausführungsform ist jede/jedes der Komponenten, Merkmale und Systeme des Fahrzeugs 1000 in 10C als über einen Bus 1002 verbunden veranschaulicht. In mindestens einer Ausführungsform kann der Bus 1002 ohne Einschränkung eine CAN-Datenschnittstelle (hierin alternativ als „CAN-Bus“ bezeichnet) beinhalten. In mindestens einer Ausführungsform kann ein CAN ein Netzwerk innerhalb des Fahrzeugs 1000 sein, das zum Unterstützen beim Steuern verschiedener Merkmale und Funktionen des Fahrzeugs 1000 verwendet wird, wie etwa Betätigung von Bremsen, Beschleunigung, Bremsung, Lenkung, Scheibenwischern usw. In mindestens einer Ausführungsform kann der Bus 1002 so konfiguriert sein, dass er Dutzende oder sogar Hunderte von Knoten aufweist, jeder mit seiner eigenen eindeutigen Kennung (z.B. einer CAN-ID). In mindestens einer Ausführungsform kann der Bus 1002 ausgelesen werden, um Lenkradwinkel, Geschwindigkeit über Grund, Motorumdrehungen pro Minute (revolutions per minute - „RPMs“), Tastenpositionen und/oder andere Fahrzeugstatusindikatoren zu ermitteln. In mindestens einer Ausführungsform kann der Bus 1002 ein CAN-Bus sein, der mit ASIL B konform ist.
  • In mindestens einer Ausführungsform können zusätzlich zu oder alternativ zu CAN auch FlexRay- und/oder Ethernet-Protokolle verwendet werden. In mindestens einer Ausführungsform kann eine beliebige Anzahl von Bussen, die den Bus 1002 bilden, vorhanden sein, die ohne Einschränkung null oder mehr CAN-Busse, null oder mehr FlexRay-Busse, null oder mehr Ethernet-Busse und/oder null oder mehr andere Typen von Bussen unter Verwendung unterschiedlicher Protokolle beinhalten können. In mindestens einer Ausführungsform können zwei oder mehr Busse verwendet werden, um unterschiedliche Funktionen durchzuführen, und/oder zur Redundanz verwendet werden. Zum Beispiel kann ein erster Bus für die Funktionalität der Kollisionsvermeidung verwendet werden und ein zweiter Bus für die Betätigungssteuerung verwendet werden. In mindestens einer Ausführungsform kann jeder Bus des Busses 1002 mit beliebigen Komponenten des Fahrzeugs 1000 kommunizieren und zwei oder mehr Busse des Busses 1002 können mit entsprechenden Komponenten kommunizieren. In mindestens einer Ausführungsform kann jedes einer beliebigen Anzahl von System(en) auf Chip(s) („SoC(s)“) 1004 (wie etwa dem SoC 1004(A) und SoC 1004(B), jede der Steuerung(en) 1036 und/oder jeder Computer innerhalb des Fahrzeugs Zugriff auf die gleichen Eingabedaten (z.B. Eingaben von Sensoren des Fahrzeugs 1000) haben und mit einem gemeinsamen Bus, wie etwa dem CAN-Bus, verbunden sein.
  • In mindestens einer Ausführungsform kann das Fahrzeug 1000 eine oder mehrere Steuerung(en) 1036 beinhalten, wie beispielsweise jene, die hierin in Bezug auf 10A beschrieben sind. In mindestens einer Ausführungsform können die Steuerung(en) 1036 für eine Vielfalt an Funktionen verwendet werden. In mindestens einer Ausführungsform können die Steuerung(en) 1036 an beliebige von verschiedenen anderen Komponenten und Systemen des Fahrzeugs 1000 gekoppelt sein und zur Steuerung des Fahrzeugs 1000, der künstlichen Intelligenz des Fahrzeugs 1000, des Infotainments für das Fahrzeug 1000 und/oder anderer Funktionen verwendet werden.
  • In mindestens einer Ausführungsform kann das Fahrzeug 1000 eine beliebige Anzahl von SoCs 1004 beinhalten. In mindestens einer Ausführungsform kann jedes der SoCs 1004 ohne Einschränkung zentrale Verarbeitungseinheiten („CPU(s)“) 1006, Grafikverarbeitungseinheiten („GPU(s)“) 1008, Prozessor(en) 1010, Cache(s) 1012, einen oder mehrere Beschleuniger 1014, einen oder mehrere Datenspeicher 1016 und/oder andere nicht veranschaulichte Komponenten und Merkmale beinhalten. In mindestens einer Ausführungsform können die SoC(s) 1004 zum Steuern des Fahrzeugs 1000 in einer Vielfalt an Plattformen und Systemen verwendet werden. Zum Beispiel können in mindestens einer Ausführungsform SoC(s) 1004 in einem System (z.B. dem System des Fahrzeugs 1000) mit einer High-Definition-(„HD“-)Karte 1022 kombiniert werden, die über die Netzwerkschnittstelle 1024 Auffrischungen und/oder Aktualisierungen von einem oder mehreren Servern erlangen kann (nicht dargestellt in 10C).
  • In mindestens einer Ausführungsform können die CPU(s) 1006 einen CPU-Cluster oder CPU-Komplex (hierin alternativ als „CCPLEX“ bezeichnet) beinhalten. In mindestens einer Ausführungsform können die CPU(s) 1006 mehrere Kerne und/oder Level-Zwei-(„L2“-)Caches beinhalten. Zum Beispiel können in mindestens einer Ausführungsform die CPU(s) 1006 acht Kerne in einer kohärenten Mehrprozessorkonfiguration beinhalten. In mindestens einer Ausführungsform können die CPU(s) 1006 vier Doppelkerncluster beinhalten, wobei jeder Cluster einen dedizierten L2-Cache aufweist (z.B. einen 2 Megabyte (MB) großen L2-Cache). In mindestens einer Ausführungsform können die CPU(s) 1006 (z.B. CCPLEX) so konfiguriert sein, dass sie simultane Clusteroperationen unterstützen, sodass eine beliebige Kombination von Clustern der CPU(s) 1006 zu einem beliebigen gegebenen Zeitpunkt aktiv sein kann.
  • In mindestens einer Ausführungsform können eine oder mehrere CPU(s) 1006 Energiemanagementfunktionen implementieren, die ohne Einschränkung eines oder mehrere der folgenden Merkmale aufweisen: einzelne Hardwareblöcke können im Leerlauf automatisch taktgesteuert sein, um dynamische Energie zu sparen; jeder Kerntakt kann getaktet sein, wenn der Kern aufgrund der Ausführung von Wait for Interrupt („WFt“)/Wait for Event („WFE“)-Anweisungen nicht aktiv Anweisungen ausführt; jeder Kern kann unabhängig stromgesteuert sein; jeder Kerncluster kann unabhängig taktgesteuert sein, wenn alle Kerne taktgesteuert oder stromgesteuert sind; und/oder jeder Kerncluster kann unabhängig stromgesteuert sein, wenn alle Kerne stromgesteuert sind. In mindestens einer Ausführungsform können die CPU(s) 1006 ferner einen erweiterten Algorithmus zum Verwalten von Leistungszuständen implementieren, bei dem zulässige Leistungszustände und erwartete Aufwachzeiten vorgegeben werden und die Hardware/der Mikrocode bestimmt, in welchen besten Leistungszustand für einen Kern, einen Cluster und einen CCPLEX einzutreten ist. In mindestens einer Ausführungsform können die Verarbeitungskerne vereinfachte Leistungszustand-Eintrittssequenzen in Software unterstützen, wobei Arbeit an Mikrocode abgeladen wird.
  • In mindestens einer Ausführungsform können die GPU(s) 1008 eine integrierte GPU (hierin alternativ als „iGPU“ bezeichnet) beinhalten. In mindestens einer Ausführungsform können die GPU(s) 1008 programmierbar sein und für parallele Arbeitslasten effizient sein. In mindestens einer Ausführungsform können die eine oder die mehreren GPUs 1008 einen verbesserten Tensoranweisungssatz verwenden. In mindestens einer Ausführungsform können die eine oder die mehreren GPUs 1008 einen oder mehrere Streaming-Mikroprozessoren beinhalten, wobei jeder Streaming-Mikroprozessor einen Zwischenspeicher der Stufe eins („L1“) (z.B. einen L1-Zwischenspeicher mit mindestens 96 KB Speicherkapazität) beinhalten kann, und zwei oder mehr der Streaming-Mikroprozessoren können einen L2-Zwischenspeicher (z.B. einen L2-Zwischenspeicher mit einer Speicherkapazität von 512 KB) gemeinsam nutzen. In mindestens einer Ausführungsform können die eine oder die mehreren GPUs 1008 mindestens acht Streaming-Mikroprozessoren beinhalten. In mindestens einer Ausführungsform können die GPU(s) 1008 Berechnungs-Anwendungsprogrammierschnittstelle(n) (application programming interface(s) - API(s)) verwenden. In mindestens einer Ausführungsform können die GPU(s) 1008 eine oder mehrere Parallelrechenplattformen und/oder Programmiermodelle (z.B. das CUDA-Modell von NVIDIA) verwenden.
  • In mindestens einer Ausführungsform können eine oder mehrere der einen oder der mehreren GPUs 1008 für die beste Leistung in Automobil- und eingebetteten Anwendungsfällen leistungsoptimiert sein. Zum Beispiel könnten in mindestens einer Ausführungsform die eine oder die mehreren GPUs 1008 auf einer Steg-Feldeffekttansistor-Schaltung (Fin fiel-effect transistor - „FinFET“) gefertigt sein. In mindestens einer Ausführungsform kann jeder Streaming-Mikroprozessor eine Anzahl von Verarbeitungskernen mit gemischter Genauigkeit beinhalten, die in mehrere Blöcke partitioniert sind. Zum Beispiel und ohne Einschränkung könnten 64 PF32-Kerne und 32 PF64-Kerne in vier Verarbeitungsblöcke partitioniert sein. In mindestens einer Ausführungsform können jedem Verarbeitungsblock 16 FP32-Kerne, 8 FP64-Kerne, 16 INT32-Kerne, zwei NVIDIA-Tensorkerne mit gemischter Genauigkeit für Deep-Learning-Matrixarithmetik, ein Level-Null-Anweisungscache („L0“), ein Scheduler (z.B. Warp-Scheduler) oder Sequenzer, eine Dispatch-Einheit und/oder eine 64-KB-Registerbank zugewiesen sein. In mindestens einer Ausführungsform können Streaming-Mikroprozessoren unabhängige parallele Ganzzahl- und Gleitkomma-Datenpfade beinhalten, um eine effiziente Ausführung von Arbeitslasten mit einer Mischung aus Berechnung und Adressberechnungen zu ermöglichen. In mindestens einer Ausführungsform können Streaming-Mikroprozessoren eine unabhängige Thread-Planungsfähigkeit beinhalten, um eine feinkörnigere Synchronisation und Kooperation zwischen parallelen Threads zu ermöglichen. In mindestens einer Ausführungsform können Streaming-Mikroprozessoren eine kombinierte Einheit aus L1-Daten-Cache und gemeinsam genutztem Speicher beinhalten, um die Rechenleistung zu verbessern, während die Programmierung vereinfacht wird.
  • In mindestens einer Ausführungsform können eine oder mehrere der GPU(s) 1008 einen Speicher mit hoher Bandbreite (high bandwidth memory - „HBM“) und/oder ein 16-GB-HBM2-Speicherteilsystem beinhalten, um in einigen Beispielen eine Spitzenspeicherbandbreite von etwa 900 GB/Sekunde bereitzustellen. In mindestens einer Ausführungsform kann zusätzlich oder alternativ zu HBM-Speicher ein synchroner Grafik-Direktzugriffsspeicher (synchronous graphics random-access memory - „SGRAM“) verwendet werden, wie etwa ein synchroner Direktzugriffsspeicher vom Graphics-Double-Data-Rate-Typ fünf (graphics double data rate type five - „GDDR5“).
  • In mindestens einer Ausführungsform können die GPU(s) 1008 einheitliche Speichertechnologie beinhalten. In mindestens einer Ausführungsform kann die Unterstützung von Adressübersetzungsdiensten (address translation services - „ATS“) verwendet werden, um zu ermöglichen, dass die GPU(s) 1008 direkt auf Seitentabellen von CPU(s) 1006 zugreifen. In mindestens einer Ausführungsform kann, wenn die Speicherverwaltungseinheit (memory management unit - „MMU“) einer GPU der GPU(s) 1008 einen Fehler erleidet, eine Adressübersetzungsanforderung an die CPU(s) 1006 übertragen werden. Als Reaktion darauf können 2 CPUs der CPU(s) 1006 in mindestens einer Ausführungsform in ihren Seitentabellen nach einer Virtuell-auf-Physisch-Abbildung für eine Adresse suchen und die Übersetzung zurück an die GPU(s) 1008 übertragen. In mindestens einer Ausführungsform kann die einheitliche Speichertechnologie einen einzelnen einheitlichen virtuellen Adressraum für Speicher sowohl der CPU(s) 1006 als auch der GPU(s) 1008 ermöglichen, wodurch die Programmierung der GPU(s) 1008 und die Portierung von Anwendungen auf die GPU(s) 1008 vereinfacht werden.
  • In mindestens einer Ausführungsform können die GPU(s) 1008 eine beliebige Anzahl von Zugriffszählern beinhalten, welche die Häufigkeit des Zugriffs der GPU(s) 1008 auf Speicher anderer Prozessoren nachverfolgen können. In mindestens einer Ausführungsform kann der/können die Zugriffszähler dazu beitragen, sicherzustellen, dass Speicherseiten in physischen Speicher eines Prozessors verschoben werden, der am häufigsten auf Seiten zugreift, wodurch die Effizienz für Speicherbereiche, die von mehreren Prozessoren gemeinsam genutzt werden, verbessert wird.
  • In mindestens einer Ausführungsform können eines oder mehrere der SoC(s) 1004 eine beliebige Anzahl von Cache(s) 1012 beinhalten, einschließlich der hierin beschriebenen. In mindestens einer Ausführungsform könnten die Cache(s) 1012 zum Beispiel einen Level-Drei-(„L3“-)Cache beinhalten, der sowohl den CPU(s) 1006 als auch den GPU(s) 1008 zur Verfügung steht (der z.B. mit den CPU(s) 1006 und GPU(s) 1008 verbunden ist). In mindestens einer Ausführungsform können die Cache(s) 1012 einen Rückschreib-Cache beinhalten, der die Zustände von Zeilen nachverfolgen kann, wie etwa durch Verwenden eines Cache-Kohärenzprotokolls (z.B. MEI, MESI, MSI usw.). In mindestens einer Ausführungsform kann ein L3-Cache in Abhängigkeit von der Ausführungsform 4 MB Speicher oder mehr beinhalten, obwohl auch kleinere Cache-Größen verwendet werden können.
  • In mindestens einer Ausführungsform können eines oder mehrere der SoC(s) 1004 einen oder mehrere Beschleuniger 1014 beinhalten (z.B. Hardware-Beschleuniger, Software-Beschleuniger oder eine Kombination davon). In mindestens einer Ausführungsform können die SoC(s) 1004 einen Hardware-Beschleunigungscluster beinhalten, der optimierte Hardware-Beschleuniger und/oder einen großen chipinternen Speicher beinhalten kann. In mindestens einer Ausführungsform kann großer chipinterner Speicher (z.B. 4 MB SRAM) einen Hardware-Beschleunigungscluster zum Beschleunigen neuronaler Netzwerke und anderer Berechnungen ermöglichen. In mindestens einer Ausführungsform kann ein Hardware-Beschleunigungscluster verwendet werden, um die GPU(s) 1008 zu ergänzen und einige Tasks der GPU(s) 1008 auszulagern (z.B. mehr Zyklen der GPU(s) 1008 zum Durchführen anderer Tasks freizumachen). In mindestens einer Ausführungsform könnte der/könnten die Beschleuniger 1014 für zielgerichtete Arbeitslasten (z.B. Wahrnehmung, neuronale Faltungsnetzwerke (convolutional neural networks - „CNNs“), rekurrente neuronale Netzwerke (recurrent neural networks - „RNNs“) usw.) verwendet werden, die stabil genug sind, um für eine Beschleunigung geeignet zu sein. In mindestens einer Ausführungsform kann ein CNN regionsbasierte oder regionale neuronale Faltungsnetzwerke (regional convolutional neural networks - „RCNNs“) und schnelle RCNNs (wie z.B. für die Objektdetektion verwendet) oder einen anderen Typ von CNN beinhalten.
  • In mindestens einer Ausführungsform kann der/können die Beschleuniger 1014 (z.B. Hardware-Beschleunigungscluster) einen oder mehrere Deep-Learning-Beschleuniger (deep learning accelerator- „DLA“) beinhalten. DLA(s) können in mindestens einer Ausführungsform ohne Einschränkung eine oder mehrere Tensor-Verarbeitungseinheiten (Tensor Processing Units - „TPUs“) beinhalten, die so konfiguriert sein können, dass sie zusätzliche zehn Billionen Operationen pro Sekunde für Deep-Learning-Anwendungen und Inferenzieren bereitstellen. In mindestens einer Ausführungsform können die TPUs Beschleuniger sein, die zum Durchführen von Bildverarbeitungsfunktionen (z.B. für CNNs, RCNNs usw.) konfiguriert und optimiert sind. In mindestens einer Ausführungsform kann (können) der (die) DLA(s) darüber hinaus für einen bestimmten Satz neuronaler Netzwerktypen und Gleitkommaoperationen sowie für Inferenzierung optimiert sein. In mindestens einer Ausführungsform kann die Ausgestaltung der DLA(s) mehr Rechenleistung pro Millimeter bereitstellen als eine typische Universal-GPU und übertrifft typischerweise die Rechenleistung einer CPU bei weitem. In mindestens einer Ausführungsform können die TPU(s) mehrere Funktionen durchführen, einschließlich einer Einzelinstanz-Faltungsfunktion, die zum Beispiel INT8-, INT16- und FP16-Datentypen sowohl für Merkmale als auch für Gewichtungen unterstützt, sowie Postprozessorfunktionen. In mindestens einer Ausführungsform können die DLA(s) neuronale Netzwerke, insbesondere CNNs, an verarbeiteten oder unverarbeiteten Daten für beliebige einer Vielfalt von Funktionen schnell und effizient ausführen, darunter zum Beispiel und ohne Einschränkung: ein CNN für die Identifizierung und Detektion von Objekten unter Verwendung von Daten von Kamerasensoren; ein CNN für die Abstandsschätzung unter Verwendung von Daten von Kamerasensoren; ein CNN für die Detektion und Identifizierung und Detektion von Einsatzfahrzeugen unter Verwendung von Daten von Mikrofonen; ein CNN für die Gesichtserkennung und Identifizierung von Fahrzeugbesitzern unter Verwendung von Daten von Kamerasensoren; und/oder ein CNN für sicherheits- und/oder sicherungsbezogene Ereignisse.
  • In mindestens einer Ausführungsform können die DLA(s) eine beliebige Funktion der GPU(s) 1008 durchführen und durch Verwenden eines Inferenzbeschleunigers kann ein Konstrukteur zum Beispiel entweder DLA(s) oder GPU(s) 1008 für eine beliebige Funktion anvisieren. In mindestens einer Ausführungsform kann sich ein Gestalter zum Beispiel auf die Verarbeitung von CNNs und Gleitkommaoperationen an den DLA(s) konzentrieren und andere Funktionen den GPU(s) 1008 und/oder Beschleuniger(n) 1014 überlassen.
  • In mindestens einer Ausführungsform kann der/können die Beschleuniger 1014 einen programmierbaren Sichtbeschleuniger (programmable vision accelerator - „PVA“) beinhalten, der hierin alternativ als Beschleuniger für maschinelles Sehen bezeichnet werden kann. In mindestens einer Ausführungsform kann der PVA zum Beschleunigen von Algorithmen für maschinelles Sehen für weiterentwickelte Fahrerassistenzsysteme („ADAS“) 1038, autonomes Fahren, Augmented-Reality-(„AR“-)Anwendungen und/oder Virtual-Reality-(„VR“-)Anwendungen ausgestaltet und konfiguriert sein. In mindestens einer Ausführungsform kann der PVA ein Gleichgewicht zwischen Rechenleistung und Flexibilität bereitstellen. In mindestens einer Ausführungsform kann jeder PVA zum Beispiel und ohne Einschränkung eine beliebige Anzahl von Reduced-lnstruction-Set-Computer-(„RISC“-)Kernen, direkten Speicherzugriff (direct memory access - „DMA“) und/oder eine beliebige Anzahl von Vektorprozessoren beinhalten.
  • In mindestens einer Ausführungsform können die RISC-Kerne mit Bildsensoren (z.B. Bildsensoren einer der hier beschriebenen Kameras), Bildsignalprozessoren, usw. interagieren. In mindestens einer Ausführungsform kann jeder RISC-Kern eine beliebige Menge an Speicher beinhalten. In mindestens einer Ausführungsform können RISC-Kerne in Abhängigkeit von der Ausführungsform ein beliebiges von einer Reihe von Protokollen verwenden. In mindestens einer Ausführungsform können RISC-Kerne ein Echtzeitbetriebssystem (real-time operating system - „RTOS“) ausführen. In mindestens einer Ausführungsform können RISC-Kerne unter Verwendung einer oder mehrerer Vorrichtungen mit integrierten Schaltungen, anwendungsspezifischen integrierten Schaltungen („ASICs“) und/oder Speichervorrichtungen implementiert sein. In mindestens einer Ausführungsform könnten die RISC-Kerne zum Beispiel einen Anweisungscache und/oder einen eng gekoppelten RAM beinhalten.
  • In mindestens einer Ausführungsform kann ein DMA es Komponenten der PVA(s) ermöglichen, unabhängig von der/den CPU(s) 1006 auf den Systemspeicher zuzugreifen. In mindestens einer Ausführungsform kann DMA eine beliebige Anzahl von Merkmalen unterstützen, die zum Bereitstellen der Optimierung eines PVA verwendet werden, einschließlich der Unterstützung von mehrdimensionaler Adressierung und/oder zirkulärer Adressierung, ohne darauf beschränkt zu sein. In mindestens einer Ausführungsform kann DMA bis zu sechs oder mehr Dimensionen der Adressierung unterstützen, die ohne Einschränkung Blockbreite, Blockhöhe, Blocktiefe, horizontale Blockabstufung, vertikale Blockabstufung und/oder Tiefenabstufung beinhalten können.
  • In mindestens einer Ausführungsform können Vektorprozessoren programmierbare Prozessoren sein, die für eine effiziente und flexible Ausführung der Programmierung für Computer-Vision-Algorithmen ausgelegt sein können und Signalverarbeitungsfunktionen bieten. In mindestens einer Ausführungsform kann ein PVA einen PVA-Kern und zwei Vektorverarbeitungsteilsystempartitionen beinhalten. In mindestens einer Ausführungsform kann ein PVA-Kern ein Prozessor-Subsystem, DMA-Engine(s) (z.B. zwei DMA-Engines) und/oder andere Peripheriegeräte aufweisen. In mindestens einer Ausführungsform kann ein Vektorverarbeitungsteilsystem als primäre Verarbeitungs-Engine eines PVA betrieben werden und eine Vektorverarbeitungseinheit (vector processing unit - „VPU“), einen Anweisungscache und/oder Vektorspeicher (z.B. „VMEM“) beinhalten. In mindestens einer Ausführungsform kann der VPU-Kern einen digitalen Signalprozessor beinhalten, wie zum Beispiel einen digitalen Single-Instruction-Multiple-Data-(„SIMD“-)Very-Long-Instruction-Word-(„VLIW“-)Signalprozessor. In mindestens einer Ausführungsform kann eine Kombination aus SIMD und VLIW den Durchsatz und die Geschwindigkeit erhöhen.
  • In mindestens einer Ausführungsform kann jeder der Vektorprozessoren einen Anweisungscache beinhalten und an dedizierten Speicher gekoppelt sein. Daher kann in mindestens einer Ausführungsform jeder der Vektorprozessoren so konfiguriert sein, dass er unabhängig von anderen Vektorprozessoren ausgeführt wird. In mindestens einer Ausführungsform können Vektorprozessoren, die in einem konkreten PVA enthalten sind, so konfiguriert sein, dass sie Datenparallelität einsetzen. Zum Beispiel kann in mindestens einer Ausführungsform eine Vielzahl von Vektorprozessoren, die in einem einzelnen PVA enthalten ist, einen gemeinsamen Algorithmus des maschinellen Sehens ausführen, jedoch an unterschiedlichen Regionen eines Bildes. In mindestens einer Ausführungsform können die in einem konkreten PVA enthaltenen Vektorprozessoren simultan unterschiedliche Algorithmen des maschinellen Sehens an einem Bild ausführen oder auch unterschiedliche Algorithmen an sequenziellen Bildern oder Abschnitten eines Bildes ausführen. In mindestens einer Ausführungsform kann unter anderem eine beliebige Anzahl PVAs in einem Hardware-Beschleunigungscluster enthalten sein und eine beliebige Anzahl von Vektorprozessoren in jedem PVA enthalten sein. In mindestens einer Ausführungsform kann der PVA zusätzlichen Speicher für Fehlerkorrekturcode (error correcting code - „ECC“) beinhalten, um die Gesamtsystemsicherheit zu erhöhen.
  • In mindestens einer Ausführungsform kann der/können die Beschleuniger 1014 ein chipinternes Netzwerk für maschinelles Sehen und statischen Direktzugriffsspeicher (static random-access memory - „SRAM“) beinhalten, um einen SRAM mit hoher Bandbreite und niedriger Latenz für den/die Beschleuniger 1014 bereitzustellen. In mindestens einer Ausführungsform kann chipinterner Speicher mindestens 4 MB SRAM beinhalten, der zum Beispiel und ohne Einschränkung acht feldkonfigurierbare Speicherblöcke umfasst, auf die sowohl ein PVA als auch ein DLA zugreifen können. In mindestens einer Ausführungsform kann jedes Paar von Speicherblöcken eine Schnittstelle für einen weiterentwickelten Peripheriebus (advanced peripheral bus - „APB“), eine Konfigurationsschaltung, eine Steuerung und einen Multiplexer beinhalten. In mindestens einer Ausführungsform kann ein beliebiger Typ von Speicher verwendet werden. In mindestens einer Ausführungsform können ein PVA und ein DLA auf Speicher über einen Backbone zugreifen, der einem PVA und einem DLA Hochgeschwindigkeitszugriff auf Speicher bereitstellt. In mindestens einer Ausführungsform kann ein Backbone ein chipinternes Netzwerk für maschinelles Sehen beinhalten, das einen PVA und einen DLA mit Speicher zusammenschaltet (z.B. unter Verwendung eines APB).
  • In mindestens einer Ausführungsform kann ein chipinternes Netzwerk für maschinelles Sehen eine Schnittstelle beinhalten, die vor der Übertragung eines beliebigen Steuersignals/einer beliebigen Adresse/beliebiger Daten bestimmt, dass sowohl ein PVA als auch ein DLA einsatzbereite und gültige Signale bereitstellen. In mindestens einer Ausführungsform kann eine Schnittstelle separate Phasen und separate Kanäle zum Übertragen von Steuersignalen/Adressen/Daten sowie Burstartige Kommunikation für eine kontinuierliche Datenübermittlung bereitstellen. In mindestens einer Ausführungsform kann eine Schnittstelle mit den Standards International Organization for Standardization („ISO“) 26262 oder International Electrotechnical Commission („IEC“) 61508 konform sein, obwohl andere Standards und Protokolle verwendet werden können.
  • In mindestens einer Ausführungsform kann eines oder können mehrere der SoC(s) 1004 einen Echtzeit-Raytracing-Hardwarebeschleuniger aufweisen. In mindestens einer Ausführungsform kann der Echtzeitstrahlverfolgungs-Hardware-Beschleuniger verwendet werden, um schnell und effizient Positionen und Ausdehnungen von Objekten (z.B. innerhalb eines Weltmodells) zu bestimmen, um Echtzeitvisualisierungssimulationen zu erzeugen, für die RADAR-Signalinterpretation, für die Schallausbreitungssynthese und/oder -analyse, für die Simulation von SONAR-Systemen, für die allgemeine Wellenausbreitungssimulation, für den Vergleich mit LIDAR-Daten zum Zwecke der Lokalisierung und/oder für andere Funktionen und/oder für andere Verwendungen.
  • In mindestens einer Ausführungsform kann der/können die Beschleuniger 1014 ein breites Spektrum von Verwendungen für das autonome Fahren aufweisen. In mindestens einer Ausführungsform kann ein PVA für wichtige Verarbeitungsstufen im ADAS und in autonomen Fahrzeugen verwendet werden. In mindestens einer Ausführungsform passen die Fähigkeiten eines PVA gut zu algorithmischen Domänen, die eine vorhersagbare Verarbeitung bei niedriger Leistung und niedriger Latenz benötigen. Anders ausgedrückt, zeigt ein PVA eine gute Rechenleistung für halbdichte oder dichte reguläre Berechnungen, auch an kleinen Datensätzen, die vorhersagbare Laufzeiten bei niedriger Latenz und niedriger Leistung erfordern könnten. In mindestens einer Ausführungsform, wie etwa in dem Fahrzeug 1000, könnten die PVAs so ausgestaltet sein, dass sie klassische Algorithmen des maschinellen Sehens ausführen, da sie bei der Objektdetektion und beim Betreiben an Integermathematik effizient sein können.
  • Zum Beispiel wird gemäß mindestens einer Ausführungsform der Technologie ein PVA verwendet, um maschinelles Stereo-Sehen durchzuführen. In mindestens einer Ausführungsform kann in einigen Beispielen ein auf semiglobalem Abgleich basierender Algorithmus verwendet werden, obwohl dies nicht einschränkend sein soll. In mindestens einer Ausführungsform verwenden Anwendungen für das autonome Fahren auf Level 3-5 Bewegungsschätzung/Stereo-Abgleich spontan (z.B. Struktur aus Bewegung, Fußgängererkennung, Fahrspurdetektion usw.). In mindestens einer Ausführungsform kann ein PVA Funktionen des maschinellen Stereo-Sehens an Eingaben von zwei monokularen Kameras durchführen.
  • In mindestens einer Ausführungsform kann ein PVA verwendet werden, um einen dichten optischen Fluss auszuführen. Zum Beispiel könnte ein PVA in mindestens einer Ausführungsform RADAR-Rohdaten verarbeiten (z.B. unter Verwendung einer schnellen 4D-Fourier-Transformation), um verarbeitete RADAR-Daten bereitzustellen. In mindestens einer Ausführungsform wird ein PVA für die Laufzeit-Tiefenverarbeitung verwendet, indem zum Beispiel Laufzeit-Rohdaten verarbeitet werden, um verarbeitete Laufzeitdaten bereitzustellen.
  • In mindestens einer Ausführungsform kann ein DLA kann verwendet werden, um eine beliebige Art von Netzwerk auszuführen, um die Steuerung und Fahrsicherheit zu verbessern, einschließlich zum Beispiel und ohne Einschränkung ein neuronales Netzwerk, das ein Maß an Konfidenz für jede Objektdetektion ausgibt. In mindestens einer Ausführungsform kann die Konfidenz als Wahrscheinlichkeit dargestellt oder interpretiert werden oder als Bereitstellung einer relativen „Gewichtung“ jeder Detektion im Vergleich zu anderen Detektionen. In mindestens einer Ausführungsform ermöglicht ein Konfidenzmaß es einem System, weitere Entscheidungen darüber zu treffen, welche Detektionen als richtig positive Detektionen und nicht als falsch positive Detektionen betrachtet werden sollten. In mindestens einer Ausführungsform kann ein System einen Schwellenwert für die Konfidenz festlegen und nur Detektionen, die den Schwellenwert überschreiten, als richtig positive Detektionen betrachten. In einer Ausführungsform, in der ein automatisches Notbrems(automatic emergency braking - „AEB“)-System verwendet wird, würden falsch positive Erkennungen dazu führen, dass das Fahrzeug automatisch eine Notbremsung durchführt, was natürlich unerwünscht ist. In mindestens einer Ausführungsform können Detektionen mit hoher Konfidenz als Auslöser für AEB betrachtet werden. In mindestens einer Ausführungsform kann ein DLA ein neuronales Netzwerk zur Regression des Konfidenzwerts ausführen. In mindestens einer Ausführungsform kann das neuronale Netzwerk als seine Eingabe mindestens eine Teilmenge von Parametern verwenden, wie etwa die Abmessungen des Begrenzungsrahmens, die (z.B. von einem anderen Teilsystem) erlangte Grundebenenschätzung, die Ausgabe von IMU-Sensor(en) 1066, die mit der Ausrichtung des Fahrzeugs 1000 korreliert, den Abstand, die 3D-Standortschätzungen des Objekts, die von dem neuronalen Netzwerk und/oder anderen Sensoren (z.B. LIDAR-Sensor(en) 1064 oder RADAR-Sensor(en) 1060) erlangt werden, sowie andere.
  • In mindestens einer Ausführungsform können eines oder mehrere der SoC(s) 1004 einen oder mehrere Datenspeicher 1016 (z.B. Speicher) beinhalten. In mindestens einer Ausführungsform kann es sich bei den Datenspeicher(n) 1016 um chipinternen Speicher der SoC(s) 1004 handeln, der neuronale Netzwerke speichern kann, die auf den GPU(s) 1008 und/oder einem DLA ausgeführt werden sollen. In mindestens einer Ausführungsform kann die Kapazität der Datenspeicher(s) 1016 groß genug sein, um mehrere Instanzen von neuronalen Netzwerken zur Redundanz und Sicherheit zu speichern. In mindestens einer Ausführungsform kann der/können die Datenspeicher 1016 L2- oder L3-Cache(s) umfassen.
  • In mindestens einer Ausführungsform können eines oder mehrere der SoC(s) 1004 eine beliebige Anzahl von Prozessor(en) 1010 (z.B. eingebetteten Prozessoren) beinhalten. In mindestens einer Ausführungsform können die Prozessor(en) 1010 einen Booting- und Leistungsverwaltungsprozessor beinhalten, der ein dedizierter Prozessor und Teilsystem sein kann, um Booting-Leistungs- und - verwaltungsfunktionen und die damit verbundene Sicherheitsdurchsetzung zu handhaben. In mindestens einer Ausführungsform kann der Booting- und Leistungsverwaltungsprozessor ein Teil einer Booting-Sequenz der SoC(s) 1004 sein und Laufzeit-Leistungsverwaltungsdienste bereitstellen. In mindestens einer Ausführungsform kann ein Booting-Leistungs- und Verwaltungsprozessor Takt- und Spannungsprogrammierung, Unterstützung bei Übergängen des Systems in einen Zustand mit niedriger Leistung, Verwaltung von Thermo- und Temperatursensoren der SoC(s) 1004 und/oder Verwaltung von Leistungszuständen der SoC(s) 1004 bereitstellen. In mindestens einer Ausführungsform kann jeder Temperatursensor als Ringoszillator implementiert sein, dessen Ausgangsfrequenz proportional zur Temperatur ist, und die SoC(s) 1004 können Ringoszillatoren verwenden, um Temperaturen von CPU(s) 1006, GPU(s) 1008 und/oder Beschleuniger(n) 1014 zu detektieren. Falls bestimmt wird, dass Temperaturen einen Schwellenwert überschreiten, kann in mindestens einer Ausführungsform ein Booting- und Leistungsverwaltungsprozessor dann in eine Temperaturfehlerroutine eintreten und die SoC(s) 1004 in einen Zustand mit niedrigerer Leistung versetzen und/oder das Fahrzeug 1000 in einen Modus des Fahrens zu einem sicheren Halt versetzen (z.B. das Fahrzeug 1000 zu einem sicheren Halt bringen).
  • In mindestens einer Ausführungsform kann/können der/die Prozessor(en) 1010 darüber hinaus einen Satz eingebetteter Prozessoren aufweisen, die als Audioverarbeitungs-Engine dienen können, wobei es sich um ein Audio-Subsystem handeln kann, das eine vollständige Hardware-Unterstützung für Mehrkanal-Audio über mehrere Schnittstellen und eine breite und flexible Palette von Audio-I/O-Schnittstellen ermöglicht. In mindestens einer Ausführungsform ist eine Audioverarbeitungs-Engine ein dedizierter Prozessorkern mit einem digitalen Signalprozessor mit dediziertem RAM.
  • In mindestens einer Ausführungsform kann/können der/die Prozessor(en) 1010 darüber hinaus eine „always on“-Prozessor-Maschine aufweisen, die die notwendigen Hardware-Funktionen zur Unterstützung von Sensor-Management mit geringem Stromverbrauch und Aufwach-Anwendungsfälle bereitstellen kann. In mindestens einer Ausführungsform kann die stets eingeschaltete Prozessor-Engine ohne Einschränkung einen Prozessorkern, einen eng gekoppelten RAM, unterstützende Peripheriegeräte (z.B. Zeitgeber und Unterbrechungssteuerungen), verschiedene E/A-Steuerungsperipheriegeräte und Routing-Logik beinhalten.
  • In mindestens einer Ausführungsform kann/können der/die Prozessor(en) 1010 darüber hinaus eine Sicherheits-Cluster-Maschine aufweisen, die ohne Einschränkung ein dediziertes Prozessor-Subsystem zur Handhabung des Sicherheitsmanagements für Automobilanwendungen aufweist. In mindestens einer Ausführungsform kann eine Sicherheitscluster-Engine ohne Einschränkung zwei oder mehr Prozessorkerne, einen eng gekoppelten RAM, unterstützende Peripheriegeräte (z.B. Zeitgeber, eine Unterbrechungssteuerung usw.) und/oder Routing-Logik beinhalten. In einem Sicherheitsmodus können zwei oder mehr Kerne in mindestens einer Ausführungsform in einem Gleichschrittmodus arbeiten und als einzelner Kern mit einer Vergleichslogik funktionieren, um etwaige Unterschiede zwischen ihren Operationen zu detektieren. In mindestens einer Ausführungsform können die Prozessor(en) 1010 ferner eine Echtzeitkamera-Engine beinhalten, die ohne Einschränkung ein dediziertes Prozessorteilsystem zum Handhaben der Echtzeitkameraverwaltung beinhalten kann. In mindestens einer Ausführungsform können die Prozessor(en) 1010 ferner einen Signalprozessor mit hohem Dynamikbereich beinhalten, der ohne Einschränkung einen Bildsignalprozessor beinhalten kann, der eine Hardware-Engine ist, die Teil einer Kameraverarbeitungspipeline ist.
  • In mindestens einer Ausführungsform können die Prozessor(en) 1010 einen Videobildkompositor beinhalten, der ein Verarbeitungsblock sein kann (z.B. auf einem Mikroprozessor implementiert), der Videonachverarbeitungsfunktionen implementiert, die durch eine Videowiedergabeanwendung benötigt werden, um ein endgültiges Bild für das Fenster eines Wiedergabeprogramms zu erzeugen. In mindestens einer Ausführungsform kann ein Videobildkompositor eine Objektivverzeichnungskorrektur an den Weitsichtkamera(s) 1070, Rundumkamera(s) 1074 und/oder kabineninternen Überwachungskamerasensor(en) durchführen. In mindestens einer Ausführungsform werden die kabineninternen Überwachungskamerasensor(en) vorzugsweise durch ein neuronales Netzwerk überwacht, das auf einer anderen Instanz des SoC 1004 läuft und so konfiguriert ist, dass es Ereignisse in der Kabine erkennt und entsprechend reagiert. In mindestens einer Ausführungsform kann ein kabineninternes System ohne Einschränkung Lippenlesen durchführen, um den Mobilfunkdienst zu aktivieren und einen Anruf zu tätigen, E-Mails zu diktieren, ein Ziel des Fahrzeugs zu ändern, ein Infotainmentsystem des Fahrzeugs und dessen Einstellungen zu aktivieren oder zu ändern oder sprachaktiviertes Surfen im Internet bereitzustellen. In mindestens einer Ausführungsform stehen einem Fahrer bestimmte Funktionen zur Verfügung, wenn ein Fahrzeug in einem autonomen Modus betrieben wird, und sind ansonsten deaktiviert.
  • In mindestens einer Ausführungsform kann der Videobildkompositor eine verbesserte zeitliche Rauschunterdrückung sowohl für eine räumliche als auch für eine zeitliche Rauschunterdrückung aufweisen. In mindestens einer Ausführungsform, in der Bewegung in einem Video vorkommt, gewichtet die Rauschunterdrückung zum Beispiel die räumlichen Informationen entsprechend, indem sie die Gewichtungen der Informationen, die durch benachbarte Einzelbilder bereitgestellt werden, verringert. In mindestens einer Ausführungsform, in der ein Bild oder ein Abschnitt eines Bildes keine Bewegung beinhaltet, kann die durch den Videobildkompositor durchgeführte zeitliche Rauschunterdrückung Informationen aus einem vorherigen Bild verwenden, um das Rauschen in einem derzeitigen Bild zu unterdrücken.
  • In mindestens einer Ausführungsform kann ein Videobildkompositor auch so konfiguriert sein, dass er eine Stereoentzerrung an den eingegebenen Stereoobjektiv-Einzelbildern durchführt. In mindestens einer Ausführungsform kann ein Videobildkompositor ferner für die Benutzerschnittstellenzusammensetzung verwendet werden, wenn ein Desktop des Betriebssystems in Verwendung ist und die GPU(s) 1008 nicht zum kontinuierlichen Rendern neuer Oberflächen erforderlich sind. Wenn die GPU(s) 1008 eingeschaltet sind und aktiv 3D-Rendering durchführen, kann in mindestens einer Ausführungsform ein Videobildkompositor verwendet werden, um die GPU(s) 1008 abzuladen, um die Rechenleistung und Reaktionsfähigkeit zu verbessern.
  • In mindestens einer Ausführungsform können ein oder mehrere SoC der SoC(s) 1004 ferner eine serielle Mobile-Industry-Processor-Interface-(„MIPI“-)Kameraschnittstelle zum Empfangen von Videos und Eingaben von Kameras, eine Hochgeschwindigkeitsschnittstelle und/oder einen Videoeingabeblock beinhalten, der für eine Kamera und verwandte Pixeleingabefunktionen verwendet werden kann. In mindestens einer Ausführungsform können eines oder mehrere der SoC(s) 1004 ferner Eingabe/Ausgabe-Steuerung(en) beinhalten, die durch Software gesteuert werden können und zum Empfangen von E/A-Signalen verwendet werden können, die keiner bestimmten Rolle zugewiesen sind.
  • In mindestens einer Ausführungsform können ein oder mehrere SoC der SoC(s) 1004 ferner eine breite Palette von Peripherieschnittstellen beinhalten, um die Kommunikation mit Peripheriegeräten, Audiocodierern/-decodierern („Codecs“), Leistungsmanagement und/oder anderen Vorrichtungen zu ermöglichen. In mindestens einer Ausführungsform können die SoC(s) 1004 verwendet werden, um Daten von Kameras (z.B. über Gigabit-Multimedia-Serial-Link- und Ethernet-Kanäle verbunden), Sensoren (z.B. LIDAR-Sensor(en) 1064, RADAR-Sensor(en) 1060 usw., die über Ethernet-Kanäle verbunden sein können), Daten von dem Bus 1002 (z.B. Geschwindigkeit des Fahrzeugs 1000, Lenkradposition usw.), Daten von GNSS-Sensor(en) 1058 (z.B. über einen Ethernet-Bus oder einen CAN-Bus verbunden) usw. zu verarbeiten. In mindestens einer Ausführungsform können ein oder mehrere SoC der SoC(s) 1004 ferner dedizierte Massenspeichersteuerungen mit hoher Rechenleistung beinhalten, die eigene DMA-Engines beinhalten können und die verwendet werden können, um CPU(s) 1006 routinemäßige Datenverwaltungs-Tasks abzunehmen.
  • In mindestens einer Ausführungsform können die SoC(s) 1004 eine Ende-zu-Ende-Plattform mit einer flexiblen Architektur sein, die die Automatisierungslevels 3-5 überspannt und dadurch eine umfassende funktionelle Sicherheitsarchitektur bereitstellt, die Techniken des maschinellen Sehens und des ADAS für Diversität und Redundanz ausnutzt und effizient einsetzt und eine Plattform für einen flexiblen, zuverlässigen Fahr-Softwarestapel zusammen mit Deep-Learning-Werkzeugen bereitstellt. In mindestens einer Ausführungsform können die SoC(s) 1004 schneller, zuverlässiger und sogar energieeffizienter und platzeffizienter sein als herkömmliche Systeme. Zum Beispiel können in mindestens einer Ausführungsform der/die Beschleuniger 1014, wenn sie mit den CPU(s) 1006, GPU(s) 1008 und Datenspeicher(n) 1016 kombiniert sind, eine schnelle, effiziente Plattform für autonome Fahrzeuge der Levels 3-5 bereitstellen.
  • In mindestens einer Ausführungsform können Algorithmen des maschinellen Sehens auf CPUs ausgeführt werden, die unter Verwendung einer Programmiersprache auf hohem Level, wie etwa C, konfiguriert werden können, um eine große Vielfalt von Verarbeitungsalgorithmen über eine große Vielfalt von visuellen Daten auszuführen. In mindestens einer Ausführungsform sind die CPUs jedoch oft nicht dazu in der Lage, die Rechenleistungsanforderungen vieler Anwendungen des maschinellen Sehens zu erfüllen, wie zum Beispiel in Bezug auf die Ausführungszeit und den Leistungsverbrauch. In mindestens einer Ausführungsform sind viele CPUs nicht dazu in der Lage, komplexe Objektdetektionsalgorithmen in Echtzeit auszuführen, die in fahrzeuginternen ADAS-Anwendungen und in praktischen autonomen Fahrzeugen der Levels 3-5 verwendet werden.
  • Ausführungsformen, wie sie hier beschrieben sind, ermöglichen die gleichzeitige und/oder sequentielle Ausführung mehrerer neuronaler Netzwerke und die Kombination der Ergebnisse, um autonome Fahrfunktionen der Stufe 3-5 zu ermöglichen. Zum Beispiel kann in mindestens einer Ausführungsform ein CNN, das auf einem DLA oder einer diskreten GPU (z.B. GPU(s) 1020) ausgeführt wird, eine Text- und Worterkennung beinhalten, die das Lesen und Verstehen von Verkehrsschildern ermöglicht, einschließlich Schildern, für die ein neuronales Netzwerk nicht speziell trainiert worden ist. In mindestens einer Ausführungsform kann ein DLA ferner ein neuronales Netzwerk beinhalten, das dazu in der Lage ist, ein Zeichen zu identifizieren, zu interpretieren und ein semantisches Verständnis davon bereitzustellen und dieses semantische Verständnis an Pfadplanungsmodule weiterzugeben, die auf einem CPU-Komplex laufen.
  • In mindestens einer Ausführungsform können mehrere neuronale Netzwerke simultan ausgeführt werden, wie für das Fahren bei Level 3, 4 oder 5. In mindestens einer Ausführungsform kann zum Beispiel ein Warnschild mit der Aufschrift „Vorsicht: Blinkende Lichter weisen auf Vereisung hin“ zusammen mit einem elektrischen Licht durch mehrere neuronale Netzwerke unabhängig oder gemeinsam interpretiert werden. In mindestens einer Ausführungsform kann ein solches Warnschild selbst von einem ersten eingesetzten neuronalen Netzwerk (z.B. einem trainierten neuronalen Netzwerk) als Verkehrsschild identifiziert werden und kann ein Text „Blinkende Lichter weisen auf Verweisung hin“ von einem zweiten eingesetzten neuronalen Netzwerk interpretiert werden, das die Pfadplanungssoftware eines Fahrzeugs (die vorzugsweise auf einem CPU-Komplex ausgeführt wird) darüber informiert, dass, wenn blinkende Lichter erkannt werden, Vereisungen vorliegen. In mindestens einer Ausführungsform kann ein blinkendes Licht identifiziert werden, indem ein drittes eingesetztes neuronales Netzwerk über mehrere Einzelbilder hinweg betrieben wird, das eine Pfadplanungssoftware des Fahrzeugs über ein Vorhandensein (oder ein Nichtvorhandensein) von blinkenden Lichtern informiert. In mindestens einer Ausführungsform können alle drei neuronalen Netzwerke simultan laufen, wie etwa innerhalb eines DLA und/oder auf GPU(s) 1008.
  • In mindestens einer Ausführungsform kann ein CNN zur Gesichtserkennung und Fahrzeugbesitzeridentifizierung Daten von Kamerasensoren verwenden, um das Vorhandensein eines autorisierten Fahrers und/oder Besitzers des Fahrzeugs 1000 zu identifizieren. In mindestens einer Ausführungsform kann eine stets eingeschaltete Sensorverarbeitungs-Engine verwendet werden, um ein Fahrzeug zu entriegeln, wenn sich ein Besitzer einer Fahrertür nähert und Lichter einschaltet, und um in einem Sicherheitsmodus ein derartiges Fahrzeug zu deaktivieren, wenn ein Besitzer ein derartiges Fahrzeug verlässt. Auf diese Weise stellen die SoC(s) 1004 Sicherheit gegen Diebstahl und/oder Carjacking bereit.
  • In mindestens einer Ausführungsform kann ein CNN zur Detektion und Identifizierung von Einsatzfahrzeugen Daten von Mikrofonen 1096 verwenden, um Sirenen von Einsatzfahrzeugen zu detektieren und zu identifizieren. In mindestens einer Ausführungsform verwenden die SoC(s) 1004 ein CNN zum Klassifizieren von Umgebungs- und Stadtgeräuschen sowie zum Klassifizieren von visuellen Daten. In mindestens einer Ausführungsform wird ein CNN, das auf einem DLA läuft, dafür trainiert, eine relative Annäherungsgeschwindigkeit eines Einsatzfahrzeugs zu identifizieren (z.B. durch Verwenden eines Dopplereffekts). In mindestens einer Ausführungsform kann ein CNN auch dafür trainiert werden, Einsatzfahrzeuge zu identifizieren, die für ein lokales Gebiet, in dem ein Fahrzeug betrieben wird, spezifisch sind, wie durch die GNSS-Sensor(en) 1058 identifiziert. In mindestens einer Ausführungsform versucht ein CNN, wenn es in Europa betrieben wird, europäische Sirenen zu detektieren, und in Nordamerika versucht ein CNN, nur nordamerikanische Sirenen zu identifizieren. In mindestens einer Ausführungsform kann, sobald ein Einsatzfahrzeug detektiert wird, ein Steuerprogramm verwendet werden, um mit der Hilfe der Ultraschallsensor(en) 1062 eine Sicherheitsroutine für Einsatzfahrzeuge auszuführen, um ein Fahrzeug zu verlangsamen, an einen Straßenrand zu fahren, ein Fahrzeug zu parken und/oder ein Fahrzeug im Leerlauf laufen zu lassen, bis die Einsatzfahrzeuge vorbeigefahren sind.
  • In mindestens einer Ausführungsform kann das Fahrzeug 1000 CPU(s) 1018 (z.B. diskrete CPU(s) oder dCPU(s)) beinhalten, die über eine Hochgeschwindigkeitszusammenschaltung (z.B. PCIe) an die SoC(s) 1004 gekoppelt sein können. In mindestens einer Ausführungsform können die CPU(s) 1018 zum Beispiel einen X86-Prozessor beinhalten. Die CPU(s) 1018 können dazu verwendet werden, eine beliebige einer Vielfalt an Funktionen durchzuführen, einschließlich zum Beispiel des Vermittelns potenziell inkonsistenter Ergebnisse zwischen ADAS-Sensoren und SoC(s) 1004 und/oder des Überwachens des Status und Zustands der Steuerung(en) 1036 und/oder eines Infotainmentsystems auf einem Chip („Infotainment-SoC“) 1030. In mindestens einer Ausführungsform beinhalten die SoC(s) 1004 eine oder mehrere Zusammenschaltungen, und eine Zusammenschaltung kann einen Peripheral Component Interconnect Express (PCIe) beinhalten.
  • In mindestens einer Ausführungsform kann das Fahrzeug 1000 GPU(s) 1020 (z.B. diskrete GPU(s) oder dGPU(s)) beinhalten, die über eine Hochgeschwindigkeitszusammenschaltung (z.B. NVLINK-Kanal von NVIDIA) an die SoC(s) 1004 gekoppelt sein können. In mindestens einer Ausführungsform können die GPU(s) 1020 eine zusätzliche Funktionalität für künstliche Intelligenz bereitstellen, wie etwa durch Ausführen redundanter und/oder unterschiedlicher neuronaler Netzwerke, und sie können zum Trainieren und/oder Aktualisieren neuronaler Netzwerke mindestens zum Teil auf Grundlage von Eingaben (z.B. Sensordaten) von Sensoren eines Fahrzeugs 1000 verwendet werden.
  • In mindestens einer Ausführungsform kann das Fahrzeug 1000 ferner die Netzwerkschnittstelle 1024 beinhalten, die ohne Einschränkung drahtlose Antenne(n) 1026 beinhalten kann (z.B. eine oder mehrere drahtlose Antennen für unterschiedliche Kommunikationsprotokolle, wie etwa eine Mobilfunkantenne, eine Bluetooth-Antenne usw.). In mindestens einer Ausführungsform kann die Netzwerkschnittstelle 1024 verwendet werden, um eine drahtlose Verbindungsfähigkeit mit Internet-Cloud-Diensten (z.B. mit Server(n) und/oder anderen Netzwerkvorrichtungen), mit anderen Fahrzeugen und/oder mit Rechenvorrichtungen (z.B. Client-Vorrichtungen von Fahrgästen) zu ermöglichen. In mindestens einer Ausführungsform kann zum Kommunizieren mit anderen Fahrzeugen eine direkte Verknüpfung zwischen dem Fahrzeug 100 und einem anderen Fahrzeug hergestellt werden und/oder eine indirekte Verknüpfung (z.B. über Netzwerke und über das Internet) hergestellt werden. In mindestens einer Ausführungsform können direkte Verknüpfungen unter Verwendung einer Fahrzeug-zu-Fahrzeug-Kommunikationsverknüpfung bereitgestellt werden. In mindestens einer Ausführungsform kann eine Fahrzeug-zu-Fahrzeug-Kommunikationsverbindung dem Fahrzeug 1000 Informationen über Fahrzeuge in der Nähe des Fahrzeugs 1000 bereitstellen (z.B. Fahrzeuge vor, neben und/oder hinter dem Fahrzeug 1000). In mindestens einer Ausführungsform kann eine derartige vorgenannte Funktionalität Teil einer kooperativen adaptiven Geschwindigkeitssteuerungsfunktionalität des Fahrzeugs 1000 sein.
  • In mindestens einer Ausführungsform kann die Netzwerkschnittstelle 1024 ein SoC beinhalten, das eine Modulations- und Demodulationsfunktionalität bereitstellt und es den Steuerung(en) 1036 ermöglicht, über drahtlose Netzwerke zu kommunizieren. In mindestens einer Ausführungsform kann die Netzwerkschnittstelle 1024 ein Hochfrequenz-Frontend für die Aufwärtskonvertierung vom Basisband auf die Hochfrequenz und die Abwärtskonvertierung von der Hochfrequenz auf das Basisband beinhalten. In mindestens einer Ausführungsform können Frequenzkonvertierungen auf eine beliebige technisch machbare Weise durchgeführt werden. Frequenzkonvertierungen könnten zum Beispiel durch hinreichend bekannte Prozesse und/oder unter Verwendung von Überlagerungsprozessen durchgeführt werden. In mindestens einer Ausführungsform kann die Hochfrequenz-Frontend-Funktionalität durch einen separaten Chip bereitgestellt sein. In mindestens einer Ausführungsform können die Netzwerkschnittstellen eine drahtlose Funktionalität zum Kommunizieren über LTE, WCDMA, UMTS, GSM, CDMA2000, Bluetooth, Bluetooth LE, Wi-Fi, Z-Wave, ZigBee, LoRaWAN und/oder andere drahtlose Protokolle beinhalten.
  • In mindestens einer Ausführungsform kann das Fahrzeug 1000 ferner einen oder mehrere Datenspeicher 1028 beinhalten, die ohne Einschränkung chipexternen (z.B. außerhalb der SoC(s) 1004 liegenden) Speicher beinhalten können. In mindestens einer Ausführungsform kann der/können die Datenspeicher 1028 ohne Einschränkung ein oder mehrere Speicherelemente beinhalten, darunter RAM, SRAM, dynamischen Direktzugriffsspeicher (dynamic random-access memory - „DRAM“), Video-Direktzugriffsspeicher (video random-access memory - „VRAM“), Flash-Speicher, Festplatten und/oder andere Komponenten und/oder Vorrichtungen, die mindestens ein Datenbit speichern können.
  • In mindestens einer Ausführungsform kann das Fahrzeug 1000 ferner GNSS-Sensor(en) 1058 (z.B. GPS- und/oder unterstützte GPS-Sensoren) beinhalten, um bei Funktionen zur Kartierung, Wahrnehmung, Erzeugung des Belegungsgitters und/oder Pfadplanung zu helfen. In mindestens einer Ausführungsform kann eine beliebige Anzahl von GNSS-Sensor(en) 1058 verwendet werden, einschließlich zum Beispiel und ohne Einschränkung eines GPS unter Verwendung eines USB-Steckers mit einer Ethernet-zu-Seriell-Brücke (z.B. RS-232-Brücke).
  • In mindestens einer Ausführungsform kann das Fahrzeug 1000 außerdem RADAR-Sensor(en) 1060 beinhalten. In mindestens einer Ausführungsform können die RADAR-Sensor(en) 1060 durch das Fahrzeug 1000 zur Fahrzeugdetektion mit großer Reichweite verwendet werden, auch bei Dunkelheit und/oder schlechten Wetterbedingungen. In mindestens einer Ausführungsform können die RADAR-Funktionssicherheitslevel ASIL B sein. In mindestens einer Ausführungsform können die RADAR-Sensor(en) 1060 einen CAN-Bus und/oder den Bus 1002 (z.B. zum Übertragen der durch die RADAR-Sensor(en) 1060 generierten Daten) zum Steuern von und Zugriff auf Objektverfolgungsdaten verwenden, wobei in einigen Beispielen Zugriff auf Ethernet-Kanäle zum Zugreifen auf Rohdaten besteht. In mindestens einer Ausführungsform kann eine große Vielfalt von RADAR-Sensortypen verwendet werden. Zum Beispiel und ohne Einschränkung können die RADAR-Sensor(en) 1060 für die Verwendung als Front-, Heck- und Seiten-RADAR geeignet sein. In mindestens einer Ausführungsform handelt es sich bei einem oder mehreren Sensoren der RADAR-Sensor(en) 1060 um einen Impuls-Doppler-RADAR-Sensor.
  • In mindestens einer Ausführungsform können die RADAR-Sensor(en) 1060 unterschiedliche Konfigurationen beinhalten, wie etwa mit großer Reichweite und schmalem Sichtfeld, mit geringer Reichweite und breitem Sichtfeld, mit seitlicher Abdeckung mit kurzer Reichweite usw. In mindestens einer Ausführungsform kann das RADAR mit großer Reichweite für die adaptive Geschwindigkeitssteuerungsfunktionalität verwendet werden. In mindestens einer Ausführungsform können RADAR-Systeme mit großer Reichweite ein breites Sichtfeld bereitstellen, das durch zwei oder mehr unabhängige Scans realisiert wird, wie etwa innerhalb einer Reichweite von 250 m (Metern). In mindestens einer Ausführungsform können die RADAR-Sensor(en) 1060 dabei helfen, zwischen statischen und sich bewegenden Objekten zu unterscheiden, und durch das ADAS-System 1038 für den Notbremsassistenten und die Vorwärtskollisionswarnung verwendet werden. In mindestens einer Ausführungsform können die Sensor(en) 1060, die in einem RADAR-System mit großer Reichweite enthalten sind, ohne Einschränkung ein monostatisches multimodales RADAR mit mehreren (z.B. sechs oder mehr) festen RADAR-Antennen und einer Hochgeschwindigkeits-CAN- und FlexRay-Schnittstelle beinhalten. In mindestens einer Ausführungsform mit sechs Antennen können vier zentrale Antennen ein fokussiertes Strahlenmuster erzeugen, das dazu ausgestaltet ist, die Umgebung des Fahrzeugs 1000 bei höheren Geschwindigkeiten mit minimalen Störungen durch den Verkehr auf den benachbarten Fahrspuren aufzuzeichnen. In mindestens einer Ausführungsform können zwei weitere Antennen das Sichtfeld erweitern, wodurch es möglich ist, Fahrzeuge, die in eine Fahrspur des Fahrzeugs 1000 einfahren oder diese verlassen, schnell zu detektieren.
  • In mindestens einer Ausführungsform können RADAR-Systeme mit mittlerer Reichweite beispielsweise eine Reichweite von bis zu 160 m (vorne) oder 80 m (hinten) und ein Sichtfeld von bis zu 42 Grad (vorne) oder 150 Grad (hinten) beinhalten. In mindestens einer Ausführungsform können RADAR-Systeme mit kurzer Reichweite ohne Einschränkung eine beliebige Anzahl von RADAR-Sensor(en) 1060 beinhalten, die für die Installation an beiden Enden eines hinteren Stoßfängers ausgestaltet sind. Wenn das RADAR-Sensorsystem an beiden Enden eines hinteren Stoßfängers installiert ist, kann es in mindestens einer Ausführungsform zwei Strahlen erzeugen, die tote Winkel in einer rückwärtigen Richtung und neben einem Fahrzeug konstant überwachen. In mindestens einer Ausführungsform können RADAR-Systeme mit kurzer Reichweite in dem ADAS-System 1038 zur Detektion des toten Winkels und/oder zur Spurwechselassistenz verwendet werden.
  • In mindestens einer Ausführungsform kann das Fahrzeug 1000 ferner Ultraschallsensor(en) 1062 beinhalten. In mindestens einer Ausführungsform können die Ultraschallsensor(en) 1062, die an einer vorderen, einer hinteren und/oder seitlichen Stelle des Fahrzeugs 1000 positioniert sein können, für die Einparkhilfe und/oder zum Erstellen und Aktualisieren eines Belegungsgitters verwendet werden. In mindestens einer Ausführungsform kann eine große Vielfalt von Ultraschallsensor(en) 1062 verwendet werden und können unterschiedliche Ultraschallsensor(en) 1062 für unterschiedliche Detektionsreichweiten (z.B. 2,5 m, 4 m) verwendet werden. In mindestens einer Ausführungsform können die Ultraschallsensor(en) 1062 bei funktionellen Sicherheitslevels von ASIL B betrieben werden.
  • In mindestens einer Ausführungsform kann das Fahrzeug 1000 LIDAR-Sensor(en) 1064 beinhalten. In mindestens einer Ausführungsform kann der eine oder die mehreren LIDAR-Sensoren 1064 zur Objekt- und Fußgängererfassung, Notbremsung, Zusammenstoßvermeidung und/oder zu anderen Funktionen verwendet werden. In mindestens einer Ausführungsform können der eine oder die mehreren LIDAR-Sensoren 1064 auf der Funktionssicherheitsstufe ASIL B arbeiten. In mindestens einer Ausführungsform kann das Fahrzeug 1000 mehrere LIDAR-Sensoren 1064 (z.B. zwei, vier, sechs usw.) beinhalten, die einen Ethernet-Kanal verwenden können (z.B. um einem Gigabit-Ethernet-Switch Daten bereitzustellen).
  • In mindestens einer Ausführungsform können der eine oder die mehreren LIDAR-Sensoren 1064 in der Lage sein, eine Liste von Objekten und ihren Entfernungen für ein 360-Grad-Sichtfeld bereitzustellen. In mindestens einer Ausführungsform können handelsübliche LIDAR-Sensor(en) 1064 zum Beispiel eine beworbene Reichweite von ungefähr 100 m aufweisen, mit einer Genauigkeit von 2 cm bis 3 cm und mit Unterstützung für eine 100-Mbit/s-Ethernet-Verbindung. In mindestens einer Ausführungsform können ein oder mehrere nicht hervorstehende LIDAR-Sensoren verwendet werden. In einer derartigen Ausführungsform können die LIDAR-Sensor(en) 1064 eine kleine Vorrichtung beinhalten, die in eine vordere, eine hintere, eine seitliche Stelle und/oder eine Eckstelle des Fahrzeugs 1000 eingebettet sein kann. In mindestens einer Ausführungsform können die LIDAR-Sensor(en) 1064 in einer derartigen Ausführungsform ein horizontales Sichtfeld von bis zu 120 Grad und ein vertikales Sichtfeld von bis zu 35 Grad mit einer Reichweite von 200 m selbst bei Objekten mit niedrigem Reflexionsvermögen bereitstellen. In mindestens einer Ausführungsform können die an der Front montierte(n) LIDAR-Sensor(en) 1064 für ein horizontales Sichtfeld zwischen 45 Grad und 135 Grad konfiguriert sein.
  • In mindestens einer Ausführungsform können auch LIDAR-Technologien, wie etwa 3D-Flash-LIDAR, verwendet werden. In mindestens einer Ausführungsform verwendet 3D-Flash-LIDAR einen Laserblitz als Übertragungsquelle, um die Umgebung des Fahrzeugs 1000 bis zu ungefähr 200 m zu erleuchten. In mindestens einer Ausführungsform umfasst eine Flash-LIDAR-Einheit ohne Einschränkung einen Rezeptor, der die Laserimpuls-Laufzeit und das reflektierte Licht an jedem Pixel aufzeichnet, was wiederum einer Reichweite von dem Fahrzeug 1000 zu Objekten entspricht. In mindestens einer Ausführungsform kann Flash-LIDAR ermöglichen, dass mit jedem Laserblitz hochgenaue und verzeichnungsfreie Bilder der Umgebung erzeugt werden. In mindestens einer Ausführungsform können vier Flash-LIDAR-Sensoren eingesetzt werden, einer an jeder Seite des Fahrzeugs 1000. In mindestens einer Ausführungsform beinhalten 3D-Flash-LIDAR-Systeme ohne Einschränkung eine Festkörper-3D-Staring-Array-LIDAR-Kamera ohne bewegliche Teile außer einem Lüfter (z.B. eine nicht scannende LIDAR-Vorrichtung). In mindestens einer Ausführungsform kann die Flash-LIDAR-Vorrichtung einen 5-Nanosekunden-Laserimpuls der Klasse I (augensicher) pro Bild verwenden und das reflektierte Laserlicht als 3D-Reichweitenpunktwolke und gemeinsam registrierte Intensitätsdaten erfassen.
  • In mindestens einer Ausführungsform kann das Fahrzeug 1000 ferner IMU-Sensor(en) 1066 beinhalten. In mindestens einer Ausführungsform können die IMU-Sensor(en) 1066 in einer Mitte einer Hinterachse des Fahrzeugs 1000 angeordnet sein. In mindestens einer Ausführungsform können die IMU-Sensor(en) 1066 zum Beispiel und ohne Einschränkung (einen) Beschleunigungsmesser, (ein) Magnetometer, Gyroskop(e), einen Magnetkompass, Magnetkompasse und/oder andere Sensortypen beinhalten. In mindestens einer Ausführungsform, wie etwa bei sechsachsigen Anwendungen, können die IMU-Sensor(en) 1066 ohne Einschränkung Beschleunigungsmesser und Gyroskope beinhalten. In mindestens einer Ausführungsform, wie etwa bei neunachsigen Anwendungen, können die IMU-Sensor(en) 1066 ohne Einschränkung Beschleunigungsmesser, Gyroskope und Magnetometer beinhalten.
  • In mindestens einer Ausführungsform können die IMU-Sensor(en) 1066 als miniaturisiertes GPS-gestütztes Trägheitsnavigationssystem (GPS-Aided Inertial Navigation System - „GPS/INS“) mit hoher Rechenleistung implementiert sein, das Trägheitssensoren von mikroelektromechanischen Systemen (micro-electromechanical systems - „MEMS“), einen hochempfindlichen GPS-Empfänger und weiterentwickelte Kalman-Filteralgorithmen kombiniert, um Schätzungen von Position, Geschwindigkeit und Lage bereitzustellen. In mindestens einer Ausführungsform können die IMU-Sensor(en) 1066 es dem Fahrzeug 1000 ermöglichen, seinen Kurs zu schätzen, ohne dass Eingaben von einem Magnetsensor erforderlich sind, indem Änderungen der Geschwindigkeit direkt von einem GPS beobachtet und an die IMU-Sensor(en) 1066 korreliert werden. In mindestens einer Ausführungsform können die IMU-Sensor(en) 1066 und GNSS-Sensor(en) 1058 in einer einzelnen integrierten Einheit kombiniert sein.
  • In mindestens einer Ausführungsform kann das Fahrzeug 1000 Mikrofon(e) 1096 beinhalten, die im Fahrzeug 1000 und/oder darum herum platziert sind. In mindestens einer Ausführungsform können die Mikrofon(e) 1096 unter anderem zur Detektion und Identifizierung von Einsatzfahrzeugen verwendet werden.
  • In mindestens einer Ausführungsform kann das Fahrzeug 1000 ferner eine beliebige Anzahl von Kameratypen beinhalten, darunter Stereokamera(s) 1068, Weitwinkelkamera(s) 1070, Infrarotkamera(s) 1072, Rundumkamera(s) 1074, Langstreckenkamera(s) 1098, Mittelstreckenkamera(s) 1076 und/oder andere Kameratypen. In mindestens einer Ausführungsform können Kameras verwendet werden, um Bilddaten um die gesamte Peripherie des Fahrzeugs 1000 herum zu erfassen. Welche Typen von Kameras verwendet werden, hängt in mindestens einer Ausführungsform von dem Fahrzeug 1000 ab. In mindestens einer Ausführungsform kann eine beliebige Kombination von Kameratypen verwendet werden, um die notwendige Abdeckung um das Fahrzeug 1000 herum bereitzustellen. In mindestens einer Ausführungsform kann eine Anzahl von eingesetzten Kameras in Abhängigkeit von der Ausführungsform unterschiedlich sein. In mindestens einer Ausführungsform könnte das Fahrzeug 1000 zum Beispiel sechs Kameras, sieben Kameras, zehn Kameras, zwölf Kameras oder eine andere Anzahl von Kameras beinhalten. In mindestens einer Ausführungsform können Kameras beispielsweise und ohne Einschränkung Gigabit-Multimedia-Serial-Link- („GMSL“-) und/oder Gigabit-Ethernet-Kommunikation unterstützen. In mindestens einer Ausführungsform könnte jede Kamera so sein wie bereits hierin in Bezug auf 10A und 10B detaillierter beschrieben.
  • In mindestens einer Ausführungsform kann das Fahrzeug 1000 ferner Schwingungssensor(en) 1042 beinhalten. In mindestens einer Ausführungsform können die Schwingungssensor(en) 1042 Schwingungen von Komponenten des Fahrzeugs 1000, wie etwa Achse(n), messen. Zum Beispiel können in mindestens einer Ausführungsform Änderungen der Schwingungen eine Änderung des Straßenbelags angeben. Wenn zwei oder mehr Schwingungssensoren 1042 verwendet werden, können in mindestens einer Ausführungsform die Unterschiede zwischen den Schwingungen verwendet werden, um die Reibung oder den Schlupf des Straßenbelags zu bestimmen (z.B., wenn ein Unterschied der Schwingung zwischen einer leistungsbetriebenen Achse und einer sich frei drehenden Achse besteht).
  • In mindestens einer Ausführungsform kann das Fahrzeug 1000 das ADAS-System 1038 beinhalten. In mindestens einer Ausführungsform kann das ADAS-System 1038 in einigen Beispielen ohne Einschränkung ein SoC beinhalten. In mindestens einer Ausführungsform kann das ADAS-System 1038 ohne Einschränkung eine beliebige Anzahl und Kombination eines Systems zur autonomen/adaptiven/automatischen Steuerung der Geschwindigkeit (autonomous/adaptive/automatic cruise control - „ACC“), eines Systems zur kooperativen adaptiven Geschwindigkeitssteuerung (cooperative adaptive cruise control - „CACC“), eines Systems zur Vorwärtszusammenstoßwarnung (forward crash warning - „FCW“), eines automatischen Systems zur Notbremsung („AEB“), eines Systems zur Spurverlassenswarnung („LDW“), eines Systems zur Spurhalteassistenz (lane keep assist - „LKA“), eines Systems zur Totwinkelwarnung (blind spot warning - „BSW“), eines Systems zur Querverkehrswarnung (rear crosstraffic warning - „RCTW“), eines Systems zur Kollisionswarnung (collision warning - „CW“), eines Systems zur Spurzentrierung (lane centering - „LC“) und/oder anderer Systeme, Merkmale und/oder Funktionen beinhalten.
  • In mindestens einer Ausführungsform kann das ACC-System RADAR-Sensor(en) 1060, LIDAR-Sensor(en) 1064 und/oder eine beliebige Anzahl von Kamera(s) verwenden. In mindestens einer Ausführungsform kann das ACC-System ein Längs-ACC-System und/oder ein Quer-ACC-System beinhalten. In mindestens einer Ausführungsform überwacht und steuert ein Längs-ACC-System den Abstand zu einem anderen Fahrzeug, das sich unmittelbar vor dem Fahrzeug 1000 befindet, und es stellt die Geschwindigkeit des Fahrzeugs 1000 automatisch ein, um einen sicheren Abstand zu vorausfahrenden Fahrzeugen einzuhalten. In mindestens einer Ausführungsform führt ein Quer-ACC-System eine Abstandshaltung durch und es rät dem Fahrzeug 1000, die Fahrspur zu wechseln, wenn dies notwendig ist. In mindestens einer Ausführungsform steht eine Quer-ACC mit anderen ADAS-Anwendungen, wie etwa LC und CW, in Bezug.
  • In mindestens einer Ausführungsform verwendet ein CACC-System Informationen von anderen Fahrzeugen, die über die Netzwerkschnittstelle 1024 und/oder die drahtlose(n) Antenne(n) 1026 von anderen Fahrzeugen über eine drahtlose Verbindung oder indirekt über eine Netzwerkverbindung (z.B. über das Internet) empfangen werden können. In mindestens einer Ausführungsform können direkte Verknüpfungen durch eine Fahrzeug-zu-Fahrzeug- (vehicle-to-vehicle - „V2V“-) Kommunikationsverknüpfung bereitgestellt werden, während indirekte Verknüpfungen durch eine Infrastruktur-zu-Fahrzeug- (infrastructure-to-vehicle - „I2V“-) Kommunikationsverknüpfung bereitgestellt werden können. Im Allgemeinen stellt V2V-Kommunikation Informationen über unmittelbar vorausfahrende Fahrzeuge (z.B. Fahrzeuge, die sich unmittelbar vor dem und auf derselben Spur wie das Fahrzeug 1000 befinden) bereit, während I2V-Kommunikation Informationen über weiter entfernt vorausfahrenden Verkehr bereitstellt. In mindestens einer Ausführungsform kann ein CACC-System entweder eines oder beides von I2V- und V2V-Informationsquellen beinhalten. In mindestens einer Ausführungsform kann ein CACC-System angesichts der Informationen über Fahrzeuge vor dem Fahrzeug 1000 zuverlässiger sein und es hat das Potenzial, die Gleichmäßigkeit des Verkehrsflusses zu verbessern und Staus auf der Straße zu reduzieren.
  • In mindestens einer Ausführungsform ist ein FCW-System so ausgestaltet, dass es einen Fahrer vor einer Gefahr warnt, sodass ein derartiger Fahrer eine korrigierende Maßnahme ergreifen kann. In mindestens einer Ausführungsform verwendet ein FCW-System eine nach vorn gerichtete Kamera und/oder RADAR-Sensor(en) 1060, die an einen dedizierten Prozessor, DSP, FPGA und/oder ASIC gekoppelt sind, das heißt elektrisch gekoppelt, um eine Rückmeldung des Fahrers bereitzustellen, wie etwa eine Anzeige, einen Lautsprecher und/oder eine vibrierende Komponente. In mindestens einer Ausführungsform kann ein FCW-System eine Warnung bereitstellen, wie etwa in Form eines Tons, einer visuellen Warnung, einer Schwingung und/oder eines schnellen Bremsimpulses.
  • In mindestens einer Ausführungsform detektiert ein AEB-System eine drohende Vorwärtskollision mit einem anderen Fahrzeug oder einem anderen Objekt und es kann automatisch die Bremsen betätigen, falls ein Fahrer nicht innerhalb eines vorgegebenen Zeit- oder Abstandsparameters eine korrigierende Maßnahme ergreift. In mindestens einer Ausführungsform kann das AEB-System nach vorn gerichtete Kamera(s) und/oder RADAR-Sensor(en) 1060 verwenden, die an einen dedizierten Prozessor, DSP, FPGA und/oder ASIC gekoppelt sind. Wenn ein AEB-System eine Gefahr detektiert, warnt es in mindestens einer Ausführungsform typischerweise zuerst einen Fahrer, um eine korrigierende Maßnahme zu ergreifen, um eine Kollision zu vermeiden, und falls dieser Fahrer keine korrigierende Maßnahme ergreift, kann dieses AEB-System automatisch die Bremsen in dem Bestreben betätigen, einen Aufprall einer vorhergesagten Kollision zu verhindern oder mindestens abzuschwächen. In mindestens einer Ausführungsform kann das AEB-System Techniken wie etwa dynamische Bremsunterstützung und/oder Bremsung aufgrund eines bevorstehenden Zusammenstoßes beinhalten.
  • In mindestens einer Ausführungsform stellt ein LDW-System optische, akustische und/oder fühlbare Warnungen bereit, wie etwa Lenkrad- oder Sitzvibrationen, um einen Fahrer zu warnen, wenn das Fahrzeug 1000 die Spurmarkierungen überquert. In mindestens einer Ausführungsform wird ein LDW-System nicht aktiviert, wenn ein Fahrer ein absichtliches Verlassen der Fahrspur angibt, wie etwa durch Betätigen des Blinkers. In mindestens einer Ausführungsform kann ein LDW-System nach vorn und zur Seite gerichtete Kameras verwenden, die an einen dedizierten Prozessor, DSP, FPGA und/oder ASIC gekoppelt sind, das heißt elektrisch gekoppelt, um eine Rückmeldung des Fahrers bereitzustellen, wie etwa eine Anzeige, einen Lautsprecher und/oder eine vibrierende Komponente. In mindestens einer Ausführungsform ist ein LKA-System eine Variation eines LDW-Systems. In mindestens einer Ausführungsform stellt ein LKA-System eine Lenkeingabe oder eine Bremsung bereit, um das Fahrzeug 1000 zu korrigieren, falls das Fahrzeug 1000 beginnt, seine Fahrspur zu verlassen.
  • In mindestens einer Ausführungsform detektiert und warnt ein BSW-System einen Fahrer vor Fahrzeugen in einem toten Winkel eines Automobils. In mindestens einer Ausführungsform kann das BSW-System einen visuellen, akustischen und/oder taktilen Alarm bereitstellen, um anzugeben, dass das Einfädeln in oder Wechseln von Fahrspuren unsicher ist. In mindestens einer Ausführungsform kann ein BSW-System eine zusätzliche Warnung bereitstellen, wenn ein Fahrer einen Blinker verwendet. In mindestens einer Ausführungsform kann ein BSW-System nach hinten gerichtete Kamera(s) und/oder RADAR-Sensor(en) 1060 verwenden, die an einen dedizierten Prozessor, einen dedizierten DSP, ein dediziertes FPGA und/oder eine dedizierte ASIC gekoppelt sind, die elektrisch mit einer Rückmeldung des Fahrers, wie etwa einer Anzeige, einem Lautsprecher und/oder einer vibrierenden Komponente, gekoppelt sind.
  • In mindestens einer Ausführungsform kann ein RCTW-System eine visuelle, akustische und/oder taktile Benachrichtigung bereitstellen, wenn ein Objekt außerhalb der Reichweite einer Heckkamera detektiert wird, wenn das Fahrzeug 1000 rückwärtsfährt. In mindestens einer Ausführungsform beinhaltet ein RCTW-System ein AEB-System, um sicherzustellen, dass Fahrzeugbremsen betätigt werden, um einen Zusammenstoß zu vermeiden. In mindestens einer Ausführungsform kann ein RCTW-System einen oder mehrere nach hinten gerichtete RADAR-Sensor(en) 1060 verwenden, die an einen dedizierten Prozessor, DSP, FPGA und/oder ASIC gekoppelt sind, das heißt elektrisch gekoppelt, um eine Rückmeldung des Fahrers bereitzustellen, wie etwa eine Anzeige, einen Lautsprecher und/oder eine vibrierende Komponente.
  • In mindestens einer Ausführungsform können herkömmliche ADAS-Systeme anfällig für falsch positive Ergebnisse sein, die für den Fahrer ärgerlich und ablenkend sein können, aber typischerweise nicht katastrophal sind, da herkömmliche ADAS-Systeme einen Fahrer warnen und es diesem Fahrer ermöglichen, zu entscheiden, ob wirklich eine Sicherheitsbedingung vorliegt, und entsprechend zu handeln. In mindestens einer Ausführungsform entscheidet das Fahrzeug 1000 im Falle von widersprüchlichen Ergebnissen selbst, ob das Ergebnis eines primären Computers oder eines sekundären Computers (z.B. einer ersten Steuerung oder einer zweiten Steuerung der Steuerungen 1036) zu beachten ist. In mindestens einer Ausführungsform kann das ADAS-System 1038 zum Beispiel ein Reserve- und/oder sekundärer Computer sein, der einem Rationalitätsmodul eines Reserve-Computers Wahrnehmungsinformationen bereitstellt. In mindestens einer Ausführungsform kann ein Rationalitätsmonitor eines Reserve-Computers redundante diverse Software auf Hardware-Komponenten ausführen, um Fehler in der Wahrnehmung und bei dynamischen Fahr-Tasks zu detektieren. In mindestens einer Ausführungsform können die Ausgaben aus dem ADAS-Systems 1038 einer Überwachungs-MCU bereitgestellt werden. Falls Ausgaben aus einem primären Computer und Ausgaben aus einem sekundären Computer einander widersprechen, bestimmt eine Überwachungs-MCU in mindestens einer Ausführungsform, wie der Widerspruch beizulegen ist, um einen sicheren Betrieb sicherzustellen.
  • In mindestens einer Ausführungsform kann ein Primärcomputer so ausgestaltet sein, dass er der übergeordneten MCU einen Vertrauenswert liefert, der das Vertrauen des Primärcomputers in das gewählte Ergebnis angibt. Falls diese Konfidenzbewertung einen Schwellenwert überschreitet, kann diese Überwachungs-MCU in mindestens einer Ausführungsform der Führung dieses primären Computers folgen, unabhängig davon, ob dieser sekundäre Computer ein widersprüchliches oder inkonsistentes Ergebnis bereitstellt. In mindestens einer Ausführungsform, in der eine Konfidenzbewertung einen Schwellenwert nicht erreicht und der primäre und der sekundäre Computer unterschiedliche Ergebnisse angeben (z.B. einen Widerspruch), kann eine Überwachungs-MCU zwischen den Computern vermitteln, um ein zweckmäßiges Resultat zu bestimmen.
  • In mindestens einer Ausführungsform kann eine Überwachungs-MCU so konfiguriert sein, dass sie neuronale(s) Netzwerk(e) ausführt, die dafür trainiert und konfiguriert sind, mindestens zum Teil auf Grundlage von Ausgaben aus einem primären Computer und Ausgaben aus einem sekundären Computer die Bedingungen zu bestimmen, unter denen dieser sekundäre Computer Fehlalarme bereitstellt. In mindestens einer Ausführungsform können neuronale Netzwerk(e) in einer Überwachungs-MCU lernen, wann der Ausgabe eines sekundären Computers vertraut werden kann und wann nicht. Wenn dieser sekundäre Computer zum Beispiel in mindestens einer Ausführungsform ein RADAR-basiertes FCW-System ist, können neuronale Netzwerk(e) in einer Überwachungs-MCU lernen, wann ein FCW-System metallische Objekte identifiziert, die eigentlich keine Gefahren sind, wie etwa ein Abflussgitter oder ein Gullydeckel, das/der einen Alarm auslöst. Wenn ein sekundärer Computer ein kamerabasiertes LDW-System ist, kann in mindestens einer Ausführungsform ein neuronales Netzwerk in einer Überwachungs-MCU lernen, die LDW außer Kraft setzen, wenn Fahrradfahrer oder Fußgänger vorhanden sind und ein Verlassen der Fahrspur tatsächlich ein sicherstes Manöver ist. In mindestens einer Ausführungsform kann eine Überwachungs-MCU mindestens eines von einem DLA oder einer GPU beinhalten, der/die zum Ausführen von neuronalen Netzwerk(en) mit assoziiertem Speicher geeignet ist. In mindestens einer Ausführungsform kann die Überwachungs-MCU eine Komponente des/der SoC(s) 1004 umfassen und/oder in einer solchen enthalten sein.
  • In mindestens einer Ausführungsform kann das ADAS-System 1038 einen sekundären Computer beinhalten, der die ADAS-Funktionalität unter Verwendung der traditionellen Regeln des maschinellen Sehens durchführt. In mindestens einer Ausführungsform kann dieser sekundäre Computer klassische Regeln des maschinellen Sehens (wenn-dann) verwenden und das Vorhandensein eines oder mehrerer neuronaler Netzwerke in einer Überwachungs-MCU kann die Zuverlässigkeit, Sicherheit und Rechenleistung verbessern. Zum Beispiel macht in mindestens einer Ausführungsform die diverse Implementation und absichtliche Nicht-Identität ein Gesamtsystem fehlertoleranter, insbesondere gegenüber Fehlern, die durch die Funktionalität von Software (oder Software-Hardware-Schnittstellen) verursacht werden. Falls zum Beispiel in mindestens einer Ausführungsform ein Software-Bug oder -Fehler in der auf einem primären Computer laufenden Software vorliegt und ein nicht identischer Software-Code, der auf einem sekundären Computer läuft, ein konsistentes Gesamtergebnis bereitstellt, dann kann eine Überwachungs-MCU eine größere Konfidenz dafür aufweisen, dass ein Gesamtergebnis korrekt ist und ein Bug in der Software oder Hardware auf diesem primären Computer keinen wesentlichen Fehler verursacht.
  • In mindestens einer Ausführungsform kann eine Ausgabe des ADAS-Systems 1038 in einen Wahrnehmungsblock eines primären Computers und/oder in einen Block für dynamische Fahr-Tasks eines primären Computers eingespeist werden. Falls das ADAS-System 1038 zum Beispiel eine Vorwärtszusammenstoßwarnung aufgrund eines unmittelbar vorausliegenden Objekts angibt, kann ein Wahrnehmungsblock in mindestens einer Ausführungsform diese Information beim Identifizieren von Objekten verwenden. In mindestens einer Ausführungsform kann ein sekundärer Computer ein eigenes neuronales Netzwerk aufweisen, das trainiert wird und somit ein Risiko von falsch positiven Ergebnissen reduziert, wie hierin beschrieben.
  • In mindestens einer Ausführungsform kann das Fahrzeug 1000 ferner ein Infotainment-SoC 1030 (z.B. ein fahrzeuginternes Infotainment-System (in-vehicle infotainment system - IVI-System)) beinhalten. Obwohl als es als ein SoC veranschaulicht und beschrieben ist, kann das Infotainment-SoC 1030 in mindestens einer Ausführungsform kein SoC sein und ohne Einschränkung zwei oder mehr diskrete Komponenten beinhalten. In mindestens einer Ausführungsform kann das Infotainment-SoC 1030 ohne Einschränkung eine Kombination aus Hardware und Software beinhalten, die verwendet werden kann, um dem Fahrzeug 1000 Audio (z.B. Musik, einen persönlichen digitalen Assistenten, Navigationsanweisungen, Nachrichten, Radio usw.), Video (z.B. TV, Filme, Streaming usw.), Telefon (z.B. Freisprechen), Netzwerkverbindungsfähigkeit (z.B. LTE, WiFi usw.) und/oder Informationsdienste (z.B. Navigationssysteme, Rückwärtseinparkhilfe, ein Radiodatensystem, fahrzeugbezogene Informationen wie etwa Kraftstofffüllstand, insgesamt zurückgelegte Strecke, Bremskraftstofffüllstand, Ölfüllstand, Tür öffnen/schließen, Luftfilterinformationen usw.) bereitzustellen. Das Infotainment-SoC 1030 könnte zum Beispiel Radios, Plattenspieler, Navigationssysteme, Videowiedergabevorrichtungen, USB- und Bluetooth-Verbindungsfähigkeit, Carputer, In-Car-Entertainment, WiFi, Audiosteuerelemente am Lenkrad, ein Freisprech-Sprachsteuerelement, eine Heads-up-Anzeige (heads-up display- „HUD“), eine HMI-Anzeige 1034, eine Telematikvorrichtung, ein Steuerfeld (z.B. zum Steuern von und/oder Interagieren mit verschiedenen Komponenten, Merkmalen und/oder Systemen) und/oder andere Komponenten beinhalten. In mindestens einer Ausführungsform kann das Infotainment-SoC 1030 ferner verwendet werden, um Benutzer(n) des Fahrzeugs 1000 Informationen (z.B. visuell und/oder akustisch) bereitzustellen, wie etwa Informationen von dem ADAS-System 1038, Informationen zum autonomen Fahren, wie etwa geplante Fahrzeugmanöver, Trajektorien, Umgebungsinformationen (z.B. Kreuzungsinformationen, Fahrzeuginformationen, Straßeninformationen usw.) und/oder andere Informationen.
  • In mindestens einer Ausführungsform kann das Infotainment-SoC 1030 eine beliebige Menge und einen beliebigen Typ von GPU-Funktionalität beinhalten. In mindestens einer Ausführungsform kann das Infotainment-SoC 1030 über den Bus 1002 mit anderen Vorrichtungen, Systemen und/oder Komponenten des Fahrzeugs 1000 kommunizieren. In mindestens einer Ausführungsform kann das Infotainment-SoC 1030 an eine Überwachungs-MCU gekoppelt sein, sodass eine GPU eines Infotainment-Systems einige Selbstfahrfunktionen ausführen kann, falls die primäre(n) Steuerung(en) 1036 (z.B. primäre und/oder Reserve-Computer des Fahrzeugs 1000) ausfallen. In mindestens einer Ausführungsform kann das Infotainment-SoC 1030 das Fahrzeug 1000 in einen Modus des Fahrens zu einem sicheren Halt versetzen, wie hierin beschrieben.
  • In mindestens einer Ausführungsform kann das Fahrzeug 1000 ferner ein Kombiinstrument 1032 (z.B. ein digitales Armaturenbrett, ein elektronisches Kombiinstrument, eine digitale Instrumententafel usw.) beinhalten. In mindestens einer Ausführungsform kann das Kombiinstrument 1032 ohne Einschränkung eine Steuerung und/oder einen Supercomputer (z.B. eine diskrete Steuerung oder einen diskreten Supercomputer) beinhalten. In mindestens einer Ausführungsform kann das Kombiinstrument 1032 ohne Einschränkung eine beliebige Anzahl und Kombination eines Satzes von Messausrüstung beinhalten, wie etwa Geschwindigkeitsmesser, Kraftstoffstand, Öldruck, Drehzahlmesser, Wegstreckenzähler, Blinker, Schaltknüppelpositionsangabe, Sicherheitsgurt-Warnleuchte(n), Feststellbremsen-Warnleuchte(n), Motorfehlfunktionsleuchte(n), Informationen über ergänzende Rückhaltesysteme (z.B. Airbags), Beleuchtungssteuerelemente, Sicherheitssystemsteuerelemente, Navigationsinformationen usw. In einigen Beispielen können Informationen angezeigt und/oder von dem Infotainment-SoC 1030 und dem Kombiinstrument 1032 gemeinsam genutzt werden. In mindestens einer Ausführungsform kann das Kombiinstrument 1032 als Teil des Infotainment-SoC 1030 enthalten sein oder umgekehrt.
  • Die Inferenz- und/oder Trainingslogik 715 wird verwendet, um Inferenzierungs- und/oder Trainingsoperationen durchzuführen, die mit einer oder mehreren Ausführungsformen assoziiert sind. Details bezüglich der Inferenz- und/oder Trainingslogik 715 sind hierin in Verbindung mit 7A und/oder 7B bereitgestellt. In mindestens einer Ausführungsform kann die Inferenz- und/oder Trainingslogik 715 in dem System aus 10C für Inferenzierungs- oder Vorhersageoperationen zumindest teilweise basierend auf Gewichtungsparametern verwendet werden, die unter Verwendung von hierin beschriebenen Trainingsoperationen für neuronale Netzwerke, Funktionen und/oder Architekturen für neuronale Netzwerke oder Anwendungsfälle für neuronale Netzwerke berechnet wurden.
  • In mindestens einer Ausführungsform können solche Komponenten verwendet werden, um Bildsegmentierung durchzuführen, wie oben erörtert, beispielsweise in Bezug auf ein System von 1 oder 2 oder Prozesse von 4 oder 5. In mindestens einer Ausführungsform kann dies die Verwendung eines oder mehrerer erster neuronaler Netzwerke beinhalten, um zu bewirken, dass ein Lichteffekt auf ein oder mehrere Objekte in einem oder mehreren Bildern angewendet wird, die zumindest teilweise auf synthetisch erzeugten Bildern des einen oder der mehreren Objekte basieren.
  • 10D ist eine Darstellung eines Systems zur Kommunikation zwischen cloudbasierten Server(n) und dem autonomen Fahrzeug 1000 aus 10A gemäß mindestens einer Ausführungsform. In mindestens einer Ausführungsform kann das System ohne Einschränkung den/die Server 1078, die Netzwerk(e) 1090 und eine beliebige Anzahl und einen beliebigen Typ von Fahrzeugen, einschließlich des Fahrzeugs 1000, beinhalten. In mindestens einer Ausführungsform können der oder die Server 1078 ohne Einschränkung eine Vielzahl von GPUs 1084(A)-1084(H) (hierin zusammen als GPUs 1084 bezeichnet), PCle-Switches 1082(A)-1082(D) (hierin zusammen als PCIe-Switches 1082 bezeichnet) und/oder CPUs 1080(A)-1080(B) (hierin zusammen als CPUs 1080 bezeichnet) beinhalten. In mindestens einer Ausführungsform können die GPUs 1084, CPUs 1080 und PCIe-Switches 1082 mit Hochgeschwindigkeitszusammenschaltungen zusammengeschaltet sein, wie zum Beispiel und ohne Einschränkung den NVLink-Schnittstellen 1088, die von NVIDIA entwickelt wurden, und/oder PCIe-Verbindungen 1086. In mindestens einer Ausführungsform sind die GPUs 1084 über ein NVLink- und/oder NVSwitch-SoC verbunden und die GPUs 1084 und die PCle-Switches 1082 über PCIe-Zusammenschaltungen verbunden. Obwohl acht GPUs 1084, zwei CPUs 1080 und vier PCle-Switches 1082 veranschaulicht sind, soll dies nicht einschränkend sein. In mindestens einer Ausführungsform kann jeder des/der Server(s) 1078 ohne Einschränkung eine beliebige Anzahl von GPUs 1084, CPUs 1080 und/oder PCIe-Switches 1082 in beliebiger Kombination beinhalten. Zum Beispiel könnte(n) in mindestens einer Ausführungsform der/die Server 1078 jeweils acht, sechzehn, zweiunddreißig und/oder mehr GPUs 1084 beinhalten.
  • In mindestens einer Ausführungsform können der oder die Server 1078 über die Netzwerk(e) 1090 und von Fahrzeugen Bilddaten empfangen, die Bilder darstellen, die unerwartete oder veränderte Straßenzustände zeigen, wie etwa kürzlich begonnene Straßenarbeiten. In mindestens einer Ausführungsform kann der/können die Server 1078 über die Netzwerk(e) 1090 und an die Fahrzeuge neuronale Netzwerke 1092, aktualisiert oder anderweitig, und/oder Karteninformationen 1094 übertragen, einschließlich ohne Einschränkung Informationen bezüglich Verkehrs- und Straßenbedingungen. In mindestens einer Ausführungsform können Aktualisierungen der Karteninformationen 1094 ohne Einschränkung Aktualisierungen für die HD-Karte 1022 beinhalten, wie etwa Informationen bezüglich Baustellen, Schlaglöchern, Umleitungen, Überschwemmungen und/oder anderer Hindernisse. In mindestens einer Ausführungsform können die neuronalen Netzwerke 1092 und/oder Karteninformationen 1094 aus einem neuen Training und/oder Erfahrungen resultiert haben, die in Daten dargestellt werden, die von einer beliebigen Anzahl von Fahrzeugen in einer Umgebung empfangen wurden, und/oder mindestens zum Teil auf Training basieren, das in einem Rechenzentrum (z.B. unter Verwendung von den Server(n) 1078 und/oder anderen Servern) durchgeführt wurde.
  • In mindestens einer Ausführungsform können der oder die Server 1078 verwendet werden, um Modelle zum maschinellen Lernen (z.B. neuronale Netzwerke) zumindest teilweise basierend auf Trainingsdaten zu trainieren. In mindestens einer Ausführungsform können die Trainingsdaten durch Fahrzeuge erzeugt werden und/oder in einer Simulation (z.B. unter Verwendung einer Spiele-Engine) erzeugt werden. In mindestens einer Ausführungsform wird eine beliebige Menge von Trainingsdaten mit Tags versehen (z.B., wenn das assoziierte neuronale Netzwerk von überwachtem Lernen profitiert) und/oder einer anderen Vorverarbeitung unterzogen. In mindestens einer Ausführungsform wird eine beliebige Menge von Trainingsdaten weder mit Tags versehen noch vorverarbeitet (z.B., wenn das damit assoziierte neuronale Netzwerk kein überwachtes Lernen erfordert). In mindestens einer Ausführungsform können, sobald die Modelle des maschinellen Lernens trainiert sind, die Modelle des maschinellen Lernens durch Fahrzeuge verwendet werden (z.B. über die Netzwerk(e) 1090 an Fahrzeuge übertragen werden) und/oder die Modelle des maschinellen Lernens können durch den/die Server 1078 verwendet werden, um Fahrzeuge aus der Ferne zu überwachen.
  • In mindestens einer Ausführungsform kann der/können die Server 1078 Daten von Fahrzeugen empfangen und die Daten auf aktuelle neuronale Echtzeit-Netzwerke zum intelligenten Echtzeit-Inferenzieren anwenden. In mindestens einer Ausführungsform kann der/können die Server 1078 Deep-Learning-Supercomputer und/oder dedizierte Kl-Computer beinhalten, die durch die GPU(s) 1084 angetrieben werden, wie etwa die von NVIDIA entwickelten DGX- und DGX-Station-Maschinen. In mindestens einer Ausführungsform kann der/können die Server 1078 jedoch eine Deep-Learning-Infrastruktur beinhalten, die CPU-angetriebene Rechenzentren verwendet.
  • In mindestens einer Ausführungsform kann die Deep-Learning-Infrastruktur des/der Server(s) 1078 zum schnellen Echtzeit-Inferenzieren in der Lage sein und diese Fähigkeit verwenden, um den Zustand von Prozessoren, Software und/oder zugeordneter Hardware im Fahrzeug 1000 zu bewerten und zu verifizieren. Zum Beispiel kann in mindestens einer Ausführungsform die Deep-Learning-Infrastruktur periodische Aktualisierungen von dem Fahrzeug 1000 empfangen, wie etwa eine Sequenz von Bildern und/oder Objekten, die das Fahrzeug 1000 in dieser Sequenz von Bildern lokalisiert hat (z.B. über maschinelles Sehen und/oder andere Techniken des maschinellen Lernens zur Objektklassifizierung). In mindestens einer Ausführungsform kann die Deep-Learning-Infrastruktur ihr eigenes neuronales Netzwerk ausführen, um Objekte zu identifizieren und sie mit Objekten zu vergleichen, die durch das Fahrzeug 1000 identifiziert wurden, und falls die Ergebnisse nicht übereinstimmen und die Deep-Learning-Infrastruktur zu dem Schluss kommt, dass die KI in dem Fahrzeug 1000 eine Fehlfunktion aufweist, dann kann der/können die Server 1078 ein Signal an das Fahrzeug 1000 übertragen, das einen ausfallsicheren Computer des Fahrzeugs 1000 anweist, die Steuerung zu übernehmen, die Fahrgäste zu benachrichtigen und ein sicheres Parkmanöver durchzuführen.
  • In mindestens einer Ausführungsform können der oder die Server 1078 GPU(s) 1084 und einen oder mehrere programmierbare Inferenzbeschleuniger (z.B. TensorRT-3-Vorrichtungen von NVIDIA) beinhalten. In mindestens einer Ausführungsform kann eine Kombination von GPU-angetriebenen Servern und Inferenzbeschleunigung eine Reaktionsfähigkeit in Echtzeit ermöglichen. In mindestens einer Ausführungsform, wie etwa, wenn die Rechenleistung weniger kritisch ist, können durch CPUs, FPGAs und andere Prozessoren angetriebene Server zum Inferenzieren verwendet werden. In mindestens einer Ausführungsform werden die Hardware-Struktur(en) 715 verwendet, um eine oder mehrere Ausführungsformen durchzuführen. Details bezüglich der Hardware-Struktur(en) 715 sind hierin in Verbindung mit 7A und/oder 7B bereitgestellt.
  • COMPUTERSYSTEME
  • 11 ist ein Blockdiagramm, das ein beispielhaftes Computersystem veranschaulicht, das ein System mit zusammengeschalteten Vorrichtungen und Komponenten, ein System auf einem Chip (SOC) oder eine Kombination davon sein kann, gebildet mit einem Prozessor, der Ausführungseinheiten zum Ausführen einer Anweisung beinhalten kann, gemäß mindestens einer Ausführungsform. In mindestens einer Ausführungsform kann ein Computersystem 1100 ohne Einschränkung eine Komponente, wie etwa einen Prozessor 1102, beinhalten, um Ausführungseinheiten einschließlich Logik zum Durchführen von Algorithmen für Prozessdaten gemäß der vorliegenden Offenbarung zu verwenden, wie etwa in der hierin beschriebenen Ausführungsform. In mindestens einer Ausführungsform kann das Computersystem 1100 Prozessoren beinhalten, wie etwa die PENTIUM®-Prozessorfamilie, die Mikroprozessoren Xeon™, Itanium®, XScale™ und/oder StrongARM™, Intel® Core™ oder Intel® Nervana™, die von der Intel Corporation in Santa Clara, Kalifornien, erhältlich sind, obwohl auch andere Systeme (einschließlich PCs, die andere Mikroprozessoren, Engineering-Arbeitsstationen, Set-Top-Boxen und dergleichen aufweisen) verwendet werden können. In mindestens 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 (zum Beispiel UNIX und Linux), eingebettete Software und/oder grafische Benutzerschnittstellen verwendet werden können.
  • Ausführungsformen können in anderen Vorrichtungen wie etwa tragbaren Vorrichtungen und eingebetteten Anwendungen verwendet werden. Einige Beispiele für tragbare Vorrichtungen beinhalten Mobiltelefone, Internetprotokoll-Vorrichtungen, Digitalkameras, persönliche digitale Assistenten (personal digital assistants - „PDAs“) und tragbare PCs. In mindestens 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-Switches („WAN“) oder jedes beliebige andere System beinhalten, das eine oder mehrere Anweisungen gemäß mindestens einer Ausführungsform ausführen kann.
  • In mindestens einer Ausführungsform kann das Computersystem 1100 ohne Einschränkung den Prozessor 1102 beinhalten, der ohne Einschränkung eine oder mehrere Ausführungseinheiten 1108 beinhalten kann, um Trainieren und/oder Inferenzieren eines Modells des maschinellen Lernens gemäß den hierin beschriebenen Techniken durchzuführen. In mindestens 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 mindestens einer Ausführungsform kann der Prozessor 1102 ohne Einschränkung einen Mikroprozessor für einen Complex Instruction Set Computer („CISC“), einen Mikroprozessor für Reduced Instruction Set Computing („RISC“), einen Very-Long-lnstruction-Word-(„VLIW“-)Mikroprozessor, einen Prozessor, der eine Kombination von Anweisungssätzen implementiert, oder eine beliebige andere Prozessorvorrichtung, wie etwa einen digitalen Signalprozessor, beinhalten. In mindestens 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 mindestens einer Ausführungsform kann der Prozessor 1102 ohne Einschränkung einen internen Level-1(„L1“)-Cache-Speicher („Cache“) 1104 beinhalten. In mindestens einer Ausführungsform kann der Prozessor 1102 einen einzelnen internen Cache oder mehrere Levels von internem Cache aufweisen. In mindestens einer Ausführungsform kann sich der Cache-Speicher extern zu dem Prozessor 1102 befinden. Andere Ausführungsformen können in Abhängigkeit von der konkreten Implementation und den Anforderungen auch eine Kombination aus sowohl internen als auch externen Caches beinhalten. In mindestens einer Ausführungsform kann eine Registerbank 1106 unterschiedliche Typen von Daten in verschiedenen Registern speichern, einschließlich ohne Einschränkung Integerregistern, Gleitkommaregistern, Statusregistern und eines Anweisungszeigerregisters.
  • In mindestens einer Ausführungsform befindet sich die Ausführungseinheit 1108, einschließlich ohne Einschränkung der Logik zum Durchführen von Integer- und Gleitkommaoperationen, ebenfalls in dem Prozessor 1102. In mindestens einer Ausführungsform kann der Prozessor 1102 auch Festwertspeicher (read only memory - „ROM“) für Mikrocode („µcode“) beinhalten, der Mikrocode für bestimmte Makrobefehle speichert. In mindestens einer Ausführungsform kann die Ausführungseinheit 1108 Logik zum Handhaben eines gepackten Anweisungssatzes 1109 beinhalten. In mindestens einer Ausführungsform können durch die Aufnahme des gepackten Anweisungssatzes 1109 in einen Anweisungssatz eines Universalprozessors zusammen mit der zugehörigen Schaltungsanordnung zum Ausführen von Anweisungen Operationen, die von vielen Multimedia-Anwendungen verwendet werden, unter Verwendung von gepackten Daten im Prozessor 1102 durchgeführt werden. In einer oder mehreren Ausführungsformen können viele Multimedia-Anwendungen beschleunigt und effizienter ausgeführt werden, indem eine volle Breite des Datenbusses eines Prozessors zum Durchführen von Operationen an gepackten Daten verwendet wird, wodurch die Notwendigkeit entfallen kann, kleinere Dateneinheiten über den Datenbus dieses Prozessors zu übermitteln, um eine oder mehrere Operationen an einem Datenelement nach dem anderen durchzuführen.
  • In mindestens einer Ausführungsform kann die Ausführungseinheit 1108 auch in Mikrocontrollern, eingebetteten Prozessoren, Grafikvorrichtungen, DSPs und anderen Typen von Logikschaltungen verwendet werden. In mindestens einer Ausführungsform kann das Computersystem 1100 ohne Einschränkung einen Speicher 1120 beinhalten. In mindestens einer Ausführungsform kann der Speicher 1120 eine Vorrichtung mit dynamischem Direktzugriffsspeicher („DRAM“), eine Vorrichtung mit statischem Direktzugriffsspeicher („SRAM“), eine Flash-Speichervorrichtung oder eine andere Speichervorrichtung sein. In mindestens einer Ausführungsform kann der Speicher 1120 Anweisung(en) 1119 und/oder Daten 1121 speichern, die durch Datensignale dargestellt werden, die durch den Prozessor 1102 ausgeführt werden können.
  • In mindestens einer Ausführungsform kann ein Systemlogikchip an den Prozessorbus 1110 und den Speicher 1120 gekoppelt sein. In mindestens einer Ausführungsform kann ein Systemlogikchip ohne Einschränkung einen Speichersteuerungs-Hub (memory controller hub - „MCH“) 1116 beinhalten und der Prozessor 1102 mit dem MCH 1116 über den Prozessorbus 1110 kommunizieren. In mindestens einer Ausführungsform kann der MCH 1116 dem Speicher 1120 einen Speicherpfad 1118 mit hoher Bandbreite für die Anweisungs- und Datenspeicherung sowie für die Speicherung von Grafikbefehlen, Daten und Texturen bereitstellen. In mindestens 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-Schnittstelle 1122 überbrücken. In mindestens einer Ausführungsform kann ein Systemlogikchip einen Grafikport zum Koppeln an eine Grafiksteuerung bereitstellen. In mindestens einer Ausführungsform kann der MCH 1116 durch einen Speicherpfad 1118 mit hoher Bandbreite an den Speicher 1120 gekoppelt sein und eine Grafik-/Videokarte 1112 durch eine Accelerated-Graphics-Port-(„AGP“-)Zusammenschaltung 1114 an den MCH 1116 gekoppelt sein.
  • In mindestens einer Ausführungsform kann das Computersystem 1100 die System-E/A-Schnittstelle 1122 als proprietären Hub-Schnittstellenbus verwenden, um den MCH 1116 an einen E/A-Steuerungs-Hub (I/O controller hub - „ICH“) 1130 zu koppeln. In mindestens einer Ausführungsform kann der ICH 1130 direkte Verbindungen zu einigen E/A-Vorrichtungen über einen lokalen E/A-Bus bereitstellen. In mindestens einer Ausführungsform kann ein lokaler E/A-Bus ohne Einschränkung einen Hochgeschwindigkeits-E/A-Bus zum Verbinden von Peripheriegeräten mit dem Speicher 1120, einem Chipsatz und dem Prozessor 1102 beinhalten. Beispiele können ohne Einschränkung eine Audiosteuerung 1129, einen Firmware-Hub („Flash-BIOS“) 1128, einen drahtlosen Sendeempfänger 1126, einen Datenspeicher 1124, eine ältere E/A-Steuerung 1123, die Benutzereingabe- und Tastaturschnittstellen 1125 enthält, einen seriellen Erweiterungsport 1127, wie etwa einen Universal-Serial-Bus-(„USB“-)Port, und eine Netzwerksteuerung 1134 beinhalten. In mindestens einer Ausführungsform kann der Datenspeicher 1124 ein Festplattenlaufwerk, ein Diskettenlaufwerk, eine CD-ROM-Vorrichtung, eine Flash-Speichervorrichtung oder eine andere Massenspeichervorrichtung umfassen.
  • In mindestens einer Ausführungsform veranschaulicht 11 ein System, das zusammengeschaltete Hardware-Vorrichtungen oder „Chips“ beinhaltet, wohingegen 11 in anderen Ausführungsformen ein beispielhaftes SoC veranschaulichen kann. In mindestens einer Ausführungsform können die in 11 veranschaulichten Vorrichtungen mit proprietären Zusammenschaltungen, standardisierten Zusammenschaltungen (z.B. PCIe) oder einer Kombination davon zusammengeschaltet sein. In mindestens einer Ausführungsform sind eine oder mehrere Komponenten des Computersystems 1100 unter Verwendung von Compute-Express-Link-(CXL-)Zusammenschaltungen zusammengeschaltet.
  • Die Inferenz- und/oder Trainingslogik 715 wird verwendet, um Inferenzierungs- und/oder Trainingsoperationen durchzuführen, die mit einer oder mehreren Ausführungsformen assoziiert sind. Details bezüglich der Inferenz- und/oder Trainingslogik 715 sind hierin in Verbindung mit 7A und/oder 7B bereitgestellt. In mindestens einer Ausführungsform kann die Inferenz- und/oder Trainingslogik 715 in dem System aus 11 für Inferenzierungs- oder Vorhersageoperationen zumindest teilweise basierend auf Gewichtungsparametern verwendet werden, die unter Verwendung von hierin beschriebenen Trainingsoperationen für neuronale Netzwerke, Funktionen und/oder Architekturen für neuronale Netzwerke oder Anwendungsfälle für neuronale Netzwerke berechnet wurden.
  • In mindestens einer Ausführungsform können solche Komponenten verwendet werden, um Bildsegmentierung durchzuführen, wie oben erörtert, beispielsweise in Bezug auf ein System von 1 oder 2 oder Prozesse von 4 oder 5. In mindestens einer Ausführungsform kann dies die Verwendung eines oder mehrerer erster neuronaler Netzwerke beinhalten, um zu bewirken, dass ein Lichteffekt auf ein oder mehrere Objekte in einem oder mehreren Bildern angewendet wird, die zumindest teilweise auf synthetisch erzeugten Bildern des einen oder der mehreren Objekte basieren.
  • 12 ist ein Blockdiagramm, das eine elektronische Vorrichtung 1200 zum Nutzen eines Prozessors 1210 gemäß mindestens einer Ausführungsform veranschaulicht. In mindestens einer Ausführungsform kann die elektronische Vorrichtung 1200 zum Beispiel und ohne Einschränkung ein Notebook, ein Tower-Server, ein Rack-Server, ein Blade-Server, ein Laptop, ein Desktop, ein Tablet, eine mobile Vorrichtung, ein Telefon, ein eingebetteter Computer oder eine beliebige andere geeignete elektronische Vorrichtung sein.
  • In mindestens einer Ausführungsform kann die elektronische Vorrichtung 1200 ohne Einschränkung den Prozessor 1210 beinhalten, der kommunikativ an eine beliebige geeignete Anzahl oder einen beliebigen geeigneten Typ von Komponenten, Peripheriegeräten, Modulen oder Vorrichtungen gekoppelt ist. In mindestens einer Ausführungsform ist der Prozessor 1210 unter Verwendung eines Busses oder einer Schnittstelle gekoppelt, wie etwa eines I2C-Busses, eines Systemverwaltungsbusses (System Management Bus - „SMBus“), eines Low-Pin-Count-(LPC-)Busses, einer seriellen Peripherieschnittstelle (Serial Peripheral Interface - „SPI“), eines High-Definition-Audio-(„HDA“-)Busses, eines Serial-Advance-Technology-Attachment-(„SATA“-)Busses, eines Universal Serial Bus („USB“) (Version 1, 2, 3 usw.) oder eines Universal-Asynchronous-Receiver/Transmitter-(„UART“-)Busses. In mindestens einer Ausführungsform veranschaulicht 12 ein System, das zusammengeschaltete Hardware-Vorrichtungen oder „Chips“ beinhaltet, wohingegen 12 in anderen Ausführungsformen ein beispielhaftes SoC veranschaulichen kann. In mindestens einer Ausführungsform können die in 12 veranschaulichten Vorrichtungen mit proprietären Zusammenschaltungen, standardisierten Zusammenschaltungen (z.B. PCIe) oder einer Kombination davon zusammengeschaltet sein. In mindestens einer Ausführungsform sind eine oder mehrere Komponenten aus 12 unter Verwendung von Compute-Express-Link-(CXL-)Zusammenschaltungen zusammengeschaltet.
  • In mindestens einer Ausführungsform kann 12 eine Anzeige 1224, einen Touchscreen 1225, ein Touchpad 1230, eine Einheit zur Nahfeldkommunikation (Near Field Communications - „NFC“) 1245, einen Sensor-Hub 1240, einen Wärmesensor 1246, einen Express-Chipsatz („EC“) 1235, ein Trusted-Platform-Modul („TPM“) 1238, BIOS-/Firmware-/Flash-Speicher („BIOS, FW Flash“) 1222, einen DSP 1260, ein Laufwerk 1220, wie etwa ein Solid-State-Platten- (Solid State Disk - „SSD“) oder ein Festplattenlaufwerk (Hard Disk Drive - „HDD“), eine Einheit für ein drahtloses lokales Netzwerk (wireless local area network - „WLAN“) 1250, eine Bluetooth-Einheit 1252, eine Einheit für ein drahtloses Weitverkehrsnetzwerk (Wireless Wide Area Network - „WWAN“) 1256, eine globale Positionsbestimmungssystem(GPS)-Einheit 1255, eine Kamera („USB-3.0-Kamera“) 1254, wie etwa eine USB-3.0-Kamera, und/oder eine Low-Power-Double-Data-Rate-(„LPDDR“-)Speichereinheit („LPDDR3“) 1215, die zum Beispiel im LPDDR3-Standard implementiert ist, beinhalten. Diese Komponenten können jeweils auf eine beliebige geeignete Weise implementiert sein.
  • In mindestens einer Ausführungsform können andere Komponenten durch hierin beschriebene Komponenten kommunikativ an den Prozessor 1210 gekoppelt sein. In mindestens einer Ausführungsform können ein Beschleunigungsmesser 1241, ein Umgebungslichtsensor (ambient light sensor - „ALS“) 1242, ein Kompass 1243 und ein Gyroskop 1244 kommunikativ an den Sensor-Hub 1240 gekoppelt sein. In mindestens einer Ausführungsform können ein Thermosensor 1239, ein Lüfter 1237, eine Tastatur 1236 und ein Touchpad 1230 kommunikativ an den EC 1235 gekoppelt sein. In mindestens einer Ausführungsform können Lautsprecher 1263, Kopfhörer 1264 und ein Mikrofon („Mikro“) 1265 kommunikativ an eine Audioeinheit („Audiocodec und Klasse-D-Verst.“) 1262 gekoppelt sein, die wiederum kommunikativ an den DSP 1260 gekoppelt sein kann. In mindestens einer Ausführungsform kann die Audioeinheit 1262 zum Beispiel und ohne Einschränkung einen Audiocodierer/- decodierer („Codec“) und einen Klasse-D-Verstärker beinhalten. In mindestens einer Ausführungsform kann eine SIM-Karte („SIM“) 1257 kommunikativ an die WWAN-Einheit 1256 gekoppelt sein. In mindestens einer Ausführungsform können Komponenten wie etwa die WLAN-Einheit 1250 und die Bluetooth-Einheit 1252 sowie die WWAN-Einheit 1256 in einem Next Generation Form Factor („NGFF“) implementiert sein.
  • Die Inferenz- und/oder Trainingslogik 715 wird verwendet, um Inferenzierungs- und/oder Trainingsoperationen durchzuführen, die mit einer oder mehreren Ausführungsformen assoziiert sind. Details bezüglich der Inferenz- und/oder Trainingslogik 715 sind hierin in Verbindung mit 7A und/oder 7B bereitgestellt. In mindestens einer Ausführungsform kann die Inferenz- und/oder Trainingslogik 715 in dem System aus 12 für Inferenzierungs- oder Vorhersageoperationen zumindest teilweise basierend auf Gewichtungsparametern verwendet werden, die unter Verwendung von hierin beschriebenen Trainingsoperationen für neuronale Netzwerke, Funktionen und/oder Architekturen für neuronale Netzwerke oder Anwendungsfälle für neuronale Netzwerke berechnet wurden.
  • In mindestens einer Ausführungsform können solche Komponenten verwendet werden, um Bildsegmentierung durchzuführen, wie oben erörtert, beispielsweise in Bezug auf ein System von 1 oder 2 oder Prozesse von 4 oder 5. In mindestens einer Ausführungsform kann dies die Verwendung eines oder mehrerer erster neuronaler Netzwerke beinhalten, um zu bewirken, dass ein Lichteffekt auf ein oder mehrere Objekte in einem oder mehreren Bildern angewendet wird, die zumindest teilweise auf synthetisch erzeugten Bildern des einen oder der mehreren Objekte basieren.
  • 13 veranschaulicht ein Computersystem 1300 gemäß mindestens einer Ausführungsform. In mindestens einer Ausführungsform ist das Computersystem 1300 so konfiguriert, dass es verschiedene Prozesse und Verfahren implementiert, die in dieser Offenbarung beschrieben sind.
  • In mindestens einer Ausführungsform umfasst das Computersystem 1300 ohne Einschränkung mindestens eine zentrale Verarbeitungseinheit („CPU“) 1302, die mit einem Kommunikationsbus 1310 verbunden ist, der unter Verwendung eines beliebigen geeigneten Protokolls implementiert ist, wie etwa PCI („Peripheral Component Interconnect“), Peripheral Component Interconnect Express („PCI-Express“), AGP („Accelerated Graphics Port“), HyperTransport oder beliebiger anderer Bus- oder Punkt-zu-Punkt-Kommunikationsprotokoll(e). In mindestens einer Ausführungsform beinhaltet das Computersystem 1300 ohne Einschränkung einen Hauptspeicher 1304 und Steuerlogik (z.B. implementiert als Hardware, Software oder eine Kombination davon) und Daten werden in dem Hauptspeicher 1304 gespeichert, der die Form eines Direktzugriffsspeichers („RAM“) annehmen kann. In mindestens einer Ausführungsform stellt ein Netzwerkschnittstellen-Teilsystem („Netzwerkschnittstelle“) 1322 eine Schnittstelle zu anderen Rechenvorrichtungen und Netzwerken bereit, um Daten von anderen Systemen mit dem Computersystem 1300 zu empfangen und an diese zu übertragen.
  • In mindestens einer Ausführungsform beinhaltet das Computersystem 1300 ohne Einschränkung in mindestens einer Ausführungsform Eingabevorrichtungen 1308, ein Parallelverarbeitungssystem 1312 und Anzeigevorrichtungen 1306, die unter Verwendung einer herkömmlichen Kathodenstrahlröhre (cathode ray tube - „CRT“), einer Flüssigkristallanzeige (liquid crystal display - „LCD“), einer Anzeige mit Leuchtdioden (light emitting diode - „LED“), einer Plasmaanzeige oder anderer geeigneter Anzeigetechnologien implementiert sein können. In mindestens einer Ausführungsform werden Benutzereingaben von Eingabevorrichtungen 1308 wie etwa Tastatur, Maus, Touchpad, Mikrofon usw. empfangen. In mindestens einer Ausführungsform kann sich jedes hierin beschriebene Modul auf einer einzelnen Halbleiterplattform befinden, um ein Verarbeitungssystem zu bilden.
  • Die Inferenz- und/oder Trainingslogik 715 wird verwendet, um Inferenzierungs- und/oder Trainingsoperationen durchzuführen, die mit einer oder mehreren Ausführungsformen assoziiert sind. Details bezüglich der Inferenz- und/oder Trainingslogik 715 sind hierin in Verbindung mit 7A und/oder 7B bereitgestellt. In mindestens einer Ausführungsform kann die Inferenz- und/oder Trainingslogik 715 in dem System aus 13 für Inferenzierungs- oder Vorhersageoperationen zumindest teilweise basierend auf Gewichtungsparametern verwendet werden, die unter Verwendung von hierin beschriebenen Trainingsoperationen für neuronale Netzwerke, Funktionen und/oder Architekturen für neuronale Netzwerke oder Anwendungsfälle für neuronale Netzwerke berechnet wurden.
  • In mindestens einer Ausführungsform können solche Komponenten verwendet werden, um Bildsegmentierung durchzuführen, wie oben erörtert, beispielsweise in Bezug auf ein System von 1 oder 2 oder Prozesse von 4 oder 5. In mindestens einer Ausführungsform kann dies die Verwendung eines oder mehrerer erster neuronaler Netzwerke beinhalten, um zu bewirken, dass ein Lichteffekt auf ein oder mehrere Objekte in einem oder mehreren Bildern angewendet wird, die zumindest teilweise auf synthetisch erzeugten Bildern des einen oder der mehreren Objekte basieren.
  • 14 veranschaulicht ein Computersystem 1400 gemäß mindestens einer Ausführungsform. In mindestens einer Ausführungsform beinhaltet das Computersystem 1400 ohne Einschränkung einen Computer 1410 und einen USB-Stick 1420. In mindestens einer Ausführungsform kann der Computer 1410 ohne Einschränkung eine beliebige Anzahl und einen beliebigen Typ von Prozessor(en) (nicht gezeigt) und einen Speicher (nicht gezeigt) beinhalten. In mindestens einer Ausführungsform beinhaltet der Computer 1410 ohne Einschränkung einen Server, eine Cloud-Instanz, einen Laptop und einen Desktop-Computer.
  • In mindestens einer Ausführungsform beinhaltet der USB-Stick 1420 ohne Einschränkung eine Verarbeitungseinheit 1430, eine USB-Schnittstelle 1440 und eine USB-Schnittstellenlogik 1450. In mindestens einer Ausführungsform kann die Verarbeitungseinheit 1430 ein beliebiges Anweisungsausführungssystem, ein Gerät oder eine Vorrichtung sein, die in der Lage ist, Anweisungen auszuführen. In mindestens einer Ausführungsform kann die Verarbeitungseinheit 1430 ohne Einschränkung eine beliebige Anzahl und einen beliebigen Typ von Verarbeitungskernen (nicht gezeigt) beinhalten. In mindestens einer Ausführungsform umfasst die Verarbeitungseinheit 1430 eine anwendungsspezifische integrierte Schaltung („ASIC“), die zum Durchführen beliebiger Mengen und Typen von Operationen optimiert ist, die mit maschinellem Lernen assoziiert sind. Zum Beispiel ist in mindestens einer Ausführungsform die Verarbeitungseinheit 1430 eine Tensor-Verarbeitungseinheit („TPC“), die zum Durchführen von Inferenzierungsoperationen des maschinellen Lernens optimiert ist. In mindestens einer Ausführungsform ist die Verarbeitungseinheit 1430 eine Sichtverarbeitungseinheit (vision processing unit - „VPU“), die für zum Durchführen von Inferenzierungsoperationen des maschinellen Sehens und des maschinellen Lernens optimiert ist.
  • In mindestens einer Ausführungsform kann die USB-Schnittstelle 1440 ein beliebiger Typ von USB-Stecker oder USB-Buchse sein. Zum Beispiel ist in mindestens einer Ausführungsform die USB-Schnittstelle 1440 eine USB-3.0-Typ-C-Buchse für Daten und Leistung. In mindestens einer Ausführungsform ist die USB-Schnittstelle 1440 ein USB-3.0-Typ-A-Stecker. In mindestens einer Ausführungsform kann die USB-Schnittstellenlogik 1450 eine beliebige Menge und einen beliebigen Typ von Logik beinhalten, die es der Verarbeitungseinheit 1430 ermöglicht, über den USB-Stecker 1440 eine Schnittstelle mit Vorrichtungen (z.B. dem Computer 1410) zu bilden.
  • Die Inferenz- und/oder Trainingslogik 715 wird verwendet, um Inferenzierungs- und/oder Trainingsoperationen durchzuführen, die mit einer oder mehreren Ausführungsformen assoziiert sind. Details bezüglich der Inferenz- und/oder Trainingslogik 715 sind hierin in Verbindung mit 7A und/oder 7B bereitgestellt. In mindestens einer Ausführungsform kann die Inferenz- und/oder Trainingslogik 715 in dem System aus 14 für Inferenzierungs- oder Vorhersageoperationen zumindest teilweise basierend auf Gewichtungsparametern verwendet werden, die unter Verwendung von hierin beschriebenen Trainingsoperationen für neuronale Netzwerke, Funktionen und/oder Architekturen für neuronale Netzwerke oder Anwendungsfälle für neuronale Netzwerke berechnet wurden.
  • In mindestens einer Ausführungsform können solche Komponenten verwendet werden, um Bildsegmentierung durchzuführen, wie oben erörtert, beispielsweise in Bezug auf ein System von 1 oder 2 oder Prozesse von 4 oder 5. In mindestens einer Ausführungsform kann dies die Verwendung eines oder mehrerer erster neuronaler Netzwerke beinhalten, um zu bewirken, dass ein Lichteffekt auf ein oder mehrere Objekte in einem oder mehreren Bildern angewendet wird, die zumindest teilweise auf synthetisch erzeugten Bildern des einen oder der mehreren Objekte basieren.
  • 15A veranschaulicht eine beispielhafte Architektur, in der eine Vielzahl von GPUs 1510(1)-1510(N) über Hochgeschwindigkeitsverbindungen 1540(1)-1540(N) (z.B. Busse, Punkt-zu-Punkt-Zusammenschaltungen usw.) kommunikativ an eine Vielzahl von Mehrkernprozessoren 1505(1)-1505(M) gekoppelt ist. In mindestens einer Ausführungsform unterstützen die Hochgeschwindigkeitsverbindungen 1540(1)-1540(N) einen Kommunikationsdurchsatz von 4 GB/s, 30 GB/s, 80 GB/s oder höher. In mindestens einer Ausführungsform können verschiedene Zusammenschaltungsprotokolle verwendet werden, einschließlich, aber nicht beschränkt auf, PCIe 4.0 oder 5.0 und NVLink 2.0. In verschiedenen Figuren stellen „N“ und „M“ positive ganze Zahlen dar, deren Werte von Figur zu Figur unterschiedlich sein können. In mindestens einer Ausführungsform beinhalten eine oder mehrere GPUs in einer Vielzahl von GPUs 1510(1)-1510(N) einen oder mehrere Grafikkerne (auch einfach als „Kerne“ bezeichnet) 1800, wie in 18A und 18B offenbart. In mindestens einer Ausführungsform können ein oder mehrere Grafikkerne 1800 als Streaming-Multiprozessoren („SMs“), Stream-Prozessoren („SPs“), Stream-Verarbeitungseinheiten („SPUs“), Recheneinheiten („CUs“) Ausführungseinheiten („EUs“) und/oder Slices bezeichnet werden, wobei sich Slice in diesem Zusammenhang auf einen Abschnitt der Verarbeitungsressourcen in einer Verarbeitungseinheit beziehen kann (z.B. 16 Kerne, eine Strahlverfolgungseinheit, ein Thread Director oder Scheduler).
  • Zusätzlich und in mindestens einer Ausführungsform sind zwei oder mehr der GPUs 1510 über Hochgeschwindigkeitsverbindungen 1529(1)-1529(2) miteinander verbunden, die unter Verwendung von ähnlichen oder anderen Protokollen/Verbindungen wie jenen, die für die Hochgeschwindigkeitsverbindungen 1540(1)-1540(N) verwendet werden, umgesetzt sein können. Gleichermaßen können zwei oder mehr Mehrkernprozessoren 1505 über eine Hochgeschwindigkeitsverbindung 1528 verbunden sein, die symmetrische Mehrprozessor-(symmetric multi-processor- SMP-)Busse sein können, die mit 20 GB/s, 30 GB/s, 120 GB/s oder mehr betrieben werden. Alternativ kann die gesamte Kommunikation zwischen verschiedenen Systemkomponenten, die in 15A gezeigt sind, unter Verwendung von ähnlichen Protokollen/Verbindungen (z.B. über eine gemeinsame Verbindungsstruktur) erreicht werden.
  • In mindestens einer Ausführungsform ist jeder Mehrkernprozessor 1505 über Speicherverbindungen 1526(1)-1526(M) jeweils kommunikativ an einen Prozessorspeicher 1501(1)-1501(M) gekoppelt, und jede GPU 1510(1)-1510(N) ist jeweils über GPU-Speicherverbindungen 1550(1)-1550(N) kommunikativ an den GPU-Speicher 1520(1)-1520(N) gekoppelt. In mindestens einer Ausführungsform können Speicherverbindungen 1526 und 1550 ähnliche oder unterschiedliche Speicherzugriffstechnologien verwenden. Bei den Prozessorspeichern 1501 (1)-1501 (M) und den GPU-Speichern 1520 kann es sich beispielsweise und ohne Einschränkung um flüchtige Speicher, wie etwa dynamische Direktzugriffsspeicher (DRAMs) (einschließlich gestapelter DRAMs), Grafik-DDR-SDRAM (GDDR) (z.B. GDDR5, GDDR6) oder Speicher mit hoher Bandbreite (High Bandwidth Memory-HBM), und/oder um nichtflüchtige Speicher, wie etwa 3D XPoint oder Nano-Ram, handeln. In mindestens einer Ausführungsform kann ein Abschnitt der Prozessorspeicher 1501 flüchtiger Speicher sein und ein anderer Abschnitt nichtflüchtiger Speicher sein (z.B. unter Verwendung einer Speicherhierarchie mit zwei Levels (two-level memory - 2LM)).
  • Wie hierin beschrieben, können verschiedene Mehrkernprozessoren 1505 und GPUs 1510 zwar physisch an einen konkreten Speicher 1501 bzw. 1520 gekoppelt sein und/oder eine einheitliche Speicherarchitektur implementiert sein, bei der ein virtueller Systemadressraum (auch als „effektiver Adressraum“ bezeichnet) auf verschiedene physische Speicher verteilt ist. Zum Beispiel können die Prozessorspeicher 1501(1)-1501(M) jeweils 64 GB Systemspeicheradressraum umfassen und die GPU-Speicher 1520(1)-1520(N) jeweils 32 GB Systemspeicheradressraum umfassen, was zu einem adressierbaren Speicher von insgesamt 256 GB führt, wenn M=2 und N=4. Andere Werte für N und M sind möglich.
  • 15B veranschaulicht zusätzliche Details für eine Zusammenschaltung zwischen einem Mehrkernprozessor 1507 und einem Grafikbeschleunigungsmodul 1546 gemäß einer beispielhaften Ausführungsform. In mindestens einer Ausführungsform kann das Grafikbeschleunigungsmodul 1546 einen oder mehrere GPU-Chips beinhalten, die auf einer Leitungskarte integriert sind, die über eine Hochgeschwindigkeitsverbindung 1540 (z.B. einen PCIe-Bus, NVLink usw.) an den Prozessor 1507 gekoppelt ist. In mindestens einer Ausführungsform kann das Grafikbeschleunigungsmodul 1546 alternativ auf einem Gehäuse oder Chip mit dem Prozessor 1507 integriert sein.
  • In mindestens einer Ausführungsform beinhaltet der Prozessor 1507 eine Vielzahl von Kernen 1560A-1560D (die als „Ausführungseinheiten“ bezeichnet werden können), jeder mit einem Adressenübersetzungspuffer (translation lookaside buffer - „TLB“) 1561A-1561D und einem oder mehreren Caches 1562A-1562D. In mindestens einer Ausführungsform können die Kerne 1560A-1560D verschiedene andere Komponenten zum Ausführen von Anweisungen und Verarbeiten von Daten beinhalten, die nicht veranschaulicht sind. In mindestens einer Ausführungsform können die Caches 1562A-1562D Level-1-(L1-) und Level-2-(L2-)Caches umfassen. Außerdem können ein oder mehrere gemeinsam genutzte Caches 1556 in den Caches 1562A-1562D enthalten sein und von Sätzen von Kernen 1560A-1560D gemeinsam genutzt werden. Eine Ausführungsform des Prozessors 1507 beinhaltet zum Beispiel 24 Kerne, jeder mit einem 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. In mindestens einer Ausführungsform sind der Prozessor 1507 und das Grafikbeschleunigungsmodul 1546 mit dem Systemspeicher 1514 verbunden, der die Prozessorspeicher 1501(1)-1501(M) aus 17A beinhalten kann.
  • In mindestens einer Ausführungsform wird die Kohärenz für Daten und Anweisungen, die in verschiedenen Caches 1562A-1562D, 1556 und Systemspeicher 1514 gespeichert sind, über Zwischenkernkommunikation über einen Kohärenzbus 1564 aufrechterhalten. Zum Beispiel kann in mindestens einer Ausführungsform jeder Cache eine Cache-Kohärenzlogik/-schaltung aufweisen, die damit assoziiert ist, um als Reaktion auf detektierte Lese- oder Schreibvorgänge in konkreten Cache-Zeilen über den Kohärenzbus 1564 zu kommunizieren. In mindestens einer Ausführungsform wird ein Cache-Snooping-Protokoll über den Kohärenzbus 1564 implementiert, um Cache-Zugriffe per Snooping zu kontrollieren.
  • In mindestens einer Ausführungsform koppelt eine Proxy-Schaltung 1525 das Grafikbeschleunigungsmodul 1546 kommunikativ an den Kohärenzbus 1564, was es dem Grafikbeschleunigungsmodul 1546 ermöglicht, an einem Cache-Kohärenzprotokoll als Peer der Kerne 1560A-1560D teilzunehmen. Insbesondere stellt in mindestens einer Ausführungsform eine Schnittstelle 1535 Verbindungsfähigkeit mit der Proxy-Schaltung 1525 über eine Hochgeschwindigkeitsverbindung 1540 bereit und eine Schnittstelle 1537 verbindet das Grafikbeschleunigungsmodul 1546 mit der Hochgeschwindigkeitsverbindung 1540.
  • In mindestens einer Ausführungsform stellt eine Beschleuniger-Integrationsschaltung 1536 Cache-Verwaltungs-, Speicherzugriffs-, Kontextverwaltungs- und Unterbrechungsverwaltungsdienste im Auftrag einer Vielzahl von Grafikverarbeitungs-Engines 1531(1)-1531(N) des Grafikbeschleunigungsmoduls 1546 bereit. In mindestens einer Ausführungsform können die Grafikverarbeitungs-Engines 1531(1)-1531(N) jeweils eine separate Grafikverarbeitungseinheit (GPU) umfassen. In mindestens einer Ausführungsform beinhaltet eine Vielzahl von Grafikverarbeitungs-Engines 1531(1)-1531(N) des Grafikbeschleunigungsmoduls 1546 einen oder mehrere Grafikkerne 1800, wie in Verbindung mit 18A und 18B erläutert. In mindestens einer Ausführungsform können die Grafikverarbeitungs-Engines 1531(1)-1531(N) alternativ unterschiedliche Typen von Grafikverarbeitungs-Engines innerhalb einer GPU umfassen, wie etwa Grafikausführungseinheiten, Medienverarbeitungs-Engines (z.B. Videocodierer/- decodierer), Abtaster und Blit-Engines. In mindestens einer Ausführungsform kann das Grafikbeschleunigungsmodul 1546 eine GPU mit einer Vielzahl von Grafikverarbeitungs-Engines 1531(1)-1531(N) sein oder die Grafikverarbeitungs-Engines 1531(1)-1531(N) können einzelne GPUs sein, die auf einem gemeinsamen Gehäuse, einer Leitungskarte oder einem Chip integriert sind.
  • In mindestens einer Ausführungsform beinhaltet die Beschleuniger-Integrationsschaltung 1536 eine Speicherverwaltungseinheit (MMU) 1539 zum Durchführen verschiedener Speicherverwaltungsfunktionen, wie etwa Übersetzungen von virtuellem in physischen Speicher (auch als Übersetzungen von effektivem in realen Speicher bezeichnet) und Speicherzugriffsprotokolle zum Zugreifen auf Systemspeicher 1514. Die MMU 1539 kann in mindestens einer Ausführungsform auch einen Adressenübersetzungspuffer (TLB) (nicht gezeigt) für das Caching von Übersetzungen von virtuellen/effektiven in physische/reale Adressen beinhalten. In mindestens einer Ausführungsform kann ein Cache 1538 Befehle und Daten für einen effizienten Zugriff durch die Grafikverarbeitungs-Engines 1531(1)-1531(N) speichern. In mindestens einer Ausführungsform werden die in dem Cache 1538 und in den Grafikspeichern 1533(1)-1533(M) gespeicherten Daten mit den Kern-Caches 1562A-1562D, 1556 und dem Systemspeicher 1514 kohärent gehalten, möglicherweise unter Verwendung einer Abrufeinheit 1544. Wie erwähnt, kann dies über die Proxy-Schaltung 1525 im Auftrag des Caches 1538 und der Speicher 1533(1)-1533(M) erzielt werden (z.B. Senden von Aktualisierungen an den Cache 1538 in Bezug auf Modifikationen/Zugriffe auf Cache-Zeilen in den Prozessor-Caches 1562A-1562D, 1556 und Empfangen von Aktualisierungen von dem Cache 1538).
  • In mindestens einer Ausführungsform speichert ein Satz von Registern 1545 Kontextdaten für Threads, die durch die Grafikverarbeitungs-Engines 1531 (1)-1531 (N) ausgeführt werden, und eine Kontextverwaltungsschaltung 1548 verwaltet Thread-Kontexte. Zum Beispiel kann die Kontextverwaltungsschaltung 1548 Sicherungs- und Wiederherstellungsoperationen durchführen, um Kontexte verschiedener Threads während Kontextumschaltungen zu sichern und wiederherzustellen (z.B., wenn ein erster Thread gesichert und ein zweiter Thread gespeichert wird, damit ein zweiter Thread durch eine Grafikverarbeitungs-Engine ausgeführt werden kann). Zum Beispiel kann die Kontextverwaltungsschaltung 1548 bei einer Kontextumschaltung derzeitige Registerwerte in einer bezeichneten Region in dem Speicher speichern (z.B. identifiziert durch einen Kontextzeiger). Sie kann dann bei der Rückkehr zu einem Kontext die Registerwerte wiederherstellen. In mindestens einer Ausführungsform empfängt und verarbeitet eine Unterbrechungsverwaltungsschaltung 1547 von Systemvorrichtungen empfangene Unterbrechungen.
  • In mindestens einer Ausführungsform werden virtuelle/effektive Adressen von einer Grafikverarbeitungsengine 1531 durch die MMU 1539 in reale/physische Adressen im Systemspeicher 1514 übersetzt. In mindestens einer Ausführungsform unterstützt die Beschleunigerintegrationsschaltung 1536 mehrere (z.B. 4, 8, 16) Grafikbeschleunigermodule 1546 und/oder andere Beschleunigervorrichtungen. Das Grafikbeschleunigermodul 1546 kann in mindestens einer Ausführungsform für eine einzelne Anwendung dediziert sein, die auf dem Prozessor 1507 ausgeführt wird, oder von mehreren Anwendungen gemeinsam genutzt werden. In mindestens einer Ausführungsform ist eine virtualisierte Grafikausführungsumgebung dargestellt, in der die Ressourcen der Grafikverarbeitungs-Engines 1531(1)-1531(N) mit mehreren Anwendungen oder virtuellen Maschinen (VMs) gemeinsam genutzt werden. In mindestens einer Ausführungsform können die Ressourcen in „Slices“ unterteilt werden, die unterschiedlichen VMs und/oder Anwendungen auf Grundlage von Verarbeitungsanforderungen und Prioritäten, die mit VMs und/oder Anwendungen assoziiert sind, zugewiesen werden.
  • In mindestens einer Ausführungsform fungiert die Beschleuniger-Integrationsschaltung 1536 als Brücke zu einem System für das Grafikbeschleunigungsmodul 1546 und sie stellt Adressübersetzungs- und Systemspeicher-Cache-Dienste bereit. Darüber hinaus kann die Beschleuniger-Integrationsschaltung 1536 in mindestens einer Ausführungsform Virtualisierungseinrichtungen für einen Host-Prozessor bereitstellen, um die Virtualisierung der Grafikverarbeitungs-Engines 1531(1)-1531(N), Unterbrechungen und Speicherverwaltung zu verwalten.
  • Da in mindestens einer Ausführungsform die Hardware-Ressourcen der Grafikverarbeitungs-Engines 1531(1)-1531(N) explizit auf einen realen Adressraum abgebildet sind, den der Host-Prozessor 1507 sieht, kann ein beliebiger Host-Prozessor diese Ressourcen direkt unter Verwendung eines effektiven Adresswerts adressieren. In mindestens einer Ausführungsform ist eine Funktion der Beschleuniger-Integrationsschaltung 1536 die physische Trennung der Grafikverarbeitungs-Engines 1531(1)-1531(N), sodass sie einem System als unabhängige Einheiten erscheinen.
  • In mindestens einer Ausführungsform sind ein oder mehrere Grafikspeicher 1533(1)-1533(M) jeweils an jede der Grafikverarbeitungs-Engines 1531(1)-1531(N) gekoppelt und es gilt N=M. In mindestens einer Ausführungsform speichern die Grafikspeicher 1533(1)-1533(M) Anweisungen und Daten, die durch jede der Grafikverarbeitungs-Engines 1531(1)-1531(N) verarbeitet werden. In mindestens einer Ausführungsform können die Grafikspeicher 1533(1)-1533(M) flüchtige Speicher sein, wie etwa DRAMs (was gestapelte DRAMs beinhaltet), GDDR-Speicher (z.B. GDDR5, GDDR6) oder HBM und/oder können nichtflüchtige Speicher sein, wie etwa 3D XPoint oder Nano-Ram.
  • In mindestens einer Ausführungsform werden zum Reduzieren des Datenverkehrs über die Hochgeschwindigkeitsverbindung 1540 Verzerrungsmethoden verwendet, um sicherzustellen, dass es sich bei den in den Grafikspeichern 1533(1)-1533(M) gespeicherten Daten um Daten handelt, die am häufigsten durch die Grafikverarbeitungs-Engines 1531(1)-1531(N) verwendet werden und vorzugsweise nicht durch die Kerne 1560A-1560D verwendet werden (zumindest nicht häufig). Gleichermaßen versucht in mindestens einer Ausführungsform ein Verzerrungsmechanismus, Daten, die von Kernen (und vorzugsweise nicht von den Grafikverarbeitungsengines 1531(1)-1531(N)) benötigt werden, innerhalb der Zwischenspeicher 1562A-1562D, 1556 und des Systemspeichers 1514 zu halten.
  • 15C veranschaulicht eine andere beispielhafte Ausführungsform, bei der die Beschleuniger-Integrationsschaltung 1536 in den Prozessor 1507 integriert ist. In dieser Ausführungsform kommunizieren die Grafikverarbeitungs-Engines 1531(1)-1532(N) direkt über die Hochgeschwindigkeitsverbindung 1540 mit der Beschleuniger-Integrationsschaltung 1536 über die Schnittstelle 1537 und die Schnittstelle 1535 (die wiederum eine beliebige Form von Bus- oder Schnittstellenprotokoll nutzen können). In mindestens einer Ausführungsform kann die Beschleuniger-Integrationsschaltung 1536 ähnliche Operationen durchführen wie diejenigen, die in Bezug auf 15B beschrieben sind, aber möglicherweise mit einem höheren Durchsatz, da sie sich in unmittelbarer Nähe zu dem Kohärenzbus 1564 und den Caches 1562A-1562D, 1556 befindet. In mindestens einer Ausführungsform unterstützt eine Beschleunigerintegrationsschaltung unterschiedliche Programmiermodelle, die ein Programmiermodell für dedizierte Prozesse (keine Virtualisierung des Grafikbeschleunigungsmoduls) und gemeinsam genutzte Programmiermodelle (mit Virtualisierung) beinhalten, die Programmiermodelle, die durch die Beschleunigerintegrationsschaltung 1536 gesteuert werden, und Programmiermodelle beinhalten können, die durch das Grafikbeschleunigungsmodul 1546 gesteuert werden.
  • In mindestens einer Ausführungsform sind die Grafikverarbeitungs-Engines 1531(1)-1531(N) für eine einzelne Anwendung oder einen einzelnen Prozess unter einem einzigen Betriebssystem bestimmt. In mindestens einer Ausführungsform kann eine einzelne Anwendung andere Anwendungsanforderungen zu der Grafikverarbeitungs-Engines 1531(1)-1531(N) lenken und so eine Virtualisierung innerhalb einer VM/Partition bereitstellen.
  • In mindestens einer Ausführungsform können die Grafikverarbeitungs-Engines 1531(1)-1531(N) von mehreren VM-/Anwendungspartitionen gemeinsam genutzt werden. In mindestens einer Ausführungsform können gemeinsam genutzte Modelle einen System-Hypervisor verwenden, um die Grafikverarbeitungs-Engines 1531 (1)-1531(N) zu virtualisieren und den Zugriff durch jedes Betriebssystem zu ermöglichen. Bei Systemen mit einzelner Partition ohne Hypervisor befinden sich die Grafikverarbeitungs-Engines 1531(1)-1531(N) in mindestens einer Ausführungsform im Besitz eines Betriebssystems. In mindestens einer Ausführungsform kann ein Betriebssystem die Grafikverarbeitungs-Engines 1531(1)-1531(N) virtualisieren, um Zugriff auf jeden Prozess oder jede Anwendung bereitzustellen.
  • In mindestens einer Ausführungsform wählt das Grafikbeschleunigungsmodul 1546 oder eine einzelne Grafikverarbeitungs-Engine 1531 (1)-1531(N) ein Prozesselement unter Verwendung eines Prozessidentifikators aus. In mindestens einer Ausführungsform sind die Prozesselemente in dem Systemspeicher 1514 gespeichert und unter Verwendung der hierin beschriebenen Technik zur Übersetzung von effektiven Adressen in reale Adressen adressierbar. In mindestens einer Ausführungsform kann ein Prozessidentifikator ein implementationsspezifischer Wert sein, der einem Host-Prozess bereitgestellt wird, wenn er seinen Kontext bei der Grafikverarbeitungs-Engine 1531(1)-1531(N) registriert (das heißt, die Systemsoftware aufruft, um ein Prozesselement zu einer mit dem Prozesselement verknüpften Liste hinzuzufügen). In mindestens einer Ausführungsform können die unteren 16 Bit eines Prozessidentifikators einen Versatz eines Prozesselements innerhalb einer mit dem Prozesselement verknüpften Liste sein.
  • 15D veranschaulicht eine beispielhafte Beschleuniger-Integrations-Slice 1590. In mindestens einer Ausführungsform umfasst ein „Slice“ einen vorgegebenen Abschnitt der Verarbeitungsressourcen der Beschleuniger-Integrationsschaltung 1536. In mindestens einer Ausführungsform ist eine Anwendung effektiver Adressraum 1582 innerhalb des Systemspeichers 1514, der Prozesselemente 1583 speichert. In mindestens einer Ausführungsform werden Prozesselemente 1583 als Reaktion auf GPU-Aufrufe 1581 von Anwendungen 1580, die auf dem Prozessor 1507 ausgeführt werden, gespeichert. In mindestens einer Ausführungsform enthält ein Prozesselement 1583 den Prozesszustand für die entsprechende Anwendung 1580. In mindestens einer Ausführungsform kann ein in dem Prozesselement 1583 enthaltener Arbeitsdeskriptor (work descriptor- WD) 1584 eine einzelne durch eine Anwendung angeforderte Aufgabe sein oder einen Zeiger auf eine Warteschlange von Aufgaben enthalten. In mindestens einer Ausführungsform ist der WD 1584 ein Zeiger auf eine Aufgabeanforderungswarteschlange im effektiven Adressraum 1582 einer Anwendung.
  • In mindestens einer Ausführungsform können das Grafikbeschleunigungsmodul 1546 und/oder die einzelnen Grafikverarbeitungs-Engines 1531(1)-1531(N) von allen oder einer Teilmenge der Prozesse in einem System gemeinsam genutzt werden. In mindestens einer Ausführungsform kann eine Infrastruktur zum Einrichten der Prozesszustände und zum Senden eines WD 1584 an ein Grafikbeschleunigungsmodul 1546 zum Starten einer Aufgabe in einer virtualisierten Umgebung enthalten sein.
  • In mindestens einer Ausführungsform ist ein Programmiermodell mit dediziertem Prozess implementationsspezifisch. In mindestens einer Ausführungsform besitzt in diesem Modell ein einzelner Prozess das Grafikbeschleunigungsmodul 1546 oder eine einzelne Grafikverarbeitungs-Engine 1531. Wenn das Grafikbeschleunigungsmodul 1546 durch einen einzelnen Prozess in Besitz genommen ist, initialisiert ein Hypervisor in mindestens einer Ausführungsform die Beschleuniger-Integrationsschaltung 1536 für eine besitzende Partition und ein Betriebssystem initialisiert die Beschleuniger-Integrationsschaltung 1536 für einen besitzenden Prozess, wenn das Grafikbeschleunigungsmodul 1546 zugeordnet ist.
  • In mindestens einer Ausführungsform ruft im Betrieb eine WD-Abrufeinheit 1591 in der Beschleuniger-Integrations-Slice 1590 den nächsten WD 1584 ab, der eine Angabe der Arbeit beinhaltet, die durch eine oder mehrere Grafikverarbeitungs-Engines des Grafikbeschleunigungsmoduls 1546 zu erledigen ist. In mindestens einer Ausführungsform können Daten von dem WD 1584 in den Registern 1545 gespeichert und durch die MMU 1539, die Unterbrechungsverwaltungsschaltung 1547 und/oder die Kontextverwaltungsschaltung 1548 verwendet werden, wie veranschaulicht. Eine Ausführungsform der MMU 1539 beinhaltet zum Beispiel eine Segment-/Seitenlaufschaltung zum Zugreifen auf Segment-/Seitentabellen 1586 innerhalb des virtuellen Adressraums 1585 eines OS. In mindestens einer Ausführungsform kann die Unterbrechungsverwaltungsschaltung 1547 von dem Grafikbeschleunigungsmodul 1546 empfangene Unterbrechungsereignisse 1592 verarbeiten. In mindestens einer Ausführungsform wird beim Durchführen von Grafikoperationen eine effektive Adresse 1593, die von einer Grafikverarbeitungsengine 1531(1)-1531(N) erzeugt wird, von der MMU 1539 in eine reale Adresse übersetzt.
  • In mindestens einer Ausführungsform werden Register 1545 für jede Grafikverarbeitungsengine 1531(1)-1531(N) und/oder Grafikbeschleunigungsmodul 1546 dupliziert und können durch einen Hypervisor oder ein Betriebssystem initialisiert werden. Jedes dieser duplizierten Register kann in mindestens einer Ausführungsform in einer Beschleuniger-Integrations-Slice 1590 beinhaltet sein. Beispielhafte Register, die durch einen Hypervisor initialisiert werden können, sind in Tabelle 1 gezeigt. Tabelle 1 - Vom Hypervisor initialisierte Register
    Register Nr. Beschreibung
    1 Slice-Steuerregister
    2 Bereichszeiger für geplante Prozesse mit realer Adresse (RA).
    3 Autoritätsmasken-Überschreibungsregister
    4 Unterbrechungsvektor-Tabelleneintragsversatz
    5 Untebrechungsvektor-Tabelleneintragsgrenze
    6 Zustandsregister
    7 Logikpartitions-ID
    8 Hypervisor-Beschleunigernutzungsaufzeichungszeiger mit realer Adresse (RA)
    9 Speicherbeschreibungsregister
  • Beispielhafte Register, die von einem Betriebssystem initialisiert werden können, sind in Tabelle 2 aufgeführt. Tabelle 2 - Vom Betriebssystem initialisierte Register
    Register Nr. Beschreibung
    1 Prozess- und Thread-Identifizierung
    2 Kontextspeicherungs-/-wiederherstellungszeiger mit effektiver Adresse (EA)
    3 Beschleunigernutzungsaufzeichnungszeiger mit virtueller Adresse (VA)
    4 Speichersegmenttabellenzeiger mit virtueller Adresse (VA)
    5 Autoritätsmaske
    6 Arbeitsdeskriptor
  • In mindestens einer Ausführungsform ist jeder WD 1584 spezifisch für ein konkretes Grafikbeschleunigungsmodul 1546 und/oder die Grafikverarbeitungs-Engines 1531(1)-1531(N). In mindestens einer Ausführungsform enthält er alle Informationen, die für eine Grafikverarbeitungs-Engine 1531(1)-1531(N) erforderlich sind, um Arbeit zu verrichten, oder er kann ein Zeiger auf einen Speicherort sein, an dem eine Anwendung eine Befehlswarteschlange von abzuschließender Arbeit eingerichtet hat.
  • 15E veranschaulicht zusätzliche Details für eine beispielhafte Ausführungsform eines gemeinsam genutzten Modells. Diese Ausführungsform beinhaltet einen realen Hypervisor-Adressraum 1598, in dem eine Prozesselementliste 1599 gespeichert ist. In mindestens einer Ausführungsform kann auf den realen Hypervisor-Adressraum 1598 über einen Hypervisor 1596 zugegriffen werden, der die Grafikbeschleunigungsmodul-Engines für das Betriebssystem 1595 virtualisiert.
  • In mindestens einer Ausführungsform ermöglichen gemeinsam genutzte Programmiermodelle, dass alle oder eine Teilmenge von Prozessen aus allen oder einer Teilmenge von Partitionen in einem System ein Grafikbeschleunigungsmodul 1546 verwenden. In mindestens einer Ausführungsform gibt es zwei Programmiermodelle, bei denen das Grafikbeschleunigungsmodul 1546 von mehreren Prozessen und Partitionen gemeinsam genutzt wird, nämlich über Zeit-Slices gemeinsam genutzt und über gerichtete Grafik gemeinsam genutzt.
  • In mindestens einer Ausführungsform besitzt in diesem Modell der System-Hypervisor 1596 das Grafikbeschleunigungsmodul 1546 und er stellt seine Funktion allen Betriebssystemen 1595 zur Verfügung. Damit ein Grafikbeschleunigungsmodul 1546 die Virtualisierung durch den System-Hypervisor 1596 unterstützt, muss in mindestens einer Ausführungsform das Grafikbeschleunigungsmodul 1546 bestimmte Anforderungen einhalten, wie etwa (1) die Aufgabenanforderung einer Anwendung muss autonom sein (das heißt, der Zustand muss zwischen den Aufgaben nicht beibehalten werden), oder das Grafikbeschleunigungsmodul 1546 muss einen Mechanismus zum Sichern und Wiederherstellen von Kontext bereitstellen, (2) das Grafikbeschleunigungsmodul 1546 garantiert, dass die Aufgabenanforderung einer Anwendung innerhalb einer vorgegebenen Zeitspanne abgeschlossen wird, einschließlich etwaiger Übersetzungsfehler, oder das Grafikbeschleunigungsmodul 1546 stellt eine Fähigkeit bereit, die Verarbeitung einer Aufgabe vorwegzunehmen, und (3) dem Grafikbeschleunigungsmodul 1546 muss Fairness zwischen den Prozessen garantiert werden, wenn es in einem gerichteten gemeinsam genutzten Programmiermodell arbeitet.
  • In mindestens einer Ausführungsform ist es erforderlich, dass die Anwendung 1580 einen Systemaufruf des Betriebssystems 1595 mit einem Grafikbeschleunigungsmodultyp, einem Arbeitsdeskriptor (WD), einem Wert des Autoritätsmaskenregisters (authority mask register - AMR) und einem Kontext-Sicherungs-/-Wiederherstellungsbereichszeiger (context save/restore area pointer - CSRP) vornimmt. In mindestens einer Ausführungsform beschreibt der Typ des Grafikbeschleunigungsmoduls eine gezielte Beschleunigungsfunktion für einen Systemaufruf. In mindestens einer Ausführungsform kann der Typ des Grafikbeschleunigungsmoduls ein systemspezifischer Wert sein. In mindestens einer Ausführungsform ist der WD spezifisch für das Grafikbeschleunigungsmodul 1546 formatiert und er kann in Form eines Befehls des Grafikbeschleunigungsmoduls 1546, eines effektiven Adresszeigers auf eine benutzerdefinierte Struktur, eines effektiven Adresszeigers auf eine Befehlswarteschlange oder einer beliebigen anderen Datenstruktur vorliegen, um durch das Grafikbeschleunigungsmodul 1546 zu verrichtende Arbeit zu beschreiben.
  • In mindestens einer Ausführungsform ist ein AMR-Wert ein AMR-Zustand, der für einen derzeitigen Prozess zu verwenden ist. In mindestens einer Ausführungsform ist ein Wert, der an ein Betriebssystem übergeben wird, ähnlich einer Anwendung, die einen AMR festlegt. Falls in mindestens einer Ausführungsform Implementationen der Beschleuniger-Integrationsschaltung 1536 (nicht gezeigt) und des Grafikbeschleunigungsmoduls 1546 kein Benutzer-Autoritätsmasken-Überschreibungsregister (User Authority Mask Override Register - UAMOR) unterstützen, kann ein Betriebssystem einen derzeitigen UAMOR-Wert auf einen AMR-Wert anwenden, bevor ein AMR in einem Hypervisor-Aufruf übergeben wird. In mindestens einer Ausführungsform kann der Hypervisor 1596 optional einen derzeitigen Wert für ein Autoritätsmasken-Überschreibungsregister (Authority Mask Override Register-AMOR) anwenden, bevor ein AMR in dem Prozesselement 1583 platziert wird. In mindestens einer Ausführungsform ist CSRP eines der Register 1545, die eine effektive Adresse eines Bereichs im effektiven Adressraum 1582 einer Anwendung für das Grafikbeschleunigungsmodul 1546 zum Sichern und Wiederherstellen des Kontextzustands enthalten. In mindestens einer Ausführungsform ist dieser Zeiger optional, falls zwischen Aufgaben oder bei der Präemption einer Aufgabe kein Zustand gespeichert werden muss. In mindestens einer Ausführungsform kann der Kontext-Sicherungs-/-Wiederherstellungsbereich gepinnter Systemspeicher sein.
  • Beim Empfangen eines Systemaufrufs kann das Betriebssystem 1595 verifizieren, ob die Anwendung 1580 registriert ist und die Autorität zum Verwenden des Grafikbeschleunigungsmoduls 1546 bekommen hat. In mindestens einer Ausführungsform ruft das Betriebssystem 1595 dann den Hypervisor 1596 mit den in Tabelle 3 gezeigten Informationen auf. Tabelle 3 - OS-zu-Hypervisor-Aufrufparameter
    Parameter Nr. Beschreibung
    1 Ein Arbeitsdeskriptor (WD)
    2 Ein Autoritätsmaskenregister-(AMR-)Wert (möglicherweise maskiert)
    3 Ein Kontextspeicherungs-/-wiederherstellungsbereichszeiger (CSRP) mit effektiver Adresse (EA)
    4 Eine Prozess-ID (PID) und eine optionale Thread-ID (TID)
    5 Beschleunigernutzungsaufzeichnungszeiger (AURP) mit virtueller Adresse (VA)
    6 Speichersegmenttabellenzeiger (SSTP) mit virtueller Adresse
    7 Eine logische Unterbrechungsdienstnummer (LISN)
  • In mindestens einer Ausführungsform verifiziert der Hypervisor 1596 beim Empfangen eines Hypervisor-Aufrufs, dass das Betriebssystem 1595 registriert ist und die Autorität zur Verwendung des Grafikbeschleunigungsmoduls 1546 bekommen hat. In mindestens einer Ausführungsform setzt der Hypervisor 1596 dann das Prozesselement 1583 in eine mit dem Prozesselement verknüpfte Liste für einen entsprechenden Typ des Grafikbeschleunigungsmoduls 1546 ein. In mindestens einer Ausführungsform kann ein Prozesselement die in Tabelle 4 gezeigten Informationen beinhalten. Tabelle 4 - Prozesselementinformationen
    Element Nr. Beschreibung
    1 Ein Arbeitsdeskriptor (WD)
    2 Ein Autoritätsmaskenregister-(AMR-)Wert (möglicherweise maskiert).
    3 Ein Kontextspeicherungs-/-wiederherstellungsbereichszeiger (CSRP) mit effektiver Adresse (EA)
    4 Eine Prozess-ID (PID) und eine optionale Thread-ID (TID)
    5 Beschleunigernutzungsaufzeichnungszeiger (AURP) mit virtueller Adresse (VA)
    6 Speichersegmenttabellenzeiger (SSTP) mit virtueller Adresse
    7 Eine logische Unterbrechungsdienstnummer (LISN)
    8 Unterbrechungsvektortabelle, abgeleitet von Hypervisor-Aufrufparametern
    9 Ein Zustandsregister-(SR-)Wert
    10 Eine Logikpartitions-ID (LPID)
    11 Ein Hypervisor-Beschleunigernutzungsaufzeichungszeiger mit realer Adresse (RA)
    12 Speicherdeskriptorregister (SDR)
  • In mindestens einer Ausführungsform initialisiert der Hypervisor eine Vielzahl von Registern 1545 der Beschleuniger-Integrations-Slice 1590.
  • Wie in 15F veranschaulicht, wird in mindestens einer Ausführungsform ein einheitlicher Speicher verwendet, der über einen gemeinsamen virtuellen Speicheradressraum adressierbar ist, der zum Zugreifen auf die physischen Prozessorspeicher 1501(1)-1501(N) und die GPU-Speicher 1520(1)-1520(N) verwendet wird. In dieser Implementation nutzen Operationen, die auf den GPUs 1510(1)-1510(N) ausgeführt werden, einen gleichen virtuellen/effektiven Speicheradressraum für den Zugriff auf die Prozessorspeicher 1501(1)-1501(M) und umgekehrt, was die Programmierbarkeit vereinfacht. In mindestens einer Ausführungsform wird ein erster Abschnitt eines virtuellen/effektiven Adressraums dem Prozessorspeicher 1501(1) zugewiesen, ein zweiter Abschnitt dem zweiten Prozessorspeicher 1501(N), ein dritter Abschnitt dem GPU-Speicher 1520(1) und so weiter. In mindestens einer Ausführungsform wird dadurch ein gesamter virtueller/effektiver Speicherbereich (manchmal als effektiver Adressbereich bezeichnet) auf jeden der Prozessorspeicher 1501 und GPU-Speicher 1520 verteilt, wodurch es jedem Prozessor oder jeder GPU ermöglicht wird, auf beliebige physische Speicher mit einer virtuellen Adresse zuzugreifen, die diesem Speicher zugeordnet ist.
  • In mindestens einer Ausführungsform stellt die Verzerrungs-/Kohärenzverwaltungsschaltung 1594A-1594E in einer oder mehreren der MMUs 1539A-1539E die Zwischenspeicherkohärenz zwischen Zwischenspeichern von einem oder mehreren Hostprozessoren (z.B. 1505) und den GPUs 1510 sicher und setzt Verzerrungsmethoden um, die physische Speicher angeben, in denen bestimmte Arten von Daten gespeichert werden sollen. In mindestens einer Ausführungsform kann, während mehrere Instanzen von Verzerrungs-/Kohärenzverwaltungsschaltung 1594A-1594E in 15F veranschaulicht sind, eine Verzerrungs-/Kohärenzschaltung in einer MMU eines oder mehrerer Hostprozessoren 1505 und/oder in der Beschleunigerintegrationsschaltung 1536 umgesetzt sein.
  • Eine Ausführungsform ermöglicht es, dass GPU-Speicher 1520 als Teil des Systemspeichers abgebildet werden und unter Verwendung von Technologie für gemeinsam genutzten virtuellen Speicher (shared virtual memory - SVM) darauf zugegriffen wird, ohne jedoch Rechenleistungsnachteile zu erleiden, die mit der vollständigen System-Cache-Kohärenz assoziiert sind. In mindestens einer Ausführungsform stellt eine Fähigkeit, dass auf GPU-Speicher 1520 als Systemspeicher ohne lästigen Cache-Kohärenz-Overhead zugegriffen wird, eine vorteilhafte Betriebsumgebung für GPU-Abladung bereit. In mindestens einer Ausführungsform ermöglicht diese Anordnung es der Software des Host-Prozessors 1505, ohne den Overhead der traditionellen E/A-DMA-Datenkopien Operanden einzurichten und auf Berechnungsergebnisse zuzugreifen. In mindestens einer Ausführungsform sind an derartigen traditionellen Kopien Treiberaufrufe, Unterbrechungen und auf Speicher abgebildete E/A-Zugriffe (memory mapped I/O accesses - MMIO-Zugriffe) beteiligt, die alle in Bezug auf einfache Speicherzugriffe ineffizient sind. In mindestens einer Ausführungsform kann eine Fähigkeit, ohne Cache-Kohärenz-Overheads auf GPU-Speicher 1520 zuzugreifen, für die Ausführungszeit einer abgeladenen Berechnung entscheidend sein. In Fällen mit erheblichem Streaming-Schreibspeicherverkehr kann zum Beispiel der Cache-Kohärenz-Overhead eine effektive Schreibbandbreite, die durch eine GPU 1510 gesehen wird, in mindestens einer Ausführungsform erheblich reduzieren. In mindestens einer Ausführungsform können die Effizienz des Operandensetups, die Effizienz des Ergebniszugriffs und die Effizienz der GPU-Berechnung eine Rolle beim Bestimmen der Effektivität einer GPU-Abladung spielen.
  • In mindestens einer Ausführungsform wird die Auswahl von GPU-Verzerrung und Host-Prozessorverzerrung durch eine Verzerrungs-Tracker-Datenstruktur angetrieben. In mindestens einer Ausführungsform kann zum Beispiel eine Verzerrungstabelle verwendet werden, die eine seitengranulare Struktur sein kann (z.B. mit einer Granularität einer Speicherseite gesteuert), die 1 oder 2 Bit pro GPUgebundener Speicherseite beinhaltet. In mindestens einer Ausführungsform kann eine Verzerrungstabelle in einem gestohlenen Speicherbereich eines oder mehrerer GPU-Speicher 1520 implementiert werden, mit oder ohne Verzerrungs-Cache in einer GPU 1510 (um z.B. häufig/kürzlich verwendete Einträge einer Verzerrungstabelle zwischenzuspeichern). Alternativ kann in mindestens einer Ausführungsform eine gesamte Verzerrungstabelle innerhalb einer GPU aufbewahrt werden.
  • In mindestens einer Ausführungsform wird vor dem tatsächlichen Zugriff auf einen GPU-Speicher auf einen Verzerrungstabelleneintrag zugegriffen, der mit jedem Zugriff auf den GPU-gebundenen Speicher 1520 assoziiert ist, wodurch die folgenden Operationen verursacht werden. In mindestens einer Ausführungsform werden lokale Anforderungen von einer GPU 1510, die ihre Seite in der GPU-Verzerrung finden, direkt an einen entsprechenden GPU-Speicher 1520 weitergeleitet. In mindestens einer Ausführungsform werden lokale Anfragen von einer GPU, die ihre Seite in der Host-Verzerrung finden, an den Prozessor 1505 weitergeleitet (z.B. über eine Hochgeschwindigkeitsverbindung). In mindestens einer Ausführungsform schließen Anforderungen von dem Prozessor 1505, die eine angeforderte Seite in der Host-Prozessor-Verzerrung finden, eine Anforderung wie ein normales Lesen des Speichers ab. Alternativ können Anforderungen, die an eine GPU-Verzerrungsseite gerichtet sind, an eine GPU 1510 weitergeleitet werden. In mindestens einer Ausführungsform kann eine GPU dann eine Seite in eine Host-Prozessor-Verzerrung umwandeln, falls sie derzeitig keine Seite verwendet. In mindestens einer Ausführungsform kann ein Verzerrungszustand einer Seite entweder durch einen softwarebasierten Mechanismus, einen hardwareunterstützten softwarebasierten Mechanismus oder, für einen begrenzten Satz von Fällen, einen rein hardwarebasierten Mechanismus geändert werden.
  • Ein Mechanismus zum Ändern des Verzerrungszustands setzt in mindestens einer Ausführungsform einen API-Aufruf (z.B. OpenCL) ein, der wiederum den Vorrichtungstreiber einer GPU aufruft, der wiederum eine Nachricht an eine GPU sendet (oder einen Befehlsdeskriptor in die Warteschlange stellt), die sie anweist, einen Verzerrungszustand zu ändern und bei einigen Übergängen eine Cache-Leerungsoperation in einem Host durchzuführen. In mindestens einer Ausführungsform wird eine Zwischenspeicherleerungsoperation für einen Übergang von der Verzerrung des Hostprozessors 1505 zur GPU-Verzerrung verwendet, jedoch nicht für einen entgegengesetzten Übergang.
  • In mindestens einer Ausführungsform wird die Zwischenspeicherkohärenz durch das vorübergehende Rendern von GPU-verzerrten Seiten aufrechterhalten, die vom Hostprozessor 1505 nicht zwischengespeichert werden können. In mindestens einer Ausführungsform kann, um auf diese Seiten zuzugreifen, der Prozessor 1505 Zugriff von der GPU 1510 anfordern, die den Zugriff sofort gewähren kann oder nicht. Um die Kommunikation zwischen dem Prozessor 1505 und der GPU 1510 zu reduzieren, ist es daher in mindestens einer Ausführungsform vorteilhaft, sicherzustellen, dass GPU-verzerrte Seiten solche sind, die durch eine GPU, aber nicht den Host-Prozessor 1505, benötigt werden und umgekehrt.
  • Die Hardware-Struktur(en) 715 werden verwendet, um eine oder mehrere Ausführungsformen durchzuführen. Details bezüglich der Hardware-Struktur(en) 715 sind hierin in Verbindung mit 7A und/oder 7B bereitgestellt.
  • 16 veranschaulicht beispielhafte integrierte Schaltungen und damit assoziierte Grafikprozessoren, die unter Verwendung eines oder mehrerer IP-Kerne hergestellt werden können, gemäß verschiedenen hierin beschriebenen Ausführungsformen. Zusätzlich zu dem, was veranschaulicht ist, können andere Logik und Schaltungen in mindestens einer Ausführungsform enthalten sein, einschließlich zusätzlicher Grafikprozessoren/-kerne, Peripherieschnittstellensteuerungen oder Universalprozessorkerne.
  • 16 ist ein Blockdiagramm, das eine beispielhafte integrierte Schaltung 1600 als System auf einem Chip, die unter Verwendung eines oder mehrerer IP-Kerne hergestellt werden kann, gemäß mindestens einer Ausführungsform veranschaulicht. In mindestens einer Ausführungsform beinhaltet die integrierte Schaltung 1600 einen oder mehrere Anwendungsprozessor(en) 1605 (z.B. CPUs), mindestens einen Grafikprozessor 1610 und sie kann zusätzlich einen Bildprozessor 1615 und/oder einen Videoprozessor 1620 beinhalten, von denen jeder beliebige ein modularer IP-Kern sein kann. In mindestens einer Ausführungsform beinhaltet die integrierte Schaltung 1600 Peripherie- oder Buslogik, die eine USB-Steuerung 1625, eine UART-Steuerung 1630, eine SPI/SDIO-Steuerung 1635 und eine I22S/I22C-Steuerung 1640 beinhaltet. In mindestens einer Ausführungsform kann die integrierte Schaltung 1600 eine Anzeigevorrichtung 1645 beinhalten, die an eine oder mehrere von einer High-Definition-Multimedia-Interface-(HDMI-)Steuerung 1650 und einer Mobile-Industry-Processor-Interface-(MIPI-)Anzeigeschnittstelle 1655 gekoppelt ist. In mindestens einer Ausführungsform kann die Speicherung durch ein Flash-Speicherteilsystem 1660 bereitgestellt sein, das Flash-Speicher und eine Flash-Speichersteuerung beinhaltet. In mindestens einer Ausführungsform kann eine Speicherschnittstelle über eine Speichersteuerung 1665 für den Zugriff auf SDRAM- oder SRAM-Speichervorrichtungen bereitgestellt sein. In mindestens einer Ausführungsform beinhalten einige integrierte Schaltungen zusätzlich eine eingebettete Sicherheits-Engine 1670.
  • Die Inferenz- und/oder Trainingslogik 715 wird verwendet, um Inferenzierungs- und/oder Trainingsoperationen durchzuführen, die mit einer oder mehreren Ausführungsformen assoziiert sind. Details bezüglich der Inferenz- und/oder Trainingslogik 715 sind hierin in Verbindung mit 7A und/oder 7B bereitgestellt. In mindestens einer Ausführungsform kann die Inferenz- und/oder Trainingslogik 715 in der integrierten Schaltung 1600 für Inferenzierungs- oder Vorhersageoperationen zumindest teilweise basierend auf Gewichtungsparametern verwendet werden, die unter Verwendung von hierin beschriebenen Trainingsoperationen für neuronale Netzwerke, Funktionen und/oder Architekturen für neuronale Netzwerke oder Anwendungsfälle für neuronale Netzwerke berechnet wurden.
  • In mindestens einer Ausführungsform können solche Komponenten verwendet werden, um Bildsegmentierung durchzuführen, wie oben erörtert, beispielsweise in Bezug auf ein System von 1 oder 2 oder Prozesse von 4 oder 5. In mindestens einer Ausführungsform kann dies die Verwendung eines oder mehrerer erster neuronaler Netzwerke beinhalten, um zu bewirken, dass ein Lichteffekt auf ein oder mehrere Objekte in einem oder mehreren Bildern angewendet wird, die zumindest teilweise auf synthetisch erzeugten Bildern des einen oder der mehreren Objekte basieren.
  • 17A-17B veranschaulichen beispielhafte integrierte Schaltungen und zugehörige Grafikprozessoren, die unter Verwendung eines oder mehrerer IP-Kerne hergestellt sein können, gemäß verschiedenen hierin beschriebenen Ausführungsformen. Zusätzlich zu dem, was veranschaulicht ist, können andere Logik und Schaltungen in mindestens einer Ausführungsform enthalten sein, einschließlich zusätzlicher Grafikprozessoren/-kerne, Peripherieschnittstellensteuerungen oder Universalprozessorkerne.
  • 17A-17B sind Blockdiagramme, die beispielhafte Grafikprozessoren zur Verwendung innerhalb eines SoC gemäß hierin beschriebenen Ausführungsformen veranschaulichen. 17A veranschaulicht einen beispielhaften Grafikprozessor 1710 einer integrierten Schaltung als System auf einem Chip, die unter Verwendung eines oder mehrerer IP-Kerne hergestellt werden kann, gemäß mindestens einer Ausführungsform. 17B veranschaulicht einen zusätzlichen beispielhaften Grafikprozessor 1740 einer integrierten Schaltung als System auf einem Chip, die unter Verwendung eines oder mehrerer IP-Kerne hergestellt werden kann, gemäß mindestens einer Ausführungsform. In mindestens einer Ausführungsform ist der Grafikprozessor 1710 aus 17A ein Grafikprozessorkern mit niedriger Leistung. In mindestens einer Ausführungsform ist der Grafikprozessor 1740 aus 17B ein Grafikprozessorkern mit höherer Rechenleistung. In mindestens einer Ausführungsform kann jeder der Grafikprozessoren 1710, 1740 eine Variante des Grafikprozessors 1610 aus 16 sein.
  • In mindestens einer Ausführungsform beinhaltet der Grafikprozessor 1710 einen Vertexprozessor 1705 und einen oder mehrere Fragmentprozessor(en) 1715A-1715N (z.B. 1715A, 1715B, 1715C, 1715D bis 1715N-1 und 1715N). In mindestens einer Ausführungsform kann der Grafikprozessor 1710 unterschiedliche Shader-Programme über separate Logik ausführen, sodass der Vertexprozessor 1705 zum Ausführen von Operationen für Vertex-Shader-Programme optimiert ist, während ein oder mehrere Fragmentprozessor(en) 1715A-1715N Shading-Operationen für Fragmente (z.B. Pixel) für Fragment- oder Pixel-Shader-Programme ausführen. In mindestens einer Ausführungsform führt der Vertexprozessor 1705 eine Vertexverarbeitungsstufe einer 3D-Grafik-Pipeline durch und erzeugt Primitive und Vertexdaten. In mindestens einer Ausführungsform verwenden die Fragmentprozessor(en) 1715A-1715N Primitiv- und Vertexdaten, die durch den Vertexprozessor 1705 erzeugt wurden, um einen Bildspeicher zu produzieren, der auf einer Anzeigevorrichtung angezeigt wird. In mindestens einer Ausführungsform sind die Fragmentprozessor(en) 1715A-1715N zum Ausführen von Fragment-Shader-Programmen optimiert, wie sie in einer OpenGL-API bereitgestellt sind, die zum Durchführen ähnlicher Operationen wie ein Pixel-Shader-Programm verwendet werden können, wie es in einer Direct-3D-API bereitgestellt ist.
  • In mindestens einer Ausführungsform beinhaltet der Grafikprozessor 1710 zusätzlich eine(n) oder mehrere Speicherverwaltungseinheiten (MMUs) 1720A-1720B, Cache(s) 1725A-1725B und Schaltungszusammenschaltung(en) 1730A-1730B. In mindestens einer Ausführungsform stellen eine oder mehrere MMU(s) 1720A-1720B die Abbildung von virtuellen auf physische Adressen für den Grafikprozessor 1710 bereit, einschließlich für den Vertexprozessor 1705 und/oder die Fragmentprozessor(en) 1715A-1715N, der/die auf in Speicher gespeicherte Vertex- oder Bild-/Texturdaten verweisen kann/können, zusätzlich zu den in einem oder mehreren Cache(s) 1725A-1725B gespeicherten Vertex- oder Bild-/Texturdaten. In mindestens einer Ausführungsform können eine oder mehrere MMU(s) 1720A-1720B mit anderen MMUs innerhalb eines Systems synchronisiert werden, einschließlich einer oder mehrerer MMUs, die mit einem oder mehreren Anwendungsprozessor(en) 1605, Bildprozessoren 1615 und/oder Videoprozessoren 1620 aus 16 assoziiert sind, sodass jeder Prozessor 1605-1620 an einem gemeinsam genutzten oder einheitlichen virtuellen Speichersystem teilnehmen kann. In mindestens einer Ausführungsform ermöglichen es eine oder mehrere Schaltungszusammenschaltung(en) 1730A-1730B dem Grafikprozessor 1710, entweder über einen internen Bus des SoC oder über eine direkte Verbindung Schnittstellen mit anderen IP-Kernen innerhalb des SoC zu bilden.
  • In mindestens einer Ausführungsform beinhaltet der Grafikprozessor 1740 einen oder mehrere Shader-Kern(e) 1755A-1755N (z.B. 1755A, 1755B, 1755C, 1755D, 1755E, 1755F bis 1755N-1 und 1755N), wie in 17B dargestellt, was eine vereinheitlichte Shader-Kernarchitektur bereitstellt, bei der ein einzelner Kern oder eine einzelne Art von Kern alle Arten von programmierbarem Shader-Code ausführen kann, einschließlich Shader-Programmcode zur Implementierung von Vertex-Shadern, Fragment-Shadern und/oder Rechen-Shadern. In mindestens einer Ausführungsform kann eine Anzahl der Shader-Kerne variieren. In mindestens einer Ausführungsform beinhaltet der Grafikprozessor 1740 einen Zwischenkern-Task-Verwalter 1745, der als Thread-Dispatcher fungiert, um Ausführungs-Threads einem oder mehreren Shader-Kernen 1755A-1755N zuzuteilen, sowie eine Kachelungseinheit 1758 zum Beschleunigen von Kachelungsoperationen für das kachelbasierte Rendering, bei dem Rendering-Operationen für eine Szene in dem Bildraum unterteilt werden, um zum Beispiel die lokale räumliche Kohärenz innerhalb einer Szene auszunutzen oder die Verwendung interner Caches zu optimieren.
  • Die Inferenz- und/oder Trainingslogik 715 wird verwendet, um Inferenzierungs- und/oder Trainingsoperationen durchzuführen, die mit einer oder mehreren Ausführungsformen assoziiert sind. Details bezüglich der Inferenz- und/oder Trainingslogik 715 sind hierin in Verbindung mit 7A und/oder 7B bereitgestellt. In mindestens einer Ausführungsform kann die Inferenz- und/oder Trainingslogik 715 in der integrierten Schaltung 17A und/oder 17B für Inferenzierungs- oder Vorhersageoperationen zumindest teilweise basierend auf Gewichtungsparametern verwendet werden, die unter Verwendung von hierin beschriebenen Trainingsoperationen für neuronale Netzwerke, Funktionen und/oder Architekturen für neuronale Netzwerke oder Anwendungsfälle für neuronale Netzwerke berechnet wurden.
  • In mindestens einer Ausführungsform können solche Komponenten verwendet werden, um Bildsegmentierung durchzuführen, wie oben erörtert, beispielsweise in Bezug auf ein System von 1 oder 2 oder Prozesse von 4 oder 5. In mindestens einer Ausführungsform kann dies die Verwendung eines oder mehrerer erster neuronaler Netzwerke beinhalten, um zu bewirken, dass ein Lichteffekt auf ein oder mehrere Objekte in einem oder mehreren Bildern angewendet wird, die zumindest teilweise auf synthetisch erzeugten Bildern des einen oder der mehreren Objekte basieren.
  • 18A-18B veranschaulichen zusätzliche beispielhafte Grafikprozessorlogik gemäß hierin beschriebenen Ausführungsformen. 18A veranschaulicht einen Grafikkern 1800, der in mindestens einer Ausführungsform im Grafikprozessor 1610 aus 16 enthalten sein kann und in mindestens einer Ausführungsform ein vereinheitlichter Shader-Kern 1755A-1755N, wie in 17B, sein kann. 18B veranschaulicht eine hochparallele Universal-Grafikverarbeitungseinheit (general-purpose graphics processing unit - „GPGPU“) 1830, die in mindestens einer Ausführungsform für den Einsatz auf einem Multi-Chip-Modul geeignet ist.
  • In mindestens einer Ausführungsform beinhaltet der Grafikkern 1800 einen gemeinsam genutzten Anweisungscache 1802, eine Textureinheit 1818 und einen Cache/gemeinsam genutzten Speicher 1820 (der z.B. einen L1-, L2-, L3-, Last-Level-Cache oder andere Caches beinhaltet), die Ausführungsressourcen innerhalb des Grafikkerns 1800 gemeinsam sind. In mindestens einer Ausführungsform kann der Grafikkern 1800 mehrere Slices 1801A-1801N oder eine Partition für jeden Kern beinhalten, und ein Grafikprozessor kann mehrere Instanzen des Grafikkerns 1800 beinhalten. In mindestens einer Ausführungsform bezieht sich jedes Slice 1801A-1801N auf den Grafikkern 1800. In mindestens einer Ausführungsform weisen die Slices 1801A-1801N Unterslices auf, die Teil eines Slice 1801A-1801N sind. In mindestens einer Ausführungsform sind die Slices 1801A-1801N unabhängig von anderen Slices oder von anderen Slices abhängig. In mindestens einer Ausführungsform können die Slices 1801A-1801N Unterstützungslogik beinhalten, die einen lokalen Anweisungscache 1804A-1804N, einen Thread-Scheduler (Sequenzer) 1806A-1806N, einen Thread-Dispatcher 1808A-1808N und einen Satz von Registern 1810A-1810N beinhaltet. In mindestens einer Ausführungsform können die Slices 1801A-1801N einen Satz zusätzlicher Funktionseinheiten (additional function units - AFUs 1812A-1812N), Gleitkommaeinheiten (floating-point units - FPUs 1814A-1814N), arithmetisch-logischer Ganzzahl-Einheiten (ALUs 1816A-1816N), Adressberechnungseinheiten (address computational units - ACUs 1813A-1813N), Gleitkommaeinheiten mit doppelter Genauigkeit (double-precision floating-point units - DPFPUs 1815A-1815N) und Matrixverarbeitungseinheiten (matrix processing units - MPUs 1817A-1817N) beinhalten.
  • In mindestens einer Ausführungsform beinhaltet jedes Slice 1801A-1801N eine oder mehrere Engines für Gleitkomma- und Ganzzahl-Vektoroperationen und eine oder mehrere Engines zur Beschleunigung von Faltungs- und Matrixoperationen bei KI, maschinellem Lernen oder Arbeitslasten mit großen Datensätzen. In mindestens einer Ausführungsform beinhalten ein oder mehrere Slices 1801A-1801N eine oder mehrere Vektor-Engines, um einen Vektor zu berechnen (z.B. mathematische Operationen für Vektoren zu berechnen). In mindestens einer Ausführungsform kann eine Vektor-Engine eine Vektoroperation in 16-Bit-Gleitkomma (auch als „FP16“ bezeichnet), 32-Bit-Gleitkomma (auch als „FP32“ bezeichnet) oder 64-Bit-Gleitkomma berechnen (auch als „FP64“ bezeichnet). In mindestens einer Ausführungsform beinhalten ein oder mehrere Slices 1801A-1801N 16 Vektor-Engines, die mit 16 Matrix-Matheeinheiten gepaart sind, um Matrix-/Tensoroperationen zu berechnen, wobei Vektor-Engines und Mathematikeinheiten über Matrixerweiterungen verfügbar gemacht werden. In mindestens einer Ausführungsform ist ein Slice ein spezifizierter Teil der Verarbeitungsressourcen einer Verarbeitungseinheit, z.B. 16 Kerne und eine Strahlverfolgungseinheit oder 8 Kerne, ein Thread-Scheduler, ein Thread-Dispatcher und zusätzliche Funktionseinheiten für einen Prozessor. In mindestens einer Ausführungsform beinhaltet der Grafikkern 1800 eine oder mehrere Matrix-Engines zur Berechnung von Matrixoperationen, z.B. bei der Berechnung von Tensoroperationen.
  • In mindestens einer Ausführungsform beinhalten ein oder mehrere Slices 1801A-1801N eine oder mehrere Strahlverfolgungseinheiten zum Berechnen von Strahlverfolgungsoperationen (z.B. Slices 1801A-1801N mit 16 Strahlverfolgungseinheiten pro Slice). In mindestens einer Ausführungsform berechnet eine Strahlverfolgungseinheit Strahltraversierung, Dreiecksschnitt, Begrenzungsrahmenschnitt oder andere Strahlverfolgungsoperationen.
  • In mindestens einer Ausführungsform beinhalten ein oder mehrere Slices 1801A-1801N einen Medien-Slice, der Daten codiert, decodiert und/oder transcodiert; Daten skaliert und/oder ihr Format konvertiert; und/oder Videoqualitätsoperationen an Videodaten durchführt.
  • In mindestens einer Ausführungsform sind ein oder mehrere Slices 1801A-1801N mit L2-Cache und Speicherstruktur, Verbindungsanschlüssen, Speicherstapeln mit hoher Bandbreite (HBM) (z.B. HBM2e, HDM3) und einer Medien-Engine verbunden. In mindestens einer Ausführungsform beinhalten ein oder mehrere Slices 1801A-1801N mehrere Kerne (z.B. 16 Kerne) und mehrere Strahlverfolgungseinheiten (z.B. 16), die mit jedem Kern gepaart sind. In mindestens einer Ausführungsform verfügen ein oder mehrere Slices 1801A-1801N über einen oder mehrere L1-Caches. In mindestens einer Ausführungsform beinhalten ein oder mehrere Slices 1801A-1801N eine oder mehrere Vektor-Engines; ein oder mehrere Anweisungscaches zum Speichern von Anweisungen; ein oder mehrere L1-Caches zum Zwischenspeichern von Daten; ein oder mehrere gemeinsam genutzte lokale Speicher (SLMs) zum Speichern von Daten, z.B. entsprechend Anweisungen; ein oder mehrere Abtaster zum Abtasten von Daten; eine oder mehrere Strahlverfolgungseinheiten zur Durchführung von Strahlverfolgungsoperationen; eine oder mehrere Geometrien, um Operationen in Geometrie-Pipelines auszuführen und/oder geometrische Transformationen auf Eckpunkte oder Polygone anzuwenden; ein oder mehrere Rasterizer, um ein Bild im Vektorgrafikformat (z.B. einer Form) zu beschreiben und es in ein Rasterbild umzuwandeln (z.B. eine Reihe von Pixeln, Punkten oder Linien, die bei gemeinsamer Anzeige ein Bild erzeugen, das durch Formen dargestellt wird); ein oder mehrere hierarchische Tiefenpuffer (Hiz) zum Puffern von Daten; und/oder ein oder mehrere Pixel-Backends. In mindestens einer Ausführungsform beinhalten ein Slice 1801A-1801N eine Speicherstruktur, z.B. einen L2-Cache.
  • In mindestens einer Ausführungsform können die FPUs 1814A-1814N Gleitkommaoperationen mit einfacher Genauigkeit (32 Bit) und mit halber Genauigkeit (16 Bit) ausführen, während die DPFPUs 1815A-1815N Gleitkommaoperationen mit doppelter Genauigkeit (64 Bit) ausführen. In mindestens einer Ausführungsform können die ALUs 1816A-1816N ganzzahlige Operationen mit variabler Präzision mit einer Genauigkeit von 8-Bit, 16-Bit und 32-Bit ausführen und können für Operationen mit gemischter Präzision konfiguriert sein. In mindestens einer Ausführungsform können die MPUs 1817A-1817N auch für Matrixoperationen mit gemischter Genauigkeit konfiguriert sein, die Gleitkomma- und 8-Bit-Ganzzahloperationen mit halber Genauigkeit beinhalten. In mindestens einer Ausführungsform können die MPUs 1817A-1817N eine Vielfalt von Matrixoperationen durchführen, um Anwendungs-Frameworks für maschinelles Lernen zu beschleunigen, einschließlich des Ermöglichens der Unterstützung für eine beschleunigte allgemeine Matrix-zu-Matrix-Multiplikation (general matrix to matrix multiplication - GEMM). In mindestens einer Ausführungsform können die AFUs 1812A-1812N zusätzliche logische Operationen durchführen, die nicht von Gleitkomma- oder Ganzzahleinheiten unterstützt werden, die trigonometrische Operationen (z.B. Sinus, Cosinus usw.) beinhalten. Die Inferenz- und/oder Trainingslogik 715 wird verwendet, um Inferenzierungs- und/oder Trainingsoperationen durchzuführen, die mit einer oder mehreren Ausführungsformen assoziiert sind. Details bezüglich der Inferenz- und/oder Trainingslogik 715 sind hierin in Verbindung mit 7A und/oder 7B bereitgestellt. In mindestens einer Ausführungsform kann eine Inferenz- und/oder Trainingslogik 715 im Grafikkern 1800 für Inferenzierungs- oder Vorhersageoperationen zumindest teilweise basierend auf Gewichtungsparametern verwendet werden, die unter Verwendung von hierin beschriebenen Trainingsoperationen für neuronale Netzwerke, Funktionen und/oder Architekturen für neuronale Netzwerke oder Anwendungsfälle für neuronale Netzwerke berechnet wurden.
  • In mindestens einer Ausführungsform beinhaltet der Grafikkern 1800 eine Zusammenschaltung und eine Link-Fabric-Teilschicht, die mit einem Switch und einer GPU-GPU-Brücke verbunden ist, die es ermöglicht, mehrere Grafikprozessoren 1800 (z.B. 8) ohne Kleber mit Lade-/Speichereinheiten (load/store units - LSUs), Datenübertragungseinheiten und Synchronisierungssemantik über mehrere Grafikprozessoren 1800 miteinander zu verbinden. In mindestens einer Ausführungsform beinhalten Zusammenschaltungen standardisierte Zusammenschaltungen (z.B. PCIe) oder eine Kombination davon.
  • In mindestens einer Ausführungsform beinhaltet der Grafikkern 1800 mehrere Kacheln. In mindestens einer Ausführungsform handelt es sich bei einer Kachel um einen einzelnen Chip oder einen oder mehrere Chips, wobei einzelne Chips mit einer Zusammenschaltung (z.B. einer Embedded Multi-Die Interconnect Bridge (EMIB)) verbunden werden können. In mindestens einer Ausführungsform beinhaltet der Grafikkern 1800 eine Rechenkachel, eine Speicherkachel (wobei z.B. auf eine Speicherkachel exklusiv von verschiedenen Kacheln oder verschiedenen Chipsätzen zugegriffen werden kann, wie z.B. eine Rambo-Kachel), eine Substratkachel, eine Basiskachel, ein HMB-Kachel, eine Link-Kachel und EMIB-Kachel, wobei alle Kacheln im Grafikkern 1800 als Teil einer GPU zusammengepackt sind. In mindestens einer Ausführungsform kann der Grafikkern 1800 mehrere Kacheln in einem einzigen Paket beinhalten (auch als „Mehrkachelpaket“ bezeichnet). In mindestens einer Ausführungsform kann eine Rechenkachel 8 Grafikkerne 1800, einen L1-Cache aufweisen; und eine Basiskachel kann eine Hostschnittstelle mit PCIe 5.0, HBM2e, MDFI und EMIB, eine Link-Kachel mit 8 Links, 8 Ports mit einem eingebetteten Switch aufweisen. In mindestens einer Ausführungsform sind die Kacheln mittels Chip-auf-Chip-Bonden Fläche an Fläche (F2F) durch Mikrobumps mit kleinem Abstand von 36 Mikrometern (z.B. Kupfersäulen) verbunden. In mindestens einer Ausführungsform beinhaltet der Grafikkern 1800 eine Speicherstruktur, die Speicher beinhaltet, und eine Kachel ist, auf die mehrere Kacheln zugreifen können. In mindestens einer Ausführungsform speichert der Grafikkern 1800 seine eigenen Hardware-Kontexte im Speicher, greift darauf zu oder lädt sie, wobei ein Hardware-Kontext ein Satz von Daten ist, der aus Registern geladen werden, bevor ein Prozess wieder aufgenommen wird, und wobei ein Hardware-Kontext einen Zustand der Hardware anzeigen kann (z.B. Zustand einer GPU).
  • In mindestens einer Ausführungsform beinhaltet der Grafikkern 1800 eine Serialisierungs-/Deserialisierungs-(SERDES-)Schaltungsanordnung, die einen seriellen Datenstrom in einen parallelen Datenstrom umwandelt oder einen parallelen Datenstrom in einen seriellen Datenstrom umwandelt.
  • In mindestens einer Ausführungsform beinhaltet der Grafikkern 1800 eine kohärente vereinheitlichte Hochgeschwindigkeitsstruktur (GPU zu GPU), Lade-/Speichereinheiten, Massendatenübertragung und Synchronisierungssemantik sowie verbundene GPUs über einen eingebetteten Switch, wobei eine GPU-GPU-Brücke durch eine Steuerung gesteuert wird.
  • In mindestens einer Ausführungsform führt der Grafikkern 1800 eine API durch, wobei die API die Hardware des Grafikkerns 1800 abstrahiert und auf Bibliotheken mit Anweisungen zugreift, um mathematische Operationen (z.B. mathematische Kernelbibliothek) und tiefe neuronale Netzwerkoperationen (z.B. Bibliothek tiefer neuronaler Netzwerke), Vektoroperationen, kollektive Kommunikation, Thread-Bausteine, Videoverarbeitung, Datenanalysebibliothek und/oder Strahlverfolgungsoperationen durchzuführen.
  • In mindestens einer Ausführungsform können solche Komponenten verwendet werden, um Bildsegmentierung durchzuführen, wie oben erörtert, beispielsweise in Bezug auf ein System von 1 oder 2 oder Prozesse von 4 oder 5. In mindestens einer Ausführungsform kann dies die Verwendung eines oder mehrerer erster neuronaler Netzwerke beinhalten, um zu bewirken, dass ein Lichteffekt auf ein oder mehrere Objekte in einem oder mehreren Bildern angewendet wird, die zumindest teilweise auf synthetisch erzeugten Bildern des einen oder der mehreren Objekte basieren.
  • 18B veranschaulicht eine Universalverarbeitungseinheit (general-purpose processing unit - GPGPU) 1830, die konfiguriert werden kann, um hochparallele Rechenoperationen zu ermöglichen, die von einem Array von Grafikverarbeitungseinheiten ausgeführt werden sollen, in mindestens einer Ausführungsform. In mindestens einer Ausführungsform kann die GPGPU 1830 direkt mit anderen Instanzen der GPGPU 1830 verbunden sein, um einen Multi-GPU-Cluster zu erzeugen, um die Trainingsgeschwindigkeit für tiefe neuronale Netzwerke zu verbessern. In mindestens einer Ausführungsform beinhaltet die GPGPU 1830 eine Hostschnittstelle 1832, um eine Verbindung mit einem Hostprozessor zu ermöglichen. In mindestens einer Ausführungsform ist die Host-Schnittstelle 1832 eine PCI-Express-Schnittstelle. In mindestens einer Ausführungsform kann die Host-Schnittstelle 1832 eine anbieterspezifische Kommunikationsschnittstelle oder Kommunikationsstruktur sein. In mindestens einer Ausführungsform empfängt die GPGPU 1830 Befehle von einem Hostprozessor und verwendet einen globalen Scheduler 1834 (der als Thread-Sequencer und/oder asynchrone Rechen-Engine bezeichnet werden kann), um Ausführungs-Threads, die diesen Befehlen zugeordnet sind, an einen Satz von Rechenclustern 1836A-1836H zu verteilen. In mindestens einer Ausführungsform teilen sich die Rechencluster 1836A-1836H einen Cache-Speicher 1838. In mindestens einer Ausführungsform kann der Cache-Speicher 1838 als ein Cache höherer Ebene für Cache-Speicher innerhalb der Rechencluster 1836A-1836H dienen.
  • In mindestens einer Ausführungsform beinhaltet die GPGPU 1830 einen Speicher 1844A-1844B, der über einen Satz von Speichersteuerungen 1842A-1842B (z.B. eine oder mehrere Steuerungen für HBM2e) mit Rechenclustern 1836A-1836H gekoppelt ist. In mindestens einer Ausführungsform kann der Speicher 1844A-1844B verschiedene Typen von Speichervorrichtungen beinhalten, darunter dynamischer Direktzugriffsspeicher (DRAM) oder Grafik-Direktzugriffsspeicher, wie etwa synchroner Grafik-Direktzugriffsspeicher (SGRAM), darunter Grafik-Double-Data-Rate-(GDDR-)Speicher.
  • In mindestens einer Ausführungsform beinhalten die Rechencluster 1836A-1836H jeweils einen Satz von Grafikkernen, wie etwa den Grafikkern 1800 aus 18A, der mehrere Arten von Ganzzahl- und Gleitkomma-Logikeinheiten beinhalten kann, die Rechenoperationen in verschiedenen Genauigkeitsbereichen ausführen können, die solche beinhalten, die für Berechnungen für maschinelles Lernen geeignet sind. Zum Beispiel kann in mindestens einer Ausführungsform mindestens eine Teilmenge von Gleitkommaeinheiten in jedem der Rechencluster 1836A-1836H dazu konfiguriert sein, 16-Bit- oder 32-Bit-Gleitkommaoperationen auszuführen, während eine andere Teilmenge von Gleitkommaeinheiten dazu konfiguriert sein können, 64-Bit-Gleitkommaoperationen auszuführen.
  • In mindestens einer Ausführungsform können mehrere Instanzen der GPGPU 1830 so konfiguriert sein, dass sie als Rechencluster arbeiten. In mindestens einer Ausführungsform variiert die Kommunikation, die von den Rechenclustern 1836A-1836H für die Synchronisation und den Datenaustausch verwendet wird, zwischen den Ausführungsformen. In mindestens einer Ausführungsform kommunizieren mehrere Instanzen der GPGPU 1830 über die Hostschnittstelle 1832. In mindestens einer Ausführungsform beinhaltet die GPGPU 1830 einen E/A-Hub 1839, der die GPGPU 1830 mit einer GPU-Verknüpfung 1840 koppelt, der eine direkte Verbindung zu anderen Instanzen der GPGPU 1830 ermöglicht. In mindestens einer Ausführungsform ist die GPU-Verknüpfung 1840 an eine dedizierte GPU-zu-GPU-Brücke gekoppelt, welche die Kommunikation und Synchronisation zwischen mehreren Instanzen der GPGPU 1830 ermöglicht. In mindestens einer Ausführungsform ist die GPU-Verknüpfung 1840 mit einer Hochgeschwindigkeitszusammenschaltung gekoppelt, um Daten an andere GPGPUs oder Parallelprozessoren zu übertragen und davon zu empfangen. In mindestens einer Ausführungsform befinden sich mehrere Instanzen der GPGPU 1830 in getrennten Datenverarbeitungssystemen und kommunizieren über eine Netzwerkvorrichtung, auf die über die Hostschnittstelle 1832 zugegriffen werden kann. In mindestens einer Ausführungsform kann die GPU-Verknüpfung 1840 dazu konfiguriert sein, eine Verbindung zu einem Host-Prozessor zusätzlich zu oder alternativ zu der Host-Schnittstelle 1832 zu ermöglichen.
  • In mindestens einer Ausführungsform kann die GPGPU 1830 dazu konfiguriert sein, neuronale Netzwerke zu trainieren. In mindestens einer Ausführungsform kann die GPGPU 1830 innerhalb einer Inferenzplattform verwendet werden. In mindestens einer Ausführungsform, in der die GPGPU 1830 für die Inferenz verwendet wird, kann die GPGPU 1830 weniger Rechencluster 1836A-1836H beinhalten, als wenn die GPGPU 1830 zum Trainieren eines neuronalen Netzwerks verwendet wird. In mindestens einer Ausführungsform kann sich die dem Speicher 1844A-1844B zugeordnete Speichertechnologie zwischen Inferenz- und Trainingskonfigurationen unterscheiden, wobei den Trainingskonfigurationen Speichertechnologien mit höherer Bandbreite gewidmet sind. In mindestens einer Ausführungsform kann eine Inferenzkonfiguration der GPGPU 1830 inferenzspezifische Anweisungen unterstützen. In mindestens einer Ausführungsform kann eine Inferenzkonfiguration zum Beispiel Unterstützung für eine oder mehrere 8-Bit-Ganzzahl-Skalarprodukt-Anweisungen bereitstellen, die während der Inferenzierungsoperationen für eingesetzte neuronale Netzwerke verwendet werden können.
  • Die Inferenz- und/oder Trainingslogik 715 wird verwendet, um Inferenzierungs- und/oder Trainingsoperationen durchzuführen, die mit einer oder mehreren Ausführungsformen assoziiert sind. Details bezüglich der Inferenz- und/oder Trainingslogik 715 sind hierin in Verbindung mit 7A und/oder 7B bereitgestellt. In mindestens einer Ausführungsform kann eine Inferenz- und/oder Trainingslogik 715 in der GPGPU 1830 für Inferenzierungs- oder Vorhersageoperationen zumindest teilweise basierend auf Gewichtungsparametern verwendet werden, die unter Verwendung von hierin beschriebenen Trainingsoperationen für neuronale Netzwerke, Funktionen und/oder Architekturen für neuronale Netzwerke oder Anwendungsfälle für neuronale Netzwerke berechnet wurden.
  • In mindestens einer Ausführungsform können solche Komponenten verwendet werden, um Bildsegmentierung durchzuführen, wie oben erörtert, beispielsweise in Bezug auf ein System von 1 oder 2 oder Prozesse von 4 oder 5. In mindestens einer Ausführungsform kann dies die Verwendung eines oder mehrerer erster neuronaler Netzwerke beinhalten, um zu bewirken, dass ein Lichteffekt auf ein oder mehrere Objekte in einem oder mehreren Bildern angewendet wird, die zumindest teilweise auf synthetisch erzeugten Bildern des einen oder der mehreren Objekte basieren.
  • 19 ist ein Blockdiagramm, das ein Rechensystem 1900 gemäß mindestens einer Ausführungsform veranschaulicht. In mindestens einer Ausführungsform beinhaltet das Rechensystem 1900 ein Verarbeitungsteilsystem 1901 mit einem oder mehreren Prozessoren 1902 und einem Systemspeicher 1904, der über einen Zusammenschaltungspfad kommuniziert, der einen Speicher-Hub 1905 beinhalten kann. In mindestens einer Ausführungsform kann der Speicher-Hub 1905 eine getrennte Komponente innerhalb einer Chipsatzkomponente sein oder kann in einen oder mehrere Prozessoren 1902 integriert sein. In mindestens einer Ausführungsform ist der Speicher-Hub 1905 über eine Kommunikationsverbindung 1906 mit einem E/A-Teilsystem 1911 gekoppelt. In mindestens einer Ausführungsform beinhaltet das E/A-Teilsystem 1911 einen E/A-Hub 1907, der es dem Rechensystem 1900 ermöglichen kann, Eingaben von einer oder mehreren Eingabevorrichtungen 1908 zu empfangen. In mindestens einer Ausführungsform kann der E/A-Hub 1907 einer Anzeigesteuerung, die in einem oder mehreren Prozessoren 1902 beinhaltet sein kann, ermöglichen, einer oder mehreren Anzeigevorrichtungen 1910A Ausgaben bereitzustellen. In mindestens einer Ausführungsform können ein oder mehrere Anzeigevorrichtungen 1910A, die mit dem E/A-Hub 1907 gekoppelt sind, eine lokale, interne oder eingebettete Anzeigevorrichtung beinhalten.
  • In mindestens einer Ausführungsform beinhaltet das Verarbeitungsteilsystem 1901 einen oder mehrere Parallelprozessoren 1912, die über einen Bus oder eine andere Kommunikationsverbindung 1913 mit dem Speicher-Hub 1905 gekoppelt sind. In mindestens einer Ausführungsform kann es sich bei der Kommunikationsverbindung 1913 um eine von einer beliebigen Anzahl von standardbasierten Kommunikationsverbindungstechnologien oder -protokollen handeln, wie z.B. PCI Express, ohne darauf beschränkt zu sein, oder um eine anbieterspezifische Kommunikationsschnittstelle oder Kommunikationsstruktur. In mindestens einer Ausführungsform bilden ein oder mehrere Parallelprozessor(en) 1912 ein rechnerisch fokussiertes Parallel- oder Vektorverarbeitungssystem, das eine große Anzahl von Verarbeitungskernen und/oder Verarbeitungsclustern beinhalten kann, wie etwa einen Prozessor mit vielen integrierten Kernen (many-integrated core - MIC). In mindestens einer Ausführungsform bilden einige oder alle der Parallelprozessor(en) 1912 ein Grafikverarbeitungsteilsystem, das Pixel an eine oder mehrere Anzeigevorrichtung(en) 1910A ausgeben kann, die über den E/A-Hub 1907 gekoppelt sind. In mindestens einer Ausführungsform können die Parallelprozessor(en) 1912 zudem einen Anzeige-Controller und eine Anzeigeschnittstelle (nicht gezeigt) beinhalten, um eine direkte Verbindung zu einer oder mehreren Anzeigevorrichtung(en) 1910B zu ermöglichen. In mindestens einer Ausführungsform umfassen der eine oder die mehreren Parallelprozessoren 1912 einen oder mehrere Kerne, wie beispielsweise die hierin erörterten Grafikkerne 1800.
  • In mindestens einer Ausführungsform kann eine Systemspeichereinheit 1914 mit dem E/A-Hub 1907 verbunden sein, um einen Speichermechanismus für das Rechensystem 1900 bereitzustellen. In mindestens einer Ausführungsform kann ein E/A-Switch 1916 verwendet werden, um einen Schnittstellenmechanismus bereitzustellen, der Verbindungen zwischen dem E/A-Hub 1907 und anderen Komponenten ermöglicht, wie etwa einem Netzwerkadapter 1918 und/oder einem drahtlosen Netzwerkadapter 1919, die in eine Plattform integriert werden können, sowie verschiedenen anderen Vorrichtungen, die über eine oder mehrere Erweiterungsvorrichtung(en) 1920 hinzugefügt werden können. In mindestens einer Ausführungsform kann der Netzwerkadapter 1918 ein Ethernet-Adapter oder ein anderer drahtgebundener Netzwerkadapter sein. In mindestens einer Ausführungsform kann der drahtlose Netzwerkadapter 1919 eine oder mehrere Wi-Fi-, Bluetooth-, Nahfeldkommunikations- (NFC-) oder eine andere Netzwerkvorrichtung beinhalten, die ein oder mehrere drahtlose Funkgeräte beinhaltet.
  • In mindestens einer Ausführungsform kann das Rechensystem 1900 andere Komponenten beinhalten, die nicht ausdrücklich dargestellt sind, die USB oder andere Port-Verbindungen, optische Speicherlaufwerke, Videoaufnahmevorrichtungen und dergleichen beinhalten, und auch mit dem E/A-Hub 1907 verbunden sein können. In mindestens einer Ausführungsform können die Kommunikationspfade, die verschiedene Komponenten in 19 zusammenschalten, unter Verwendung beliebiger geeigneter Protokolle implementiert sein, wie etwa auf PCI (Peripheral Component Interconnect) basierender Protokolle (z.B. PCI-Express) oder anderer Bus- oder Punkt-zu-Punkt-Kommunikationsschnittstellen und/oder -protokoll(e), wie etwa NV-Link-Hochgeschwindigkeitszusammenschaltung, oder Zusammenschaltungsprotokolle.
  • In mindestens einer Ausführungsform beinhalten die Parallelprozessor(en) 1912 Schaltungen, die für die Grafik- und Videoverarbeitung optimiert sind, einschließlich zum Beispiel Videoausgabeschaltungen, und sie stellen eine Grafikverarbeitungseinheit (GPU) dar, z.B. beinhalten die Parallelprozessor(en) 1912 den Grafikkern 1800. In mindestens einer Ausführungsform beinhalten die Parallelprozessor(en) 1912 Schaltungen, die für Universalverarbeitung optimiert sind. In mindestens einer Ausführungsform können die Komponenten des Rechensystems 1900 in ein oder mehrere andere Systemelemente auf einer einzelnen integrierten Schaltung integriert sein. Zum Beispiel können in mindestens einer Ausführungsform die Parallelprozessor(en) 1912, der Speicher-Hub 1905, die Prozessor(en) 1902 und der E/A-Hub 1907 in eine integrierte Schaltung als System auf einem Chip (SoC) integriert sein. In mindestens einer Ausführungsform können die Komponenten des Rechensystems 1900 in ein einzelnes Gehäuse integriert sein, um eine Konfiguration mit einem System in einem Gehäuse (system in package - SIP) zu bilden. In mindestens einer Ausführungsform kann mindestens ein Teil der Komponenten des Rechensystems 1900 in ein Multi-Chip-Modul (multi-chip module - MCM) integriert sein, das mit anderen Multi-Chip-Modulen zu einem modularen Rechensystem zusammengeschaltet sein kann.
  • Die Inferenz- und/oder Trainingslogik 715 wird verwendet, um Inferenzierungs- und/oder Trainingsoperationen durchzuführen, die mit einer oder mehreren Ausführungsformen assoziiert sind. Details bezüglich der Inferenz- und/oder Trainingslogik 715 sind hierin in Verbindung mit 7A und/oder 7B bereitgestellt. In mindestens einer Ausführungsform kann die Inferenz- und/oder Trainingslogik 715 in dem System aus FIG. 1900 für Inferenzierungs- oder Vorhersageoperationen zumindest teilweise basierend auf Gewichtungsparametern verwendet werden, die unter Verwendung von hierin beschriebenen Trainingsoperationen für neuronale Netzwerke, Funktionen und/oder Architekturen für neuronale Netzwerke oder Anwendungsfälle für neuronale Netzwerke berechnet wurden.
  • In mindestens einer Ausführungsform können solche Komponenten verwendet werden, um Bildsegmentierung durchzuführen, wie oben erörtert, beispielsweise in Bezug auf ein System von 1 oder 2 oder Prozesse von 4 oder 5. In mindestens einer Ausführungsform kann dies die Verwendung eines oder mehrerer erster neuronaler Netzwerke beinhalten, um zu bewirken, dass ein Lichteffekt auf ein oder mehrere Objekte in einem oder mehreren Bildern angewendet wird, die zumindest teilweise auf synthetisch erzeugten Bildern des einen oder der mehreren Objekte basieren.
  • PROZESSOREN
  • 20A veranschaulicht einen Parallelprozessor 2000 gemäß mindestens einer Ausführungsform. In mindestens einer Ausführungsform können verschiedene Komponenten des Parallelprozessors 2000 unter Verwendung einer oder mehrerer integrierter Schaltungen implementiert werden, wie etwa programmierbare Prozessoren, anwendungsspezifische integrierte Schaltungen (ASICs) oder feldprogrammierbare Gate-Arrays (FPGAs). In mindestens einer Ausführungsform ist der veranschaulichte Parallelprozessor 2000 eine Variante eines oder mehrerer Parallelprozessor(en) 1912, die in 19 gemäß einer beispielhaften Ausführungsform gezeigt sind. In mindestens einer Ausführungsform beinhaltet ein Parallelprozessor 2000 einen oder mehrere Grafikkerne 1800.
  • In mindestens einer Ausführungsform beinhaltet der Parallelprozessor 2000 eine Parallelverarbeitungseinheit 2002. In mindestens einer Ausführungsform beinhaltet die Parallelverarbeitungseinheit 2002 eine E/A-Einheit 2004, die Kommunikation mit anderen Vorrichtungen ermöglicht, einschließlich anderer Instanzen der Parallelverarbeitungseinheit 2002. In mindestens einer Ausführungsform kann die E/A-Einheit 2004 direkt mit anderen Vorrichtungen verbunden sein. In mindestens einer Ausführungsform ist die E/A-Einheit 2004 über die Verwendung einer Hub- oder Switch-Schnittstelle, wie etwa eines Speicher-Hubs 2005, mit anderen Vorrichtungen verbunden. In mindestens einer Ausführungsform bilden Verbindungen zwischen dem Speicher-Hub 2005 und der E/A-Einheit 2004 eine Kommunikationsverbindung 2013. In mindestens einer Ausführungsform ist die E/A-Einheit 2004 mit einer Host-Schnittstelle 2006 und einer Speicherkreuzschiene 2016 verbunden, wobei die Host-Schnittstelle 2006 Befehle empfängt, die auf das Durchführen von Verarbeitungsoperationen gerichtet sind, und die Speicherkreuzschiene 2016 Befehle empfängt, die auf das Durchführen von Speicheroperationen gerichtet sind.
  • In mindestens einer Ausführungsform kann, wenn die Host-Schnittstelle 2006 einen Befehlspuffer über die E/A-Einheit 2004 empfängt, die Host-Schnittstelle 2006 Arbeitsoperationen zum Durchführen dieser Befehle zu einem Frontend 2008 leiten. In mindestens einer Ausführungsform ist das Frontend 2008 mit einem Scheduler 2010 (der als Sequencer bezeichnet werden kann) gekoppelt, der so konfiguriert ist, dass er Befehle oder andere Arbeitselemente an ein Verarbeitungsclusterarray 2012 verteilt. In mindestens einer Ausführungsform stellt der Scheduler 2010 sicher, dass das Verarbeitungsclusterarray 2012 ordnungsgemäß konfiguriert ist und sich in einem gültigen Zustand befindet, bevor Tasks an ein Cluster eines Verarbeitungsclusterarrays 2012 verteilt werden. In mindestens einer Ausführungsform ist der Scheduler 2010 über Firmware-Logik implementiert, die auf einem Mikrocontroller ausgeführt wird. In mindestens einer Ausführungsform ist der Mikrocontroller-implementierte Scheduler 2010 so konfigurierbar, dass er komplexe Planungs- und Arbeitsverteilungsoperationen mit grober und feiner Granularität durchführt, was eine schnelle Präemption und Kontextumschaltung von Threads ermöglicht, die auf dem Verarbeitungsarray 2012 ausgeführt werden. In mindestens einer Ausführungsform kann die Host-Software Arbeitslasten für die Planung auf dem Verarbeitungsclusterarray 2012 über einen von mehreren Grafikverarbeitungspfaden nachweisen. In mindestens einer Ausführungsform können die Arbeitslasten dann durch die Logik des Scheduler 2010 innerhalb eines Mikrocontrollers, der den Scheduler 2010 beinhaltet, automatisch auf das Verarbeitungsarraycluster 2012 verteilt werden.
  • In mindestens einer Ausführungsform kann das Verarbeitungsclusterarray 2012 bis zu „N“ Verarbeitungscluster beinhalten (z.B. Cluster 2014A, Cluster 2014B bis Cluster 2014N), wobei „N“ eine positive ganze Zahl darstellt (die eine andere ganze Zahl „N“ sein kann, als in anderen Figuren verwendet). In mindestens einer Ausführungsform kann jeder Cluster 2014A-2014N des Verarbeitungsclusterarrays 2012 eine große Anzahl von nebenläufigen Threads ausführen. In mindestens einer Ausführungsform kann der Scheduler 2010 den Clustern 2014A-2014N des Verarbeitungsclusterarrays 2012 Arbeit zuweisen, indem er verschiedene Planungs- und/oder Arbeitsverteilungsalgorithmen verwendet, die in Abhängigkeit von der Arbeitslast variieren können, die für jeden Typ von Programm oder Berechnung entsteht. In mindestens einer Ausführungsform kann die Planung dynamisch durch den Scheduler 2010 gehandhabt werden oder teilweise durch Compiler-Logik während der Kompilierung der Programmlogik unterstützt werden, die für die Ausführung durch das Verarbeitungsclusterarray 2012 konfiguriert ist. In mindestens einer Ausführungsform können unterschiedliche Cluster 2014A-2014N des Verarbeitungsclusterarrays 2012 zum Verarbeiten unterschiedlicher Programmtypen oder zum Durchführen unterschiedlicher Berechnungstypen zugewiesen sein.
  • In mindestens einer Ausführungsform kann das Verarbeitungsclusterarray 2012 so konfiguriert sein, dass es verschiedene Typen von Parallelverarbeitungsoperationen durchführt. In mindestens einer Ausführungsform ist das Verarbeitungsclusterarray 2012 so konfiguriert, dass es Universal-Parallelberechnungsoperationen durchführt. In mindestens einer Ausführungsform kann das Verarbeitungsclusterarray 2012 zum Beispiel Logik zum Ausführen von Verarbeitungs-Tasks beinhalten, einschließlich des Filterns von Video- und/oder Audiodaten, des Durchführens von Modellierungsoperationen, einschließlich Physikoperationen, und des Durchführens von Datentransformationen.
  • In mindestens einer Ausführungsform ist das Verarbeitungsclusterarray 2012 so konfiguriert, dass es Parallelgrafikverarbeitungsoperationen durchführt. In mindestens einer Ausführungsform kann das Verarbeitungsclusterarray 2012 zusätzliche Logik beinhalten, um die Ausführung derartiger Grafikverarbeitungsoperationen zu unterstützen, einschließlich, aber nicht beschränkt auf, Texturabtastlogik, um Texturoperationen durchzuführen, sowie Tesselierungslogik und andere Vertexverarbeitungslogik. In mindestens einer Ausführungsform kann das Verarbeitungsclusterarray 2012 so konfiguriert sein, dass es grafikverarbeitungsbezogene Shader-Programme ausführt, wie etwa, aber nicht beschränkt auf, Vertex-Shader, Tesselierungs-Shader, Geometrie-Shader und Pixel-Shader. In mindestens einer Ausführungsform kann die Parallelverarbeitungseinheit 2002 Daten aus dem Systemspeicher über die E/A-Einheit 2004 zur Verarbeitung übermitteln. In mindestens einer Ausführungsform können während der Verarbeitung die übermittelten Daten in einem chipinternen Speicher (z.B. dem Parallelprozessorspeicher 2022) während der Verarbeitung gespeichert und dann wieder in den Systemspeicher geschrieben werden.
  • Wenn die Parallelverarbeitungseinheit 2002 zum Durchführen der Grafikverarbeitung verwendet wird, kann der Scheduler 2010 in mindestens einer Ausführungsform so konfiguriert sein, dass er eine Verarbeitungsarbeitslast in annähernd gleich große Tasks aufteilt, um eine bessere Verteilung der Grafikverarbeitungsoperationen auf mehrere Cluster 2014A-2014N des Verarbeitungsclusterarrays 2012 zu ermöglichen. In mindestens einer Ausführungsform können Abschnitte des Verarbeitungsclusterarrays 2012 so konfiguriert sein, dass sie unterschiedliche Verarbeitungstypen durchführen. Zum Beispiel kann in mindestens einer Ausführungsform ein erster Abschnitt so konfiguriert sein, dass er Vertex-Shading und Topologieerzeugung durchführt, ein zweiter Abschnitt kann so konfiguriert sein, dass er Tesselierungs- und Geometrie-Shading durchführt, und ein dritter Abschnitt kann so konfiguriert sein, dass er Pixel-Shading oder andere Bildschirmraumoperationen durchführt, um ein gerendertes Bild zur Anzeige zu produzieren. In mindestens einer Ausführungsform können Zwischendaten, die durch einen oder mehrere der Cluster 2014A-2014N produziert werden, in Puffern gespeichert werden, um zu ermöglichen, dass die Zwischendaten zur weiteren Verarbeitung zwischen den Clustern 2014A-2014N übertragen werden.
  • In mindestens einer Ausführungsform kann das Verarbeitungsclusterarray 2012 auszuführende Verarbeitungs-Tasks über den Scheduler 2010 empfangen, der von dem Frontend 2008 Befehle empfängt, die Verarbeitungs-Tasks definieren. In mindestens einer Ausführungsform können die Verarbeitungs-Tasks Indizes der zu verarbeitenden Daten beinhalten, z.B. Oberflächen-(Patch-)Daten, Primitivdaten, Vertexdaten und/oder Pixeldaten, sowie Zustandsparameter und Befehle, die definieren, wie die Daten verarbeitet werden sollen (z.B. welches Programm ausgeführt werden soll). In mindestens einer Ausführungsform kann der Scheduler 2010 so konfiguriert sein, dass er den Tasks entsprechende Indizes abruft, oder er kann Indizes von dem Frontend 2008 empfangen. In mindestens einer Ausführungsform kann das Frontend 2008 so konfiguriert sein, dass es sicherstellt, dass das Verarbeitungsclusterarray 2012 in einen gültigen Zustand konfiguriert wird, bevor eine durch eingehende Befehlspuffer (z.B. Batch-Puffer, Push-Puffer usw.) vorgegebene Arbeitslast initiiert wird.
  • In mindestens einer Ausführungsform kann jede von einer oder mehreren Instanzen der Parallelverarbeitungseinheit 2002 mit einem Parallelprozessorspeicher 2022 gekoppelt sein. In mindestens einer Ausführungsform kann auf den Parallelprozessorspeicher 2022 über die Speicherkreuzschiene 2016 zugegriffen werden, die Speicheranforderungen von dem Verarbeitungsclusterarray 2012 sowie von der E/A-Einheit 2004 empfangen kann. In mindestens einer Ausführungsform kann die Speicherkreuzschiene 2016 über eine Speicherschnittstelle 2018 auf den Parallelprozessorspeicher 2022 zugreifen. In mindestens einer Ausführungsform kann die Speicherschnittstelle 2018 mehrere Partitionseinheiten (z.B. Partitionseinheit 2020A, Partitionseinheit 2020B bis Partitionseinheit 2020N) beinhalten, die jeweils an einen Abschnitt (z.B. Speichereinheit) des Parallelprozessorspeichers 2022 gekoppelt werden können. In mindestens einer Ausführungsform ist eine Anzahl der Partitionseinheiten 2020A-2020N so konfiguriert, dass sie gleich einer Anzahl von Speichereinheiten ist, sodass eine erste Partitionseinheit 2020A eine entsprechende erste Speichereinheit 2024A aufweist, eine zweite Partitionseinheit 2020B eine entsprechende Speichereinheit 2024B aufweist und eine N-te Partitionseinheit 2020N eine entsprechende N-te Speichereinheit 2024N aufweist. In mindestens einer Ausführungsform kann eine Anzahl der Partitionseinheiten 2020A-2020N nicht gleich einer Anzahl der Speichereinheiten sein.
  • In mindestens einer Ausführungsform können die Speichereinheiten 2024A-2024N verschiedene Typen von Speichervorrichtungen beinhalten, darunter dynamischer Direktzugriffsspeicher (DRAM) oder Grafik-Direktzugriffsspeicher, wie etwa synchroner Grafik-Direktzugriffsspeicher (SGRAM), darunter Grafik-Double-Data-Rate-(GDDR-)Speicher. In mindestens einer Ausführungsform können die Speichereinheiten 2024A-2024N auch 3D-Stapelspeicher beinhalten, einschließlich, aber nicht beschränkt auf, Speicher mit hoher Bandbreite (HBM), HBM2e oder HDM3. In mindestens einer Ausführungsform können Rendering-Ziele, wie etwa Bildspeicher oder Texturkarten, über die Speichereinheiten 2024A-2024N hinweg gespeichert werden, was es den Partitionseinheiten 2020A-2020N ermöglicht, Abschnitte jedes Rendering-Ziels parallel zu schreiben, um die verfügbare Bandbreite des Parallelprozessorspeichers 2022 effizient zu nutzen. In mindestens einer Ausführungsform kann eine lokale Instanz des Parallelprozessorspeichers 2022 zugunsten einer einheitlichen Speicherausgestaltung ausgeschlossen werden, die Systemspeicher in Verbindung mit lokalem Cache-Speicher nutzt.
  • In mindestens einer Ausführungsform kann ein beliebiger der Cluster 2014A-2014N des Verarbeitungsclusterarrays 2012 Daten verarbeiten, die in beliebige der Speichereinheiten 2024A-2024N innerhalb des Parallelprozessorspeichers 2022 geschrieben werden. In mindestens einer Ausführungsform kann die Speicherkreuzschiene 2016 so konfiguriert sein, dass sie eine Ausgabe jedes Clusters 2014A-2014N an eine beliebige Partitionseinheit 2020A-2020N oder an einen anderen Cluster 2014A-2014N übermittelt, der zusätzliche Verarbeitungsoperationen an einer Ausgabe ausführen kann. In mindestens einer Ausführungsform kann jeder Cluster 2014A-2014N durch die Speicherkreuzschiene 2016 mit der Speicherschnittstelle 2018 kommunizieren, um aus verschiedenen externen Speichervorrichtungen zu lesen oder in diese zu schreiben. In mindestens einer Ausführungsform weist die Speicherkreuzschiene 2016 eine Verbindung mit der Speicherschnittstelle 2018 auf, um mit der E/A-Einheit 2004 zu kommunizieren, sowie eine Verbindung mit einer lokalen Instanz des Parallelprozessorspeichers 2022, was es den Verarbeitungseinheiten innerhalb der unterschiedlichen Verarbeitungscluster 2014A-2014N ermöglicht, mit Systemspeicher oder anderem Speicher zu kommunizieren, der nicht lokal zu der Parallelverarbeitungseinheit 2002 ist. In mindestens einer Ausführungsform kann die Speicherkreuzschiene 2016 virtuelle Kanäle verwenden, um Verkehrsströme zwischen Clustern 2014A-2014N und Partitionseinheiten 2020A-2020N zu trennen.
  • In mindestens einer Ausführungsform können mehrere Instanzen der Parallelverarbeitungseinheit 2002 auf einer einzelnen Erweiterungskarte bereitgestellt sein oder mehrere Erweiterungskarten zusammengeschaltet sein. In mindestens einer Ausführungsform können unterschiedliche Instanzen der Parallelverarbeitungseinheit 2002 so konfiguriert sein, dass sie zusammenarbeiten, auch wenn die unterschiedlichen Instanzen unterschiedliche Anzahlen von Verarbeitungskernen, unterschiedliche Mengen von lokalem Parallelprozessorspeicher und/oder andere Konfigurationsunterschiede aufweisen. Zum Beispiel können in mindestens einer Ausführungsform einige Instanzen der Parallelverarbeitungseinheit 2002 Gleitkommaeinheiten mit höherer Genauigkeit in Bezug auf andere Instanzen beinhalten. In mindestens einer Ausführungsform können Systeme, die eine oder mehrere Instanzen der Parallelverarbeitungseinheit 2002 oder des Parallelprozessors 2000 einbeziehen, in einer Vielfalt von Konfigurationen und Formfaktoren implementiert sein, einschließlich, aber nicht beschränkt auf, Desktop-, Laptop- oder tragbarer persönlicher Computer, Server, Arbeitsstationen, Spielekonsolen und/oder eingebetteter Systeme.
  • 20B ist ein Blockdiagramm einer Partitionseinheit 2020 gemäß mindestens einer Ausführungsform. In mindestens einer Ausführungsform ist die Partitionseinheit 2020 eine Instanz einer der Partitionseinheiten 2020A-2020N aus 20A. In mindestens einer Ausführungsform beinhaltet die Partitionseinheit 2020 einen L2-Cache 2021, eine Bildspeicherschnittstelle 2025 und eine ROP 2026 (raster operations unit - Rasteroperationeneinheit). In mindestens einer Ausführungsform ist der L2-Cache 2021 ein Lese-/Schreib-Cache, der so konfiguriert ist, dass er Lade- und Sicherungsoperationen durchführt, die von der Speicherkreuzschiene 2016 und der ROP 2026 empfangen werden. In mindestens einer Ausführungsform werden Lesefehler und dringende Rückschreibanforderungen durch den L2-Cache 2021 an die Bildspeicherschnittstelle 2025 zur Verarbeitung ausgegeben. In mindestens einer Ausführungsform können Aktualisierungen auch über die Bildspeicherschnittstelle 2025 zur Verarbeitung an einen Bildspeicher gesendet werden. In mindestens einer Ausführungsform bildet die Bildpufferschnittstelle 2025 eine Schnittstelle mit einer der Speichereinheiten im Parallelprozessorspeicher, wie etwa mit den Speichereinheiten 2024A-2024N aus 20 (z.B. im Parallelprozessorspeicher 2022).
  • In mindestens einer Ausführungsform ist die ROP 2026 eine Verarbeitungseinheit, die Rasteroperationen durchführt, wie etwa Schablone, Z-Test, Blending usw. In mindestens einer Ausführungsform gibt die ROP 2026 dann verarbeitete Grafikdaten aus, die in Grafikspeicher gespeichert werden. In mindestens einer Ausführungsform beinhaltet die ROP 2026 Komprimierungslogik, um Tiefen- oder Farbdaten, die in den Speicher geschrieben werden, zu komprimieren und Tiefen- oder Farbdaten, die aus dem Speicher gelesen werden, zu dekomprimieren. In mindestens einer Ausführungsform kann die Komprimierungslogik verlustfreie Komprimierungslogik sein, die einen oder mehrere von mehreren Komprimierungsalgorithmen verwendet. In mindestens einer Ausführungsform kann ein Typ der Komprimierung, die durch die ROP 2026 durchgeführt wird, auf Grundlage von statistischen Eigenschaften der zu komprimierenden Daten variieren. Zum Beispiel wird in mindestens einer Ausführungsform die Delta-Farbkomprimierung an Tiefen- und Farbdaten auf Kachelbasis ausgeführt.
  • In mindestens einer Ausführungsform ist die ROP 2026 innerhalb jedes Verarbeitungsclusters (z.B. Cluster 2014A-2014N aus 20A) statt innerhalb der Partitionseinheit 2020 beinhaltet. In mindestens einer Ausführungsform werden Lese- und Schreibanforderungen für Pixeldaten anstelle von Pixelfragmentdaten über die Speicherkreuzschiene 2016 übertragen. In mindestens einer Ausführungsform können verarbeitete Grafikdaten auf einer Anzeigevorrichtung angezeigt werden, wie etwa einer der einen oder der mehreren Anzeigevorrichtung(en) 1910 aus 19, zur weiteren Verarbeitung durch die Prozessor(en) 1902 geroutet werden oder zur weiteren Verarbeitung durch eine der Verarbeitungsentitäten innerhalb des Parallelprozessors 2000 aus 20A geroutet werden.
  • 20C ist ein Blockdiagramm eines Verarbeitungsclusters 2014 innerhalb einer Parallelverarbeitungseinheit gemäß mindestens einer Ausführungsform. In mindestens einer Ausführungsform ist ein Verarbeitungscluster eine Instanz eines der Verarbeitungscluster 2014A-2014N aus 20A. In mindestens einer Ausführungsform kann der Verarbeitungscluster 2014 so konfiguriert sein, dass er viele Threads parallel ausführt, wobei sich „Thread“ auf eine Instanz eines konkreten Programms bezieht, die an einem konkreten Satz von Eingabedaten ausgeführt wird. In mindestens einer Ausführungsform werden Ausgabetechniken für Single-Instruction-Multiple-Data-(SIMD-)Anweisungen verwendet, um die parallele Ausführung einer großen Anzahl von Threads zu unterstützen, ohne mehrere unabhängige Anweisungseinheiten bereitzustellen. In mindestens einer Ausführungsform werden Single-Instruction-Multiple-Thread-(SIMT-)Techniken verwendet, um die parallele Ausführung einer großen Anzahl von im Allgemeinen synchronisierten Threads zu unterstützen, wobei eine gemeinsame Anweisungseinheit verwendet wird, die so konfiguriert ist, dass sie Anweisungen an einen Satz von Verarbeitungs-Engines innerhalb jedes der Verarbeitungscluster ausgibt.
  • In mindestens einer Ausführungsform kann der Betrieb des Verarbeitungsclusters 2014 über einen Pipeline-Manager 2032 gesteuert werden, der die Verarbeitungs-Tasks auf die SIMT-Parallelprozessoren verteilt. In mindestens einer Ausführungsform empfängt der Pipeline-Manager 2032 Anweisungen vom Scheduler 2010 aus 20A und verwaltet die Ausführung dieser Anweisungen über einen Grafik-Multiprozessor 2034 und/oder eine Textureinheit 2036. In mindestens einer Ausführungsform ist der Grafikmultiprozessor 2034 eine beispielhafte Instanz eines SIMT-Parallelprozessors. In mindestens einer Ausführungsform können jedoch verschiedene Typen von SIMT-Parallelprozessoren mit unterschiedlichen Architekturen im Verarbeitungscluster 2014 beinhaltet sein. In mindestens einer Ausführungsform können eine oder mehrere Instanzen des Grafik-Multiprozessors 2034 innerhalb eines Verarbeitungsclusters 2014 beinhaltet sein. In mindestens einer Ausführungsform kann der Grafik-Multiprozessor 2034 Daten verarbeiten und eine Datenkreuzschiene 2040 kann verwendet werden, um verarbeitete Daten an eines von mehreren möglichen Zielen, einschließlich anderer Shader-Einheiten, zu verteilen. In mindestens einer Ausführungsform kann der Pipelineverwalter 2032 die Verteilung von verarbeiteten Daten erleichtern, indem er Ziele für zu verteilende verarbeitete Daten über die Datenkreuzschiene 2040 vorgibt.
  • In mindestens einer Ausführungsform kann jeder Grafik-Multiprozessor 2034 innerhalb des Verarbeitungsclusters 2014 einen identischen Satz von funktioneller Ausführungslogik (z.B. arithmetisch-logische Einheiten, Lade-Speicher-Einheiten usw.) beinhalten. In mindestens einer Ausführungsform kann funktionelle Ausführungslogik pipelineartig konfiguriert sein, wobei neue Anweisungen ausgegeben werden können, bevor vorherige Anweisungen abgeschlossen sind. In mindestens einer Ausführungsform unterstützt die funktionale Ausführungslogik eine Vielzahl von Operationen, darunter Ganzzahl- und Gleitkommaarithmetik, Vergleichsoperationen, boolesche Operationen, Bitverschiebung und die Berechnung verschiedener algebraischer Funktionen. In mindestens einer Ausführungsform kann dieselbe Hardware einer funktionellen Einheit ausgenutzt werden, um unterschiedliche Operationen auszuführen, und eine beliebige Kombination von funktionellen Einheiten kann vorhanden sein.
  • In mindestens einer Ausführungsform bilden Anweisungen, die an den Verarbeitungs-Cluster 2014 übertragen werden, einen Thread. In mindestens einer Ausführungsform ist ein Satz von Threads, der über einen Satz von Parallelverarbeitungs-Engines ausgeführt wird, eine Thread-Gruppe. In mindestens einer Ausführungsform führt eine Thread-Gruppe ein gemeinsames Programm an unterschiedlichen Eingabedaten aus. In mindestens einer Ausführungsform kann jeder Thread innerhalb einer Thread-Gruppe einer anderen Verarbeitungs-Engine innerhalb eines Grafik-Multiprozessors 2034 zugeordnet sein. In mindestens einer Ausführungsform kann eine Thread-Gruppe weniger Threads beinhalten als eine Anzahl von Verarbeitungs-Engines innerhalb des Grafik-Multiprozessors 2034. Wenn eine Thread-Gruppe weniger Threads beinhaltet als eine Anzahl von Verarbeitungs-Engines, können in mindestens einer Ausführungsform eine oder mehrere der Verarbeitungs-Engines während der Zyklen, in denen diese Thread-Gruppe verarbeitet wird, inaktiv sein. In mindestens einer Ausführungsform kann eine Thread-Gruppe auch mehr Threads beinhalten als eine Anzahl von Verarbeitungs-Engines innerhalb des Grafik-Multiprozessors 2034. Wenn eine Thread-Gruppe mehr Threads als eine Anzahl von Verarbeitungs-Engines innerhalb des Grafik-Multiprozessors 2034 beinhaltet, kann das Verarbeiten in mindestens einer Ausführungsform über aufeinanderfolgende Taktzyklen durchgeführt werden. In mindestens einer Ausführungsform können mehrere Thread-Gruppen nebenläufig auf einem Grafik-Multiprozessor 2034 ausgeführt werden.
  • In mindestens einer Ausführungsform beinhaltet der Grafik-Multiprozessor 2034 einen internen Cache-Speicher zum Durchführen von Lade- und Speicheroperationen. In mindestens einer Ausführungsform kann der Grafik-Multiprozessor 2034 auf einen internen Cache verzichten und einen Cache-Speicher (z.B. L1-Cache 2048) innerhalb des Verarbeitungsclusters 2014 verwenden. In mindestens einer Ausführungsform hat jeder Grafik-Multiprozessor 2034 auch Zugriff auf L2-Caches innerhalb von Partitionseinheiten (z.B. Partitionseinheiten 2020A-2020N aus 20A), die von allen Verarbeitungsclustern 2014 gemeinsam genutzt werden und zum Übertragen von Daten zwischen Threads verwendet werden können. In mindestens einer Ausführungsform kann der Grafikmultiprozessor 2034 auch auf den chipexternen globalen Speicher zugreifen, der einen oder mehrere von dem lokalen Parallelprozessorspeicher und/oder dem Systemspeicher beinhalten kann. In mindestens einer Ausführungsform kann ein beliebiger Speicher, der zu der Parallelverarbeitungseinheit 2002 extern ist, als globaler Speicher verwendet werden. In mindestens einer Ausführungsform beinhaltet der Verarbeitungscluster 2014 mehrere Instanzen des Grafik-Multiprozessors 2034 und er kann gemeinsame Anweisungen und Daten teilen, die in dem L1-Cache 2048 gespeichert sein können.
  • In mindestens einer Ausführungsform kann jeder Verarbeitungscluster 2014 eine MMU 2045 (Speicherverwaltungseinheit) beinhalten, die so konfiguriert ist, dass sie virtuelle Adressen auf physische Adressen abbildet. In mindestens einer Ausführungsform können sich eine oder mehrere Instanzen der MMU 2045 innerhalb der Speicherschnittstelle 2018 aus 20A befinden. In mindestens einer Ausführungsform beinhaltet die MMU 2045 einen Satz von Seitentabelleneinträgen (page table entries - PTEs), der dazu verwendet wird, eine virtuelle Adresse auf eine physische Adresse einer Kachel abzubilden, sowie optional einen Cache-Zeilenindex. In mindestens einer Ausführungsform kann die MMU 2045 Adressenübersetzungspuffer (TLB) oder Caches beinhalten, die sich innerhalb des Grafik-Multiprozessors 2034 oder L1-Cache 2048 oder Verarbeitungsclusters 2014 befinden können. In mindestens einer Ausführungsform wird eine physische Adresse verarbeitet, um den Oberflächendatenzugriff lokal zu verteilen, um eine effiziente Anforderungsverschachtelung zwischen den Partitionseinheiten zu ermöglichen. In mindestens einer Ausführungsform kann ein Cache-Zeilenindex verwendet werden, um zu bestimmen, ob eine Anforderung für eine Cache-Zeile ein Treffer oder ein Fehler ist.
  • In mindestens einer Ausführungsform kann ein Verarbeitungscluster 2014 derart konfiguriert sein, dass jeder Grafik-Multiprozessor 2034 an eine Textureinheit 2036 zum Durchführen von Texturabbildungsoperationen gekoppelt ist, z.B. zum Bestimmen von Texturabtastpositionen, Lesen von Texturdaten und Filtern von Texturdaten. In mindestens einer Ausführungsform werden die Texturdaten aus einem internen Textur-L1-Cache (nicht gezeigt) oder aus einem L1-Cache innerhalb des Grafik-Multiprozessors 2034 gelesen und je nach Bedarf aus einem L2-Cache, dem lokalen Parallelprozessorspeicher oder dem Systemspeicher abgerufen. In mindestens einer Ausführungsform gibt jeder Grafik-Multiprozessor 2034 verarbeitete Tasks an die Datenkreuzschiene 2040 aus, um einen verarbeiteten Task einem anderen Verarbeitungscluster 2014 zur weiteren Verarbeitung bereitzustellen oder um einen verarbeiteten Task über die Speicherkreuzschiene 2016 in einem L2-Cache, lokalen Parallelprozessorspeicher oder Systemspeicher zu speichern. In mindestens einer Ausführungsform ist eine preROP 2042 (pre-raster operations unit - Vor-Rasteroperationseinheit) dazu konfiguriert, Daten von dem Grafik-Multiprozessor 2034 zu empfangen und Daten an ROP-Einheiten zu leiten, die sich in Partitionseinheiten, wie in dieser Schrift beschrieben, befinden können (z.B. Partitionseinheiten 2020A-2020N aus 20A). In mindestens einer Ausführungsform kann die preROP-Einheit 2042 Optimierungen für die Farbmischung, das Organisieren von Pixelfarbdaten und das Durchführen von Adressübersetzungen durchführen.
  • Die Inferenz- und/oder Trainingslogik 715 wird verwendet, um Inferenzierungs- und/oder Trainingsoperationen durchzuführen, die mit einer oder mehreren Ausführungsformen assoziiert sind. Details bezüglich der Inferenz- und/oder Trainingslogik 715 sind hierin in Verbindung mit 7A und/oder 7B bereitgestellt. In mindestens einer Ausführungsform kann die Inferenz- und/oder Trainingslogik 715 im Grafikverarbeitungscluster 2014 für Inferenzierungs- oder Vorhersageoperationen zumindest teilweise basierend auf Gewichtungsparametern verwendet werden, die unter Verwendung von hierin beschriebenen Trainingsoperationen für neuronale Netzwerke, Funktionen und/oder Architekturen für neuronale Netzwerke oder Anwendungsfälle für neuronale Netzwerke berechnet wurden.
  • In mindestens einer Ausführungsform können solche Komponenten verwendet werden, um Bildsegmentierung durchzuführen, wie oben erörtert, beispielsweise in Bezug auf ein System von 1 oder 2 oder Prozesse von 4 oder 5. In mindestens einer Ausführungsform kann dies die Verwendung eines oder mehrerer erster neuronaler Netzwerke beinhalten, um zu bewirken, dass ein Lichteffekt auf ein oder mehrere Objekte in einem oder mehreren Bildern angewendet wird, die zumindest teilweise auf synthetisch erzeugten Bildern des einen oder der mehreren Objekte basieren.
  • 20D zeigt einen Grafik-Multiprozessor 2034 gemäß mindestens einer Ausführungsform. In mindestens einer Ausführungsform ist der Grafik-Multiprozessor 2034 mit dem Pipeline-Manager 2032 des Verarbeitungsclusters 2014 gekoppelt. In mindestens einer Ausführungsform weist der Grafik-Multiprozessor 2034 eine Ausführungspipeline auf, die einen Anweisungscache 2052, eine Anweisungseinheit 2054, eine Adressabbildungseinheit 2056, eine Registerbank 2058, einen oder mehrere Kerne 2062 einer Universal-Grafikverarbeitungseinheit (GPGPU) und eine oder mehrere Lade-/Speichereinheiten 2066 beinhaltet, ohne darauf beschränkt zu sein, wobei eine oder mehrere Lade-/Speichereinheiten 2066 Lade-/Speicheroperationen zum Laden/Speichern von Anweisungen durchführen können, die der Durchführung einer Operation entsprechen. In mindestens einer Ausführungsform sind die GPGPU-Kerne 2062 und die Lade-/Speichereinheiten 2066 über eine Speicher- und Cache-Zusammenschaltung 2068 mit dem Cache-Speicher 2072 und dem gemeinsam genutzten Speicher 2070 gekoppelt.
  • In mindestens einer Ausführungsform empfängt der Anweisungscache 2052 einen Strom aus auszuführenden Anweisungen vom Pipeline-Manager 2032. In mindestens einer Ausführungsform werden die Anweisungen im Anweisungscache 2052 zwischengespeichert und durch eine Anweisungseinheit 2054 zur Ausführung zugeteilt. In mindestens einer Ausführungsform kann die Anweisungseinheit 2054 Anweisungen als Thread-Gruppen (z.B. Warps, Wellenfronten, Wellen) zuteilen, wobei jeder Thread der Thread-Gruppe einer anderen Ausführungseinheit innerhalb der GPGPU-Kerne 2062 zugeordnet wird. In mindestens einer Ausführungsform kann eine Anweisung auf einen lokalen, gemeinsam genutzten oder globalen Adressraum zugreifen, indem sie eine Adresse innerhalb eines einheitlichen Adressraums angibt. In mindestens einer Ausführungsform kann die Adressabbildungseinheit 2056 verwendet werden, um Adressen in einem einheitlichen Adressraum in eine eindeutige Speicheradresse zu übersetzen, auf die durch die Lade-/Speichereinheiten 2066 zugegriffen werden kann.
  • In mindestens einer Ausführungsform stellt die Registerbank 2058 einen Satz von Registern für funktionelle Einheiten des Grafik-Multiprozessors 2034 bereit. In mindestens einer Ausführungsform stellt die Registerbank 2058 einen temporären Datenspeicher für Operanden bereit, die mit Datenpfaden von funktionellen Einheiten (z.B. GPGPU-Kernen 2062, Lade-/Speichereinheiten 2066) des Grafik-Multiprozessors 2034 verbunden sind. In mindestens einer Ausführungsform ist die Registerbank 2058 derart zwischen den einzelnen funktionellen Einheiten aufgeteilt, dass jeder funktionellen Einheit ein dedizierter Abschnitt der Registerbank 2058 zugewiesen ist. In mindestens einer Ausführungsform ist die Registerbank 2058 auf unterschiedliche Warps (die als Wellenfronten und/oder Wellen bezeichnet werden können) aufgeteilt, die durch den Grafik-Multiprozessor 2034 ausgeführt werden.
  • In mindestens einer Ausführungsform können die GPGPU-Kerne 2062 jeweils Gleitkommaeinheiten (FPUs) und/oder arithmetisch-logische Ganzzahleinheiten (ALUs) beinhalten, die zum Ausführen von Anweisungen des Grafik-Multiprozessors 2034 verwendet werden. In mindestens einer Ausführungsform können die GPGPU-Kerne 2062 eine ähnliche Architektur aufweisen oder sich bezüglich der Architektur unterscheiden. In mindestens einer Ausführungsform beinhaltet ein erster Abschnitt der GPGPU-Kerne 2062 eine FPU mit einfacher Genauigkeit und eine Integer-ALU, während ein zweiter Abschnitt der GPGPU-Kerne eine FPU mit doppelter Genauigkeit beinhaltet. In mindestens einer Ausführungsform können FPUs den Standard IEEE 754-2008 für Gleitkommaarithmetik implementieren oder Gleitkommaarithmetik mit variabler Genauigkeit ermöglichen. In mindestens einer Ausführungsform kann der Grafik-Multiprozessor 2034 zusätzlich eine oder mehrere Festfunktions- oder Spezialfunktionseinheiten beinhalten, um spezifische Funktionen, wie etwa Operationen zum Kopieren von Rechtecken oder Pixel-Blending, durchzuführen. In mindestens einer Ausführungsform können einer oder mehrere der GPGPU-Kerne 2062 auch Fest- oder Spezialfunktionslogik beinhalten.
  • In mindestens einer Ausführungsform beinhalten die GPGPU-Kerne 2062 SIMD-Logik, die dazu in der Lage ist, eine einzelne Anweisung an mehreren Datensätzen durchzuführen. In mindestens einer Ausführungsform können die GPGPU-Kerne 2062 SIMD4-, SIMD8- und SIMD16-Anweisungen physisch ausführen und SIMD1-, SIMD2- und SIMD32-Anweisungen logisch ausführen. In mindestens einer Ausführungsform können SIMD-Anweisungen für GPGPU-Kerne zur Kompilierzeit durch einen Shader-Compiler erzeugt werden oder automatisch erzeugt werden, wenn Programme ausgeführt werden, die für Single-Program-Multiple-Data-(SPMD-) oder SIMT-Architekturen geschrieben und kompiliert wurden. In mindestens einer Ausführungsform können mehrere Threads eines für ein SIMT-Ausführungsmodell konfigurierten Programms über eine einzelne SIMD-Anweisung ausgeführt werden. Zum Beispiel können in mindestens einer Ausführungsform acht SIMT-Threads, die gleiche oder ähnliche Operationen durchführen, parallel über eine einzelne SIMD8-Logikeinheit ausgeführt werden.
  • In mindestens einer Ausführungsform ist die Speicher- und Cache-Zusammenschaltung 2068 ein Zusammenschaltungsnetzwerk, das jede Funktionseinheit des Grafik-Multiprozessors 2034 mit der Registerbank 2058 und dem gemeinsam genutzten Speicher 2070 verbindet. In mindestens einer Ausführungsform ist die Speicher- und Cache-Zusammenschaltung 2068 eine Kreuzschienen-Zusammenschaltung, die es der Lade-/Speichereinheit 2066 ermöglicht, Lade- und Speicheroperationen zwischen dem gemeinsam genutzten Speicher 2070 und der Registerbank 2058 zu implementieren. In mindestens einer Ausführungsform kann die Registerbank 2058 mit der gleichen Frequenz wie die GPGPU-Kerne 2062 arbeiten, sodass die Datenübermittlung zwischen den GPGPU-Kernen 2062 und der Registerbank 2058 eine sehr geringe Latenz aufweisen kann. In mindestens einer Ausführungsform kann der gemeinsam genutzte Speicher 2070 verwendet werden, um die Kommunikation zwischen Threads zu ermöglichen, die auf funktionellen Einheiten innerhalb des Grafik-Multiprozessors 2034 ausgeführt werden. In mindestens einer Ausführungsform kann der Cache-Speicher 2072 zum Beispiel als Daten-Cache verwendet werden, um Texturdaten zwischenzuspeichern, die zwischen funktionellen Einheiten und der Textureinheit 2036 kommuniziert werden. In mindestens einer Ausführungsform kann der gemeinsam genutzte Speicher 2070 auch als programmverwalteter Cache verwendet werden. In mindestens einer Ausführungsform können Threads, die auf den GPGPU-Kernen 2062 ausgeführt werden, zusätzlich zu den automatisch zwischengespeicherten Daten, die innerhalb des Cache-Speichers 2072 gespeichert sind, programmatisch Daten innerhalb des gemeinsam genutzten Speichers speichern.
  • In mindestens einer Ausführungsform ist ein Parallelprozessor oder eine GPGPU, wie hierin beschrieben, kommunikativ an Host-/Prozessorkerne gekoppelt, um Grafikoperationen, Operationen des maschinellen Lernens, Musteranalyseoperationen und verschiedene Funktionen einer Universal-GPU (GPGPU) zu beschleunigen. In mindestens einer Ausführungsform kann die GPU über einen Bus oder eine andere Verbindung (z.B. eine Hochgeschwindigkeitsverbindung wie PCIe oder NVLink) mit dem Host-Prozessor (den Prozessorkernen) kommunikativ verbunden sein. In mindestens einer Ausführungsform kann eine GPU in einem Gehäuse oder Chip als Kerne integriert sein und kommunikativ über einen internen Prozessorbus/eine Zusammenschaltung, die intern zu einem Gehäuse oder Chip ist, an Kerne gekoppelt sein. In mindestens einer Ausführungsform können die Prozessorkerne unabhängig von einer Weise, auf welche eine GPU verbunden ist, einer derartigen GPU Arbeit in Form von Sequenzen von Befehlen/Anweisungen zuweisen, die in einem Arbeitsdeskriptor enthalten sind. In mindestens einer Ausführungsform verwendet diese GPU dann dedizierte Schaltung/Logik zum effizienten Verarbeiten dieser Befehle/Anweisungen.
  • Die Inferenz- und/oder Trainingslogik 715 wird verwendet, um Inferenzierungs- und/oder Trainingsoperationen durchzuführen, die mit einer oder mehreren Ausführungsformen assoziiert sind. Details bezüglich der Inferenz- und/oder Trainingslogik 715 sind hierin in Verbindung mit 7A und/oder 7B bereitgestellt. In mindestens einer Ausführungsform kann die Inferenz- und/oder Trainingslogik 715 in dem Grafik-Multiprozessor 2034 für Inferenzierungs- oder Vorhersageoperationen zumindest teilweise basierend auf Gewichtungsparametern verwendet werden, die unter Verwendung von hierin beschriebenen Trainingsoperationen für neuronale Netzwerke, Funktionen und/oder Architekturen für neuronale Netzwerke oder Anwendungsfälle für neuronale Netzwerke berechnet wurden.
  • In mindestens einer Ausführungsform können solche Komponenten verwendet werden, um Bildsegmentierung durchzuführen, wie oben erörtert, beispielsweise in Bezug auf ein System von 1 oder 2 oder Prozesse von 4 oder 5. In mindestens einer Ausführungsform kann dies die Verwendung eines oder mehrerer erster neuronaler Netzwerke beinhalten, um zu bewirken, dass ein Lichteffekt auf ein oder mehrere Objekte in einem oder mehreren Bildern angewendet wird, die zumindest teilweise auf synthetisch erzeugten Bildern des einen oder der mehreren Objekte basieren.
  • 21 veranschaulicht ein Mehr-GPU-Rechensystem 2100 gemäß mindestens einer Ausführungsform. In mindestens einer Ausführungsform kann das Mehr-GPU-Rechensystem 2100 einen Prozessor 2102 beinhalten, der über einen Host-Schnittstellen-Switch 2104 an mehrere Universal-Grafikverarbeitungseinheiten (GPGPUs) 2106A-D gekoppelt ist. In mindestens einer Ausführungsform ist der Host-Schnittstellen-Switch 2104 eine PCI-Express-Switch-Vorrichtung, die den Prozessor 2102 an einen PCI-Express-Bus koppelt, über den der Prozessor 2102 mit den GPGPUs 2106A-D kommunizieren kann. In mindestens einer Ausführungsform können die GPGPUs 2106A-D über einen Satz von Hochgeschwindigkeits-Punkt-zu-Punkt-GPU-zu-GPU-Verknüpfungen 2116 zusammengeschaltet sein. In mindestens einer Ausführungsform sind die GPU-zu-GPU-Verknüpfungen 2116 mit jeder der GPGPUs 2106A-D über eine dedizierte GPU-Verknüpfung verbunden. In mindestens einer Ausführungsform ermöglichen die P2P-GPU-Verknüpfungen 2116 direkte Kommunikation zwischen jeder der GPGPUs 2106A-D, ohne dass Kommunikation über den Host-Schnittstellenbus 2104 erforderlich ist, mit dem der Prozessor 2102 verbunden ist. In mindestens einer Ausführungsform, bei der GPU-zu-GPU-Verkehr zu den P2P-GPU-Verknüpfungen 2116 geleitet wird, bleibt der Host-Schnittstellenbus 2104 für den Systemspeicherzugriff oder zum Kommunizieren mit anderen Instanzen des Mehr-GPU-Rechensystems 2100 verfügbar, zum Beispiel über eine oder mehrere Netzwerkvorrichtungen. Während in mindestens einer Ausführungsform die GPGPUs 2106A-D mit dem Prozessor 2102 über den Host-Schnittstellen-Switch 2104 verbunden sind, beinhaltet der Prozessor 2102 in mindestens einer Ausführungsform eine direkte Unterstützung für P2P-GPU-Verknüpfungen 2116 und kann direkt mit den GPGPUs 2106A-D verbunden sein.
  • Die Inferenz- und/oder Trainingslogik 715 wird verwendet, um Inferenzierungs- und/oder Trainingsoperationen durchzuführen, die mit einer oder mehreren Ausführungsformen assoziiert sind. Details bezüglich der Inferenz- und/oder Trainingslogik 715 sind hierin in Verbindung mit 7A und/oder 7B bereitgestellt. In mindestens einer Ausführungsform kann die Inferenz- und/oder Trainingslogik 715 in dem Mehrfach-GPU-Rechensystem 2100 für Inferenzierungs- oder Vorhersageoperationen zumindest teilweise basierend auf Gewichtungsparametern verwendet werden, die unter Verwendung von hierin beschriebenen Trainingsoperationen für neuronale Netzwerke, Funktionen und/oder Architekturen für neuronale Netzwerke oder Anwendungsfälle für neuronale Netzwerke berechnet wurden.
  • In mindestens einer Ausführungsform beinhaltet das Multi-GPU-Computersystem 2100 einen oder mehrere Grafikkerne 1800.
  • In mindestens einer Ausführungsform können solche Komponenten verwendet werden, um Bildsegmentierung durchzuführen, wie oben erörtert, beispielsweise in Bezug auf ein System von 1 oder 2 oder Prozesse von 4 oder 5. In mindestens einer Ausführungsform kann dies die Verwendung eines oder mehrerer erster neuronaler Netzwerke beinhalten, um zu bewirken, dass ein Lichteffekt auf ein oder mehrere Objekte in einem oder mehreren Bildern angewendet wird, die zumindest teilweise auf synthetisch erzeugten Bildern des einen oder der mehreren Objekte basieren.
  • 22 ist ein Blockdiagramm eines Grafikprozessors 2200 gemäß mindestens einer Ausführungsform. In mindestens einer Ausführungsform beinhaltet der Grafikprozessor 2200 eine Ringzusammenschaltung 2202, ein Pipeline-Frontend 2204, eine Medien-Engine 2237 und Grafikkerne 2280A-2280N. In mindestens einer Ausführungsform koppelt die Ringzusammenschaltung 2202 den Grafikprozessor 2200 an andere Verarbeitungseinheiten, einschließlich anderer Grafikprozessoren oder eines oder mehrerer Universalprozessorkerne. In mindestens einer Ausführungsform ist der Grafikprozessor 2200 einer von vielen Prozessoren, die in ein Mehrkern-Verarbeitungssystem integriert sind. In mindestens einer Ausführungsform beinhaltet der Grafikprozessor 2200 den Grafikkern 1800.
  • In mindestens einer Ausführungsform empfängt der Grafikprozessor 2200 Batches von Befehlen über die Ringzusammenschaltung 2202. In mindestens einer Ausführungsform werden eingehende Befehle durch einen Befehls-Streamer 2203 in dem Pipeline-Frontend 2204 interpretiert. In mindestens einer Ausführungsform beinhaltet der Grafikprozessor 2200 skalierbare Ausführungslogik zum Durchführen von 3D-Geometrieverarbeitung und Medienverarbeitung über die Grafikkern(e) 2280A-2280N. In mindestens einer Ausführungsform führt der Befehls-Streamer 2203 der Geometriepipeline 2236 Befehle für 3D-Geometrieverarbeitungsbefehle zu. In mindestens einer Ausführungsform führt der Befehls-Streamer 2203 für mindestens einige Medienverarbeitungsbefehle Befehle einem Video-Frontend 2234 zu, das mit der Medien-Engine 2237 gekoppelt ist. In mindestens einer Ausführungsform beinhaltet die Medien-Engine 2237 eine Videoqualitäts-Engine (Video Quality Engine - VQE) 2230 für die Video- und Bildnachverarbeitung und eine Engine zum Codieren/Decodieren in mehreren Formaten (multi-format encode/decode - MFX) 2233 zum Bereitstellen von hardwarebeschleunigter Codierung und Decodierung von Mediendaten. In mindestens einer Ausführungsform erzeugen die Geometriepipeline 2236 und die Medien-Engine 2237 jeweils Ausführungs-Threads für Thread-Ausführungsressourcen, die durch mindestens einen Grafikkern 2280 bereitgestellt sind.
  • In mindestens einer Ausführungsform beinhaltet der Grafikprozessor 2200 skalierbare Thread-Ausführungsressourcen mit den Grafikkernen 2280A-2280N (die modular sein können und mitunter als Kern-Slice bezeichnet werden), die jeweils mehrere Teilkerne 2250A-50N, 2260A-2260N (mitunter als Kernteil-Slice bezeichnet) aufweisen. In mindestens einer Ausführungsform kann der Grafikprozessor 2200 eine beliebige Anzahl von Grafikkernen 2280A aufweisen. In mindestens einer Ausführungsform beinhaltet der Grafikprozessor 2200 einen Grafikkern 2280A, der mindestens einen ersten Teilkern 2250A und einen zweiten Teilkern 2260A aufweist. In mindestens einer Ausführungsform ist der Grafikprozessor 2200 ein Prozessor niedriger Leistung mit einem einzelnen Teilkern (z.B. 2250A). In mindestens einer Ausführungsform beinhaltet der Grafikprozessor 2200 mehrere Grafikkerne 2280A-2280N, von denen jeder einen Satz von ersten Teilkernen 2250A-2250N und einen Satz von zweiten Teilkernen 2260A-2260N beinhaltet. In mindestens einer Ausführungsform beinhaltet jeder Teilkern in den ersten Teilkernen 2250A-2250N mindestens einen ersten Satz von Ausführungseinheiten 2252A-2252N und Medien-/Texturabtastern 2254A-2254N. In mindestens einer Ausführungsform beinhaltet jeder Teilkern in den zweiten Teilkernen 2260A-2260N mindestens einen zweiten Satz von Ausführungseinheiten 2262A-2262N und Abtastern 2264A-2264N. In mindestens einer Ausführungsform nutzen die Teilkerne 2250A-2250N, 2260A-2260N jeweils einen Satz von gemeinsam genutzten Ressourcen 2270A-2270N gemeinsam. In mindestens einer Ausführungsform beinhalten die gemeinsam genutzten Ressourcen einen gemeinsamen genutzten Cache-Speicher und eine Pixel-Operationslogik. In mindestens einer Ausführungsform beinhaltet der Grafikprozessor 2200 Lade-/Speichereinheiten im Pipeline-Frontend 2204.
  • Die Inferenz- und/oder Trainingslogik 715 wird verwendet, um Inferenzierungs- und/oder Trainingsoperationen durchzuführen, die mit einer oder mehreren Ausführungsformen assoziiert sind. Details bezüglich der Inferenz- und/oder Trainingslogik 715 sind hierin in Verbindung mit 7A und/oder 7B bereitgestellt. In mindestens einer Ausführungsform kann die Inferenz- und/oder Trainingslogik 715 in dem Grafikprozessor 2200 für Inferenzierungs- oder Vorhersageoperationen zumindest teilweise basierend auf Gewichtungsparametern verwendet werden, die unter Verwendung von hierin beschriebenen Trainingsoperationen für neuronale Netzwerke, Funktionen und/oder Architekturen für neuronale Netzwerke oder Anwendungsfälle für neuronale Netzwerke berechnet wurden.
  • In mindestens einer Ausführungsform können solche Komponenten verwendet werden, um Bildsegmentierung durchzuführen, wie oben erörtert, beispielsweise in Bezug auf ein System von 1 oder 2 oder Prozesse von 4 oder 5. In mindestens einer Ausführungsform kann dies die Verwendung eines oder mehrerer erster neuronaler Netzwerke beinhalten, um zu bewirken, dass ein Lichteffekt auf ein oder mehrere Objekte in einem oder mehreren Bildern angewendet wird, die zumindest teilweise auf synthetisch erzeugten Bildern des einen oder der mehreren Objekte basieren.
  • 23 ist ein Blockdiagramm, das die Mikroarchitektur für einen Prozessor 2300, der Logikschaltungen zum Durchführen von Anweisungen beinhalten kann, gemäß mindestens einer Ausführungsform veranschaulicht. In mindestens einer Ausführungsform kann der Prozessor 2300 Anweisungen durchführen, einschließlich x86-Anweisungen, ARM-Anweisungen, spezialisierter Anweisungen für anwendungsspezifische integrierte Schaltungen (ASICs) usw. In mindestens einer Ausführungsform kann der Prozessor 2300 Register zum Speichern von gepackten Daten beinhalten, wie etwa 64 Bit breite MMX™-Register in Mikroprozessoren, die mit der MMX-Technologie der Intel Corporation aus Santa Clara, Kalifornien, ausgestattet sind. In mindestens einer Ausführungsform können MMX-Register, die sowohl in Integer- als auch in Gleitkommaform verfügbar sind, mit Elementen mit gepackten Daten arbeiten, die mit Single-Instruction-Multiple-Data-(„SIMD“) und Streaming-SIMD-Erweiterungs-(„SSE“)Anweisungen einhergehen. In mindestens einer Ausführungsform können 128 Bit breite XMM-Register, die sich auf die SSE2-, SSE3-, SSE4-, AVX- oder darüber hinausgehende Technologie beziehen (allgemein als „SSEx“ bezeichnet), derartige Operanden mit gepackten Daten aufbewahren. In mindestens einer Ausführungsform kann der Prozessor 2300 Anweisungen zum Beschleunigen von Algorithmen für maschinelles Lernen oder Deep Learning, Training oder Inferenzieren durchführen.
  • In mindestens einer Ausführungsform beinhaltet der Prozessor 2300 ein In-Order-Frontend („Frontend“) 2301 zum Abrufen von auszuführenden Anweisungen und Vorbereiten von Anweisungen, die später in einer Prozessorpipeline verwendet werden sollen. In mindestens einer Ausführungsform kann das Frontend 2301 mehrere Einheiten beinhalten. In mindestens einer Ausführungsform ruft ein Anweisungsvorababrufer 2326 Anweisungen aus dem Speicher ab und speist die Anweisungen in einen Anweisungsdecodierer 2328 ein, der die Anweisungen wiederum decodiert oder interpretiert. Zum Beispiel decodiert in mindestens einer Ausführungsform der Anweisungsdecodierer 2328 eine empfangene Anweisung in eine oder mehrere Operationen, die als „Mikroanweisungen“ oder „Mikrooperationen“ bezeichnet werden (auch als „Mikro-Ops“ oder „uops“ oder „µops“ bezeichnet) und die eine Maschine ausführen kann. In mindestens einer Ausführungsform parst der Anweisungsdecodierer 2328 eine Anweisung in einen Opcode und entsprechende Daten- und Steuerfelder, die durch die Mikroarchitektur verwendet werden können, um Operationen gemäß mindestens einer Ausführungsform durchzuführen. In mindestens einer Ausführungsform kann ein Ablaufverfolgungscache 2330 decodierte µops in programmgeordnete Sequenzen oder Abläufe in einer µop-Warteschlange 2334 zur Ausführung zusammenstellen. Wenn der Ablaufverfolgungscache 2330 auf eine komplexe Anweisung stößt, stellt in mindestens einer Ausführungsform ein Mikrocode-ROM 2332 die für den Abschluss einer Operation notwendigen µops bereit.
  • In mindestens einer Ausführungsform können einige Anweisungen in eine einzelne Mikro-Op umgewandelt werden, während andere mehrere Mikro-Ops benötigen, um eine vollständige Operation abzuschließen. In mindestens einer Ausführungsform kann, falls mehr als vier Mikro-Ops benötigt werden, um eine Anweisung abzuschließen, der Anweisungsdecodierer 2328 auf den Mikrocode-ROM 2332 zugreifen, um diese Anweisung durchzuführen. In mindestens einer Ausführungsform kann eine Anweisung in eine kleine Anzahl von Mikro-Ops zur Verarbeitung in dem Anweisungsdecodierer 2328 decodiert werden. In mindestens einer Ausführungsform kann eine Anweisung innerhalb des Mikrocode-ROM 2332 gespeichert werden, wenn eine Reihe von Mikro-Ops zum Erzielen einer derartigen Operation benötigt werden sollte. In mindestens einer Ausführungsform bezieht sich der Ablaufverfolgungscache 2330 auf ein programmierbares logisches Array (programmable logic array - „PLA“) für den Einsprungpunkt, um einen korrekten Mikroanweisungszeiger zum Lesen von Mikrocodesequenzen zu bestimmen, um eine oder mehrere Anweisungen aus dem Mikrocode-ROM 2332 gemäß mindestens einer Ausführungsform abzuschließen. In mindestens einer Ausführungsform kann das Frontend 2301 einer Maschine, nachdem der Mikrocode-ROM 2332 die Sequenzierung von Mikro-Ops für eine Anweisung fertiggestellt hat, das Abrufen von Mikro-Ops aus dem Ablaufverfolgungscache 2330 wiederaufnehmen.
  • In mindestens einer Ausführungsform kann die Engine zur Ausführung in einer anderen Reihenfolge („Out-of-Order-Engine“) 2303 Anweisungen zur Ausführung vorbereiten. In mindestens einer Ausführungsform verfügt die Out-of-Order-Ausführungslogik über eine Reihe von Puffern, um den Fluss der Anweisungen zu glätten und neu zu ordnen, um die Rechenleistung zu optimieren, während sie eine Pipeline durchlaufen und zur Ausführung eingeplant werden. In mindestens einer Ausführungsform umfasst die Out-of-Order-Ausführungs-Engine 2303 ohne Einschränkung einen Zuweiser/Registerumbenenner 2340, eine Speicher-µop-Warteschlange 2342, eine Integer-/Gleitkomma-pop-Warteschlange 2344, einen Speicher-Scheduler 2346, einen schnellen Scheduler 2302, einen langsamen/allgemeinen Gleitkomma-Scheduler („langsamer/allgemeiner FP-Scheduler“) 2304 und einen einfachen Gleitkomma-Scheduler („einfacher FP-Scheduler“) 2306. In mindestens einer Ausführungsform werden der schnelle Scheduler 2302, der langsame/allgemeine Gleitkomma-Scheduler 2304 und der einfache Gleitkomma-Scheduler 2306 hierin auch zusammen als „µop-Scheduler 2302, 2304, 2306“ bezeichnet. In mindestens einer Ausführungsform weist der Zuweiser/Registerumbenenner 2340 Maschinenpuffer und Ressourcen zu, die jede µop für die Ausführung benötigt. In mindestens einer Ausführungsform benennt der Zuweiser/Registerumbenenner 2340 logische Register in Einträge in einer Registerbank um. In mindestens einer Ausführungsform weist der Zuweiser/Registerumbenenner 2340 auch einen Eintrag für jede µop in einer von zwei µοp-Warteschiangen zu, und zwar in der Speicher-µop-Warteschlange 2342 für Speicheroperationen und der Integer-/Gleitkomma-pop-Warteschlange 2344 für Nicht-Speicheroperationen, vor dem Speicher-Scheduler 2346 und den µop-Schedulern 2302, 2304, 2306. In mindestens einer Ausführungsform bestimmen die µop-Scheduler 2302, 2304, 2306 auf Grundlage der Bereitschaft ihrer abhängigen Eingaberegister-Operandenquellen und der Verfügbarkeit der Ausführungsressourcen, die µops benötigen, um ihre Operation abzuschließen, wann eine µop zur Ausführung bereit ist. In mindestens einer Ausführungsform kann der schnelle Scheduler 2302 auf jeder Hälfte des Haupttaktzyklus planen, während der langsame/allgemeine Gleitkomma-Scheduler 2304 und der einfache Gleitkomma-Scheduler 2306 einmal pro Hauptprozessortaktzyklus planen können. In mindestens einer Ausführungsform vermitteln die µop-Scheduler 2302, 2304, 2306 Zuteilungsports, um µops zur Ausführung einzuplanen.
  • In mindestens einer Ausführungsform beinhaltet der Ausführungsblock 2311 ohne Einschränkung eine Ganzzahlregisterbank/ein Umgehungsnetzwerk 2308, eine Gleitkommaregisterbank/ein Umgehungsnetzwerk („FP-Registerbank/Umgehungsnetz“) 2310, Adresserzeugungseinheiten (address generation units - „AGUs“) 2312 und 2314, schnelle arithmetisch-logische Einheiten (ALUs) („schnelle ALUs“) 2316 und 2318, eine langsame arithmetisch-logische Einheit („langsame ALU“) 2320, eine Gleitkomma-ALU („FP“) 2322 und eine Gleitkomma-Bewegungseinheit („FP-Bewegung“) 2324. In mindestens einer Ausführungsform werden die Integerregisterbank/das Umgehungsnetzwerk 2308 und die Gleitkommaregisterbank/das Umgehungsnetzwerk 2310 hierin auch als „Registerbänke 2308, 2310“ bezeichnet. In mindestens einer Ausführungsform werden die AGUs 2312 und 2314, die schnellen ALUs 2316 und 2318, die langsame ALU 2320, die Gleitkomma-ALU 2322 und die Gleitkomma-Bewegungseinheit 2324 in dieser Schrift auch als „Ausführungseinheiten 2312, 2314, 2316, 2318, 2320, 2322 und 2324“ bezeichnet. In mindestens einer Ausführungsform kann der Ausführungsblock 2311 ohne Einschränkung eine beliebige Anzahl (einschließlich null) und einen beliebigen Typ von Registerbänken, Umgehungsnetzwerken, Adresserzeugungseinheiten und Ausführungseinheiten in beliebiger Kombination beinhalten.
  • In mindestens einer Ausführungsform können die Registernetzwerke 2308, 2310 zwischen den uop-Planern 2302, 2304, 2306 und den Ausführungseinheiten 2312, 2314, 2316, 2318, 2320, 2322 und 2324 angeordnet sein. In mindestens einer Ausführungsform führt die Integerregisterbank/das Umgehungsnetzwerk 2308 Integeroperationen durch. In mindestens einer Ausführungsform führt die Gleitkommaregisterbank/das Umgehungsnetzwerk 2310 Gleitkommaoperationen durch. In mindestens einer Ausführungsform kann jedes der Registernetzwerke 2308, 2310 ohne Einschränkung ein Umgehungsnetzwerk beinhalten, das gerade abgeschlossene Ergebnisse, die noch nicht in eine Registerbank geschrieben wurden, umgehen oder zu neuen abhängigen µops weiterleiten kann. In mindestens einer Ausführungsform können die Registernetzwerke 2308, 2310 miteinander Daten kommunizieren. In mindestens einer Ausführungsform kann die Integerregisterbank/das Umgehungsnetzwerk 2308 ohne Einschränkung zwei separate Registerbänke beinhalten, eine Registerbank für Daten niederer Ordnung mit zweiunddreißig Bit und eine zweite Registerbank für Daten hoher Ordnung mit zweiunddreißig Bit. In mindestens einer Ausführungsform kann die Gleitkommaregisterbank/das Umgehungsnetzwerk 2310 ohne Einschränkung 128 Bit breite Einträge beinhalten, da Gleitkommaanweisungen typischerweise Operanden mit einer Breite von 64 bis 128 Bit aufweisen.
  • In mindestens einer Ausführungsform können die Ausführungseinheiten 2312, 2314, 2316, 2318, 2320, 2322, 2324 Anweisungen ausführen. In mindestens einer Ausführungsform speichern die Registernetzwerke 2308, 2310 Integer- und Gleitkommadaten-Operandenwerte, die Mikroanweisungen benötigen, um ausgeführt zu werden. In mindestens einer Ausführungsform kann der Prozessor 2300 ohne Einschränkung eine beliebige Anzahl und Kombination der Ausführungseinheiten 2312, 2314, 2316, 2318, 2320, 2322, 2324 beinhalten. In mindestens einer Ausführungsform können die Gleitkomma-ALU 2322 und die Gleitkomma-Bewegungseinheit 2324 Gleitkomma-, MMX-, SIMD-, AVX- und SSE- oder andere Operationen ausführen, einschließlich spezialisierter Anweisungen des maschinellen Lernens. In mindestens einer Ausführungsform kann die Gleitkomma-ALU 2322 ohne Einschränkung einen 64 Bit mal 64 Bit großen Gleitkommadividierer zum Ausführen von Divisions-, Quadratwurzel- und Rest-Mikro-Ops beinhalten. In mindestens einer Ausführungsform können Anweisungen, an denen ein Gleitkommawert beteiligt ist, mit Gleitkomma-Hardware gehandhabt werden. In mindestens einer Ausführungsform können ALU-Operationen an die schnellen ALUs 2316, 2318 übergeben werden. In mindestens einer Ausführungsform können die schnellen ALUs 2316, 2318 schnelle Operationen mit einer effektiven Latenz von einem halben Taktzyklus ausführen. In mindestens einer Ausführungsform gehen die meisten komplexen Integeroperationen an die langsame ALU 2320, da die langsame ALU 2320 ohne Einschränkung Integerausführungs-Hardware für Operationen vom Typ mit langer Latenz beinhalten kann, wie etwa einen Multiplikator, Verschiebungen, Flag-Logik und Verzweigungsverarbeitung. In mindestens einer Ausführungsform können die Lade-/Speicheroperationen eines Speichers durch die AGUs 2312, 2314 ausgeführt werden. In mindestens einer Ausführungsform können die schnelle ALU 2316, die schnelle ALU 2318 und die langsame ALU 2320 Integeroperationen an 64-Bit-Datenoperanden durchführen. In mindestens einer Ausführungsform können die schnelle ALU 2316, die schnelle ALU 2318 und die langsame ALU 2320 so implementiert sein, dass sie eine Vielfalt von Datenbitgrößen unterstützen, darunter sechzehn, zweiunddreißig, 128, 256 usw. In mindestens einer Ausführungsform können die Gleitkomma-ALU 2322 und die Gleitkomma-Bewegungseinheit 2324 so implementiert sein, dass sie einen Bereich von Operanden unterstützen, der Bits mit verschiedenen Breiten aufweist, wie etwa 128 Bit breite Operanden mit gepackten Daten in Verbindung mit SIMD- und Multimedia-Anweisungen.
  • In mindestens einer Ausführungsform teilen die µop-Scheduler 2302, 2304, 2306 abhängige Operationen zu, bevor die Ausführung einer übergeordneten Last beendet ist. In mindestens einer Ausführungsform kann der Prozessor 2300, da µops in dem Prozessor 2300 spekulativ geplant und ausgeführt werden können, auch Logik zum Handhaben von Speicherfehlern beinhalten. In mindestens einer Ausführungsform können, falls eine Datenlast in einem Daten-Cache einen Fehler verursacht, abhängige Operationen in einer Pipeline im Gange sein, die einen Scheduler mit temporär inkorrekten Daten verlassen haben. In mindestens einer Ausführungsform verfolgt ein Wiederholungsmechanismus Anweisungen, die falsche Daten verwenden, und führt sie erneut aus. In mindestens einer Ausführungsform könnte es sein, dass abhängige Operationen wiederholt werden müssen, und es kann unabhängigen Operationen ermöglicht werden, abgeschlossen zu werden. In mindestens einer Ausführungsform können die Planer und ein Wiederholungsmechanismus mindestens einer Ausführungsform eines Prozessors auch dafür ausgestaltet sein, Anweisungssequenzen für Zeichenfolgenvergleichsoperationen abzufangen.
  • In mindestens einer Ausführungsform können sich „Register“ auf bordeigene Prozessorspeicherorte beziehen, die als Teil von Anweisungen zum Identifizieren von Operanden verwendet werden können. In mindestens einer Ausführungsform kann es sich bei den Registern um diejenigen handeln, die von außerhalb eines Prozessors (aus der Sicht eines Programmierers) verwendbar sein können. In mindestens einer Ausführungsform sind Register möglicherweise nicht auf eine bestimmte Schaltungsart beschränkt. Vielmehr kann ein Register in mindestens einer Ausführungsform Daten speichern, Daten bereitstellen und die hierin beschriebenen Funktionen durchführen. In mindestens einer Ausführungsform können die hierin beschriebenen Register durch Schaltungen innerhalb eines Prozessors unter Verwendung einer beliebigen Anzahl unterschiedlicher Techniken implementiert sein, wie etwa dedizierter physischer Register, dynamisch zugewiesener physischer Register unter Verwendung von Registerumbenennung, Kombinationen aus dedizierten und dynamisch zugewiesenen physischen Registern usw. In mindestens einer Ausführungsform speichern Ganzzahlregister 32-Bit-Ganzzahldaten. Eine Registerbank von mindestens einer Ausführungsform enthält außerdem acht Multimedia-SIMD-Register für gepackte Daten.
  • In mindestens einer Ausführungsform beinhaltet der Prozessor 2300 oder jeder Kern des Prozessors 2300 einen oder mehrere Vorabrufer, einen oder mehrere Abrufer, einen oder mehrere Vorabdecodierer, einen oder mehrere Decodierer zum Decodieren von Daten (z.B. Anweisungen) und eine oder mehrere Anweisungswarteschlangen zum Verarbeiten von Anweisungen (z.B. entsprechend Operationen oder API-Aufrufen), einen oder mehrere Mikrooperations-(µOP-)Caches zum Speichern von µOPs, eine oder mehrere Mikrooperations-(µOP-)Warteschlangen, eine In-Order-Ausführungs-Engine, einen oder mehrere Ladepuffer, ein oder mehrere Speicherpuffer, ein oder mehrere Neuordnungspuffer, ein oder mehrere Füllpuffer, eine Out-of-Order-Ausführungs-Engine, einen oder mehrere Ports, eine oder mehrere Schiebe- und/oder Schiebereinheiten, eine oder mehrere Fused-Multiply-Accumulate-(FMA-)Einheiten, eine oder mehrere Lade- und Speichereinheiten („LSUs“), um Lade- und Speicheroperationen durchzuführen, die dem Laden/Speichern von Daten (z.B. Anweisungen) entsprechen, um eine Operation auszuführen (z.B. eine API, einen API-Aufruf auszuführen), eine oder mehrere Matrix-Multiply-Accumulate-(MMA-)Einheiten und/oder eine oder mehrere Shuffle-Einheiten, um jede beliebige hierin weiter beschriebene Funktion in Bezug auf den Prozessor 2300 auszuführen. In mindestens einer Ausführungsform kann der Prozessor 2300 auf Anweisungen zugreifen, diese verwenden, durchführen oder ausführen, die dem Aufruf einer API entsprechen.
  • In mindestens einer Ausführungsform beinhaltet der Prozessor 2300 einen oder mehrere Ultra-Path-Interconnects (UPIs), z.B. eine Punkt-zu-Punkt-Prozessor-Zusammenschaltung; ein oder mehrere PCles; einen oder mehrere Beschleuniger zur Beschleunigung von Berechnungen oder Operationen; und/oder einen oder mehrere Speicher-Controller. In mindestens einer Ausführungsform beinhaltet der Prozessor 2300 einen gemeinsam genutzten Last-Level-Cache (LLC), der mit einem oder mehreren Speicher-Controllern gekoppelt ist und der einen gemeinsamen Speicherzugriff über Prozessorkerne hinweg ermöglichen kann.
  • In mindestens einer Ausführungsform verfügt der Prozessor 2300 oder ein Kern des Prozessors 2300 über eine Mesh-Architektur, bei der Prozessorkerne, On-Chip-Caches, Speicher-Controller und E/A-Controller in Zeilen und Spalten organisiert sind, wobei sie an jedem Schnittpunkt durch Drähte und Schalter verbunden sind, um Abbiegungen zu ermöglichen. In mindestens einer Ausführungsform verfügt der Prozessor 2300 über eine oder mehrere höhere Speicherbandbreiten (HMBs, z.B. HMBe), um Daten zu speichern oder Daten zwischenzuspeichern, z.B. in einem synchronen dynamischen Direktzugriffsspeicher mit Double-Data-Rate Version 5 (DDR5-SDRAM). In mindestens einer Ausführungsform sind eine oder mehrere Komponenten des Prozessors 2300 unter Verwendung von Compute-Express-Link-(CXL-)Zusammenschaltungen zusammengeschaltet. In mindestens einer Ausführungsform verwendet ein Speicher-Controller einen „Least-Recent-Used“-Ansatz (LRU), um zu bestimmen, was in einem Cache gespeichert wird. In mindestens einer Ausführungsform beinhaltet der Prozessor 2300 einen oder mehrere PCIe (z.B. PCIe 5.0).
  • Die Inferenz- und/oder Trainingslogik 715 wird verwendet, um Inferenzierungs- und/oder Trainingsoperationen durchzuführen, die mit einer oder mehreren Ausführungsformen assoziiert sind. Details bezüglich der Inferenz- und/oder Trainingslogik 715 sind hierin in Verbindung mit 7A und/oder 7B bereitgestellt. In mindestens einer Ausführungsform können Abschnitte der oder die gesamte Inferenz- und/oder Trainingslogik 715 in den Ausführungsblock 2311 und andere gezeigte oder nicht gezeigte Speicher oder Register einbezogen sein. Zum Beispiel können in mindestens einer Ausführungsform die hierin beschriebenen Trainings- und/oder Inferenztechniken eine oder mehrere der in dem Ausführungsblock 2311 veranschaulichten ALUs verwenden. Darüber hinaus können Gewichtungsparameter in chipinternem oder chipexternem Speicher und/oder in Registern (gezeigt oder nicht gezeigt) gespeichert werden, die ALUs des Ausführungsblocks 2311 konfigurieren, um eine(n) oder mehrere hierin beschriebene Algorithmen des maschinellen Lernens, Architekturen, Anwendungsfälle oder Trainingstechniken für neuronale Netzwerke durchzuführen.
  • In mindestens einer Ausführungsform können solche Komponenten verwendet werden, um Bildsegmentierung durchzuführen, wie oben erörtert, beispielsweise in Bezug auf ein System von 1 oder 2 oder Prozesse von 4 oder 5. In mindestens einer Ausführungsform kann dies die Verwendung eines oder mehrerer erster neuronaler Netzwerke beinhalten, um zu bewirken, dass ein Lichteffekt auf ein oder mehrere Objekte in einem oder mehreren Bildern angewendet wird, die zumindest teilweise auf synthetisch erzeugten Bildern des einen oder der mehreren Objekte basieren.
  • 24 veranschaulicht einen Deep-Learning-Anwendungsprozessor 2400 gemäß mindestens einer Ausführungsform. In mindestens einer Ausführungsform verwendet der Deep-Learning-Anwendungsprozessor 2400 Anweisungen, die bei Ausführung durch den Deep-Learning-Anwendungsprozessor 2400 den Deep-Learning-Anwendungsprozessor 2400 dazu veranlassen, einige oder alle der in dieser gesamten Offenbarung beschriebenen Prozesse und Techniken durchzuführen. In mindestens einer Ausführungsform ist der Deep-Learning-Anwendungsprozessor 2400 eine anwendungsspezifische integrierte Schaltung (ASIC). In mindestens einer Ausführungsform führt der Anwendungsprozessor 2400 Matrixmultiplikationsoperationen entweder „fest verdrahtet“ in Hardware als Ergebnis des Durchführens einer oder mehrerer Anweisungen oder beides durch. In mindestens einer Ausführungsform beinhaltet der Deep-Learning-Anwendungsprozessor 2400 ohne Einschränkung Verarbeitungscluster 2410(1)-2410(12), chipübergreifende Verknüpfungen (Inter-Chip Links - „ICLs“) 2420(1)-2420(12), chipübergreifende Steuerungen (Inter-Chip Controllers - „ICCs“) 2430(1)-2430(2), Speicher mit hoher Bandbreite der zweiten Generation (high-bandwidth memory second generation - „HBM2“) 2440(1)-2440(4), Speichersteuerungen (memory controllers - „Mem Ctrlrs“) 2442(1)-2442(4), eine Bitübertragungsschicht mit Speicher mit hoher Bandbreite (high bandwidth memory physical layer - „HBM PHY“) 2444(1)-2444(4), eine zentrale Verwaltungssteuerungs-Verarbeitungseinheit („Verwaltungssteuerungs-CPU“) 2450, eine serielle Peripherieschnittstelle, eine zwischenintegrierte Schaltung und einen Universal-Eingabe/Ausgabe-Block („SPI, I2C, GPIO“) 2460, eine Interconnect-Express-Steuerung für Peripheriekomponenten und einen Direktspeicherzugriffsblock („PCIe-Steuerung und DMA“) 2470 und einen sechzehnspurigen Interconnect-Express-Port für Peripheriekomponenten („PCI-Express x 16“) 2480.
  • In mindestens einer Ausführungsform können die Verarbeitungscluster 2410 Deep-Learning-Operationen durchführen, einschließlich Inferenz- oder Vorhersageoperationen auf Grundlage von Gewichtungsparametern, die mit einer oder mehreren Trainingstechniken, einschließlich der hierin beschriebenen, berechnet wurden. In mindestens einer Ausführungsform kann jeder Verarbeitungscluster 2410 ohne Einschränkung eine beliebige Anzahl und einen beliebigen Typ von Prozessoren beinhalten. In mindestens einer Ausführungsform kann der Deep-Learning-Anwendungsprozessor 2400 eine beliebige Anzahl und einen beliebigen Typ von Verarbeitungsclustern 2400 beinhalten. In mindestens einer Ausführungsform sind die chipübergreifenden Verbindungen 2420 bidirektional. In mindestens einer Ausführungsform ermöglichen die chipübergreifenden Verbindungenen 2420 und die chipübergreifenden Steuerungen 2430 mehreren Deep-Learning-Anwendungsprozessoren 2400 den Austausch von Informationen, einschließlich Aktivierungsinformationen, die aus dem Durchführen eines oder mehrerer Algorithmen des maschineller Lernens resultieren, die in einem oder mehreren neuronalen Netzwerken verkörpert sind. In mindestens einer Ausführungsform kann der Deep-Learning-Anwendungsprozessor 2400 eine beliebige Anzahl (einschließlich null) und einen beliebigen Typ von ICLs 2420 und ICCs 2430 beinhalten.
  • In mindestens einer Ausführungsform stellen die HBM2s 2440 insgesamt 32 Gigabyte (GB) Speicher bereit. In mindestens einer Ausführungsform ist der HBM2 2440(i) sowohl mit dem Speicher-Controller 2442(i) als auch dem HBM PHY 2444(i) assoziiert, wobei „i“ eine beliebige ganze Zahl ist. In mindestens einer Ausführungsform kann eine beliebige Anzahl von HBM2s 2440 einen beliebigen Typ und eine beliebige Gesamtmenge an Speicher mit hoher Bandbreite bereitstellen und mit einer beliebigen Anzahl (einschließlich null) und einem beliebigen Typ von Speichersteuerungen 2442 und HBM PHYs 2444 assoziiert sein. In mindestens einer Ausführungsform können SPI, I2C, GPIO 2460, PCIe-Steuerung und DMA 2470 und/oder PCIe 2480 durch eine beliebige Anzahl und einen beliebigen Typ von Blöcken ersetzt werden, die eine beliebige Anzahl und einen beliebigen Typ von Kommunikationsstandards auf eine beliebige technisch machbare Weise ermöglichen.
  • Die Inferenz- und/oder Trainingslogik 715 wird verwendet, um Inferenzierungs- und/oder Trainingsoperationen durchzuführen, die mit einer oder mehreren Ausführungsformen assoziiert sind. Details bezüglich der Inferenz- und/oder Trainingslogik 715 sind hierin in Verbindung mit 7A und/oder 7B bereitgestellt. In mindestens einer Ausführungsform wird der Deep-Learning-Anwendungsprozessor verwendet, um ein Modell des maschinellen Lernens, wie etwa ein neuronales Netzwerk, zu trainieren, um dem Deep-Learning-Anwendungsprozessor 2400 bereitgestellte Informationen vorherzusagen oder zu inferenzieren. In mindestens einer Ausführungsform wird der Deep-Learning-Anwendungsprozessor 2400 verwendet, um Informationen auf Grundlage eines trainierten Modells des maschinellen Lernens (z.B. eines neuronalen Netzwerks) zu inferenzieren oder vorherzusagen, das durch einen anderen Prozessor oder ein anderes System oder durch den Deep-Learning-Anwendungsprozessor 2400 trainiert wurde. In mindestens einer Ausführungsform kann der Prozessor 2400 verwendet werden, um einen oder mehrere der hierin beschriebenen Anwendungsfälle für neuronale Netzwerke durchzuführen.
  • In mindestens einer Ausführungsform können solche Komponenten verwendet werden, um Bildsegmentierung durchzuführen, wie oben erörtert, beispielsweise in Bezug auf ein System von 1 oder 2 oder Prozesse von 4 oder 5. In mindestens einer Ausführungsform kann dies die Verwendung eines oder mehrerer erster neuronaler Netzwerke beinhalten, um zu bewirken, dass ein Lichteffekt auf ein oder mehrere Objekte in einem oder mehreren Bildern angewendet wird, die zumindest teilweise auf synthetisch erzeugten Bildern des einen oder der mehreren Objekte basieren.
  • 25 ist ein Blockdiagramm eines neuromorphen Prozessors 2500 gemäß mindestens einer Ausführungsform. In mindestens einer Ausführungsform kann der neuromorphe Prozessor 2500 eine oder mehrere Eingaben von Quellen außerhalb des neuromorphen Prozessors 2500 empfangen. In mindestens einer Ausführungsform können diese Eingaben an ein oder mehrere Neuronen 2502 innerhalb des neuromorphen Prozessors 2500 übertragen werden. In mindestens einer Ausführungsform können die Neuronen 2502 und Komponenten davon unter Verwendung von Schaltungen oder Logik implementiert sein, einschließlich einer oder mehrerer arithmetisch-logischer Einheiten (ALUs). In mindestens einer Ausführungsform kann der neuromorphe Prozessor 2500 ohne Einschränkung Tausende oder Millionen von Instanzen von Neuronen 2502 beinhalten, aber es kann eine beliebige geeignete Anzahl von Neuronen 2502 verwendet werden. In mindestens einer Ausführungsform kann jede Instanz des Neurons 2502 einen Neuroneneingang 2504 und einen Neuronenausgang 2506 beinhalten. In mindestens einer Ausführungsform können die Neuronen 2502 Ausgaben erzeugen, die an Eingänge anderer Instanzen von Neuronen 2502 übertragen werden können. Zum Beispiel können in mindestens einer Ausführungsform die Neuroneneingänge 2504 und die Neuronenausgänge 2506 über Synapsen 2508 zusammengeschaltet sein.
  • In mindestens einer Ausführungsform können die Neuronen 2502 und die Synapsen 2508 derart zusammengeschaltet sein, dass der neuromorphe Prozessor 2500 arbeitet, um die durch den neuromorphen Prozessor 2500 empfangenen Informationen zu verarbeiten oder zu analysieren. In mindestens einer Ausführungsform können die Neuronen 2502 einen Ausgabeimpuls (oder „Fire“ oder „Spike“) übertragen, wenn die über den Neuroneneingang 2504 empfangenen Eingaben einen Schwellenwert überschreiten. In mindestens einer Ausführungsform können die Neuronen 2502 die an den Neuroneneingängen 2504 empfangenen Signale summieren oder integrieren. Zum Beispiel können in mindestens einer Ausführungsform die Neuronen 2502 als leckende Integrate-and-Fire-Neuronen implementiert sein, wobei, falls eine Summe (als „Membranpotential“ bezeichnet) einen Schwellenwert überschreitet, das Neuron 2502 eine Ausgabe (oder „Feuern“) unter Verwendung einer Übertragungsfunktion, wie etwa einer Sigmoid- oder Schwellenwertfunktion, erzeugen kann. In mindestens einer Ausführungsform kann ein leckendes Integrate-and-Fire-Neuron Signale, die an den Neuroneneingängen 2504 empfangen werden, zu einem Membranpotential summieren und auch einen Abklingfaktor (oder ein Leck) anwenden, um ein Membranpotential zu reduzieren. In mindestens einer Ausführungsform kann ein leckendes Integrate-and-Fire-Neuron feuern, falls mehrere Eingabesignale an den Neuroneneingängen 2504 schnell genug empfangen werden, um einen Schwellenwert zu überschreiten (d. h., bevor ein Membranpotential zu weit nach unten abklingt, um zu feuern). In mindestens einer Ausführungsform können die Neuronen 2502 unter Verwendung von Schaltungen oder Logik implementiert sein, die Eingaben empfangen, Eingaben in ein Membranpotential integrieren und ein Membranpotential abklingen lassen. In mindestens einer Ausführungsform können Eingaben gemittelt werden oder kann eine beliebige andere geeignete Übertragungsfunktion verwendet werden. Darüber hinaus können die Neuronen 2502 in mindestens einer Ausführungsform ohne Einschränkung Komparatorschaltungen oder -logik beinhalten, die einen Ausgabe-Spike an dem Neuronenausgang 2506 erzeugen, wenn das Ergebnis des Anwendens einer Übertragungsfunktion auf den Neuroneneingang 2504 einen Schwellenwert überschreitet. In mindestens einer Ausführungsform kann das Neuron 2502, sobald es feuert, zuvor empfangene Eingabeinformationen ignorieren, indem es zum Beispiel ein Membranpotential auf 0 oder einen anderen geeigneten Standardwert zurücksetzt. In mindestens einer Ausführungsform kann das Neuron 2502, sobald das Membranpotential auf 0 zurückgesetzt wurde, nach einer geeigneten Zeitspanne (oder Refraktärzeit) den normalen Betrieb wiederaufnehmen.
  • In mindestens einer Ausführungsform können die Neuronen 2502 durch die Synapsen 2508 zusammengeschaltet sein. In mindestens einer Ausführungsform können die Synapsen 2508 arbeiten, um Signale von einem Ausgang eines ersten Neurons 2502 an einen Eingang eines zweiten Neurons 2502 zu übertragen. In mindestens einer Ausführungsform können die Neuronen 2502 Informationen über mehr als eine Instanz der Synapse 2508 übertragen. In mindestens einer Ausführungsform können eine oder mehrere Instanzen des Neuronenausgangs 2506 über eine Instanz der Synapse 2508 mit einer Instanz des Neuroneneingangs 2504 in dem gleichen Neuron 2502 verbunden sein. In mindestens einer Ausführungsform kann eine Instanz des Neurons 2502, die eine über eine Instanz der Synapse 2508 zu übertragende Ausgabe erzeugt, als „präsynaptisches Neuron“ in Bezug auf diese Instanz der Synapse 2508 bezeichnet werden. In mindestens einer Ausführungsform kann eine Instanz des Neurons 2502, die eine über eine Instanz der Synapse 2508 übertragene Eingabe empfängt, als „postsynaptisches Neuron“ in Bezug auf diese Instanz der Synapse 2508 bezeichnet werden. Da eine Instanz des Neurons 2502 Eingaben von einer oder mehreren Instanzen der Synapse 2508 empfangen kann und auch Ausgaben über eine oder mehrere Instanzen der Synapse 2508 übertragen kann, kann in mindestens einer Ausführungsform eine einzelne Instanz des Neurons 2502 daher sowohl ein „präsynaptisches Neuron“ als auch ein „postsynaptisches Neuron“ in Bezug auf verschiedene Instanzen der Synapsen 2508 sein.
  • In mindestens einer Ausführungsform können die Neuronen 2502 in eine oder mehrere Schichten organisiert sein. In mindestens einer Ausführungsform kann jede Instanz des Neurons 2502 einen Neuronenausgang 2506 aufweisen, der sich durch eine oder mehrere Synapsen 2508 zu einem oder mehreren Neuroneneingängen 2504 auffächern kann. In mindestens einer Ausführungsform können die Neuronenausgänge 2506 der Neuronen 2502 in einer ersten Schicht 2510 mit den Neuroneneingängen 2504 der Neuronen 2502 in einer zweiten Schicht 2512 verbunden sein. In mindestens einer Ausführungsform kann die Schicht 2510 als „vorwärtsgekoppelte Schicht“ bezeichnet werden. In mindestens einer Ausführungsform kann sich jede Instanz des Neurons 2502 in einer Instanz der ersten Schicht 2510 zu jeder Instanz des Neurons 2502 in der zweiten Schicht 2512 auffächern. In mindestens einer Ausführungsform kann die erste Schicht 2510 als „vollständig verbundene vorwärtsgekoppelte Schicht“ bezeichnet werden. In mindestens einer Ausführungsform kann sich jede Instanz des Neurons 2502 in einer Instanz der zweiten Schicht 2512 zu weniger als allen Instanzen des Neurons 2502 in einer dritten Schicht 2514 auffächern. In mindestens einer Ausführungsform kann die zweite Schicht 2512 als „spärlich verbundene vorwärtsgekoppelte Schicht“ bezeichnet werden. In mindestens einer Ausführungsform können sich die Neuronen 2502 in der zweiten Schicht 2512 zu den Neuronen 2502 in mehreren anderen Schichten auffächern, einschließlich zu den Neuronen 2502, die sich ebenfalls in der zweiten Schicht 2512 befinden. In mindestens einer Ausführungsform kann die zweite Schicht 2512 als „rekurrente Schicht“ bezeichnet werden. In mindestens einer Ausführungsform kann der neuromorphe Prozessor 2500 ohne Einschränkung eine beliebige geeignete Kombination von rekurrenten Schichten und vorwärtsgekoppelten Schichten beinhalten, einschließlich ohne Einschränkung sowohl spärlich verbundener vorwärtsgekoppelter Schichten als auch vollständig verbundener vorwärtsgekoppelter Schichten.
  • In mindestens einer Ausführungsform kann der neuromorphe Prozessor 2500 ohne Einschränkung eine rekonfigurierbare Zusammenschaltungsarchitektur oder dedizierte fest verdrahtete Zusammenschaltungen beinhalten, um die Synapse 2508 mit den Neuronen 2502 zu verbinden. In mindestens einer Ausführungsform kann der neuromorphe Prozessor 2500 ohne Einschränkung Schaltung oder Logik beinhalten, die es ermöglicht, Synapsen je nach Bedarf auf Grundlage der Topologie des neuronalen Netzwerks und des Neuronen-Fan-In/-Out unterschiedlichen Neuronen 2502 zuzuweisen. Zum Beispiel können in mindestens einer Ausführungsform die Synapsen 2508 mit den Neuronen 2502 unter Verwendung einer Zusammenschaltungsstruktur, wie etwa eines Netzwerks auf einem Chip, oder mit dedizierten Verbindungen verbunden sein. In mindestens einer Ausführungsform können die Synapsenzusammenschaltungen und Komponenten davon unter Verwendung von Schaltungen oder Logik implementiert sein.
  • In mindestens einer Ausführungsform können solche Komponenten verwendet werden, um Bildsegmentierung durchzuführen, wie oben erörtert, beispielsweise in Bezug auf ein System von 1 oder 2 oder Prozesse von 4 oder 5. In mindestens einer Ausführungsform kann dies die Verwendung eines oder mehrerer erster neuronaler Netzwerke beinhalten, um zu bewirken, dass ein Lichteffekt auf ein oder mehrere Objekte in einem oder mehreren Bildern angewendet wird, die zumindest teilweise auf synthetisch erzeugten Bildern des einen oder der mehreren Objekte basieren.
  • 26 ist ein Blockdiagramm eines Verarbeitungssystems gemäß mindestens einer Ausführungsform. In mindestens einer Ausführungsform beinhaltet ein System 2600 einen oder mehrere Prozessoren 2602 und einen oder mehrere Grafikprozessoren 2608 und kann ein Einzelprozessor-Desktop-System, ein Mehrprozessor-Workstation-System oder ein Server-System sein, dass eine große Anzahl von Prozessoren 2602 oder Prozessorkernen 2607 aufweist. In mindestens einer Ausführungsform ist das System 2600 eine Verarbeitungsplattform, die in eine integrierte Schaltung als System auf einem Chip (SoC) zur Verwendung in mobilen, tragbaren oder eingebetteten Vorrichtungen integriert ist. In mindestens einer Ausführungsform beinhalten ein oder mehrere Grafikprozessoren 2608 einen oder mehrere Grafikkerne 1800.
  • In mindestens einer Ausführungsform kann das System 2600 eine serverbasierte Spieleplattform, eine Spielekonsole, einschließlich einer Spiele- und Medienkonsole, eine mobile Spielekonsole, eine tragbare Spielekonsole oder eine Online-Spielekonsole beinhalten oder in diese integriert sein. In mindestens einer Ausführungsform ist das System 2600 ein Mobiltelefon, ein Smartphone, eine Tablet-Rechenvorrichtung oder eine mobile Internet-Vorrichtung. In mindestens einer Ausführungsform kann das Verarbeitungssystem 2600 auch eine tragbare Vorrichtung beinhalten, mit dieser gekoppelt oder in diese integriert sein, wie etwa eine Smartwatch-Wearable-Vorrichtung, eine Smart-Eyewear-Vorrichtung, eine Augmented-Reality-Vorrichtung oder eine Virtual-Reality-Vorrichtung. In mindestens einer Ausführungsform ist das Verarbeitungssystem 2600 eine Fernseh- oder Set-Top-Box-Vorrichtung, die einen oder mehrere Prozessoren 2602 und eine grafische Schnittstelle aufweist, die durch einen oder mehrere Grafikprozessoren 2608 erzeugt wird.
  • In mindestens einer Ausführungsform beinhalten ein oder mehrere Prozessoren 2602 jeweils einen oder mehrere Prozessorkerne 2607 zum Verarbeiten von Anweisungen, die bei ihrer Ausführung Operationen für System- und Benutzer-Software durchführen. In mindestens einer Ausführungsform ist jeder von einem oder mehreren Prozessorkernen 2607 so konfiguriert, dass er eine spezifische Anweisungssequenz 2609 verarbeitet. In mindestens einer Ausführungsform kann die Anweisungssequenz 2609 Complex Instruction Set Computing (CISC), Reduced Instruction Set Computing (RISC) oder Rechnen über ein Very Long Instruction Word (VLIW) ermöglichen. In mindestens einer Ausführungsform können die Prozessorkerne 2607 jeweils eine andere Anweisungssequenz 2609 verarbeiten, die Anweisungen beinhalten kann, um die Emulation anderer Anweisungssequenzen zu erleichtern. In mindestens einer Ausführungsform kann der Prozessorkern 2607 auch andere Verarbeitungsvorrichtungen beinhalten, wie etwa einen digitalen Signalprozessor (DSP).
  • In mindestens einer Ausführungsform beinhaltet der Prozessor 2602 einen Cache-Speicher 2604. In mindestens einer Ausführungsform kann der Prozessor 2602 einen einzelnen internen Cache oder mehrere Levels von internem Cache aufweisen. In mindestens einer Ausführungsform wird der Cache-Speicher von verschiedenen Komponenten des Prozessors 2602 gemeinsam genutzt. In mindestens einer Ausführungsform verwendet der Prozessor 2602 auch einen externen Cache (z.B. einen Level-3-(L3-)Cache oder Last-Level-Cache (LLC)) (nicht gezeigt), der unter Verwendung bekannter Cache-Kohärenztechniken von den Prozessorkernen 2607 gemeinsam genutzt werden kann. In mindestens einer Ausführungsform ist im Prozessor 2602 zusätzlich eine Registerbank 2606 beinhaltet, die unterschiedliche Arten von Registern zum Speichern unterschiedlicher Datenarten beinhalten kann (z.B. Ganzzahlregister, Gleitkommaregister, Statusregister und ein Anweisungszeigerregister). In mindestens einer Ausführungsform kann die Registerbank 2606 Allzweckregister oder andere Register beinhalten.
  • In mindestens einer Ausführungsform sind ein oder mehrere Prozessor(en) 2602 mit einem oder mehreren Schnittstellenbus(sen) 2610 gekoppelt, um Kommunikationssignale, wie etwa Adress-, Daten- oder Steuersignale, zwischen dem Prozessor 2602 und anderen Komponenten in dem System 2600 zu übertragen. In mindestens einer Ausführungsform kann der Schnittstellenbus 2610 ein Prozessorbus sein, wie etwa eine Version eines Mediendirektsschnittstellen-(Direct Media Interface - DMI-)Busses. In mindestens einer Ausführungsform ist der Schnittstellenbus 2610 nicht auf einen DMI-Bus beschränkt und kann einen oder mehrere Peripheriegerätekomponentenverbindungsbusse (z.B. PCI, PCI Express), Speicherbusse oder andere Arten von Schnittstellenbussen beinhalten. In mindestens einer Ausführungsform beinhalten die Prozessor(en) 2602 eine integrierte Speichersteuerung 2616 und einen Plattformsteuerungs-Hub 2630. In mindestens einer Ausführungsform ermöglicht die Speichersteuerung 2616 die Kommunikation zwischen einer Speichervorrichtung und anderen Komponenten des Systems 2600, während der Plattformsteuerungs-Hub (platform controller hub - PCH) 2630 Verbindungen mit E/A-Vorrichtungen über einen lokalen E/A-Bus bereitstellt.
  • In mindestens einer Ausführungsform kann eine Speichervorrichtung 2620 eine Vorrichtung mit dynamischem Direktzugriffsspeicher (DRAM), eine Vorrichtung mit statischem Direktzugriffsspeicher (SRAM), eine Flash-Speichervorrichtung, eine Phasenwechsel-Speichervorrichtung oder eine andere Speichervorrichtung sein, die eine geeignete Rechenleistung aufweist, um als Prozessspeicher zu dienen. In mindestens einer Ausführungsform kann die Speichervorrichtung 2620 als Systemspeicher für das System 2600 arbeiten, um Daten 2622 und Anweisungen 2621 zur Verwendung zu speichern, wenn ein oder mehrere Prozessoren 2602 eine Anwendung oder einen Prozess ausführen. In mindestens einer Ausführungsform ist die Speichersteuerung 2616 zudem an einen optionalen externen Grafikprozessor 2612 gekoppelt, der mit einem oder mehreren Grafikprozessoren 2608 in den Prozessoren 2602 kommunizieren kann, um Grafik- und Medienoperationen durchzuführen. In mindestens einer Ausführungsform kann eine Anzeigevorrichtung 2611 mit den Prozessor(en) 2602 verbunden sein. In mindestens einer Ausführungsform kann die Anzeigevorrichtung 2611 eine oder mehrere von einer internen Anzeigevorrichtung, wie in einer mobilen elektronischen Vorrichtung oder einer Laptop-Vorrichtung, oder einer externen Anzeigevorrichtung beinhalten, die über eine Anzeigeschnittstelle (z.B. DisplayPort usw.) angeschlossen ist. In mindestens einer Ausführungsform kann die Anzeigevorrichtung 2611 eine am Kopf befestigte Anzeige (head mounted display - HMD) beinhalten, wie etwa eine stereoskopische Anzeigevorrichtung zur Verwendung bei Virtual-Reality-(VR-)Anwendungen oder Augmented-Reality-(AR-)Anwendungen.
  • In mindestens einer Ausführungsform ermöglicht der Plattformsteuerungs-Hub 2630, dass Peripheriegeräte mit der Speichervorrichtung 2620 und dem Prozessor 2602 über einen Hochgeschwindigkeits-E/A-Bus verbunden werden. In mindestens einer Ausführungsform beinhalten die E/A-Peripheriegeräte eine Audiosteuerung 2646, eine Netzwerksteuerung 2634, eine Firmware-Schnittstelle 2628, einen drahtlosen Sendeempfänger 2626, Berührungssensoren 2625 und eine Datenspeichervorrichtung 2624 (z.B. Festplattenlaufwerk, Flash-Speicher usw.). In mindestens einer Ausführungsform kann die Datenspeichervorrichtung 2624 über eine Speicherschnittstelle (z.B. SATA) oder über einen Peripheriebus, wie etwa einen Peripheral-Component-Interconnect-Bus (z.B. PCI, PCI Express), verbunden sein. In mindestens einer Ausführungsform können die Berührungssensoren 2625 Touchscreen-Sensoren, Drucksensoren oder Fingerabdrucksensoren beinhalten. In mindestens einer Ausführungsform kann der drahtlose Sendeempfänger 2626 ein Wi-Fi-Sendeempfänger, ein Bluetooth-Sendeempfänger oder ein Sendeempfänger für ein mobiles Netzwerk, wie etwa ein 3G-, 4G- oder Long-Term-Evolution-(LTE-)Sendeempfänger sein. In mindestens einer Ausführungsform ermöglicht die Firmware-Schnittstelle 2628 die Kommunikation mit der System-Firmware und kann zum Beispiel eine Unified Extensible Firmware Interface (UEFI) sein. In mindestens einer Ausführungsform kann die Netzwerksteuerung 2634 eine Netzwerkverbindung zu einem drahtgebundenen Netzwerk ermöglichen. In mindestens einer Ausführungsform ist eine Hochleistungsnetzwerksteuerung (nicht gezeigt) mit dem Schnittstellenbus 2610 gekoppelt. In mindestens einer Ausführungsform ist die Audiosteuerung 2646 eine Mehrkanal-High-Definition-Audiosteuerung. In mindestens einer Ausführungsform beinhaltet das System 2600 eine optionale ältere E/A-Steuerung 2640 zum Koppeln von älteren Vorrichtungen (z.B. Personal System 2 (PS/2)) an das System 2600. In mindestens einer Ausführungsform kann der Plattformsteuerungs-Hub 2630 auch mit einer oder mehreren Universal-Serial-Bus-(USB-)Steuerungen 2642 verbunden sein, die mit Eingabevorrichtungen, wie etwa Kombinationen aus Tastatur und Maus 2643, einer Kamera 2644 oder anderen USB-Eingabevorrichtungen, verbunden sind.
  • In mindestens einer Ausführungsform kann eine Instanz der Speichersteuerung 2616 und des Plattformsteuerungs-Hubs 2630 in einen diskreten externen Grafikprozessor, wie etwa den externen Grafikprozessor 2612, integriert sein. In mindestens einer Ausführungsform können der Plattformsteuerungs-Hub 2630 und/oder die Speichersteuerung 2616 extern zu einem oder mehreren Prozessor(en) 2602 sein. Zum Beispiel kann das System 2600 in mindestens einer Ausführungsform eine externe Speichersteuerung 2616 und einen Plattformsteuerungs-Hub 2630 beinhalten, der als Speichersteuerungs-Hub und Peripheriesteuerungs-Hub innerhalb eines Systemchipsatzes konfiguriert sein kann, der mit den Prozessor(en) 2602 in Kommunikation steht.
  • Die Inferenz- und/oder Trainingslogik 715 wird verwendet, um Inferenzierungs- und/oder Trainingsoperationen durchzuführen, die mit einer oder mehreren Ausführungsformen assoziiert sind. Details bezüglich der Inferenz- und/oder Trainingslogik 715 sind hierin in Verbindung mit 7A und/oder 7B bereitgestellt. In mindestens einer Ausführungsform können Abschnitte der oder die gesamte Inferenz- und/oder Trainingslogik 715 in den Grafikprozessor 2608 einbezogen sein. Zum Beispiel können in mindestens einer Ausführungsform die hierin beschriebenen Trainings- und/oder Inferenztechniken eine oder mehrere der in einer 3D-Pipeline verkörperten ALUs verwenden. Darüber hinaus können in mindestens einer Ausführungsform die hierin beschriebenen Inferenz- und/oder Trainingsoperationen unter Verwendung von anderer Logik als der in 7A oder 7B veranschaulichten Logik durchgeführt werden. In mindestens einer Ausführungsform können Gewichtungsparameter in chipinternem oder chipexternem Speicher und/oder in Registern (gezeigt oder nicht gezeigt) gespeichert werden, die ALUs des Grafikprozessors 2608 konfigurieren, um eine(n) oder mehrere hierin beschriebene Algorithmen des maschinellen Lernens, Architekturen, Anwendungsfälle oder Trainingstechniken für neuronale Netzwerke durchzuführen.
  • In mindestens einer Ausführungsform können solche Komponenten verwendet werden, um Bildsegmentierung durchzuführen, wie oben erörtert, beispielsweise in Bezug auf ein System von 1 oder 2 oder Prozesse von 4 oder 5. In mindestens einer Ausführungsform kann dies die Verwendung eines oder mehrerer erster neuronaler Netzwerke beinhalten, um zu bewirken, dass ein Lichteffekt auf ein oder mehrere Objekte in einem oder mehreren Bildern angewendet wird, die zumindest teilweise auf synthetisch erzeugten Bildern des einen oder der mehreren Objekte basieren.
  • 27 ist ein Blockdiagramm eines Prozessors 2700, der einen oder mehrere Prozessorkerne 2702A-2702N, eine integrierte Speichersteuerung 2714 und einen integrierten Grafikprozessor 2708 aufweist, gemäß mindestens einer Ausführungsform. In mindestens einer Ausführungsform kann der Prozessor 2700 zusätzliche Kerne bis einschließlich des zusätzlichen Kerns 2702N beinhalten, die durch Kästen mit gestrichelten Linien dargestellt sind. In mindestens einer Ausführungsform beinhaltet jeder der Prozessorkerne 2702A-2702N eine oder mehrere interne Cache-Einheiten 2704A-2704N. In mindestens einer Ausführungsform weist jeder Prozessorkern auch Zugriff auf eine oder mehrere gemeinsam genutzte Cache-Einheiten 2706 auf. In mindestens einer Ausführungsform beinhaltet der Grafikprozessor 2708 einen oder mehrere Grafikkerne 1800.
  • In mindestens einer Ausführungsform stellen die internen Cache-Einheiten 2704A-2704N und die gemeinsam genutzten Cache-Einheiten 2706 eine Cache-Speicherhierarchie innerhalb des Prozessors 2700 dar. In mindestens einer Ausführungsform können die Cache-Speichereinheiten 2704A-2704N mindestens ein Level von Anweisungs- und Daten-Cache innerhalb jedes Prozessorkerns und ein oder mehrere Levels von gemeinsam genutztem Cache mittleren Levels, wie etwa ein Level 2 (L2), Level 3 (L3), Level 4 (L4) oder andere Cache-Levels, beinhalten, wobei ein höchstes Cache-Level vor dem externen Speicher als LLC klassifiziert ist. In mindestens einer Ausführungsform hält die Cache-Kohärenzlogik die Kohärenz zwischen verschiedenen Cache-Einheiten 2706 und 2704A-2704N aufrecht.
  • In mindestens einer Ausführungsform kann der Prozessor 2700 auch einen Satz von einer oder mehreren Bussteuerungseinheiten 2716 und einen Systemagentenkern 2710 beinhalten. In mindestens einer Ausführungsform verwalten Bussteuerungseinheiten 2716 einen Satz von Peripheriebussen, wie etwa einen oder mehrere PCI- oder PCI-Express-Busse. In mindestens einer Ausführungsform stellt der Systemagentenkern 2710 eine Verwaltungsfunktionalität für verschiedene Prozessorkomponenten bereit. In mindestens einer Ausführungsform beinhaltet der Systemagentenkern 2710 eine oder mehrere integrierte Speichersteuerungen 2714, um den Zugriff auf verschiedene externe Speichervorrichtungen (nicht gezeigt) zu verwalten.
  • In mindestens einer Ausführungsform beinhalten einer oder mehrere der Prozessorkerne 2702A-2702N Unterstützung für simultanes Multi-Threading. In mindestens einer Ausführungsform beinhaltet der Systemagentenkern 2710 Komponenten zum Koordinieren und Betreiben der Kerne 2702A-2702N während der Multi-Thread-Verarbeitung. In mindestens einer Ausführungsform kann der Systemagentenkern 2710 zusätzlich eine Leistungssteuereinheit (power control unit - PCU) beinhalten, die Logik und Komponenten zum Regulieren eines oder mehrerer Leistungszustände der Prozessorkerne 2702A-2702N und des Grafikprozessors 2708 beinhaltet.
  • In mindestens einer Ausführungsform beinhaltet der Prozessor 2700 zusätzlich den Grafikprozessor 2708 zum Ausführen von Grafikverarbeitungsoperationen. In mindestens einer Ausführungsform ist der Grafikprozessor 2708 mit gemeinsam genutzten Cache-Einheiten 2706 und dem Systemagentenkern 2710 gekoppelt, der eine oder mehrere integrierte Speichersteuerungen 2714 beinhaltet. In mindestens einer Ausführungsform beinhaltet der Systemagentenkern 2710 zudem eine Anzeigesteuerung 2711, um die Grafikprozessorausgabe zu einer oder mehreren gekoppelten Anzeigen zu treiben. In mindestens einer Ausführungsform kann die Anzeigesteuerung 2711 auch ein separates Modul sein, das über mindestens eine Zusammenschaltung mit dem Grafikprozessor 2708 gekoppelt ist, oder sie kann in den Grafikprozessor 2708 integriert sein.
  • In mindestens einer Ausführungsform wird eine ringbasierte Zusammenschaltungseinheit 2712 zum Koppeln interner Komponenten des Prozessors 2700 verwendet. In mindestens einer Ausführungsform kann eine alternative Zusammenschaltungseinheit verwendet werden, wie etwa eine Punkt-zu-Punkt-Zusammenschaltung, eine geschaltete Zusammenschaltung oder andere Techniken. In mindestens einer Ausführungsform ist der Grafikprozessor 2708 über eine E/A-Verbindung 2713 mit der Ringzusammenschaltung 2712 gekoppelt.
  • In mindestens einer Ausführungsform stellt die E/A-Verbindung 2713 mindestens eine von mehreren Arten von E/A-Zusammenschaltungen dar, einschließlich einer gehäuseinternen E/A-Zusammenschaltung, die Kommunikation zwischen verschiedenen Prozessorkomponenten und einem eingebetteten Speichermodul 2718 mit hoher Rechenleistung, wie etwa einem eDRAM-Modul, ermöglicht. In mindestens einer Ausführungsform verwenden jeder der Prozessorkerne 2702A-2702N und der Grafikprozessor 2708 ein eingebettetes Speichermodul 2718 als gemeinsam genutzten Last-Level-Cache.
  • In mindestens einer Ausführungsform sind die Prozessorkerne 2702A-2702N homogene Kerne, die eine gemeinsame Anweisungssatzarchitektur ausführen. In mindestens einer Ausführungsform sind die Prozessorkerne 2702A-2702N bezüglich der Anweisungssatzarchitektur (instruction set architecture - ISA) heterogen, wobei einer oder mehrere der Prozessorkerne 2702A-2702N einen gemeinsamen Anweisungssatz ausführen, während ein oder mehrere andere Kerne der Prozessorkerne 2702A-2702N eine Teilmenge eines gemeinsamen Anweisungssatzes oder eines anderen Anweisungssatzes ausführen. In mindestens einer Ausführungsform sind die Prozessorkerne 2702A-2702N bezüglich der Mikroarchitektur heterogen, wobei ein oder mehrere Kerne, die einen relativ betrachtet höheren Leistungsverbrauch aufweisen, mit einem oder mehreren Kernen, die einen niedrigeren Leistungsverbrauch aufweisen, gekoppelt sind. In mindestens einer Ausführungsform kann der Prozessor 2700 auf einem oder mehreren Chips oder als SoC-integrierte Schaltung implementiert sein.
  • Die Inferenz- und/oder Trainingslogik 715 wird verwendet, um Inferenzierungs- und/oder Trainingsoperationen durchzuführen, die mit einer oder mehreren Ausführungsformen assoziiert sind. Details bezüglich der Inferenz- und/oder Trainingslogik 715 sind hierin in Verbindung mit 7A und/oder 7B bereitgestellt. In mindestens einer Ausführungsform können Abschnitte der oder die gesamte Inferenz- und/oder Trainingslogik 715 in den Grafikprozessor 2708 einbezogen sein. Zum Beispiel können in mindestens einer Ausführungsform die hierin beschriebenen Trainings- und/oder Inferenztechniken eine oder mehrere der in einer 3D-Pipeline verkörperten ALUs, Grafikkern(e) 2702, gemeinsam genutzte Logik oder andere Logik in 27 verwenden. Darüber hinaus können in mindestens einer Ausführungsform die hierin beschriebenen Inferenz- und/oder Trainingsoperationen unter Verwendung von anderer Logik als der in 7A oder 7B veranschaulichten Logik durchgeführt werden. In mindestens einer Ausführungsform können Gewichtungsparameter in chipinternem oder chipexternem Speicher und/oder in Registern (gezeigt oder nicht gezeigt) gespeichert werden, die ALUs des Prozessors 2700 konfigurieren, um eine(n) oder mehrere hierin beschriebene Algorithmen des maschinellen Lernens, Architekturen, Anwendungsfälle oder Trainingstechniken für neuronale Netzwerke durchzuführen.
  • In mindestens einer Ausführungsform können solche Komponenten verwendet werden, um Bildsegmentierung durchzuführen, wie oben erörtert, beispielsweise in Bezug auf ein System von 1 oder 2 oder Prozesse von 4 oder 5. In mindestens einer Ausführungsform kann dies die Verwendung eines oder mehrerer erster neuronaler Netzwerke beinhalten, um zu bewirken, dass ein Lichteffekt auf ein oder mehrere Objekte in einem oder mehreren Bildern angewendet wird, die zumindest teilweise auf synthetisch erzeugten Bildern des einen oder der mehreren Objekte basieren.
  • 28 ist ein Blockdiagramm eines Grafikprozessors 2800, bei dem es sich um eine diskrete Grafikverarbeitungseinheit oder um einen mit einer Vielzahl von Verarbeitungskernen integrierten Grafikprozessor handeln kann. In mindestens einer Ausführungsform kommuniziert der Grafikprozessor 2800 über eine auf Speicher abgebildete E/A-Schnittstelle mit Registern auf dem Grafikprozessor 2800 und mit in Speicher abgelegten Befehlen. In mindestens einer Ausführungsform beinhaltet der Grafikprozessor 2800 eine Speicherschnittstelle 2814 zum Zugreifen auf Speicher. In mindestens einer Ausführungsform ist die Speicherschnittstelle 2814 eine Schnittstelle zu lokalem Speicher, einem oder mehreren internen Caches, einem oder mehreren gemeinsam genutzten externen Caches und/oder zu Systemspeicher. In mindestens einer Ausführungsform beinhaltet der Grafikprozessorkern 2800 den Grafikkern 1800.
  • In mindestens einer Ausführungsform beinhaltet der Grafikprozessor 2800 zudem eine Anzeigesteuerung 2802, um Anzeigeausgabedaten zu einer Anzeigevorrichtung 2820 zu treiben. In mindestens einer Ausführungsform beinhaltet die Anzeigesteuerung 2802 Hardware für eine oder mehrere Überlagerungsebenen für die Anzeigevorrichtung 2820 und die Komposition mehrerer Schichten von Video- oder Benutzerschnittstellenelementen. In mindestens einer Ausführungsform kann die Anzeigevorrichtung 2820 eine interne oder externe Anzeigevorrichtung sein. In mindestens einer Ausführungsform ist die Anzeigevorrichtung 2820 eine am Kopf befestigte Anzeigevorrichtung, wie etwa eine Virtual-Reality-(VR-)Anzeigevorrichtung oder eine Augmented-Reality-(AR-)Anzeigevorrichtung. In mindestens einer Ausführungsform beinhaltet der Grafikprozessor 2800 eine Videocodec-Engine 2806 zum Codieren, Decodieren oder Transcodieren von Medien in, aus oder zwischen einem oder mehreren Mediencodierformaten, einschließlich, aber nicht beschränkt auf, Moving-Picture-Experts-Group-(MPEG-)Formate wie etwa MPEG-2, Advanced-Video-Coding-(AVC-)Formate wie etwa H.264/MPEG-4 AVC sowie Society of Motion Picture & Television Engineers (SMPTE) 421 M/VC-1 und Joint-Photographic-Experts-Group-(JPEG-)Formate wie etwa JPEG und Motion JPEG (MJPEG).
  • In mindestens einer Ausführungsform beinhaltet der Grafikprozessor 2800 eine Block-Image-Transfer-(BLIT-)Engine 2804, um zweidimensionale (2D) Rastereroperationen durchzuführen, einschließlich zum Beispiel Bit-Boundary Block Transfers. In mindestens einer Ausführungsform werden jedoch 2D-Grafikoperationen unter Verwendung einer oder mehreren Komponenten einer Grafikverarbeitungs-Engine (graphics processing engine - GPE) 2810 durchgeführt. In mindestens einer Ausführungsform ist die GPE 2810 eine Rechen-Engine zum Durchführen von Grafikoperationen, einschließlich dreidimensionaler (3D) Grafikoperationen und Medienoperationen.
  • In mindestens einer Ausführungsform beinhaltet die GPE 2810 eine 3D-Pipeline 2812 zum Durchführen von 3D-Operationen, wie etwa Rendern dreidimensionaler Bilder und Szenen unter Verwendung von Verarbeitungsfunktionen, die an 3D-Primitivformen (z.B. Rechteck, Dreieck usw.) wirken. In mindestens einer Ausführungsform beinhaltet die 3D-Pipeline 2812 programmierbare Elemente und Festfunktionselemente, die verschiedene Tasks durchführen und/oder Ausführungs-Threads für ein 3D-/Medienteilsystem 2815 erzeugen. Während die 3D-Pipeline 2812 zum Durchführen von Medienoperationen verwendet werden kann, beinhaltet die GPE 2810 in mindestens einer Ausführungsform auch eine Medienpipeline 2816, die zum Durchführen von Medienoperationen, wie etwa Videonachverarbeitung und Bildverbesserung, verwendet wird.
  • In mindestens einer Ausführungsform beinhaltet die Medienpipeline 2816 Festfunktions- oder programmierbare Logikeinheiten, um eine oder mehrere spezialisierte Medienoperationen durchzuführen, wie etwa Beschleunigung von Videodecodierung, Videoentschachtelung und Beschleunigung von Videocodierung anstelle oder im Auftrag der Videocodec-Engine 2806. In mindestens einer Ausführungsform beinhaltet die Medienpipeline 2816 zusätzlich eine Thread-Erzeugungseinheit, um Threads zum Ausführen auf dem 3D-/Medienteilsystem 2815 zu erzeugen. In mindestens einer Ausführungsform führen erzeugte Threads Berechnungen für Medienoperationen auf einer oder mehreren Grafikausführungseinheiten aus, die im 3D-/Medienteilsystem 2815 beinhaltet sind.
  • In mindestens einer Ausführungsform beinhaltet das 3D-/Medienteilsystem 2815 Logik zum Ausführen von Threads, die durch die 3D-Pipeline 2812 und die Medienpipeline 2816 erzeugt werden. In mindestens einer Ausführungsform senden die 3D-Pipeline 2812 und die Medienpipeline 2816 Thread-Ausführungsanforderungen an das 3D-/Medienteilsystem 2815, das Thread-Zuteilungslogik zum Vermitteln und Zuteilen verschiedener Anforderungen an verfügbare Thread-Ausführungsressourcen beinhaltet. In mindestens einer Ausführungsform beinhalten die Ausführungsressourcen ein Array von Grafikausführungseinheiten zum Verarbeiten von 3D- und Medien-Threads. In mindestens einer Ausführungsform beinhaltet das 3D-/Medienteilsystem 2815 einen oder mehrere interne Caches für Thread-Anweisungen und Daten. In mindestens einer Ausführungsform beinhaltet das Teilsystem 2815 auch gemeinsam genutzten Speicher, einschließlich Registern und adressierbaren Speichers, um Daten zwischen Threads gemeinsam zu nutzen und Ausgabedaten zu speichern.
  • Die Inferenz- und/oder Trainingslogik 715 wird verwendet, um Inferenzierungs- und/oder Trainingsoperationen durchzuführen, die mit einer oder mehreren Ausführungsformen assoziiert sind. Details bezüglich der Inferenz- und/oder Trainingslogik 715 sind hierin in Verbindung mit 7A und/oder 7B bereitgestellt. In mindestens einer Ausführungsform können Abschnitte der oder die gesamte Inferenz- und/oder Trainingslogik 715 in den Grafikprozessor 2800 einbezogen sein. Zum Beispiel können in mindestens einer Ausführungsform die hierin beschriebenen Trainings- und/oder Inferenztechniken eine oder mehrere der in der 3D-Pipeline 2812 verkörperten ALUs verwenden. Darüber hinaus können in mindestens einer Ausführungsform die hierin beschriebenen Inferenz- und/oder Trainingsoperationen unter Verwendung von anderer Logik als der in 7A oder 7B veranschaulichten Logik durchgeführt werden. In mindestens einer Ausführungsform können Gewichtungsparameter in chipinternem oder chipexternem Speicher und/oder in Registern (gezeigt oder nicht gezeigt) gespeichert werden, die ALUs des Grafikprozessors 2800 konfigurieren, um eine(n) oder mehrere hierin beschriebene Algorithmen des maschinellen Lernens, Architekturen, Anwendungsfälle oder Trainingstechniken für neuronale Netzwerke durchzuführen.
  • In mindestens einer Ausführungsform können solche Komponenten verwendet werden, um Bildsegmentierung durchzuführen, wie oben erörtert, beispielsweise in Bezug auf ein System von 1 oder 2 oder Prozesse von 4 oder 5. In mindestens einer Ausführungsform kann dies die Verwendung eines oder mehrerer erster neuronaler Netzwerke beinhalten, um zu bewirken, dass ein Lichteffekt auf ein oder mehrere Objekte in einem oder mehreren Bildern angewendet wird, die zumindest teilweise auf synthetisch erzeugten Bildern des einen oder der mehreren Objekte basieren.
  • 29 ist ein Blockdiagramm einer Grafikverarbeitungs-Engine 2910 eines Grafikprozessors gemäß mindestens einer Ausführungsform. In mindestens einer Ausführungsform ist die Grafikverarbeitungs-Engine (GPE) 2910 eine Version der in 28 gezeigten GPE 2810. In mindestens einer Ausführungsform ist eine MedienPipeline 2916 optional und möglicherweise nicht explizit innerhalb der GPE 2910 beinhaltet. In mindestens einer Ausführungsform ist ein separater Medien- und/oder Bildprozessor an die GPE 2910 gekoppelt.
  • In mindestens einer Ausführungsform ist die GPE 2910 an einen Befehls-Streamer 2903 gekoppelt oder sie beinhaltet einen solchen, der einer 3D-Pipeline 2912 und/oder der Medienpipeline 2916 einen Befehlsstrom bereitstellt. In mindestens einer Ausführungsform ist der Befehls-Streamer 2903 an Speicher gekoppelt, bei dem es sich um Systemspeicher oder um einen oder mehrere von internem Cache-Speicher und gemeinsam genutztem Cache-Speicher handeln kann. In mindestens einer Ausführungsform empfängt der Befehls-Streamer 2903 Befehle aus Speicher und sendet Befehle an die 3D-Pipeline 2912 und/oder die Medienpipeline 2916. In mindestens einer Ausführungsform handelt es sich bei den Befehlen um Anweisungen, Primitive oder Mikrooperationen, die aus einem Ringpuffer abgerufen werden, der Befehle für die 3D-Pipeline 2912 und die Medienpipeline 2916 speichert. In mindestens einer Ausführungsform kann ein Ringpuffer zusätzlich Batch-Befehlspuffer beinhalten, die Batches von mehreren Befehlen speichern. In mindestens einer Ausführungsform können die Befehle für die 3D-Pipeline 2912 auch Bezugnahmen auf Daten beinhalten, die in Speicher gespeichert sind, wie etwa, aber nicht beschränkt auf, Vertex- und Geometriedaten für die 3D-Pipeline 2912 und/oder Bilddaten und Speicherobjekte für die Medienpipeline 2916. In mindestens einer Ausführungsform verarbeiten die 3D-Pipeline 2912 und die Medienpipeline 2916 Befehle und Daten, indem sie Operationen durchführen oder einen oder mehrere Ausführungs-Threads einem Grafikkernarray 2914 zuteilen. In mindestens einer Ausführungsform beinhaltet das Grafikkernarray 2914 einen oder mehrere Blöcke von Grafikkernen (z.B. Grafikkern(e) 2915A, Grafikkern(e) 2915B), wobei jeder Block einen oder mehrere Grafikkerne beinhaltet. In mindestens einer Ausführungsform können die Grafikkern(e) 2915A, 2915B als Ausführungseinheiten („EUs“) bezeichnet sein. In mindestens einer Ausführungsform beinhaltet jeder Grafikkern einen Satz von Grafikausführungsressourcen, der eine Universal- und eine grafikspezifische Ausführungslogik zum Durchführen von Grafik- und Rechenoperationen sowie Logik zur Texturverarbeitung mit fester Funktion und/oder zur Beschleunigung des maschinellen Lernens und der künstlichen Intelligenz, einschließlich der Inferenz- und/oder Trainingslogik 715 in 7A und 7B, beinhaltet.
  • In mindestens einer Ausführungsform beinhaltet die 3D-Pipeline 2912 Festfunktionslogik und programmierbare Logik, um ein oder mehrere Shader-Programme, wie etwa Vertex-Shader, Geometrie-Shader, Pixel-Shader, Fragment-Shader, Rechen-Shader oder andere Shader-Programme, zu verarbeiten, indem Anweisungen verarbeitet und Ausführungs-Threads dem Grafikkernarray 2914 zugeteilt werden. In mindestens einer Ausführungsform stellt das Grafikkernarray 2914 einen einheitlichen Block von Ausführungsressourcen zur Verwendung beim Verarbeiten von Shader-Programmen bereit. In mindestens einer Ausführungsform beinhaltet eine Mehrzweck-Ausführungslogik (z.B. Ausführungseinheiten) innerhalb der Grafikkern(e) 2915A-2915B des Grafikkernarrays 2914 Unterstützung für verschiedene 3D-API-Shader-Sprachen und sie kann mehrere simultane Ausführungs-Threads ausführen, die mit mehreren Shadern assoziiert sind.
  • In mindestens einer Ausführungsform beinhaltet das Grafikkernarray 2914 auch Ausführungslogik zum Durchführen von Medienfunktionen, wie etwa Video- und/oder Bildverarbeitung. In mindestens einer Ausführungsform beinhalten die Ausführungseinheiten zusätzlich Universallogik, die so programmiert werden kann, dass sie zusätzlich zu Grafikverarbeitungsoperationen parallele Universalrechenoperationen durchführt.
  • In mindestens einer Ausführungsform können Ausgabedaten, die durch Threads erzeugt werden, die auf dem Grafikkernarray 2914 ausgeführt werden, Daten in einem einheitlichen Rückgabepuffer (unified return buffer - URB) 2918 an Speicher ausgeben. In mindestens einer Ausführungsform kann der URB 2918 Daten für mehrere Threads speichern. In mindestens einer Ausführungsform kann der URB 2918 verwendet werden, um Daten zwischen unterschiedlichen Threads zu senden, die auf dem Grafikkernarray 2914 ausgeführt werden. In mindestens einer Ausführungsform kann der URB 2918 zusätzlich für die Synchronisation zwischen Threads auf dem Grafikkernarray 2914 und der Festfunktionslogik innerhalb der gemeinsam genutzten Funktionslogik 2920 verwendet werden.
  • In mindestens einer Ausführungsform ist das Grafikkernarray 2914 skalierbar, sodass das Grafikkernarray 2914 eine variable Anzahl von Grafikkernen beinhaltet, die jeweils eine variable Anzahl von Ausführungseinheiten auf Grundlage eines angestrebten Leistungs- und Rechenleistungslevels der GPE 2910 aufweisen. In mindestens einer Ausführungsform sind die Ausführungsressourcen dynamisch skalierbar, sodass die Ausführungsressourcen nach Bedarf aktiviert oder deaktiviert werden können.
  • In mindestens einer Ausführungsform ist das Grafikkernarray 2914 an die gemeinsam genutzte Funktionslogik 2920 gekoppelt, die mehrere Ressourcen beinhaltet, die von den Grafikkernen in dem Grafikkernarray 2914 gemeinsam genutzt werden. In mindestens einer Ausführungsform sind die gemeinsam genutzten Funktionen, die durch die gemeinsam genutzte Funktionslogik 2920 durchgeführt werden, in Hardware-Logikeinheiten verkörpert, die eine spezialisierte Ergänzungsfunktionalität für das Grafikkernarray 2914 bereitstellen. In mindestens einer Ausführungsform beinhaltet die gemeinsam genutzte Funktionslogik 2920 eine Abtastereinheit 2921, eine Mathematikeinheit 2922 und Logik 2923 zur Zwischen-Thread-Kommunikation (inter-thread communication - ITC), ist aber nicht darauf beschränkt. In mindestens einer Ausführungsform sind ein oder mehrere Cache(s) 2925 in der gemeinsam genutzten Funktionslogik 2920 enthalten oder an diese gekoppelt.
  • In mindestens einer Ausführungsform wird eine gemeinsam genutzte Funktion verwendet, falls die Nachfrage nach einer spezialisierten Funktion für die Aufnahme in das Grafikkernarray 2914 nicht ausreicht. In mindestens einer Ausführungsform wird eine einzelne Instanziierung einer spezialisierten Funktion in der gemeinsam genutzten Funktionslogik 2920 verwendet und von anderen Ausführungsressourcen innerhalb des Grafikkernarrays 2914 gemeinsam genutzt. In mindestens einer Ausführungsform können spezifische gemeinsam genutzte Funktionen innerhalb der gemeinsam genutzten Funktionslogik 2920, die durch das Grafikkernarray 2914 intensiv genutzt werden, in der gemeinsam genutzten Funktionslogik 2926 innerhalb des Grafikkernarrays 2914 beinhaltet sein. In mindestens einer Ausführungsform kann die gemeinsam genutzte Funktionslogik 2926 innerhalb des Grafikkernarrays 2914 einen Teil der oder die gesamte Logik innerhalb der gemeinsam genutzten Funktionslogik 2920 beinhalten. In mindestens einer Ausführungsform können alle Logikelemente innerhalb der gemeinsam genutzten Funktionslogik 2920 innerhalb der gemeinsam genutzten Funktionslogik 2926 des Grafikkernarrays 2914 dupliziert sein. In mindestens einer Ausführungsform ist die gemeinsam genutzte Funktionslogik 2920 zugunsten der gemeinsam genutzten Funktionslogik 2926 innerhalb des Grafikkernarrays 2914 ausgeschlossen.
  • Die Inferenz- und/oder Trainingslogik 715 wird verwendet, um Inferenzierungs- und/oder Trainingsoperationen durchzuführen, die mit einer oder mehreren Ausführungsformen assoziiert sind. Details bezüglich der Inferenz- und/oder Trainingslogik 715 sind hierin in Verbindung mit 7A und/oder 7B bereitgestellt. In mindestens einer Ausführungsform können Abschnitte der oder die gesamte Inferenz- und/oder Trainingslogik 715 in den Grafikprozessor 2910 einbezogen sein. Zum Beispiel können in mindestens einer Ausführungsform die hierin beschriebenen Trainings- und/oder Inferenztechniken eine oder mehrere der in der 3D-Pipeline 2912 verkörperten ALUs, Grafikkern(e) 2915, gemeinsam genutzte Logik 2926, gemeinsam genutzte Logik 2920 oder andere Logik in 29 verwenden. Darüber hinaus können in mindestens einer Ausführungsform die hierin beschriebenen Inferenz- und/oder Trainingsoperationen unter Verwendung von anderer Logik als der in 7A oder 7B veranschaulichten Logik durchgeführt werden. In mindestens einer Ausführungsform können Gewichtungsparameter in chipinternem oder chipexternem Speicher und/oder in Registern (gezeigt oder nicht gezeigt) gespeichert werden, die ALUs des Grafikprozessors 2910 konfigurieren, um eine(n) oder mehrere hierin beschriebene Algorithmen des maschinellen Lernens, Architekturen, Anwendungsfälle oder Trainingstechniken für neuronale Netzwerke durchzuführen.
  • In mindestens einer Ausführungsform können solche Komponenten verwendet werden, um Bildsegmentierung durchzuführen, wie oben erörtert, beispielsweise in Bezug auf ein System von 1 oder 2 oder Prozesse von 4 oder 5. In mindestens einer Ausführungsform kann dies die Verwendung eines oder mehrerer erster neuronaler Netzwerke beinhalten, um zu bewirken, dass ein Lichteffekt auf ein oder mehrere Objekte in einem oder mehreren Bildern angewendet wird, die zumindest teilweise auf synthetisch erzeugten Bildern des einen oder der mehreren Objekte basieren.
  • 30 ist ein Blockdiagramm von Hardware-Logik eines Grafikprozessorkerns 3000 gemäß mindestens einer hierin beschriebenen Ausführungsform. In mindestens einer Ausführungsform beinhaltet der Grafikprozessorkern 3000 den Grafikkern 1800. In mindestens einer Ausführungsform ist der Grafikprozessorkern 3000 in einem Grafikkernarray beinhaltet. In mindestens einer Ausführungsform kann es sich bei dem Grafikprozessorkern 3000, mitunter als Kern-Slice bezeichnet, um einen oder mehrere Grafikkerne innerhalb eines modularen Grafikprozessors handeln. In mindestens einer Ausführungsform ist der Grafikprozessorkern 3000 beispielhaft für einen Grafikkern-Slice und ein Grafikprozessor, wie hierin beschrieben, kann auf Grundlage der angestrebten Leistungs- und Rechenleistungshüllkurven mehrere Grafikkern-Slices beinhalten. In mindestens einer Ausführungsform kann jeder Grafikkern 3000 einen Festfunktionsblock 3030 beinhalten, der mit mehreren Teilkernen 3001A-3001 F gekoppelt ist, die auch als Teil-Slices bezeichnet werden und modulare Blöcke von Universal- und Festfunktionslogik beinhalten.
  • In mindestens einer Ausführungsform beinhaltet der Festfunktionsblock 3030 eine Geometrie- und Festfunktionspipeline 3036, die von allen Teilkernen in dem Grafikprozessor 3000 gemeinsam genutzt werden kann, zum Beispiel in Implementationen mit Grafikprozessoren mit niedrigerer Rechenleistung und/oder niedrigerer Leistung. In mindestens einer Ausführungsform beinhaltet die Geometrie- und Festfunktionspipeline 3036 eine 3D-Festfunktionspipeline, eine Video-Frontend-Einheit, einen Thread-Erzeuger und Thread-Dispatcher sowie einen Verwalter für einheitlichen Rückgabepuffer, der einheitlichen Rückgabepuffer verwaltet.
  • In mindestens einer Ausführungsform beinhaltet der Festfunktionsblock 3030 auch eine Grafik-SoC-Schnittstelle 3037, einen Grafik-Mikrocontroller 3038 und eine Medienpipeline 3039. In mindestens einer Ausführungsform stellt die Grafik-SoC-Schnittstelle 3037 eine Schnittstelle zwischen dem Grafikkern 3000 und anderen Prozessorkernen innerhalb einer integrierten Schaltung als System auf einem Chip bereit. In mindestens einer Ausführungsform ist der Grafik-Mikrocontroller 3038 ein programmierbarer Teilprozessor, der so konfiguriert werden kann, dass er verschiedene Funktionen des Grafikprozessors 3000 verwaltet, einschließlich Thread-Zuteilung, -Planung und -Präemption. In mindestens einer Ausführungsform beinhaltet die Medienpipeline 3039 Logik zum Erleichtern der Decodierung, Codierung, Vorverarbeitung und/oder Nachverarbeitung von Multimedia-Daten, einschließlich Bild- und Videodaten. In mindestens einer Ausführungsform implementiert die Medienpipeline 3039 Medienoperationen über Anforderungen an Rechen- oder Abtastlogik innerhalb der Teilkerne 3001A-3001 F.
  • In mindestens einer Ausführungsform ermöglicht die SoC-Schnittstelle 3037 es dem Grafikkern 3000, mit Universal-Anwendungsprozessorkernen (z.B. CPUs) und/oder anderen Komponenten innerhalb eines SoC zu kommunizieren, einschließlich Speicherhierarchieelementen, wie etwa einem gemeinsam genutzten Last-Level-Cache-Speicher, System-RAM und/oder eingebettetem chipinternem oder gehäuseinternem DRAM. In mindestens einer Ausführungsform kann die SoC-Schnittstelle 3037 auch Kommunikation mit Festfunktionsvorrichtungen innerhalb eines SoC ermöglichen, wie etwa Kamera-Bildgebungspipelines, und sie ermöglicht die Verwendung von globalem atomarem Speicher und/oder implementiert diesen, der von dem Grafikkern 3000 und den CPUs innerhalb eines SoC gemeinsam genutzt werden kann. In mindestens einer Ausführungsform kann die Grafik-SoC-Schnittstelle 3037 auch Leistungsverwaltungssteuerelemente für den Grafikprozessorkern 3000 implementieren und eine Schnittstelle zwischen einer Taktdomäne des Grafikprozessorkerns 3000 und anderen Taktdomänen innerhalb eines SoC ermöglichen. In mindestens einer Ausführungsform ermöglicht die SoC-Schnittstelle 3037 den Empfang von Befehlspuffern von einem Befehls-Streamer und einem globalen Thread-Dispatcher, die so konfiguriert sind, dass sie jedem von einem oder mehreren Grafikkernen innerhalb eines Grafikprozessors Befehle und Anweisungen bereitstellen. In mindestens einer Ausführungsform können Befehle und Anweisungen der Medienpipeline 3039 zugeteilt werden, wenn Medienoperationen durchgeführt werden sollen, oder einer Geometrie- und Festfunktionspipeline (z.B. der Geometrie- und Festfunktionspipeline 3036 und/oder der Geometrie- und Festfunktionspipeline 3014), wenn Grafikverarbeitungsoperationen durchgeführt werden sollen.
  • In mindestens einer Ausführungsform kann der Grafik-Mikrocontroller 3038 so konfiguriert sein, dass er verschiedene Planungs- und Verwaltungs-Tasks für den Grafikkern 3000 durchführt. In mindestens einer Ausführungsform kann der Grafik-Mikrocontroller 3038 die Planung der Grafik- und/oder Rechenarbeitslast auf verschiedenen Grafikparallel-Engines innerhalb der Arrays 3002A-3002F, 3004A-3004F der Ausführungseinheiten (execution unit - EU) innerhalb der Teilkerne 3001A-3001 F durchführen. In mindestens einer Ausführungsform kann Host-Software, die auf einem CPU-Kern eines SoC, einschließlich des Grafikkerns 3000, ausgeführt wird, Arbeitslasten an einen von mehreren Grafikprozessorpfaden absenden, der eine Planungsoperation auf einer zweckmäßigen Grafik-Engine aufruft. In mindestens einer Ausführungsform beinhalten die Planungsoperationen das Bestimmen, welche Arbeitslast als Nächstes laufen soll, das Absenden einer Arbeitslast an einen Befehls-Streamer, das Vorwegnehmen bestehender Arbeitslasten, die auf einer Engine laufen, das Überwachen des Fortschritts einer Arbeitslast und das Benachrichtigen der Host-Software, wenn eine Arbeitslast abgeschlossen ist. In mindestens einer Ausführungsform kann der Grafik-Mikrocontroller 3038 auch Zustände mit niedriger Leistung oder inaktive Zustände für den Grafikkern 3000 erleichtern, wobei dem Grafikkern 3000 eine Fähigkeit bereitgestellt wird, Register innerhalb des Grafikkerns 3000 über Zustandsübergänge mit niedriger Leistung unabhängig von einem Betriebssystem und/oder einer Grafiktreiber-Software auf einem System zu sichern und wiederherzustellen.
  • In mindestens einer Ausführungsform kann der Grafikkern 3000 mehr oder weniger als die veranschaulichten Teilkerne 3001A-3001 F aufweisen, bis zu N modulare Teilkerne. Für jeden Satz von N Teilkernen kann der Grafikkern 3000 in mindestens einer Ausführungsform auch gemeinsam genutzte Funktionslogik 3010, gemeinsam genutzten und/oder Cache-Speicher 3012, eine Geometrie-/Festfunktionspipeline 3014 sowie zusätzliche Festfunktionslogik 3016 zum Beschleunigen verschiedener Grafik- und Rechenverarbeitungsoperationen beinhalten. Die gemeinsam genutzte Funktionslogik 3010 kann Logikeinheiten (z.B. Abtaster-, Mathematik- und/oder Zwischen-Thread-Kommunikationslogik) beinhalten, die von N Teilkernen innerhalb des Grafikkerns 3000 gemeinsam genutzt werden können. In mindestens einer Ausführungsform kann der gemeinsam genutzte und/oder Cache-Speicher 3012 Last-Level-Cache für N Teilkerne 3001A-3001 F innerhalb des Grafikkerns 3000 sein und auch als gemeinsam genutzter Speicher dienen, auf den mehrere Teilkerne zugreifen können. In mindestens einer Ausführungsform kann die Geometrie-/Festfunktionspipeline 3014 anstelle der Geometrie-/Festfunktionspipeline 3036 innerhalb des Festfunktionsblocks 3030 enthalten sein und ähnliche Logikeinheiten beinhalten.
  • In mindestens einer Ausführungsform beinhaltet der Grafikkern 3000 zusätzliche Festfunktionslogik 3016, die verschiedene Festfunktionsbeschleunigungslogik zur Verwendung durch den Grafikkern 3000 beinhalten kann. In mindestens einer Ausführungsform beinhaltet die zusätzliche Festfunktionslogik 3016 eine zusätzliche Geometriepipeline für die Verwendung beim Shading von nur der Position. Beim Shading von nur der Position existieren mindestens zwei Geometriepipelines, wohingegen eine vollständige Geometriepipeline innerhalb der Geometrie- und Festfunktionspipelines 3014, 3036 und eine Culling-Pipeline, die eine zusätzliche Geometriepipeline ist, die innerhalb der zusätzlichen Festfunktionslogik 3016 enthalten sein kann. In mindestens einer Ausführungsform ist eine Culling-Pipeline eine abgespeckte Version einer vollständigen Geometriepipeline. In mindestens einer Ausführungsform können eine vollständige Pipeline und eine Culling-Pipeline unterschiedliche Instanzen einer Anwendung ausführen, wobei jede Instanz einen separaten Kontext aufweist. In mindestens einer Ausführungsform kann das Shading von nur der Position lange Culling-Läufe von verworfenen Dreiecken verbergen, sodass ermöglicht wird, dass das Shading in einigen Fällen früher abgeschlossen wird. Zum Beispiel kann in mindestens einer Ausführungsform die Culling-Pipeline-Logik innerhalb der zusätzlichen Festfunktionslogik 3016 Positions-Shader parallel zu einer Hauptanwendung ausführen und sie erzeugt im Allgemeinen kritische Ergebnisse schneller als eine vollständige Pipeline, da eine Culling-Pipeline Positionsattribute von Vertices abruft und schattiert, ohne Rasterung und Rendering von Pixeln in einem Bildspeicher durchzuführen. In mindestens einer Ausführungsform kann eine Culling-Pipeline erzeugte kritische Ergebnisse verwenden, um Sichtbarkeitsinformationen für alle Dreiecke zu berechnen, ohne Rücksicht darauf, ob diese Dreiecke Culling unterzogen werden. In mindestens einer Ausführungsform kann eine vollständige Pipeline (die in diesem Fall als Wiederholungspipeline bezeichnet werden kann) Sichtbarkeitsinformationen verbrauchen, um Culling unterzogene Dreiecke zu überspringen, um nur sichtbare Dreiecke zu schattieren, die schließlich an eine Rasterungsphase übergeben werden.
  • In mindestens einer Ausführungsform kann die zusätzliche Festfunktionslogik 3016 auch Logik zur Beschleunigung des maschinellen Lernens wie etwa Festfunktions-Matrixmultiplikationslogik für Implementationen beinhalten, die Optimierungen für das Training oder das Inferenzieren des maschinellen Lernens beinhalten.
  • In mindestens einer Ausführungsform beinhaltet jeder Grafikteilkern 3001A-3001 F einen Satz von Ausführungsressourcen, die verwendet werden können, um Grafik-, Medien- und Rechenoperationen als Reaktion auf Anforderungen durch Grafikpipeline-, Medienpipeline- oder Shader-Programme durchzuführen. In mindestens einer Ausführungsform beinhalten die Grafikteilkerne 3001A-3001 F mehrere EU-Arrays 3002A-3002F, 3004A-3004F, Logik 3003A-3003F zur Thread-Zuteilung und Zwischen-Thread-Kommunikation (thread dispatch/inter-thread communication - TD/IC), einen 3D- (z.B. Textur-) Abtaster 3005A-3005F, einen Medienabtaster 3006A-3006F, einen Shader-Prozessor 3007A-3007F und gemeinsam genutzten lokalen Speicher (shared local memory - SLM) 3008A-3008F. In mindestens einer Ausführungsform beinhalten die EU-Arrays 3002A-3002F, 3004A-3004F jeweils mehrere Ausführungseinheiten, bei denen es sich um Universal-Grafikverarbeitungseinheiten handelt, die dazu in der Lage sind, Gleitkomma- und Integer-/Festkomma-Logikoperationen im Dienste einer Grafik-, Medien- oder Rechenoperation, einschließlich Grafik-, Medien- oder Rechen-Shader-Programmen, durchzuführen. In mindestens einer Ausführungsform führt die TD/IC-Logik 3003A-3003F lokale Thread-Zuteilungs- und Thread-Steueroperationen für Ausführungseinheiten innerhalb eines Teilkerns aus und sie erleichtert die Kommunikation zwischen Threads, die auf Ausführungseinheiten eines Teilkerns ausgeführt werden. In mindestens einer Ausführungsform können die 3D-Abtaster 3005A-3005F Textur- oder andere mit 3D-Grafik verwandte Daten in Speicher lesen. In mindestens einer Ausführungsform können die 3D-Abtaster Texturdaten auf Grundlage eines konfigurierten Abtastzustands und eines Texturformats, das mit einer gegebenen Textur assoziiert ist, unterschiedlich lesen. In mindestens einer Ausführungsform können die Medienabtaster 3006A-3006F ähnliche Leseoperationen auf Grundlage eines Typs und Formats, die mit den Mediendaten assoziiert sind, durchführen. In mindestens einer Ausführungsform kann jeder Grafikteilkern 3001A-3001 F alternativ einen einheitlichen 3D-Abtaster und Medienabtaster beinhalten. In mindestens einer Ausführungsform können Threads, die auf Ausführungseinheiten innerhalb jedes der Teilkerne 3001 A-3001 F ausgeführt werden, den gemeinsam genutzten lokalen Speicher 3008A-3008F innerhalb jedes Teilkerns verwenden, um es Threads, die innerhalb einer Thread-Gruppe ausgeführt werden, zu ermöglichen, unter Verwendung eines gemeinsamen Pools von chipinternem Speicher ausgeführt zu werden.
  • Die Inferenz- und/oder Trainingslogik 715 wird verwendet, um Inferenzierungs- und/oder Trainingsoperationen durchzuführen, die mit einer oder mehreren Ausführungsformen assoziiert sind. Details bezüglich der Inferenz- und/oder Trainingslogik 715 sind hierin in Verbindung mit 7A und/oder 7B bereitgestellt. In mindestens einer Ausführungsform können Abschnitte oder die Gesamtheit der Inferenz- und/oder Trainingslogik 715 in den Grafikprozessor 3000 einbezogen sein. Zum Beispiel können in mindestens einer Ausführungsform die hierin beschriebenen Trainings- und/oder Inferenztechniken eine oder mehrere der in einer 3D-Pipeline verkörperten ALUs, den Grafik-Mikrocontroller 3038, die Geometrie- und Festfunktionspipeline 3014 und 3036 oder andere Logik in 30 verwenden. Darüber hinaus können in mindestens einer Ausführungsform die hierin beschriebenen Inferenz- und/oder Trainingsoperationen unter Verwendung von anderer Logik als der in 7A oder 7B veranschaulichten Logik durchgeführt werden. In mindestens einer Ausführungsform können Gewichtungsparameter in chipinternem oder chipexternem Speicher und/oder in Registern (gezeigt oder nicht gezeigt) gespeichert werden, die ALUs des Grafikprozessors 3000 konfigurieren, um eine(n) oder mehrere hierin beschriebene Algorithmen des maschinellen Lernens, Architekturen, Anwendungsfälle oder Trainingstechniken für neuronale Netzwerke durchzuführen.
  • In mindestens einer Ausführungsform können solche Komponenten verwendet werden, um Bildsegmentierung durchzuführen, wie oben erörtert, beispielsweise in Bezug auf ein System von 1 oder 2 oder Prozesse von 4 oder 5. In mindestens einer Ausführungsform kann dies die Verwendung eines oder mehrerer erster neuronaler Netzwerke beinhalten, um zu bewirken, dass ein Lichteffekt auf ein oder mehrere Objekte in einem oder mehreren Bildern angewendet wird, die zumindest teilweise auf synthetisch erzeugten Bildern des einen oder der mehreren Objekte basieren.
  • 31A-31B veranschaulichen Thread-Ausführungslogik 3100, die ein Array von Verarbeitungselementen eines Grafikprozessorkerns beinhaltet, gemäß mindestens einer Ausführungsform. 31A veranschaulicht mindestens eine Ausführungsform, in der die Thread-Ausführungslogik 3100 verwendet wird. 31 B veranschaulicht beispielhafte interne Details einer Grafikausführungseinheit 3108 gemäß mindestens einer Ausführungsform.
  • Wie in 31A veranschaulicht, beinhaltet die Thread-Ausführungslogik 3100 in mindestens einer Ausführungsform einen Shader-Prozessor 3102, einen Thread-Dispatcher 3104, einen Anweisungscache 3106, ein skalierbares Ausführungseinheitenarray einschließlich einer Vielzahl von Ausführungseinheiten 3107A-3107N und 3108A-3108N, einen Abtaster 3110, einen Daten-Cache 3112 und einen Datenport 3114. In mindestens einer Ausführungsform kann ein skalierbares Ausführungseinheitenarray dynamisch skalieren, indem eine oder mehrere Ausführungseinheiten (z.B. beliebige der Ausführungseinheiten 3108A-N oder 3107A-N) zum Beispiel auf Grundlage von Rechenanforderungen einer Arbeitslast aktiviert oder deaktiviert werden. In mindestens einer Ausführungsform sind die skalierbaren Ausführungseinheiten über eine Zusammenschaltungsstruktur zusammengeschaltet, die mit jeder Ausführungseinheit verknüpft ist. In mindestens einer Ausführungsform beinhaltet die Thread-Ausführungslogik 3100 eine oder mehrere Verbindungen mit Speicher, wie etwa Systemspeicher oder Cache-Speicher, durch eines oder mehrere des Anweisungscaches 3106, des Datenports 3114, des Abtasters 3110 und der Ausführungseinheiten 3107 oder 3108. In mindestens einer Ausführungsform ist jede Ausführungseinheit (z.B. 3107A) eine eigenständige programmierbare Universalrecheneinheit, die dazu in der Lage ist, mehrere simultane Hardware-Threads auszuführen, während mehrere Datenelemente parallel für jeden Thread verarbeitet werden. In mindestens einer Ausführungsform ist das Array der Ausführungseinheiten 3107 und/oder 3108 so skalierbar, dass es eine beliebige Anzahl einzelner Ausführungseinheiten beinhaltet.
  • In mindestens einer Ausführungsform werden die Ausführungseinheiten 3107 und/oder 3108 hauptsächlich zum Ausführen von Shader-Programmen verwendet. In mindestens einer Ausführungsform kann der Shader-Prozessor 3102 verschiedene Shader-Programme verarbeiten und mit den Shader-Programmen assoziierte Ausführungs-Threads über einen Thread-Dispatcher 3104 zuteilen. In mindestens einer Ausführungsform beinhaltet der Thread-Dispatcher 3104 Logik zum Vermitteln von Thread-Initiierungsanforderungen von Grafik- und Medienpipelines und zum Instanziieren angeforderter Threads auf einer oder mehreren Ausführungseinheiten in den Ausführungseinheiten 3107 und/oder 3108. Zum Beispiel kann in mindestens einer Ausführungsform eine Geometriepipeline Vertex-, Tesselierungs- oder Geometrie-Shader der Thread-Ausführungslogik zum Verarbeiten zuteilen. In mindestens einer Ausführungsform kann der Thread-Dispatcher 3104 auch Laufzeit-Thread-Erzeugungsanforderungen von ausführenden Shader-Programmen verarbeiten.
  • In mindestens einer Ausführungsform unterstützen die Ausführungseinheiten 3107 und/oder 3108 einen Anweisungssatz, der systemeigene Unterstützung für viele Standard-3D-Grafik-Shader-Anweisungen beinhaltet, sodass Shader-Programme aus Grafikbibliotheken (z.B. Direct 3D und OpenGL) mit einer minimalen Übersetzung ausgeführt werden. In mindestens einer Ausführungsform unterstützen die Ausführungseinheiten Vertex- und Geometrieverarbeitung (z.B. Vertexprogramme, Geometrieprogramme und/oder Vertex-Shader), Pixelverarbeitung (z.B. Pixel-Shader, Fragment-Shader) und Universalverarbeitung (z.B. Rechen- und Medien-Shader). In mindestens einer Ausführungsform ist jede der Ausführungseinheiten 3107 und/oder 3108, die eine oder mehrere arithmetisch-logische Einheiten (ALUs) beinhalten, zur Multi-Issue-Single-Instruction-Multiple-Data-(SIMD-)Ausführung in der Lage und der Mehr-Thread-Betrieb ermöglicht eine effiziente Ausführungsumgebung trotz Speicherzugriffen mit höherer Latenz. In mindestens einer Ausführungsform weist jeder Hardware-Thread innerhalb jeder Ausführungseinheit eine dedizierte Registerbank mit hoher Bandbreite und einen damit assoziierten unabhängigen Thread-Zustand auf. In mindestens einer Ausführungsform erfolgt die Ausführung mit mehreren Ausgaben pro Takt an Pipelines, die zu Integer- und Gleitkommaoperationen mit einfacher oder doppelter Genauigkeit, SIMD-Verzweigungsfähigkeit, logischen Operationen, transzendentalen Operationen und anderen sonstigen Operationen in der Lage sind. In mindestens einer Ausführungsform bewirkt die Abhängigkeitslogik innerhalb der Ausführungseinheiten 3107 und/oder 3108, dass ein wartender Thread schläft, während er auf Daten aus dem Speicher oder einer der gemeinsam genutzten Funktionen wartet, bis die angeforderten Daten zurückgegeben wurden. In mindestens einer Ausführungsform können, während ein wartender Thread schläft, Hardware-Ressourcen der Verarbeitung anderer Threads gewidmet werden. Zum Beispiel kann in mindestens einer Ausführungsform eine Ausführungseinheit während einer Verzögerung, die mit einer Vertex-Shader-Operation assoziiert ist, Operationen für einen Pixel-Shader, Fragment-Shader oder einen anderen Typ von Shader-Programm, einschließlich eines anderen Vertex-Shaders, durchführen.
  • In mindestens einer Ausführungsform arbeitet jede Ausführungseinheit in den Ausführungseinheiten 3107 und/oder 3108 an Arrays von Datenelementen. In mindestens einer Ausführungsform ist die Anzahl der Datenelemente eine „Ausführungsgröße“ oder die Anzahl der Kanäle für eine Anweisung. In mindestens einer Ausführungsform ist ein Ausführungskanal eine logische Ausführungseinheit für den Zugriff auf Datenelemente, die Maskierung und die Flusssteuerung innerhalb von Anweisungen. In mindestens einer Ausführungsform kann die Anzahl der Kanäle unabhängig von einer Anzahl der physischen arithmetisch-logischen Einheiten (ALUs) oder Gleitkommaeinheiten (FPUs) für einen konkreten Grafikprozessor sein. In mindestens einer Ausführungsform unterstützen die Ausführungseinheiten 3107 und/oder 3108 Integer- und Gleitkommadatentypen.
  • In mindestens einer Ausführungsform beinhaltet ein Anweisungssatz einer Ausführungseinheit SIMD-Anweisungen. In mindestens einer Ausführungsform können verschiedene Datenelemente als gepackter Datentyp in einem Register gespeichert werden, und die Ausführungseinheit verarbeitet verschiedene Elemente basierend auf der Datengröße der Elemente. Zum Beispiel werden in mindestens einer Ausführungsform bei der Bearbeitung eines 256 Bit breiten Vektors 256 Bits eines Vektors in einem Register gespeichert, und eine Ausführungseinheit bearbeitet einen Vektor als vier separate gepackte 64-Bit-Datenelemente (Datenelemente der Größe Quad-Word (QW)), als acht separate gepackte 32-Bit-Datenelemente (Datenelemente der Größe Double Word (DW)), als sechzehn separate gepackte 16-Bit-Datenelemente (Datenelemente der Größe Word (W)) oder als zweiunddreißig separate 8-Bit-Datenelemente (Datenelemente der Größe Byte (B)). In mindestens einer Ausführungsform sind jedoch andere Vektorbreiten und Registergrößen möglich.
  • In mindestens einer Ausführungsform können eine oder mehrere Ausführungseinheiten zu einer fusionierten Ausführungseinheit 3109A-3109N kombiniert werden, die Thread-Steuerlogik (3111A-3111N) aufweist, die fusionierten EUs gemeinsam ist, wie etwa die Ausführungseinheit 3107A, die mit der Ausführungseinheit 3108A zu der fusionierten Ausführungseinheit 3109A fusioniert wird. In mindestens einer Ausführungsform können mehrere EUs zu einer EU-Gruppe fusioniert werden. In mindestens einer Ausführungsform kann jede EU in einer fusionierten EU-Gruppe so ausgestaltet sein, dass sie einen separaten SIMD-Hardware-Thread ausführt, wobei die Anzahl der EUs in einer fusionierten EU-Gruppe je nach Ausführungsform variieren kann. In mindestens einer Ausführungsform können verschiedene SIMD-Breiten pro EU durchgeführt werden, einschließlich, aber nicht beschränkt auf, SIMD8, SIMD16 und SIMD32. In mindestens einer Ausführungsform beinhaltet jede fusionierte Grafikausführungseinheit 3109A-3109N mindestens zwei Ausführungseinheiten. Zum Beispiel beinhaltet in mindestens einer Ausführungsform die fusionierte Ausführungseinheit 3109A eine erste EU 3107A, eine zweite EU 3108A und Thread-Steuerlogik 3111A, die der ersten EU 3107A und der zweiten EU 3108A gemeinsam ist. In mindestens einer Ausführungsform steuert die Thread-Steuerlogik 3111A Threads, die auf der fusionierten Grafikausführungseinheit 3109A ausgeführt werden, sodass jede EU innerhalb der fusionierten Ausführungseinheiten 3109A-3109N unter Verwendung eines gemeinsamen Anweisungszeigerregisters ausgeführt werden kann.
  • In mindestens einer Ausführungsform sind ein oder mehrere interne Anweisungscaches (z.B. 3106) in der Thread-Ausführungslogik 3100 beinhaltet, um Thread-Anweisungen für Ausführungseinheiten zwischenzuspeichern. In mindestens einer Ausführungsform sind ein oder mehrere Daten-Caches (z.B. 3112) beinhaltet, um Thread-Daten während der Thread-Ausführung zwischenzuspeichern. In mindestens einer Ausführungsform ist ein Abtaster 3110 beinhaltet, um Texturabtastung für 3D-Operationen und Medienabtastung für Medienoperationen bereitzustellen. In mindestens einer Ausführungsform beinhaltet der Abtaster 3110 eine spezialisierte Textur- oder Medienabtastfunktionalität, um Textur- oder Mediendaten während eines Abtastprozesses zu verarbeiten, bevor die abgetasteten Daten einer Ausführungseinheit bereitgestellt werden.
  • Während der Ausführung senden Grafik- und Medienpipelines in mindestens einer Ausführungsform Thread-Initiierungsanforderungen über die Thread-Erzeugungs- und -Zuteilungslogik an die Thread-Ausführungslogik 3100. In mindestens einer Ausführungsform wird, sobald eine Gruppe geometrischer Objekte verarbeitet und in Pixeldaten gerastert wurde, die Pixelprozessorlogik (z.B. Pixel-Shader-Logik, Fragment-Shader-Logik usw.) innerhalb des Shader-Prozessors 3102 aufgerufen, um Ausgabeinformationen weiter zu berechnen und zu veranlassen, dass die Ergebnisse in Ausgabeflächen (z.B. Farbpuffer, Tiefenpuffer, Schablonenpuffer usw.) geschrieben werden. In mindestens einer Ausführungsform berechnet ein Pixel-Shader oder Fragment-Shader die Werte verschiedener Vertexattribute, die über ein gerastertes Objekt interpoliert werden sollen. In mindestens einer Ausführungsform führt die Pixelprozessorlogik innerhalb des Shader-Prozessors 3102 dann ein über eine Anwendungsprogrammierschnittstelle (API) zugeführtes Pixel- oder Fragment-Shader-Programm aus. In mindestens einer Ausführungsform teilt der Shader-Prozessor 3102 zum Ausführen eines Shader-Programms Threads über den Thread-Dispatcher 3104 einer Ausführungseinheit (z.B. 3108A) zu. In mindestens einer Ausführungsform verwendet der Shader-Prozessor 3102 die Texturabtastlogik in dem Abtaster 3110, um auf Texturdaten in Texturkarten zuzugreifen, die in Speicher gespeichert sind. In mindestens einer Ausführungsform werden durch arithmetische Operationen an Texturdaten und eingegebenen Geometriedaten Pixelfarbdaten für jedes geometrische Fragment berechnet oder ein oder mehrere Pixel von der weiteren Verarbeitung ausgeschlossen.
  • In mindestens einer Ausführungsform stellt der Datenport 3114 einen Speicherzugriffsmechanismus für die Thread-Ausführungslogik 3100 bereit, um verarbeitete Daten zur weiteren Verarbeitung an einer Grafikprozessor-Ausgabepipeline an Speicher auszugeben. In mindestens einer Ausführungsform beinhaltet der Datenport 3114 einen oder mehrere Cache-Speicher (z.B. den Daten-Cache 3112) oder ist an diesen gekoppelt, um Daten für den Speicherzugriff über einen Datenport zwischenzuspeichern.
  • Wie in 31B veranschaulicht, kann eine Grafikausführungseinheit 3108 in mindestens einer Ausführungsform eine Anweisungsabrufeinheit 3137, ein Array von allgemeinen Registerbänken (general register file - GRF) 3124, ein Array von architektonischen Registerbänken (architectural register file - ARF) 3126, einen Thread-Vermittler 3122, eine Sendeeinheit 3130, eine Verzweigungseinheit 3132, einen Satz SIMD-Gleitkommaeinheiten (FPUs) 3134 und einen Satz dedizierter Integer-SIMD-ALUs 3135 beinhalten. In mindestens einer Ausführungsform beinhalten die GRF 3124 und die ARF 3126 einen Satz allgemeiner Registerbänke und Architekturregisterbänke, die mit jedem simultanen Hardware-Thread assoziiert sind, der in der Grafikausführungseinheit 3108 aktiv sein kann. In mindestens einer Ausführungsform wird der architektonische Zustand pro Thread in der ARF 3126 verwaltet, während die während der Thread-Ausführung verwendeten Daten in der GRF 3124 gespeichert werden. In mindestens einer Ausführungsform kann der Ausführungszustand jedes Threads, einschließlich der Anweisungszeiger für jeden Thread, in Thread-spezifischen Registern in der ARF 3126 aufbewahrt werden.
  • In mindestens einer Ausführungsform weist die Grafikausführungseinheit 3108 eine Architektur auf, die eine Kombination aus simultanem Multi-Threading (Simultaneous Multi-Threading - SMT) und feinkörnigem verschachteltem Multi-Threading (Interleaved Multi-Threading - IMT) ist. In mindestens einer Ausführungsform weist die Architektur eine modulare Konfiguration auf, die zur Ausgestaltungszeit auf Grundlage einer Zielanzahl von simultanen Threads und Anzahl von Registern pro Ausführungseinheit fein abgestimmt werden kann, wobei die Ressourcen der Ausführungseinheit auf die Logik aufgeteilt werden, die zum Ausführen mehrerer simultaner Threads verwendet wird.
  • In mindestens einer Ausführungsform kann die Grafikausführungseinheit 3108 mehrere Anweisungen gleichzeitig ausgeben, die jeweils unterschiedliche Anweisungen sein können. In mindestens einer Ausführungsform kann der Thread-Vermittler 3122 des Grafikausführungseinheits-Threads 3108 Anweisungen einer der Sendeeinheit 3130, der Verzweigungseinheit 3132 oder der SIMD-FPU(s) 3134 zur Ausführung zuteilen. In mindestens einer Ausführungsform kann jeder Ausführungs-Thread auf 128 Universalregister innerhalb der GRF 3124 zugreifen, wobei jedes Register 32 Byte speichern kann, die als SIMD-8-Elementvektor von 32-Bit-Datenelementen zugänglich sind. In mindestens einer Ausführungsform weist jeder Thread der Ausführungseinheit Zugriff auf 4 Kilobyte innerhalb der GRF 3124 auf, obwohl Ausführungsformen nicht derart beschränkt sind und in anderen Ausführungsformen mehr oder weniger Registerressourcen bereitgestellt sein können. In mindestens einer Ausführungsform können bis zu sieben Threads simultan ausgeführt werden, obwohl eine Anzahl der Threads pro Ausführungseinheit gemäß Ausführungsformen auch variieren kann. In mindestens einer Ausführungsform, in der sieben Threads auf 4 Kilobyte zugreifen können, kann die GRF 3124 insgesamt 28 Kilobyte speichern. In mindestens einer Ausführungsform können flexible Adressierungsmodi erlauben, dass Register zusammen adressiert werden, um effektiv breitere Register zu bilden oder um geschichtete rechteckige Blockdatenstrukturen darzustellen.
  • In mindestens einer Ausführungsform werden Speicheroperationen, Abtasteroperationen und andere Systemkommunikation mit längerer Latenz über „Sende“-Anweisungen zugeteilt, die durch Nachrichtenweitergabe an die Sendeeinheit 3130 ausgeführt werden. In mindestens einer Ausführungsform werden Verzweigungsanweisungen der Verzweigungseinheit 3132 zugeteilt, um SIMD-Divergenz und schließlich -Konvergenz zu erleichtern.
  • In mindestens einer Ausführungsform beinhaltet die Grafikausführungseinheit 3108 eine oder mehrere SIMD-Gleitkommaeinheiten (FPU(s)) 3134 zum Durchführen von Gleitkommaoperationen. In mindestens einer Ausführungsform unterstützen die FPU(s) 3134 auch Integerberechnung. In mindestens einer Ausführungsform können die FPU(s) 3134 bis zu einer Anzahl von M 32-Bit-Gleitkomma- (oder -Integer-) Operationen über SIMD ausführen oder bis zu 2M 16-Bit-Integer- oder 16-Bit-Gleitkommaoperationen über SIMD ausführen. In mindestens einer Ausführungsform stellt mindestens eine FPU erweiterte mathematische Fähigkeiten bereit, um transzendentale mathematische Funktionen mit hohem Durchsatz und 64-Bit-Gleitkomma mit doppelter Genauigkeit zu unterstützen. In mindestens einer Ausführungsform ist auch ein Satz von 8-Bit-Integer-SIMD-ALUs 3135 vorhanden, der spezifisch zum Durchführen von Operationen, die mit Berechnungen für maschinelles Lernen assoziiert sind, optimiert sein kann.
  • In mindestens einer Ausführungsform können Arrays von mehreren Instanzen der Grafikausführungseinheit 3108 in einer Grafikteilkern-Gruppierung (z.B. einem Teil-Slice) instanziiert sein. In mindestens einer Ausführungsform kann die Ausführungseinheit 3108 Anweisungen über eine Vielzahl von Ausführungskanälen hinweg ausführen. In mindestens einer Ausführungsform wird jeder Thread, der auf der Grafikausführungseinheit 3108 ausgeführt wird, auf einem anderen Kanal ausgeführt.
  • Die Inferenz- und/oder Trainingslogik 715 wird verwendet, um Inferenzierungs- und/oder Trainingsoperationen durchzuführen, die mit einer oder mehreren Ausführungsformen assoziiert sind. Details bezüglich der Inferenz- und/oder Trainingslogik 715 sind hierin in Verbindung mit 7A und/oder 7B bereitgestellt. In mindestens einer Ausführungsform können Abschnitte der oder die gesamte Inferenz- und/oder Trainingslogik 715 in die Thread-Ausführungslogik 3100 einbezogen sein. Darüber hinaus können in mindestens einer Ausführungsform die hierin beschriebenen Inferenz- und/oder Trainingsoperationen unter Verwendung von anderer Logik als der in 7A oder 7B veranschaulichten Logik durchgeführt werden. In mindestens einer Ausführungsform können Gewichtungsparameter in chipinternem oder chipexternem Speicher und/oder in Registern (gezeigt oder nicht gezeigt) gespeichert werden, die ALUs der Thread-Ausführungslogik 3100 konfigurieren, um eine(n) oder mehrere hierin beschriebene Algorithmen des maschinellen Lernens, Architekturen, Anwendungsfälle oder Trainingstechniken für neuronale Netzwerke durchzuführen.
  • In mindestens einer Ausführungsform können solche Komponenten verwendet werden, um Bildsegmentierung durchzuführen, wie oben erörtert, beispielsweise in Bezug auf ein System von 1 oder 2 oder Prozesse von 4 oder 5. In mindestens einer Ausführungsform kann dies die Verwendung eines oder mehrerer erster neuronaler Netzwerke beinhalten, um zu bewirken, dass ein Lichteffekt auf ein oder mehrere Objekte in einem oder mehreren Bildern angewendet wird, die zumindest teilweise auf synthetisch erzeugten Bildern des einen oder der mehreren Objekte basieren.
  • 32 veranschaulicht eine Parallelverarbeitungseinheit („PPU“) 3200 gemäß mindestens einer Ausführungsform. In mindestens einer Ausführungsform ist die PPU 3200 mit maschinenlesbarem Code konfiguriert, der bei Ausführung durch die PPU 3200 die PPU 3200 dazu veranlasst, einige oder alle der in dieser gesamten Offenbarung beschriebenen Prozesse und Techniken durchzuführen. In mindestens einer Ausführungsform ist die PPU 3200 ein Multi-Thread-Prozessor, der auf einer oder mehreren Vorrichtungen mit integrierter Schaltung implementiert ist und der Multi-Threading als Technik zur Latenzverbergung nutzt, die dazu ausgestaltet ist, computerlesbare Anweisungen (auch als maschinenlesbare Anweisungen oder einfach Anweisungen bezeichnet) auf mehreren Threads parallel zu verarbeiten. In mindestens einer Ausführungsform beinhaltet die PPU 3200 einen oder mehrere Grafikkerne 1800. In mindestens einer Ausführungsform bezieht sich ein Thread auf einen Ausführungs-Thread und er ist eine Instanziierung eines Satzes von Anweisungen, der dazu konfiguriert ist, durch die PPU 3200 ausgeführt zu werden. In mindestens einer Ausführungsform ist die PPU 3200 eine Grafikverarbeitungseinheit („GPU“), die so konfiguriert ist, dass sie eine Grafik-Rendering-Pipeline zum Verarbeiten dreidimensionaler („3D“) Grafikdaten implementiert, um zweidimensionale („2D“) Bilddaten zur Anzeige auf einer Anzeigevorrichtung, wie etwa einer Vorrichtung mit Flüssigkristallanzeige („LCD“), zu erzeugen. In mindestens einer Ausführungsform wird die PPU 3200 genutzt, um Berechnungen, wie etwa lineare Algebraoperationen und Operationen des maschinellen Lernens, durchzuführen. 32 veranschaulicht ein Beispiel für einen Parallelprozessor, der nur zu Veranschaulichungszwecken dient und als nicht einschränkendes Beispiel für Prozessorarchitekturen ausgelegt werden sollte, die innerhalb des Umfangs dieser Offenbarung in Betracht gezogen werden, und dass ein beliebiger geeigneter Prozessor zur Ergänzung und/oder als Ersatz für diesen eingesetzt werden kann.
  • In mindestens einer Ausführungsform sind eine oder mehrere PPUs 3200 so konfiguriert, dass sie Anwendungen für Hochleistungsrechnen (High Performance Computing - „HPC“), für ein Rechenzentrum und für maschinelles Lernen beschleunigen. In mindestens einer Ausführungsform ist die PPU 3200 so konfiguriert, dass sie Deep-Learning-Systeme und -Anwendungen beschleunigt, einschließlich der folgenden nicht einschränkenden Beispiele: Plattformen für autonome Fahrzeuge, Deep Learning, Sprach-, Bild- und Texterkennungssysteme mit hoher Genauigkeit, intelligente Videoanalytik, Molekularsimulationen, Arzneimittelforschung, Krankheitsdiagnose, Wettervorhersage, Big-Data-Analytik, Astronomie, Molekulardynamiksimulation, Finanzmodellierung, Robotik, Fabrikautomatisierung, Echtzeit-Sprachübersetzung, Online-Suchoptimierungen und personalisierte Benutzerempfehlungen und mehr.
  • In mindestens einer Ausführungsform beinhaltet die PPU 3200 ohne Einschränkung eine Eingabe/Ausgabe-(„E/A“-)Einheit 3206, eine Frontend-Einheit 3210, eine Scheduler-(Sequencer-)Einheit 3212, eine Arbeitsverteilungseinheit 3214, einen Hub 3216, eine Kreuzschiene (crossbar - „XBar“) 3220, einen oder mehrere Universalverarbeitungscluster („GPCs“) 3218 und eine oder mehrere Partitionseinheiten („Speicherpartitionseinheiten“) 3222. In mindestens einer Ausführungsform ist die PPU 3200 mit einem Host-Prozessor oder anderen PPUs 3200 über eine oder mehrere Hochgeschwindigkeits-GPU-Zusammenschaltungen („GPU-Zusammenschaltungen“) 3208 verbunden. In mindestens einer Ausführungsform ist die PPU 3200 über einen Systembus 3202 mit einem Host-Prozessor oder anderen Peripherievorrichtungen verbunden. In mindestens einer Ausführungsform ist die PPU 3200 mit einem lokalen Speicher verbunden, der eine oder mehrere Speichervorrichtungen („Speicher“) 3204 umfasst. In mindestens einer Ausführungsform beinhalten die Speichervorrichtungen 3204 ohne Einschränkung eine oder mehrere Vorrichtungen mit dynamischem Direktzugriffsspeicher („DRAM“). In mindestens einer Ausführungsform sind eine oder mehrere DRAM-Vorrichtungen als Teilsysteme mit Speicher mit hoher Bandbreite („HBM“) konfiguriert und/oder konfigurierbar, wobei mehrere DRAM-Dies innerhalb jeder Vorrichtung gestapelt sind.
  • In mindestens einer Ausführungsform kann sich die Hochgeschwindigkeits-GPU-Zusammenschaltung 3208 auf eine drahtbasierte mehrspurige Kommunikationsverbindung beziehen, die durch Systeme zum Skalieren verwendet wird und eine oder mehrere PPUs 3200 in Kombination mit einer oder mehreren zentralen Verarbeitungseinheiten („CPUs“) beinhaltet und die Cache-Kohärenz zwischen PPUs 3200 und CPUs sowie CPU-Mastering unterstützt. In mindestens einer Ausführungsform werden Daten und/oder Befehle durch die Hochgeschwindigkeits-GPU-Zusammenschaltung 3208 über den Hub 3216 zu/von anderen Einheiten der PPU 3200 übertragen, wie etwa einer/einem oder mehreren Kopier-Engines, Videocodierern, Videodecodierern, Leistungsverwaltungseinheiten und anderen Komponenten, die in 32 möglicherweise nicht explizit veranschaulicht sind.
  • In mindestens einer Ausführungsform ist die E/A-Einheit 3206 so konfiguriert, dass sie Kommunikation (z.B. Befehle, Daten) von einem Host-Prozessor (in 32 nicht veranschaulicht) über den Systembus 3202 überträgt und empfängt. In mindestens einer Ausführungsform kommuniziert die E/A-Einheit 3206 mit dem Host-Prozessor direkt über den Systembus 3202 oder durch eine oder mehrere Zwischenvorrichtungen wie etwa eine Speicherbrücke. In mindestens einer Ausführungsform kann die E/A-Einheit 3206 über den Systembus 3202 mit einem oder mehreren anderen Prozessoren kommunizieren, wie etwa einer oder mehreren der PPUs 3200. In mindestens einer Ausführungsform implementiert die E/A-Einheit 3206 eine Peripheral-Component-lnterconnect-Express-(„PCIe“-)Schnittstelle für die Kommunikation über einen PCIe-Bus. In mindestens einer Ausführungsform implementiert die E/A-Einheit 3206 Schnittstellen zum Kommunizieren mit externen Vorrichtungen.
  • In mindestens einer Ausführungsform decodiert die E/A-Einheit 3206 über den Systembus 3202 empfangene Pakete. In mindestens einer Ausführungsform stellen mindestens einige Pakete Befehle dar, die so konfiguriert sind, dass sie die PPU 3200 dazu veranlassen, verschiedene Operationen durchzuführen. In mindestens einer Ausführungsform überträgt die E/A-Einheit 3206 decodierte Befehle an verschiedene andere Einheiten der PPU 3200, wie durch Befehle vorgegeben. In mindestens einer Ausführungsform werden Befehle an die Frontend-Einheit 3210 übertragen und/oder an den Hub 3216 oder andere Einheiten der PPU 3200 übertragen, wie etwa eine oder mehrere Kopier-Engines, einen Videocodierer, einen Videodecodierer, eine Leistungsverwaltungseinheit usw. (in 32 nicht explizit veranschaulicht). In mindestens einer Ausführungsform ist die E/A-Einheit 3206 so konfiguriert, dass sie Kommunikation zwischen und unter verschiedenen logischen Einheiten der PPU 3200 routet.
  • In mindestens einer Ausführungsform codiert ein durch den Host-Prozessor ausgeführtes Programm einen Befehlsstream in einem Puffer, der der PPU 3200 Arbeitslasten zur Verarbeitung bereitstellt. In mindestens einer Ausführungsform umfasst eine Arbeitslast Anweisungen und Daten, die durch diese Anweisungen verarbeitet werden sollen. In mindestens einer Ausführungsform ist ein Puffer eine Region in einem Speicher, auf die sowohl ein Host-Prozessor als auch die PPU 3200 zugreifen können (z.B. Lesen/Schreiben) - eine Host-Schnittstelleneinheit kann so konfiguriert sein, dass sie auf diesen Puffer in einem Systemspeicher, der mit dem Systembus 3202 verbunden ist, über Speicheranforderungen zugreift, die über den Systembus 3202 durch die E/A-Einheit 3206 übertragen werden. In mindestens einer Ausführungsform schreibt ein Host-Prozessor einen Befehlsstrom in einen Puffer und überträgt dann einen Zeiger für einen Start eines Befehlsstroms an die PPU 3200, sodass die Frontend-Einheit 3210 Zeiger für einen oder mehrere Befehlsströme empfängt und einen oder mehrere Befehlsströme verwaltet, indem sie Befehle aus Befehlsströmen liest und Befehle an verschiedene Einheiten der PPU 3200 weiterleitet.
  • In mindestens einer Ausführungsform ist die Frontend-Einheit 3210 an die Scheduler-Einheit 3212 (die als Sequencer-Einheit, Thread-Sequencer und/oder asynchrone Rechen-Engine bezeichnet werden kann) gekoppelt, die verschiedene GPCs 3218 zum Verarbeiten von Tasks konfiguriert, die durch einen oder mehrere Befehlsströme definiert sind. In mindestens einer Ausführungsform ist die Scheduler-Einheit 3212 so konfiguriert, dass sie Zustandsinformationen in Bezug auf verschiedene durch die Scheduler-Einheit 3212 verwaltete Tasks verfolgt, wobei die Zustandsinformationen angeben können, welchem der GPCs 3218 ein Task zugeordnet ist, ob der Task aktiv oder inaktiv ist, welcher Prioritätslevel mit dem Task assoziiert ist, und so weiter. In mindestens einer Ausführungsform verwaltet die Scheduler-Einheit 3212 die Ausführung einer Vielzahl von Tasks auf einem oder mehreren GPCs 3218.
  • In mindestens einer Ausführungsform ist die Scheduler-Einheit 3212 an die Arbeitsverteilungseinheit 3214 gekoppelt, die so konfiguriert ist, dass sie Tasks zur Ausführung auf den GPCs 3218 zuteilt. In mindestens einer Ausführungsform verfolgt die Arbeitsverteilungseinheit 3214 eine Anzahl geplanter Tasks nach, die von der Scheduler-Einheit 3212 empfangen wurde, und die Arbeitsverteilungseinheit 3214 verwaltet einen Pool ausstehender Tasks und einen Pool aktiver Tasks für jeden der GPCs 3218. In mindestens einer Ausführungsform umfasst der Pool ausstehender Tasks eine Anzahl von Schlitzen (z.B. 32 Schlitze), die Tasks enthalten, die zur Verarbeitung durch einen konkreten GPC 3218 zugeordnet sind; ein Pool aktiver Tasks kann eine Anzahl von Schlitzen (z.B. 4 Schlitze) für Tasks umfassen, die aktiv durch die GPCs 3218 verarbeitet werden, sodass, wenn einer der GPCs 3218 die Ausführung eines Tasks abschließt, dieser Task aus diesem Pool aktiver Tasks für den GPC 3218 entfernt wird und ein anderer Task aus einem Pool ausstehender Tasks ausgewählt und zur Ausführung auf dem GPC 3218 eingeplant wird. Falls ein aktiver Task auf dem GPC 3218 inaktiv ist, wie etwa, während er darauf wartet, dass eine Datenabhängigkeit aufgelöst wird, dann wird in mindestens einer Ausführungsform dieser aktive Task aus dem GPC 3218 entfernt und in diesen Pool ausstehender Tasks zurückgeführt, während ein anderer Task in diesem Pool ausstehender Tasks ausgewählt und zur Ausführung auf dem GPC 3218 eingeplant wird.
  • In mindestens einer Ausführungsform kommuniziert die Arbeitsverteilungseinheit 3214 mit einem oder mehreren GPCs 3218 über die XBar 3220. In mindestens einer Ausführungsform ist die XBar 3220 ein Zusammenschaltungsnetzwerk, das viele Einheiten der PPU 3200 an andere Einheiten der PPU 3200 koppelt und dazu konfiguriert sein kann, die Arbeitsverteilungseinheit 3214 an einen konkreten GPC 3218 zu koppeln. In mindestens einer Ausführungsform können auch eine oder mehrere andere Einheiten der PPU 3200 über den Hub 3216 mit der XBar 3220 verbunden sein.
  • In mindestens einer Ausführungsform werden Tasks durch die Scheduler-Einheit 3212 verwaltet und durch die Arbeitsverteilungseinheit 3214 einem der GPCs 3218 zugeteilt. In mindestens einer Ausführungsform ist der GPC 3218 so konfiguriert, dass er einen Task verarbeitet und Ergebnisse erzeugt. In mindestens einer Ausführungsform können die Ergebnisse durch andere Tasks innerhalb des GPC 3218 verbraucht, über die XBar 3220 an einen anderen GPC 3218 geroutet oder in dem Speicher 3204 gespeichert werden. In mindestens einer Ausführungsform können die Ergebnisse über die Partitionseinheiten 3222, die eine Speicherschnittstelle zum Lesen und Schreiben von Daten in den/aus dem Speicher 3204 implementieren, in den Speicher 3204 geschrieben werden. In mindestens einer Ausführungsform können die Ergebnisse über die Hochgeschwindigkeits-GPU-Zusammenschaltung 3208 an eine andere PPU oder CPU übertragen werden. In mindestens einer Ausführungsform beinhaltet die PPU 3200 ohne Einschränkung eine Anzahl U von Partitionseinheiten 3222, die gleich einer Anzahl von separaten und unterschiedlichen Speichervorrichtungen 3204 ist, die an die PPU 3200 gekoppelt sind, wie hierin in Verbindung mit 34 detaillierter beschrieben.
  • In mindestens einer Ausführungsform führt ein Host-Prozessor einen Treiberkernel aus, der eine Anwendungsprogrammierschnittstelle („API“) implementiert, die es einer oder mehreren auf einem Host-Prozessor ausgeführten Anwendungen ermöglicht, Operationen zur Ausführung auf der PPU 3200 zu planen. In mindestens einer Ausführungsform werden mehrere Rechenanwendungen simultan durch die PPU 3200 ausgeführt und die PPU 3200 stellt Isolierung, Dienstgüte (quality of service - „QoS“) und unabhängige Adressräume für mehrere Rechenanwendungen bereit. In mindestens einer Ausführungsform erzeugt eine Anwendung Anweisungen (z.B. in Form von API-Aufrufen), die einen Treiberkernel dazu veranlassen, einen oder mehrere Tasks zur Ausführung durch die PPU 3200 zu erzeugen, und dieser Treiberkernel gibt Tasks an einen oder mehrere Streams aus, die durch die PPU 3200 verarbeitet werden. In mindestens einer Ausführungsform umfasst jeder Task eine oder mehrere Gruppen von zusammenhängenden Threads, die als Warp, Wellenfront und/oder Welle bezeichnet werden können. In mindestens einer Ausführungsform umfassen ein Warp, eine Wellenfront und/oder eine Welle eine Vielzahl von zugehörigen Threads (z.B. 32 Threads), die parallel ausgeführt werden können. In mindestens einer Ausführungsform können sich kooperierende Threads auf eine Vielzahl von Threads beziehen, die Anweisungen zum Ausführen von Tasks beinhalten und Daten über einen gemeinsamen Speicher austauschen. In mindestens einer Ausführungsform werden Threads und kooperierende Threads in Verbindung mit 34 detaillierter beschrieben.
  • Die Inferenz- und/oder Trainingslogik 715 wird verwendet, um Inferenzierungs- und/oder Trainingsoperationen durchzuführen, die mit einer oder mehreren Ausführungsformen assoziiert sind. Details bezüglich der Inferenz- und/oder Trainingslogik 715 sind hierin in Verbindung mit 7A und/oder 7B bereitgestellt. In mindestens einer Ausführungsform wird der Deep-Learning-Anwendungsprozessor verwendet, um ein Modell für maschinelles Lernen, wie etwa ein neuronales Netzwerk, zu trainieren, um der PPU 3200 bereitgestellte Informationen vorherzusagen oder abzuleiten. In mindestens einer Ausführungsform wird der Deep Learning-Anwendungsprozessor verwendet, um Informationen auf der Grundlage eines trainierten Modells zum maschinellen Lernen (z.B. eines neuronalen Netzwerks), das von einem anderen Prozessor oder System oder von der PPU 3200 trainiert wurde, abzuleiten oder vorherzusagen. In mindestens einer Ausführungsform kann die PPU 3200 verwendet werden, um einen oder mehrere der hierin beschriebenen Anwendungsfälle für neuronale Netzwerke durchzuführen.
  • In mindestens einer Ausführungsform können solche Komponenten verwendet werden, um Bildsegmentierung durchzuführen, wie oben erörtert, beispielsweise in Bezug auf ein System von 1 oder 2 oder Prozesse von 4 oder 5. In mindestens einer Ausführungsform kann dies die Verwendung eines oder mehrerer erster neuronaler Netzwerke beinhalten, um zu bewirken, dass ein Lichteffekt auf ein oder mehrere Objekte in einem oder mehreren Bildern angewendet wird, die zumindest teilweise auf synthetisch erzeugten Bildern des einen oder der mehreren Objekte basieren.
  • 33 veranschaulicht einen Universalverarbeitungscluster („GPC“) 3300 gemäß mindestens einer Ausführungsform. In mindestens einer Ausführungsform handelt es sich bei dem GPC 3300 um den GPC 3218 aus 32. In mindestens einer Ausführungsform beinhaltet jeder GPC 3300 ohne Einschränkung eine Anzahl von Hardware-Einheiten zum Verarbeiten von Tasks und beinhaltet jeder GPC 3300 ohne Einschränkung einen Pipelineverwalter 3302, eine Vor-Rasteroperationeneinheit (pre-raster operations unit - „preROP“) 3304, eine Raster-Engine 3308, eine Arbeitsverteilungskreuzschiene (work distribution crossbar - „WDX“) 3316, eine Speicherverwaltungseinheit („MMU“) 3318, einen oder mehrere Datenverarbeitungscluster (Data Processing Clusters - „DPCs“) 3306 und eine beliebige geeignete Kombination von Teilen.
  • In mindestens einer Ausführungsform wird der Betrieb des GPC 3300 vom Pipeline-Manager 3302 gesteuert. In mindestens einer Ausführungsform verwaltet der Pipelineverwalter 3302 die Konfiguration eines oder mehrerer DPCs 3306 für die Verarbeitung von Tasks, die dem GPC 3300 zugewiesen sind. In mindestens einer Ausführungsform konfiguriert der Pipelineverwalter 3302 mindestens einen von einem oder mehreren DPCs 3306 dazu, mindestens einen Abschnitt einer Grafik-Rendering-Pipeline zu implementieren. In mindestens einer Ausführungsform ist der DPC 3306 dazu konfiguriert, ein Vertex-Shader-Programm auf einem programmierbaren Streaming-Multiprozessor (streaming multi-processor- „SM“) 3314 auszuführen. In mindestens einer Ausführungsform ist der Pipelineverwalter 3302 so konfiguriert, dass er die von einer Arbeitsverteilungseinheit empfangenen Pakete an zweckmäßige logische Einheiten innerhalb des GPC 3300 routet, und in mindestens einer Ausführungsform können einige Pakete an Festfunktions-Hardwareeinheiten in dem preROP 3304 und/oder der Raster-Engine 3308 geroutet werden, während andere Pakete zum Verarbeiten durch eine Primitiv-Engine 3312 oder den SM 3314 an die DPCs 3306 geroutet werden können. In mindestens einer Ausführungsform konfiguriert der Pipelineverwalter 3302 mindestens einen der DPCs 3306 zum Implementieren eines Modells eines neuronalen Netzwerks und/oder einer Rechenpipeline.
  • In mindestens einer Ausführungsform ist die preROP-Einheit 3304 so konfiguriert, dass sie in mindestens einer Ausführungsform die durch die Raster-Engine 3308 und die DPCs 3306 erzeugten Daten an eine Einheit für Rasteroperationen (Raster Operations - „ROP“) in der Partitionseinheit 3222 routet, die vorstehend in Verbindung mit 32 detaillierter beschrieben ist. In mindestens einer Ausführungsform ist die preROP-Einheit 3304 so konfiguriert, dass sie unter anderem Optimierungen für die Farbmischung durchführt, Pixelfarbdaten organisiert und Adressübersetzungen durchführt. In mindestens einer Ausführungsform beinhaltet die Raster-Engine 3308 ohne Einschränkung eine Anzahl von Festfunktions-Hardwareeinheiten, die so konfiguriert sind, dass sie verschiedene Rasteroperationen durchführen, und in mindestens einer Ausführungsform beinhaltet die Raster-Engine 3308 ohne Einschränkung eine Setup-Engine, eine Grobraster-Engine, eine Culling-Engine, eine Clipping-Engine, eine Feinraster-Engine, eine Kachelverschmelzungs-Engine und eine beliebige geeignete Kombination davon. In mindestens einer Ausführungsform empfängt die Setup-Engine transformierte Vertices und sie erzeugt Ebenengleichungen, die mit dem durch die Vertices definierten geometrischen Primitiv assoziiert sind; die Ebenengleichungen werden an eine Grobraster-Engine übertragen, um Abdeckungsinformationen (z.B. eine x-, y-Abdeckungsmaske für eine Kachel) für das Primitiv zu erzeugen; die Ausgabe einer Grobraster-Engine wird an eine Culling-Engine übertragen, in der Fragmente, die mit einem Primitiv assoziiert sind und einen z-Test nicht bestehen, Culling unterzogen werden und an eine Clipping-Engine übertragen werden, in der Fragmente, die außerhalb eines Sichtkegelstumpfes liegen, Clipping unterzogen werden. In mindestens einer Ausführungsform werden Fragmente, die das Clipping und Culling überstehen, an eine Feinraster-Engine übergeben, um Attribute für Pixelfragmente auf Grundlage von Ebenengleichungen zu erzeugen, die durch eine Setup-Engine erzeugt werden. In mindestens einer Ausführungsform umfasst eine Ausgabe der Raster-Engine 3308 Fragmente, die durch eine beliebige geeignete Entität, wie etwa durch einen innerhalb des DPC 3306 implementierten Fragment-Shader, verarbeitet werden sollen.
  • In mindestens einer Ausführungsform umfasst jeder DPC 3306, der in dem GPC 3300 beinhaltet ist, ohne Einschränkung eine M-Pipe-Steuerung (M-Pipe Controller - „MPC“) 3310; die Primitiv-Engine 3312; einen oder mehrere SMs 3314 und eine beliebige geeignete Kombination davon. In mindestens einer Ausführungsform steuert die MPC 3310 den Betrieb des DPC 3306 und routet von dem Pipelineverwalter 3302 empfangene Pakete an die entsprechenden Einheiten in dem DPC 3306. In mindestens einer Ausführungsform werden Pakete, die mit einem Vertex assoziiert sind, an die Primitiv-Engine 3312 geroutet, die so konfiguriert ist, dass sie Vertexattribute, die mit einem Vertex assoziiert sind, aus dem Speicher abruft; im Gegensatz dazu können Pakete, die mit einem Shader-Programm assoziiert sind, an den SM 3314 übertragen werden.
  • In mindestens einer Ausführungsform umfasst der SM 3314 ohne Einschränkung einen programmierbaren Streaming-Prozessor, der so konfiguriert ist, dass er Tasks verarbeitet, die durch eine Anzahl von Threads dargestellt sind. In mindestens einer Ausführungsform weist der SM 3314 mehrere Threads auf und ist so konfiguriert, dass er eine Vielzahl von Threads (z.B. 32 Threads) aus einer konkreten Gruppe von Threads nebenläufig ausführt und eine Single-Instruction-Multiple-Data-(„SIMD“-)Architektur implementiert, bei der jeder Thread in einer Gruppe von Threads (z.B. ein Warp, eine Wellenfront, eine Welle) so konfiguriert ist, dass er einen anderen Datensatz auf Grundlage des gleichen Anweisungssatzes verarbeitet. In mindestens einer Ausführungsform führen alle Threads in einer Gruppe von Threads einen gemeinsamen Satz von Anweisungen aus. In mindestens einer Ausführungsform implementiert der SM 3314 eine Single-Instruction-Multiple-Thread-(„SIMT“-)Architektur, bei der jeder Thread in einer Gruppe von Threads so konfiguriert ist, dass er einen anderen Datensatz auf Grundlage dieses gemeinsamen Anweisungssatzes verarbeitet, wobei jedoch zugelassen wird, dass die einzelnen Threads in einer Gruppe von Threads während der Ausführung divergieren. In mindestens einer Ausführungsform werden ein Programmzähler, ein Aufrufstack und ein Ausführungsstatus für jeden Warp (der als Wellenfronten und/oder Wellen bezeichnet werden kann) beibehalten, wodurch die Gleichzeitigkeit zwischen Warps und die serielle Ausführung innerhalb von Warps ermöglicht wird, wenn Threads innerhalb eines Warps divergieren. In einer anderen Ausführungsform werden ein Programmzähler, ein Aufrufstapel und ein Ausführungszustand für jeden einzelnen Thread beibehalten, wodurch gleichwertige Nebenläufigkeit zwischen allen Threads, innerhalb und zwischen Warps ermöglicht wird. In mindestens einer Ausführungsform wird der Ausführungszustand für jeden einzelnen Thread beibehalten und Threads, die gemeinsame Anweisungen ausführen, können zur besseren Effizienz konvergiert und parallel ausgeführt werden. Mindestens eine Ausführungsform des SM 3314 wird hierin detaillierter beschrieben.
  • In mindestens einer Ausführungsform stellt die MMU 3318 eine Schnittstelle zwischen dem GPC 3300 und einer Speicherpartitionseinheit (z.B. der Partitionseinheit 3222 in 32) bereit, und die MMU 3318 sorgt für die Übersetzung virtueller Adressen in physische Adressen, den Speicherschutz und die Arbitrierung von Speicheranforderungen. In mindestens einer Ausführungsform stellt die MMU 3318 einen oder mehrere Adressenübersetzungspuffer („TLBs“) zum Durchführen der Übersetzung von virtuellen Adressen in physische Adressen in Speicher bereit.
  • Die Inferenz- und/oder Trainingslogik 715 wird verwendet, um Inferenzierungs- und/oder Trainingsoperationen durchzuführen, die mit einer oder mehreren Ausführungsformen assoziiert sind. Details bezüglich der Inferenz- und/oder Trainingslogik 715 sind hierin in Verbindung mit 7A und/oder 7B bereitgestellt. In mindestens einer Ausführungsform wird der Deep-Learning-Anwendungsprozessor verwendet, um ein Modell des maschinellen Lernens, wie etwa ein neuronales Netzwerk, zu trainieren, um dem GPC 3300 bereitgestellte Informationen vorherzusagen oder zu inferenzieren. In mindestens einer Ausführungsform wird der GPC 3300 verwendet, um Informationen auf Grundlage eines trainierten Modells des maschinellen Lernens (z.B. eines neuronalen Netzwerks) zu inferenzieren oder vorherzusagen, das durch einen anderen Prozessor oder ein anderes System oder durch den GPC 3300 trainiert wurde. In mindestens einer Ausführungsform kann der GPC 3300 verwendet werden, um einen oder mehrere der hierin beschriebenen Anwendungsfälle für neuronale Netzwerke durchzuführen.
  • In mindestens einer Ausführungsform können solche Komponenten verwendet werden, um Bildsegmentierung durchzuführen, wie oben erörtert, beispielsweise in Bezug auf ein System von 1 oder 2 oder Prozesse von 4 oder 5. In mindestens einer Ausführungsform kann dies die Verwendung eines oder mehrerer erster neuronaler Netzwerke beinhalten, um zu bewirken, dass ein Lichteffekt auf ein oder mehrere Objekte in einem oder mehreren Bildern angewendet wird, die zumindest teilweise auf synthetisch erzeugten Bildern des einen oder der mehreren Objekte basieren.
  • 34 veranschaulicht eine Speicherpartitionseinheit 3400 einer Parallelverarbeitungseinheit („PPU“) gemäß mindestens einer Ausführungsform. In mindestens einer Ausführungsform beinhaltet die Speicherpartitionseinheit 3400 ohne Einschränkung eine Einheit 3402 für Rasteroperationen („ROP“), einen Level-Zwei-(„L2“-)Cache 3404, eine Speicherschnittstelle 3406 und eine beliebige geeignete Kombination davon. In mindestens einer Ausführungsform ist die Speicherschnittstelle 3406 an Speicher gekoppelt. In mindestens einer Ausführungsform kann die Speicherschnittstelle 3406 32-, 64-, 128-, 1024-Bit-Datenbusse oder dergleichen für die Hochgeschwindigkeitsdatenübermittlung implementieren. In mindestens einer Ausführungsform beinhaltet die PPU U Speicherschnittstellen 3406, wobei U eine positive ganze Zahl ist, mit einer Speicherschnittstelle 3406 pro Paar von Partitionseinheiten 3400, wobei jedes Paar von Partitionseinheiten 3400 mit einer entsprechenden Speichervorrichtung verbunden ist. In mindestens einer Ausführungsform kann die PPU zum Beispiel mit bis zu Y Speichervorrichtungen verbunden sein, wie etwa mit Speicherstapeln mit hoher Bandbreite oder mit einem synchronen dynamischen Direktzugriffsspeicher mit Graphics-Double-Data-Rate-Version 5 („GDDR5-SDRAM“).
  • In mindestens einer Ausführungsform implementiert die Speicherschnittstelle 3406 eine Speicherschnittstelle mit Speicher mit hoher Bandbreite der zweiten Generation („HBM2“) und Y ist gleich der Hälfte von U. In mindestens einer Ausführungsform befinden sich HBM2-Speicherstapel auf einem physischen Gehäuse mit einer PPU, was im Vergleich zu herkömmlichen GDDR5-SDRAM-Systemen erhebliche Leistungs- und Flächeneinsparungen bereitstellt. In mindestens einer Ausführungsform beinhaltet jeder HBM2-Stapel ohne Einschränkung vier Speicher-Dies mit Y=4, wobei jeder HBM2-Stapel zwei 128-Bit-Kanäle pro Die für insgesamt 8 Kanäle und eine Datenbusbreite von 1024 Bit beinhaltet. In mindestens einer Ausführungsform unterstützt der Speicher den Single-Error Correcting Double-Error Detecting („SECDED“) Error Correction Code („ECC“) zum Schutz der Daten. In mindestens einer Ausführungsform kann der ECC eine höhere Zuverlässigkeit für Rechenanwendungen bereitstellen, die für Datenkorruption empfindlich sind.
  • In mindestens einer Ausführungsform implementiert die PPU eine Speicherhierarchie mit mehreren Levels. In mindestens einer Ausführungsform unterstützt die Speicherpartitionseinheit 3400 einen einheitlichen Speicher, um einen einzelnen einheitlichen virtuellen Adressraum für den Speicher der zentralen Verarbeitungseinheit („CPU“) und der PPU bereitzustellen, wodurch die gemeinsame Nutzung von Daten zwischen virtuellen Speichersystemen ermöglicht wird. In mindestens einer Ausführungsform wird die Häufigkeit von Zugriffen durch eine PPU auf einen Speicher, der sich auf anderen Prozessoren befindet, verfolgt, um sicherzustellen, dass Speicherseiten in den physischen Speicher der PPU verschoben werden, die häufiger auf Seiten zugreift. In mindestens einer Ausführungsform unterstützt die Hochgeschwindigkeits-GPU-Zusammenschaltung 3208 Adressübersetzungsdienste, die es der PPU ermöglichen, direkt auf die Seitentabellen einer CPU zuzugreifen, und einer PPU vollen Zugriff auf den CPU-Speicher bereitstellen.
  • In mindestens einer Ausführungsform übermitteln Kopier-Engines Daten zwischen mehreren PPUs oder zwischen PPUs und CPUs. In mindestens einer Ausführungsform können Kopier-Engines Seitenfehler für Adressen erzeugen, die nicht in Seitentabellen abgebildet sind, und die Speicherpartitionseinheit 3400 bedient dann Seitenfehler, indem sie die Adressen in die Seitentabelle abbildet, woraufhin die Kopier-Engine eine Übermittlung durchführt. In mindestens einer Ausführungsform ist der Speicher für mehrere Kopier-Engine-Operationen zwischen mehreren Prozessoren gepinnt (d. h. nicht auslagerbar), was den verfügbaren Speicher erheblich reduziert. In mindestens einer Ausführungsform können bei Hardware-Seitenfehlern Adressen an Kopier-Engines übergeben werden, ohne Rücksicht darauf, ob Speicherseiten speicherresident sind und ein Kopierprozess transparent ist.
  • Daten aus dem Speicher 3204 aus 32 oder einem anderen Systemspeicher werden gemäß mindestens einer Ausführungsform durch die Speicherpartitionseinheit 3400 abgerufen und in L2-Cache 3404 gespeichert, der sich auf dem Chip befindet und von verschiedenen GPCs gemeinsam genutzt wird. Jede Speicherpartitionseinheit 3400 beinhaltet in mindestens einer Ausführungsform ohne Einschränkung mindestens einen Abschnitt des L2-Caches, der mit einer entsprechenden Speichervorrichtung assoziiert ist. In mindestens einer Ausführungsform sind die Caches der unteren Levels in verschiedenen Einheiten innerhalb der GPCs implementiert. In mindestens einer Ausführungsform kann jeder der SMs 3314 aus 33 einen Level-1-(„L1“-)Cache implementieren, wobei dieser L1-Cache ein privater Speicher ist, der für einen konkreten SM 3314 dediziert ist, und Daten aus dem L2-Cache 3404 werden abgerufen und in jedem L1-Cache zum Verarbeiten in funktionellen Einheiten der SMs 3314 gespeichert. In mindestens einer Ausführungsform ist der L2-Cache 3404 an die Speicherschnittstelle 3406 und die in 32 gezeigte XBar 3220 gekoppelt.
  • In mindestens einer Ausführungsform führt die ROP-Einheit 3402 Grafikrasteroperationen durch, die mit der Pixelfarbe in Bezug stehen, wie etwa Farbkomprimierung, Pixel-Blending und mehr. In mindestens einer Ausführungsform implementiert die ROP-Einheit 3402 die Tiefenprüfung in Verbindung mit der Raster-Engine 3308, wobei sie eine Tiefe für eine Abtaststelle, die mit einem Pixelfragment assoziiert ist, von einer Culling-Engine der Raster-Engine 3308 empfängt. In mindestens einer Ausführungsform wird die Tiefe gegen eine entsprechende Tiefe in einem Tiefenpuffer für eine mit einem Fragment assoziierte Abtaststelle geprüft. Falls dieses Fragment die Tiefenprüfung für diese Abtaststelle besteht, aktualisiert die ROP-Einheit 3402 dann in mindestens einer Ausführungsform den Tiefenpuffer und überträgt ein Ergebnis dieser Tiefenprüfung an die Raster-Engine 3308. Es versteht sich, dass sich eine Anzahl der Partitionseinheiten 3400 von einer Anzahl der GPCs unterscheiden kann und daher kann jede ROP-Einheit 3402 in mindestens einer Ausführungsform an jeden GPC gekoppelt sein. In mindestens einer Ausführungsform verfolgt die ROP-Einheit 3402 die von verschiedenen GPCs empfangenen Pakete und bestimmt, ob ein durch die ROP-Einheit 3402 erzeugtes Ergebnis zu der XBar 3220 durchgeroutet werden soll.
  • 35 veranschaulicht einen Streaming-Multiprozessor („SM“) 3500 gemäß mindestens einer Ausführungsform. In mindestens einer Ausführungsform ist der SM 3500 der SM aus 33. In mindestens einer Ausführungsform beinhaltet der SM 3500 ohne Einschränkung einen Anweisungscache 3502, eine oder mehrere Scheduler-Einheiten 3504 (die als Sequenzer-Einheiten bezeichnet werden können), eine Registerbank 3508, einen oder mehrere Verarbeitungskerne („Kerne“) 3510, eine oder mehrere Spezialfunktionseinheiten (special function units - „SFUs“) 3512, eine oder mehrere Lade-/Speichereinheiten (load/store units - „LSUs“) 3514, ein Zusammenschaltungsnetzwerk 3516, einen gemeinsam genutzten Speicher/Level-Eins-(„L1“-)Cache 3518 und/oder eine beliebige geeignete Kombination davon. In mindestens einer Ausführungsform führen die LSUs 3514 Lade- oder Speicheroperationen durch, die dem Laden/Speichern von Daten (z.B. Anweisungen) zum Durchführen einer Operation (z.B. Durchführen einer API oder eines API-Aufrufs) entsprechen.
  • In mindestens einer Ausführungsform teilt eine Arbeitsverteilungseinheit Tasks zur Ausführung auf Universalverarbeitungsclustern („GPCs“) von Parallelverarbeitungseinheiten („PPUs“) zu und jeder Task wird einem konkreten Datenverarbeitungscluster („DPC“) innerhalb eines GPC zugewiesen, und falls ein Task mit einem Shader-Programm assoziiert ist, wird dieser Task einem der SMs 3500 (die als CUs und/oder Slices bezeichnet werden können) zugewiesen. In mindestens einer Ausführungsform empfängt die Scheduler-Einheit 3504 (die als Sequencer und/oder asynchrone Rechen-Engine bezeichnet werden kann) Tasks von einer Arbeitsverteilungseinheit und sie verwaltet die Anweisungsplanung für einen oder mehrere Thread-Blöcke, die dem SM 3500 zugeordnet sind. In mindestens einer Ausführungsform plant die Scheduler-Einheit 3504 Thread-Blöcke für die Ausführung als Warps (die als Wellenfronten und/oder Wellen bezeichnet werden können) aus parallelen Threads, wobei jedem Thread-Block mindestens ein Warp zugewiesen ist. In mindestens einer Ausführungsform führt jeder Warp Threads aus. In mindestens einer Ausführungsform verwaltet die Scheduler-Einheit 3504 eine Vielzahl von unterschiedlichen Thread-Blöcken, indem sie unterschiedlichen Thread-Blöcken Warps zuweist und dann während jedes Taktzyklus Anweisungen aus einer Vielzahl von unterschiedlichen kooperativen Gruppen verschiedenen funktionellen Einheiten (z.B. Verarbeitungskernen 3510, SFUs 3512 und LSUs 3514) zuteilt.
  • In mindestens einer Ausführungsform können sich kooperative Gruppen (die auch als Wellenfronten und/oder Wellen bezeichnet werden können) auf ein Programmiermodell zur Organisation von Gruppen kommunizierender Threads beziehen, das es den Entwicklern ermöglicht, die Granularität auszudrücken, mit der die Threads kommunizieren, und so reichhaltigere, effizientere parallele Dekompositionen zu ermöglichen. In mindestens einer Ausführungsform unterstützen kooperative Start-APIs die Synchronisierung zwischen Thread-Blöcken zur Ausführung paralleler Algorithmen. In mindestens einer Ausführungsform bieten Anwendungen herkömmlicher Programmiermodelle ein einziges, einfaches Konstrukt für die Synchronisierung kooperierender Threads: eine Barriere über alle Threads eines Thread-Blocks (z.B. die Funktion syncthreads()). In mindestens einer Ausführungsform können Programmierer jedoch Gruppen von Threads mit einer kleineren Granularität als Thread-Blöcke definieren und innerhalb der definierten Gruppen synchronisieren, um eine höhere Leistung, mehr Flexibilität beim Entwurf und eine Wiederverwendung der Software in Form von gruppenweiten Funktionsschnittstellen zu ermöglichen. In mindestens einer Ausführungsform ermöglichen es kooperative Gruppen Programmierern, Gruppen von Threads explizit bei Teilblock- (d. h. so klein wie ein einzelner Thread) und Multiblock-Granularitäten zu definieren und kollektive Operationen, wie etwa die Synchronisierung von Threads, in einer kooperativen Gruppe durchzuführen. In mindestens einer Ausführungsform unterstützt dieses Programmiermodell eine saubere Komposition über Software-Grenzen hinweg, sodass sich Bibliotheken und Dienstprogrammfunktionen innerhalb ihres lokalen Kontexts sicher synchronisieren können, ohne Annahmen über Konvergenz treffen zu müssen. In mindestens einer Ausführungsform ermöglichen Primitive der kooperativen Gruppen neue Muster der kooperativen Parallelität, einschließlich, aber nicht beschränkt auf, Produzent-Konsument-Parallelität, opportunistischer Parallelität und globaler Synchronisation über ein gesamtes Gitter von Thread-Blöcken.
  • In mindestens einer Ausführungsform ist eine Zuteilungseinheit 3506 so konfiguriert, dass sie Anweisungen an eine oder mehrere funktionelle Einheiten überträgt, und die Scheduler-Einheit 3504 beinhaltet ohne Einschränkung zwei Zuteilungseinheiten 3506, die es ermöglichen, dass zwei unterschiedliche Anweisungen aus einem gemeinsamen Warp während jedes Taktzyklus zugeteilt werden. In mindestens einer Ausführungsform beinhaltet jede Scheduler-Einheit 3504 eine einzelne Zuteilungseinheit 3506 oder zusätzliche Zuteilungseinheiten 3506.
  • In mindestens einer Ausführungsform beinhaltet jeder SM 3500 (der als CU und/oder Slice bezeichnet werden kann) in mindestens einer Ausführungsform ohne Einschränkung die Registerbank 3508, die einen Satz von Registern für funktionelle Einheiten des SM 3500 bereitstellt. In mindestens einer Ausführungsform ist die Registerbank 3508 auf jede funktionelle Einheit aufgeteilt, sodass jeder funktionellen Einheit ein dedizierter Abschnitt der Registerbank 3508 zugewiesen ist. In mindestens einer Ausführungsform ist die Registerbank 3508 auf unterschiedliche Warps aufgeteilt, die durch den SM 3500 ausgeführt werden, und die Registerbank 3508 stellt temporären Datenspeicher für Operanden bereit, die mit Datenpfaden von funktionellen Einheiten verbunden sind. In mindestens einer Ausführungsform umfasst jeder SM 3500 ohne Einschränkung eine Vielzahl von L Verarbeitungskernen 3510, wobei L eine positive ganze Zahl ist. In mindestens einer Ausführungsform beinhaltet der SM 3500 ohne Einschränkung eine große Anzahl (z.B. 128 oder mehr) von unterschiedlichen Verarbeitungskernen 3510. In mindestens einer Ausführungsform beinhaltet jeder Verarbeitungskern 3510 ohne Einschränkung eine Vollpipelineverarbeitungseinheit mit einfacher Genauigkeit, doppelter Genauigkeit und/oder gemischter Genauigkeit, die ohne Einschränkung eine arithmetisch-logische Einheit für Gleitkommazahlen und eine arithmetisch-logische Einheit für Integer beinhaltet. In mindestens einer Ausführungsform implementieren die arithmetischlogischen Einheiten für Gleitkommazahlen den Standard IEEE 754-2008 für Gleitkommaarithmetik. In mindestens einer Ausführungsform beinhalten die Verarbeitungskerne 3510 ohne Einschränkung 64 Gleitkommakerne mit einfacher Genauigkeit (32 Bit), 64 Integerkerne, 32 Gleitkommakerne mit doppelter Genauigkeit (64 Bit) und 8 Tensorkerne.
  • Tensorkerne sind gemäß mindestens einer Ausführungsform dazu konfiguriert, Matrixoperationen durchzuführen. In mindestens einer Ausführungsform sind ein oder mehrere Tensorkerne in den Verarbeitungskernen 3510 vorhanden. In mindestens einer Ausführungsform sind Tensorkerne dazu konfiguriert, Deep-Learning-Matrixarithmetik auszuführen, wie z.B. Faltungsoperationen für das Training und Inferenzieren neuronaler Netzwerke. In mindestens einer Ausführungsform arbeitet jeder Tensorkern an einer 4x4-Matrix und er führt eine Matrixmultiplikations- und -akkumulationsoperation D = A X B + C durch, wobei A, B, C und D 4x4-Matrizen sind.
  • In mindestens einer Ausführungsform sind die Matrixmultiplikationseingänge A und B 16-Bit-Gleitkommamatrizen und die Akkumulationsmatrizen C und D sind 16-Bit-Gleitkomma- oder 32-Bit-Gleitkommamatrizen. In mindestens einer Ausführungsform arbeiten die Tensorkerne an 16-Bit-Gleitkommaeingabedaten mit 32-Bit-Gleitkommaakkumulation. In mindestens einer Ausführungsform verwendet die 16-Bit-Gleitkommamultiplikation 64 Operationen und ergibt ein Produkt mit voller Genauigkeit, das dann unter Verwendung von 32-Bit-Gleitkommaaddition mit anderen Zwischenprodukten für eine 4x4x4-Matrixmultiplikation akkumuliert wird. In mindestens einer Ausführungsform werden Tensorkerne verwendet, um viel größere zweidimensionale oder höherdimensionale Matrixoperationen durchzuführen, die aus diesen kleineren Elementen aufgebaut sind. In mindestens einer Ausführungsform legt eine API, wie etwa die CUDA 9 C++-API, spezielle Matrixlade-, Matrixmultiplizier- und -akkumulations- und Matrixspeicheroperationen offen, um Tensorkerne aus einem CUDA-C++-Programm effizient zu verwenden. In mindestens einer Ausführungsform auf CUDA-Ebene geht die Schnittstelle auf Warp-Ebene von Matrizen der Größe 16x16 aus, die sich über alle 32 Threads des Warp (der auch als Wellenfront und/oder Welle bezeichnet werden kann) erstrecken.
  • In mindestens einer Ausführungsform umfasst jeder SM 3500 ohne Einschränkung M SFUs 3512, die Spezialfunktionen durchführen (z.B. Attributbewertung, reziproke Quadratwurzel und dergleichen). In mindestens einer Ausführungsform beinhalten die SFUs 3512 ohne Einschränkung eine Baumtraversierungseinheit, die so konfiguriert ist, dass sie eine hierarchische Baumdatenstruktur traversiert. In mindestens einer Ausführungsform beinhalten die SFUs 3512 ohne Einschränkung eine Textureinheit, die dazu konfiguriert ist, Texturkartenfilteroperationen durchzuführen. In mindestens einer Ausführungsform sind die Textureinheiten dazu konfiguriert, Texturkarten (z.B. ein 2D-Array von Texeln) aus Speicher zu laden und Texturkarten abzutasten, um abgetastete Texturwerte zur Verwendung in Shader-Programmen zu produzieren, die durch den SM 3500 ausgeführt werden. In mindestens einer Ausführungsform werden die Texturkarten in dem gemeinsam genutzten Speicher/L1-Cache 3518 gespeichert. In mindestens einer Ausführungsform implementieren die Textureinheiten Texturoperationen, wie etwa Filteroperationen unter Verwendung von Mip-Karten (z.B. Texturkarten mit variierenden Detailgraden), gemäß mindestens einer Ausführungsform. In mindestens einer Ausführungsform beinhaltet jeder SM 3500 ohne Einschränkung zwei Textureinheiten.
  • Jeder SM 3500 umfasst in mindestens einer Ausführungsform ohne Einschränkung N LSUs 3514, die Lade- und Speicheroperationen zwischen dem gemeinsam genutzten Speicher/L1-Cache 3518 und der Registerbank 3508 implementieren. Das Zusammenschaltungsnetzwerk 3516 verbindet in mindestens einer Ausführungsform jede funktionelle Einheit mit der Registerbank 3508 und die LSU 3514 mit der Registerbank 3508 und dem gemeinsam genutzten Speicher/L1-Cache 3518. In mindestens einer Ausführungsform ist das Zusammenschaltungsnetzwerk 3516 eine Kreuzschiene, die so konfiguriert sein kann, dass sie beliebige funktionelle Einheiten mit beliebigen Registern in der Registerbank 3508 verbindet und LSUs 3514 mit der Registerbank 3508 und Speicherorten in dem gemeinsam genutzten Speicher/L1-Cache 3518 verbindet.
  • In mindestens einer Ausführungsform ist der gemeinsam genutzte Speicher/L1-Cache 3518 ein Array von chipinternem Speicher, das in mindestens einer Ausführungsform die Datenspeicherung und die Kommunikation zwischen dem SM 3500 und der Primitiv-Engine sowie zwischen Threads in dem SM 3500 ermöglicht. In mindestens einer Ausführungsform umfasst der gemeinsam genutzte Speicher/L1-Cache 3518 ohne Einschränkung eine Speicherkapazität von 128 KB und er befindet sich in einem Pfad von dem SM 3500 zu einer Partitionseinheit. In mindestens einer Ausführungsform wird der gemeinsam genutzte Speicher/L1-Cache 3518 in mindestens einer Ausführungsform zum Zwischenspeichern von Lese- und Schreibvorgängen verwendet. In mindestens einer Ausführungsform sind einer oder mehrere von dem gemeinsam genutzten Speicher/L1-Cache 3518, L2-Cache und Speicher Ergänzungsspeicher.
  • Das Kombinieren der Funktionalität des Daten-Cache und des gemeinsam genutzten Speichers in einem einzelnen Speicherblock stellt in mindestens einer Ausführungsform eine verbesserte Rechenleistung für beide Typen von Speicherzugriffen bereit. In mindestens einer Ausführungsform wird die Kapazität durch Programme, die keinen gemeinsam genutzten Speicher verwenden, als Cache verwendet oder sie kann so verwendet werden, wie etwa, falls der gemeinsam genutzte Speicher so konfiguriert ist, dass er die Hälfte einer Kapazität verwendet, und Textur- und Lade-/Speicheroperationen die verbleibende Kapazität verwenden können. Die Integration in den gemeinsam genutzten Speicher/L1-Cache 3518 ermöglicht dem gemeinsam genutzten Speicher/L1-Cache 3518 gemäß mindestens einer Ausführungsform das Fungieren als Leitung mit hohem Durchsatz für Streaming-Daten, während simultan Zugriff mit hoher Bandbreite und niedriger Latenz auf häufig wiederverwendete Daten bereitgestellt wird. In mindestens einer Ausführungsform kann bei einer Konfiguration für Universalparallelberechnung eine einfachere Konfiguration im Vergleich zur Grafikverarbeitung verwendet werden. In mindestens einer Ausführungsform werden Festfunktions-Grafikverarbeitungseinheiten umgangen, wodurch ein viel einfacheres Programmiermodell entsteht. Bei einer Konfiguration für Universalparallelberechnungen ordnet eine Arbeitsverteilungseinheit in mindestens einer Ausführungsform Blöcke von Threads direkt den DPCs zu und verteilt diese. In mindestens einer Ausführungsform führen Threads in einem Block ein gemeinsames Programm aus, wobei eine eindeutige Thread-ID bei der Berechnung verwendet wird, um sicherzustellen, dass jeder Thread eindeutige Ergebnisse erzeugt, wobei der SM 3500 zum Ausführen des Programms und Durchführen von Berechnungen verwendet wird, der gemeinsam genutzte Speicher/L1-Cache 3518 zum Kommunizieren zwischen den Threads verwendet wird und die LSU 3514 zum Lesen des und Schreiben in den globalen Speicher durch den gemeinsam genutzten Speicher/L1-Cache 3518 und die Speicherpartitionseinheit verwendet wird. Bei der Konfiguration für Universalparallelberechnungen schreibt der SM 3500 in mindestens einer Ausführungsform Befehle, die durch die Scheduler-Einheit 3504 verwendet werden können, um neue Arbeit in den DPCs zu starten.
  • In mindestens einer Ausführungsform ist eine PPU in einem Desktop-Computer, einem Laptop-Computer, einem Tablet-Computer, Servern, Supercomputern, einem Smartphone (z.B. einer drahtlosen tragbaren Vorrichtung), einem persönlichen digitalen Assistenten („PDA“), einer Digitalkamera, einem Fahrzeug, einer am Kopf befestigten Anzeige, einer tragbaren elektronischen Vorrichtung usw. beinhaltet oder daran gekoppelt. In mindestens einer Ausführungsform ist eine PPU auf einem einzelnen Halbleitersubstrat verkörpert. In mindestens einer Ausführungsform ist die PPU in einem System-on-a-Chip („SoC“) zusammen mit einer oder mehreren anderen Einrichtungen wie zusätzlichen PPUs, Speicher, einer CPU mit reduziertem Befehlssatz („RISC“), einer Speicherverwaltungseinheit („MMU“), einem Digital-Analog-Wandler („DAC“) und dergleichen vorhanden.
  • In mindestens einer Ausführungsform kann eine PPU in einer Grafikkarte beinhaltet sein, die eine oder mehrere Speichervorrichtungen beinhaltet. In mindestens einer Ausführungsform kann die Grafikkarte so ausgestaltet sein, dass sie mit einem PCIe-Steckplatz auf einem Motherboard eines Desktop-Computers verbunden werden kann. In mindestens einer Ausführungsform kann diese PPU eine integrierte Grafikverarbeitungseinheit („iGPU“) sein, die im Chipsatz einer Hauptplatine enthalten ist.
  • Die Inferenz- und/oder Trainingslogik 715 wird verwendet, um Inferenzierungs- und/oder Trainingsoperationen durchzuführen, die mit einer oder mehreren Ausführungsformen assoziiert sind. Details bezüglich der Inferenz- und/oder Trainingslogik 715 sind hierin in Verbindung mit 7A und/oder 7B bereitgestellt. In mindestens einer Ausführungsform wird der Deep-Learning-Anwendungsprozessor verwendet, um ein Modell des maschinellen Lernens, wie etwa ein neuronales Netzwerk, zu trainieren, um dem SM 3500 bereitgestellte Informationen vorherzusagen oder zu inferenzieren. In mindestens einer Ausführungsform wird der SM 3500 verwendet, um Informationen auf Grundlage eines trainierten Modells des maschinellen Lernens (z.B. eines neuronalen Netzwerks) zu inferenzieren oder vorherzusagen, das durch einen anderen Prozessor oder ein anderes System oder durch den SM 3500 trainiert wurde. In mindestens einer Ausführungsform kann der SM 3500 verwendet werden, um einen oder mehrere der hierin beschriebenen Anwendungsfälle für neuronale Netzwerke durchzuführen.
  • In mindestens einer Ausführungsform können solche Komponenten verwendet werden, um Bildsegmentierung durchzuführen, wie oben erörtert, beispielsweise in Bezug auf ein System von 1 oder 2 oder Prozesse von 4 oder 5. In mindestens einer Ausführungsform kann dies die Verwendung eines oder mehrerer erster neuronaler Netzwerke beinhalten, um zu bewirken, dass ein Lichteffekt auf ein oder mehrere Objekte in einem oder mehreren Bildern angewendet wird, die zumindest teilweise auf synthetisch erzeugten Bildern des einen oder der mehreren Objekte basieren.
  • Es werden Ausführungsformen offenbart, die mit einer virtualisierten Rechenplattform für weiterentwickeltes Rechnen in Bezug stehen, wie etwa Bildinferenz und Bildverarbeitung in medizinischen Anwendungen. Ohne Einschränkung können Ausführungsformen Radiografie, Magnetresonanztomografie (MRT), Nuklearmedizin, Ultraschall, Sonografie, Elastografie, fotoakustische Bildgebung, Tomografie, Echokardiografie, funktionelle Nahinfrarotspektroskopie und Magnetpartikelbildgebung oder eine Kombination davon beinhalten. In mindestens einer Ausführungsform können eine virtualisierte Rechenplattform und die hierin beschriebenen damit assoziierten Prozesse zusätzlich oder alternativ ohne Einschränkung in der Forensikanalyse, der Detektion und Bildgebung des Untergrunds (z.B. Ölexploration, Archäologie, Paläontologie usw.), der Topografie, der Ozeanografie, der Geologie, der Osteologie, der Meteorologie, der intelligenten Bereichs- oder Objektverfolgung und -überwachung, der Sensordatenverarbeitung (z.B. RADAR, SONAR, LIDAR usw.) und/oder der Genomik und Gensequenzierung verwendet werden.
  • Unter Bezugnahme auf 36 ist 36 ein beispielhaftes Datenablaufdiagramm für einen Prozess 3600 zum Erzeugen und Einsetzen einer Bildverarbeitungs- und -inferenzpipeline gemäß mindestens einer Ausführungsform. In mindestens einer Ausführungsform kann der Prozess 3600 zur Verwendung mit Bildgebungsvorrichtungen, Verarbeitungsvorrichtungen, Genomikvorrichtungen, Gensequenzierungsvorrichtungen, Radiologievorrichtungen und/oder anderen Vorrichtungstypen in einer oder mehreren Einrichtungen 3602 eingesetzt werden, wie etwa medizinischen Einrichtungen, Krankenhäusern, Gesundheitsinstituten, Kliniken, Forschungs- oder Diagnoselabors usw. In mindestens einer Ausführungsform kann der Prozess 3600 zum Durchführen einer Genomanalyse und -inferenz an Sequenzierungsdaten eingesetzt werden. Beispiele für Genomanalysen, die unter Verwendung der hierin beschriebenen Systeme und Prozesse durchgeführt werden können, beinhalten ohne Einschränkung Varianten-Calling, Mutationsdetektion und Quantifizierung der Genexpression.
  • In mindestens einer Ausführungsform kann der Prozess 3600 innerhalb eines Trainingssystems 3604 und/oder eines Einsatzsystems 3606 ausgeführt werden. In mindestens einer Ausführungsform kann das Trainingssystem 3604 verwendet werden, um das Training, den Einsatz und die Implementation von Modellen des maschinellen Lernens (z.B. neuronale Netzwerke, Objektdetektionsalgorithmen, Algorithmen des maschinellen Sehens usw.) zur Verwendung in dem Einsatzsystem 3606 durchzuführen. In mindestens einer Ausführungsform kann das Einsatzsystem 3606 so konfiguriert sein, dass es Verarbeitungs- und Rechenressourcen in einer verteilten Rechenumgebung ablädt, um die Infrastrukturanforderungen in der Einrichtung 3602 zu reduzieren. In mindestens einer Ausführungsform kann das Einsatzsystem 3606 eine gestraffte Plattform zum Auswählen, individuellen Anpassen und Implementieren virtueller Instrumente zur Verwendung mit Bildgebungsvorrichtungen (z.B. MRT, CT-Scan, Röntgen, Ultraschall usw.) oder Sequenzierungsvorrichtungen in der Einrichtung 3602 bereitstellen. In mindestens einer Ausführungsform können virtuelle Instrumente softwaredefinierte Anwendungen zum Durchführen einer oder mehrerer Verarbeitungsoperationen in Bezug auf Bildgebungsdaten beinhalten, die durch Bildgebungsvorrichtungen, Sequenzierungsvorrichtungen, Radiologievorrichtungen und/oder andere Vorrichtungstypen erzeugt werden. In mindestens einer Ausführungsform können eine oder mehrere Anwendungen in einer Pipeline Dienste (z.B. Inferenz, Visualisierung, Berechnung, KI usw.) des Einsatzsystems 3606 während der Ausführung von Anwendungen verwenden oder aufrufen.
  • In mindestens einer Ausführungsform können einige der Anwendungen, die in weiterentwickelten Verarbeitungs- und Inferenzpipelines verwendet werden, Modelle des maschinellen Lernens oder andere Kl verwenden, um einen oder mehrere Verarbeitungsschritte durchzuführen. In mindestens einer Ausführungsform können Modelle des maschinellen Lernens in der Einrichtung 3602 unter Verwendung von Daten 3608 (wie etwa Bildgebungsdaten) trainiert werden, die in der Einrichtung 3602 erzeugt wurden (und auf einem oder mehreren Servern eines Bildarchivierungs- und Kommunikationssystems (picture archiving and communication system - PACS) in der Einrichtung 3602 gespeichert sind), und sie können unter Verwendung von Bildgebungs- oder Sequenzierungsdaten 3608 aus einer anderen Einrichtung oder anderen Einrichtungen (z.B. einem anderen Krankenhaus, Labor, einer anderen Klinik usw.) oder einer Kombination davon trainiert werden. In mindestens einer Ausführungsform kann das Trainingssystem 3604 verwendet werden, um Anwendungen, Dienste und/oder andere Ressourcen zum Erzeugen von funktionierenden, einsatzfähigen Modellen des maschinellen Lernens für das Einsatzsystem 3606 bereitzustellen.
  • In mindestens einer Ausführungsform kann eine Modellregistrierungsdatenbank 3624 durch Objektspeicher unterstützt werden, der Versionierung und Objekt-Metadaten unterstützen kann. In mindestens einer Ausführungsform kann Objektspeicherung beispielsweise durch eine mit Cloud-Speicherung (z.B. einer Cloud 3726 der 37) kompatible Anwendungsprogrammierschnittstelle (API) von innerhalb einer Cloud-Plattform zugänglich sein. In mindestens einer Ausführungsform können Modelle des maschinellen Lernens innerhalb der Modellregistrierungsdatenbank 3624 von Entwicklern oder Partnern eines Systems, das mit einer API interagiert, hochgeladen, aufgelistet, modifiziert oder gelöscht werden. In mindestens einer Ausführungsform kann eine API Zugriff auf Verfahren bereitstellen, die es Benutzern mit zweckmäßigen Anmeldeinformationen ermöglichen, Modelle mit Anwendungen zu assoziieren, sodass Modelle als Teil der Ausführung von containerisierten Instanziierungen von Anwendungen ausgeführt werden können.
  • In mindestens einer Ausführungsform kann eine Trainingspipeline 3704 ( 37) ein Szenario beinhalten, in dem die Einrichtung 3602 ihr eigenes Modell des maschinellen Lernens trainiert oder ein bestehendes Modell des maschinellen Lernen aufweist, das optimiert oder aktualisiert werden muss. In mindestens einer Ausführungsform können Bildgebungsdaten 3608, die durch Bildgebungsvorrichtung(en), Sequenzierungsvorrichtungen und/oder andere Vorrichtungstypen erzeugt wurden, empfangen werden. In mindestens einer Ausführungsform kann, sobald Bildgebungsdaten 3608 empfangen werden, die Klgestützte Annotation 3610 verwendet werden, um beim Erzeugen von Annotationen zu helfen, die den Bildgebungsdaten 3608 entsprechen, die als Ground-Truth-Daten für ein Modell des maschinellen Lernens verwendet werden sollen. In mindestens einer Ausführungsform kann die KI-gestützte Annotation 3610 ein oder mehrere Modelle des maschinellen Lernens (z.B. neuronale Faltungsnetzwerke (CNNs)) beinhalten, die darauf trainiert werden können, Annotationen zu erzeugen, die bestimmten Typen von Bildgebungsdaten 3608 (z.B. von bestimmten Vorrichtungen) und/oder bestimmten Typen von Anomalien in den Bildgebungsdaten 3608 entsprechen. In mindestens einer Ausführungsform können die KI-gestützten Annotationen 3610 dann direkt verwendet oder unter Verwendung eines Annotationswerkzeugs (z.B. von einem Forscher, Kliniker, Arzt, Wissenschaftler usw.) eingestellt oder fein abgestimmt werden, um Ground-Truth-Daten zu erzeugen. In mindestens einer Ausführungsform können in einigen Beispielen beschriftete Klinikdaten 3612 (z.B. Annotationen, die von einem Kliniker, Arzt, Wissenschaftler, Techniker usw. bereitgestellt werden) als Ground-Truth-Daten für das Training eines Modells des maschinellen Lernens verwendet werden. In mindestens einer Ausführungsform können die KI-gestützten Annotationen 3610, beschrifteten Klinikdaten 3612 oder eine Kombination davon als Ground-Truth-Daten für das Training eines Modells des maschinellen Lernens verwendet werden. In mindestens einer Ausführungsform kann ein trainiertes Modell des maschinellen Lernens als Ausgabemodell 3616 bezeichnet werden und durch das Einsatzsystem 3606 verwendet werden, wie hierin beschrieben.
  • In mindestens einer Ausführungsform kann die Trainingspipeline 3704 ( 37) ein Szenario beinhalten, in dem die Einrichtung 3602 ein Modell des maschinellen Lernens zur Verwendung beim Durchführen eines oder mehrerer Verarbeitungs-Tasks für eine oder mehrere Anwendungen in dem Einsatzsystem 3606 benötigt, die Einrichtung 3602 aber möglicherweise derzeit kein derartiges Modell des maschinellen Lernens aufweist (oder möglicherweise kein Modell aufweist, das für derartige Zwecke optimiert, effizient oder effektiv ist). In mindestens einer Ausführungsform kann ein bestehendes Modell des maschinellen Lernens aus der Modellregistrierungsdatenbank 3624 ausgewählt werden. In mindestens einer Ausführungsform kann die Modellregistrierungsdatenbank 3624 Modelle des maschinellen Lernens beinhalten, die zum Durchführen einer Vielfalt von unterschiedlichen Inferenz-Tasks an Bildgebungsdaten trainiert sind. In mindestens einer Ausführungsform können die Modelle des maschinellen Lernens in der Modellregistrierungsdatenbank 3624 an Bildgebungsdaten von anderen Einrichtungen als der Einrichtung 3602 trainiert worden sein (z.B. Einrichtungen, die sich an einem anderen Ort befinden). In mindestens einer Ausführungsform können die Modelle des maschinellen Lernens an Bildgebungsdaten von einem Ort, zwei Orten oder einer beliebigen Anzahl von Orten trainiert worden sein. In mindestens einer Ausführungsform kann das Training beim Trainieren an Bildgebungsdaten von einem spezifischen Ort an diesem Ort oder mindestens auf eine Weise stattfinden, mit der die Vertraulichkeit der Bildgebungsdaten geschützt wird oder die Übermittlung der Bildgebungsdaten außerhalb der Räumlichkeiten eingeschränkt wird (z.B. zur Einhaltung von HIPAA-Vorschriften, Datenschutzvorschriften usw.). In mindestens einer Ausführungsform kann ein Modell des maschinellen Lernens, sobald es an einem Ort trainiert - oder teilweise trainiert - wurde, zur Modellregistrierungsdatenbank 3624 hinzugefügt werden. In mindestens einer Ausführungsform kann ein Modell des maschinellen Lernens dann in einer beliebigen Anzahl von anderen Einrichtungen erneut trainiert oder aktualisiert werden und ein erneut trainiertes oder aktualisiertes Modell kann in der Modellregistrierungsdatenbank 3624 verfügbar gemacht werden. In mindestens einer Ausführungsform kann dann ein Modell des maschinellen Lernens aus der Modellregistrierungsdatenbank 3624 ausgewählt werden - und als Ausgabemodell 3616 bezeichnet werden - und in dem Einsatzsystem 3606 verwendet werden, um einen oder mehrere Verarbeitungs-Tasks für eine oder mehrere Anwendungen eines Einsatzsystems durchzuführen.
  • In mindestens einer Ausführungsform kann die Trainingspipeline 3704 ( 37) in einem Szenario verwendet werden, das beinhaltet, dass die Einrichtung 3602 ein Modell des maschinellen Lernens zur Verwendung beim Durchführen eines oder mehrerer Verarbeitungs-Tasks für eine oder mehrere Anwendungen in dem Einsatzsystem 3606 erfordert, die Einrichtung 3602 aber möglicherweise derzeit kein derartiges Modell des maschinellen Lernens aufweist (oder möglicherweise kein Modell aufweist, das für derartige Zwecke optimiert, effizient oder effektiv ist). In mindestens einer Ausführungsform könnte ein aus der Modellregistrierungsdatenbank 3624 ausgewähltes Modell des maschinellen Lernens aufgrund von Unterschieden bei den Populationen, genetischen Variationen, der Robustheit der zum Trainieren eines Modells des maschinellen Lernens verwendeten Trainingsdaten, der Verschiedenartigkeit der Anomalien der Trainingsdaten und/oder anderer Probleme mit den Trainingsdaten nicht für die in der Einrichtung 3602 erzeugten Bildgebungsdaten 3608 fein abgestimmt oder optimiert sein. In mindestens einer Ausführungsform kann die KI-gestützte Annotation 3610 verwendet werden, um beim Erzeugen von Annotationen zu helfen, die den Bildgebungsdaten 3608 entsprechen, die als Ground-Truth-Daten für das erneute Trainieren oder Aktualisieren eines Modells des maschinellen Lernens verwendet werden sollen. In mindestens einer Ausführungsform können beschriftete Klinikdaten 3612 (z.B. Annotationen, die von einem Kliniker, Arzt, Wissenschaftler usw. bereitgestellt werden) als Ground-Truth-Daten für das Training eines Modells des maschinellen Lernens verwendet werden. In mindestens einer Ausführungsform kann das erneute Trainieren oder Aktualisieren eines Modells des maschinellen Lernens als Modelltraining 3614 bezeichnet werden. In mindestens einer Ausführungsform kann das Modelltraining 3614 - z.B. Klgestützte Annotationen 3610, beschriftete klinische Daten 3612 oder eine Kombination davon - als Ground-Truth-Daten für das erneute Training oder Aktualisieren eines Modells des maschinellen Lernens verwendet werden.
  • In mindestens einer Ausführungsform kann das Einsatzsystem 3606 Software 3618, Dienste 3620, Hardware 3622 und/oder andere Komponenten, Merkmale und Funktionalitäten beinhalten. In mindestens einer Ausführungsform kann das Einsatzsystem 3606 einen Software-„Stapel“ beinhalten, sodass die Software 3618 auf den Diensten 3620 aufgebaut sein kann und die Dienste 3620 verwenden kann, um einige oder alle Verarbeitungs-Tasks durchzuführen, und die Dienste 3620 und die Software 3618 können auf der Hardware 3622 aufgebaut sein und die Hardware 3622 verwenden, um Verarbeitungs-, Speicher- und/oder andere Rechen-Tasks des Einsatzsystems 3606 auszuführen.
  • In mindestens einer Ausführungsform kann die Software 3618 eine beliebige Anzahl von unterschiedlichen Containern beinhalten, wobei jeder Container eine Instanziierung einer Anwendung ausführen kann. In mindestens einer Ausführungsform kann jede Anwendung einen oder mehrere Verarbeitungs-Tasks in einer weiterentwickelten Verarbeitungs- und Inferenzpipeline durchführen (z.B. Inferenz, Objektdetektion, Merkmalsdetektion, Segmentierung, Bildverbesserung, Kalibrierung usw.). In mindestens einer Ausführungsform kann für jeden Typ von Bildgebungsvorrichtung (z.B. CT, MRT, Röntgen, Ultraschall, Sonografie, Echokardiografie usw.), Sequenzierungsvorrichtung, Radiologievorrichtung, Genomikvorrichtung usw. eine beliebige Anzahl von Containern vorhanden sein, die einen Datenverarbeitungs-Task in Bezug auf Bildgebungsdaten 3608 (oder andere Datentypen, wie etwa die hierin beschriebenen), die durch eine Vorrichtung erzeugt werden, durchführen können. In mindestens einer Ausführungsform kann eine weiterentwickelte Verarbeitungs- und Inferenzpipeline auf Grundlage von Auswahlen unterschiedlicher Container definiert werden, die zum Verarbeiten von Bildgebungsdaten 3608 gewünscht oder erforderlich sind, zusätzlich zu Containern, die Bildgebungsdaten zur Verwendung durch jeden Container und/oder zur Verwendung durch die Einrichtung 3602 nach dem Verarbeiten durch eine Pipeline empfangen und konfigurieren (z.B. zur Rückkonvertierung von Ausgaben in einen verwendbaren Datentyp, wie etwa Daten der digitalen Bildgebung und Kommunikation in der Medizin (digital imaging and communications in medicine - DICOM), Daten eines Radiologieinformationssystems (radiology information system - RIS), Daten eines Klinikinformationssystems (clinical information system - CIS), Daten zum Aufruf einer entfernten Prozedur (remote procedure call - RPC), Daten, die im Wesentlichen mit einer Schnittstelle zur Darstellungszustandsübermittlung (representation state transfer - REST) konform sind, Daten, die im Wesentlichen mit einer dateibasierten Schnittstelle konform sind, und/oder Rohdaten, zur Speicherung und Anzeige in der Einrichtung 3602). In mindestens einer Ausführungsform kann eine Kombination von Containern innerhalb der Software 3618 (die z.B. eine Pipeline bilden) als virtuelles Instrument bezeichnet werden (wie hierin detaillierter beschrieben) und ein virtuelles Instrument kann Dienste 3620 und Hardware 3622 ausnutzen, um einige oder alle Verarbeitungs-Tasks von in Containern instanziierten Anwendungen auszuführen.
  • In mindestens einer Ausführungsform kann eine Datenverarbeitungspipeline Eingabedaten (z.B. Bildgebungsdaten 3608) in einem DICOM-, RIS-, CIS-, REST-konformen, RPC-, Rohdaten- und/oder anderen Format als Reaktion auf eine Inferenzanforderung (z.B. eine Anforderung von einem Benutzer des Einsatzsystems 3606, wie etwa einem Kliniker, einem Arzt, einem Radiologen usw.) empfangen. In mindestens einer Ausführungsform können die Eingabedaten für ein oder mehrere Bilder, Videos und/oder andere Datendarstellungen repräsentativ sein, die durch eine oder mehrere Bildgebungsvorrichtungen, Sequenzierungsvorrichtungen, Radiologievorrichtungen, Genomikvorrichtungen und/oder andere Vorrichtungstypen erzeugt werden. In mindestens einer Ausführungsform können die Daten als Teil der Datenverarbeitungspipeline einer Vorverarbeitung unterzogen werden, um die Daten für die Verarbeitung durch eine oder mehrere Anwendungen vorzubereiten. In mindestens einer Ausführungsform kann Nachbearbeitung an einer Ausgabe einer oder mehrerer Inferenztasks oder anderer Verarbeitungs-Tasks einer Pipeline durchgeführt werden, um Ausgabedaten für eine nächste Anwendung vorzubereiten und/oder Ausgabedaten für die Übertragung und/oder Verwendung durch einen Benutzer vorzubereiten (z.B. als eine Antwort auf eine Inferenzanfrage). In mindestens einer Ausführungsform können Inferenz-Tasks durch ein oder mehrere Modelle des maschinellen Lernens durchgeführt werden, wie etwa trainierte oder eingesetzte neuronale Netzwerke, die Ausgabemodelle 3616 des Trainingssystems 3604 beinhalten können.
  • In mindestens einer Ausführungsform können die Tasks der Datenverarbeitungspipeline in einem Container(n) eingekapselt sein, die jeweils eine diskrete, voll funktionsfähige Instanziierung einer Anwendung und einer virtualisierten Rechenumgebung darstellen, die dazu in der Lage ist, sich auf Modelle des maschinellen Lernens zu beziehen. In mindestens einer Ausführungsform können Container oder Anwendungen in einem privaten (z.B. zugriffsbeschränkten) Bereich einer Containerregistrierungsdatenbank (hierin detaillierter beschrieben) veröffentlicht werden und trainierte oder eingesetzte Modelle können in der Modellregistrierungsdatenbank 3624 gespeichert und mit einer oder mehreren Anwendungen assoziiert werden. In mindestens einer Ausführungsform können Abbilder von Anwendungen (z.B. Containerabbilder) in einer Containerregistrierungsdatenbank verfügbar sein und sobald es durch einen Benutzer aus einer Containerregistrierungsdatenbank für den Einsatz in einer Pipeline ausgewählt wurde, kann ein Abbild verwendet werden, um einen Container für eine Instanziierung einer Anwendung zur Verwendung durch das System eines Benutzers zu erzeugen.
  • In mindestens einer Ausführungsform können Entwickler (z.B. Software-Entwickler, Kliniker, Ärzte usw.) Anwendungen (z.B. als Container) zum Durchführen von Bildverarbeitung und/oder -inferenz an zugeführten Daten entwickeln, veröffentlichen und speichern. In mindestens einer Ausführungsform kann die Entwicklung, Veröffentlichung und/oder Speicherung unter Verwendung eines Software-Entwicklungskits (software development kit - SDK) durchgeführt werden, das mit einem System assoziiert ist (um z.B. sicherzustellen, dass eine entwickelte Anwendung und/oder ein entwickelter Container mit einem System konform oder kompatibel ist). In mindestens einer Ausführungsform kann eine Anwendung, die entwickelt wird, lokal (z.B. in einer ersten Einrichtung, an Daten von einer ersten Einrichtung) mit einem SDK geprüft werden, das mindestens einige der Dienste 3620 als System (z.B. System 3700 aus 37) unterstützen kann. Da DICOM-Objekte zwischen einem und Hunderten von Bildern oder anderen Datentypen enthalten können, und aufgrund einer Variation der Daten, kann ein Entwickler in mindestens einer Ausführungsform für das Verwalten (z.B. das Festlegen von Konstrukten für, den Einbau von Vorverarbeitung in eine Anwendung usw.) der Extraktion und Vorbereitung eingehender DICOM-Daten zuständig sein. In mindestens einer Ausführungsform kann eine Anwendung, sobald sie durch das System 3700 validiert wurde (z.B. bezüglich Genauigkeit, Sicherheit, Patientendatenschutz usw.), in einer Containerregistrierungsdatenbank zur Auswahl und/oder Implementation durch einen Benutzer (z.B. ein Krankenhaus, eine Klinik, ein Labor, einen Gesundheitsdienstleister usw.) verfügbar sein, um einen oder mehrere Verarbeitungs-Tasks in Bezug auf Daten in einer Einrichtung (z.B. einer zweiten Einrichtung) eines Benutzers durchzuführen.
  • In mindestens einer Ausführungsform können Entwickler dann Anwendungen oder Container durch ein Netzwerk für den Zugriff und die Verwendung durch Benutzer eines Systems (z.B. des Systems 3700 aus 37) teilen. In mindestens einer Ausführungsform können abgeschlossene und validierte Anwendungen oder Container in einer Containerregistrierungsdatenbank gespeichert werden und damit assoziierte Modelle des maschinellen Lernens in der Modellregistrierungsdatenbank 3624 gespeichert werden. In mindestens einer Ausführungsform kann eine anfordernde Entität (z.B. ein Benutzer in einer medizinischen Einrichtung) - die eine Inferenz- oder Bildverarbeitungsanforderung bereitstellt - eine Containerregistrierungsdatenbank und/oder Modellregistrierungsdatenbank 3624 nach einer Anwendung, einem Container, einem Datensatz, einem Modell des maschinellen Lernens usw. durchsuchen, eine gewünschte Kombination von Elementen zur Aufnahme in die Datenverarbeitungspipeline auswählen und eine Bildverarbeitungsanforderung absenden. In mindestens einer Ausführungsform kann eine Anforderung Eingabedaten (und in einigen Beispielen damit assoziierte Patientendaten) beinhalten, die zum Durchführen einer Anforderung notwendig sind, und/oder eine Auswahl von Anwendung(en) und/oder Modellen für maschinelles Lernen beinhalten, die bei der Verarbeitung einer Anforderung ausgeführt werden sollen. In mindestens einer Ausführungsform kann eine Anforderung dann an eine oder mehrere Komponenten des Einsatzsystems 3606 (z.B. eine Cloud) übergeben werden, um die Verarbeitung der Datenverarbeitungspipeline durchzuführen. In mindestens einer Ausführungsform kann die Verarbeitung durch das Einsatzsystem 3606 die Referenzierung ausgewählter Elemente (z.B. Anwendungen, Container, Modelle usw.) aus einer Containerregistrierungsdatenbank und/oder Modellregistrierungsdatenbank 3624 beinhalten. In mindestens einer Ausführungsform können, sobald Ergebnisse durch eine Pipeline erzeugt wurden, die Ergebnisse als Referenz an einen Benutzer zurückgegeben werden (z.B. zur Ansicht in einer Ansichtanwendungssuite, die auf einer lokalen Arbeitsstation oder einem lokalen Endgerät in den Räumlichkeiten ausgeführt wird). In mindestens einer Ausführungsform kann ein Radiologe Ergebnisse von einer Datenverarbeitungspipeline empfangen, die eine beliebige Anzahl von Anwendungen und/oder Containern beinhaltet, wobei die Ergebnisse Anomaliedetektion in Röntgenbildern, CT-Scans, MRTs usw. beinhalten können.
  • In mindestens einer Ausführungsform können zur Unterstützung der Verarbeitung oder Ausführung von Anwendungen oder Containern in Pipelines die Dienste 3620 ausgenutzt werden. In mindestens einer Ausführungsform können die Dienste 3620 Rechendienste, Dienste für künstliche Intelligenz (Kl), Visualisierungsdienste und/oder andere Diensttypen beinhalten. In mindestens einer Ausführungsform können die Dienste 3620 eine Funktionalität bereitstellen, die eine oder mehrere Anwendungen in der Software 3618 gemeinsam haben, sodass die Funktionalität zu einem Dienst abstrahiert werden kann, der durch Anwendungen aufgerufen oder ausgenutzt werden kann. In mindestens einer Ausführungsform kann die durch die Dienste 3620 bereitgestellte Funktionalität dynamisch und effizienter laufen, während sie ebenfalls gut skalierbar ist, indem es Anwendungen erlaubt wird, Daten parallel zu verarbeiten (z.B. unter Verwendung einer Parallelrechenplattform 3730 (37)). Anstatt dass jede Anwendung, die eine gleiche Funktionalität teilt, die durch einen Dienst 3620 angeboten wird, eine entsprechende Instanz des Dienstes 3620 aufweisen muss, kann der Dienst 3620 in mindestens einer Ausführungsform von verschiedenen Anwendungen gemeinsam genutzt werden. In mindestens einer Ausführungsform können die Dienste einen Inferenzserver oder eine Inferenz-Engine beinhalten, der/die als nicht einschränkende Beispiele zum Ausführen von Detektions- oder Segmentierungs-Tasks verwendet werden kann. In mindestens einer Ausführungsform kann ein Modelltrainingsdienst enthalten sein, der die Fähigkeit bereitstellen kann, Modelle des maschinellen Lernens zu trainieren und/oder erneut zu trainieren. In mindestens einer Ausführungsform kann ferner ein Datenerweiterungsdienst enthalten sein, der die Extraktion, Größenänderung, Skalierung und/oder andere Erweiterung von GPU-beschleunigten Daten (z.B. DICOM-Daten, RIS-Daten, CIS-Daten, REST-konformen Daten, RPC-Daten, Rohdaten usw.) bereitstellen kann. In mindestens einer Ausführungsform kann ein Visualisierungsdienst verwendet werden, der Bild-Rendering-Effekte - wie etwa Strahlverfolgung, Rasterung, Entrauschen, Schärfung usw. - hinzufügen kann, um zweidimensionale (2D) und/oder dreidimensionale (3D) Modelle realistischer zu gestalten. In mindestens einer Ausführungsform können Dienste für virtuelle Instrumente enthalten sein, die Strahlformung, Segmentierung, Inferenzieren, Bildgebung und/oder Unterstützung für andere Anwendungen innerhalb von Pipelines virtueller Instrumente bereitstellen.
  • In mindestens einer Ausführungsform, in der ein Dienst 3620 einen KI-Dienst (z.B. einen Inferenzdienst) beinhaltet, können ein oder mehrere Modelle des maschinellen Lernens, die mit einer Anwendung zur Anomaliedetektion (z.B. Tumoren, Wachstumsauffälligkeiten, Narbenbildung usw.) assoziiert sind, ausgeführt werden, indem ein Inferenzdienst (z.B. ein Inferenzserver) aufgerufen wird (z.B. als API-Aufruf), um ein Modell oder Modelle des maschinellen Lernens oder deren Verarbeitung als Teil der Anwendungsausführung auszuführen. In mindestens einer Ausführungsform, in der eine andere Anwendung ein oder mehrere Modelle des maschinellen Lernens für Segmentierungs-Tasks beinhaltet, kann eine Anwendung einen Inferenzdienst aufrufen, um Modelle des maschinellen Lernens zum Durchführen einer oder mehrerer mit Segmentierungs-Tasks assoziierten Verarbeitungsoperationen auszuführen. In mindestens einer Ausführungsform kann die Software 3618, die eine weiterentwickelte Verarbeitungs- und Inferenzpipeline implementiert, die eine Segmentierungsanwendung und eine Anomaliedetektionsanwendung beinhaltet, gestrafft werden, da jede Anwendung einen gleichen Inferenzdienst zum Durchführen eines oder mehrerer Inferenz-Tasks aufrufen kann.
  • In mindestens einer Ausführungsform kann die Hardware 3622 GPUs, CPUs, Grafikkarten, ein Kl-/Deep-Learning-System (z.B. einen KI-Supercomputer wie etwa das DGX-Supercomputersystem von NVIDIA), eine Cloud-Plattform oder eine Kombination davon beinhalten. In mindestens einer Ausführungsform können unterschiedliche Typen von Hardware 3622 verwendet werden, um eine effiziente, speziell entwickelte Unterstützung für Software 3618 und Dienste 3620 in dem Einsatzsystem 3606 bereitzustellen. In mindestens einer Ausführungsform kann die Verwendung von GPU-Verarbeitung für die lokale Verarbeitung (z.B. in der Einrichtung 3602), innerhalb eines Kl/Deep-Learning-Systems, in einem Cloud-System und/oder in anderen Verarbeitungskomponenten des Einsatzsystems 3606 implementiert werden, um die Effizienz, Genauigkeit und Wirksamkeit von Bildverarbeitung, Bildrekonstruktion, Segmentierung, MRT-Untersuchungen, Schlaganfall- oder Herzinfarktdetektion (z.B. in Echtzeit), Bildqualität beim Rendern usw. zu verbessern. In mindestens einer Ausführungsform kann eine Einrichtung Bildgebungsvorrichtungen, Genomikvorrichtungen, Sequenzierungsvorrichtungen und/oder andere Vorrichtungstypen in den Räumlichkeiten beinhalten, die GPUs ausnutzen können, um Bildgebungsdaten zu erzeugen, die für die Anatomie eines Probanden repräsentativ sind.
  • In mindestens einer Ausführungsform können die Software 3618 und/oder die Dienste 3620 als nicht einschränkende Beispiele für die GPU-Verarbeitung in Bezug auf Deep Learning, maschinelles Lernen und/oder Datenverarbeitung mit hoher Rechenleistung optimiert sein. In mindestens einer Ausführungsform kann mindestens ein Teil der Rechenumgebung des Einsatzsystems 3606 und/oder des Trainingssystems 3604 in einem Rechenzentrum auf einem oder mehreren Supercomputern oder Rechensystemen mit hoher Rechenleistung mit GPU-optimierter Software (z.B. Hardware- und Software-Kombination des DGX-Systems von NVIDIA) ausgeführt werden. In mindestens einer Ausführungsform können Rechenzentren mit HIPAA-Bestimmungen konform sein, sodass der Empfang, die Verarbeitung und die Übertragung von Bildgebungsdaten und/oder anderen Patientendaten in Bezug auf den Schutz von Patientendaten sicher gehandhabt werden. In mindestens einer Ausführungsform kann die Hardware 3622 eine beliebige Anzahl von GPUs beinhalten, die zur parallelen Verarbeitung von Daten, wie hierin beschrieben, aufgerufen werden können. In mindestens einer Ausführungsform kann die Cloud-Plattform ferner GPU-Verarbeitung für die GPU-optimierte Ausführung von Deep-Learning-Tasks, Tasks des maschinellen Lernens oder anderen Rechen-Tasks beinhalten. In mindestens einer Ausführungsform kann die Cloud-Plattform (z.B. NGC von NVIDIA) unter Verwendung von Kl-/Deep-Learning-Supercomputer(n) und/oder GPU-optimierter Software (z.B. wie auf DGX-Systemen von NVIDIA bereitgestellt) als Hardware-Abstraktions- und - Skalierungsplattform ausgeführt werden. In mindestens einer Ausführungsform kann die Cloud-Plattform ein Anwendungscontainer-Clustering-System oder Orchestrierungssystem (z.B. KUBERNETES) auf mehreren GPUs integrieren, um eine nahtlose Skalierung und Lastverteilung zu ermöglichen.
  • In mindestens einer Ausführungsform können solche Komponenten verwendet werden, um Bildsegmentierung durchzuführen, wie oben erörtert, beispielsweise in Bezug auf ein System von 1 oder 2 oder Prozesse von 4 oder 5. In mindestens einer Ausführungsform kann dies die Verwendung eines oder mehrerer erster neuronaler Netzwerke beinhalten, um zu bewirken, dass ein Lichteffekt auf ein oder mehrere Objekte in einem oder mehreren Bildern angewendet wird, die zumindest teilweise auf synthetisch erzeugten Bildern des einen oder der mehreren Objekte basieren.
  • 37 ist eine Systemdarstellung für ein beispielhaftes System 3700 zum Erzeugen und Einsetzen einer Bildgebungseinsatzpipeline gemäß mindestens einer Ausführungsform. In mindestens einer Ausführungsform kann das System 3700 verwendet werden, um den Prozess 3600 aus 36 und/oder andere Prozesse, einschließlich weiterentwickelter Verarbeitungs- und Inferenzpipelines, zu implementieren. In mindestens einer Ausführungsform kann das System 3700 das Trainingssystem 3604 und das Einsatzsystem 3606 beinhalten. In mindestens einer Ausführungsform können das Trainingssystem 3604 und das Einsatzsystem 3606 unter Verwendung von Software 3618, Diensten 3620 und/oder Hardware 3622, wie hierin beschrieben, implementiert werden.
  • In mindestens einer Ausführungsform kann das System 3700 (z.B. das Trainingssystem 3604 und/oder das Einsatzsystem 3606) in einer Cloud-Computing-Umgebung implementiert sein (z.B. unter Verwendung der Cloud 3726). In mindestens einer Ausführungsform kann das System 3700 lokal in Bezug auf eine Einrichtung des Gesundheitswesens oder als Kombination aus sowohl Cloud- als auch lokalen Rechenressourcen implementiert werden. In mindestens einer Ausführungsform können in Ausführungsformen, in denen Cloud Computing implementiert ist, Patientendaten von einer oder mehreren Komponenten des Systems 3700 getrennt oder nicht durch diese verarbeitet werden, was die Verarbeitung nicht konform mit HIPAA- und/oder anderen Vorschriften oder Gesetzen zur Datenhandhabung und zum Datenschutz machen würde. In mindestens einer Ausführungsform kann der Zugriff auf die APIs in der Cloud 3726 durch erlassene Sicherheitsmaßnahmen oder -protokolle auf autorisierte Benutzer beschränkt sein. In mindestens einer Ausführungsform kann ein Sicherheitsprotokoll Web-Token beinhalten, die durch einen Authentifizierungsdienst (z.B. AuthN, AuthZ, Gluecon usw.) signiert sein können und eine zweckmäßige Autorisierung tragen können. In mindestens einer Ausführungsform können APIs von virtuellen Instrumenten (hierin beschrieben) oder anderen Instanziierungen des Systems 3700 auf einen Satz von öffentlichen IPs beschränkt sein, die für die Interaktion sicherheitsüberprüft oder autorisiert wurden.
  • In mindestens einer Ausführungsform können verschiedene Komponenten des Systems 3700 unter Verwendung beliebiger einer Vielfalt von unterschiedlichen Netzwerktypen, einschließlich lokaler Netzwerke (LANs) und/oder Weitverkehrsnetzwerke (WANs), ohne darauf beschränkt zu sein, über drahtgebundene und/oder drahtlose Kommunikationsprotokolle miteinander kommunizieren. In mindestens einer Ausführungsform kann die Kommunikation zwischen Einrichtungen und Komponenten des Systems 3700 (z.B. zum Übertragen von Inferenzanforderungen, zum Empfangen von Ergebnissen von Inferenzanforderungen usw.) über einen Datenbus oder Datenbusse, drahtlose Datenprotokolle (Wi-Fi), drahtgebundene Datenprotokolle (z.B. Ethernet) usw. kommuniziert werden.
  • In mindestens einer Ausführungsform kann das Trainingssystem 3604 Trainingspipelines 3704 ausführen, die denjenigen ähnlich sind, die hierin in Bezug auf 36 beschrieben sind. In mindestens einer Ausführungsform, in der ein oder mehrere Modelle des maschinellen Lernens in Einsatzpipelines 3710 durch das Einsatzsystem 3606 verwendet werden sollen, können Trainingspipelines 3704 verwendet werden, um ein oder mehrere (z.B. vorab trainierte) Modelle zu trainieren oder erneut zu trainieren und/oder eines oder mehrere der vorab trainierten Modelle 3706 zu implementieren (z.B. ohne eine Notwendigkeit eines erneuten Trainings oder einer Aktualisierung). In mindestens einer Ausführungsform können als Ergebnis der Trainingspipelines 3704 Ausgabemodell(e) 3616 erzeugt werden. In mindestens einer Ausführungsform können die Trainingspipelines 3704 eine beliebige Anzahl von Verarbeitungsschritten beinhalten, zum Beispiel, aber nicht beschränkt auf, die Konvertierung oder Anpassung von Bildgebungsdaten (oder anderen Eingabedaten) (z.B. unter Verwendung eines DICOM-Adapters 3702A zum Konvertieren von DICOM-Bildern in ein anderes Format, das für die Verarbeitung durch jeweilige Modelle des maschinellen Lernens geeignet ist, wie etwa das Format der Neuroimaging Informatics Technology Initiative (NlfTl)), KI-gestützte Annotation 3610, Beschriftung oder Annotation von Bildgebungsdaten 3608, um beschriftete Klinikdaten 3612 zu erzeugen, Modellauswahl aus einer Modellregistrierungsdatenbank, Modelltraining 3614, Training, erneutes Training oder Aktualisieren von Modellen und/oder andere Verarbeitungsschritte. In mindestens einer Ausführungsform können für unterschiedliche Modelle des maschinellen Lernens, die durch das Einsatzsystem 3606 verwendet werden, unterschiedliche Trainingspipelines 3704 verwendet werden. In mindestens einer Ausführungsform kann für ein erstes Modell des maschinellen Lernens eine Trainingspipeline 3704 verwendet werden, die einem ersten Beispiel ähnlich ist, das in Bezug auf 36 beschrieben ist, für ein zweites Modell des maschinellen Lernens eine Trainingspipeline 3704 verwendet werden, die einem zweiten Beispiel ähnlich ist, das in Bezug auf 36 beschrieben ist, und für ein drittes Modell des maschinelles Lernens eine Trainingspipeline 3704 verwendet werden, die einem dritten Beispiel ähnlich ist, das in Bezug auf 36 beschrieben ist. In mindestens einer Ausführungsform kann eine beliebige Kombination von Tasks innerhalb des Trainingssystems 3604 verwendet werden, in Abhängigkeit davon, was für jedes jeweilige Modell des maschinellen Lernens erforderlich ist. In mindestens einer Ausführungsform können eines oder mehrere der Modelle des maschinellen Lernens bereits trainiert und einsatzbereit sein, sodass die Modelle des maschinellen Lernens möglicherweise keiner Verarbeitung durch das Trainingssystem 3604 unterzogen werden und durch das Einsatzsystem 3606 implementiert werden können.
  • In mindestens einer Ausführungsform können die Ausgabemodell(e) 3616 und/oder die vorab trainierte(n) Modell(e) 3706 in Abhängigkeit von der Implementation oder Ausführungsform beliebige Typen von Modellen des maschinellen Lernens beinhalten. In mindestens einer Ausführungsform und ohne Einschränkung können durch das System 3700 verwendete Modelle des maschinellen Lernens Modell(e) des maschinellen Lernens unter Verwendung von linearer Regression, logistischer Regression, Entscheidungsbäumen, Stützvektormaschinen (support vector machines - SVM), naivem Bayes-Klassifikator, k-nächstem Nachbarn (k-nearest neighbor - Knn), k-Means-Clustering, Random Forest, Dimensionsreduktionsalgorithmen, Gradientenverstärkungsalgorithmen, neuronalen Netzwerken (z.B. Autocodierern, faltenden, rekurrenten, Perzeptronen, langem Kurzzeitgedächtnis (Long/Short Term Memory - LSTM), Hopfield, Boltzmann, Deep Belief, entfaltenden, erzeugenden gegnerischen, Flüssigkeitszustandsmaschine usw.) und/oder andere Typen von Modellen des maschinellen Lernens beinhalten.
  • In mindestens einer Ausführungsform können die Trainingspipelines 3704 Klgestützte Annotation beinhalten, wie hierin in Bezug auf mindestens 40B detaillierter beschrieben. In mindestens einer Ausführungsform können beschriftete Klinikdaten 3612 (z.B. herkömmliche Annotation) durch eine beliebige Anzahl von Techniken erzeugt werden. In mindestens einer Ausführungsform können Beschriftungen oder andere Annotationen innerhalb eines Zeichenprogramms (z.B. eines Annotationsprogramms), eines Programms zur computergestützten Konstruktion (computer aided design - CAD), eines Beschriftungsprogramms, eines anderen Typs von Programm, das zum Erzeugen von Annotationen oder Beschriftungen für Ground Truth geeignet ist, erzeugt werden und/oder in einigen Beispielen von Hand gezeichnet werden. In mindestens einer Ausführungsform können die Ground-Truth-Daten synthetisch produziert (z.B. aus Computermodellen oder Renderings erzeugt), real produziert (z.B. aus Daten der realen Welt ausgestaltet und produziert), maschinell automatisiert (z.B. unter Verwendung von Merkmalsanalyse und Lernen, um Merkmale aus Daten zu extrahieren und dann Beschriftungen zu erzeugen), von Menschen annotiert (z.B. definiert ein Beschrifter oder Annotationsexperte die Stelle von Beschriftungen) und/oder eine Kombination davon sein. In mindestens einer Ausführungsform können für jede Instanz der Bildgebungsdaten 3608 (oder eines anderen Datentyps, der durch Modelle des maschinellen Lernens verwendet wird) entsprechende Ground-Truth-Daten vorhanden sein, die durch das Trainingssystem 3604 erzeugt werden. In mindestens einer Ausführungsform kann die KI-gestützte Annotation als Teil der Einsatzpipelines 3710 durchgeführt werden; entweder zusätzlich zu oder anstelle der KI-gestützten Annotation, die in den Trainingspipelines 3704 enthalten ist. In mindestens einer Ausführungsform kann das System 3700 eine mehrschichtige Plattform beinhalten, die eine Software-Schicht (z.B. Software 3618) von Diagnoseanwendungen (oder anderen Anwendungstypen) beinhalten kann, die eine oder mehrere medizinische Bildgebungs- und Diagnosefunktionen durchführen kann. In mindestens einer Ausführungsform kann das System 3700 kommunikativ an (z.B. über verschlüsselte Verknüpfungen) PACS-Servernetzwerke einer oder mehrerer Einrichtungen gekoppelt sein. In mindestens einer Ausführungsform kann das System 3700 so konfiguriert sein, dass es auf Daten (z.B. DICOM-Daten, RIS-Daten, Rohdaten, CIS-Daten, REST-konforme Daten, RPC-Daten, Rohdaten usw.) von PACS-Servern zugreift und diese referenziert (z.B. über einen DICOM-Adapter 3702 oder einen Adapter für einen anderen Datentyp, wie etwa RIS, CIS, REST-konform, RPC, Rohdaten usw.), um Operationen durchzuführen, wie etwa Trainieren von Modellen des maschinellen Lernens, Einsetzen von Modellen des maschinellen Lernens, Bildverarbeitung, Inferenzieren und/oder andere Operationen.
  • In mindestens einer Ausführungsform kann eine Software-Schicht als sichere, verschlüsselte und/oder authentifizierte API implementiert sein, durch die Anwendungen oder Container aus einer externen Umgebung(en) (z.B. Einrichtung 3602) ausgewählt (z.B. aufgerufen) werden können. In mindestens einer Ausführungsform können Anwendungen dann einen oder mehrere Dienste 3620 aufrufen oder ausführen, um Rechen-, Kl- oder Visualisierungs-Tasks durchzuführen, die mit jeweiligen Anwendungen assoziiert sind, und die Software 3618 und/oder die Dienste 3620 können die Hardware 3622 ausnutzen, um Verarbeitungs-Tasks auf effektive und effiziente Weise durchzuführen.
  • In mindestens einer Ausführungsform kann das Einsatzsystem 3606 Einsatzpipelines 3710 ausführen. In mindestens einer Ausführungsform können Einsatzpipelines 3710 eine beliebige Anzahl von Anwendungen beinhalten, die sequenziell, nicht sequenziell oder auf andere Weise auf Bildgebungsdaten (und/oder andere Datentypen) angewendet werden können, die durch Bildgebungsvorrichtungen, Sequenzierungsvorrichtungen, Genomikvorrichtungen usw. erzeugt werden - einschließlich Kl-gestützter Annotation, wie vorstehend beschrieben. In mindestens einer Ausführungsform, wie hierin beschrieben, kann eine Einsatzpipeline 3710 für eine einzelne Vorrichtung als virtuelles Instrument für eine Vorrichtung bezeichnet werden (z.B. ein virtuelles Ultraschallinstrument, ein virtuelles CT-Scan-Instrument, ein virtuelles Sequenzierungsinstrument usw.). In mindestens einer Ausführungsform kann für eine einzelne Vorrichtung in Abhängigkeit von Informationen, die von Daten gewünscht sind, die durch eine Vorrichtung erzeugt wurden, mehr als eine Einsatzpipeline 3710 vorhanden sein. Wenn Detektionen von Anomalien anhand einer MRT-Maschine gewünscht sind, kann in mindestens einer Ausführungsform eine erste Einsatzpipeline 3710 vorhanden sein, und wenn Bildverbesserung anhand einer Ausgabe einer MRT-Maschine gewünscht ist, kann eine zweite Einsatzpipeline 3710 vorhanden sein.
  • In mindestens einer Ausführungsform können für die Einsatzpipelines 3710 verfügbare Anwendungen eine beliebige Anwendung beinhalten, die zum Durchführen von Verarbeitungs-Tasks an Bildgebungsdaten oder anderen Daten von Vorrichtungen verwendet werden kann. In mindestens einer Ausführungsform können unterschiedliche Anwendungen für die Bildverbesserung, Segmentierung, Rekonstruktion, Anomaliedetektion, Objektdetektion, Merkmalsdetektion, Behandlungsplanung, Dosimetrie, Strahlenplanung (oder andere Strahlenbehandlungsprozeduren) und/oder andere Analyse-, Bildverarbeitungs- oder Inferenz-Tasks zuständig sein. In mindestens einer Ausführungsform kann das Einsatzsystem 3606 Konstrukte für jede der Anwendungen definieren, sodass die Benutzer des Einsatzsystems 3606 (z.B. medizinische Einrichtungen, Labors, Kliniken usw.) die Konstrukte verstehen und die Anwendungen für die Implementation innerhalb ihrer jeweiligen Einrichtung anpassen können. In mindestens einer Ausführungsform kann eine Anwendung zur Bildrekonstruktion für die Aufnahme in die Einsatzpipeline 3710 ausgewählt werden, doch der durch eine Bildgebungsvorrichtung erzeugte Datentyp kann sich von einem innerhalb einer Anwendung verwendeten Datentyp unterscheiden. In mindestens einer Ausführungsform kann der DICOM-Adapter 3702B (und/oder ein DICOM-Lesegerät) oder ein Adapter oder ein Lesegerät für einen anderen Datentyp (z.B. RIS, CIS, REST-konform, RPC, Rohdaten usw.) innerhalb der Einsatzpipeline 3710 verwendet werden, um Daten in eine Form zu konvertieren, die durch eine Anwendung innerhalb des Einsatzsystems 3606 verwendet werden kann. In mindestens einer Ausführungsform kann der Zugriff auf Bibliotheken mit DICOM-Daten, RIS-Daten, CIS-Daten, REST-konformen Daten, RPC-Daten, Rohdaten und/oder anderen Datentypen akkumuliert und vorverarbeitet werden, einschließlich des Decodierens, Extrahierens und/oder Durchführens von Faltungen, Farbkorrekturen, Schärfe-, Gamma- und/oder anderen Erweiterungen der Daten. In mindestens einer Ausführungsform können DICOM-Daten, RIS-Daten, CIS-Daten, REST-konforme Daten, RPC-Daten und/oder Rohdaten ungeordnet sein und ein Vorlauf kann ausgeführt werden, um gesammelte Daten zu organisieren oder zu sortieren. Da verschiedene Anwendungen in mindestens einer Ausführungsform Bildoperationen gemeinsam nutzen können, kann in einigen Ausführungsformen eine Datenerweiterungsbibliothek (z.B. als einer der Dienste 3620) verwendet werden, um diese Operationen zu beschleunigen. In mindestens einer Ausführungsform kann zur Vermeidung von Engpässen herkömmlicher Verarbeitungsansätze, die sich auf CPU-Verarbeitung stützen, die Parallelrechenplattform 3730 zur GPU-Beschleunigung dieser Verarbeitungs-Tasks verwendet werden.
  • In mindestens einer Ausführungsform kann eine Bildrekonstruktionsanwendung einen Verarbeitungs-Task beinhalten, der die Verwendung eines Modells des maschinellen Lernens beinhaltet. In mindestens einer Ausführungsform kann ein Benutzer ein eigenes Modell des maschinellen Lernens verwenden wollen oder ein Modell des maschinellen Lernens aus der Modellregistrierungsdatenbank 3624 auswählen wollen. In mindestens einer Ausführungsform kann ein Benutzer ein eigenes Modell des maschinellen Lernens implementieren oder ein Modell des maschinellen Lernens zur Aufnahme in eine Anwendung zum Durchführen eines Verarbeitungs-Tasks auswählen. In mindestens einer Ausführungsform können die Anwendungen auswählbar und individuell anpassbar sein und durch das Definieren von Konstrukten von Anwendungen werden der Einsatz und die Implementation von Anwendungen für einen konkreten Benutzer als nahtlosere Benutzererfahrung dargestellt. In mindestens einer Ausführungsform können Einsatzpipelines 3710 durch Ausnutzen anderer Merkmale des Systems 3700 - wie etwa der Dienste 3620 und der Hardware 3622 - noch benutzerfreundlicher sein, eine einfachere Integration bereitstellen und genauere, effizientere und raschere Ergebnisse produzieren.
  • In mindestens einer Ausführungsform kann das Einsatzsystem 3606 eine Benutzerschnittstelle 3714 (z.B. eine grafische Benutzerschnittstelle, eine Webschnittstelle usw.) beinhalten, die verwendet werden kann, um Anwendungen für die Aufnahme in die Einsatzpipeline(s) 3710 auszuwählen, Anwendungen anzuordnen, Anwendungen oder Parameter oder Konstrukte davon zu modifizieren oder zu ändern, die Einsatzpipeline(s) 3710 während des Setups und/oder des Einsatzes zu verwenden und damit zu interagieren und/oder anderweitig mit dem Einsatzsystem 3606 zu interagieren. In mindestens einer Ausführungsform, obwohl nicht in Bezug auf das Trainingssystem 3604 veranschaulicht, kann die Benutzerschnittstelle 3714 (oder eine andere Benutzerschnittstelle) zum Auswählen von Modellen für die Verwendung in dem Einsatzsystem 3606, zum Auswählen von Modellen für das Training oder das erneute Training in dem Trainingssystem 3604 und/oder zum anderweitigen Interagieren mit dem Trainingssystem 3604 verwendet werden.
  • In mindestens einer Ausführungsform kann der Pipelinemanager 3712 zusätzlich zu einem Anwendungsorchestrierungssystem 3728 verwendet werden, um die Interaktion zwischen den Anwendungen oder Containern der Einsatzpipeline(s) 3710 und den Diensten 3620 und/oder der Hardware 3622 zu verwalten. In mindestens einer Ausführungsform kann der Pipelinemanager 3712 so konfiguriert sein, dass er Interaktionen von Anwendung zu Anwendung, von Anwendung zu Dienst 3620 und/oder von Anwendung oder Dienst zu Hardware 3622 erleichtert. Obwohl er der Veranschaulichung nach in der Software 3618 enthalten ist, soll dies in mindestens einer Ausführungsform nicht einschränkend sein und in einigen Beispielen (wie z.B. in 38 veranschaulicht) kann der Pipelineverwalter 3712 in den Diensten 3620 enthalten sein. In mindestens einer Ausführungsform kann das Anwendungsorchestrierungssystem 3728 (z.B. Kubernetes, DOCKER usw.) ein Container-Orchestrierungssystem beinhalten, das Anwendungen zu Containern als logische Einheiten zur Koordination, Verwaltung, Skalierung und zum Einsatz gruppieren kann. In mindestens einer Ausführungsform kann durch das Assoziieren von Anwendungen aus den Einsatzpipeline(s) 3710 (z.B. einer Rekonstruktionsanwendung, einer Segmentierungsanwendung usw.) mit einzelnen Containern jede Anwendung in einer in sich geschlossenen Umgebung (z.B. auf Kernel-Level) ausgeführt werden, um die Geschwindigkeit und Effizienz zu erhöhen.
  • In mindestens einer Ausführungsform kann jede Anwendung und/oder jeder Container (oder ein Abbild davon) einzeln entwickelt, modifiziert und eingesetzt werden (z.B. kann ein erster Benutzer oder Entwickler eine erste Anwendung entwickeln, modifizieren und einsetzen und ein zweiter Benutzer oder Entwickler eine zweite Anwendung separat von einem ersten Benutzer oder Entwickler entwickeln, modifizieren und einsetzen), was es ermöglichen kann, sich auf einen Task einer einzelnen Anwendung und/oder Container(n) zu fokussieren und zu konzentrieren, ohne durch Tasks einer anderen Anwendung(en) oder eines anderen Container(n) behindert zu werden. In mindestens einer Ausführungsform kann die Kommunikation und Kooperation zwischen unterschiedlichen Containern oder Anwendungen durch den Pipelineverwalter 3712 und das Anwendungsorchestrierungssystem 3728 unterstützt werden. In mindestens einer Ausführungsform kann, solange eine erwartete Eingabe und/oder Ausgabe jedes Containers oder jeder Anwendung einem System bekannt ist (z.B. auf Grundlage von Konstrukten von Anwendungen oder Containern), das Anwendungsorchestrierungssystem 3728 und/oder der Pipelineverwalter 3712 die Kommunikation unter und zwischen jedem der Anwendungen oder Container sowie die gemeinsame Nutzung von Ressourcen unter und zwischen diesen erleichtern. Da eine oder mehrere Anwendungen oder Container in den Einsatzpipeline(s) 3710 gleiche Dienste und Ressourcen gemeinsam nutzen können, kann das Anwendungsorchestrierungssystem 3728 in mindestens einer Ausführungsform die gemeinsame Nutzung von Diensten oder Ressourcen zwischen und unter verschiedenen Anwendungen oder Containern orchestrieren, deren Last verteilen und bestimmen. In mindestens einer Ausführungsform kann ein Scheduler verwendet werden, um den Ressourcenbedarf von Anwendungen oder Containern, die derzeitige Nutzung oder geplante Nutzung dieser Ressourcen und die Ressourcenverfügbarkeit zu verfolgen. In mindestens einer Ausführungsform kann ein Scheduler somit Ressourcen unterschiedlichen Anwendungen zuweisen und Ressourcen zwischen und unter Anwendungen im Hinblick auf Bedarf und Verfügbarkeit eines Systems verteilen. In einigen Beispielen kann ein Scheduler (und/oder eine andere Komponente des Anwendungsorchestrierungssystems 3728, beispielsweise ein Sequencer und/oder eine asynchrone Rechen-Engine) die Ressourcenverfügbarkeit und -verteilung auf Grundlage von Beschränkungen bestimmen, die einem System auferlegt werden (z.B. Benutzerbeschränkungen), wie etwa Dienstgüte (QoS), Dringlichkeit des Bedarfs an Datenausgaben (um z.B. zu bestimmen, ob Echtzeitverarbeitung oder verzögerte Verarbeitung ausgeführt werden soll) usw.
  • In mindestens einer Ausführungsform können die Dienste 3620, die durch Anwendungen oder Container in dem Einsatzsystem 3606 ausgenutzt und gemeinsam genutzt werden, Rechendienste 3716, KI-Dienste 3718, Visualisierungsdienste 3720 und/oder andere Diensttypen beinhalten. In mindestens einer Ausführungsform können Anwendungen einen oder mehrere der Dienste 3620 aufrufen (z.B. ausführen), um Verarbeitungsoperationen für eine Anwendung durchzuführen. In mindestens einer Ausführungsform können die Rechendienste 3716 durch Anwendungen ausgenutzt werden, um Superrechnen oder andere Tasks des Hochleistungsrechnens (HPC) durchzuführen. In mindestens einer Ausführungsform können die Rechendienst(e) 3716 ausgenutzt werden, um Parallelverarbeitung (z.B. unter Verwendung einer Parallelrechenplattform 3730) zum Verarbeiten von Daten durch eine oder mehrere Anwendungen und/oder einen oder mehrere Tasks einer einzelnen Anwendung im Wesentlichen simultan durchzuführen. In mindestens einer Ausführungsform kann die Parallelrechenplattform 3730 (z.B. CUDA von NVIDIA) Universaldatenverarbeitung auf GPUs (GPGPU) ermöglichen (z.B. GPUs 3722). In mindestens einer Ausführungsform kann eine Software-Schicht der Parallelrechenplattform 3730 Zugriff auf virtuelle Anweisungssätze und Parallelberechnungselemente von GPUs zur Ausführung von Rechenkernels bereitstellen. In mindestens einer Ausführungsform kann die Parallelrechenplattform 3730 Speicher beinhalten und in einigen Ausführungsformen kann ein Speicher zwischen und unter mehreren Containern und/oder zwischen und unter unterschiedlichen Verarbeitungs-Tasks innerhalb eines einzelnen Containers gemeinsam genutzt werden. In mindestens einer Ausführungsform können Aufrufe für Interprozesskommunikation (inter-process communication - IPC) für mehrere Container und/oder für mehrere Prozesse innerhalb eines Containers erzeugt werden, um gleiche Daten aus einem gemeinsam genutzten Speichersegment der Parallelrechenplattform 3730 zu verwenden (z.B., wenn mehrere unterschiedliche Stufen einer Anwendung oder mehrere Anwendungen gleiche Informationen verarbeiten). In mindestens einer Ausführungsform können gleiche Daten an einem gleichem Speicherort für eine beliebige Anzahl von Verarbeitungs-Tasks verwendet werden (z.B. zur gleichen Zeit, zu unterschiedlichen Zeiten usw.), anstatt eine Kopie der Daten zu erstellen und die Daten an unterschiedliche Orte in dem Speicher zu verschieben (z.B. eine Lese-/Schreiboperation). Da Daten verwendet werden, um neue Daten als Ergebnis der Verarbeitung zu erzeugen, können diese Informationen in mindestens einer Ausführungsform über einen neuen Ort von Daten gespeichert und von verschiedenen Anwendungen gemeinsam genutzt werden. In mindestens einer Ausführungsform können ein Ort von Daten und ein Ort von aktualisierten oder modifizierten Daten Teil einer Definition sein, wie Nutzdaten innerhalb von Containern zu verstehen sind.
  • In mindestens einer Ausführungsform können die KI-Dienste 3718 ausgenutzt werden, um Inferenzdienste zum Ausführen von Modell(en) des maschinellen Lernens durchzuführen, die mit Anwendungen assoziiert (z.B. mit dem Durchführen eines oder mehrerer Verarbeitungs-Tasks einer Anwendung beauftragt) sind. In mindestens einer Ausführungsform können die KI-Dienste 3718 das Kl-System 3724 ausnutzen, um Modell(e) des maschinellen Lernens (z.B. neuronale Netzwerke wie etwa CNNs) für Segmentierung, Rekonstruktion, Objekterkennung, Merkmalserkennung, Klassifizierung und/oder andere Inferenz-Tasks auszuführen. In mindestens einer Ausführungsform können die Anwendungen der Einsatzpipeline(s) 3710 eines oder mehrere der Ausgabemodelle 3616 aus dem Trainingssystem 3604 und/oder andere Modelle der Anwendungen verwenden, um Inferenz an Bildgebungsdaten (z.B. DICOM-Daten, RIS-Daten, CIS-Daten, REST-konformen Daten, RPC-Daten, Rohdaten usw.) durchzuführen. In mindestens einer Ausführungsform können zwei oder mehr Beispiele für das Inferenzieren unter Verwendung des Anwendungsorchestrierungssystems 3728 (z.B. eines Schedulers, Sequenzers und/oder einer asynchronen Rechen-Engine) verfügbar sein. In mindestens einer Ausführungsform kann eine erste Kategorie einen Pfad mit hoher Priorität/geringer Latenz beinhalten, der höhere Service Level Agreements erreichen kann, wie etwa zum Durchführen von Inferenz an dringenden Anforderungen während eines Notfalls oder für einen Radiologen während der Diagnose. In mindestens einer Ausführungsform kann eine zweite Kategorie einen Pfad mit Standardpriorität beinhalten, der für Anforderungen verwendet werden kann, die nicht dringend sind oder bei denen die Analyse zu einem späteren Zeitpunkt durchgeführt werden kann. In mindestens einer Ausführungsform kann das Anwendungsorchestrierungssystem 3728 Ressourcen (z.B. Dienste 3620 und/oder Hardware 3622) auf Grundlage von Prioritätspfaden für unterschiedliche Inferenz-Tasks der KI-Dienste 3718 verteilen.
  • In mindestens einer Ausführungsform kann der gemeinsam genutzte Datenspeicher mit den KI-Diensten 3718 innerhalb des Systems 3700 verbunden sein. In mindestens einer Ausführungsform kann der gemeinsam genutzte Datenspeicher als Cache (oder anderer Speichervorrichtungstyp) arbeiten und zum Verarbeiten von Inferenzanforderungen von Anwendungen verwendet werden. In mindestens einer Ausführungsform kann, wenn eine Inferenzanforderung abgesendet wird, eine Anforderung durch einen Satz von API-Instanzen des Einsatzsystems 3606 empfangen werden und eine oder mehrere Instanzen können ausgewählt werden (z.B. für beste Anpassung, für Lastverteilung usw.), um eine Anforderung zu verarbeiten. In mindestens einer Ausführungsform kann zum Verarbeiten einer Anforderung eine Anforderung in eine Datenbank eingegeben werden, ein Modell des maschinellen Lernens kann aus der Modellregistrierungsdatenbank 3624 lokalisiert werden, falls es sich nicht bereits in einem Cache befindet, ein Validierungsschritt kann sicherstellen, dass ein zweckmäßiges Modell des maschinellen Lernens in einen Cache (z.B. einen gemeinsam genutzten Datenspeicher) geladen wird, und/oder eine Kopie eines Modells kann in einem Cache gesichert werden. In mindestens einer Ausführungsform kann ein Scheduler (z.B. des Pipelineverwalters 3712) verwendet werden, um eine Anwendung zu starten, auf die in einer Anforderung verwiesen wird, falls eine Anwendung nicht bereits läuft oder falls nicht genügend Instanzen einer Anwendung vorhanden sind. In mindestens einer Ausführungsform kann ein Inferenzserver gestartet werden, falls ein Inferenzserver zum Ausführen eines Modells nicht bereits gestartet ist. In mindestens einer Ausführungsform kann pro Modell eine beliebige Anzahl von Inferenzservern gestartet werden. In mindestens einer Ausführungsform können in einem Pull-Modell, in dem Inferenzserver geclustert sind, Modelle zwischengespeichert werden, wann immer eine Lastverteilung vorteilhaft ist. In mindestens einer Ausführungsform können Inferenzserver statisch in entsprechende, verteilte Server geladen werden.
  • In mindestens einer Ausführungsform kann Inferenzierung unter Verwendung eines Inferenzservers durchgeführt werden, der in einem Container ausgeführt wird. In mindestens einer Ausführungsform kann eine Instanz eines Inferenzservers mit einem Modell (und optional einer Vielzahl von Versionen eines Modells) assoziiert sein. In mindestens einer Ausführungsform kann, falls eine Instanz eines Inferenzservers nicht existiert, wenn eine Anforderung zum Durchführen eines Inferenzierens an einem Modell empfangen wird, eine neue Instanz geladen werden. In mindestens einer Ausführungsform kann beim Starten eines Inferenzservers ein Modell an einen Inferenzserver übergeben werden, sodass der gleiche Container zum Bedienen unterschiedlicher Modelle verwendet werden kann, solange der Inferenzserver als andere Instanz läuft.
  • In mindestens einer Ausführungsform kann während der Anwendungsausführung eine Inferenzanforderung für eine bestimmte Anwendung empfangen werden und ein Container (der z.B. eine Instanz eines Inferenzservers hostet) kann geladen werden (falls nicht bereits geschehen), und es kann eine Startprozedur aufgerufen werden. In mindestens einer Ausführungsform kann Vorverarbeitungslogik in einem Container eingehende Daten laden, decodieren und/oder beliebige zusätzliche Vorverarbeitung an diesen durchführen (z.B. unter Verwendung von CPU(s) und/oder GPU(s)). In mindestens einer Ausführungsform kann ein Container, sobald die Daten für die Inferenz vorbereitet sind, das Inferenzieren nach Bedarf an den Daten durchführen. In mindestens einer Ausführungsform kann dies einen einzelnen Inferenzaufruf an einem Bild (z.B. einem Handröntgenbild) beinhalten oder eine Inferenz an Hunderten von Bildern (z.B. einem Brust-CT) erfordern. In mindestens einer Ausführungsform kann eine Anwendung Ergebnisse vor dem Abschluss zusammenfassen, was ohne Einschränkung eine einzelne Konfidenzbewertung, eine Segmentierung auf Pixellevel, eine Segmentierung auf Voxellevel, das Generieren einer Visualisierung oder das Generieren von Text zum Zusammenfassen von Befunden beinhalten kann. In mindestens einer Ausführungsform können unterschiedlichen Modellen oder Anwendungen unterschiedliche Prioritäten zugeordnet werden. Zum Beispiel können einige Modelle eine Echtzeitpriorität (TAT weniger als eine Minute) aufweisen, während andere eine niedrigere Priorität aufweisen können (z.B. TAT weniger als 10 Minuten). In mindestens einer Ausführungsform können die Modellausführungszeiten von der anfordernden Institution oder Entität gemessen werden und die Zeit für die Traversierung des Partnernetzwerks sowie die Ausführung auf einem Inferenzdienst beinhalten.
  • In mindestens einer Ausführungsform kann die Übermittlung von Anforderungen zwischen den Diensten 3620 und den Inferenzanwendungen hinter einem Software-Entwicklungskit (SDK) verborgen sein und der robuste Transport durch eine Warteschlange bereitgestellt sein. In mindestens einer Ausführungsform wird eine Anforderung über eine API für eine einzelne Anwendungs-/Tenant-ID-Kombination in einer Warteschlange platziert und ein SDK entnimmt eine Anforderung aus einer Warteschlange und gibt eine Anforderung einer Anwendung. In mindestens einer Ausführungsform kann ein Name einer Warteschlange in einer Umgebung bereitgestellt sein, aus der ein SDK diesen aufnimmt. In mindestens einer Ausführungsform kann die asynchrone Kommunikation durch eine Warteschlange nützlich sein, da sie es einer beliebigen Instanz einer Anwendung ermöglichen kann, die Arbeit aufzunehmen, sobald sie verfügbar wird. In mindestens einer Ausführungsform können die Ergebnisse durch eine Warteschlange zurück übermittelt werden, um sicherzustellen, dass keine Daten verloren gehen. In mindestens einer Ausführungsform können Warteschlangen auch eine Fähigkeit bereitstellen, Arbeit zu segmentieren, da Arbeit mit höchster Priorität an eine Warteschlange gehen kann, mit der die meisten Instanzen einer Anwendung verbunden sind, während Arbeit mit niedrigster Priorität an eine Warteschlange gehen kann, mit der nur eine einzelne Instanz verbunden ist, die Tasks in einer Reihenfolge verarbeitet, in der sie empfangen werden. In mindestens einer Ausführungsform kann eine Anwendung auf einer GPU-beschleunigten Instanz laufen, die in der Cloud 3726 erzeugt wurde, und ein Inferenzdienst kann das Inferenzieren auf einer GPU durchführen.
  • In mindestens einer Ausführungsform können die Visualisierungsdienste 3720 ausgenutzt werden, um Visualisierungen zur Ansicht von Ausgaben von Anwendungen und/oder Einsatzpipeline(s) 3710 zu erzeugen. In mindestens einer Ausführungsform können die GPUs 3722 durch die Visualisierungsdienste 3720 ausgenutzt werden, um Visualisierungen zu erzeugen. In mindestens einer Ausführungsform können Rendering-Effekte, wie etwa Strahlverfolgung, durch die Visualisierungsdienste 3720 implementiert werden, um Visualisierungen mit höherer Qualität zu erzeugen. In mindestens einer Ausführungsform können Visualisierungen ohne Einschränkung 2D-Bild-Renderings, 3D-Volumen-Renderings, 3D-Volumenrekonstruktionen, 2D-Tomografiescheiben, Virtual-Reality-Anzeigen, Augmented-Reality-Anzeigen usw. beinhalten. In mindestens einer Ausführungsform können virtualisierte Umgebungen verwendet werden, um eine virtuelle interaktive Anzeige oder Umgebung (z.B. eine virtuelle Umgebung) für die Interaktion durch Benutzer eines Systems (z.B. Ärzte, Pfleger, Radiologen usw.) zu erzeugen. In mindestens einer Ausführungsform können die Visualisierungsdienste 3720 einen internen Visualizer, Kinematik und/oder andere Rendering- oder Bildverarbeitungsfähigkeiten oder -funktionen (z.B. Strahlverfolgung, Rasterung, interne Optik usw.) beinhalten.
  • In mindestens einer Ausführungsform kann die Hardware 3622 GPUs 3722, das KI-System 3724, die Cloud 3726 und/oder beliebige andere Hardware beinhalten, die zum Ausführen des Trainingssystems 3604 und/oder des Einsatzsystems 3606 verwendet wird. In mindestens einer Ausführungsform können die GPUs 3722 (z.B. TESLA- und/oder QUADRO-GPUs von NVIDIA) eine beliebige Anzahl von GPUs beinhalten, die zum Ausführen von Verarbeitungs-Tasks von Rechendiensten 3716, KI-Diensten 3718, Visualisierungsdiensten 3720, anderen Diensten und/oder beliebigen von Merkmalen oder Funktionen der Software 3618 verwendet werden können. In Bezug auf die KI-Dienste 3718 können die GPUs 3722 zum Beispiel zum Durchführen von Vorverarbeitung an Bildgebungsdaten (oder anderen Datentypen, die durch Modelle des maschinellen Lernens verwendet werden), Nachverarbeitung an Ausgaben der Modelle des maschinellen Lernens und/oder zum Durchführen von Inferenzieren (z.B. zum Ausführen von Modellen des maschinellen Lernens) verwendet werden. In mindestens einer Ausführungsform können die Cloud 3726, das KI-System 3724 und/oder andere Komponenten des Systems 3700 die GPUs 3722 verwenden. In mindestens einer Ausführungsform kann die Cloud 3726 eine GPU-optimierte Plattform für Deep-Learning-Tasks beinhalten. In mindestens einer Ausführungsform kann das KI-System 3724 GPUs verwenden und die Cloud 3726 - oder mindestens ein Abschnitt, der mit Deep Learning oder Inferenzieren beauftragt ist - kann unter Verwendung eines oder mehrerer KI-Systeme 3724 ausgeführt werden. Obwohl es sich bei der Hardware 3622 der Veranschaulichung nach um diskrete Komponenten handelt, soll dies demnach nicht einschränkend sein und beliebige Komponenten der Hardware 3622 können mit beliebigen anderen Komponenten der Hardware 3622 kombiniert oder durch diese ausgenutzt werden.
  • In mindestens einer Ausführungsform kann das KI-System 3724 ein speziell entwickeltes Rechensystem (z.B. einen Supercomputer oder einen HPC) beinhalten, das für Inferenzieren, Deep Learning, maschinelles Lernen und/oder andere Tasks der künstlichen Intelligenz konfiguriert ist. In mindestens einer Ausführungsform kann das KI-System 3724 (z.B. DGX von NVIDIA) GPU-optimierte Software (z.B. einen Software-Stapel) beinhalten, die unter Verwendung einer Vielzahl von GPUs 3722 zusätzlich zu CPUs, RAM, Datenspeicher und/oder anderen Komponenten, Merkmalen oder Funktionen ausgeführt werden kann. In mindestens einer Ausführungsform können ein oder mehrere KI-Systeme 3724 in der Cloud 3726 (z.B. in einem Rechenzentrum) implementiert sein, um einige oder alle der KI-basierten Verarbeitungs-Tasks des Systems 3700 durchzuführen.
  • In mindestens einer Ausführungsform kann die Cloud 3726 eine GPUbeschleunigte Infrastruktur (z.B. NGC von NVIDIA) beinhalten, die eine GPU-optimierte Plattform zum Ausführen von Verarbeitungs-Tasks des Systems 3700 bereitstellen kann. In mindestens einer Ausführungsform kann die Cloud 3726 ein Kl-System(e) 3724 zum Durchführen eines oder mehrerer KI-basierter Tasks des Systems 3700 beinhalten (z.B. als Hardware-Abstraktions- und - Skalierungsplattform). In mindestens einer Ausführungsform kann die Cloud 3726 in das Anwendungsorchestrierungssystem 3728 integriert sein, das mehrere GPUs ausnutzt, um eine nahtlose Skalierung und Lastverteilung zwischen und unter den Anwendungen und Diensten 3620 zu ermöglichen. In mindestens einer Ausführungsform kann die Cloud 3726 damit beauftragt sein, mindestens einige der Dienste 3620 des Systems 3700 auszuführen, einschließlich der Rechendienste 3716, der KI-Dienste 3718 und/oder der Visualisierungsdienste 3720, wie hierin beschrieben. In mindestens einer Ausführungsform kann die Cloud 3726 Inferenz mit kleinen und großen Batches durchführen (z.B. unter Ausführung von TENSOR RT von NVIDIA), eine beschleunigte Parallelrechen-API und -Plattform 3730 bereitstellen (z.B. CUDA von NVIDIA), ein Anwendungsorchestrierungssystem 3728 ausführen (z.B. KUBERNETES), eine Grafik-Rendering-API und -Plattform bereitstellen (z.B. für Strahlverfolgung, 2D-Grafik, 3D-Grafik und/oder andere Rendering-Techniken, um Kinematik mit höherer Qualität zu erzeugen) und/oder sie kann andere Funktionen für das System 3700 bereitstellen.
  • In mindestens einer Ausführungsform kann die Cloud 3726 in dem Bestreben, die Vertraulichkeit von Patientendaten zu wahren (z.B., wenn Patientendaten oder -akten außerhalb der Räumlichkeiten verwendet werden sollen), eine Registrierungsdatenbank beinhalten - wie etwa eine Deep-Learning-Containerregistrierungsdatenbank. In mindestens einer Ausführungsform kann eine Registrierungsdatenbank Container für Instanziierungen von Anwendungen speichern, die Vorverarbeitungs-, Nachverarbeitungs- oder andere Verarbeitungs-Tasks an Patientendaten durchführen können. In mindestens einer Ausführungsform kann die Cloud 3726 Daten empfangen, die Patientendaten sowie Sensordaten in Containern beinhalten, die angeforderte Verarbeitung nur für die Sensordaten in diesen Containern durchführen und dann eine resultierende Ausgabe und/oder Visualisierungen an zweckmäßige Parteien und/oder Vorrichtungen weiterleiten (z.B. medizinische Vorrichtungen in den Räumlichkeiten, die zur Visualisierung oder Diagnose verwendet werden), ohne dass Patientendaten extrahiert oder gespeichert müssen oder anderweitig darauf zugegriffen werden muss. In mindestens einer Ausführungsform wird die Vertraulichkeit der Patientendaten in Übereinstimmung mit HIPAA- und/oder anderen Datenvorschriften gewahrt.
  • In mindestens einer Ausführungsform können solche Komponenten verwendet werden, um Bildsegmentierung durchzuführen, wie oben erörtert, beispielsweise in Bezug auf ein System von 1 oder 2 oder Prozesse von 4 oder 5. In mindestens einer Ausführungsform kann dies die Verwendung eines oder mehrerer erster neuronaler Netzwerke beinhalten, um zu bewirken, dass ein Lichteffekt auf ein oder mehrere Objekte in einem oder mehreren Bildern angewendet wird, die zumindest teilweise auf synthetisch erzeugten Bildern des einen oder der mehreren Objekte basieren.
  • 38 beinhaltet eine beispielhafte Veranschaulichung einer Einsatzpipeline 3710A zum Verarbeiten von Bildgebungsdaten gemäß mindestens einer Ausführungsform. In mindestens einer Ausführungsform kann das System 3700 - und insbesondere das Einsatzsystem 3606 - verwendet werden, um die Einsatzpipeline(s) 3710A individuell anzupassen, zu aktualisieren und/oder in eine oder mehrere Produktionsumgebungen zu integrieren. In mindestens einer Ausführungsform beinhaltet die Einsatzpipeline 371 0A aus 38 ein nicht einschränkendes Beispiel für eine Einsatzpipeline 3710A, die durch einen konkreten Benutzer (oder ein Team von Benutzern) in einer Einrichtung (z.B. in einem Krankenhaus, einer Klinik, einem Labor, einer Forschungsumgebung usw.) individuell definiert sein kann. In mindestens einer Ausführungsform kann ein Benutzer zum Definieren von Einsatzpipelines 3710A für einen CT-Scanner 3802 - zum Beispiel aus einer Containerregistrierungsdatenbank - eine oder mehrere Anwendungen auswählen, die spezifische Funktionen oder Tasks in Bezug auf die durch den CT-Scanner 3802 erzeugten Bildgebungsdaten durchführen. In mindestens einer Ausführungsform können Anwendungen auf die Einsatzpipeline 3710A als Container angewendet werden, die die Dienste 3620 und/oder Hardware 3622 des Systems 3700 ausnutzen können. Darüber hinaus kann die Einsatzpipeline 3710A zusätzliche Verarbeitungs-Tasks oder Anwendungen beinhalten, die implementiert werden können, um Daten für die Verwendung durch Anwendungen vorzubereiten (z.B. können der DICOM-Adapter 3702B und ein DICOM-Lesegerät 3806 in der Einsatzpipeline 3710A verwendet werden, um Daten für die Verwendung durch eine CT-Rekonstruktion 3808, eine Organsegmentierung 3810 usw. vorzubereiten). In mindestens einer Ausführungsform kann die Einsatzpipeline 3710A für einen konsistenten Einsatz, eine einmalige Verwendung oder für eine andere Häufigkeit oder ein anderes Intervall individuell angepasst oder ausgewählt werden. In mindestens einer Ausführungsform kann ein Benutzer die CT-Rekonstruktion 3808 und die Organsegmentierung 3810 für mehrere Probanden über ein spezifisches Intervall wünschen und daher die Pipeline 3710A für diesen Zeitraum einsetzen. In mindestens einer Ausführungsform kann ein Benutzer für jede Anforderung von dem System 3700 die Anwendungen auswählen, die ein Benutzer möchte, um Verarbeitung an diesen Daten für diese Anforderung durchzuführen. In mindestens einer Ausführungsform kann die Einsatzpipeline 3710A in einem beliebigen Intervall eingestellt werden und aufgrund der Anpassungsfähigkeit und Skalierbarkeit einer Container-Struktur innerhalb des Systems 3700 kann dies ein nahtloser Prozess sein.
  • In mindestens einer Ausführungsform kann die Einsatzpipeline 3710A aus 38 einen CT-Scanner 3802 zum Erzeugen von Bildgebungsdaten eines Patienten oder Probanden beinhalten. In mindestens einer Ausführungsform können die Bildgebungsdaten des CT-Scanners 3802 auf (einem) PACS-Server(n) 3804 gespeichert werden, die mit einer Einrichtung assoziiert sind, in der sich der CT-Scanner 3802 befindet. In mindestens einer Ausführungsform kann der/können die PACS-Server 3804 Software- und/oder Hardware-Komponenten beinhalten, die mit den Bildgebungsmodalitäten (z.B. dem CT-Scanner 3802) in einer Einrichtung eine direkte Schnittstelle bilden können. In mindestens einer Ausführungsform kann der DICOM-Adapter 3702B das Senden und Empfangen von DICOM-Objekten unter Verwendung von DICOM-Protokollen ermöglichen. In mindestens einer Ausführungsform kann der DICOM-Adapter 3702B bei der Vorbereitung oder Konfiguration von DICOM-Daten von PACS-Server(n) 3804 für die Verwendung durch die Einsatzpipeline 3710A helfen. In mindestens einer Ausführungsform kann der Pipeline-Manager 3712 Daten an die Einsatzpipeline 3710A durchrouten, sobald DICOM-Daten durch den DICOM-Adapter 3702B verarbeitet sind. In mindestens einer Ausführungsform kann das DICOM-Lesegerät 3806 Bilddateien und beliebige damit assoziierte Metadaten aus DICOM-Daten extrahieren (z.B. Sinogramm-Rohdaten, wie in der Visualisierung 3816A veranschaulicht). In mindestens einer Ausführungsform können Arbeitsdateien, die extrahiert werden, in einem Cache gespeichert werden, um eine schnellere Verarbeitung durch andere Anwendungen in der Einsatzpipeline 3710A zu ermöglichen. In mindestens einer Ausführungsform kann, sobald das DICOM-Lesegerät 3806 das Extrahieren und/oder Speichern von Daten beendet hat, ein Abschlusssignal an den Pipelineverwalter 3712 kommuniziert werden. In mindestens einer Ausführungsform kann der Pipelineverwalter 3712 dann eine oder mehrere andere Anwendungen oder Container in der Einsatzpipeline 3710A initiieren oder aufrufen.
  • In mindestens einer Ausführungsform kann die Anwendung und/oder der Container für die CT-Rekonstruktion 3808 ausgeführt werden, sobald Daten (z.B. Sinogramm-Rohdaten) für die Verarbeitung durch die Anwendung CT-Rekonstruktion 3808 verfügbar sind. In mindestens einer Ausführungsform kann die CT-Rekonstruktion 3808 Sinogramm-Rohdaten aus einem Cache lesen, eine Bilddatei aus den Sinogramm-Rohdaten rekonstruieren (wie z.B. in der Visualisierung 3816B veranschaulicht) und die resultierende Bilddatei in einem Cache speichern. In mindestens einer Ausführungsform kann bei Abschluss der Rekonstruktion dem Pipelineverwalter 3712 signalisiert werden, dass der Rekonstruktions-Task abgeschlossen ist. In mindestens einer Ausführungsform kann, sobald die Rekonstruktion abgeschlossen ist und eine rekonstruierte Bilddatei in einem Cache (oder einer anderen Speichervorrichtung) gespeichert werden kann, die Anwendung und/oder der Container für die Organsegmentierung 3810 durch den Pipelineverwalter 3712 ausgelöst werden. In mindestens einer Ausführungsform kann die Anwendung und/oder der Container für die Organsegmentierung 3810 eine Bilddatei aus einem Cache lesen, eine Bilddatei normalisieren oder in ein für die Inferenz geeignetes Format konvertieren (z.B. eine Bilddatei in eine Eingabeauflösung eines Modells des maschinellen Lernens konvertieren) und die Inferenz gegen ein normalisiertes Bild ausführen. Um Inferenz an einem normalisierten Bild auszuführen, kann sich die Anwendung und/oder der Container für die Organsegmentierung 3810 in mindestens einer Ausführungsform auf die Dienste 3620 stützen und der Pipelinemanager 3712 und/oder das Anwendungsorchestrierungssystem 3728 können die Verwendung der Dienste 3620 durch die Anwendung und/oder den Container für die Organsegmentierung 3810 erleichtern. Zum Beispiel kann in mindestens einer Ausführungsform die Anwendung und/oder der Container für die Organsegmentierung 3810 die KI-Dienste 3718 ausnutzen, um Inferenz an einem normalisierten Bild durchzuführen, und die Kl-Dienste 3718 können die Hardware 3622 (z.B. das KI-System 3724) ausnutzen, um die KI-Dienste 3718 auszuführen. In mindestens einer Ausführungsform kann ein Ergebnis einer Inferenz eine Maskendatei sein (wie z.B. in der Visualisierung 3816C veranschaulicht), die in einem Cache (oder einer anderen Speichervorrichtung) gespeichert werden kann.
  • In mindestens einer Ausführungsform kann, sobald Anwendungen, die DICOM-Daten und/oder aus DICOM-Daten extrahierte Daten verarbeiten, die Verarbeitung abgeschlossen haben, ein Signal für den Pipelineverwalter 3712 generiert werden. In mindestens einer Ausführungsform kann der Pipelineverwalter 3712 dann ein DICOM-Schreibgerät 3812 ausführen, um Ergebnisse aus einem Cache (oder einer anderen Speichervorrichtung) zu lesen und Ergebnisse in ein DICOM-Format (z.B. als DICOM-Ausgabe 3814) zur Verwendung durch Benutzer in einer Einrichtung, die eine Anforderung erzeugten, zu verpacken. In mindestens einer Ausführungsform kann die DICOM-Ausgabe 3814 dann an den DICOM-Adapter 3702B übertragen werden, um die DICOM-Ausgabe 3814 für die Speicherung auf dem/den PACS-Server(n) 3804 vorzubereiten (z.B. für die Ansicht durch einen DICOM-Viewer in einer Einrichtung). In mindestens einer Ausführungsform können als Reaktion auf eine Anforderung zur Rekonstruktion und Segmentierung Visualisierungen 3816B und 3816C erzeugt werden und einem Benutzer für Diagnose-, Forschungs- und/oder andere Zwecke zur Verfügung gestellt werden.
  • Obwohl als konsekutive Anwendung in der Einsatzpipeline 3710A veranschaulicht, können die Anwendungen für die CT-Rekonstruktion 3808 und die Organsegmentierung 3810 in mindestens einer Ausführungsform parallel verarbeitet werden. In mindestens einer Ausführungsform, in der die Anwendungen keine Abhängigkeiten voneinander aufweisen und Daten für jede Anwendung verfügbar sind (z.B., nachdem das DICOM-Lesegerät 3806 Daten extrahiert hat), können Anwendungen gleichzeitig, im Wesentlichen gleichzeitig oder mit einer gewissen Überlappung ausgeführt werden. In mindestens einer Ausführungsform, in der zwei oder mehr Anwendungen ähnliche Dienste 3620 erfordern, kann ein Scheduler des Systems 3700 zur Lastverteilung und zum Verteilen von Rechen- oder Verarbeitungsressourcen zwischen und unter verschiedenen Anwendungen verwendet werden. In mindestens einer Ausführungsform kann die Parallelrechenplattform 3730 zum Durchführen von Parallelverarbeitung für Anwendungen verwendet werden, um die Laufzeit der Einsatzpipeline 3710A zu verkürzen, um Ergebnisse in Echtzeit bereitzustellen.
  • In mindestens einer Ausführungsform und unter Bezugnahme auf 39A-39B kann das Einsatzsystem 3606 als ein oder mehrere virtuelle Instrumente implementiert werden, um unterschiedliche Funktionalitäten - wie etwa Bildverarbeitung, Segmentierung, Verbesserung, Kl, Visualisierung und Inferenzieren - mit Bildgebungsvorrichtungen (z.B. CT-Scannern, Röntgenmaschinen, MRT-Maschinen usw.), Sequenzierungsvorrichtungen, Genomikvorrichtungen und/oder anderen Vorrichtungstypen durchzuführen. In mindestens einer Ausführungsform kann das System 3700 die Erstellung und Bereitstellung von virtuellen Instrumenten ermöglichen, die eine softwaredefinierte Einsatzpipeline 3710 beinhalten können, die durch eine Vorrichtung(en) erzeugte rohe/unverarbeitete Eingabedaten empfangen und verarbeitete/rekonstruierte Daten ausgeben kann. In mindestens einer Ausführungsform können Einsatzpipelines 3710 (z.B. 3710A und 371 0B), die virtuelle Instrumente darstellen, Intelligenz in einer Pipeline implementieren, wie etwa durch Ausnutzen von Modellen des maschinellen Lernens, um einem System containerisierte Inferenzunterstützung bereitzustellen. In mindestens einer Ausführungsform können virtuelle Instrumente eine beliebige Anzahl von Containern ausführen, die jeweils Instanziierungen von Anwendungen beinhalten. In mindestens einer Ausführungsform, wie etwa, wenn Echtzeitverarbeitung gewünscht ist, können Einsatzpipelines 3710, die virtuelle Instrumente darstellen, statisch sein (z.B. können Container und/oder Anwendungen festgelegt sein), während in anderen Beispielen Container und/oder Anwendungen für virtuelle Instrumente aus einem Pool von Anwendungen oder Ressourcen (z.B. innerhalb einer Containerregistrierungsdatenbank k) ausgewählt werden können (z.B. pro Anforderung).
  • In mindestens einer Ausführungsform kann das System 3700 als ein oder mehrere virtuelle Instrumente in den Räumlichkeiten in einer Einrichtung instanziiert oder ausgeführt werden, zum Beispiel in einem Rechensystem, das neben einer Radiologiemaschine, einer Bildgebungsvorrichtung und/oder einem anderen Vorrichtungstyp in einer Einrichtung eingesetzt wird oder anderweitig in Kommunikation damit steht. In mindestens einer Ausführungsform kann jedoch eine Installation in den Räumlichkeiten innerhalb eines Rechensystems einer Vorrichtung selbst (z.B. eines Rechensystems, das einstückig zu einer Bildgebungsvorrichtung ist), in einem lokalen Rechenzentrum (z.B. einem Rechenzentrum in den Räumlichkeiten) und/oder in einer Cloud-Umgebung (z.B. in der Cloud 3726) instanziiert oder ausgeführt werden. In mindestens einer Ausführungsform kann das Einsatzsystem 3606, das als virtuelles Instrument arbeitet, in einigen Beispielen durch einen Supercomputer oder ein anderes HPC-System instanziiert werden. In mindestens einer Ausführungsform kann die Installation in den Räumlichkeiten Verwendungen mit hoher Bandbreite (zum Beispiel über lokale Kommunikationsschnittstellen mit höherem Durchsatz, wie etwa HF über Ethernet) für die Echtzeitverarbeitung ermöglichen. In mindestens einer Ausführungsform kann Verarbeitung in Echtzeit oder nahezu in Echtzeit besonders nützlich sein, wenn ein virtuelles Instrument eine Ultraschallvorrichtung oder eine andere Bildgebungsmodalität unterstützt, bei der sofortige Visualisierungen erwartet oder für genaue Diagnosen und Analysen erforderlich sind. In mindestens einer Ausführungsform kann eine Cloud-Computing-Architektur zu dynamischem Bursting zu einem Cloud-Computing-Dienstleister oder einem anderen Rechencluster in der Lage sein, wenn die lokale Nachfrage die Kapazität oder Fähigkeit vor Ort übersteigt. In mindestens einer Ausführungsform kann eine Cloud-Architektur, wenn sie implementiert ist, für das Training neuronaler Netzwerke oder anderer Modelle des maschinellen Lernens abgestimmt werden, wie hierin in Bezug auf das Trainingssystem 3604 beschrieben. In mindestens einer Ausführungsform können Modelle des maschinellen Lernens mit vorhandenen Trainingspipelines kontinuierlich lernen und sich verbessern, wenn sie zusätzliche Daten von Vorrichtungen verarbeiten, die sie unterstützen. In mindestens einer Ausführungsform können virtuelle Instrumente unter Verwendung von zusätzlichen Daten, neuen Daten, existierenden Modellen des maschinellen Lernens und/oder aktualisierten Modellen des maschinellen Lernens kontinuierlich verbessert werden.
  • In mindestens einer Ausführungsform kann ein Rechensystem einen Teil der oder die gesamte hierin beschriebene Hardware 3622 beinhalten und die Hardware 3622 kann auf beliebige einer Reihe von Weisen verteilt sein, einschließlich innerhalb einer Vorrichtung, als Teil einer Rechenvorrichtung, die an eine Vorrichtung gekoppelt ist und sich in deren Nähe befindet, in einem lokalen Rechenzentrum in einer Einrichtung und/oder in der Cloud 3726. Da das Einsatzsystem 3606 und die damit assoziierten Anwendungen oder Container in Software erstellt werden (z.B. als diskrete containerisierte Instantiierungen von Anwendungen), können in mindestens einer Ausführungsform das Verhalten, der Betrieb und die Konfiguration von virtuellen Instrumenten sowie die von virtuellen Instrumenten generierten Ausgaben nach Wunsch modifiziert oder individuell angepasst werden, ohne dass die Rohausgabe einer Vorrichtung, die ein virtuelles Instrument unterstützt, geändert oder verändert werden muss.
  • In mindestens einer Ausführungsform können solche Komponenten verwendet werden, um Bildsegmentierung durchzuführen, wie oben erörtert, beispielsweise in Bezug auf ein System von 1 oder 2 oder Prozesse von 4 oder 5. In mindestens einer Ausführungsform kann dies die Verwendung eines oder mehrerer erster neuronaler Netzwerke beinhalten, um zu bewirken, dass ein Lichteffekt auf ein oder mehrere Objekte in einem oder mehreren Bildern angewendet wird, die zumindest teilweise auf synthetisch erzeugten Bildern des einen oder der mehreren Objekte basieren.
  • 39A beinhaltet ein beispielhaftes Datenablaufdiagramm eines virtuellen Instruments, das eine Ultraschallvorrichtung unterstützt, gemäß mindestens einer Ausführungsform. In mindestens einer Ausführungsform kann die Einsatzpipeline 3710B einen oder mehrere der Dienste 3620 des Systems 3700 ausnutzen. In mindestens einer Ausführungsform können die Einsatzpipeline 3710B und die Dienste 3620 die Hardware 3622 eines Systems entweder lokal oder in der Cloud 3726 ausnutzen. In mindestens einer Ausführungsform, obwohl nicht veranschaulicht, kann der Prozess 3900 durch den Pipelineverwalter 3712, das Anwendungsorchestrierungssystem 3728 und/oder die Parallelrechenplattform 3730 erleichtert werden.
  • In mindestens einer Ausführungsform kann der Prozess 3900 den Empfang von Bildgebungsdaten von einer Ultraschallvorrichtung 3902 beinhalten. In mindestens einer Ausführungsform können die Bildgebungsdaten auf den PACS-Server(n) in einem DICOM-Format (oder einem anderen Format, wie etwa RIS, CIS, REST-konform, RPC, Rohdaten usw.) gespeichert sein und durch das System 3700 zur Verarbeitung durch die Einsatzpipeline 3710 empfangen werden, die als virtuelles Instrument (z.B. ein virtueller Ultraschall) für die Ultraschallvorrichtung 3902 ausgewählt oder individuell angepasst wurde. In mindestens einer Ausführungsform können die Bildgebungsdaten direkt von einer Bildgebungsvorrichtung (z.B. Ultraschallvorrichtung 3902) empfangen und durch ein virtuelles Instrument verarbeitet werden. In mindestens einer Ausführungsform kann ein Wandler oder ein anderer Signalkonverter, der kommunikativ zwischen einer Bildgebungsvorrichtung und einem virtuellen Instrument gekoppelt ist, die durch eine Bildgebungsvorrichtung erzeugten Signaldaten in Bilddaten umwandeln, die durch ein virtuelles Instrument verarbeitet werden können. In mindestens einer Ausführungsform können Rohdaten und/oder Bilddaten auf das DICOM-Lesegerät 3806 angewendet werden, um Daten zur Verwendung durch Anwendungen oder Container der Einsatzpipeline 3710B zu extrahieren. In mindestens einer Ausführungsform kann das DICOM-Lesegerät 3806 die Datenaugmentationsbibliothek 3914 (z.B. DALI von NVIDIA) als Dienst 3620 (z.B. als einen der Rechendienste(s) 3716) nutzen, um Daten zu extrahieren, deren Größe zu ändern, sie neu zu skalieren und/oder anderweitig für die Verwendung durch Anwendungen oder Container vorzubereiten.
  • In mindestens einer Ausführungsform kann, sobald die Daten vorbereitet sind, eine Anwendung und/oder ein Container für die Rekonstruktion 3906 ausgeführt werden, um die Daten von der Ultraschallvorrichtung 3902 in eine Bilddatei zu rekonstruieren. In mindestens einer Ausführungsform kann nach der Rekonstruktion 3906 oder gleichzeitig mit der Rekonstruktion 3906 eine Anwendung und/oder ein Container für die Erkennung 3908 zur Anomalieerkennung, zur Objekterkennung, zur Merkmalserkennung und/oder zu anderen Erkennungs-Tasks in Bezug auf die Daten ausgeführt werden. In mindestens einer Ausführungsform kann eine während der Rekonstruktion 3906 erzeugte Bilddatei während der Erkennung 3908 verwendet werden, um Anomalien, Objekte, Merkmale usw. zu identifizieren. In mindestens einer Ausführungsform kann die Anwendung für die Erkennung 3908 eine Inferenz-Engine 3916 (z.B. als einen der KI-Dienste(s) 3718) ausnutzen, um Inferenz an Daten durchzuführen, um Erkennungen zu erzeugen. In mindestens einer Ausführungsform können ein oder mehrere Modelle des maschinellen Lernens (z.B. aus dem Trainingssystem 3604) durch die Anwendung für die Detektion 3908 ausgeführt oder aufgerufen werden.
  • In mindestens einer Ausführungsform können nach Abschluss der Rekonstruktion 3906 und/oder der Erkennung 3908 die von diesen Anwendungen und/oder Containern ausgegebenen Daten verwendet werden, um Visualisierungen 3910 zu erzeugen, wie z.B. eine Visualisierung 3912 (z.B. eine Graustufenausgabe), die auf einer Arbeitsstation oder einem Anzeigeendgerät angezeigt wird. In mindestens einer Ausführungsform kann die Visualisierung es einem Techniker oder einem anderen Benutzer ermöglichen, die Ergebnisse der Einsatzpipeline 3710B in Bezug auf die Ultraschallvorrichtung 3902 zu visualisieren. In mindestens einer Ausführungsform kann die Visualisierung 3910 durch Ausnutzen einer Rendering-Komponente 3918 des Systems 3700 (z.B. eines der Visualisierungsdienste(s) 3720) ausgeführt werden. In mindestens einer Ausführungsform kann die Rendering-Komponente 3918 einen 2D-, OpenGL- oder Strahlverfolgungsdienst ausführen, um die Visualisierung 3912 zu erzeugen.
  • In mindestens einer Ausführungsform können solche Komponenten verwendet werden, um Bildsegmentierung durchzuführen, wie oben erörtert, beispielsweise in Bezug auf ein System von 1 oder 2 oder Prozesse von 4 oder 5. In mindestens einer Ausführungsform kann dies die Verwendung eines oder mehrerer erster neuronaler Netzwerke beinhalten, um zu bewirken, dass ein Lichteffekt auf ein oder mehrere Objekte in einem oder mehreren Bildern angewendet wird, die zumindest teilweise auf synthetisch erzeugten Bildern des einen oder der mehreren Objekte basieren.
  • 39B beinhaltet ein beispielhaftes Datenablaufdiagramm eines virtuellen Instruments, das einen CT-Scanner unterstützt, gemäß mindestens einer Ausführungsform. In mindestens einer Ausführungsform kann die Einsatzpipeline 3710C einen oder mehrere der Dienste 3620 des Systems 3700 ausnutzen. In mindestens einer Ausführungsform können die Einsatzpipeline 3710C und die Dienste 3620 die Hardware 3622 eines Systems entweder lokal oder in der Cloud 3726 ausnutzen. In mindestens einer Ausführungsform, obwohl nicht veranschaulicht, kann der Prozess 3920 durch den Pipelineverwalter 3712, das Anwendungsorchestrierungssystem 3728 und/oder die Parallelrechenplattform 3730 erleichtert werden.
  • In mindestens einer Ausführungsform kann der Prozess 3920 beinhalten, dass der CT-Scanner 3922 Rohdaten erzeugt, die durch das DICOM-Lesegerät 3806 empfangen werden können (z.B. direkt, über einen PACS-Server 3804, nach der Verarbeitung usw.). In mindestens einer Ausführungsform kann ein virtuelles CT (durch die Einsatzpipeline 3710C instanziiert) eine erste Echtzeitpipeline zum Überwachen eines Patienten (z.B. Patientenbewegungsdetektions-Kl 3926) und/oder zum Einstellen oder Optimieren der Belichtung des CT-Scanners 3922 (z.B. unter Verwendung der Belichtungssteuer-Kl 3924) beinhalten. In mindestens einer Ausführungsform können eine oder mehrere der Anwendungen (z.B. 3924 und 3926) einen Dienst 3620 nutzen, wie z.B. den/die KI-Dienst(e) 3718. In mindestens einer Ausführungsform können die Ausgaben der Anwendung (oder des Containers) für die Belichtungssteuer-Kl 3924 und/oder der Anwendung (oder des Containers) für die Patientenbewegungserkennungs-KI 3926 als Rückmeldung an den CT-Scanner 3922 und/oder einen Techniker verwendet werden, um die Belichtung (oder andere Einstellungen des CT-Scanners 3922) anzupassen und/oder einen Patienten zu informieren, sich weniger zu bewegen.
  • In mindestens einer Ausführungsform kann die Einsatzpipeline 3710C eine Nicht-Echtzeitpipeline zum Analysieren der durch den CT-Scanner 3922 erzeugten Daten beinhalten. In mindestens einer Ausführungsform kann eine zweite Pipeline die Anwendung und/oder den Container für die CT-Rekonstruktion 3808, eine Anwendung und/oder einen Container für die Groberkennungs-Kl 3928, eine Anwendung und/oder einen Container für die Feinerkennung-Kl 3932 (wenn z.B. bestimmte Ergebnisse durch die Groberkennungs-Kl 3928 erkannt werden), eine Anwendung und/oder einen Container für die Visualisierung 3930 und eine Anwendung und/oder einen Container für den DICOM-Schreiber 3812 (und/oder einen Schreiber für eine andere Datenart, z.B. RIS, CIS, REST-konform, RPC, Rohdaten usw.) beinhalten. In mindestens einer Ausführungsform können die durch den CT-Scanner 3922 erzeugten Rohdaten durch Pipelines der Einsatzpipeline 3710C (als virtuelles CT-Instrument instanziiert) gegeben werden, um Ergebnisse zu erzeugen. In mindestens einer Ausführungsform können die Ergebnisse des DICOM-Schreibers 3812 zur Anzeige übertragen und/oder auf dem/den PACS-Server(n) 3804 zum/zur späteren Abruf, Analyse oder Anzeige durch einen Techniker, eine Fachkraft oder anderen Benutzer gespeichert werden.
  • In mindestens einer Ausführungsform können solche Komponenten verwendet werden, um Bildsegmentierung durchzuführen, wie oben erörtert, beispielsweise in Bezug auf ein System von 1 oder 2 oder Prozesse von 4 oder 5. In mindestens einer Ausführungsform kann dies die Verwendung eines oder mehrerer erster neuronaler Netzwerke beinhalten, um zu bewirken, dass ein Lichteffekt auf ein oder mehrere Objekte in einem oder mehreren Bildern angewendet wird, die zumindest teilweise auf synthetisch erzeugten Bildern des einen oder der mehreren Objekte basieren.
  • 40A veranschaulicht ein Datenablaufdiagramm für einen Prozess 4000 zum Trainieren, erneuten Trainieren oder Aktualisieren eines Modells des maschinellen Lernens gemäß mindestens einer Ausführungsform. In mindestens einer Ausführungsform kann der Prozess 4000 als nicht einschränkendes Beispiel unter Verwendung des Systems 3700 aus 37 ausgeführt werden. In mindestens einer Ausführungsform kann der Prozess 4000 die Dienste 3620 und/oder die Hardware 3622 des Systems 3700 ausnutzen, wie hierin beschrieben. In mindestens einer Ausführungsform können verfeinerte Modelle 4012, die durch den Prozess 4000 erzeugt wurden, durch das Einsatzsystem 3606 für eine oder mehrere containerisierte Anwendungen in Einsatzpipelines 3710 ausgeführt werden.
  • In mindestens einer Ausführungsform kann das Modelltraining 3614 das erneute Trainieren oder Aktualisieren eines anfänglichen Modells 4004 (z.B. eines vorab trainierten Modells) unter Verwendung neuer Trainingsdaten (z.B. neuer Eingabedaten, wie etwa des Kundendatensatzes 4006, und/oder neuer mit den Eingabedaten assoziierter Ground-Truth-Daten) beinhalten. In mindestens einer Ausführungsform können zum erneuten Trainieren oder Aktualisieren des anfänglichen Modells 4004 die Ausgabe- oder Verlustschicht(en) des anfänglichen Modells 4004 zurückgesetzt oder gelöscht und/oder durch aktualisierte oder neue Ausgabe- oder Verlustschicht(en) ersetzt werden. In mindestens einer Ausführungsform kann das anfängliche Modell 4004 bereits fein abgestimmte Parameter (z.B. Gewichtungen und/oder Verzerrungen) aufweisen, die aus einem früheren Training übriggeblieben sind, sodass das Training oder das erneute Training 3614 nicht so lange dauern oder so viel Verarbeitung erfordern kann wie das Training eines Modells von Grund auf. In mindestens einer Ausführungsform können während des Modelltrainings 3614 durch Zurücksetzen oder Ersetzen der Ausgabe- oder Verlustschicht(en) des anfänglichen Modells 4004 die Parameter aktualisiert und für einen neuen Datensatz auf Grundlage von Verlustberechnungen neu abgestimmt werden, die mit der Genauigkeit der Ausgabe- oder Verlustschicht(en) beim Erzeugen von Vorhersagen an einem neuen Kundendatensatz 4006 (z.B. Bilddaten 3608 aus 36) assoziiert sind.
  • In mindestens einer Ausführungsform können die vorab trainierten Modelle 3706 in einem Datenspeicher oder einer Registrierungsdatenbank (z.B. der Modellregistrierungsdatenbank 3624 aus 36) gespeichert sein. In mindestens einer Ausführungsform können die vorab trainierten Modelle 3706 zumindest teilweise in einer oder mehreren anderen Einrichtungen als der Einrichtung, die den Prozess 4000 ausführt, trainiert worden sein. In mindestens einer Ausführungsform können zum Schutz der Privatsphäre und der Rechte von Patienten, Probanden oder Klienten unterschiedlicher Einrichtungen die vorab trainierten Modelle 3706 in den Räumlichkeiten unter Verwendung von Kunden- oder Patientendaten, die in den Räumlichkeiten erzeugt wurden, trainiert worden sein. In mindestens einer Ausführungsform können die vorab trainierten Modelle 3706 unter Verwendung der Cloud 3726 und/oder anderer Hardware 3622 trainiert werden, aber vertrauliche, datenschutzrechtlich geschützte Patientendaten dürfen nicht an beliebige Komponenten der Cloud 3726 (oder anderer Hardware außerhalb der eigenen Räumlichkeiten) übermittelt werden, durch diese verwendet werden oder für diese zugänglich sein. In mindestens einer Ausführungsform, in der ein vorab trainiertes Modell 3706 unter Verwendung von Patientendaten von mehr als einer Einrichtung trainiert wird, kann das vorab trainierte Modell 3706 einzeln für jede Einrichtung trainiert worden sein, bevor es an Patienten- oder Kundendaten einer anderen Einrichtung trainiert wird. In mindestens einer Ausführungsform, wie etwa, wenn Kunden- oder Patientendaten von Datenschutzbedenken ausgenommen wurden (z.B. durch eine Verzichtserklärung, für die experimentelle Verwendung usw.) oder wenn Kunden- oder Patientendaten in einem öffentlichen Datensatz enthalten sind, können Kunden- oder Patientendaten von einer beliebigen Anzahl von Einrichtungen verwendet werden, um das vorab trainierte Modell 3706 innerhalb und/oder außerhalb der eigenen Räumlichkeiten zu trainieren, wie etwa in einem Rechenzentrum oder einer anderen Cloud-Computing-Infrastruktur.
  • In mindestens einer Ausführungsform kann ein Benutzer beim Auswählen von Anwendungen zur Verwendung in den Einsatzpipelines 3710 auch Modelle des maschinellen Lernens auswählen, die für spezifische Anwendungen verwendet werden sollen. In mindestens einer Ausführungsform kann ein Benutzer kein Modell zur Verwendung aufweisen, sodass ein Benutzer ein vorab trainiertes Modell 3706 zum Verwenden mit einer Anwendung auswählen kann. In mindestens einer Ausführungsform ist das vorab trainierte Modell 3706 möglicherweise nicht dafür optimiert, genaue Ergebnisse an dem Kundendatensatz 4006 einer Einrichtung eines Benutzers zu erzeugen (z.B. auf Grundlage der Patientenvielfalt, der Demografie, der Typen der verwendeten medizinischen Bildgebungsvorrichtungen usw.). In mindestens einer Ausführungsform kann das vorab trainierte Modell 3706 vor dem Einsetzen des vorab trainierten Modells 3706 in der Einsatzpipeline 3710 zur Verwendung mit einer Anwendung(en) für die Verwendung in einer jeweiligen Einrichtung aktualisiert, erneut trainiert und/oder fein abgestimmt werden.
  • In mindestens einer Ausführungsform kann ein Benutzer ein vorab trainiertes Modell 3706 auswählen, das aktualisiert, erneut trainiert und/oder fein abgestimmt werden soll, und das vorab trainierte Modell 3706 kann als anfängliches Modell 4004 für das Trainingssystem 3604 innerhalb des Prozesses 4000 bezeichnet werden. In mindestens einer Ausführungsform kann der Kundendatensatz 4006 (z.B. Bildgebungsdaten, Genomdaten, Sequenzierungsdaten oder andere Datenarten, die von Vorrichtungen in einer Einrichtung erzeugt werden) verwendet werden, um das Modelltraining 3614 (das ohne Einschränkung das Übertragungslernen beinhalten kann) auf dem anfänglichen Modell 4004 durchzuführen, um das verfeinerte Modell 4012 zu erzeugen. In mindestens einer Ausführungsform können die Ground-Truth-Daten, die dem Kundendatensatz 4006 entsprechen, durch das Trainingssystem 3604 erzeugt werden. In mindestens einer Ausführungsform können Ground-Truth-Daten zumindest teilweise von Klinikern, Wissenschaftlern, Ärzten, Fachkräften in einer Einrichtung erzeugt werden (z.B. als beschriftete Klinikdaten 3612 aus 36).
  • In mindestens einer Ausführungsform kann die KI-gestützte Annotation 3610 in einigen Beispielen verwendet werden, um Ground-Truth-Daten zu erzeugen. In mindestens einer Ausführungsform kann die KI-gestützte Annotation 3610 (z.B. unter Verwendung eines SDK für die KI-gestützt Annotation implementiert) Modelle des maschinellen Lernens (z.B. neuronale Netzwerke) ausnutzen, um vorgeschlagene oder vorhergesagte Ground-Truth-Daten für einen Kundendatensatz zu erzeugen. In mindestens einer Ausführungsform kann der Benutzer 4010 Annotationswerkzeuge innerhalb einer Benutzerschnittstelle (einer grafischen Benutzerschnittstelle (graphical user interface - GUI) auf der Rechenvorrichtung 4008 verwenden.
  • In mindestens einer Ausführungsform kann der Benutzer 4010 über die Rechenvorrichtung 4008 mit einer GUI interagieren, um Annotationen oder automatische Annotationen zu bearbeiten oder fein abzustimmen. In mindestens einer Ausführungsform kann ein Polygonbearbeitungsmerkmal verwendet werden, um Vertices eines Polygons an genauere oder feiner abgestimmte Stellen zu verschieben.
  • In mindestens einer Ausführungsform können, sobald Ground-Truth-Daten mit dem Kundendatensatz 4006 assoziiert sind, die Ground-Truth-Daten (z.B. aus Klgestützter Annotation, manueller Beschriftung usw.) während des Modelltrainings 3614 durch verwendet werden, um das verfeinerte Modell 4012 zu erzeugen. In mindestens einer Ausführungsform kann der Kundendatensatz 4006 beliebig oft auf das anfängliche Modell 4004 angewendet werden und die Ground-Truth-Daten können verwendet werden, um die Parameter des anfänglichen Modells 4004 zu aktualisieren, bis ein akzeptables Genauigkeitslevel für das verfeinerte Modell 4012 erreicht ist. In mindestens einer Ausführungsform kann das verfeinerte Modell 4012, sobald das verfeinerte Modell 4012 erzeugt ist, innerhalb einer oder mehrerer Einsatzpipelines 3710 in einer Einrichtung zum Durchführen eines oder mehrerer Verarbeitungs-Tasks in Bezug auf medizinische Bildgebungsdaten eingesetzt werden.
  • In mindestens einer Ausführungsform kann das verfeinerte Modell 4012 in die vorab trainierten Modellen 3706 in der Modellregistrierungsdatenbank 3624 hochgeladen werden, um durch eine andere Einrichtung ausgewählt zu werden. In mindestens einer Ausführungsform kann dieser Prozess in einer beliebigen Anzahl von Einrichtungen durchgeführt werden, sodass das verfeinerte Modell 4012 an neuen Datensätzen beliebig oft weiter verfeinert werden kann, um ein universelleres Modell zu erzeugen.
  • In mindestens einer Ausführungsform können solche Komponenten verwendet werden, um Bildsegmentierung durchzuführen, wie oben erörtert, beispielsweise in Bezug auf ein System von 1 oder 2 oder Prozesse von 4 oder 5. In mindestens einer Ausführungsform kann dies die Verwendung eines oder mehrerer erster neuronaler Netzwerke beinhalten, um zu bewirken, dass ein Lichteffekt auf ein oder mehrere Objekte in einem oder mehreren Bildern angewendet wird, die zumindest teilweise auf synthetisch erzeugten Bildern des einen oder der mehreren Objekte basieren.
  • 40B ist eine beispielhafte Veranschaulichung einer Client-Server-Architektur 4032 zum Erweitern von Annotationswerkzeugen mit vorab trainierten Annotationsmodellen gemäß mindestens einer Ausführungsform. In mindestens einer Ausführungsform können die Kl-gestützten Annotationswerkzeuge 4036 auf Grundlage einer Client-Server-Architektur 4032 instanziiert werden. In mindestens einer Ausführungsform können die Annotationswerkzeuge 4036 in Bildgebungsanwendungen zum Beispiel Radiologen beim Identifizieren von Organen und Auffälligkeiten unterstützen. In mindestens einer Ausführungsform können Bildgebungsanwendungen Software-Werkzeuge beinhalten, die dem Benutzer 4010 dabei helfen, als nicht einschränkendes Beispiel einige Extrempunkte an einem konkreten Organ von Interesse auf Rohbildern 4034 (z.B. auf einem 3D-MRT- oder CT-Scan) zu identifizieren und automatisch annotierte Ergebnisse für alle 2D-Scheiben eines konkreten Organs zu empfangen. In mindestens einer Ausführungsform können die Ergebnisse in einem Datenspeicher als Trainingsdaten 4038 gespeichert und als (zum Beispiel und ohne Einschränkung) Ground-Truth-Daten für das Training verwendet werden. In mindestens einer Ausführungsform kann, wenn die Rechenvorrichtung 4008 Extrempunkte für die KI-gestützte Annotation 3610 sendet, ein Deep-Learning-Modell diese Daten zum Beispiel als Eingabe empfangen und Inferenzergebnisse eines segmentierten Organs oder einer Auffälligkeit zurückgeben. In mindestens einer Ausführungsform können vorab instanziierte Annotationswerkzeuge, wie etwa das Kl-gestützte Annotationswerkzeug 4036B in 40B, durch Vornehmen von API-Aufrufen (z.B. API-Aufruf 4044) an einen Server, wie etwa einen Annotationsassistenzserver 4040, erweitert werden, der einen Satz von vorab trainierten Modellen 4042 beinhalten kann, der zum Beispiel in einer Annotationsmodellregistrierungsdatenbank gespeichert ist. In mindestens einer Ausführungsform kann eine Annotationsmodellregistrierungsdatenbank vorab trainierte Modelle 4042 (z.B. Modelle des maschinellen Lernens, wie etwa Deep-Learning-Modelle) speichern, die vorab trainiert sind, um eine KI-gestützte Annotation an einem konkreten Organ oder einer Auffälligkeit durchzuführen. In mindestens einer Ausführungsform können diese Modelle durch Verwenden von Trainingspipelines 3704 weiter aktualisiert werden. In mindestens einer Ausführungsform können vorab installierte Annotationswerkzeuge im Verlauf der Zeit verbessert werden, wenn neue beschriftete Klinikdaten 3612 hinzugefügt werden.
  • Die Inferenz- und/oder Trainingslogik 715 wird verwendet, um Inferenzierungs- und/oder Trainingsoperationen durchzuführen, die mit einer oder mehreren Ausführungsformen assoziiert sind. Details bezüglich der Inferenz- und/oder Trainingslogik 715 sind hierin in Verbindung mit 7A und/oder 7B bereitgestellt.
  • In mindestens einer Ausführungsform können solche Komponenten zum Trainieren eines Netzwerks oder zum Durchführen von Inferenzierung unter Verwendung eines solchen trainierten Netzwerks verwendet werden, wie vorstehend erörtert, beispielsweise in Bezug auf ein System von 1 oder 2 oder Prozesse von 4 oder 5. In mindestens einer Ausführungsform kann dies die Verwendung eines oder mehrerer erster neuronaler Netzwerke umfassen, um zu bewirken, dass ein Lichteffekt auf ein oder mehrere Objekte in einem oder mehreren Bildern angewendet wird, die zumindest teilweise auf synthetisch erzeugten Bildern des einen oder der mehreren Objekte basieren.
  • Mindestens eine Ausführungsform der Offenbarung kann mit Blick auf die folgenden Sätze beschrieben werden.
    1. 1. Prozessor, umfassend:
      • eine oder mehrere Schaltungen, um ein oder mehrere neuronale Netzwerke zu verwenden, um zu bewirken, dass ein Lichteffekt auf ein oder mehrere Objekte in einem oder mehreren Bildern angewendet wird, die zumindest teilweise auf synthetisch erzeugten Bildern des einen oder der mehreren Objekte basieren.
    2. 2. Prozessor nach Anspruch 1, wobei die eine oder die mehreren Schaltungen das eine oder die mehreren neuronalen Netzwerke unter Verwendung der synthetisch erzeugten Bilder trainieren und ferner nur einen Abschnitt des einen oder der mehreren neuronalen Netzwerke unter Verwendung von aufgenommenen Bildern eines oder mehrerer physischer Objekte trainieren.
    3. 3. Prozessor nach Anspruch 2, wobei die eine oder die mehreren Schaltungen ferner bewirken, dass das eine oder die mehreren neuronalen Netzwerke zum Vorhersagen einer Geometrie und einer Reflektivität des einen oder der mehreren Objekte unter Verwendung der synthetisch erzeugten Bilder trainiert werden.
    4. 4. Prozessor nach Anspruch 3, wobei die eine oder die mehreren Schaltungen ferner bewirken, dass der Abschnitt des einen oder der mehreren neuronalen Netzwerke ferner zum Vorhersagen der Reflektivität des einen oder der mehreren Objekte unter Verwendung der aufgenommenen Bilder des einen oder der mehreren physischen Objekte trainiert wird.
    5. 5. Prozessor nach Anspruch 1, wobei die eine oder die mehreren Schaltungen ferner das eine oder die mehreren neuronalen Netzwerke unter Verwendung einer Verlustfunktion trainieren, die mindestens einen One-Light-at-a-Time-(OLAT-)Konsistenzverlustterm und einen relativen Konsistenzverlustterm beinhaltet.
    6. 6. Prozessor nach Anspruch 1, wobei das eine oder die mehreren Bilder Einzelbilder einer Videosequenz sind und wobei das eine oder die mehreren neuronalen Netzwerke ein oder mehrere neuronale Restnetzwerke beinhalten, um zeitliche Stabilität zwischen den Einzelbildern bereitzustellen.
    7. 7. System, umfassend:
      • einen oder mehrere Prozessoren, um ein oder mehrere neuronale Netzwerke zu verwenden, um zu bewirken, dass ein Lichteffekt auf ein oder mehrere Objekte in einem oder mehreren Bildern angewendet wird, die zumindest teilweise auf synthetisch erzeugten Bildern des einen oder der mehreren Objekte basieren.
    8. 8. System nach Anspruch 7, wobei der eine oder die mehreren Prozessoren das eine oder die mehreren neuronalen Netzwerke unter Verwendung der synthetisch erzeugten Bilder trainieren und ferner nur einen Abschnitt des einen oder der mehreren neuronalen Netzwerke unter Verwendung von aufgenommenen Bildern eines oder mehrerer physischer Objekte trainieren.
    9. 9. System nach Anspruch 8, wobei der eine oder die mehreren Prozessoren ferner bewirken, dass das eine oder die mehreren neuronalen Netzwerke zum Vorhersagen einer Geometrie und einer Reflektivität des einen oder der mehreren Objekte unter Verwendung der synthetisch erzeugten Bilder trainiert werden.
    10. 10. System nach Anspruch 9, wobei der eine oder die mehreren Prozessoren ferner bewirken, dass der Abschnitt des einen oder der mehreren neuronalen Netzwerke ferner zum Vorhersagen der Reflektivität des einen oder der mehreren Objekte unter Verwendung der aufgenommenen Bilder des einen oder der mehreren physischen Objekte trainiert wird.
    11. 11. System nach Anspruch 7, wobei der eine oder die mehreren Prozessoren ferner das eine oder die mehreren neuronalen Netzwerke unter Verwendung einer Verlustfunktion trainieren, die mindestens einen One-Light-at-a-Time-(OLAT-)Konsistenzverlustterm und einen relativen Konsistenzverlustterm beinhaltet.
    12. 12. System nach Anspruch 7, wobei das eine oder die mehreren Bilder Einzelbilder einer Videosequenz sind und wobei das eine oder die mehreren neuronalen Netzwerke ein oder mehrere neuronale Restnetzwerke beinhalten, um zeitliche Stabilität zwischen den Einzelbildern bereitzustellen.
    13. 13. Verfahren, umfassend:
      • Verwenden eines oder mehrerer neuronaler Netzwerke, um zu bewirken, dass ein Lichteffekt auf ein oder mehrere Objekte in einem oder mehreren Bildern angewendet wird, die zumindest teilweise auf synthetisch erzeugten Bildern des einen oder der mehreren Objekte basieren.
    14. 14. Verfahren nach Anspruch 13, ferner umfassend:
      • Trainieren des einen oder der mehreren neuronalen Netzwerke unter Verwendung der synthetisch erzeugten Bilder und ferner Trainieren nur eines Abschnitts des einen oder der mehreren neuronalen Netzwerke unter Verwendung der aufgenommenen Bilder eines oder mehrerer physischer Objekte.
    15. 15. Verfahren nach Anspruch 14, ferner umfassend:
      • Bewirken, dass das eine oder die mehreren neuronalen Netzwerke zum Vorhersagen einer Geometrie und einer Reflektivität des einen oder der mehreren Objekte unter Verwendung der synthetisch erzeugten Bilder trainiert werden.
    16. 16. Verfahren nach Anspruch 15, ferner umfassend:
      • Bewirken, dass der Abschnitt des einen oder der mehreren neuronalen Netzwerke ferner zum Vorhersagen der Reflektivität des einen oder der mehreren Objekte unter Verwendung der aufgenommenen Bilder des einen oder der mehreren physischen Objekte trainiert wird.
    17. 17. Verfahren nach Anspruch 13, ferner umfassend:
      • Trainieren des einen oder der mehreren neuronalen Netzwerke unter Verwendung einer Verlustfunktion, die mindestens einen One-Light-at-a-Time-(OLAT-)Konsistenzverlustterm und einen relativen Konsistenzverlustterm beinhaltet.
    18. 18. Verfahren nach Anspruch 13, wobei das eine oder die mehreren Bilder Einzelbilder einer Videosequenz sind und wobei das eine oder die mehreren neuronalen Netzwerke ein oder mehrere neuronale Restnetzwerke beinhalten, um zeitliche Stabilität zwischen den Einzelbildern bereitzustellen.
    19. 19. Maschinenlesbares Medium, das einen darauf gespeicherten Satz von Anweisungen aufweist, der bei Ausführung durch einen oder mehrere Prozessoren den einen oder die mehreren Prozessoren mindestens veranlasst zum:
      • Verwenden eines oder mehrerer neuronaler Netzwerke, um zu bewirken, dass ein Lichteffekt auf ein oder mehrere Objekte in einem oder mehreren Bildern angewendet wird, die zumindest teilweise auf synthetisch erzeugten Bildern des einen oder der mehreren Objekte basieren.
    20. 20. Maschinenlesbares Medium nach Anspruch 19, wobei die Anweisungen bei Ausführung den einen oder die mehreren Prozessoren ferner veranlassen zum:
      • Trainieren des einen oder der mehreren neuronalen Netzwerke unter Verwendung der synthetisch erzeugten Bilder und ferner Trainieren nur eines Abschnitts des einen oder der mehreren neuronalen Netzwerke unter Verwendung der aufgenommenen Bilder eines oder mehrerer physischer Objekte.
    21. 21. Maschinenlesbares Medium nach Anspruch 20, wobei die Anweisungen bei Ausführung den einen oder die mehreren Prozessoren ferner veranlassen zum:
      • Bewirken, dass das eine oder die mehreren neuronalen Netzwerke zum Vorhersagen einer Geometrie und einer Reflektivität des einen oder der mehreren Objekte unter Verwendung der synthetisch erzeugten Bilder trainiert werden.
    22. 22. Maschinenlesbares Medium nach Anspruch 21, wobei die Anweisungen bei Durchführung den einen oder die mehreren Prozessoren ferner veranlassen zum:
      • Bewirken, dass der Abschnitt des einen oder der mehreren neuronalen Netzwerke ferner zum Vorhersagen der Reflektivität des einen oder der mehreren Objekte unter Verwendung der aufgenommenen Bilder des einen oder der mehreren physischen Objekte trainiert wird.
    23. 23. Maschinenlesbares Medium nach Anspruch 19, wobei der eine oder die mehreren Prozessoren ferner dienen zum:
      • Trainieren des einen oder der mehreren neuronalen Netzwerke unter Verwendung einer Verlustfunktion, die mindestens einen One-Light-at-a-Time-(OLAT-)Konsistenzverlustterm und einen relativen Konsistenzverlustterm beinhaltet.
    24. 24. Maschinenlesbares Medium nach Anspruch 19, wobei das eine oder die mehreren Bilder Einzelbilder einer Videosequenz sind und wobei das eine oder die mehreren neuronalen Netzwerke ein oder mehrere neuronale Restnetzwerke beinhalten, um zeitliche Stabilität zwischen den Einzelbildern bereitzustellen.
    25. 25. Bildzeugungssystem, umfassend:
      • einen oder mehrere Prozessoren, um ein oder mehrere neuronale Netzwerke zu verwenden, um zu bewirken, dass ein Lichteffekt auf ein oder mehrere Objekte in einem oder mehreren Bildern angewendet wird, die zumindest teilweise auf synthetisch erzeugten Bildern des einen oder der mehreren Objekte basieren; und
      • Speicher zum Speichern von Netzwerkparametern für das eine oder die mehreren neuronalen Netzwerke.
    26. 26. Bilderzeugungssystem nach Anspruch 25, wobei der eine oder die mehreren Prozessoren das eine oder die mehreren neuronalen Netzwerke unter Verwendung der synthetisch erzeugten Bilder trainieren und ferner nur einen Abschnitt des einen oder der mehreren neuronalen Netzwerke unter Verwendung von aufgenommenen Bildern eines oder mehrerer physischer Objekte trainieren.
    27. 27. Bilderzeugungssystem nach Anspruch 26, wobei der eine oder die mehreren Prozessoren ferner bewirken, dass das eine oder die mehreren neuronalen Netzwerke zum Vorhersagen einer Geometrie und einer Reflektivität des einen oder der mehreren Objekte unter Verwendung der synthetisch erzeugten Bilder trainiert werden.
    28. 28. Bilderzeugungssystem nach Anspruch 27, wobei der eine oder die mehreren Prozessoren ferner bewirken, dass der Abschnitt des einen oder der mehreren neuronalen Netzwerke ferner zum Vorhersagen der Reflektivität des einen oder der mehreren Objekte unter Verwendung der aufgenommenen Bilder des einen oder der mehreren physischen Objekte trainiert wird.
    29. 29. Bilderzeugungssystem nach Anspruch 25, wobei der eine oder die mehreren Prozessoren ferner das eine oder die mehreren neuronalen Netzwerke unter Verwendung einer Verlustfunktion trainieren, die mindestens einen One-Light-at-a-Time-(OLAT-)Konsistenzverlustterm und einen relativen Konsistenzverlustterm beinhaltet.
    30. 30. Bilderzeugungssystem nach Anspruch 25, wobei das eine oder die mehreren Bilder Einzelbilder einer Videosequenz sind und wobei das eine oder die mehreren neuronalen Netzwerke ein oder mehrere neuronale Restnetzwerke beinhalten, um zeitliche Stabilität zwischen den Einzelbildern bereitzustellen.
  • In mindestens einer Ausführungsform kann sich eine einzelne Halbleiterplattform auf eine einzige einheitliche halbleiterbasierte integrierte Schaltung oder einen solchen Chip beziehen. In mindestens einer Ausführungsform können Multi-Chip-Module mit erhöhter Verbindungsfähigkeit verwendet werden, die den chipinternen Betrieb simulieren und wesentliche Verbesserungen gegenüber der Nutzung einer herkömmlichen Implementation mit einer zentralen Verarbeitungseinheit („CPU“) und einem Bus bieten. In mindestens einer Ausführungsform können verschiedene Module je nach Wunsch des Benutzers auch separat oder in verschiedenen Kombinationen von Halbleiterplattformen untergebracht sein.
  • In mindestens einer Ausführungsform, unter erneuter Bezugnahme auf 13, sind Computerprogramme in Form von maschinenlesbarem ausführbarem Code oder Computersteuerlogik-Algorithmen in dem Hauptspeicher 1304 und/oder Sekundärspeicher gespeichert. Falls sie durch einen oder mehrere Prozessoren ausgeführt werden, ermöglichen es Computerprogramme dem System 1300, verschiedene Funktionen gemäß mindestens einer Ausführungsform durchzuführen. In mindestens einer Ausführungsform sind Arbeitsspeicher 1304, Datenspeiche und/oder beliebiger anderer Speicher mögliche Beispiele für computerlesbare Medien. In mindestens einer Ausführungsform kann sich der Sekundärspeicher auf ein(e) beliebige(s) geeignete(s) Speichervorrichtung oder -system beziehen, wie etwa 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. darstellt. In mindestens einer Ausführungsform werden die Architektur und/oder die Funktionalität verschiedener vorheriger Figuren im Kontext der CPU 1302, des Parallelverarbeitungssystems 1312, einer integrierten Schaltung, die mindestens zu einem Teil der Fähigkeiten sowohl der CPU 1302 als auch des Parallelverarbeitungssystems 1312 in der Lage ist, eines Chipsatzes (z.B. einer Gruppe integrierter Schaltungen, die so ausgestaltet ist, dass sie als Einheit zum Durchführen verwandter Funktionen arbeitet und verkauft wird, usw.) und/oder einer beliebigen geeigneten Kombination integrierter Schaltung(en) implementiert.
  • In mindestens einer Ausführungsform werden die Architektur und/oder Funktionalität verschiedener vorhergehender Figuren im Kontext eines allgemeinen Computersystems, eines Leiterplattensystems, eines für Unterhaltungszwecke dedizierten Spielekonsolensystems, eines anwendungsspezifischen Systems und mehr implementiert. In mindestens einer Ausführungsform kann das Computersystem 1300 die Form eines Desktop-Computers, eines Laptop-Computers, eines Tablet-Computers, von Servern, von Supercomputern, eines Smartphones (z.B. einer drahtlosen tragbaren Vorrichtung), eines persönlichen digitalen Assistenten („PDA“), einer Digitalkamera, eines Fahrzeugs, einer am Kopf befestigten Anzeige, einer tragbaren elektronischen Vorrichtung, einer Mobiltelefonvorrichtung, eines Fernsehgeräts, einer Arbeitsstation, von Spielekonsolen, eines eingebetteten Systems und/oder eines beliebigen anderen Typs von Logik annehmen.
  • In mindestens einer Ausführungsform beinhaltet das Parallelverarbeitungssystem 1312 ohne Einschränkung eine Vielzahl von Parallelverarbeitungseinheiten („PPUs“) 1314 und damit assoziierte Speicher 1316. In mindestens einer Ausführungsform sind die PPUs 1314 über eine Zusammenschaltung 1318 und einen Switch 1320 oder Multiplexer mit einem Host-Prozessor oder anderen Peripherievorrichtungen verbunden. In mindestens einer Ausführungsform verteilt das Parallelverarbeitungssystem 1312 Rechen-Tasks auf PPUs 1314, die parallelisierbar sein können - zum Beispiel als Teil der Verteilung von Rechen-Tasks auf mehrere Thread-Blöcke einer Grafikverarbeitungseinheit („GPU“). In mindestens einer Ausführungsform wird der Speicher von einigen oder allen PPUs 1314 gemeinsam genutzt und ist er für diese zugänglich (z.B. für Lese- und/oder Schreibzugriff), obwohl ein derartiger gemeinsam genutzter Speicher Einbußen bei der Rechenleistung in Bezug auf die Verwendung von lokalem Speicher und Registern, die in einer PPU 1314 resident sind, mit sich bringen kann. In mindestens einer Ausführungsform wird der Betrieb der PPUs 1314 durch Verwendung eines Befehls wie etwa _syncthreads() synchronisiert, wobei alle Threads in einem Block (z.B. über mehrere PPUs 1314 hinweg ausgeführt) einen bestimmten Punkt der Codeausführung erreichen müssen, bevor sie fortfahren.
  • In mindestens einer Ausführungsform verwenden eine oder mehrere hier beschriebene Verfahren ein oneAPI-Programmiermodell. Bei mindestens einer Ausführungsform bezieht sich ein oneAPI-Programmiermodell auf ein Programmiermodell für die Interaktion mit verschiedenen Compute Accelerator-Architekturen. Bei mindestens einer Ausführungsform bezieht sich oneAPI auf eine Anwendungsprogrammierschnittstelle (API), die für die Interaktion mit verschiedenen Compute Accelerator-Architekturen entwickelt wurde. Bei mindestens einer Ausführungsform verwendet ein oneAPI-Programmiermodell die Programmiersprache DPC++. Bei mindestens einer Ausführungsform bezieht sich eine DPC++-Programmiersprache auf eine Hochsprache für eine produktive datenparallele Programmierung. Bei mindestens einer Ausführungsform basiert eine DPC++-Programmiersprache zumindest teilweise auf den Programmiersprachen C und/oder C++. Bei mindestens einer Ausführungsform handelt es sich bei einem oneAPI-Programmiermodell um ein Programmiermodell, wie es von der Intel Corporation in Santa Clara, CA, entwickelt wurde.
  • Bei mindestens einer Ausführungsform wird oneAP) und/oder das oneAPI-Programmiermodell verwendet, um mit verschiedenen Architekturen von Beschleunigern, GPUs, Prozessoren und/oder Variationen davon zu interagieren. Bei mindestens einer Ausführungsform weist oneAPI eine Reihe von Bibliotheken auf, die verschiedene Funktionalitäten implementieren. Bei mindestens einer Ausführungsform weist oneAPI mindestens eine oneAPI-DPC++-Bibliothek, eine oneAPI-Mathe-Kernel-Bibliothek, eine oneAPI-Datenanalyse-Bibliothek, eine oneAPI-Bibliothek für tiefe neuronale Netzwerke, eine oneAPI-Bibliothek für kollektive Kommunikation, eine oneAPI-Bibliothek für Threading-Bausteine, eine oneAPI-Bibliothek für Videoverarbeitung und/oder Variationen davon auf.
  • Bei mindestens einer Ausführungsform ist eine oneAPI-DPC++-Bibliothek, die auch als oneDPL bezeichnet wird, eine Bibliothek, die Algorithmen und Funktionen zur Beschleunigung der DPC++ Kernel-Programmierung implementiert. Bei mindestens einer Ausführungsform implementiert oneDPL eine oder mehrere Funktionen der Standard Template Library (STL). Bei mindestens einer Ausführungsform implementiert oneDPL eine oder mehrere parallele STL-Funktionen. Bei mindestens einer Ausführungsform bietet oneDPL eine Reihe von Bibliotheksklassen und -funktionen wie parallele Algorithmen, Iteratoren, Funktionsobjektklassen, bereichsbasierte API und/oder Variationen davon. Bei mindestens einer Ausführungsform implementiert oneDPL eine oder mehrere Klassen und/oder Funktionen einer C++ Standardbibliothek. Bei mindestens einer Ausführungsform implementiert oneDPL eine oder mehrere Zufallszahlengeneratorfunktionen.
  • Bei mindestens einer Ausführungsform handelt es sich bei einer oneAPI-Math-Kernel-Library, auch oneMKL genannt, um eine Bibliothek, die verschiedene optimierte und parallelisierte Routinen für verschiedene mathematische Funktionen und/oder Operationen implementiert. Bei mindestens einer Ausführungsform implementiert oneMKL ein oder mehrere BLAS (Basic Linear Algebra Subprograms) und/oder LAPACK (Linear Algebra Package) dichte lineare Algebra-Routinen. Bei mindestens einer Ausführungsform implementiert oneMKL eine oder mehrere dünn besetzte BLAS-Routinen für lineare Algebra. Bei mindestens einer Ausführungsform implementiert oneMKL einen oder mehrere Zufallszahlengeneratoren (RNGs). Bei mindestens einer Ausführungsform implementiert oneMKL eine oder mehrere Vektormathematik (VM)-Routinen für mathematische Operationen auf Vektoren. Bei mindestens einer Ausführungsform implementiert oneMKL eine oder mehrere Fast-Fourier-Transformations- (FFT-) Funktionen.
  • Bei mindestens einer Ausführungsform ist eine oneAPI-Daten-Analyse-Library, auch oneDAL genannt, eine Bibliothek, die verschiedene Datenanalyseanwendungen und verteilte Berechnungen implementiert. Bei mindestens einer Ausführungsform implementiert oneDAL verschiedene Algorithmen für die Vorverarbeitung, Transformation, Analyse, Modellierung, Validierung und Entscheidungsfindung für die Datenanalyse in Batch-, Online- und verteilten Verarbeitungsmodi einer Berechnung. Bei mindestens einer Ausführungsform implementiert oneDAL verschiedene C++- und/oder Java-APIs und verschiedene Konnektoren zu einer oder mehreren Datenquellen. Bei mindestens einer Ausführungsform implementiert oneDAL DPC++-API-Erweiterungen zu einer traditionellen C++-Schnittstelle und ermöglicht die Nutzung von GPUs für verschiedene Algorithmen.
  • Bei mindestens einer Ausführungsform ist eine oneAPI-Bibliothek für tiefe neuronale Netzwerke, die auch als oneDNN bezeichnet wird, eine Bibliothek, die verschiedene Funktionen für tiefes Lernen implementiert. Bei mindestens einer Ausführungsform implementiert oneDNN verschiedene Funktionen Algorithmen und/oder Variationen davon für neuronale Netzwerke, maschinelles Lernen und Deep-Learning.
  • Bei mindestens einer Ausführungsform ist eine kollektive oneAPl-Kommunikationsbibliothek, auch oneCCL genannt, eine Bibliothek, die verschiedene Anwendungen für Deep Learning und maschinelles Lernen implementiert. Bei mindestens einer Ausführungsform baut oneCCL auf Kommunikations-Middleware der unteren Ebene auf, wie z.B. Message Passing Interface (MPI) und libfabrics. Bei mindestens einer Ausführungsform ermöglicht oneCCL eine Reihe von Deep-Learning-spezifischen Optimierungen, wie z.B. Priorisierung, persistente Operationen, Ausführung außerhalb der Reihenfolge und/oder Variationen davon. Bei mindestens einer Ausführungsform implementiert oneCCL verschiedene CPU- und GPU-Funktionen.
  • Bei mindestens einer Ausführungsform ist eine oneAPl-Threading-Building-Blocks-Bibliothek, auch oneTBB genannt, eine Bibliothek, die verschiedene parallelisierte Prozesse für verschiedene Anwendungen implementiert. Bei mindestens einer Ausführungsform wird oneTBB für eine Task-basierte, gemeinsame parallele Programmierung auf einem Host verwendet. Bei mindestens einer Ausführungsform implementiert oneTBB generische parallele Algorithmen. Bei mindestens einer Ausführungsform implementiert oneTBB nebenläufige Container. Bei mindestens einer Ausführungsform implementiert oneTBB einen skalierbaren Speicherallokator. Bei mindestens einer Ausführungsform implementiert oneTBB einen Work-Stealing-Task-Scheduler. Bei mindestens einer Ausführungsform implementiert oneTBB Low-Level-Synchronisationsprimitive. Bei mindestens einer Ausführungsform ist oneTBB compilerunabhängig und auf verschiedenen Prozessoren wie GPUs, PPUs, CPUs und/oder Variationen davon verwendbar.
  • Bei mindestens einer Ausführungsform ist eine oneAPl-Videoverarbeitungsbibliothek, die auch als oneVPL bezeichnet wird, eine Bibliothek, die zur Beschleunigung der Videoverarbeitung in einer oder mehreren Anwendungen verwendet wird. Bei mindestens einer Ausführungsform implementiert oneVPL verschiedene Funktionen zur Videodekodierung, -kodierung und -verarbeitung. Bei mindestens einer Ausführungsform implementiert oneVPL verschiedene Funktionen für Medien-Pipelines auf CPUs, GPUs und anderen Beschleunigern. Bei mindestens einer Ausführungsform implementiert oneVPL die Erkennung und Auswahl von Einrichtungen bei medienzentrierten und videoanalytischen Arbeitsbelastungen. Bei mindestens einer Ausführungsform implementiert oneVPL API-Primitive für die gemeinsame Nutzung von Zero-Copy-Puffern.
  • Bei mindestens einer Ausführungsform verwendet ein oneAPI-Programmiermodell eine DPC++-Programmiersprache. Bei mindestens einer Ausführungsform ist eine DPC++-Programmiersprache eine Programmiersprache, die ohne Einschränkung funktional ähnliche Versionen von CUDA-Mechanismen aufweist, um Gerätecode zu definieren und zwischen Gerätecode und Hostcode zu unterscheiden. Bei mindestens einer Ausführungsform kann eine DPC++-Programmiersprache eine Teilmenge der Funktionalität einer CUDA-Programmiersprache aufweisen. In mindestens einer Ausführungsform werden eine oder mehrere Operationen des CUDA-Programmiermodells unter Verwendung eines oneAPI-Programmiermodells mit einer DPC++-Programmiersprache durchgeführt.
  • In mindestens einer Ausführungsform wird jede hierin beschriebene Anwendungsprogrammierschnittstelle (API) von einem Compiler, Interpreter oder einem anderen Softwaretool in eine oder mehrere Anweisungen, Operationen oder ein anderes Signal kompiliert. In mindestens einer Ausführungsform umfasst die Kompilierung das Erzeugen einer oder mehrerer maschinenausführbarer Anweisungen, Operationen oder anderer Signale aus dem Quellcode. In mindestens einer Ausführungsform veranlasst eine in eine oder mehrere Anweisungen, Operationen oder andere Signale kompilierte API bei Durchführung einen oder mehrere Prozessoren, wie etwa die Grafikprozessoren 2800, die Grafikkerne 1800, den Parallelprozessor 2000, den Prozessor 2300, den Prozessorkern 2300 oder jede beliebige andere Logikschaltung, die ferner hierin beschrieben wird, zum Durchführen einer oder mehrerer Rechenoperationen.
  • Es ist zu beachten, dass sich die hier beschriebenen Ausführungsformen zwar auf ein CUDA-Programmiermodell beziehen, die hier beschriebenen Verfahren jedoch mit jedem geeigneten Programmiermodell, wie HIP, oneAPI und/oder Variationen davon, verwendet werden können.
  • Andere Variationen liegen innerhalb des Geistes der vorliegenden Offenbarung. Somit können zwar bezüglich der offenbarten Verfahren diverse Modifikationen und alternative Konstruktionen vorgenommen werden, bestimmte veranschaulichte Ausführungsformen davon werden jedoch in den Zeichnungen gezeigt und wurden vorangehend ausführlich beschrieben. Allerdings versteht es sich, dass nicht die Absicht verfolgt wird, die Offenbarung auf die spezifische(n) offenbarte(n) Form oder Formen einzuschränken, sondern die Absicht ganz im Gegenteil darin besteht, sämtliche Modifikationen, alternativen Konstruktionen und Äquivalente abzudecken, die in den Geist und Umfang der wie in den beigefügten Ansprüchen definierten Offenbarung fallen.
  • Die Verwendung der Ausdrücke „ein“ und „eine“ und „der/die/das“ und ähnlicher Referenten im Kontext des Beschreibens offenbarter Ausführungsformen (insbesondere im Kontext der folgenden Ansprüche) ist so auszulegen, dass sie sowohl den Singular als auch den Plural abdeckt, sofern hierin nichts anderes angegeben ist oder der Kontext dem eindeutig widerspricht, und nicht als Definition eines Ausdrucks. Die Ausdrücke „umfassend“, „aufweisend“, „beinhaltend“ und „enthaltend“ sind als offene Ausdrücke auszulegen (die „einschließlich, aber nicht beschränkt auf“ bedeuten), sofern nicht anderweitig angemerkt. Wenn es unmodifiziert vorliegt und sich auf physische Verbindungen bezieht, ist „verbunden“ als teilweise oder vollständig ineinander enthalten, aneinander angebracht oder aneinander angefügt auszulegen, auch wenn ein Element dazwischenliegt. Die Nennung von Wertebereichen hierin soll lediglich als kurzes Verfahren zur einzelnen Bezugnahme auf jeden separaten Wert dienen, der in den Bereich fällt, es sei denn, hierin ist etwas anderes angegeben, und jeder separate Wert ist in die Beschreibung eingeschlossen, als ob er einzeln hierin wiedergegeben wäre. In mindestens einer Ausführungsform ist die Verwendung des Ausdrucks „Satz“ bzw. „Menge“ (z.B. „ein Satz bzw. eine Menge von Gegenständen“) oder „Teilmenge“ als eine nicht leere Sammlung auszulegen, die ein oder mehrere Elemente umfasst, es sei denn, es ist etwas anderes angemerkt oder der Kontext widerspricht dem. Sofern nichts anderes angegeben ist oder der Kontext dem nicht widerspricht, bezeichnet ferner der Ausdruck „Teilmenge“ eines entsprechenden Satzes nicht notwendigerweise eine richtige Teilmenge des entsprechenden Satzes, sondern die Teilmenge und der entsprechende Satz können gleich sein.
  • Sofern nicht spezifisch etwas anderes genannt ist oder der Kontext dem eindeutig widerspricht, ist verbindende Sprache, wie etwa Formulierungen der Form „wenigstens eines von A, B und C“ oder „mindestens eines von A, B und C“, andernfalls in dem Kontext zu verstehen, in dem sie allgemein verwendet werden, um darzustellen, dass ein Gegenstand, ein Ausdruck usw. entweder A oder B oder C oder eine beliebige nicht leere Teilmenge des Satzes aus A und B und C sein kann. Zum Beispiel beziehen sich in dem veranschaulichenden Beispiel für einen Satz, der drei Elemente aufweist, die verbindenden Formulierungen „wenigstens eines von A, B und C“ und „mindestens eines von A, B und C“ auf einen beliebigen der folgenden Sätze: {A}, {B}, {C}, {A, B}, {A, C}, {B, C}, {A, B, C}. Somit soll derartige verbindende Sprache im Allgemeinen nicht implizieren, dass bestimmte Ausführungen es erforderlich machen, dass mindestens eines von A, mindestens eines von B und mindestens eines von C vorhanden ist. Sofern nichts anderes angemerkt ist oder der Kontext dem nicht widerspricht, gibt der Ausdruck „Vielzahl“ einen Zustand der Pluralität an (z.B. gibt „eine Vielzahl von Gegenständen“ mehrere Gegenstände an). In mindestens einer Ausführungsform beträgt die Anzahl der Gegenstände in einer Vielzahl mindestens zwei, es können aber auch mehr sein, wenn dies entweder explizit oder durch den Kontext angegeben ist. Sofern nichts anderes angegeben oder anderweitig aus dem Kontext ersichtlich ist, bedeutet die Formulierung „auf Grundlage von“ „mindestens zum Teil auf Grundlage von“ und nicht „ausschließlich auf Grundlage von“.
  • Hierin beschriebene Vorgänge von Prozessen können in einer beliebigen geeigneten Reihenfolge durchgeführt werden, sofern es hierin nicht anders angegeben ist oder der Kontext dem anderweitig eindeutig widerspricht. In mindestens einer Ausführungsform wird ein Prozess, wie etwa die hierin beschriebenen Prozesse (oder Variationen und/oder Kombinationen davon), unter der Steuerung von einem oder mehreren Computersystemen durchgeführt, die mit ausführbaren Anweisungen konfiguriert sind, und er ist als Code (z.B. ausführbare Anweisungen, ein oder mehrere Computerprogramme oder eine oder mehrere Anwendungen), der zusammen auf einem oder mehreren Prozessoren ausgeführt wird, durch Hardware oder Kombinationen davon implementiert. In mindestens einer Ausführungsform ist Code auf einem computerlesbaren Speichermedium gespeichert, zum Beispiel in Form eines Computerprogramms, das eine Vielzahl von Anweisungen umfasst, die durch einen oder mehrere Prozessoren ausgeführt werden können. In mindestens einer Ausführungsform ist ein computerlesbares Speichermedium ein nichttransitorisches computerlesbares Speichermedium, das transitorische Signale (z.B. eine sich ausbreitende transiente elektrische oder elektromagnetische Übertragung) ausschließt, aber nichttransitorische Datenspeicherschaltungen (z.B. Puffer, Cache und Warteschlangen) innerhalb von Sendeempfängern von transitorischen Signalen einschließt. In mindestens einer Ausführungsform ist der Code (z.B. ausführbarer Code oder Quellcode) auf einem Satz von einem oder mehreren nichttransitorischen computerlesbaren Speichermedien gespeichert, auf denen ausführbare Anweisungen gespeichert sind (oder einem anderen Speicher zum Speichern ausführbarer Anweisungen), die bei Ausführung (d. h. als Ergebnis der Ausführung) durch einen oder mehrere Prozessoren eines Computersystems das Computersystem dazu veranlassen, hierin beschriebene Operationen durchzuführen. Ein Satz von nichttransitorischen computerlesbaren Speichermedien umfasst in mindestens einer Ausführungsform mehrere nichttransitorische computerlesbare Speichermedien und einem oder mehreren der einzelnen nichttransitorischen Speichermedien mehrerer nichttransitorischer computerlesbarer Speichermedien fehlt der gesamte Code, während mehrere nichttransitorische computerlesbare Speichermedien zusammen den gesamten Code speichern. In mindestens einer Ausführungsform werden ausführbare Anweisungen so ausgeführt, dass verschiedene Anweisungen von verschiedenen Prozessoren ausgeführt werden — zum Beispiel speichert ein nichtflüchtiges computerlesbares Speichermedium Anweisungen und eine zentrale Verarbeitungseinheit („CPU“) führt einige der Anweisungen aus, während eine Grafikverarbeitungseinheit („GPU“) andere Anweisungen ausführt. In mindestens einer Ausführungsform weisen unterschiedliche Komponenten eines Computersystems separate Prozessoren auf und unterschiedliche Prozessoren führen unterschiedliche Teilmengen von Anweisungen aus.
  • In mindestens einer Ausführungsform handelt es sich bei einer arithmetische Logikeinheit um einen Satz kombinatorischer Logikschaltungen, die eine oder mehrere Eingaben benötigen, um ein Ergebnis zu erzeugen. In mindestens einer Ausführungsform wird eine arithmetische Logikeinheit von einem Prozessor verwendet, um mathematische Operationen wie Addition, Subtraktion oder Multiplikation durchzuführen. In mindestens einer Ausführungsform wird eine arithmetische Logikeinheit verwendet, um logische Operationen wie logisches UND/ODER oder XOR zu implementieren. In mindestens einer Ausführungsform ist eine arithmetische Logikeinheit zustandslos und besteht aus physischen Schaltkomponenten wie etwa Halbleitertransistoren, die so angeordnet sind, dass sie logische Gatter bilden. In mindestens einer Ausführungsform kann eine arithmetische Logikeinheit intern als zustandsbehaftete Logikschaltung mit einem zugehörigen Takt arbeiten. In mindestens einer Ausführungsform kann eine arithmetische Logikeinheit als asynchrone Logikschaltung mit einem internen Zustand aufgebaut sein, der nicht in einem zugehörigen Registersatz aufrechterhalten wird. In mindestens einer Ausführungsform wird eine arithmetische Logikeinheit von einem Prozessor verwendet, um in einem oder mehreren Registern des Prozessors gespeicherte Operanden zu kombinieren und eine Ausgabe zu erzeugen, die vom Prozessor in einem anderen Register oder einem Speicherplatz gespeichert werden kann.
  • In mindestens einer Ausführungsform stellt der Prozessor als Ergebnis der Verarbeitung einer vom Prozessor abgerufenen Anweisung eine oder mehrere Eingaben oder Operanden für eine arithmetische Logikeinheit dar, was dazu führt, dass die arithmetische Logikeinheit ein Ergebnis erzeugt, das zumindest teilweise auf einem Anweisungscode basiert, der den Eingängen der arithmetischen Logikeinheit bereitgestellt wird. In mindestens einer Ausführungsform basieren die vom Prozessor der ALU bereitgestellten Anweisungscodes zumindest teilweise auf der vom Prozessor ausgeführten Anweisung. In mindestens einer Ausführungsform verarbeitet die kombinatorische Logik in der ALU die Eingaben und erzeugt eine Ausgabe, die auf einen Bus innerhalb des Prozessors gelegt wird. In mindestens einer Ausführungsform wählt der Prozessor ein Zielregister, einen Speicherort, eine Ausgabevorrichtung oder einen Ausgabespeicherort auf dem Ausgabebus aus, sodass das Takten des Prozessors dazu führt, dass die von der ALU erzeugten Ergebnisse an den gewünschten Ort gesendet werden.
  • Im Rahmen dieser Anmeldung wird der Begriff arithmetische Logikeinheit oder ALU für jede logische Rechenschaltung verwendet, die Operanden verarbeitet, um ein Ergebnis zu erzeugen. Im vorliegenden Dokument kann sich der Begriff ALU beispielsweise auf eine Gleitkommaeinheit, einen DSP, einen Tensorkern, einen Shaderkern, einen Coprozessor oder eine CPU beziehen.
  • Dementsprechend sind in mindestens einer Ausführungsform Computersysteme so konfiguriert, dass sie einen oder mehrere Dienste implementieren, die einzeln oder zusammen Operationen der hierin beschriebenen Prozesse durchführen, und derartige Computersysteme sind mit geeigneter Hardware und/oder Software konfiguriert, die eine Durchführung der Operationen ermöglichen. Ferner ist ein Computersystem, das mindestens eine Ausführungsform der vorliegenden Offenbarung implementiert, eine einzelne Vorrichtung und in einer anderen Ausführungsform ein verteiltes Computersystem, das mehrere Vorrichtungen umfasst, die unterschiedlich arbeiten, sodass das verteilte Computersystem die hierin beschriebenen Operationen durchführt und sodass eine einzelne Vorrichtung nicht alle Operationen durchführt.
  • Die Verwendung von Beispielen oder beispielhafter Wortwahl (z.B. „wie etwa“), die hierin bereitgestellt ist, soll lediglich die Ausführungsformen der Offenbarung besser verdeutlichen und stellt keine Einschränkung des Umfangs der Offenbarung dar, es sei denn, es ist etwas anderes beansprucht. Keinerlei Wortwahl in der Beschreibung sollte so ausgelegt werden, dass sie ein beliebiges nicht beanspruchtes Element als für die Umsetzung der Offenbarung wesentlich angibt.
  • Jegliche Referenzen, einschließlich Veröffentlichungen, Patentanmeldungen und Patenten, die hierin erwähnt werden, sind hiermit durch Bezugnahme in demselben Maße aufgenommen, als wäre jede Referenz einzeln und spezifisch als durch Referenz eingeschlossen angegeben und in ihrer Gesamtheit hierin ausgeführt.
  • In der Beschreibung und den Ansprüchen können die Begriffe „gekoppelt“ und „verbunden“ zusammen mit ihren Ableitungen verwendet werden. Es versteht sich, dass diese Ausdrücke nicht als Synonyme füreinander beabsichtigt sein können. Vielmehr kann in konkreten Beispielen „verbunden“ oder „gekoppelt“ verwendet werden, um anzugeben, dass zwei oder mehr Elemente in direktem oder indirektem physischem oder elektrischem Kontakt miteinander stehen. Mit „gekoppelt“ kann auch gemeint sein, dass zwei oder mehr Elemente nicht in direktem Kontakt miteinander stehen, jedoch trotzdem miteinander zusammenwirken oder interagieren.
  • Sofern nicht ausdrücklich anders angegeben, versteht es sich, dass sich Begriffe wie „Verarbeitung“, „Berechnung“, „Berechnen“, „Bestimmen“ oder dergleichen in der gesamten Beschreibung auf Handlungen und/oder Prozesse eines Computers oder Rechensystems oder einer ähnlichen elektronischen Rechenvorrichtung beziehen, die Daten, die als physische, z.B. elektronische, Größen in den Registern und/oder Speichern des Rechensystems dargestellt sind, manipulieren und/oder in andere Daten umwandeln, die auf ähnliche Weise als physische Größen in den Speichern, Registern oder anderen derartigen Informationsspeicher-, -übertragungs- oder -anzeigevorrichtungen des Rechensystems dargestellt sind.
  • Auf ähnliche Weise kann sich der Ausdruck „Prozessor“ auf eine beliebige Vorrichtung oder einen beliebigen Teil einer Vorrichtung beziehen, die/der elektronische Daten aus Registern und/oder Speicher verarbeitet und diese elektronischen Daten in andere elektronische Daten umwandelt, die in Registern und/oder Speicher gespeichert werden können. Als nicht einschränkende Beispiele kann der „Prozessor“ eine CPU oder eine GPU sein. Eine „Rechenplattform“ kann einen oder mehrere Prozessoren umfassen. Wie hierin verwendet, können „Software“-Prozesse zum Beispiel Software- und/oder Hardware-Entitäten beinhalten, die im Verlauf der Zeit Arbeit verrichten, wie etwa Tasks, Threads und intelligente Agenten. Außerdem kann sich jeder Prozess auf mehrere Prozesse beziehen, um Anweisungen nacheinander oder parallel, kontinuierlich oder intermittierend auszuführen. In mindestens einer Ausführungsform werden die Ausdrücke „System“ und „Verfahren“ hierin insofern austauschbar verwendet, dass ein System ein oder mehrere Verfahren verkörpern kann und die Verfahren als System betrachtet werden können.
  • Im vorliegenden Dokument kann auf das Erlangen, Erfassen, Empfangen oder Eingeben von analogen oder digitalen Daten in ein Teilsystem, ein Computersystem oder eine computerimplementierte Maschine Bezug genommen werden. In mindestens einer Ausführungsform kann der Prozess des Erlangens, Erfassens, Empfangens oder Eingebens von analogen und digitalen Daten auf eine Vielfalt von Weisen erzielt werden, wie etwa durch das Empfangen von Daten als Parameter eines Funktionsaufrufs oder eines Aufrufs einer Anwendungsprogrammierschnittstelle. In mindestens einer Ausführungsform können Prozesse des Erlangens, Erfassens, Empfangens oder Eingebens von analogen oder digitalen Daten durch das Übermitteln von Daten über eine serielle oder parallele Schnittstelle erfolgen. In mindestens einer Ausführungsform können Prozesse des Erlangens, Erfassens, Empfangens oder Eingebens von analogen oder digitalen Daten durch das Übermitteln von Daten über ein Computernetzwerk von der bereitstellenden Entität zu der erfassenden Entität erfolgen. In mindestens einer Ausführungsform kann auch auf das Bereitstellen, Ausgeben, Übertragen, Senden oder Darstellen von analogen oder digitalen Daten Bezug genommen werden. In verschiedenen Beispielen können Prozesse des Bereitstellens, Ausgebens, Übertragens, Sendens oder Darstellens von analogen oder digitalen Daten durch das Übermitteln von Daten als Eingabe- oder Ausgabeparameter eines Funktionsaufrufs, eines Parameters einer Anwendungsprogrammierschnittstelle oder eines Interprozesskommunikationsmechanismus erfolgen.
  • Obwohl die Beschreibungen in dieser Schrift beispielhafte Implementierungen der beschriebenen Techniken darlegen, können auch andere Architekturen verwendet werden, um die beschriebene Funktionalität zu implementieren, und sie sollen im Schutzbereich dieser Offenbarung liegen. Darüber hinaus könnten, obwohl spezifische Verteilungen von Zuständigkeiten vorstehend zum Zwecke der Beschreibung definiert sein können, verschiedene Funktionen und Zuständigkeiten in Abhängigkeit von den Umständen anders verteilt und aufgeteilt werden.
  • Obwohl der Gegenstand ferner in für Strukturmerkmale und/oder Verfahrenshandlungen spezifischer Sprache beschrieben wurde, versteht sich, dass der in den beigefügten Ansprüchen beanspruchte Gegenstand nicht unbedingt auf die beschriebenen spezifischen Merkmale oder Handlungen beschränkt ist. Vielmehr werden spezifische Merkmale und Handlungen als beispielhafte Formen zum Implementieren der Ansprüche offenbart.

Claims (30)

  1. Prozessor, umfassend: eine oder mehrere Schaltungen, um ein oder mehrere neuronale Netzwerke zu verwenden, um zu bewirken, dass ein Lichteffekt auf ein oder mehrere Objekte in einem oder mehreren Bildern angewendet wird, die zumindest teilweise auf synthetisch erzeugten Bildern des einen oder der mehreren Objekte basieren.
  2. Prozessor nach Anspruch 1, wobei die eine oder die mehreren Schaltungen das eine oder die mehreren neuronalen Netzwerke unter Verwendung der synthetisch erzeugten Bilder trainieren und ferner nur einen Abschnitt des einen oder der mehreren neuronalen Netzwerke unter Verwendung von aufgenommenen Bildern eines oder mehrerer physischer Objekte trainieren.
  3. Prozessor nach Anspruch 2, wobei die eine oder die mehreren Schaltungen ferner bewirken, dass das eine oder die mehreren neuronalen Netzwerke zum Vorhersagen einer Geometrie und einer Reflektivität des einen oder der mehreren Objekte unter Verwendung der synthetisch erzeugten Bilder trainiert werden.
  4. Prozessor nach Anspruch 3, wobei die eine oder die mehreren Schaltungen ferner bewirken, dass der Abschnitt des einen oder der mehreren neuronalen Netzwerke ferner zum Vorhersagen der Reflektivität des einen oder der mehreren Objekte unter Verwendung der aufgenommenen Bilder des einen oder der mehreren physischen Objekte trainiert wird.
  5. Prozessor nach einem der vorhergehenden Ansprüche, wobei die eine oder die mehreren Schaltungen ferner das eine oder die mehreren neuronalen Netzwerke unter Verwendung einer Verlustfunktion trainieren, die mindestens einen One-Light-at-a-Time-(OLAT-)Konsistenzverlustterm und einen relativen Konsistenzverlustterm beinhaltet.
  6. Prozessor nach einem der vorhergehenden Ansprüche, wobei das eine oder die mehreren Bilder Einzelbilder einer Videosequenz sind und wobei das eine oder die mehreren neuronalen Netzwerke ein oder mehrere neuronale Restnetzwerke beinhalten, um zeitliche Stabilität zwischen den Einzelbildern bereitzustellen.
  7. System, umfassend: einen oder mehrere Prozessoren, um ein oder mehrere neuronale Netzwerke zu verwenden, um zu bewirken, dass ein Lichteffekt auf ein oder mehrere Objekte in einem oder mehreren Bildern angewendet wird, die zumindest teilweise auf synthetisch erzeugten Bildern des einen oder der mehreren Objekte basieren.
  8. System nach Anspruch 7, wobei der eine oder die mehreren Prozessoren das eine oder die mehreren neuronalen Netzwerke unter Verwendung der synthetisch erzeugten Bilder trainieren und ferner nur einen Abschnitt des einen oder der mehreren neuronalen Netzwerke unter Verwendung von aufgenommenen Bildern eines oder mehrerer physischer Objekte trainieren.
  9. System nach Anspruch 7 oder 8, wobei der eine oder die mehreren Prozessoren ferner bewirken, dass das eine oder die mehreren neuronalen Netzwerke zum Vorhersagen einer Geometrie und einer Reflektivität des einen oder der mehreren Objekte unter Verwendung der synthetisch erzeugten Bilder trainiert werden.
  10. System nach Anspruch 9, wobei der eine oder die mehreren Prozessoren ferner bewirken, dass der Abschnitt des einen oder der mehreren neuronalen Netzwerke ferner zum Vorhersagen der Reflektivität des einen oder der mehreren Objekte unter Verwendung der aufgenommenen Bilder des einen oder der mehreren physischen Objekte trainiert wird.
  11. System nach einem der Ansprüche 7 bis 10, wobei der eine oder die mehreren Prozessoren ferner das eine oder die mehreren neuronalen Netzwerke unter Verwendung einer Verlustfunktion trainieren, die mindestens einen One-Lightat-a-Time-(OLAT-)Konsistenzverlustterm und einen relativen Konsistenzverlustterm beinhaltet.
  12. System nach einem der Ansprüche 7 bis 11, wobei das eine oder die mehreren Bilder Einzelbilder einer Videosequenz sind und wobei das eine oder die mehreren neuronalen Netzwerke ein oder mehrere neuronale Restnetzwerke beinhalten, um zeitliche Stabilität zwischen den Einzelbildern bereitzustellen.
  13. Verfahren, umfassend: Verwenden eines oder mehrerer neuronaler Netzwerke, um zu bewirken, dass ein Lichteffekt auf ein oder mehrere Objekte in einem oder mehreren Bildern angewendet wird, die zumindest teilweise auf synthetisch erzeugten Bildern des einen oder der mehreren Objekte basieren.
  14. Verfahren nach Anspruch 13, ferner umfassend: Trainieren des einen oder der mehreren neuronalen Netzwerke unter Verwendung der synthetisch erzeugten Bilder und ferner Trainieren nur eines Abschnitts des einen oder der mehreren neuronalen Netzwerke unter Verwendung der aufgenommenen Bilder eines oder mehrerer physischer Objekte.
  15. Verfahren nach Anspruch 14, ferner umfassend: Bewirken, dass das eine oder die mehreren neuronalen Netzwerke zum Vorhersagen einer Geometrie und einer Reflektivität des einen oder der mehreren Objekte unter Verwendung der synthetisch erzeugten Bilder trainiert werden.
  16. Verfahren nach Anspruch 15, ferner umfassend: Bewirken, dass der Abschnitt des einen oder der mehreren neuronalen Netzwerke ferner zum Vorhersagen der Reflektivität des einen oder der mehreren Objekte unter Verwendung der aufgenommenen Bilder des einen oder der mehreren physischen Objekte trainiert wird.
  17. Verfahren nach einem der Ansprüche 13 bis 16, ferner umfassend: Trainieren des einen oder der mehreren neuronalen Netzwerke unter Verwendung einer Verlustfunktion, die mindestens einen One-Light-at-a-Time-(OLAT-)Konsistenzverlustterm und einen relativen Konsistenzverlustterm beinhaltet.
  18. Verfahren nach einem der Ansprüche 13 bis 17, wobei das eine oder die mehreren Bilder Einzelbilder einer Videosequenz sind und wobei das eine oder die mehreren neuronalen Netzwerke ein oder mehrere neuronale Restnetzwerke beinhalten, um zeitliche Stabilität zwischen den Einzelbildern bereitzustellen.
  19. Maschinenlesbares Medium, das einen darauf gespeicherten Satz von Anweisungen aufweist, der bei Ausführung durch einen oder mehrere Prozessoren den einen oder die mehreren Prozessoren mindestens veranlasst zum: Verwenden eines oder mehrerer neuronaler Netzwerke, um zu bewirken, dass ein Lichteffekt auf ein oder mehrere Objekte in einem oder mehreren Bildern angewendet wird, die zumindest teilweise auf synthetisch erzeugten Bildern des einen oder der mehreren Objekte basieren.
  20. Maschinenlesbares Medium nach Anspruch 19, wobei die Anweisungen bei Ausführung den einen oder die mehreren Prozessoren ferner veranlassen zum: Trainieren des einen oder der mehreren neuronalen Netzwerke unter Verwendung der synthetisch erzeugten Bilder und ferner Trainieren nur eines Abschnitts des einen oder der mehreren neuronalen Netzwerke unter Verwendung der aufgenommenen Bilder eines oder mehrerer physischer Objekte.
  21. Maschinenlesbares Medium nach Anspruch 20, wobei die Anweisungen bei Ausführung den einen oder die mehreren Prozessoren ferner veranlassen zum: Bewirken, dass das eine oder die mehreren neuronalen Netzwerke zum Vorhersagen einer Geometrie und einer Reflektivität des einen oder der mehreren Objekte unter Verwendung der synthetisch erzeugten Bilder trainiert werden.
  22. Maschinenlesbares Medium nach Anspruch 21, wobei die Anweisungen bei Ausführung den einen oder die mehreren Prozessoren ferner veranlassen zum: Bewirken, dass der Abschnitt des einen oder der mehreren neuronalen Netzwerke ferner zum Vorhersagen der Reflektivität des einen oder der mehreren Objekte unter Verwendung der aufgenommenen Bilder des einen oder der mehreren physischen Objekte trainiert wird.
  23. Maschinenlesbares Medium nach einem der Ansprüche 19 bis 22, wobei der eine oder die mehreren Prozessoren ferner dienen zum: Trainieren des einen oder der mehreren neuronalen Netzwerke unter Verwendung einer Verlustfunktion, die mindestens einen One-Light-at-a-Time-(OLAT-)Konsistenzverlustterm und einen relativen Konsistenzverlustterm beinhaltet.
  24. Maschinenlesbares Medium nach einem der Ansprüche 19 bis 23, wobei das eine oder die mehreren Bilder Einzelbilder einer Videosequenz sind und wobei das eine oder die mehreren neuronalen Netzwerke ein oder mehrere neuronale Restnetzwerke beinhalten, um zeitliche Stabilität zwischen den Einzelbildern bereitzustellen.
  25. Bildzeugungssystem, umfassend: einen oder mehrere Prozessoren, um ein oder mehrere neuronale Netzwerke zu verwenden, um zu bewirken, dass ein Lichteffekt auf ein oder mehrere Objekte in einem oder mehreren Bildern angewendet wird, die zumindest teilweise auf synthetisch erzeugten Bildern des einen oder der mehreren Objekte basieren; und Speicher zum Speichern von Netzwerkparametern für das eine oder die mehreren neuronalen Netzwerke.
  26. Bilderzeugungssystem nach Anspruch 25, wobei der eine oder die mehreren Prozessoren das eine oder die mehreren neuronalen Netzwerke unter Verwendung der synthetisch erzeugten Bilder trainieren und ferner nur einen Abschnitt des einen oder der mehreren neuronalen Netzwerke unter Verwendung von aufgenommenen Bildern eines oder mehrerer physischer Objekte trainieren.
  27. Bilderzeugungssystem nach Anspruch 26, wobei der eine oder die mehreren Prozessoren ferner bewirken, dass das eine oder die mehreren neuronalen Netzwerke zum Vorhersagen einer Geometrie und einer Reflektivität des einen oder der mehreren Objekte unter Verwendung der synthetisch erzeugten Bilder trainiert werden.
  28. Bilderzeugungssystem nach Anspruch 27, wobei der eine oder die mehreren Prozessoren ferner bewirken, dass der Abschnitt des einen oder der mehreren neuronalen Netzwerke ferner zum Vorhersagen der Reflektivität des einen oder der mehreren Objekte unter Verwendung der aufgenommenen Bilder des einen oder der mehreren physischen Objekte trainiert wird.
  29. Bilderzeugungssystem nach einem der Ansprüche 25 bis 28, wobei der eine oder die mehreren Prozessoren ferner das eine oder die mehreren neuronalen Netzwerke unter Verwendung einer Verlustfunktion trainieren, die mindestens einen One-Light-at-a-Time-(OLAT-)Konsistenzverlustterm und einen relativen Konsistenzverlustterm beinhaltet.
  30. Bilderzeugungssystem nach einem der Ansprüche 25 bis 29, wobei das eine oder die mehreren Bilder Einzelbilder einer Videosequenz sind und wobei das eine oder die mehreren neuronalen Netzwerke ein oder mehrere neuronale Restnetzwerke beinhalten, um zeitliche Stabilität zwischen den Einzelbildern bereitzustellen.
DE102023116064.8A 2022-07-12 2023-06-20 Bildbeleuchtung auf der basis neuronaler netzwerke Pending DE102023116064A1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US17/862,818 2022-07-12
US17/862,818 US20240020897A1 (en) 2022-07-12 2022-07-12 Neural network-based image lighting

Publications (1)

Publication Number Publication Date
DE102023116064A1 true DE102023116064A1 (de) 2024-01-18

Family

ID=89387557

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102023116064.8A Pending DE102023116064A1 (de) 2022-07-12 2023-06-20 Bildbeleuchtung auf der basis neuronaler netzwerke

Country Status (3)

Country Link
US (1) US20240020897A1 (de)
CN (1) CN117391922A (de)
DE (1) DE102023116064A1 (de)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20230154101A1 (en) * 2021-11-16 2023-05-18 Disney Enterprises, Inc. Techniques for multi-view neural object modeling

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20220123268A (ko) * 2019-12-30 2022-09-06 매터포트 인코포레이티드 파노라마 3차원 이미지를 캡처 및 생성하는 시스템 및 방법
GB2598711B (en) * 2020-08-11 2023-10-18 Toshiba Kk A Computer Vision Method and System
FR3117626B1 (fr) * 2020-12-16 2023-12-01 St Microelectronics Rousset Procédé d’allocation de mémoire pendant l’exécution d’un réseau de neurones
US11704865B2 (en) * 2021-07-22 2023-07-18 Adobe Inc. Inserting three-dimensional objects into digital images with consistent lighting via global and local lighting information
US20230070666A1 (en) * 2021-09-03 2023-03-09 Adobe Inc. Neural network for image style translation
US11847725B2 (en) * 2021-10-15 2023-12-19 Adobe Inc. Performing interactive digital image operations utilizing modified machine learning models

Also Published As

Publication number Publication date
US20240020897A1 (en) 2024-01-18
CN117391922A (zh) 2024-01-12

Similar Documents

Publication Publication Date Title
DE112021003077T5 (de) Technik zur Durchführung der Architektursuche für neuronale Netzwerke mit föderiertem Lernen
DE112020001253T5 (de) Techniken zum Trainieren eines neuronalen Netzes unter Verwendung von Transformationen
DE102021124008A1 (de) Training eines neuronalen netzes unter verwendung robuster temporaler ensemblebildung
DE102021122617A1 (de) Globales föderiertes training für neuronale netze
DE102022114651A1 (de) Training von objekterfassungssystemen mit generierten bildern
DE112021000253T5 (de) Auswählen von annotationen für trainingsbilder unter verwendung eines neuronalen netzwerks
DE102021123213A1 (de) Bewegungssteuerung eines neuronalen Netzes
DE112021004282T5 (de) Gitter-basierte techniken des neuronalen faltungsnetzes
DE112021003301T5 (de) Techniken zur klassifikation mit neuronalen netzen
DE112021001946T5 (de) Attribut-bewusste bildgeneration unter verwendung von neuronalen netzwerken
DE102021125238A1 (de) Auf fourier-transformation basierte bildsynthese unter verwendung von neuralen netzen
DE112021000190T5 (de) Videokompression unter Verwendung neuronaler Netzwerke
DE102021125533A1 (de) Generierung von differenzierten datenschutzdatensätzen unter verwendung von generativen modellen
DE102022101664A1 (de) Techniken des maschinellen lernens zur verbesserung von anwendungen für videokonferenzen
DE102021132251A1 (de) Visuell nachverfolgtes räumliches Audio
DE112020007872T5 (de) Erzeugung von bewegten dreidimensionalen modellen unter verwendung von bewegungsübertragung
DE102022105841A1 (de) Automatische kennzeichnung und segmentierung mit hilfe von modellen des maschinellen lernens
DE102022124369A1 (de) Optimieren der gleichzeitigen verarbeitung künstlicher intelligenz unter verwendung abgeleiteter neuronaler netze
DE102021132980A1 (de) Techniken zum optimieren von neuronalen netzen
DE112021000587T5 (de) Verfahren zur Verarbeitung von Schichten eines dreidimensionalen Bildes mittels eines oder mehrerer neuronaler Netze
DE102023124263A1 (de) Techniken zur Videoerzeugung
DE102023116064A1 (de) Bildbeleuchtung auf der basis neuronaler netzwerke
DE102023112256A1 (de) Neuronale Netze zur Anzeige von Datenabhängigkeiten
DE102023101778A1 (de) Minikarten- basierte positionsverfolgung
DE102023101394A1 (de) Techniken zum platzieren von objekten unter verwendung neuronaler netze

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R082 Change of representative

Representative=s name: BARDEHLE PAGENBERG PARTNERSCHAFT MBB PATENTANW, DE