DE102021131289A1 - Echtzeit-rendering mit impliziten formen - Google Patents

Echtzeit-rendering mit impliziten formen Download PDF

Info

Publication number
DE102021131289A1
DE102021131289A1 DE102021131289.2A DE102021131289A DE102021131289A1 DE 102021131289 A1 DE102021131289 A1 DE 102021131289A1 DE 102021131289 A DE102021131289 A DE 102021131289A DE 102021131289 A1 DE102021131289 A1 DE 102021131289A1
Authority
DE
Germany
Prior art keywords
voxels
data
processors
training
memory
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
DE102021131289.2A
Other languages
English (en)
Inventor
Towaki Alan Takikawa
Joey Litalien
Kangxue Yin
Karsten Julian Kreis
Charles Loop
Morgan McGuire
Sanja Fidler
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 DE102021131289A1 publication Critical patent/DE102021131289A1/de
Pending legal-status Critical Current

Links

Images

Classifications

    • 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/10Geometric effects
    • 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
    • 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
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N5/00Computing arrangements using knowledge-based models
    • G06N5/04Inference or reasoning models
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/08Volume rendering
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T17/00Three dimensional [3D] modelling, e.g. data description of 3D objects
    • G06T17/005Tree description, e.g. octree, quadtree
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2210/00Indexing scheme for image generation or computer graphics
    • G06T2210/36Level of detail

Landscapes

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

Abstract

Es werden Systeme und Verfahren zum Rendern komplexer Oberflächen oder Geometrien beschrieben. Bei mindestens einer Ausführungsform können neuronale vorzeichenbehaftete Abstandsfunktionen (SDFs) verwendet werden, welche mehrere Detaillevel (LODs) effizient erfassen und zur Rekonstruktion einer mehrdimensionalen Geometrie oder Oberflächen mit hoher Bildqualität verwendet werden können. Eine beispielhafte Architektur kann komplexe Formen in einem komprimierten Format mit hoher visueller Wiedergabetreue darstellen und anhand eines einzigen gelernten Beispiels über verschiedene Geometrien hinweg verallgemeinern. Extrem kleine mehrschichtige Perceptrons (MLPs) können mit einer Octree-basierten Merkmalsdarstellung für die gelernten neuronalen SDFs verwendet werden.

Description

  • HINTERGRUND
  • In einer Vielzahl von Anwendungen für verschiedene Branchen kann es wünschenswert sein, dreidimensionale Objekte und Formen in einer Szene oder Umgebung darzustellen. Dreidimensionale (3D-) Formen werden häufig durch eine Menge von Polygonen (oder andere Formen, Punktwolken oder Netze) in einem virtuellen dreidimensionalen Raum dargestellt oder modelliert. Ein weiterer Ansatz zur Darstellung von Formen ist die Verwendung von vorzeichenbehafteten Abstandsfunktionen (Signed Distance Functions (SDFs)). SDFs werden häufig mit Dreiecksnetzen verwendet, um Formen im 3D-Raum darzustellen, und sind Funktionen, die zur Codierung der kleinsten Abstände zu einer Oberfläche verwendet werden. Ein Vorteil der Verwendung von SDFs ist, dass solche Darstellungen gut mit lernbasierten Tasks funktionieren, da die Funktionen kontinuierlich sind, so dass keine Annahmen über die Oberflächentopologie gemacht werden müssen. Frühere Ansätze kodieren eine SDF in der Regel mit einem großen neuronalen Netz fester Größe, um komplexe Formen durch ihre implizite Oberfläche zu approximieren. Das Rendern von großen Netzwerken ist ineffizient, da es viele Vorwärtsdurchläufe pro Pixel oder eine Offline-Konvertierung in ein Netz erfordert, was diese bisherigen Darstellungen für Echtzeitgrafiken unpraktisch macht.
  • Figurenliste
  • Verschiedene Ausführungsformen gemäß der vorliegenden Offenbarung werden unter Bezugnahme auf die Zeichnungen beschrieben, in denen gilt:
    • 1A, 1B und 1C veranschaulichen einen Ansatz zur Zerlegung einer komplexen Form in eine Menge relativ einfacher Formen gemäß mindestens einer Ausführungsform;
    • 2 veranschaulicht eine beispielhafte Architektur zur Codierung einer SDF unter Verwendung eines dünnbesetzten Voxel-Octrees gemäß mindestens einer Ausführungsform;
    • 3 veranschaulicht einen adaptiven strahlenbasierten Ansatz gemäß mindestens einer Ausführungsform;
    • 4 veranschaulicht eine beispielhafte Rendering-Pipeline gemäß mindestens einer Ausführungsform;
    • 5A und 5B veranschaulichen Verfahren zum Rendern einer komplexen Oberfläche gemäß mindestens einer Ausführungsform;
    • 6 veranschaulicht Komponenten eines Systems zum Erzeugen von Bilddaten gemäß mindestens einer Ausführungsform;
    • 7A veranschaulicht eine Inferenz- und/oder Trainingslogik gemäß mindestens einer Ausführungsform;
    • 7B illustriert eine Inferenz- und/oder Trainingslogik gemäß mindestens einer Ausführungsform;
    • 8 veranschaulicht ein Beispiel für ein Datenzentrumssystem gemäß mindestens einer Ausführungsform;
    • 9 veranschaulicht ein Computersystem gemäß mindestens einer Ausführungsform;
    • 10 veranschaulicht ein Computersystem gemäß mindestens einer Ausführungsform;
    • 11 veranschaulicht zumindest Abschnitte eines Grafikprozessors gemäß einer oder mehreren Ausführungsformen;
    • 12 veranschaulicht zumindest Abschnitte eines Grafikprozessors gemäß einer oder mehreren Ausführungsformen;
    • 13 ist ein beispielhaftes Datenflussdiagramm für eine fortgeschrittene Rechenpipeline gemäß mindestens einer Ausführungsform;
    • 14 ist ein Systemdiagramm für ein beispielhaftes System zum Trainieren, Anpassen, Instanziieren und Bereitstellen von Modellen für maschinelles Lernen in einer fortgeschrittenen Rechenpipeline gemäß mindestens einer Ausführungsform; und
    • 15A und 15B zeigen gemäß mindestens einer Ausführungsform ein Datenflussdiagramm für ein Verfahren zum Trainieren eines Modells zum maschinellen Lernen sowie eine Client-Server-Architektur zum Verbessern von Kennzeichnungswerkzeugen mit vortrainierten Kennzeichnungsmodellen.
  • DETAILLIERTE BESCHREIBUNG
  • Ansätze gemäß verschiedenen Ausführungsformen können für die Darstellung komplexer Formen und Geometrien sorgen. Insbesondere verwenden verschiedene Ausführungsformen eine neuronale Darstellung, die ein „Echtzeit“-Rendering von neuronalen vorzeichenbehafteten Abstandsfunktionen (SDFs) mit hoher Genauigkeit ermöglicht, während gleichzeitig eine qualitativ hochwertige Geometrie-Rekonstruktion und Filterung erreicht wird, um Aliasing von Ray-Samples zu reduzieren. Ein solches System kann eine hohe Detailgenauigkeit bzw. einen hohen Detaillevel beibehalten, während es mit interaktiven Raten ausgeführt wird. Bei mindestens einer Ausführungsform kann eine dreidimensionale (3D-) SDF mit einer auf einem dünnbesetzten Octree basierenden Merkmalsdarstellung dargestellt werden. Eine oder mehrere Formen können dann mit mehreren diskreten Detailstufen bzw. Detailleveln (Levels of Details (LODs)) adaptiv angepasst und in einem einzigen, einheitlichen Merkmalsvolumen gespeichert werden. Diese können dann durch lineare Interpolation der diskreten SDFs zu kontinuierlichen LODs erweitert werden. Zur Dekodierung des Merkmalsvolumens kann ein extrem kleines mehrschichtiges Perzeptron- (MLP-) Netzwerk verwendet werden. Bei mindestens einer Ausführungsform kann ein effizienter Algorithmus verwendet werden, um diese neuronalen SDF-Darstellungen in Echtzeit mit einer Traversierung eines dünnbesetzten Octrees und durch ein Abfragen nur der erforderlichen LODs direkt zu rendern.
  • Bei mindestens einer Ausführungsform stellen neuronale vorzeichenbehaftete Abstandsfunktionen (SDFs) eine effektive Darstellung für dreidimensionale (3D-) Formen bereit, die insbesondere für Grafikanwendungen nützlich sind. Neuronale SDFs sind Funktionen einer Position, die für jede beliebige Koordinate den kürzesten Abstand zur Oberfläche zurückgeben, wie z. B. f (x, y, z) = d. Neuronale SDFs haben den Vorteil, dass sie differenzierbar und glatt sind, obwohl sie zumindest in einigen bestehenden Systemen sehr langsam gerendert werden können. Herkömmliche Verfahren kodieren eine SDF in der Regel mit einem großen neuronalen Netz fester Größe, um komplexe Formen mit impliziten Oberflächen zu approximieren. Wie bereits erwähnt, ist das Rendern mit solch großen Netzen bzw. Netzwerken rechenintensiv, da für jedes Pixel viele Vorwärtsdurchläufe durch das Netzwerk erforderlich sind. Herkömmliche Ansätze können SDFs beispielsweise mit einem Sphären-Tracing-Algorithmus rendern, der zahlreiche Abstandsabfragen entlang verschiedener verfolgter Strahlen durchführt. Ein solches Verfahren kann zumindest für einige Anwendungen unerschwinglich teuer sein, wenn neuronale SDFs verwendet werden, die aus großen MLPs zusammengesetzt sind.
  • Ansätze gemäß verschiedener Ausführungsformen können stattdessen effiziente neuronale Repräsentationen verwenden, die z. B. ein Echtzeit-Rendering von hochrealistischen neuronalen SDFs ermöglichen. Verschiedene Ausführungsformen können auch dieses Echtzeit-Rendering ermöglichen und dabei zumindest eine dem Stand der Technik entsprechende Qualität der Geometrie-Rekonstruktion erreichen. Bei mindestens einer Ausführungsform können eine oder mehrere implizite Oberflächen mittels eines auf einem Octree basierenden Merkmalsvolumen dargestellt werden, das Formen mit mehreren diskreten Detailleveln (LODs) adaptiv anpasst und kontinuierliche LODs mit einer SDF-Interpolation ermöglicht. Ein effizienter Algorithmus kann dann verwendet werden, um eine solche neuronale SDF-Darstellung in Echtzeit direkt zu rendern, indem bei mindestens einer Ausführungsform nur die erforderlichen LODs mit einer Traversierung eines dünnbesetzten Octrees abgefragt werden. Eine solche Darstellung kann um mehrere Größenordnungen effizienter sein als herkömmliche Darstellungen, zumindest in Bezug auf die Rendering-Geschwindigkeit. Eine solche Darstellung kann auch eine qualitativ hochwertige Rekonstruktion komplexer Formen sowohl für geometrische 3D- als auch für 2D-Bildraummetriken liefern.
  • Fortgeschrittene geometrische Modellierungs- und Rendering-Verfahren in der Computergrafik können 3D-Formen mit komplexen Details, beliebiger Topologie und Qualität nutzen, wobei in der Regel Polygonnetze zum Einsatz kommen. Es ist jedoch nicht trivial, diese Darstellungen an lernbasierte Ansätze anzupassen, da es ihnen an Unterscheidbarkeit mangelt und sie daher nicht ohne Weiteres in Computer-Vision-Anwendungen wie der erlernten bildbasierten 3D-Rekonstruktion eingesetzt werden können. Wie bereits erwähnt, stellen neuronale Approximationen von vorzeichenbehafteten Abstandsfunktionen (neuronale SDFs) eine attraktive Wahl dar, um Computer-Vision- und Grafik-Anwendungen zu erweitern. Neuronale Netze können genaue 3D-Geometrien ohne Einschränkungen hinsichtlich Topologie oder Auflösung kodieren, indem sie die entsprechende SDF lernen, die eine Oberfläche durch ihre Null-Level-Menge bzw. Menge mit Level Null definieren kann. Als gelernte Abstandsfunktion kann ein großes mehrschichtiges Perzeptron (MLP) mit fester Größe verwendet werden. Für ein direktes Rendering und Untersuchen neuronaler SDFs kann ein Ansatz wie das Sphären-Tracing verwendet werden, ein Algorithmus zur Wurzelfindung, der Hunderte von SDF-Auswertungen pro Pixel erfordern kann, um zu konvergieren. Da ein einziger Vorwärtsdurchlauf durch eine große MLP-basierte SDF Millionen von Operationen erfordern kann, werden neuronale SDFs für Echtzeit-Grafikanwendungen schnell unpraktisch, da die Kosten für die Berechnung eines einzigen Pixels auf Hunderte von Millionen von Operationen ansteigen. Ein oder mehrere kleine neuronale Netze können zur Überanpassung einzelner Formen verwendet werden, doch geht dies oft auf Kosten der Allgemeinheit und der Rekonstruktionsqualität. Es können auch neuronale Netze mit fester Größe verwendet werden, die dann aber nicht in der Lage sind, Geometrien mit einer Komplexität auszudrücken, die die Kapazität des Netzes übersteigt.
  • Dementsprechend können Ansätze gemäß verschiedener Ausführungsformen Darstellungen für neuronale SDFs verwenden, die adaptiv auf verschiedene Detaillevel (LODs) skaliert werden können, und hochdetaillierte Geometrie rekonstruieren. Ein solcher Ansatz kann nahtlos zwischen verschiedenen Geometrieskalen interpolieren und kann in Echtzeit mit einem angemessenen Speicherbedarf gerendert werden. Bei mindestens einer Ausführungsform kann ein kleines mehrschichtiges Perzeptron (MLP) verwendet werden, um ein Sphären-Tracing geeignet auszuführen, ohne die Qualität oder Allgemeinheit zu beeinträchtigen. Ein solcher Ansatz kann auf Oberflächenextraktionsmechanismen aufbauen, die Quadratur- und räumliche Datenstrukturen zur Speicherung von Abstandswerten verwenden, um den euklidischen Raum fein zu diskretisieren, so dass einfache, lineare Basisfunktionen die Geometrie rekonstruieren können. In verschiedenen Ausführungsformen kann dieser Raum mit einem dünnbesetzten Voxel-Octree (Sparse Voxel Octree (SVO)) diskretisiert werden, wobei gelernte Merkmalsvektoren anstelle von vorzeichenbehafteten Abstandswerten gespeichert werden. Diese Vektoren können z. B. mit einem flachen MLP in skalare Abstände umcodiert werden, so dass die Baumtiefe verkürzt werden kann, während die Vorteile anderer Ansätze, wie z. B. LOD, erhalten bleiben. Es kann ein auf eine solche Architektur zugeschnittener Ray-Traversierungs-Algorithmus verwendet werden, der es ermöglicht, Geometrien mindestens 100-mal schneller zu rendern als verschiedene herkömmliche Ansätze. Eine Architektur, die eine solche Funktionalität bereitstellt, kann auch 3D-Formen in einem komprimierten Format mit höherer visueller Wiedergabetreue als herkömmliche Verfahren darstellen und gleichzeitig über verschiedene Geometrien hinweg verallgemeinern, sogar von einem einzigen gelernten Beispiel ausgehend. Eine solche Architektur kann auch als modularer Baustein für viele nachgelagerte Anwendungen dienen, wie z. B. die Rekonstruktion von Szenen aus Bildern, die Navigation von Robotern und die Analyse von Formen.
  • Bei mindestens einer Ausführungsform können eine oder mehrere implizite Oberflächen mit Hilfe eines Octree-basierten Merkmalsvolumens dargestellt werden, das Formen mit mehreren diskreten Detailleveln (LODs) adaptiv anpasst. Ein Detaillevel (LOD) bezieht sich in der Computergrafik auf eine oder mehrere 3D-Formen, die gefiltert werden, um Merkmalsvariationen zu begrenzen, z. B. auf ungefähr die doppelte Pixelgröße im Bildraum. Eine solche Filterung kann dazu beitragen, durch Aliasing verursachte Probleme wie Flimmern zu verringern und das Rendering zu beschleunigen, indem die Komplexität des Modells reduziert wird. Während Signalverarbeitungsverfahren Texturen filtern können, ist die Filterung von Geometrien in der Regel darstellungsspezifisch und schwierig. Ein möglicher Ansatz wäre die Dezimierung bzw. Vereinfachung eines Netzes, bei der ein Netz auf eine vorgesehene Anzahl von Flächen, Eckpunkten oder Kanten vereinfacht wird. Herkömmliche Verfahren erreichen dies durch ausgiebiges Verschieben von Netzelementen mit den geringsten Auswirkungen auf die geometrische Genauigkeit. Andere Ansätze optimieren nach wahrnehmbaren Metriken oder konzentrieren sich auf die Vereinfachung der Topologie. Netze leiden unter Diskretisierungsfehlern bei geringem Speicherbedarf und haben Schwierigkeiten beim Überblenden zwischen LODs. Im Gegensatz dazu können SDFs glatte Oberflächen mit weniger Speicherplatz darstellen und nahtlos zwischen LODs überblenden, um Aliasing zu reduzieren. Neuronale SDFs können diese und andere vorteilhafte Eigenschaften erben.
  • Implizite oberflächenbasierte Verfahren können die Geometrie in latenten Vektoren oder Gewichten eines neuronalen Netzes kodieren, die die Oberflächen durch Level-Mengen bzw. Mengen mit gleichen Leveln parametrisieren. Diese „Iso-Flächen“ können z. B. durch Kodierung der Formen in latente Vektoren mit Hilfe eines Autodecoders gelernt werden. In diesem Zusammenhang kann ein Autodecoder ein großes MLP umfassen, das einen skalaren Wert ausgibt, der von dem latenten Vektor und der Position abhängt. In ähnlicher Weise können periodische Funktionen verwendet werden, die zu großen Verbesserungen der Rekonstruktionsqualität führen. Bestimmte herkömmliche Ansätze konzentrieren sich auf das Rendern neuronaler impliziter Darstellungen. Ein differenzierbarer Renderer für implizite Oberflächen kann beispielsweise Ray Marching verwenden, und differenzierbare Renderer für SDFs können ein Verfahren wie Sphären-Tracing nutzen. Diese differenzierbaren Renderer können unabhängig vom Raytracing-Algorithmus sein, da sie nur eine Differenzierbarkeit in Bezug auf die Schnittpunktbildung von Strahl und Oberfläche erfordern. Ansätze gemäß verschiedener Ausführungsformen können Detaillevel ermöglichen und Sphären-Tracing verwenden, was eine Trennung der Geometrie von dem Shading und damit eine Optimierung des Ray-Tracing ermöglicht, was in einem volumetrischen Rendering-Rahmen nicht möglich ist.
  • Ein System gemäß mindestens einer Ausführungsform kann eine detaillierte Geometrie rekonstruieren und kontinuierliche Detaillevel (LOD) ermöglichen, während es gleichzeitig in der Lage ist, mit interaktiven Raten zu rendern. 1A-C und 2 zeigen einen visuellen Überblick über ein beispielhaftes Verfahren, das in einem solchen System verwendet werden kann. Ein beispielhaftes Bild 100 in 1A zeigt eine relativ komplexe Form 102, hier die Form einer Schlange, die zwei- oder dreidimensional sein kann. Wie bereits erwähnt, kann es schwierig sein, die Form der Schlange durch ein Kodieren einer SDF und die Verwendung eines großen neuronalen Netzes fester Größe darzustellen, um diese komplexe Form durch ihre implizite Oberfläche zu approximieren, insbesondere wenn diese komplexe Form schnell für Anwendungen wie „Echtzeit“-Grafiken gerendert werden muss, wie z. B. für Spiele, bei denen Bilder von Inhalten mit Bild-Raten wie 60 Bilder pro Sekunde (fps) oder mehr gesendet und/oder angezeigt werden müssen. Dementsprechend können die hier vorgestellten Ansätze diese komplexe Oberfläche in eine Menge kleinerer Oberflächen zerlegen, die jeweils mit einem entsprechenden, viel kleineren neuronalen Netz verarbeitet werden können. Dies kann eine Aufteilung eines Bildes in ein Gitter mit einer Menge von Zellen (z. B. Voxeln) und ein Verwenden eines neuronalen Netzes für einzelne Abschnitte der in jeder Zelle dargestellten Oberfläche einschließen. Beispielsweise zeigt das Bild 120 in 1B eine beispielhafte Zelle 122, die ausgewählt werden kann und einen Abschnitt der komplexen Oberfläche aufweist. Wie es in der Zellenansicht 140 von 1C dargestellt ist, ist der Abschnitt der Oberfläche in dieser Zelle viel einfacher und kann z. B. mit einer neuronalen SDF leichter angenähert werden.
  • Mindestens eine Ausführungsform kann die Vorteile von SDFs nutzen, die in Funktionen ƒ: ℝ3 → ℝ liegen, wobei d = f (x) der kürzeste vorzeichenbehaftete Abstand von einem Punkt x zu einer Oberfläche S = ∂M eines Volumens e M ⊂ ℝ3 ist, wobei das Vorzeichen angibt, ob x innerhalb oder außerhalb von M liegt. Dabei wird S implizit als die Null-Level-Menge bzw. Menge mit Level Null von f dargestellt, wie es dargestellt werden kann mit: S = { x 3 | ƒ ( x ) = 0 }
    Figure DE102021131289A1_0001
  • Eine neuronale SDF kann die SDF als die Parameter θ eines neuronalen Netzes ƒθ kodieren. Die Abfrage des vorzeichenbehafteten Abstands für einen Punkt x ∈ ℝ3 läuft auf die Berechnung von ƒθ (x) = d̂ hinaus. Die Parameter θ werden mit dem Verlust J ( θ ) = E x , d L ( ƒ θ ( x ) , d )
    Figure DE102021131289A1_0002
    optimiert, wobei d der vorzeichenbehaftete Ground-Truth-Abstand und L eine Distanzmetrik wie der L 2
    Figure DE102021131289A1_0003
    -Abstand ist. Ein optionaler Eingabe-„Form“-Merkmalsvektor z ∈ ℝm kann verwendet werden, um das Netz so zu konditionieren, um verschiedene Formen mit einem festen θ anzupassen.
  • Um neuronale SDFs direkt zu rendern, kann ein Ray-Tracing mit einem Wurzelfindungsalgorithmus, wie z. B. einem Sphären-Tracing, durchgeführt werden. Ein solcher Algorithmus kann in einigen Implementierungen bis zu hundert Abstandsabfragen pro Strahl bzw. Ray durchführen, was standardmäßige neuronale SDFs unerschwinglich teuer macht, wenn das Netz groß und die Abstandsabfrage zu langsam ist. Die Verwendung kleiner Netze kann dieses iterative Rendering-Verfahren beschleunigen, aber die rekonstruierte Form kann ungenau sein. Darüber hinaus sind Netze mit fester Größe nicht in der Lage, hochkomplexe Formen zu erfassen und können sich nicht an einfache oder weit entfernte Objekte anpassen, bei denen visuelle Details unnötig sind.
  • Diese und andere Probleme können durch ein Kodieren der SDF mit einem dünn besetzten Voxel-Octree gelöst werden, so dass sich die Darstellung an unterschiedliche Detaillevel anpassen kann und flache neuronale Netze zur Kodierung der Geometrie verwendet werden können, ohne dass die geometrische Genauigkeit beeinträchtigt wird. 2 zeigt die Daten 200 in verschiedenen Schritten eines solchen Verfahrens. Bei mindestens einer Ausführungsform können neuronale SDFs verwendet werden, die Parameter eines neuronalen Netzes und ein zusätzliches gelerntes Eingangsmerkmal verwenden, das die Form kodiert. Anstatt Formen mit einem einzigen Merkmalsvektor z zu kodieren, kann ein Merkmalsvolumen 204 verwendet werden, das eine Sammlung von Merkmalsvektoren enthält, die mit Z bezeichnet werden kann. Bei mindestens einer Ausführungsform kann Z in einem dünnbesetzten Voxel-Octree (SVO) gespeichert sein, der das Begrenzungsvolumen B = [-1,1] überspannt. Jedes Voxel V in dem SVO enthält einen lernbaren Merkmalsvektor z V ( j )
    Figure DE102021131289A1_0004
    an jeder seiner acht Ecken (indiziert durch j), die gemeinsam genutzt werden, wenn benachbarte Voxel existieren. Voxel werden nur zugewiesen, wenn das Voxel V eine Fläche enthält, wodurch der SVO dünnbesetzt ist.
  • Jedes Level L ∈ ℕ des SVO definiert einen LOD für die Geometrie. Mit zunehmender Baumtiefe L in dem SVO wird die Oberfläche feiner diskretisiert dargestellt, so dass die Rekonstruktionsqualität mit dem Speicherbedarf skaliert werden kann. Eine maximale Baumtiefe kann als Lmax bezeichnet werden. Bei einem Ansatz gemäß mindestens einer Ausführungsform können kleine neuronale MLP-Netzwerke ƒ θ 1 : L m a x
    Figure DE102021131289A1_0005
    die als Decoder bezeichnet werden, mit den Parametern θ1:Lmax = {θ1,..., θLmax } für jeden LOD eingesetzt werden. Diese MLPs, bei denen es sich im Wesentlichen um kleine neuronale Netzwerke mit Vorwärtskopplung handelt, können die Zuordnungen zwischen Eingabepunkten und Abständen zu einer Oberfläche erlernen.
  • Ein Bild, das einen ausgewählten Abfragepunkt 202 x für die Oberfläche zeigt, ist in 2 dargestellt. Um eine SDF für einen Abfragepunkt x ∈ ℝ3 mit dem gewünschten LOD L zu berechnen, kann der Baum bis zum Level L durchlaufen werden, um alle Voxel V1:L = {V1, ..., VL} zu finden, die x enthalten. Für jeden Level ℓ ∈ {1, L} wird ein Formvektor ψ ( x ; l , z )
    Figure DE102021131289A1_0006
    pro Voxel durch trilineare Interpolation der Eckmerkmale der Voxel bei x berechnet. Diese Merkmale können über die Level summiert werden, um z ( x ; L , z ) = l = 1 L ψ ( x ; l , z )
    Figure DE102021131289A1_0007
    zu erhalten, und in das MLP mit LOD-spezifischen Parametern θL.eingegeben werden. In einer oder mehreren Ausführungsformen wird die SDF wie folgt berechnet: d ^ L = ƒ θ L ( [ x , z ( x ; L , z ] ) ,
    Figure DE102021131289A1_0008
    wobei [-, -] eine Verkettung bezeichnet. Durch diese Summierung über LODs hinweg können sich sinnvolle Gradienten über LODs hinweg ausbreiten, was insbesondere bei gröberen LODs hilfreich ist.
  • Da diese Formvektoren z V ( j )
    Figure DE102021131289A1_0009
    nun nur noch kleine Oberflächensegmente anstelle ganzer Formen darstellen, kann die Rechenkomplexität aus dem neuronalen Netz ƒθ in die Merkmalsvektorabfrage ψ: ℝ3 → ℝm verlagert werden, was auf eine SVO-Traversierung und eine trilineare Interpolation der Voxelmerkmale hinausläuft. Ein solches Design ermöglicht die Verwendung sehr kleiner MLPs, was zu einer erheblichen Beschleunigung führt, ohne dass die Rekonstruktionsqualität darunter leidet.
  • Wie es in 2 dargestellt ist, wird die neuronale SDF mit Hilfe eines dünnbesetzten Voxel-Octrees (SVO) 204 kodiert, der eine Sammlung von Merkmalen Z enthält. Die Level des SVO definieren LODs, und die Voxel-Ecken enthalten Merkmalsvektoren, die lokale Oberflächensegmente definieren. Bei einem Abfragepunkt x 202 und einem LOD L können die entsprechenden Voxel V1:L lokalisiert werden, und ihre Ecken z V ( j )
    Figure DE102021131289A1_0010
    können einer trilinearen Interpolation 208 bis zu L unterzogen und summiert werden, um einen summierten Merkmalsvektor z(x) 210 zu erhalten. Zusammen mit x kann dieser summierte Merkmalsvektor in ein kleines MLP fθL oder einen Merkmalsextraktor 212 eingespeist werden, um einen vorzeichenbehafteten Abstand d̂L oder einen vorhergesagten Abstand 214 zu erhalten.
  • Obwohl die Stufen bzw. Ebenen bzw. Level dieses beispielhaften Octrees diskret sind, kann ein solches Verfahren gleichmäßig zwischen diesen Leveln interpolieren. Um einen gewünschten kontinuierlichen LOD L̃ ≥ 1 zu erhalten, kann ein Überblendungsverfahren verwendet werden, das zwischen verschiedenen diskreten Octree-LODs L durch lineare Interpolation der entsprechenden vorhergesagten Abstände überblendet: d ^ L ˜ = ( 1 α ) d ^ L * + α d ^ L * + 1
    Figure DE102021131289A1_0011
    wobei L* = [L̃] und α = L̃ - [L̃] der Bruchteil ist, der einen gleichmäßigen Übergang zwischen den LODs ermöglicht. Dieses einfache Überblendungsschema kann für SDFs verwendet werden, funktioniert aber in einigen Situationen möglicherweise nicht gut für Dichte oder Belegung und kann für bestimmte Netze oder Punktwolken schlecht definiert sein. Bei mindestens einer Ausführungsform kann einen kontinuierlicheren LOD L̃ zur Renderzeit festgelegt werden, wie es nachfolgend beschrieben ist.
  • Bei mindestens einer Ausführungsform kann versucht werden, sicherzustellen, dass jedes diskrete Level L des SVO eine gültige Geometrie darstellt, indem jedes LOD gemeinsam trainiert wird. Dies kann in einem Beispiel dadurch erreicht werden, dass individuelle Verluste bei jedem Level berechnet und über die Level hinweg summiert werden, wie es gegeben sein kann durch: J ( θ , z ) = E x , d L 1 L m a x ƒ θ L ( [ x , z ( x , L , z ) ] ) d 2
    Figure DE102021131289A1_0012
  • Die Verlustfunktion kann dann stochastisch in Bezug auf θ1:Lmax und z optimiert sein. Der Erwartungswert kann mit Hilfe von Wichtigkeitsstichproben für die Punkte x ∈ B geschätzt werden. Es können Stichproben aus einer Mischung von drei Verteilungen verwendet werden: gleichmäßige Stichproben in B, Oberflächenstichproben und gestörte Oberflächenstichproben.
  • In einem beispielhaften Verfahren wurde ein Training mit einem NVIDIA Tesla V100 GPU unter Verwendung von PyTorch durchgeführt, wobei einige Operationen in CUDA implementiert waren. Die Modelle wurden mit einem Adam-Optimierer mit einer Lernrate von 0,001 trainiert, wobei eine Menge von 500 000 Punkten verwendet wurde, die bei jeder Epoche mit einer Stapelgröße von 512 abgetastet wurden. Diese Punkte waren in einer 2:2:1-Aufteilung von flächengewichteten Oberflächenstichproben, gestörten Oberflächenstichproben mit Gaußschem Rauschen mit a- = 0,01 und gleichmäßigen Zufallspunkten im Begrenzungsvolumen B = [-1, 1]3 verteilt. Die Darstellung wurde trainiert, indem die Verlustfunktionen der Abstände bei jedem LOD summiert wurden. Ein Trainingsverfahren verwendete beispielsweise den L2-Abstand als Verlustfunktion. Für ShapeNet150 und Thingi32 wurden alle LODs gemeinsam trainiert. Für TurboSquid16 wurde ein progressives Schema verwendet, bei dem der höchste LOD zuerst trainiert wird und alle 100 Epochen ein neuer trainierbarer Level £-1 hinzugefügt wird. Dieses Trainingsschema begünstigt geringfügig niedrigere LODs für komplexere Formen. Es wurden auch Experimente mit verschiedenen Hyperparametern für verschiedene Architekturen (insbesondere für die Basislinien) durchgeführt, aber es wurde festgestellt, dass diese Hyperparametersätze bei allen Modellen gut funktionierten.
  • Bei mindestens einer Ausführungsform kann das Training mit Basisformen, wie z. B. Netzen, beginnen. Es kann ein dreieckiges Netz verwendet werden, das kein inneres Dreieck hat und praktisch eine Schale um ein Objekt darstellt. Sobald diese Form erhalten worden ist, können die Oberfläche und die Umgebung abgetastet werden. Dazu wird eine Art Verteilung über die Dreiecke konstruiert und ein Sampling von beispielsweise 100.000-200.000 Punkten auf oder nahe der Oberfläche ausgeführt. Bei mindestens einer Ausführungsform gibt es verschiedene Kategorien von Punkten für die Eingabe in das neuronale Netz. Diese können sowohl Oberflächenpunkte, bei denen ein Punkt auf einem der Dreiecke liegt, als auch oberflächennahe Punkte, wie z. B. Punkte auf der Oberfläche, die mit einem Gaußschen Rauschen gestört sein können, so dass sie nicht direkt auf der Oberfläche liegen, einschließen. Es kann ein gleichmäßiges Punkt-Sampling-Verfahren verwendet werden, bei dem die Punkte im Einheitswürfel liegen und als Trainingspunkte verwendet werden. Es gibt auch ein Octree-Merkmalsvolumen, das mehrere verschiedene Level aufweist. Jede Ecke der Voxel in jeder Auflösung kann einen kleinen Merkmalsvektor speichern, der auch mit Gaußschem Rauschen gestört sein kann. Dies kann in einer dünnbesetzten Weise initialisiert werden, wobei die Voxel nicht initialisiert werden, wenn sie nicht irgendeine Art von Oberfläche enthalten.
  • Dieses Octree-Merkmalsvolumen und die bestimmten Punkte können verwendet werden, um die Voxel(s) zu bestimmen, zu denen jeder Punkt gehört. Dies kann bei einer großen Anzahl von Punkten während des Trainings angewendet werden. Für jeden Punkt x wird bestimmt, zu welchem Voxel bzw. zu welchen Voxeln dieser Punkt gehört. In 2 ist dargestellt, dass es mehrere Voxel mit unterschiedlicher Auflösung geben kann, die diesen Punkt x enthalten. In der Figur wäre V(L) das Voxel mit der niedrigsten Auflösung und V(1) das Voxel mit der höchsten Auflösung. Das System kann die Koordinaten dieser Voxel-Ecken im 3D-Raum nehmen und eine trilineare Interpolation der Merkmale an diesen Ecken für jede Auflösung durchführen. Das System kann die verschiedenen Merkmalsvektoren an diesen Ecken zumindest teilweise auf der Grundlage des Abstands gewichten. Dies kann für alle Voxel jedes Levels oder Auflösung getrennt durchgeführt werden. Dies kann zu drei Merkmalsvektoren führen, die interpoliert werden und die dann addiert werden können. Daraus ergibt sich dann ein festdimensionaler Merkmalsvektor, den man als Merkmale von mehreren Leveln oder summierte Merkmale enthaltend bezeichnen kann und der, wie besprochen, die Eingabe für ein kleines MLP darstellt. Der Vektor kann mehrdimensional sein, in einer Ausführungsform z. B. 32-dimensional. Die Eingaben für das NN, das in 2 als Oberflächenextraktor bezeichnet ist, weisen die Eingabe x auf, die mit dem Merkmal θ verkettet ist und eine höhere Dimension aufweisen kann. Dies kann an ein kleines MLP, z. B. ein einschichtiges MLP, weitergeleitet werden, das einen vorhergesagten Abstand erzeugt. Dieser vorhergesagte Abstand kann während des Trainings mit dem Ground-Truth-Abstand für diesen Punkt verglichen werden. Wenn der Punkt auf der Oberfläche liegt, sollte der Ground-Truth-Abstand ungefähr Null sein. Wenn der Abstand nicht Null ist, kann ein L2-Abstandsverlust berechnet werden, und es kann eine Rückkopplung durchgeführt werden, um die Netzwerkparameter entsprechend zu aktualisieren. Dieses Verfahren kann für jeden Punkt in der Punktwolke wiederholt werden, um die Merkmalsvektoren an jeder Ecke zu optimieren.
  • Bei mindestens einer Ausführungsform kann das Sphären-Tracing verwendet werden, um eine Darstellung direkt zu rendern, wie dies in dem beispielhaften Ansatz 300 von 3 dargestellt ist. Das Rendern einer SVObasierten SDF unter Verwendung von Sphären-Tracing kann jedoch für einige Implementierungen nicht einfach sein, zumindest weil typische SDFs auf dem gesamten ℝ3 definiert sind. Im Gegensatz dazu sind SVO-SDFs gemäß mindestens einer Ausführungsform nur für Voxel V definiert, die die Oberflächengeometrie schneiden. Daher kann eine angemessene Behandlung von Abstandsabfragen im leeren Raum erforderlich sein. Eine Möglichkeit ist die Verwendung einer konstanten Schrittgröße, wie z. B. beim Ray Marching, aber es gibt keine Garantie, dass der Trace konvergiert, da der Schritt überschwingen kann.
  • Stattdessen kann bei mindestens einer Ausführungsform zu Beginn des Bildes eine Strahl-SVO-Schnittpunktbildung durchgeführt werden (Einzelheiten siehe unten), um jedes Voxel V bei jeder Auflösung f, das von dem Strahl geschnitten wird, zu ermitteln. Wenn r(t) = x0 + td, t > 0 ein Strahl mit dem Ursprung x0 ∈ ℝ3 und der Richtung d ∈ ℝ3 ist, dann bezeichnet V(r) die bezüglich der Tiefe geordnete Menge der von r bei dem Level f geschnittenen Voxel. Jedes Voxel in V(r) kann den Index des schneidenden Strahls, die Voxelposition, das übergeordnete Voxel und Zeiger auf die acht Eckmerkmalvektoren z V ( j )
    Figure DE102021131289A1_0013
    enthalten. Zumindest bei einigen Ausführungsformen können Zeiger anstelle von Merkmalsvektoren abgerufen werden, um Speicherplatz zu sparen. Die Merkmalsvektoren können in einem abgeflachten Feld bzw. Array gespeichert sein, wobei die Zeiger in einem Initialisierungsschritt vorberechnet werden, indem über alle Voxel iteriert und entsprechende Indizes für die Merkmale in jeder Ecke gefunden werden.
  • Zumindest bei einigen Ausführungsformen kann ein adaptives Ray Stepping durchgeführt werden, wie es in 3 dargestellt ist. Für einen gegebenen Strahl in einer Sphären-Trace-Iteration k kann eine Strahl-AABB-Schnittpunktbildung mit den Voxeln in dem Ziel-LOD-Level L durchgeführt werden, um das erste Voxel V L V L ( r )
    Figure DE102021131289A1_0014
    zu finden, auf das getroffen wird, wie es für die Octree-Schnittpunktbildung 304 für ein Paar von Beispiel-Ratten dargestellt ist. Wenn x k V L ,
    Figure DE102021131289A1_0015
    dann kann das Verfahren x zum Strahl-AABB-Schnittpunkt 310 vorrücken. Wenn x k V L ,
    Figure DE102021131289A1_0016
    kann das Verfahren das Merkmalsvolumen abfragen. Alle übergeordneten Voxel V L ,
    Figure DE102021131289A1_0017
    die den gröberen Leveln ℓ ∈ {1, ..., L - 1} entsprechen, können rekursiv abgerufen werden, was zu einer Sammlung von Voxeln V 1 : L
    Figure DE102021131289A1_0018
    führt. Die trilinear interpolierten Merkmale können dann an jedem Knoten summiert werden. Es ist zu beachten, dass die übergeordneten Knoten bei mindestens einer Ausführungsform konstruktionsbedingt immer vorhanden sind. Das MLP fθL erzeugt dann einen konservativen Abstand d̂L, um sich in Richtung d zu bewegen, wie es für das Sphären-Tracing 306 entlang des relevanten Abschnitts der Oberfläche dargestellt ist, und es kann ein standardisierter Sphären-Tracing-Schritt durchgeführt werden, wie er gegeben sein kann durch: x k + 1 x k + d ^ L
    Figure DE102021131289A1_0019
  • Wenn xk+1 nun im leeren Raum liegt, kann das Verfahren zum nächsten Voxel in VL(r) entlang des Strahls springen und den Strahl r verwerfen, wenn es keins gibt. Wenn sich xk+1 innerhalb eines Voxels befindet, kann ein Sphären-Tracing-Schritt durchgeführt werden. Dieses Verfahren kann so lange wiederholt werden, bis alle Strahlen verfehlen oder ein Haltekriterium erreicht ist, um einen Trefferpunkt x* ∈ S aufzunehmen, wie es in 3 dargestellt ist. Dieses adaptive schrittweise Vorgehen ermöglicht eine dünnbesetzte Voxelstruktur, da niemals leerer Raum abgefragt werden muss, was einen minimalen Speicherbedarf für unsere Darstellung ermöglicht.
  • Bei mindestens einer Ausführungsform, wie in 3 dargestellt, kann, wenn sich der Abfragepunkt innerhalb eines Voxels (z. B. x) befindet, eine trilineare Interpolation auf allen entsprechenden Voxeln bis zur Basis-Octree-Auflösung durchgeführt werden, um einen Sphären-Tracing-Schritt 306 zu berechnen. Liegt der Abfragepunkt außerhalb eines Voxels (z. B. y), kann die Strahlen-AABB-Schnittpunktbildung verwendet werden, um zum nächsten Voxel zu springen.
  • Bei mindestens einer Ausführungsform kann ein dünnbesetzter Strahlen-Octree-Schnittpunktbildungs-Algorithmus verwendet werden, der eine breitenorientierte (breadth-first) Traversierungs-Strategie und parallele Scan-Kerne einsetzt, um auf moderner Grafikhardware eine hohe Leistung zu erzielen. Algorithmus 1 stellt einen Pseudocode für einen solchen Algorithmus bereit.
  • Figure DE102021131289A1_0020
  • Dieser Algorithmus erzeugt zunächst eine Menge von Strahlen R (indiziert mit i) und speichert sie in einem Feld N(0) von Strahlen-Voxel-Paaren, die Vorschläge für Strahlen-Voxel-Schnittpunkte sind. Der Algorithmus kann jedes N i ( 0 ) N ( 0 )
    Figure DE102021131289A1_0021
    mit dem Wurzelknoten initialisieren, dem Voxel des Octrees auf dem obersten Level (Zeile 2). Anschließend iteriert der Algorithmus über die Octree-Level I (Zeile 3). In jeder Iteration bestimmt der Algorithmus die Strahl-Voxel-Paare, die in DECIDE zu Überschneidungen bzw. Schnittpunkten führen. DECIDE gibt eine Liste von Entscheidungen D zurück, wobei Dj = 1 ist, wenn der Strahl das Voxel schneidet, und ansonsten Dj = 0 gilt (Zeile 4). Anschließend berechnet der Algorithmus mit EXCLUSIVESUM die exklusive Summe S der Liste D, die dann in die nächsten beiden Unterprogramme eingespeist wird (Zeile 5). Wenn der Algorithmus noch nicht den gewünschten oder angestrebten LOD-Level L erreicht hat, kann er SUBDIVIDE verwenden, um die nächste Liste N(ℓ+1) mit Kind-Voxeln derjenigen N j ( l )
    Figure DE102021131289A1_0022
    zu füllen, die der Strahl schneidet, und die Iteration fortsetzen (Zeile 9). Andernfalls kann der Algorithmus COMPACTIFY verwenden, um alle N i ( 0 )
    Figure DE102021131289A1_0023
    zu entfernen, die nicht zu einem Schnittpunkt führen (Zeile 7). Das Ergebnis dieses beispielhaften Algorithmus ist eine kompakte, bezüglich der Tiefe geordnete Liste von Strahlen-Voxel-Schnittpunkten für jeden Level des Octrees. Es sei angemerkt, dass durch ein Analysieren des Oktanten eines Raums, wobei der Strahlenursprung innerhalb des Voxels fällt, die untergeordneten Voxel bzw. Kind-Voxel so angeordnet werden können, dass die Liste von Strahlen-Voxel-Paaren N(L) nach dem Abstand zum Strahlenursprung geordnet ist. Der LOD L̂ kann für ein Rendering mit einer Tiefenheuristik gewählt werden, wobei L̃ linear mit benutzerdefinierten Schwellenwerten abhängig von der Entfernung zum Objekt verläuft.
  • Es wurden mehrere Experimente durchgeführt, um die Effektivität einer solchen Architektur zu demonstrieren. In einem Beispiel wurde ein Modell zunächst an 3D-Mesh-Modelle aus Datensätzen angepasst, die ShapeNet, Thingi10K und ausgewählte Modelle aus TurboSquid aufweisen, und sowohl anhand von 3D-Geometrie-basierten Metriken als auch anhand von gerenderten Bildraummetriken bewertet. Es wurde gezeigt, dass ein solches Modell in der Lage ist, komplexe analytische vorzeichenbehaftete Abstandsfunktionen mit einzigartigen Eigenschaften von Shadertoy anzupassen. Es wurden auch Ergebnisse zum Rendering in Echtzeit, zur Verallgemeinerung auf mehrere Formen und zur Vereinfachung der Geometrie erzielt. Das in diesem Experiment verwendete MLP hatte nur eine einzige verborgene Schicht mit der Dimension h = 128 mit einer ReLU-Aktivierung in der Zwischenschicht und war damit deutlich kleiner und schneller abzuarbeiten als die in den Basislinien zum Vergleich verwendeten Netzwerke. In mindestens einem Experiment wurde eine SVO-Merkmalsdimension von m = 32 verwendet, wobei die Voxelmerkmale mit einem Gauß-Prior mit σ = 0,01 initialisiert wurden.
  • In mindestens einem Experiment wurde auch die Inferenzleistung einer solchen Architektur bewertet, sowohl mit als auch ohne einen Rendering-Algorithmus gemäß mindestens einer Ausführungsform. Die Leistung wurde zunächst mit einem naiven Python-basierten Sphären-Tracing-Algorithmus in PyTorch bewertet, wobei für einen fairen Vergleich in allen Baselines die gleiche Implementierung verwendet wurde. Für die Python-Version der Darstellung, die im Experiment verwendet wurde, und gemäß einer oder mehrerer Ausführungsformen der vorliegenden Offenbarung wurden die Merkmale auf einem dichten Voxel-Gitter gespeichert, da ein naiver Sphären-Tracer nicht mit Dünnbesetztheit (Sparsity) umgehen kann. Für die optimierte Implementierung wurde die Leistung dieser Darstellung mit einem Renderer demonstriert, der mit libtorch, CUB und CUDA implementiert wurde. Es wurde festgestellt, dass sowohl der naive PyTorch-Renderer als auch der auf dünne Besetzung optimierte bzw. sparse-optimierte CUDA-Renderer besser abschneiden als die Basislinien. Insbesondere sind die Bildzeiten bei dünner Besetzung mehr als 100-mal schneller als DeepSDF, während eine bessere visuelle Qualität mit weniger Parametern erreicht wird. Es wurde auch beobachtet, dass die Bildzeiten mit abnehmendem LOD für einen naiven Renderer deutlich abnehmen, für einen optimierten Renderer jedoch weniger. Dies ist zumindest teilweise auf die Tatsache zurückzuführen, dass der Engpass beim Rendering nicht bei der Strahlen-Octree-Schnittpunktbildung liegt - was von der Anzahl der Voxel abhängt - sondern eher in der MLP-Inferenz und diversen Speicher-I/O.
  • Es wurde auch beobachtet, dass ein solcher Oberflächenextraktionsmechanismus auf mehrere Formen verallgemeinert werden kann, selbst wenn er auf eine einzige Form trainiert wurde. Dies ist wichtig, da das Laden verschiedener Gewichte pro Objekt große Mengen an Speicherbewegungen verursacht, was teuer ist. Mit einem allgemeinen Mechanismus zur Oberflächenextraktion können die Gewichte im Voraus geladen werden und Voxel mit mehreren Auflösungen können bei Bedarf eingespeist werden. Es wurde beobachtet, dass eine solche Darstellung besser abschneidet, selbst bei großen Netzen bzw. Netzwerken, die an einzelne Formbeispiele überangepasst sind. Bei dem niedrigsten LOD hat der Oberflächenextraktor erwartungsgemäß Schwierigkeiten, gute Oberflächen zu rekonstruieren; die Merkmale werden bei niedrigeren LODs zunehmend anspruchsvoller und komplexer.
  • Es wurden auch Experimente durchgeführt, um zu bewerten, wie niedrige LODs im Vergleich zu klassischen Netzvereinfachungsalgorithmen abschneiden, insbesondere bei der Kantenreduzierung in Libigl. In einem Experiment wurden Algorithmen zur Netzvereinfachung anstelle von Algorithmen zur Netzkomprimierung verglichen, da das Modell auch von der Komprimierung profitieren kann und die Netzdekodierung zusätzliche Laufzeitkosten verursacht. In einem Experiment wurden zunächst die Auswirkungen auf den Speicher untersucht. Es wurde ein konservatives Flächenbudget berechnet, um die Netz-Darstellung zu begünstigen. Es wurde festgestellt, dass mit abnehmendem Speicherbudget der relative Vorteil eines solchen Verfahrens in Bezug auf die Wahrnehmungsqualität zunimmt, was durch den bildbasierten Normalfehler belegt wird. Die SDF kann glatte Merkmale leicht darstellen, während das Netz unter Diskretisierungsfehlern leiden kann, wenn das Flächenbudget abnimmt. Eine solche Darstellung kann auch gleichmäßig zwischen LODs übergehen, was bei Netzen oft schwierig ist.
  • Architekturen, die solche neuronalen SDFs verwenden, können für Anwendungen wie die Erstellung von Inhalten besonders attraktiv sein. Moderne Spiele und Filme können sehr komplizierte und detaillierte Objekte enthalten. Die Erstellung dieser Inhalte ist sehr kostspielig, da ein Entwickler in der Regel Künstler einstellen muss, die viel Zeit für die Erstellung hochwertiger Inhalte benötigen. Wenn differenzierbares Rendering mit vorzeichenbehafteten Abstandsfunktionen verwendet werden kann, wobei diese SDFs bereits differenzierbar sind, kann eine Menge von Bildern mit mehreren Ansichten verwendet werden, um tatsächliche 3D-Objektdarstellungen zu erzeugen, was für die Erstellung von Inhalten von Vorteil ist. Da diese Darstellung differenzierbar ist, kann sie in ein generatives Modell oder einen anderen Generator eingebaut werden. Es kann ein anderes neuronales Netz, z. B. ein generatives adversariales Netz (GAN), verwendet werden, das diese 3D-Formen erzeugt. Während des Trainings kann ein NN-basierter Diskriminator verwendet werden, um festzustellen, ob diese Form wirklich wie ein realistisches 3D-Objekt aussieht.
  • Ein solches System kann mit einer primären Darstellung in der Produktion verwendet werden. Wie bereits erwähnt, haben diese neuronalen SDFs den Vorteil, dass sie sehr speichereffizient sind. Wenn eine Anwendung hauptsächlich durch den Speicher, aber nicht unbedingt durch die Rechenleistung begrenzt ist, könnte ein Entwickler bereit sein, die höheren Kosten für das Rendern dieser Objekte zu zahlen, solange er eine geringere Speicherbandbreite erhält.
  • Ein solcher Ansatz kann auch in Anwendungen wie der Robotik oder der Automatisierungstechnik zum Einsatz kommen, wo der On-Board-Speicher möglicherweise begrenzt ist. Dies kann bei Einrichtungen wie autonomen (oder halbautonomen) Fahrzeugen oder Robotern, z. B. in Lagerhäusern, nützlich sein. Anwendungen finden sich auch in Bereichen wie dem verteilten oder Cloud-Rendering, wo viele verschiedene Knoten zusammenarbeiten, um eine Szene zu rendern, und die Kommunikation zwischen den Knoten sehr teuer ist. Ein solcher Ansatz kann verwendet werden, um verschiedene Asset-Größen miteinander zu synchronisieren und diese Assets in einem viel effizienteren, platzsparenden Format zu komprimieren. Da bei einem solchen Ansatz durch die Verteilung der Arbeitslast auf mehrere verschiedene Knoten ohnehin Rechenressourcen eingespart werden, kann der Gewinn durch die Einsparung von Speicher größer sein als durch die Einsparung von Rechenleistung.
  • 4 zeigt ein Beispiel für eine Rendering-Pipeline 400, die zum Rendern von Bildern oder Einzelbildern unter Verwendung von Verfahren, wie sie hier erörtert werden, verwendet werden kann. In diesem Beispiel können Szenendaten 402 für ein aktuell zu renderndes Bild als Eingabe für eine Strahlenerzeugungskomponente 404 eines Ray-Tracers empfangen werden. Das Ergebnis des Ray-Tracers kann als Eingabe für eine Traversierungs- und Schnittpunkt-Analysekomponente 406 verwendet werden. Bei mindestens einer Ausführungsform kann diese dazu verwendet werden, um Abfragepunkte für eine Analyse zu identifizieren. Wie bereits erwähnt, kann eine solche Komponente die Schnittpunkte verschiedener Strahlen mit einer oder mehreren Oberflächen im Bild identifizieren, was zumindest teilweise auf Einfall, Blockierung, Reflexion oder Brechung zurückzuführen sein kann. Die Oberflächen können mit einer oder mehreren Abstandsfunktionen, wie es hier beschrieben ist, dargestellt werden. Diese Information kann einem oder mehreren Shadern 408 zur Verfügung gestellt werden, die die Pixelfarben für die verschiedenen Pixel des Bildes zumindest teilweise auf der Grundlage dieser Beleuchtungs- und Schnittpunktinformationen (zusammen mit anderen Informationen wie Farbe, Textur usw.) feststellen können. Die Ergebnisse können von einem Akkumulationsmodul 410 oder einer Komponente zum Erzeugen eines Ausgabebildes 412 mit einer gewünschten Größe, Auflösung oder einem gewünschten Format akkumuliert werden.
  • 5A veranschaulicht ein beispielhaftes Verfahren 500, das gemäß mindestens einer Ausführungsform zum Rendern einer komplexen Oberfläche verwendet werden kann. Es sollte klar sein, dass für dieses und andere hier vorgestellte Verfahren zusätzliche, weniger oder alternative Schritte in ähnlicher oder abweichender Reihenfolge oder zumindest teilweise parallel im Rahmen der verschiedenen Ausführungsformen durchgeführt werden können, sofern nicht ausdrücklich etwas anderes angegeben ist. In diesem Beispiel werden Szenedaten für ein Bild eines zu rendernden Inhalts erhalten 502. Dabei kann es sich, neben anderen Optionen, um ein Einzelbild in einer Video- oder Animationssequenz oder um ein einzelnes Bild handeln. Für diese Szene (oder Videosequenz usw.) kann ein zu verwendender Detaillevel (LOD) bestimmt werden 504. Der dreidimensionale (oder anderweitig dimensionale) Raum kann 506 in eine Anzahl von Voxeln unterteilt werden, von denen jeder einen Knoten bei einem Level eines Octrees oder einer anderen hierarchischen Darstellung darstellt, die dem bestimmten LOD entspricht. Anschließend kann ein Merkmalsvolumen 508 generiert oder anderweitig bestimmt werden, das nur diejenigen Voxel bei jedem Level aufweist, die einen Oberflächenabschnitt enthalten. Anschließend kann eine Menge von Abfragepunkten 510 für die Oberfläche bestimmt werden. Wie bereits erwähnt, kann dies mithilfe eines Ray-Tracings erfolgen, um Schnittpunkte mit einem oder mehreren Abschnitten der Oberfläche zu ermitteln. Für jeden der ermittelten Abfragepunkte kann dann eine Menge von Voxeln 512 für die verschiedenen Level des Octrees bestimmt werden. Unter Verwendung der Merkmalsdaten von den bestimmten Voxeln kann eine trilineare Interpolation 514 durchgeführt und ein abgeleiteter Abstand 516 unter Verwendung eines kleinen MLPs oder eines anderen derartigen Netzwerks bestimmt werden. Diese abgeleiteten Abstände können dann bei 518 verwendet werden, um diese komplexe Oberfläche im aktuellen Bild und in Echtzeit zu rendern.
  • 5B zeigt ein weiteres Beispiel für ein Verfahren zum Rendern einer Oberfläche, das gemäß verschiedener Ausführungsformen verwendet werden kann. In diesem Beispiel wird eine komplexe Oberfläche, die gerendert werden soll, bestimmt 552, wobei die „Komplexität“ einer Oberfläche auf der Grundlage von Faktoren wie Größe, Form und Variation, neben anderen solchen Optionen, bestimmt werden kann. Bei einigen Ausführungsformen kann ein Komplexitätsschwellenwert verwendet werden, um zu bestimmen, ob eine Form komplex ist, so dass dieses Verfahren verwendet werden sollte. Diese komplexe Oberfläche kann in eine Sammlung kleinerer Oberflächenpatchs unterteilt werden 554, wobei jedes Oberflächenpatch einen Abschnitt der komplexen Oberfläche darstellt. Ein kleines neuronales Netz und/oder eine neuronale Abstandsfunktion kann verwendet werden 556, um jedes Oberflächenpatch darzustellen. Diese Oberflächenpatchs können dann in eine einzige Darstellung der komplexen Oberfläche decodiert 558 und zum Rendern dieser Oberfläche verwendet werden.
  • Bei mindestens einer Ausführungsform kann der Detaillierungsgrad bzw. Detaillevel (LOD) für ein Objekt auf einer Einzelbildbasis bestimmt werden oder zumindest im Laufe der Zeit variieren. Dies kann zumindest bei einigen Anwendungen von Vorteil sein, da ein Objekt im Laufe der Zeit unterschiedliche Detaillevel oder Komplexität aufweisen kann. So kann beispielsweise ein weit entfernter Baum durch einen relativ einfachen Umriss dargestellt werden. Nähert sich der Baum jedoch einer virtuellen Kamera, nimmt die Komplexität bzw. der Detaillevel zu, bis hin zur Auflösung einzelner Blätter und Äste. Daher kann es von Vorteil sein, den LOD für diesen Baum zu verschiedenen Zeitpunkten des Rendering-Verfahrens anzupassen. Ein solches Verfahren kann Ressourcen sparen, indem nur ein angemessener Detaillevel für Objekte in einer Szene verwendet wird und dieser Detaillevel gegebenenfalls reduziert wird. Ein Benutzer oder Entwickler kann auch Werte oder Bereiche für Detaillevel für bestimmte Objekte oder Abschnitte einer Szene festlegen, z. B. nur bis zu einem maximalen LOD für Hintergrundobjekte oder eine bestimmte Art von Objekten, usw. Verschiedene Versionen eines Objekts können auch mit diesen verschiedenen LODs gerendert werden, und ein solcher Ansatz ermöglicht eine sanfte Interpolation zwischen den Leveln. Ein solcher Ansatz kann mit dem Speicher und der Komplexität skaliert werden und ermöglicht es einem System, Ressourcen dort einzusetzen, wo sie die größte Wirkung erzielen.
  • Wie erörtert, sind verschiedene hier vorgestellte Ansätze leichtgewichtig genug, um auf einer Client-Einrichtung, wie einem Personal Computer oder einer Spielkonsole, in Echtzeit ausgeführt zu werden. Eine solche Verarbeitung kann mit Inhalten durchgeführt werden, die auf dieser Client-Einrichtung generiert oder von einer externen Quelle empfangen werden, wie z. B. ein Streaming eines Inhalts, der über mindestens ein Netzwerk empfangen wird. Bei der Quelle kann es sich um eine beliebige geeignete Quelle handeln, wie z. B. einen Spiele-Host, einen Anbieter von Streaming-Medien, einen Drittanbieter von Inhalten oder eine andere Client-Einrichtung, neben anderen derartigen Optionen. In einigen Fällen kann die Verarbeitung und/oder das Rendering dieser Inhalte durch eine dieser anderen Einrichtungen, Systeme oder Entitäten erfolgen und dann der Client-Einrichtung (oder einem anderen Empfänger) zur Präsentation oder einer anderen Verwendung bereitgestellt werden.
  • Als Beispiel zeigt 6 eine beispielhafte Netzwerkkonfiguration 600, die zur Bereitstellung, Erzeugung oder Änderung von Inhalten verwendet werden kann. Bei mindestens einer Ausführungsform kann eine Client-Einrichtung 602 Inhalte für eine Sitzung unter Verwendung von Komponenten einer Inhaltsanwendung 604 auf der Client-Einrichtung 602 und lokal auf dieser Client-Einrichtung gespeicherten Daten erzeugen. Bei mindestens einer Ausführungsform kann eine Inhaltsanwendung 624 (z. B. eine Bilderzeugungs- oder -bearbeitungsanwendung), die auf einem Inhaltsserver 620 (z. B. einem Cloud- oder Edge-Server) ausgeführt wird, eine Sitzung initiieren, die zumindest der Client-Einrichtung 602 zugeordnet ist, wobei ein Sitzungsmanager und in einer Benutzerdatenbank 634 gespeicherte Benutzerdaten verwendet werden können, und sie kann bewirken, dass Inhalte 632 von einem Inhaltsmanager 626 bestimmt werden. Ein Szenengenerierungsmodul 628, das sich auf eine Animations- oder Spieleanwendung beziehen kann, kann Inhalte generieren oder abrufen, die bereitzustellen sind, wobei zumindest ein Abschnitt dieses Inhalts unter Verwendung einer Rendering-Engine 630 zu rendern ist, falls dies für diese Art von Inhalt oder Plattform erforderlich ist, und an die Client-Einrichtung 602 unter Verwendung eines geeigneten Übertragungsmanagers 622 übertragen wird, um per Download, Streaming oder einen anderen derartigen Übertragungskanal zu senden. Bei mindestens einer Ausführungsform kann dieser Inhalt 632 Assets aufweisen, die von einer Rendering-Engine verwendet werden können, um eine Szene auf der Grundlage eines bestimmten Szenengraphs oder einer anderen solchen Rendering-Anleitung zu rendern. Bei mindestens einer Ausführungsform kann die Client-Einrichtung 602, die diese Inhalte empfängt, diese Inhalte einer entsprechenden Inhaltsanwendung 604 zur Verfügung stellen, die auch oder alternativ ein Szenengenerierungsmodul 612 oder eine Rendering-Engine 614 (falls erforderlich) aufweisen kann, um mindestens einen Teil dieser Inhalte für die Präsentation über die Client-Einrichtung 602 zu rendern, wie z. B. Bild- oder Videoinhalte über eine Anzeige 606 und Audioinhalte, wie z. B. Töne und Musik, über mindestens eine Audiowiedergabeeinrichtung 608, wie z. B. Lautsprecher oder Kopfhörer. Bei mindestens einer Ausführungsform kann zumindest ein Teil dieser Inhalte bereits auf der Client-Einrichtung 602 gespeichert, auf dieser gerendert oder für diese zugänglich sein, so dass eine Übertragung über das Netzwerk 640 zumindest für diesen Teil des Inhalts nicht erforderlich ist, beispielsweise wenn dieser Inhalt zuvor heruntergeladen oder lokal auf einer Festplatte oder einer optischen Platte gespeichert wurde. Bei mindestens einer Ausführungsform kann ein Übertragungsmechanismus wie Datenstreaming verwendet werden, um diese Inhalte vom Server 620 oder einer Inhaltsdatenbank 634 zur Client-Einrichtung 602 zu übertragen. Bei mindestens einer Ausführungsform kann zumindest ein Teil dieses Inhalts von einer anderen Quelle bezogen oder gestreamt werden, z. B. von einem Inhaltsdienst 660 eines Drittanbieters, der auch eine Inhaltsanwendung 662 zur Erzeugung oder Bereitstellung von Inhalten aufweisen kann. Bei mindestens einer Ausführungsform können Abschnitte dieser Funktionalität unter Verwendung mehrerer Recheneinrichtungen oder mehrerer Prozessoren innerhalb einer oder mehrerer Recheneinrichtungen ausgeführt werden, die beispielsweise eine Kombination aus CPUs und GPUs aufweisen können.
  • Bei mindestens einer Ausführungsform weist die Inhaltsanwendung 624 einen Inhaltsmanager 626 auf, der Inhalte bestimmen oder analysieren kann, bevor diese Inhalte an die Client-Einrichtung 602 übertragen werden. Bei mindestens einer Ausführungsform kann der Inhaltsmanager 626 auch andere Komponenten aufweisen oder mit diesen zusammenarbeiten, die in der Lage sind, die bereitzustellenden Inhalte zu erzeugen, zu ändern oder zu verbessern. Bei mindestens einer Ausführungsform kann dies eine Rendering-Engine zum Rendern von Bild- oder Videoinhalten aufweisen. Bei mindestens einer Ausführungsform kann eine Bild-, Video- oder Szene-Erzeugungskomponente 628 verwendet werden, um ein Bild, ein Video oder einen anderen Mediainhalt zu erzeugen. Bei mindestens einer Ausführungsform kann eine Verbesserungskomponente 630, die auch ein neuronales Netz aufweisen kann, eine oder mehrere Verbesserungen an diesem Inhalt vornehmen, wie es hier diskutiert und vorgeschlagen wird. Bei mindestens einer Ausführungsform kann der Inhaltsmanager 626 veranlassen, dass dieser Inhalt (verbessert oder nicht) an die Client-Einrichtung 602 übertragen wird. Bei mindestens einer Ausführungsform kann eine Inhaltsanwendung 604 auf der Client-Einrichtung 602 auch Komponenten wie eine Rendering-Engine, einen Bild-oder Video-Generator 612 und ein Inhaltsverbesserungsmodul 614 aufweisen, so dass jede oder alle diese Funktionen zusätzlich oder alternativ auf der Client-Einrichtung 602 ausgeführt werden können. Bei mindestens einer Ausführungsform kann eine Inhaltsanwendung 662 auf einem Inhaltsdienstsystem 660 eines Drittanbieters ebenfalls eine solche Funktionalität aufweisen. Bei mindestens einer Ausführungsform können die Orte, an denen zumindest ein Teil dieser Funktionalität ausgeführt wird, konfigurierbar sein oder von Faktoren wie dem Typ der Client-Einrichtung 602 oder der Verfügbarkeit einer Netzwerkverbindung mit geeigneter Bandbreite abhängen. Bei mindestens einer Ausführungsform kann ein System zur Inhaltserstellung jede geeignete Kombination von Hardware und Software an einem oder mehreren Standorten aufweisen. Bei mindestens einer Ausführungsform können generierte Bild- oder Videoinhalte mit einer oder mehreren Auflösungen auch anderen Client-Einrichtungen 650 zur Verfügung gestellt oder zugänglich gemacht werden, beispielsweise zum Herunterladen oder Streaming von einer Medienquelle, die eine Kopie dieser Bild- oder Videoinhalte speichert. Bei mindestens einer Ausführungsform kann dies eine Übertragung von Bildern von Spielinhalten für ein Multiplayer-Spiel aufweisen, wobei verschiedene Client-Einrichtungen diese Inhalte mit unterschiedlichen Auflösungen, einschließlich einer oder mehrerer Super-Auflösungen, anzeigen können.
  • In diesem Beispiel können diese Client-Einrichtungen alle geeigneten Recheneinrichtungen aufweisen, wie z. B. einen Desktop-Computer, ein Notebook, eine Set-Top-Box, eine Streaming-Einrichtung, eine Spielkonsole, ein Smartphone, einen Tablet-Computer, ein VR-Headset, eine AR-Brille, einen tragbaren Computer oder einen Smart-TV. Jede Client-Einrichtung kann eine Anfrage über mindestens ein kabelgebundenes oder drahtloses Netzwerk übermitteln, das unter anderem das Internet, ein Ethernet, ein lokales Netzwerk (LAN) oder ein Mobilfunknetz aufweisen kann. In diesem Beispiel können diese Anforderungen an eine Adresse übermittelt werden, die einem Cloud-Anbieter zugeordnet ist, der eine oder mehrere elektronische Ressourcen in einer Cloud-Anbieter-Umgebung betreibt oder steuert, die beispielsweise ein Datenzentrum oder eine Serverfarm aufweisen kann. Bei mindestens einer Ausführungsform kann die Anfrage von mindestens einem Edge-Server empfangen oder verarbeitet werden, der sich an einem Netzrand befindet und außerhalb mindestens einer der Umgebung des Cloud-Anbieters zugeordneten Sicherheitsschicht liegt. Auf diese Weise kann die Latenzzeit verringert werden, indem die Client-Einrichtungen in die Lage versetzt werden, mit Servern zu interagieren, die sich in größerer Nähe befinden, während gleichzeitig die Sicherheit der Ressourcen in der Umgebung des Cloud-Anbieters verbessert wird.
  • Bei mindestens einer Ausführungsform kann ein solches System für die Durchführung von grafischen Rendering-Vorgängen verwendet werden. Bei anderen Ausführungsformen kann ein solches System für andere Zwecke verwendet werden, beispielsweise für die Bereitstellung von Bild- oder Videoinhalten, zum Testen oder Validieren autonomer Maschinenanwendungen oder für die Durchführung von Deep-Learning-Operationen. Bei mindestens einer Ausführungsform kann ein solches System mit einer Edge-Einrichtung implementiert sein oder eine oder mehrere virtuelle Maschinen (VMs) umfassen. Bei mindestens einer Ausführungsform kann ein solches System zumindest teilweise in einem Datenzentrum oder zumindest teilweise unter Verwendung von Cloud-Computing-Ressourcen implementiert sein.
  • INFERENZ- UND TRAININGSLOGIK
  • 7A zeigt die Inferenz- und/oder Trainingslogik 715, die verwendet wird, um Inferencing- und/oder Trainingsoperationen in Verbindung mit einer oder mehreren Ausführungsformen durchzuführen. Einzelheiten zur Inferenz- und/oder Trainingslogik 715 werden weiter unten in Verbindung mit 7A und/oder 7B beschrieben.
  • Bei mindestens einer Ausführungsform kann die Inferenz- und/oder Trainingslogik 715 ohne Einschränkung einen Code- und/oder Datenspeicher 701 aufweisen, um Vorwärts- und/oder Ausgangsgewichte und/oder Eingangs/Ausgangsdaten und/oder andere Parameter zu speichern, um Neuronen oder Schichten eines neuronalen Netzes zu konfigurieren, das für Inferencing in Aspekten einer oder mehrerer Ausführungsformen trainiert und/oder verwendet wird. Bei mindestens einer Ausführungsform kann die Trainingslogik 715 einen Code- und/oder Datenspeicher 701 aufweisen oder mit diesem gekoppelt sein, um einen Graphencode oder eine andere Software zu speichern, die das Timing und/oder die Reihenfolge steuert, in der Gewichts- und/oder andere Parameterinformationen geladen werden, um eine Logik, einschließlich Ganzzahl- und/oder Gleitkommaeinheiten (zusammenfassend als arithmetische logische Einheiten (ALUs) bezeichnet), zu konfigurieren. Bei mindestens einer Ausführungsform lädt ein Code, z. B. ein Graphencode, Gewichtungs- oder andere Parameterinformationen in Prozessor-ALUs auf der Grundlage einer Architektur eines neuronalen Netzes, das mit dem Code korrespondiert. Bei mindestens einer Ausführungsform speichert der Code- und/oder Datenspeicher 701 Gewichtungsparameter und/oder Eingabe-/Ausgabedaten jeder Schicht eines neuronalen Netzes, das während der Vorwärtspropagation von Eingabe-/Ausgabedaten und/oder Gewichtungsparametern während des Trainings und/oder Inferencings unter Verwendung von Aspekten einer oder mehrerer Ausführungsformen trainiert oder in Verbindung mit einer oder mehrerer Ausführungsformen verwendet wird. Bei mindestens einer Ausführungsform kann jeder Abschnitt des Code- und/oder Datenspeichers 701 einen anderen On-Chip- oder Off-Chip-Datenspeicher aufweisen, einschließlich des L1-, L2- oder L3-Cachespeichers oder Systemspeichers eines Prozessors.
  • Bei mindestens einer Ausführungsform kann ein beliebiger Abschnitt des Code- und/oder Datenspeichers 701 intern oder extern zu einem oder mehreren Prozessoren oder anderen Hardware-Logikeinrichtungen oder -Schaltungen sein. Bei mindestens einer Ausführungsform kann der Code- und/oder Datenspeicher 701 ein Cache-Speicher, ein dynamischer zufällig adressierbarer Speicher („DRAM“), ein statischer zufällig adressierbarer Speicher („SRAM“), ein nicht flüchtiger Speicher (z. B. Flash-Speicher) oder ein anderer Speicher sein. Bei mindestens einer Ausführungsform kann die Entscheidung, ob der Code- und/oder Datenspeicher 701 intern oder extern zu einem Prozessor ist oder einen DRAM, SRAM, Flash oder einen anderen Speichertyp umfasst, abhängen davon, ob der Speicher auf dem Chip oder außerhalb des Chips verfügbar ist, von den Latenzanforderungen der durchgeführten Trainings- und/oder Inferencing-Funktionen, von der Stapelgröße der beim Inferencing und/oder Training eines neuronalen Netzes verwendeten Daten oder von einer Kombination dieser Faktoren.
  • Bei mindestens einer Ausführungsform kann die Inferencing- und/oder Trainingslogik 715 ohne Einschränkung einen Code- und/oder Datenspeicher 705 aufweisen, um Rückwärts- und/oder Ausgangsgewichts- und/oder Eingangs-/Ausgangsdaten zu speichern, die Neuronen oder Schichten eines neuronalen Netzes entsprechen, das in Aspekten einer oder mehrerer Ausführungsformen trainiert und/oder zum Inferencing verwendet wird. Bei mindestens einer Ausführungsform speichert der Code- und/oder Datenspeicher 705 Gewichtungsparameter und/oder Eingabe-/Ausgabedaten jeder Schicht eines neuronalen Netzes, das während einer Rückwärtspropagation von Eingabe-/Ausgabedaten und/oder Gewichtungsparametern während des Trainings und/oder Inferencings unter Verwendung von Aspekten einer oder mehrerer Ausführungsformen trainiert oder in Verbindung mit einer oder mehrerer Ausführungsformen verwendet wird. Bei mindestens einer Ausführungsform kann die Trainingslogik 715 einen Code- und/oder Datenspeicher 705 aufweisen oder mit diesem gekoppelt sein, um einen Graphencode oder eine andere Software zu speichern, die das Timing und/oder die Reihenfolge steuert, in der Gewichtungs- und/oder andere Parameterinformationen geladen werden, um die Logik zu konfigurieren, einschließlich Ganzzahl- und/oder Gleitkommaeinheiten (zusammenfassend: arithmetische logische Einheiten (ALUs)). Bei mindestens einer Ausführungsform lädt ein Code, z. B. ein Graphencode, Gewichtungs- oder andere Parameterinformationen in Prozessor-ALUs auf der Grundlage einer Architektur eines neuronalen Netzes, das mit dem Code korrespondiert. Bei mindestens einer Ausführungsform kann jeder Abschnitt des Code- und/oder Datenspeichers 705 einen anderen On-Chip- oder Off-Chip-Datenspeicher aufweisen, einschließlich des L1-, L2- oder L3-Caches eines Prozessors oder des Systemspeichers. Bei mindestens einer Ausführungsform kann ein beliebiger Teil des Code- und/oder Datenspeichers 705 intern oder extern zu einem oder mehreren Prozessoren oder anderen Hardware-Logikeinrichtungen oder - Schaltungen sein. Bei mindestens einer Ausführungsform kann der Code- und/oder Datenspeicher 705 ein Cache-Speicher, DRAM, SRAM, nicht flüchtiger Speicher (z. B. Flash-Speicher) oder ein anderer Speicher sein. Bei mindestens einer Ausführungsform kann die Entscheidung, ob der Code- und/oder Datenspeicher 705 intern oder extern zu einem Prozessor ist oder ein DRAM, SRAM, Flash oder einen anderen Speichertyp umfasst, abhängen davon, ob Speicher auf dem Chip oder außerhalb des Chips verfügbar ist, von Latenzzeiten, die für die durchgeführten Trainings- und/oder Inferencing-Funktionen erforderlich sind, von einer Stapelgröße für Daten, die beim Inferencing und/oder Training eines neuronalen Netzes verwendet werden, oder von einer Kombination dieser Faktoren.
  • Bei mindestens einer Ausführungsform können der Code- und/oder Datenspeicher 701 und der Code- und/oder Datenspeicher 705 separate Speicherstrukturen sein. Bei mindestens einer Ausführungsform können der Code- und/oder Datenspeicher 701 und der Code- und/oder Datenspeicher 705 dieselbe Speicherstruktur sein. Bei mindestens einer Ausführungsform können der Code- und/oder Datenspeicher 701 und der Code- und/oder Datenspeicher 705 teilweise dieselbe Speicherstruktur und teilweise separate Speicherstrukturen sein. Bei mindestens einer Ausführungsform kann jeder Teil des Code- und/oder Datenspeichers 701 und des Code- und/oder Datenspeichers 705 einen anderen On-Chip- oder Off-Chip-Datenspeicher aufweisen, einschließlich des L1-, L2- oder L3-Caches eines Prozessors oder des Systemspeichers.
  • Bei mindestens einer Ausführungsform kann die Inferenz- und/oder Trainingslogik 715 ohne Einschränkung eine oder mehrere arithmetische logische Einheit(en) („ALU(s)“) 710 aufweisen, einschließlich Ganzzahl- und/oder Gleitkommaeinheiten, um logische und/oder mathematische Operationen durchzuführen, die zumindest teilweise auf einem Trainings- und/oder Inferenzcode basieren oder durch diesen angezeigt werden (z. B, Graphencode), deren Ergebnis in einem Aktivierungsspeicher 720 gespeicherte Aktivierungen (z. B. Ausgabewerte von Schichten oder Neuronen innerhalb eines neuronalen Netzes) erzeugen kann, die Funktionen von in dem Code- und/oder Datenspeicher 701 und/oder in dem Code- und/oder Datenspeicher 705 gespeicherten Eingabe/Ausgabe- und/oder Gewichtungsparameterdaten sind. Bei mindestens einer Ausführungsform werden in einem Aktivierungsspeicher 720 gespeicherte Aktivierungen gemäß linearer algebraischer und/oder matrixbasierter Mathematik erzeugt, die von ALU(s) 710 als Reaktion auf Ausführungsbefehle oder anderen Code ausgeführt wird, wobei in dem Code- und/oder Datenspeicher 705 und/oder in dem Code- und/oder Datenspeicher 701 gespeicherte Gewichtungswerte als Operanden zusammen mit anderen Werten, wie z. B. Bias-Werten, Gradienteninformationen, Impulswerten oder anderen Parametern oder Hyperparametern, verwendet werden, von denen einige oder alle in dem Code- und/oder Datenspeicher 705 oder in dem Code- und/oder Datenspeicher 701 oder einem anderen Speicher auf oder außerhalb des Chips gespeichert sein können.
  • Bei mindestens einer Ausführungsform sind ALU(s) 710 in einem oder mehreren Prozessoren oder anderen Hardware-Logik-Einrichtungen oder - Schaltungen vorhanden, während bei anderen Ausführungen ALU(s) 710 extern zu einem Prozessor oder einer anderen Hardware-Logik-Einrichtung oder - Schaltung sein können, die sie verwenden (z. B. ein Co-Prozessor). Bei mindestens einer Ausführungsform können die ALUs 710 in den Ausführungseinheiten eines Prozessors oder anderweitig in einer Bank von ALUs, auf die die Ausführungseinheiten eines Prozessors zugreifen können, entweder innerhalb desselben Prozessors oder verteilt auf verschiedene Prozessoren unterschiedlichen Typs (z. B. zentrale Verarbeitungseinheiten, Grafikverarbeitungseinheiten, feste Funktionseinheiten usw.), vorhanden sein. Bei mindestens einer Ausführungsform können sich der Code- und/oder Datenspeicher 701, der Code- und/oder Datenspeicher 705 und der Aktivierungsspeicher 720 auf demselben Prozessor oder einer anderen logischen Hardware-Einrichtung oder Schaltung befinden, während sie bei einer anderen Ausführungsform in verschiedenen Prozessoren oder anderen logischen Hardware-Einrichtungen oder Schaltungen oder einer Kombination aus gleichen und verschiedenen Prozessoren oder anderen logischen Hardware-Einrichtungen oder Schaltungen untergebracht sein können. Bei mindestens einer Ausführungsform kann jeder Abschnitt des Aktivierungsspeichers 720 einen anderen On-Chip- oder Off-Chip-Datenspeicher aufweisen, einschließlich des L1-, L2- oder L3-Caches eines Prozessors oder des Systemspeichers. Darüber hinaus kann der Inferencing- und/oder Trainingscode zusammen mit anderem Code gespeichert werden, auf den ein Prozessor oder eine andere Hardware-Logik oder -Schaltung zugreifen kann und der mit Hilfe der Abruf-, Dekodier-, Planungs-, Ausführungs-, Stilllegungs- und/oder anderen logischen Schaltungen eines Prozessors abgerufen und/oder verarbeitet wird.
  • Bei mindestens einer Ausführungsform kann der Aktivierungsspeicher 720 ein Cache-Speicher, ein DRAM, ein SRAM, ein nicht flüchtiger Speicher (z. B. ein Flash-Speicher) oder ein anderer Speicher sein. Bei mindestens einer Ausführungsform kann sich der Aktivierungsspeicher 720 vollständig oder teilweise innerhalb oder außerhalb eines oder mehrerer Prozessoren oder anderer logischer Schaltungen befinden. Bei mindestens einer Ausführungsform kann die Entscheidung, ob der Aktivierungsspeicher 720 beispielsweise innerhalb oder außerhalb eines Prozessors liegt oder ein DRAM, SRAM, Flash oder einen anderen Speichertyp umfasst, abhängen davon, ob Speicher auf dem Chip oder außerhalb des Chips verfügbar ist, von Latenzzeiten, die für die Durchführung von Trainings- und/oder Inferencing-Funktionen erforderlich sind, von einer Stapelgröße von Daten, die beim Inferencing und/oder Training eines neuronalen Netzes verwendet werden, oder von einer Kombination dieser Faktoren. Bei mindestens einer Ausführungsform kann die in 7A dargestellte Inferenz- und/oder Trainingslogik 715 in Verbindung mit einer anwendungsspezifischen integrierten Schaltung („ASIC“) verwendet werden, wie z. B. der Tensorflow® Processing Unit von Google, einer Inferenzverarbeitungseinheit (IPU) von Graphcore™ oder einem Nervana®-Prozessor (z. B. „Lake Crest“) von Intel Corp. Bei mindestens einer Ausführungsform kann die in 7A dargestellte Inferenz- und/oder Trainingslogik 715 in Verbindung mit Hardware der Zentraleinheit („CPU“), der Grafikverarbeitungseinheit („GPU“) oder anderer Hardware, wie z. B. feldprogrammierbaren Gate-Arrays („FPGAs“), verwendet werden.
  • 7B zeigt die Inferenz- und/oder Trainingslogik 715 gemäß mindestens einer oder mehreren Ausführungsformen. Bei mindestens einer Ausführungsform kann die Inferenz- und/oder Trainingslogik 715 ohne Einschränkung eine Hardwarelogik aufweisen, in der Rechenressourcen in Verbindung mit Gewichtungswerten oder anderen Informationen, die einer oder mehreren Schichten von Neuronen innerhalb eines neuronalen Netzes entsprechen, dediziert oder anderweitig exklusiv verwendet werden. Bei mindestens einer Ausführungsform kann die in 7B dargestellte Inferenz- und/oder Trainingslogik 715 in Verbindung mit einer anwendungsspezifischen integrierten Schaltung (ASIC) verwendet werden, wie z. B. der Tensorflow® Processing Unit von Google, einer Inferenzverarbeitungseinheit (IPU) von Graphcore™ oder einem Nervana®-Prozessor (z. B. „Lake Crest“) von Intel Corp. Bei mindestens einer Ausführungsform kann die in 7 dargestellte Inferenz- und/oder Trainingslogik 715 in Verbindung mit einer Hardware der Zentraleinheit (CPU), der Grafikverarbeitungseinheit (GPU) oder anderer Hardware, wie z. B. FPGAs (Field Programmable Gate Arrays), verwendet werden. Bei mindestens einer Ausführungsform weist die Inferenz- und/oder Trainingslogik 715 ohne Einschränkung einen Code- und/oder Datenspeicher 701 und einen Code- und/oder Datenspeicher 705 auf, die zum Speichern von Code (z. B. Graphencode), Gewichtungswerten und/oder anderen Informationen, einschließlich Bias-Werten, Gradienteninformationen, Impulswerten und/oder anderen Parameter- oder Hyperparameterinformationen, verwendet werden können. Bei mindestens einer in 7b dargestellten Ausführungsform ist jeder der Code- und/oder Datenspeicher 701 und der Code- und/oder Datenspeicher 705 mit einer dedizierten Rechenressource verbunden, wie z. B. einer Rechenhardware 702 bzw. einer Rechenhardware 706. Bei mindestens einer Ausführungsform umfasst die Rechenhardware 702 und die Rechenhardware 706 jeweils eine oder mehrere ALUs, die mathematische Funktionen, wie lineare algebraische Funktionen, nur auf Informationen ausführen, die in dem Code- und/oder Datenspeicher 701 bzw. in dem Code- und/oder Datenspeicher 705 gespeichert sind, wobei das Ergebnis im Aktivierungsspeicher 720 gespeichert wird.
  • Bei mindestens einer Ausführungsform entsprechen die Code- und/oder Datenspeicher 701 und 705 und die entsprechende Rechenhardware 702 und 706 jeweils verschiedenen Schichten eines neuronalen Netzes, so dass die resultierende Aktivierung von einem „Speicher-/Rechenpaar 701/702“ des Code- und/oder Datenspeichers 701 und der Rechenhardware 702 als Eingabe für das „Speicher-/Rechenpaar 705/706“ des Code- und/oder Datenspeichers 705 und der Rechenhardware 706 bereitgestellt wird, um die konzeptionelle Organisation eines neuronalen Netzes zu spiegeln. Bei mindestens einer Ausführungsform können die Speicher-/Rechenpaare 701/702 und 705/706 jeweils mehr als einer Schicht eines neuronalen Netzes entsprechen. Bei mindestens einer Ausführungsform können zusätzliche Speicher-/Rechenpaare (nicht dargestellt) im Anschluss an oder parallel zu den Speicher-Rechenpaaren 701/702 und 705/706 in der Inferenz- und/oder Trainingslogik 715 vorhanden sein.
  • DATENZENTRUM
  • 8 zeigt ein Beispiel für ein Rechenzentrum bzw. Datenzentrum 800, in dem mindestens eine Ausführungsform verwendet werden kann. Bei mindestens einer Ausführungsform weist das Datenzentrum 800 eine Datenzentrumsinfrastrukturschicht 810, eine Rahmenschicht 820, eine Softwareschicht 830 und eine Anwendungsschicht 840 auf.
  • Bei mindestens einer Ausführungsform, wie es in 8 gezeigt ist, kann die Datenzentrumsinfrastrukturschicht 810 einen Ressourcen-Orchestrator 812, gruppierte Rechenressourcen 814 und Knoten-Rechenressourcen („Knoten-C.R.s“) 816(1)-816(N) aufweisen, wobei „N“ eine beliebige ganze, positive Zahl darstellt. Bei mindestens einer Ausführungsform können die Knoten-C.R.s 816(1)-816(N) eine beliebige Anzahl von Zentraleinheiten („CPUs“) oder anderen Prozessoren (einschließlich Beschleunigern, feldprogrammierbaren Gate-Arrays (FPGAs), Grafikprozessoren usw.), Speichereinrichtungen (z. B., dynamischer Festwertspeicher), Speichereinrichtungen (z. B. Festkörper- oder Festplattenlaufwerke), Netzwerk-Eingabe-/Ausgabeeinrichtungen („NW I/O“), Netzwerk-Switches, virtuelle Maschinen („VMs“), Stromversorgungsmodule und Kühlmodule, usw sein. Bei mindestens einer Ausführungsform kann es sich bei einem oder mehreren Knoten-C.R.s unter den Knoten-C.R.s 816(1)-816(N) um einen Server handeln, der über eine oder mehrere der oben erwähnten Rechenressourcen verfügt.
  • Bei mindestens einer Ausführungsform können die gruppierten Rechenressourcen 814 separate Gruppierungen von Knoten-C.R.s aufweisen, die in einem oder mehreren Racks (nicht gezeigt) oder in vielen Racks untergebracht sind, die sich in Datenzentren an verschiedenen geografischen Standorten befinden (ebenfalls nicht gezeigt). Separate Gruppierungen von Knoten-C.R.s innerhalb der gruppierten Rechenressourcen 814 können gruppierte Rechen-, Netzwerk-, Speicher- oder Storage-Ressourcen aufweisen, die zur Unterstützung einer oder mehrerer Arbeitslasten ausgestaltet oder zugewiesen werden können. Bei mindestens einer Ausführungsform können mehrere Knoten-C.R.s, die CPUs oder Prozessoren aufweisen, in einem oder mehreren Racks gruppiert sein, um Rechenressourcen zur Unterstützung einer oder mehrerer Arbeitslasten bereitzustellen. Bei mindestens einer Ausführungsform können ein oder mehrere Racks auch eine beliebige Anzahl von Stromversorgungsmodulen, Kühlmodulen und Netzwerk-Switches in beliebiger Kombination aufweisen.
  • Bei mindestens einer Ausführungsform kann der Ressourcen-Orchestrator 812 einen oder mehrere Knoten C.R.s 816(1)-816(N) und/oder gruppierte Rechenressourcen 814 konfigurieren oder anderweitig steuern. Bei mindestens einer Ausführungsform kann der Ressourcen-Orchestrator 812 eine Software-Design-Infrastruktur („SDI“)-Verwaltungseinheit für das Datenzentrum 800 aufweisen. In mindestens einer Ausführungsform kann der Ressourcen-Orchestrator Hardware, Software oder eine Kombination davon aufweisen.
  • Bei mindestens einer Ausführungsform, wie es in 8 gezeigt ist, weist die Rahmenschicht 820 einen Job Scheduler 822, einen Konfigurationsmanager 824, einen Ressourcenmanager 826 und ein verteiltes Dateisystem 828 auf. Bei mindestens einer Ausführungsform kann die Rahmenschicht 820 einen Rahmen zur Unterstützung der Software 832 der Softwareschicht 830 und/oder einer oder mehrerer Anwendungen 842 der Anwendungsschicht 840 aufweisen. Bei mindestens einer Ausführungsform kann die Software 832 oder die Anwendung(en) 842 jeweils webbasierte Dienstsoftware oder Anwendungen aufweisen, wie sie beispielsweise von Amazon Web Services, Google Cloud und Microsoft Azure bereitgestellt werden. Bei mindestens einer Ausführungsform kann es sich bei der Rahmenschicht 820 um eine Art freies und quelloffenes Software-Webanwendungs-Framework wie Apache SparkTM (im Folgenden „Spark“ genannt) handeln, das ein verteiltes Dateisystem 828 für die Verarbeitung großer Datenmengen (z. B. „Big Data“) nutzen kann, ist aber nicht darauf beschränkt. Bei mindestens einer Ausführungsform kann der Job Scheduler 822 einen Spark-Treiber aufweisen, um die Einplanung von Arbeitslasten zu erleichtern, die von verschiedenen Schichten des Datenzentrums 800 unterstützt werden. Bei mindestens einer Ausführungsform kann der Konfigurationsmanager 824 in der Lage sein, verschiedene Schichten wie die Softwareschicht 830 und die Rahmenschicht 820, die den Spark und ein verteiltes Dateisystem 828 einschließen, zur Unterstützung der Verarbeitung großer Datenmengen zu konfigurieren. Bei mindestens einer Ausführungsform kann der Ressourcenmanager 826 in der Lage sein, geclusterte oder gruppierte Computerressourcen zu verwalten, die zur Unterstützung des verteilten Dateisystems 828 und des Job Schedulers 822 zugeordnet oder zugewiesen sind. Bei mindestens einer Ausführungsform können die geclusterten oder gruppierten Rechenressourcen gruppierte Rechenressourcen 814 auf der Infrastrukturschicht 810 des Datenzentrums aufweisen. Bei mindestens einer Ausführungsform kann der Ressourcenmanager 826 mit dem Ressourcenorchestrator 812 koordiniert sein, um diese zugeordneten oder zugewiesenen Rechenressourcen zu verwalten.
  • Bei mindestens einer Ausführungsform kann die in der Softwareschicht 830 enthaltene Software 832 Software aufweisen, die zumindest von Abschnitten der Knoten C.R.s 816(1)-816(N), der gruppierten Rechenressourcen 814 und/oder des verteilten Dateisystems 828 der Rahmenschicht 820 verwendet wird. Die eine oder mehreren Arten von Software können unter anderem Internet-Suchsoftware, E-Mail-Virenscan-Software, Datenbanksoftware und Software für Streaming-Videoinhalte aufweisen.
  • Bei mindestens einer Ausführungsform kann (können) die in der Anwendungsschicht 840 enthaltene(n) Anwendung(en) 842 eine oder mehrere Arten von Anwendungen aufweisen, die von mindestens Abschnitten der Knoten C.R.s 816(1)-816(N), der gruppierten Rechenressourcen 814 und/oder des verteilten Dateisystems 828 der Rahmenschicht 820 verwendet werden. Eine oder mehrere Arten von Anwendungen können eine beliebige Anzahl von Genomanwendungen, kognitiven Berechnungen und Anwendungen für maschinelles Lernen aufweisen, einschließlich Trainings- oder Inferencing-Software, Framework-Software für maschinelles Lernen (z. B. PyTorch, TensorFlow, Caffe usw.) oder andere Anwendungen für maschinelles Lernen, die in Verbindung mit einer oder mehreren Ausführungsformen verwendet werden, sind jedoch nicht darauf beschränkt.
  • Bei mindestens einer Ausführungsform können der Konfigurationsmanager 824, der Ressourcenmanager 826 und der Ressourcen-Orchestrator 812 eine beliebige Anzahl und Art von selbstmodifizierenden Aktionen implementieren, die auf einer beliebigen Menge und einem beliebigen Typ von Daten basieren, die auf jede technisch machbare Weise erfasst wurden. Bei mindestens einer Ausführungsform können selbstmodifizierende Aktionen einen Datenzentrumsbetreiber des Datenzentrums 800 davon entlasten, möglicherweise schlechte Konfigurationsentscheidungen zu treffen und können möglicherweise nicht ausgelastete und/oder leistungsschwache Abschnitte eines Datenzentrums vermeiden.
  • Bei mindestens einer Ausführungsform kann das Datenzentrum 800 Werkzeuge, Dienste, Software oder andere Ressourcen aufweisen, um gemäß einer oder mehrerer Ausführungsformen, die hier beschrieben sind, ein oder mehrere Modelle zum maschinellen Lernen zu trainieren oder Informationen unter Verwendung eines oder mehrerer Modelle zum maschinellen Lernen, vorherzusagen oder abzuleiten. Beispielsweise kann bei mindestens einer Ausführungsform ein Modell zum maschinellen Lernen durch Berechnung von Gewichtungsparametern gemäß einer Architektur eines neuronalen Netzes unter Verwendung von Software und Rechenressourcen trainiert werden, die oben in Bezug auf das Datenzentrum 800 beschrieben wurden. Bei mindestens einer Ausführungsform können trainierte Modelle zum maschinellen Lernen, die einem oder mehreren neuronalen Netzen entsprechen, zum Ableiten oder Vorhersagen von Informationen unter Verwendung der oben beschriebenen Ressourcen in Bezug auf das Datenzentrum 800 verwendet werden, indem Gewichtungsparameter verwendet werden, die durch eine oder mehrere hier beschriebene Trainingstechniken berechnet werden.
  • Bei mindestens einer Ausführungsform kann das Datenzentrum CPUs, anwendungsspezifische integrierte Schaltungen (ASICs), GPUs, FPGAs oder andere Hardware verwenden, um ein Training und/oder Inferencing unter Verwendung der oben beschriebenen Ressourcen durchzuführen. Darüber hinaus können eine oder mehrere der oben beschriebenen Software- und/oder Hardwareressourcen als Dienst ausgestaltet sein, um Benutzern das Training oder die Durchführung von Inferencing von Informationen zu ermöglichen, wie z. B. eine Bilderkennung, Spracherkennung oder andere Dienste der künstlichen Intelligenz.
  • Die Inferenz- und/oder Trainingslogik 715 wird verwendet, um Inferencing- und/oder Trainingsoperationen in Verbindung mit einer oder mehreren Ausführungsformen durchzuführen. Einzelheiten zur Inferenz- und/oder Trainingslogik 715 werden im Folgenden in Verbindung mit den 7A und/oder 7B beschrieben. Bei mindestens einer Ausführungsform kann die Inferenz- und/oder Trainingslogik 715 in dem System der 8 für Inferencing- oder Vorhersageoperationen verwendet werden, die zumindest teilweise auf Gewichtungsparametern basieren, die unter Verwendung von Trainingsoperationen für neuronale Netze, Funktionen und/oder Architekturen neuronaler Netze oder hier beschriebener Anwendungsfälle neuronaler Netze berechnet werden.
  • Solche Komponenten können verwendet werden, um einen verbesserten Inhalt zu erzeugen, wie z.B. einen Bild- oder Videoinhalt mit hochskalierter Auflösung, reduziertem Vorhandensein von Artefakten und verbesserter visueller Qualität.
  • COMPUTERSYSTEME
  • 9 ist gemäß mindestens einer Ausführungsform ein Blockdiagramm, das ein beispielhaftes Computersystem veranschaulicht, das ein System mit miteinander verbundenen Einrichtungen und Komponenten, ein System-on-a-Chip (SOC) oder eine Kombination davon 900 sein kann, was mit einem Prozessor gebildet wird, der Ausführungseinheiten zur Ausführung eines Befehls aufweisen kann. Bei mindestens einer Ausführungsform kann das Computersystem 900 ohne Einschränkung eine Komponente, wie z. B. einen Prozessor 902, aufweisen, um Ausführungseinheiten einschließlich einer Logik zur Durchführung von Algorithmen zur Verarbeitung von Daten gemäß der vorliegenden Offenbarung einzusetzen, wie es hier beschrieben ist. Bei mindestens einer Ausführungsform kann das Computersystem 900 Prozessoren aufweisen, wie z. B. die PENTIUM®-Prozessorfamilie, XeonTM-, Itanium®-, XScaleTM- und/oder StrongARMTM-, Intel® Core™- oder Intel® Nervana™-Mikroprozessoren, die von der Intel Corporation in Santa Clara, Kalifornien, erhältlich sind, obwohl auch andere Systeme (einschließlich PCs mit anderen Mikroprozessoren, technische Workstations, Set-Top-Boxen und dergleichen) verwendet werden können. Bei mindestens einer Ausführungsform kann das Computersystem 900 eine Version des Betriebssystems WINDOWS ausführen, das von der Microsoft Corporation in Redmond, Washington, erhältlich ist, obwohl auch andere Betriebssysteme (z. B. UNIX und Linux), eingebettete Software und/oder grafische Benutzeroberflächen verwendet werden können.
  • Ausführungsformen können auch bei anderen Einrichtungen wie Handheld-Geräten und eingebetteten Anwendungen verwendet werden. Einige Beispiele für tragbare Einrichtungen weisen Mobiltelefone, Internetprotokollgeräte, Digitalkameras, persönliche digitale Assistenten („PDAs“) und tragbare PCs auf. Bei 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 andere System aufweisen, das eine oder mehrere Anweisungen gemäß mindestens einer Ausführungsform ausführen kann.
  • Bei mindestens einer Ausführungsform kann das Computersystem 900 ohne Einschränkung einen Prozessor 902 aufweisen, der ohne Einschränkung eine oder mehrere Ausführungseinheiten 908 aufweisen kann, um gemäß den hier beschriebenen Verfahren ein Training eines Modelles zum maschinellen Lernen und/oder ein Inferencing durchzuführen. Bei mindestens einer Ausführungsform ist das Computersystem 900 ein Einzelprozessor-Desktop- oder -Serversystem, aber in einer anderen Ausführungsform kann das Computersystem 900 ein Multiprozessorsystem sein. Bei mindestens einer Ausführungsform kann der Prozessor 902 ohne Einschränkung einen CISC-Mikroprozessor (Complex Instruction Set Computer), einen RISC-Mikroprozessor (Reduced Instruction Set Computing), einen VLIW-Mikroprozessor (Very Long Instruction Word), einen Prozessor, der eine Kombination von Befehlssätzen implementiert, oder eine beliebige andere Einrichtung, wie z. B. einen digitalen Signalprozessor, aufweisen. Bei mindestens einer Ausführungsform kann der Prozessor 902 mit einem Prozessorbus 910 verbunden sein, der Datensignale zwischen dem Prozessor 902 und anderen Komponenten im Computersystem 900 übertragen kann.
  • Bei mindestens einer Ausführungsform kann der Prozessor 902 ohne Einschränkung einen internen Level 1 („L1“) Cache-Speicher („Cache“) 904 aufweisen. Bei mindestens einer Ausführungsform kann der Prozessor 902 einen einzigen internen Cache oder mehrere Ebenen eines internen Caches aufweisen. Bei mindestens einer Ausführungsform kann sich der Cache-Speicher außerhalb des Prozessors 902 befinden. Andere Ausführungsformen können auch eine Kombination aus internen und externen Caches aufweisen, abhängig von der jeweiligen Implementierung und den Bedürfnissen. Bei mindestens einer Ausführungsform kann die Registerdatei 906 verschiedene Datentypen in verschiedenen Registern speichern, darunter, ohne Einschränkung, Ganzzahlregister, Gleitkommaregister, Statusregister und Befehlszeigerregister.
  • Bei mindestens einer Ausführungsform befindet sich die Ausführungseinheit 908, die ohne Einschränkung eine Logik zur Durchführung von Ganzzahl- und Gleitkommaoperationen aufweist, ebenfalls im Prozessor 902. Bei mindestens einer Ausführungsform kann der Prozessor 902 auch einen Nur-LeseSpeicher („ROM“) für Mikrocode („ucode“) aufweisen, der Mikrocode für bestimmte Makrobefehle speichert. Bei mindestens einer Ausführungsform kann die Ausführungseinheit 908 eine Logik zur Handhabung eines gepackten Befehlssatzes 909 aufweisen. Bei mindestens einer Ausführungsform können durch das Vorhandsein eines gepackten Befehlssatzes 909 in einem Befehlssatz eines Mehrzweckprozessors 902 zusammen mit einer zugehörigen Schaltung zur Ausführung von Befehlen Operationen, die von vielen Multimedia-Anwendungen verwendet werden, unter Verwendung gepackter Daten in einem Mehrzweckprozessor 902 durchgeführt werden. In einer oder mehreren Ausführungsformen können viele Multimedia-Anwendungen beschleunigt und effizienter ausgeführt werden, indem die volle Breite des Datenbusses eines Prozessors für die Durchführung von Operationen mit gepackten Daten genutzt wird, wodurch die Notwendigkeit entfällt, kleinere Dateneinheiten über den Datenbus des Prozessors zu übertragen, um eine oder mehrere Operationen mit jeweils einem Datenelement durchzuführen.
  • Bei mindestens einer Ausführungsform kann die Ausführungseinheit 908 auch in Mikrocontrollern, eingebetteten Prozessoren, Grafikeinrichtungen, DSPs und anderen Arten von Logikschaltungen verwendet werden. Bei mindestens einer Ausführungsform kann das Computersystem 900 ohne Einschränkung einen Speicher 920 aufweisen. Bei mindestens einer Ausführungsform kann der Speicher 920 als dynamische Random-Access-Memory- („DRAM“) Einrichtung, statische Random-Access-Memory- („SRAM“) Einrichtung, Flash-Speichereinrichtung oder andere Speichereinrichtung implementiert sein. Bei mindestens einer Ausführungsform kann der Speicher 920 Anweisung(en) 919 und/oder Daten 921 speichern, die durch Datensignale dargestellt werden, die vom Prozessor 902 ausgeführt werden können.
  • Bei mindestens einer Ausführungsform kann der Systemlogikchip mit dem Prozessorbus 910 und dem Speicher 920 verbunden sein. Bei mindestens einer Ausführungsform kann der Systemlogikchip ohne Einschränkung einen Speichersteuerungs-Hub („MCH“) 916 aufweisen, und der Prozessor 902 kann mit dem MCH 916 über den Prozessorbus 910 kommunizieren. Bei mindestens einer Ausführungsform kann der MCH 916 einen Speicherpfad 918 mit hoher Bandbreite zum Speicher 920 für die Befehls- und Datenspeicherung und für die Speicherung von Grafikbefehlen, Daten und Texturen bereitstellen. Bei mindestens einer Ausführungsform kann der MCH 916 Datensignale zwischen dem Prozessor 902, dem Speicher 920 und anderen Komponenten im Computersystem 900 leiten und Datensignale zwischen dem Prozessorbus 910, dem Speicher 920 und einer System-I/O 922 überbrücken. Bei mindestens einer Ausführungsform kann der Systemlogikchip einen Grafikanschluss zur Verbindung mit einer Grafiksteuerung bereitstellen. Bei mindestens einer Ausführungsform kann der MCH 916 über einen Speicherpfad 918 mit hoher Bandbreite mit dem Speicher 920 gekoppelt sein, und die Grafik-/Videokarte 912 kann über eine AGP-Verbindung 914 mit dem MCH 916 gekoppelt sein.
  • Bei mindestens einer Ausführungsform kann das Computersystem 900 einen System-I/O-Bus 922 verwenden, bei dem es sich um einen proprietären Hub-Schnittstellenbus handelt, um den MCH 916 mit dem I/O-Controller-Hub („ICH“) 930 zu verbinden. Bei mindestens einer Ausführungsform kann der ICH 930 direkte Verbindungen zu einigen I/O-Einrichtungen über einen lokalen I/O-Bus bereitstellen. Bei mindestens einer Ausführungsform kann der lokale I/O-Bus ohne Einschränkung einen Hochgeschwindigkeits-I/O-Bus zur Verbindung von Peripheriegeräten mit dem Speicher 920, dem Chipsatz und dem Prozessor 902 aufweisen. Beispiele können unter anderem einen Audiocontroller 929, einen Firmware-Hub („Flash-BIOS“) 928, einen drahtlosen Transceiver 926, einen Datenspeicher 924, eine Legacy-I/O-Steuerung 923 mit Benutzereingabe- und Tastaturschnittstellen 925, einen seriellen Erweiterungsanschluss 927, wie einen Universal Serial Bus („USB“), und eine Netzwerksteuerung 934 aufweisen. Der Datenspeicher 924 kann ein Festplattenlaufwerk, ein Diskettenlaufwerk, eine CD-ROM-Einrichtung, eine Flash-Speichereinrichtung oder eine andere Massenspeichereinrichtung umfassen.
  • Bei mindestens einer Ausführungsform weist 9 ein System auf, das miteinander verbundene Hardware-Einrichtungen oder „Chips“ aufweist, während bei anderen Ausführungen 9 ein beispielhaftes System on a Chip („SoC“) darstellen kann. Bei mindestens einer Ausführungsform können die Einrichtungen mit proprietären Verbindungen, standardisierten Verbindungen (z. B. PCle) oder einer Kombination davon verbunden sein. Bei mindestens einer Ausführungsform sind eine oder mehrere Komponenten des Computersystems 900 über Compute Express Link (CXL)-Verbindungen miteinander verbunden.
  • Die Inferenz- und/oder Trainingslogik 715 wird verwendet, um Inferencing- und/oder Trainingsoperationen in Verbindung mit einer oder mehreren Ausführungsformen durchzuführen. Einzelheiten zur Inferenz- und/oder Trainingslogik 715 werden nachstehend in Verbindung mit den 7A und/oder 7B beschrieben. Bei mindestens einer Ausführungsform kann die Inferenz- und/oder Trainingslogik 715 im System der 9 für Inferencing- oder Vorhersageoperationen verwendet werden, die zumindest teilweise auf Gewichtungsparametern basieren, die unter Verwendung von Trainingsoperationen für neuronale Netze, Funktionen und/oder Architekturen neuronaler Netze oder hier beschriebener Anwendungsfälle neuronaler Netze berechnet wurden.
  • Solche Komponenten können verwendet werden, um einen verbesserten Inhalt zu erzeugen, wie z.B. einen Bild- oder Videoinhalt mit hochskalierter Auflösung, reduziertem Vorhandensein von Artefakten und verbesserter visueller Qualität.
  • 10 ist ein Blockdiagramm, das eine elektronische Einrichtung 1000 zur Verwendung eines Prozessors 1010 gemäß mindestens einer Ausführungsform zeigt. Bei mindestens einer Ausführungsform kann die elektronische Einrichtung 1000 beispielsweise und ohne Einschränkung ein Notebook, ein Tower-Server, ein Rack-Server, ein Blade-Server, ein Laptop, ein Desktop, ein Tablet, ein mobiles Gerät, ein Telefon, ein eingebetteter Computer oder jede andere geeignete elektronische Einrichtung sein.
  • Bei mindestens einer Ausführungsform kann das System 1000 ohne Einschränkung einen Prozessor 1010 aufweisen, der kommunikativ mit einer beliebigen Anzahl oder Art von Komponenten, Peripheriegeräten, Modulen oder Einrichtungen verbunden ist. Bei mindestens einer Ausführungsform ist der Prozessor 1010 über einen Bus oder eine Schnittstelle gekoppelt, wie z.B. einen 1°C-Bus, einen System-Management-Bus („SMBus“), einen Low-Pin-Count-Bus (LPC), ein Serial-Peripheral-Interface („SPI“), einen High-Definition-Audio-Bus („HDA“), einen Serial-Advance-Technology-Attachment-Bus („SATA“), einen Universal-Serial-Bus („USB“) (Versionen 1, 2, 3) oder einen Universal-Asynchronous-Receiver/Transmitter-Bus („UART“). Bei mindestens einer Ausführungsform zeigt 10 ein System, das miteinander verbundene Hardware-Einrichtungen oder „Chips“ aufweist, während bei anderen Ausführungsformen 10 ein beispielhaftes System on a Chip („SoC“) zeigen kann. Bei mindestens einer Ausführungsform können die in 10 dargestellten Einrichtungen mit proprietären Verbindungen, standardisierten Verbindungen (z. B. PCle) oder einer Kombination davon miteinander verbunden sein. Bei mindestens einer Ausführungsform sind eine oder mehrere Komponenten von 10 über Compute-Express-Link-Verbindungen (CXL) miteinander verbunden.
  • Bei mindestens einer Ausführungsform kann 10 aufweisen eine Anzeige 1024, einen Touchscreen 1025, ein Touchpad 1030, eine Near Field Communications-Einheit („NFC“) 1045, einen Sensor-Hub 1040, einen Wärmesensor 1046, einen Express-Chipsatz („EC“) 1035, ein Trusted Platform Module („TPM“) 1038, BIOS/Firmware/Flash-Speicher („BIOS, FW Flash“) 1022, ein DSP 1060, ein Laufwerk 1020 wie eine Solid State Disk („SSD“) oder eine Festplatte („HDD“), eine drahtlose lokale Netzwerkeinheit („WLAN“) 1050, eine Bluetooth-Einheit 1052, eine drahtlose Wide Area Network-Einheit („WWAN“) 1056, ein Global Positioning System (GPS) 1055, eine Kamera („USB 3.0-Kamera“) 1054, wie z. B. eine USB 3.0-Kamera, und/oder eine Low Power Double Data Rate („LPDDR“)-Speichereinheit („LPDDR3“) 1015, die z. B. im LPDDR3-Standard implementiert ist. Diese Komponenten können in jeder geeigneten Weise implementiert sein.
  • Bei mindestens einer Ausführungsform können andere Komponenten über die oben beschriebenen Komponenten mit dem Prozessor 1010 kommunikativ verbunden sein. Bei mindestens einer Ausführungsform können ein Beschleunigungsmesser 1041, ein Umgebungslichtsensor („ALS“) 1042, ein Kompass 1043 und ein Gyroskop 1044 kommunikativ mit dem Sensor-Hub 1040 verbunden sein. Bei mindestens einer Ausführungsform können ein Wärmesensor 1039, ein Lüfter 1037, eine Tastatur 1046 und ein Touchpad 1030 kommunikativ mit dem EC 1035 verbunden sein. Bei mindestens einer Ausführungsform können Lautsprecher 1063, Kopfhörer 1064 und ein Mikrofon („mic“) 1065 kommunikativ mit einer Audioeinheit („audio codec and dass d amp“) 1062 gekoppelt sein, die ihrerseits kommunikativ mit dem DSP 1060 gekoppelt sein kann. Bei mindestens einer Ausführungsform kann die Audioeinheit 1064 beispielsweise und ohne Einschränkung einen Audiocodierer/-decoder („Codec“) und einen Verstärker der Klasse D aufweisen. Bei mindestens einer Ausführungsform kann die SIM-Karte („SIM“) 1057 mit der WWAN-Einheit 1056 kommunikativ gekoppelt sein. Bei mindestens einer Ausführungsform können Komponenten wie die WLAN-Einheit 1050 und die Bluetooth-Einheit 1052 sowie die WWAN-Einheit 1056 in einem Next Generation Form Factor („NGFF“) implementiert sein.
  • Die Inferenz- und/oder Trainingslogik 715 wird verwendet, um Inferencing- und/oder Trainingsoperationen in Verbindung mit einer oder mehreren Ausführungsformen durchzuführen. Einzelheiten zur Inferenz- und/oder Trainingslogik 715 werden im Folgenden in Verbindung mit den 7a und/oder 7b beschrieben. Bei mindestens einer Ausführungsform kann die Inferenz- und/oder Trainingslogik 715 im System der 10 für Inferencing- oder Vorhersageoperationen verwendet werden, die zumindest teilweise auf Gewichtungsparametern basieren, die unter Verwendung von Trainingsoperationen für neuronale Netze, Funktionen und/oder Architekturen neuronaler Netze oder hier beschriebener Anwendungsfälle neuronaler Netze berechnet werden.
  • Solche Komponenten können verwendet werden, um einen verbesserten Inhalt zu erzeugen, wie z.B. einen Bild- oder Videoinhalt mit hochskalierter Auflösung, reduziertem Vorhandensein von Artefakten und verbesserter visueller Qualität.
  • 11 ist ein Blockdiagramm eines Verarbeitungssystems gemäß mindestens einer Ausführungsform. Bei mindestens einer Ausführungsform weist das System 1100 einen oder mehrere Prozessoren 1102 und einen oder mehrere Grafikprozessoren 1108 auf und kann ein Einzelprozessor-Desktop-System, ein Multiprozessor-Workstation-System oder ein Server-System mit einer großen Anzahl von Prozessoren 1102 oder Prozessorkernen 1107 sein. Bei mindestens einer Ausführungsform ist das System 1100 eine Verarbeitungsplattform, die in einen integrierten System-on-a-Chip (SoC)-Schaltkreis zur Verwendung in mobilen, tragbaren oder eingebetteten Einrichtungen integriert ist.
  • Bei mindestens einer Ausführungsform kann das System 1100 eine serverbasierte Spielplattform, eine Spielkonsole, einschließlich einer Spiel- und Medienkonsole, eine mobile Spielkonsole, eine Handheld-Spielkonsole oder eine Online-Spielkonsole aufweisen oder darin integriert sein. Bei mindestens einer Ausführungsform ist das System 1100 ein Mobiltelefon, ein Smartphone, eine Recheneinrichtung für Tablets oder eine mobile Interneteinrichtung. Bei mindestens einer Ausführungsform kann das Verarbeitungssystem 1100 auch eine tragbare Einrichtung aufweisen, mit dieser gekoppelt oder in diese integriert sein, wie z.B. eine tragbare intelligente Uhr, eine intelligente Brille, eine Augmented-Reality-Einrichtung oder eine Virtual-Reality-Einrichtung. Bei mindestens einer Ausführungsform ist das Verarbeitungssystem 1100 eine Fernseh- oder Set-Top-Box-Einrichtung mit einem oder mehreren Prozessoren 1102 und einer von einem oder mehreren Grafikprozessoren 1108 erzeugten grafischen Schnittstelle.
  • Bei mindestens einer Ausführungsform weisen ein oder mehrere Prozessoren 1102 jeweils einen oder mehrere Prozessorkerne 1107 auf, um Befehle zu verarbeiten, die bei ihrer Ausführung Operationen für System- und Benutzersoftware durchführen. Bei mindestens einer Ausführungsform ist jeder des einen oder der mehreren Prozessorkerne 1107 so ausgestaltet, dass er einen bestimmten Befehlssatz 1109 verarbeitet. Bei mindestens einer Ausführungsform kann der Befehlssatz 1109 das Complex Instruction Set Computing (CISC), das Reduced Instruction Set Computing (RISC) oder das Rechnen über ein Very Long Instruction Word (VLIW) ermöglichen. Bei mindestens einer Ausführungsform können die Prozessorkerne 1107jeweils einen anderen Befehlssatz 1109 verarbeiten, der Befehle aufweisen kann, um die Emulation anderer Befehlssätze zu ermöglichen. Bei mindestens einer Ausführungsform kann der Prozessorkern 1107 auch andere verarbeitende Einrichtungen aufweisen, z. B. einen digitalen Signalprozessor (DSP).
  • Bei mindestens einer Ausführungsform weist der Prozessor 1102 einen Cache-Speicher 1104 auf. Bei mindestens einer Ausführungsform kann der Prozessor 1102 einen einzigen internen Cache-Speicher oder mehrere Ebenen von internen Cache-Speichern aufweisen. Bei mindestens einer Ausführungsform wird der Cache-Speicher von verschiedenen Komponenten des Prozessors 1102 gemeinsam genutzt. Bei mindestens einer Ausführungsform verwendet der Prozessor 1102 auch einen externen Cache (z.B. einen Level-3 (L3) Cache oder Last Level Cache (LLC)) (nicht dargestellt), der unter Verwendung bekannter Cache-Kohärenztechniken von den Prozessorkernen 1107 gemeinsam genutzt werden kann. Bei mindestens einer Ausführungsform ist zusätzlich eine Registerdatei 1106 im Prozessor 1102 vorhanden, die verschiedene Registertypen zur Speicherung unterschiedlicher Datentypen aufweisen kann (z. B. Ganzzahlregister, Gleitkommaregister, Statusregister und ein Befehlszeigerregister). Bei mindestens einer Ausführungsform kann die Registerdatei 1106 Allzweckregister oder andere Register aufweisen.
  • Bei mindestens einer Ausführungsform ist (sind) ein oder mehrere Prozessor(en) 1102 mit einem oder mehreren Schnittstellenbus(sen) 1110 gekoppelt, um Kommunikationssignale wie Adress-, Daten- oder Steuersignale zwischen dem Prozessor 1102 und anderen Komponenten im System 1100 zu übertragen. Bei mindestens einer Ausführungsform kann der Schnittstellenbus 1110 ein Prozessorbus sein, wie z.B. eine Version eines Direct Media Interface (DMI)-Busses. Bei mindestens einer Ausführungsform ist die Schnittstelle 1110 nicht auf einen DMI-Bus beschränkt und kann einen oder mehrere Peripheral Component Interconnect-Busse (z.B. PCI, PCI Express), Speicherbusse oder andere Arten von Schnittstellenbussen aufweisen. Bei mindestens einer Ausführungsform weist (weisen) ein Prozessor(en) 1102 eine integrierte Speichersteuerung 1116 und einen Plattformsteuerungs-Hub 1130 auf. Bei mindestens einer Ausführungsform erleichtert die Speichersteuerung 1116 die Kommunikation zwischen einer Speichereinrichtung und anderen Komponenten des Systems 1100, während der Plattformsteuerungs-Hub (PCH) 1130 Verbindungen zu I/O-Einrichtungen über einen lokalen I/O-Bus bereitstellt.
  • Bei mindestens einer Ausführungsform kann die Speichereinrichtung 1120 ein dynamischer Direktzugriffsspeicher (DRAM), ein statischer Direktzugriffsspeicher (SRAM), ein Flash-Speicher, ein Phasenwechsel-Speicher oder eine andere Einrichtung mit geeigneter Leistung sein, um als Prozessspeicher zu dienen. Bei mindestens einer Ausführungsform kann die Speichereinrichtung 1120 als Systemspeicher für das System 1100 arbeiten, um Daten 1122 und Anweisungen 1121 zur Verwendung zu speichern, wenn ein oder mehrere Prozessoren 1102 eine Anwendung oder einen Prozess ausführen. Bei mindestens einer Ausführungsform ist die Speichersteuerung 1116 auch mit einem optionalen externen Grafikprozessor 1112, der mit einem oder mehreren Grafikprozessoren 1108 in den Prozessoren 1102 kommunizieren kann, gekoppelt, um Grafik- und Medienoperationen durchzuführen. Bei mindestens einer Ausführungsform kann eine Anzeigeeinrichtung 1111 an den/die Prozessor(en) 1102 angeschlossen sein. Bei mindestens einer Ausführungsform kann die Anzeigeeinrichtung 1111 eine oder mehrere interne Anzeigeeinrichtungen aufweisen, z. B. in einer mobilen elektronischen Einrichtung oder in einem Laptop, oder in einer externen Anzeigeeinrichtung, die über eine Anzeigeschnittstelle (z. B. DisplayPort usw.) angeschlossen ist. Bei mindestens einer Ausführungsform kann die Anzeigeeinrichtung 1111 eine am Kopf montierte Anzeige (HMD) aufweisen, z. B. eine stereoskopische Anzeigeeinrichtung zur Verwendung in Virtual-Reality-Anwendungen (VR) oder Augmented-Reality-Anwendungen (AR).
  • Bei mindestens einer Ausführungsform ermöglicht der Plattformsteuerungs-Hub 1130 den Anschluss von Peripheriegeräten an die Speichereinrichtung 1120 und den Prozessor 1102 über einen Hochgeschwindigkeits-I/O-Bus. Bei mindestens einer Ausführungsform weisen die I/O-Peripheriegeräte unter anderem eine Audio-Steuerung 1146, eine Netzwerksteuerung 1134, eine Firmware-Schnittstelle 1128, einen drahtlosen Transceiver 1126, Berührungssensoren 1125 und eine Einrichtung zur Datenspeicherung 1124 (z. B. Festplattenlaufwerk, Flash-Speicher usw.) auf. Bei mindestens einer Ausführungsform kann die Datenspeichereinrichtung 1124 über eine Speicherschnittstelle (z. B. SATA) oder über einen Peripheriebus wie einen Peripheral Component Interconnect Bus (z. B. PCI, PCI Express) angeschlossen sein. Bei mindestens einer Ausführungsform können die Berührungssensoren 1125 Touchscreen-Sensoren, Drucksensoren oder Fingerabdrucksensoren aufweisen. Bei mindestens einer Ausführungsform kann der drahtlose Transceiver 1126 ein Wi-Fi-Transceiver, ein Bluetooth-Transceiver oder ein Mobilfunk-Transceiver wie ein 3G-, 4G- oder Long Term Evolution (LTE)-Transceiver sein. Bei mindestens einer Ausführungsform ermöglicht die Firmware-Schnittstelle 1128 die Kommunikation mit der System-Firmware und kann z. B. eine einheitliche erweiterbare Firmware-Schnittstelle (UEFI) sein. Bei mindestens einer Ausführungsform kann die Netzwerksteuerung 1134 eine Netzwerkverbindung mit einem kabelgebundenen Netzwerk ermöglichen. Bei mindestens einer Ausführungsform ist eine Hochleistungs-Netzwerksteuerung (nicht dargestellt) mit dem Schnittstellenbus 1110 gekoppelt. Bei mindestens einer Ausführungsform ist die Audio-Steuerung 1146 eine mehrkanalige High-Definition-Audio-Steuerung. Bei mindestens einer Ausführungsform weist das System 1100 eine optionale Legacy-I/O-Steuerung 1140 zur Kopplung von Legacy-Einrichtungen (z. B. Personal System 2 (PS/2)) mit dem System auf. Bei mindestens einer Ausführungsform kann der Plattformsteuerungs-Hub 1130 auch an eine oder mehrere Universal Serial Bus (USB)-Steuerungen 1142 angeschlossen sein, die Eingabeeinrichtungen wie Kombinationen 1143 von Tastatur und Maus, eine Kamera 1144 oder andere USB-Eingabeeinrichtungen verbinden.
  • Bei mindestens einer Ausführungsform kann eine Instanz der Speichersteuerung 1116 und des Plattformsteuerungs-Hubs 1130 in einen diskreten externen Grafikprozessor, wie den externen Grafikprozessor 1112, integriert sein. Bei mindestens einer Ausführungsform kann der Plattformsteuerungs-Hub 1130 und/oder die Speichersteuerung 1116 extern bezüglich eines oder mehrerer Prozessors/en 1102 sein. Zum Beispiel kann das System 1100 bei mindestens einer Ausführungsform eine externe Speichersteuerung 1116 und einen Plattformsteuerungs-Hub 1130 aufweisen, der als Speichersteuerungs-Hub und Peripherie-Steuerungs-Hub innerhalb eines Systemchipsets ausgestaltet sein kann, das mit dem/den Prozessor(en) 1102 kommuniziert.
  • Die Inferenz- und/oder Trainingslogik 715 wird verwendet, um Inferencing- und/oder Trainingsoperationen in Verbindung mit einer oder mehreren Ausführungsformen durchzuführen. Einzelheiten zur Inferenz- und/oder Trainingslogik 715 werden weiter unten in Verbindung mit den 7A und/oder 7B beschrieben. Bei mindestens einer Ausführungsform können Abschnitte oder die gesamte Inferenz- und/oder Trainingslogik 715 in den Grafikprozessor 1500 integriert sein. Zum Beispiel können bei mindestens einer Ausführungsform die hier beschriebenen Trainings- und/oder Inferencing-Verfahren eine oder mehrere ALUs verwenden, die in einem Grafikprozessor enthalten sind. Darüber hinaus können bei mindestens einer Ausführungsform die hier beschriebenen Inferencing- und/oder Trainingsoperationen unter Verwendung einer anderen als der in 7A oder 7B dargestellten Logik durchgeführt werden. Bei mindestens einer Ausführungsform können Gewichtungsparameter in einem On-Chip- oder Off-Chip-Speicher und/oder in Registern (dargestellt oder nicht dargestellt) gespeichert sein, die ALUs eines Grafikprozessors konfigurieren, um einen oder mehrere hier beschriebene Algorithmen zum maschinellen Lernen, Architekturen für neuronale Netze, Anwendungsfälle oder Trainingsverfahren durchzuführen.
  • Solche Komponenten können verwendet werden, um einen verbesserten Inhalt zu erzeugen, wie z.B. einen Bild- oder Videoinhalt mit hochskalierter Auflösung, reduziertem Vorhandensein von Artefakten und verbesserter visueller Qualität.
  • 12 ist ein Blockdiagramm eines Prozessors 1200 mit einem oder mehreren Prozessorkernen 1202A-1202N, einer integrierten Speichersteuerung 1214 und einem integrierten Grafikprozessor 1208, gemäß mindestens einer Ausführungsform. Bei mindestens einer Ausführungsform kann der Prozessor 1200 zusätzliche Kerne bis hin zu und einschließlich des zusätzlichen Kerns 1202N aufweisen, was durch gestrichelte Kästchen dargestellt ist. Bei mindestens einer Ausführungsform weist jeder der Prozessorkerne 1202A-1202N eine oder mehrere interne Cache-Einheiten 1204A-1204N auf. Bei mindestens einer Ausführungsform hat jeder Prozessorkern auch Zugriff auf eine oder mehrere gemeinsam genutzte Cache-Einheiten 1206.
  • Bei mindestens einer Ausführungsform stellen die internen Cache-Einheiten 1204A-1204N und die gemeinsam genutzten Cache-Einheiten 1206 eine Cache-Speicherhierarchie innerhalb des Prozessors 1200 dar. Bei mindestens einer Ausführungsform können die Cache-Speichereinheiten 1204A-1204N mindestens eine Ebene von Befehls- und Datencache innerhalb jedes Prozessorkerns und eine oder mehrere Ebenen von gemeinsam genutztem Mid-Level-Cache, wie z. B. eine Ebene 2 (L2), Ebene 3 (L3), Ebene 4 (L4) oder andere Cache-Ebenen, aufweisen, wobei eine höchste Cache-Ebene vor dem externen Speicher als LLC klassifiziert ist. Bei mindestens einer Ausführungsform hält die Cache-Kohärenzlogik die Kohärenz zwischen verschiedenen Cache-Einheiten 1206 und 1204A-1204N aufrecht.
  • Bei mindestens einer Ausführungsform kann der Prozessor 1200 auch einen Satz von einer oder mehreren Bussteuerungseinheiten 1216 und einen Systemagenten-Kern 1210 aufweisen. Bei mindestens einer Ausführungsform verwalten eine oder mehrere Bussteuerungseinheiten 1216 einen Satz von Peripheriebussen, wie einen oder mehrere PCI- oder PCI-Express-Busse. Bei mindestens einer Ausführungsform stellt der Systemagentenkern 1210 Verwaltungsfunktionen für verschiedene Prozessorkomponenten bereit. Bei mindestens einer Ausführungsform weist der Systemagenten-Kern 1210 eine oder mehrere integrierte Speichersteuerungen 1214 auf, um den Zugriff auf verschiedene externe Speichereinrichtungen (nicht dargestellt) zu verwalten.
  • Bei mindestens einer Ausführungsform schließt einer oder schließen mehrere der Prozessorkerne 1202A-1202N eine Unterstützung für gleichzeitiges Multithreading ein. Bei mindestens einer Ausführungsform weist der Systemagenten-Kern 1210 Komponenten zur Koordinierung und zum Betrieb der Kerne 1202A-1202N während der Multithreading-Verarbeitung auf. Bei mindestens einer Ausführungsform kann der Systemagentenkern 1210 zusätzlich eine Leistungssteuerungseinheit (PCU) aufweisen, die Logik und Komponenten zur Regelung eines oder mehrerer Leistungszustände der Prozessorkerne 1202A-1202N und des Grafikprozessors 1208 aufweist.
  • Bei mindestens einer Ausführungsform weist der Prozessor 1200 zusätzlich den Grafikprozessor 1208 auf, um Grafikverarbeitungsoperationen durchzuführen. Bei mindestens einer Ausführungsform ist der Grafikprozessor 1208 mit gemeinsamen Cache-Einheiten 1206 und dem Systemagenten-Kern 1210 gekoppelt, was eine oder mehrere integrierte Speichersteuerungen 1214 einschließt. Bei mindestens einer Ausführungsform weist der Systemagenten-Kern 1210 auch eine Anzeigesteuerung 1211 auf, um die Ausgabe des Grafikprozessors an ein oder mehrere gekoppelte Anzeigen zu steuern. Bei mindestens einer Ausführungsform kann die Anzeigesteuerung 1211 auch ein separates Modul sein, das über mindestens eine Zwischenverbindung mit dem Grafikprozessor 1208 verbunden ist, oder sie kann in den Grafikprozessor 1208 integriert sein.
  • Bei mindestens einer Ausführungsform wird eine ringbasierte Verbindungseinheit 1212 zur Kopplung interner Komponenten des Prozessors 1200 verwendet. Bei mindestens einer Ausführungsform kann eine alternative Verbindungseinheit verwendet werden, wie z. B. eine Punkt-zu-Punkt-Verbindung, eine geschaltete Verbindung oder andere Techniken. Bei mindestens einer Ausführungsform ist der Grafikprozessor 1208 über eine I/O-Verbindung 1213 mit der Ringverbindung 1212 verbunden.
  • Bei mindestens einer Ausführungsform stellt die I/O-Verbindung 1213 mindestens eine von mehreren Arten von I/O-Verbindungen dar, einschließlich einer On-Package-I/O-Verbindung, die die Kommunikation zwischen verschiedenen Prozessorkomponenten und einem eingebetteten Hochleistungsspeichermodul 1218, wie z. B. einem eDRAM-Modul, unterstützt. Bei mindestens einer Ausführungsform verwenden jeder der Prozessorkerne 1202A-1202N und der Grafikprozessor 1208 eingebettete Speichermodule 1218 als gemeinsamen Last Level Cache.
  • Bei mindestens einer Ausführungsform sind die Prozessorkerne 1202A-1202N homogene Kerne, die eine gemeinsame Befehlssatzarchitektur ausführen. Bei mindestens einer Ausführungsform sind die Prozessorkerne 1202A-1202N in Bezug auf die Befehlssatzarchitektur (ISA) heterogen, wobei ein oder mehrere Prozessorkerne 1202A-1202N einen gemeinsamen Befehlssatz ausführen, während ein oder mehrere andere Kerne der Prozessorkerne 1202A-1202N eine Teilmenge eines gemeinsamen Befehlssatzes oder einen anderen Befehlssatz ausführen. Bei mindestens einer Ausführungsform sind die Prozessorkerne 1202A-1202N in Bezug auf die Mikroarchitektur heterogen, wobei ein oder mehrere Kerne mit einem relativ höheren Stromverbrauch mit einem oder mehreren Leistungskernen mit einem niedrigeren Stromverbrauch gekoppelt sind. Bei mindestens einer Ausführungsform kann der Prozessor 1200 auf einem oder mehreren Chips oder als integrierte SoC-Schaltung implementiert sein.
  • Die Inferenz- und/oder Trainingslogik 715 wird verwendet, um Inferencing- und/oder Trainingsoperationen in Verbindung mit einer oder mehreren Ausführungsformen durchzuführen. Einzelheiten zur Inferenz- und/oder Trainingslogik 715 sind im Folgenden in Verbindung mit den 7a und/oder 7b bereitgestellt. Bei mindestens einer Ausführungsform können Abschnitte oder die Gesamtheit der Inferenz- und/oder Trainingslogik 715 in dem Prozessor 1200 integriert sein. Zum Beispiel können bei mindestens einer Ausführungsform die hier beschriebenen Trainings- und/oder Inferencing-Verfahren eine oder mehrere der ALUs verwenden, die im Grafikprozessor 1512, in den Grafikkernen 1202A-1202N oder in anderen Komponenten in 12 vorhanden sind. Darüber hinaus können bei mindestens einer Ausführungsform die hier beschriebenen Inferencing- und/oder Trainingsoperationen unter Verwendung einer anderen als der in den 7A oder 7B dargestellten Logik durchgeführt werden. Bei mindestens einer Ausführungsform können Gewichtungsparameter in einem On-Chip- oder Off-Chip-Speicher und/oder Registern (dargestellt oder nicht dargestellt) gespeichert sein, die ALUs des Grafikprozessors 1200 konfigurieren, um einen oder mehrere hier beschriebene Algorithmen zum maschinellen Lernen, Architekturen für neuronale Netze, Anwendungsfälle oder Trainingstechniken durchzuführen.
  • Solche Komponenten können verwendet werden, um einen verbesserten Inhalt zu erzeugen, wie z.B. einen Bild- oder Videoinhalt mit hochskalierter Auflösung, reduziertem Vorhandensein von Artefakten und verbesserter visueller Qualität.
  • VIRTUALISIERTE RECHENPLATTFORM
  • 13 ist ein beispielhaftes Datenflussdiagramm für ein Verfahren 1300 der Erzeugung und des Einsatzes einer Bildverarbeitungs- und Inferencing-Pipeline bei mindestens einer Ausführungsform. Bei mindestens einer Ausführungsform kann das Verfahren 1300 zur Verwendung mit bildgebenden Einrichtungen, Verarbeitungseinrichtungen und/oder anderen Einrichtungstypen in einer oder mehreren Einrichtungen 1302 eingesetzt werden. Das Verfahren 1300 kann in einem Trainingssystem 1304 und/oder einem Einsatzsystem 1306 ausgeführt werden. Bei mindestens einer Ausführungsform kann das Trainingssystem 1304 verwendet werden, um das Training, den Einsatz und die Implementierung von Modellen des maschinellen Lernens (z. B. neuronale Netze, Objekterkennungsalgorithmen, Computer-Vision-Algorithmen usw.) zur Verwendung im Einsatzsystem 1306 durchzuführen. Bei mindestens einer Ausführungsform kann das Einsatzsystem 1306 so ausgestaltet sein, dass es Verarbeitungs- und Rechenressourcen auf eine verteilte Computerumgebung verlagert, um die Infrastrukturanforderungen in der Einrichtung 1302 zu reduzieren. Bei mindestens einer Ausführungsform können eine oder mehrere Anwendungen in einer Pipeline Dienste (z. B. Inferenz, Visualisierung, Rechenleistung, KI usw.) des Einsatzsystems 1306 während der Ausführung von Anwendungen nutzen oder aufrufen.
  • Bei mindestens einer Ausführungsform können einige der in fortgeschrittenen Verarbeitungs- und Inferencing-Pipelines verwendeten Anwendungen Modelle zum maschinellen Lernen oder andere KI verwenden, um einen oder mehrere Verarbeitungsschritte durchzuführen. Bei mindestens einer Ausführungsform können Modelle zum maschinellen Lernen in der Einrichtung 1302 unter Verwendung von Daten 1308 (z. B. Bildgebungsdaten) trainiert werden, die in der Einrichtung 1302 erzeugt (und auf einem oder mehreren PACS-Servern (Picture Archiving and Communication System) in der Einrichtung 1302 gespeichert) wurden, sie können unter Verwendung von Bildgebungs- oder Sequenzierungsdaten 1308 aus einer anderen Einrichtung oder einer Kombination davon trainiert werden. Bei mindestens einer Ausführungsform kann das Trainingssystem 1304 verwendet werden, um Anwendungen, Dienste und/oder andere Ressourcen für die Erzeugung funktionierender, einsatzfähiger Modelle zum maschinellen Lernen für das Einsatzsystem 1306 bereitzustellen.
  • Bei mindestens einer Ausführungsform kann die Modellregistrierung 1324 durch einen Objektspeicher unterstützt werden, der die Versionierung und Objektmetadaten unterstützen kann. Bei mindestens einer Ausführungsform kann der Zugriff auf den Objektspeicher beispielsweise über eine mit dem Cloud-Speicher (z. B. Cloud 1426 von 14) kompatible Anwendungsprogrammierschnittstelle (API) innerhalb einer Cloud-Plattform erfolgen. Bei mindestens einer Ausführungsform können Modelle für maschinelles Lernen in der Modellregistrierung 1324 von Entwicklern oder Partnern eines Systems, das mit einer API interagiert, hochgeladen, aufgelistet, geändert oder gelöscht werden. Bei mindestens einer Ausführungsform kann eine API Zugriff auf Methoden bieten, die es Nutzern mit entsprechenden Berechtigungsnachweisen ermöglichen, Modelle mit Anwendungen zu verknüpfen, so dass Modelle als Teil der Ausführung von containerisierten Instanziierungen von Anwendungen ausgeführt werden können.
  • Bei mindestens einer Ausführungsform kann die Trainingspipeline 1404 (14) ein Szenario aufweisen, in dem die Einrichtung 1302 ihr eigenes Modell zum maschinellen Lernen trainiert oder ein bestehendes Modell zum maschinellen Lernen aufweist, das optimiert oder aktualisiert werden muss. Bei mindestens einer Ausführungsform können Bilddaten 1308 empfangen werden, die von bildgebenden Einrichtungen, Sequenziereinrichtungen und/oder anderen Einrichtungstypen erzeugt wurden. Bei mindestens einer Ausführungsform kann nach dem Empfang von Bildgebungsdaten 1308 die KI-gestützte Kennzeichnung 1310 verwendet werden, um bei der Erzeugung von Kennzeichnungen zu helfen, die den Bildgebungsdaten 1308 entsprechen und als Ground-Truth-Daten für ein Modell zum maschinellen Lernen verwendet werden sollen. Bei mindestens einer Ausführungsform kann die KI-unterstützte Kennzeichnung 1310 ein oder mehrere Modelle zum maschinellen Lernen (z. B. faltende neuronale Netze (CNNs)) aufweisen, die trainiert werden können, um Kennzeichnungen zu erzeugen, die bestimmten Typen von Bilddaten 1308 (z. B. von bestimmten Einrichtungen) entsprechen. Bei mindestens einer Ausführungsform können die Kl-gestützten Kennzeichnungen 1310 dann direkt verwendet oder mit einem Kennzeichnungswerkzeug angepasst oder feinabgestimmt werden, um Ground-Truth-Daten zu erzeugen. Bei mindestens einer Ausführungsform können die Klunterstützten Kennzeichnungen 1310, die gekennzeichneten Klinikdaten 1312 oder eine Kombination davon als Basisdaten für das Training eines Modells zum maschinellen Lernen verwendet werden. Bei mindestens einer Ausführungsform kann ein trainiertes Modell zum maschinellen Lernen als Ausgabemodell 1316 bezeichnet werden und kann vom Einsatzsystem 1306 verwendet werden, wie es hier beschrieben ist.
  • Bei mindestens einer Ausführungsform kann die Trainingspipeline 1404 (14) ein Szenario aufweisen, bei dem die Einrichtung 1302 ein Modell zum maschinellen Lernen zur Verwendung bei der Durchführung einer oder mehrerer Verarbeitungsaufgaben für eine oder mehrere Anwendungen im Einsatzsystem 1306 benötigt, die Einrichtung 1302 aber möglicherweise derzeit nicht über ein solches Modell zum maschinellen Lernen verfügt (oder nicht über ein Modell, das für solche Zwecke optimiert, effizient oder effektiv ist). Bei mindestens einer Ausführungsform kann ein vorhandenes Modell zum maschinellen Lernen aus einem Modellregister 1324 ausgewählt werden. Bei mindestens einer Ausführungsform kann das Modellregister 1324 Modelle für maschinelles Lernen aufweisen, die für die Durchführung einer Vielzahl von unterschiedlichen Inferenzaufgaben aus Bilddaten trainiert wurden. Bei mindestens einer Ausführungsform können die Modelle zum maschinellen Lernen in dem Modellregister 1324 auf Bildgebungsdaten von anderen Einrichtungen als der Einrichtung 1302 (z. B. Einrichtungen an einem anderen Standort) trainiert worden sein. Bei mindestens einer Ausführungsform können die Modelle zum maschinellen Lernen auf Bildgebungsdaten von einem Standort, zwei Standorten oder einer beliebigen Anzahl von Standorten trainiert worden sein. Bei mindestens einer Ausführungsform kann das Training, wenn es auf Bilddaten von einem bestimmten Standort trainiert wird, an diesem Standort oder zumindest in einer Weise stattfinden, die die Vertraulichkeit der Bilddaten schützt oder die Übertragung von Bilddaten außerhalb des Standorts einschränkt. Bei mindestens einer Ausführungsform kann ein Modell des maschinellen Lernens, sobald es an einem Standort trainiert - oder teilweise trainiert - wurde, zum Modellregister 1324 hinzugefügt werden. Bei mindestens einer Ausführungsform kann ein Modell zum maschinellen Lernen dann an einer beliebigen Anzahl anderer Einrichtungen neu trainiert oder aktualisiert werden, und ein neu trainiertes oder aktualisiertes Modell kann in dem Modellregister 1324 verfügbar gemacht werden. Bei mindestens einer Ausführungsform kann dann ein Modell zum maschinellen Lernen aus dem Modellregister 1324 ausgewählt - und als Ausgabemodell 1316 bezeichnet - und im Einsatzsystem 1306 verwendet werden, um eine oder mehrere Verarbeitungsaufgaben für eine oder mehrere Anwendungen eines Einsatzsystems durchzuführen.
  • Bei mindestens einer Ausführungsform, der Trainingspipeline 1404 ( 14), kann ein Szenario eine Einrichtung 1302 aufweisen, die ein Modell zum maschinellen Lernen zur Verwendung bei der Durchführung einer oder mehrerer Verarbeitungsaufgaben für eine oder mehrere Anwendungen im Einsatzsystem 1306 benötigt, aber die Einrichtung 1302 verfügt möglicherweise derzeit nicht über ein solches Modell zum maschinellen Lernen (oder verfügt möglicherweise nicht über ein Modell, das für solche Zwecke optimiert, effizient oder effektiv ist). Bei mindestens einer Ausführungsform kann ein aus dem Modellregister 1324 ausgewähltes maschinelles Lernmodell aufgrund von Unterschieden in den Populationen, der Robustheit der zum Trainieren eines Modells zum maschinellen Lernen verwendeten Trainingsdaten, der Vielfalt der Anomalien in den Trainingsdaten und/oder anderer Probleme mit den Trainingsdaten nicht für die in der Einrichtung 1302 erzeugten Bildgebungsdaten 1308 feinabgestimmt oder optimiert sein. Bei mindestens einer Ausführungsform kann die KI-gestützte Kennzeichnung 1310 zur Unterstützung bei der Erzeugung von Kennzeichnungen verwendet werden, die den Bildgebungsdaten 1308 entsprechen und als Ground-Truth-Daten für das Neutrainieren oder Aktualisieren eines Modells zum maschinellen Lernen verwendet werden. Bei mindestens einer Ausführungsform können gekennzeichnete Daten 1312 als Ground-Truth-Daten für das Training eines Modells zum maschinellen Lernen verwendet werden. Bei mindestens einer Ausführungsform kann das Umlernen oder Aktualisieren eines Modells zum maschinellen Lernen als Modelltraining 1314 bezeichnet werden. Bei mindestens einer Ausführungsform kann das Modelltraining 1314 - z. B. KI-gestützte Kennzeichnungen 1310, gekennzeichnete Klinikdaten 1312 oder eine Kombination davon - als Ground-Truth-Daten für das erneute Training oder die Aktualisierung eines Modells zum maschinellen Lernen verwendet werden. Bei mindestens einer Ausführungsform kann ein trainiertes Modell zum maschinellen Lernen als Ausgabemodell 1316 bezeichnet werden und vom Einsatzsystem 1306 verwendet werden, wie es hier beschrieben ist.
  • Bei mindestens einer Ausführungsform kann das Einsatzsystem 1306 Software 1318, Dienste 1320, Hardware 1322 und/oder andere Komponenten, Merkmale und Funktionen aufweisen. Bei mindestens einer Ausführungsform kann das Einsatzsystem 1306 einen Software-„Stack“ aufweisen, so dass die Software 1318 auf den Diensten 1320 aufgebaut sein kann und die Dienste 1320 verwenden kann, um einige oder alle Verarbeitungsaufgaben auszuführen, und die Dienste 1320 und die Software 1318 können auf der Hardware 1322 aufgebaut sein und die Hardware 1322 verwenden, um Verarbeitungs-, Speicher- und/oder andere Berechnungsaufgaben des Einsatzsystems 1306 auszuführen. Bei mindestens einer Ausführungsform kann die Software 1318 eine beliebige Anzahl von verschiedenen Containern aufweisen, wobei jeder Container eine Instanziierung einer Anwendung ausführen kann. Bei mindestens einer Ausführungsform kann jede Anwendung eine oder mehrere Verarbeitungsaufgaben in einer erweiterten Verarbeitungs- und Inferencing-Pipeline durchführen (z. B. Inferencing, Objekterkennung, Merkmalserkennung, Segmentierung, Bildverbesserung, Kalibrierung usw.). Bei mindestens einer Ausführungsform kann eine erweiterte Verarbeitungs- und Inferencing-Pipeline auf der Grundlage der Auswahl verschiedener Container definiert werden, die für die Verarbeitung von Bilddaten 1308 erwünscht oder erforderlich sind, zusätzlich zu Containern, die Bilddaten zur Verwendung durch jeden Container und/oder zur Verwendung durch die Einrichtung 1302 nach der Verarbeitung durch eine Pipeline empfangen und konfigurieren (z. B. zur Rückkonvertierung von Ausgaben in einen verwendbaren Datentyp). Bei mindestens einer Ausführungsform kann eine Kombination von Containern innerhalb der Software 1318 (die z. B. eine Pipeline bilden) als virtuelles Instrument bezeichnet werden (wie es hier näher beschrieben ist), und ein virtuelles Instrument kann Dienste 1320 und Hardware 1322 nutzen, um einige oder alle Verarbeitungsaufgaben von in Containern instanzierten Anwendungen auszuführen.
  • Bei mindestens einer Ausführungsform kann eine Datenverarbeitungspipeline Eingabedaten (z. B. Bilddaten 1308) in einem bestimmten Format als Reaktion auf eine Inferenzanforderung (z. B. eine Anforderung von einem Benutzer des Einsatzsystems 1306) empfangen. Bei mindestens einer Ausführungsform können die Eingabedaten ein oder mehrere Bilder, Videos und/oder andere Datendarstellungen darstellen, die von einer oder mehreren bildgebenden Einrichtungen erzeugt werden. Bei 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. Bei mindestens einer Ausführungsform kann an einer Ausgabe einer oder mehrerer Inferencing-Aufgaben oder anderer Verarbeitungsaufgaben einer Pipeline eine Nachbearbeitung vorgenommen werden, um Ausgabedaten für eine nächste Anwendung vorzubereiten und/oder um Ausgabedaten für die Übertragung und/oder die Verwendung durch einen Benutzer vorzubereiten (z. B. als Antwort auf eine Inferenzanforderung). Bei mindestens einer Ausführungsform können Inferencing-Aufgaben von einem oder mehreren Modellen zum maschinellen Lernen durchgeführt werden, z. B. von trainierten oder eingesetzten neuronalen Netzen, die Ausgabemodelle 1316 des Trainingssystems 1304 aufweisen können.
  • Bei mindestens einer Ausführungsform können die Aufgaben der Datenverarbeitungspipeline in einem oder mehreren Containern gekapselt sein, die jeweils eine diskrete, voll funktionsfähige Instanziierung einer Anwendung und einer virtualisierten Rechenumgebung darstellen, die in der Lage ist, auf Modelle zum maschinellen Lernen zu verweisen. Bei mindestens einer Ausführungsform können Container oder Anwendungen in einer privaten (z. B. zugangsbeschränkten) Domain eines Containerregisters (wie es hier näher beschrieben ist) veröffentlicht werden, und trainierte oder eingesetzte Modelle können in dem Modellregister 1324 gespeichert und mit einer oder mehreren Anwendungen verknüpft sein. Bei mindestens einer Ausführungsform können Bilder von Anwendungen (z. B. Container-Bilder) in einem Containerregister verfügbar sein, und sobald sie von einem Benutzer aus einem Containerregister für den Einsatz in einer Pipeline ausgewählt wurden, kann ein Bild verwendet werden, um einen Container für eine Instanziierung einer Anwendung zur Verwendung durch das System eines Benutzers zu erzeugen.
  • Bei mindestens einer Ausführungsform können Entwickler (z. B. Softwareentwickler, Kliniker, Ärzte usw.) Anwendungen (z. B. in Form von Containern) zur Durchführung von Bildverarbeitung und/oder Inferencing an bereitgestellten Daten entwickeln, veröffentlichen und speichern. Bei mindestens einer Ausführungsform kann die Entwicklung, Veröffentlichung und/oder Speicherung unter Verwendung eines Softwareentwicklungskits (SDK) erfolgen, das mit einem System verbunden ist (z. B. um sicherzustellen, dass eine entwickelte Anwendung und/oder ein entwickelter Container mit einem System konform oder kompatibel ist). Bei mindestens einer Ausführungsform kann eine entwickelte Anwendung lokal (z. B. in einer ersten Einrichtung, anhand von Daten aus einer ersten Einrichtung) mit einem SDK getestet werden, das zumindest einige der Dienste 1320 als System unterstützen kann (z. B. das System 1400 von 14). Bei mindestens einer Ausführungsform kann ein Entwickler aufgrund der Tatsache, dass DICOM-Objekte zwischen einem und Hunderten von Bildern oder anderen Datentypen enthalten können, dafür verantwortlich sein, die Extraktion und Aufbereitung der eingehenden Daten zu verwalten (z. B. Konstrukte festzulegen, Vorverarbeitungen in eine Anwendung einzubauen usw.). Bei mindestens einer Ausführungsform kann eine Anwendung nach ihrer Validierung durch das System 1400 (z. B. hinsichtlich ihrer Genauigkeit) in einem Containerregister zur Auswahl und/oder Implementierung durch einen Benutzer verfügbar sein, um eine oder mehrere Verarbeitungsaufgaben in Bezug auf Daten in einer Einrichtung (z. B. einer zweiten Einrichtung) eines Benutzers durchzuführen.
  • Bei mindestens einer Ausführungsform können Entwickler dann Anwendungen oder Container über ein Netzwerk für den Zugriff und die Verwendung durch Benutzer eines Systems (z. B. System 1400 von 14) freigeben. Bei mindestens einer Ausführungsform können abgeschlossene und validierte Anwendungen oder Container in einem Containerregister und zugehörige Modelle für maschinelles Lernen im Modellregister 1324 gespeichert sein. Bei mindestens einer Ausführungsform kann eine anfragende Einheit - die eine Inferenz- oder Bildverarbeitungsanforderung stellt - ein Containerregister und/oder Modellregister 1324 nach einer Anwendung, einem Container, einem Datensatz, einem Modell zum maschinellen Lernen usw. durchsuchen, eine gewünschte Kombination von Elementen zur Aufnahme in die Datenverarbeitungspipeline auswählen und eine Bildverarbeitungsanforderung übermitteln. Bei mindestens einer Ausführungsform kann eine Anforderung Eingabedaten (und bei einigen Beispielen zugehörige Patientendaten) aufweisen, die zur Durchführung einer Anforderung erforderlich sind, und/oder eine Auswahl von Anwendungen und/oder Modellen zum maschinellen Lernen aufweisen, die bei der Verarbeitung einer Anforderung auszuführen sind. Bei mindestens einer Ausführungsform kann eine Anforderung dann an eine oder mehrere Komponenten des Einsatzsystems 1306 (z. B. eine Cloud) weitergeleitet werden, um die Verarbeitung der Datenverarbeitungspipeline durchzuführen. Bei mindestens einer Ausführungsform kann die Verarbeitung durch das Einsatzsystem 1306 eine Referenzierung ausgewählter Elemente (z. B. Anwendungen, Container, Modelle usw.) aus einem Containerregister und/oder Modelregister 1324 aufweisen. Bei mindestens einer Ausführungsform können die Ergebnisse, sobald sie von einer Pipeline erzeugt wurden, an einen Benutzer als Referenz zurückgegeben werden (z. B. zur Anzeige in einer Anzeigeanwendungssuite, die auf einer lokalen Workstation oder einem Terminal vor Ort ausgeführt wird).
  • Bei mindestens einer Ausführungsform können zur Unterstützung der Verarbeitung oder Ausführung von Anwendungen oder Containern in Pipelines die Dienste 1320 genutzt werden. Bei mindestens einer Ausführungsform können die Dienste 1320 Rechendienste, Dienste für künstliche Intelligenz (Kl), Visualisierungsdienste und/oder andere Diensttypen aufweisen. Bei mindestens einer Ausführungsform können die Dienste 1320 Funktionen bereitstellen, die einer oder mehreren Anwendungen in der Software 1318 gemeinsam sind, so dass die Funktionen zu einem Dienst abstrahiert werden können, der von den Anwendungen aufgerufen oder genutzt werden kann. Bei mindestens einer Ausführungsform kann die von den Diensten 1320 bereitgestellte Funktionalität dynamisch und effizienter ablaufen und gleichzeitig gut skalieren, indem sie Anwendungen die parallele Verarbeitung von Daten ermöglicht (z. B. unter Verwendung einer Plattform zum parallelen Rechnen 1430 (14)). Bei mindestens einer Ausführungsform muss nicht jede Anwendung, die dieselbe von einem Dienst 1320 angebotene Funktionalität nutzt, über eine entsprechende Instanz des Dienstes 1320 verfügen, sondern der Dienst 1320 kann von verschiedenen Anwendungen gemeinsam genutzt werden. Bei mindestens einer Ausführungsform können die Dienste einen Inferenzserver oder eine Inferenzmaschine aufweisen, der/die für die Ausführung von Erkennungs- oder Segmentierungsaufgaben verwendet werden kann, als nicht einschränkende Beispiele. Bei mindestens einer Ausführungsform kann ein Modelltrainingsdienst vorhanden sein, der die Möglichkeit bietet, Modelle des maschinellen Lernens zu trainieren und/oder neu zu trainieren. Bei mindestens einer Ausführungsform kann darüber hinaus ein Datenerweiterungsdienst vorhanden sein, der GPUbeschleunigte Daten (z. B. DICOM, RIS, CIS, REST-konforme Daten, RPC, Rohdaten usw.) extrahieren, in der Größe verändern, skalieren und/oder andere Erweiterungen vornehmen kann. Bei mindestens einer Ausführungsform kann ein Visualisierungsdienst verwendet werden, der Bildwiedergabeeffekte wie Raytracing, Rasterung, Rauschunterdrückung, Schärfung usw. hinzufügen kann - um zweidimensionalen (2D) und/oder dreidimensionalen (3D) Modellen mehr Realismus zu verleihen. Bei mindestens einer Ausführungsform können Dienste für virtuelle Instrumente enthalten sein, die Strahlformung, Segmentierung, Inferencing, Bildgebung und/oder Unterstützung für andere Anwendungen innerhalb von Pipelines virtueller Instrumente bieten.
  • Bei mindestens einer Ausführungsform, bei der ein Dienst 1320 einen Kl-Dienst (z. B. einen Inferenzdienst) aufweist, können ein oder mehrere Modelle für maschinelles Lernen ausgeführt werden, indem ein Inferenzdienst (z. B. ein Inferenzserver) aufgerufen wird (z. B. als API-Aufruf), um ein oder mehrere Modelle für maschinelles Lernen oder deren Verarbeitung als Teil der Anwendungsausführung auszuführen. Bei mindestens einer Ausführungsform, bei der eine andere Anwendung ein oder mehrere Modelle zum maschinellen Lernen für Segmentierungsaufgaben aufweist, kann eine Anwendung einen Inferenzdienst aufrufen, um Modelle zum maschinellen Lernen auszuführen, um eine oder mehrere der mit Segmentierungsaufgaben verbundenen Verarbeitungsoperationen durchzuführen. Bei mindestens einer Ausführungsform kann die Software 1318, die eine fortgeschrittene Verarbeitungs- und Inferencing-Pipeline implementiert, die eine Segmentierungsanwendung und eine Anwendung zur Erkennung von Anomalien aufweist, rationalisiert werden, da jede Anwendung denselben Inferencing-Dienst aufrufen kann, um eine oder mehrere Inferencing-Aufgaben durchzuführen.
  • Bei mindestens einer Ausführungsform kann die Hardware 1322 GPUs, CPUs, Grafikkarten, ein KI/Deep-Learning-System (z. B. einen Kl-Supercomputer wie NVIDIAs DGX), eine Cloud-Plattform oder eine Kombination davon aufweisen. Bei mindestens einer Ausführungsform können verschiedene Arten von Hardware 1322 verwendet werden, um eine effiziente, zweckgebundene Unterstützung für Software 1318 und Dienste 1320 im Einsatzsystem 1306 bereitzustellen. Bei mindestens einer Ausführungsform kann die Verwendung von GPU-Verarbeitung für die Verarbeitung vor Ort (z. B. in der Einrichtung 1302), innerhalb eines Al/Deep-Learning-Systems, in einem Cloud-System und/oder in anderen Verarbeitungskomponenten des Einsatzsystems 1306 implementiert sein, um die Effizienz, Genauigkeit und Wirksamkeit der Bildverarbeitung und -erzeugung zu verbessern. Bei mindestens einer Ausführungsform können als nicht einschränkende Beispiele die Software 1318 und/oder die Dienste 1320 für die GPU-Verarbeitung im Hinblick auf Deep Learning, maschinelles Lernen und/oder High-Performance-Computing optimiert sein. Bei mindestens einer Ausführungsform kann zumindest ein Teil der Rechenumgebung des Einsatzsystems 1306 und/oder des Trainingssystems 1304 in einem Rechenzentrum auf einem oder mehreren Supercomputern oder Hochleistungsrechnersystemen mit GPU-optimierter Software (z. B. Hardware- und Softwarekombination des DGX-Systems von NVIDIA) ausgeführt werden. Bei mindestens einer Ausführungsform kann die Hardware 1322 eine beliebige Anzahl von GPUs aufweisen, die zur parallelen Verarbeitung von Daten herangezogen werden können, wie es hier beschrieben ist. Bei mindestens einer Ausführungsform kann die Cloud-Plattform darüber hinaus eine GPU-Verarbeitung für die GPU-optimierte Ausführung von Deep-Learning-Aufgaben, Aufgaben zum maschinellen Lernen oder anderen Rechenaufgaben aufweisen. Bei mindestens einer Ausführungsform kann die Cloud-Plattform (z. B. NVIDIAs NGC) unter Verwendung eines oder mehrerer Kl/Deep-Learning-Supercomputer und/oder GPU-optimierter Software (z. B. wie auf NVIDIAs DGX-Systemen) als Hardware-Abstraktions- und Skalierungsplattform ausgeführt werden. Bei mindestens einer Ausführungsform kann die Cloud-Plattform ein Anwendungscontainer-Clustering-System oder ein Orchestrierungssystem (z. B. KUBERNETES) auf mehreren GPUs integrieren, um eine nahtlose Skalierung und Lastverteilung zu ermöglichen.
  • 14 ist ein Systemdiagramm für ein beispielhaftes System 1400 zum Erzeugen und Bereitstellen einer Bildverarbeitungseinsatzpipeline gemäß mindestens einer Ausführungsform. Bei mindestens einer Ausführungsform kann das System 1400 verwendet werden, um das Verfahren 1300 von 13 und/oder andere Verfahren einschließlich fortgeschrittener Verarbeitungs- und Inferencing-Pipelines zu implementieren. Bei mindestens einer Ausführungsform kann das System 1400 ein Trainingssystem 1304 und ein Einsatzsystem 1306 aufweisen. Bei mindestens einer Ausführungsform können das Trainingssystem 1304 und das Einsatzsystem 1306 unter Verwendung von Software 1318, Diensten 1320 und/oder Hardware 1322 implementiert sein, wie es hier beschrieben ist.
  • Bei mindestens einer Ausführungsform kann das System 1400 (z. B. das Trainingssystem 1304 und/oder das Einsatzsystem 1306) in einer Cloud-Computing-Umgebung (z. B. unter Verwendung der Cloud 1426) implementiert sein. Bei mindestens einer Ausführungsform kann das System 1400 lokal in Bezug auf eine Einrichtung des Gesundheitswesens oder als Kombination aus Cloud- und lokalen Rechenressourcen implementiert sein. Bei mindestens einer Ausführungsform kann der Zugriff auf APIs in der Cloud 1426 durch festgelegte Sicherheitsmaßnahmen oder -protokolle auf autorisierte Benutzer beschränkt sein.
  • Bei mindestens einer Ausführungsform kann ein Sicherheitsprotokoll Web-Tokens aufweisen, die von einem Authentifizierungsdienst (z. B. AuthN, AuthZ, Gluecon usw.) signiert und mit einer entsprechenden Autorisierung versehen sein können. Bei mindestens einer Ausführungsform können die APIs virtueller Instrumente (wie es hier beschrieben ist) oder andere Instanzen des Systems 1400 auf eine Reihe öffentlicher IPs beschränkt sein, die für die Interaktion überprüft oder autorisiert wurden.
  • Bei mindestens einer Ausführungsform können verschiedene Komponenten des Systems 1400 unter Verwendung einer Vielzahl verschiedener Netzwerktypen, einschließlich, aber nicht beschränkt auf lokale Netze (LANs) und/oder Weitverkehrsnetze (WANs), über verdrahtete und/oder drahtlose Kommunikationsprotokolle miteinander kommunizieren. Bei mindestens einer Ausführungsform kann die Kommunikation zwischen Einrichtungen und Komponenten des Systems 1400 (z. B. zum Übertragen von Inferenzanforderungen, zum Empfangen von Ergebnissen von Inferenzanforderungen usw.) über (einen) Datenbus(e), drahtlose Datenprotokolle (Wi-Fi), drahtgebundene Datenprotokolle (z. B. Ethernet) usw. kommuniziert werden.
  • Bei mindestens einer Ausführungsform kann das Trainingssystem 1304 Trainingspipelines 1404 ausführen, die denen ähnlich sind, wie es hier in Bezug auf 13 beschrieben ist. Bei mindestens einer Ausführungsform, bei der ein oder mehrere Modelle für maschinelles Lernen in Einsatzpipelines 1410 durch das Einsatzsystem 1306 verwendet werden sollen, können die Trainingspipelines 1404 verwendet werden, um ein oder mehrere (z. B. vortrainierte) Modelle zu trainieren oder neu zu trainieren und/oder ein oder mehrere der vortrainierten Modelle 1406 zu implementieren (z. B. ohne die Notwendigkeit eines erneuten Trainings oder einer Aktualisierung). Bei mindestens einer Ausführungsform können als Ergebnis der Trainingspipelines 1404 (ein) Ausgabemodell(e) 1316 erzeugt werden. Bei mindestens einer Ausführungsform können die Trainingspipelines 1404 eine beliebige Anzahl von Verarbeitungsschritten aufweisen, wie z. B. die Konvertierung oder Anpassung von Bilddaten (oder anderen Eingabedaten). Bei mindestens einer Ausführungsform können für unterschiedliche Modelle zum maschinellen Lernen, die vom Einsatzsystem 1306 verwendet werden, unterschiedliche Trainingspipelines 1404 verwendet werden. Bei mindestens einer Ausführungsform kann für ein erstes Modell zum maschinellen Lernen eine Trainingspipeline 1404 verwendet werden, die einem ersten, in 13 beschriebenen Beispiel entspricht, für ein zweites Modell zum maschinellen Lernen kann eine Trainingspipeline 1404 verwendet werden, die einem zweiten, in 13 beschriebenen Beispiel entspricht, und für ein drittes Modell zum maschinellen Lernen kann eine Trainingspipeline 1404 verwendet werden, die einem dritten, in 13 beschriebenen Beispiel entspricht. Bei mindestens einer Ausführungsform kann eine beliebige Kombination von Aufgaben innerhalb des Trainingssystems 1304 verwendet werden, je nachdem, was für jedes jeweilige Modell zum maschinellen Lernen erforderlich ist. Bei mindestens einer Ausführungsform kann eines oder können mehrere der Modelle zum maschinellen Lernen bereits trainiert und einsatzbereit sein, so dass die Modelle zum maschinellen Lernen keiner Verarbeitung durch das Trainingssystem 1304 unterzogen und vom Einsatzsystem 1306 implementiert sein können.
  • Bei mindestens einer Ausführungsform können das/die Ausgabemodell(e) 1316 und/oder das/die vortrainierte(n) Modell(e) 1406 je nach Implementierung oder Ausführungsform beliebige Arten von Modellen zum maschinellen Lernen aufweisen. Bei mindestens einer Ausführungsform und ohne Einschränkung können die vom System 1400 verwendeten Modelle zum maschinellen Lernen Modelle zum maschinelle Lernen aufweisen, die lineare Regression, logistische Regression, Entscheidungsbäume, Support Vector Machines (SVM), Naive Bayes, k-nearest neighbor (Knn), K-Mittel-Clustering, Random Forest, Algorithmen zur Dimensionalitätsreduktion, Gradient-Boosting-Algorithmen, neuronale Netze (z.B., Autocodierer, Faltungsalgorithmen, rekurrente Algorithmen, Perceptrons, Long/Short Term Memory (LSTM), Hopfield, Boltzmann, Deep Belief, Dekonvolutional, Generative Adversarial, Liquid State Machine usw.) und/oder andere Arten von maschinellen Lernmodellen einsetzen.
  • Bei mindestens einer Ausführungsform können die Trainingspipelines 1404 eine KI-gestützte Kennzeichnung aufweisen, wie es hier in Bezug auf mindestens 15B näher beschrieben ist. Bei mindestens einer Ausführungsform können gekennzeichnete Daten 1312 (z. B. eine herkömmliche Kennzeichnung) durch eine beliebige Anzahl von Verfahren erzeugt werden. Bei mindestens einer Ausführungsform können Kennzeichen oder andere Kennzeichnungen in einem Zeichenprogramm (z. B. einem Kennzeichnungsprogramm), einem CAD-Programm (Computer Aided Design), einem Beschriftungsprogramm, einem anderen Programmtyp, der zur Erzeugung von Kennzeichnungen oder Kennzeichen für die Ground-Truth geeignet ist, erzeugt werden und/oder bei einigen Ausführungen von Hand gezeichnet werden. Bei mindestens einer Ausführungsform können die Ground-Truth-Daten synthetisch erzeugt (z. B. aus Computermodellen oder Renderings), real erzeugt (z. B. aus realen Daten entworfen und erzeugt), maschinell automatisiert (z. B. unter Verwendung von Merkmalsanalyse und Lernen, um Merkmale aus Daten zu extrahieren und dann Kennzeichen zu erzeugen), von Menschen gekennzeichnet (z. B. legt ein Kennzeichner oder Kennzeichnungsexperte die Position der Kennzeichen fest) und/oder eine Kombination davon sein. Bei mindestens einer Ausführungsform kann es für jede Instanz von Bilddaten 1308 (oder eines anderen Datentyps, der von Modellen zum maschinellen Lernen verwendet wird) entsprechende Ground-Truth-Daten geben, die vom Trainingssystem 1304 erzeugt wurden. Bei mindestens einer Ausführungsform kann die KI-gestützte Kennzeichnung als Teil der Einsatzpipelines 1410 durchgeführt werden; entweder zusätzlich zu oder anstelle der Kl-gestützten Kennzeichnung, die in den Trainingspipelines 1404 enthalten ist. Bei mindestens einer Ausführungsform kann das System 1400 eine mehrschichtige Plattform aufweisen, die eine Softwareschicht (z. B. Software 1318) von Diagnoseanwendungen (oder anderen Anwendungstypen) aufweisen kann, die eine oder mehrere medizinische Bildgebungs- und Diagnosefunktionen ausführen können. Bei mindestens einer Ausführungsform kann das System 1400 kommunikativ mit (z. B. über verschlüsselte Verbindungen) PACS-Servernetzen einer oder mehreren Einrichtungen gekoppelt sein. Bei mindestens einer Ausführungsform kann das System 1400 so ausgestaltet sein, dass es auf Daten von PACS-Servern zugreift und diese referenziert, um Operationen durchzuführen, wie z.B. das Trainieren von Modellen zum maschinellen Lernen, den Einsatz von Modellen zum maschinellen Lernen, Bildverarbeitung, Inferencing und/oder andere Operationen.
  • Bei mindestens einer Ausführungsform kann eine Softwareschicht als sichere, verschlüsselte und/oder authentifizierte API implementiert sein, über die Anwendungen oder Container von einer oder mehreren externen Umgebungen (z. B. der Einrichtung 1302) aufgerufen werden können. Bei mindestens einer Ausführungsform können Anwendungen dann einen oder mehrere Dienste 1320 aufrufen oder ausführen, um Rechen-, Kl- oder Visualisierungsaufgaben auszuführen, die mit den jeweiligen Anwendungen verbunden sind, und die Software 1318 und/oder die Dienste 1320 können die Hardware 1322 nutzen, um Verarbeitungsaufgaben auf effektive und effiziente Weise auszuführen.
  • Bei mindestens einer Ausführungsform kann das Einsatzsystem 1306 Einsatzpipelines 1410 ausführen. Bei mindestens einer Ausführungsform können Einsatzpipelines 1410 eine beliebige Anzahl von Anwendungen aufweisen, die sequentiell, nicht-sequentiell oder auf andere Weise auf Bildgebungsdaten (und/oder andere Datentypen) angewendet werden können, die von Bildgebungseinrichtungen, Sequenziereinrichtungen, Genomikeinrichtungen usw. erzeugt werden. - einschließlich Kl-gestützter Kennzeichnung, wie es vorab beschrieben ist. Bei mindestens einer Ausführungsform, wie es hier beschrieben ist, kann eine Einsatzpipeline 1410 für eine einzelne Einrichtung als virtuelles Instrument für eine Einrichtung bezeichnet werden (z. B. ein virtuelles Ultraschallinstrument, ein virtuelles CT-Scaninstrument, ein virtuelles Sequenzierungsinstrument usw.). Bei mindestens einer Ausführungsform kann es für eine einzelne Einrichtung mehr als eine Einsatzpipeline 1410 geben, je nachdem, welche Informationen aus den von einer Einrichtung erzeugten Daten gewünscht werden. Bei mindestens einer Ausführungsform kann es eine erste Einsatzpipeline 1410 geben, wenn die Erkennung von Anomalien von einem MRT-Gerät gewünscht wird, und eine zweite Einsatzpipeline 1410, wenn eine Bildverbesserung von der Ausgabe eines MRT-Geräts gewünscht wird.
  • Bei mindestens einer Ausführungsform kann eine Bilderzeugungsanwendung eine Verarbeitungsaufgabe aufweisen, die die Verwendung eines Modells zum maschinellen Lernen umfasst. Bei mindestens einer Ausführungsform kann ein Benutzer wünschen, sein eigenes Modell zum maschinellen Lernen zu verwenden oder ein Modell zum maschinellen Lernen aus dem Modellregister 1324 auszuwählen. Bei mindestens einer Ausführungsform kann ein Benutzer sein eigenes Modell zum maschinellen Lernen implementieren oder ein Modell zum maschinellen Lernen zur Aufnahme in eine Anwendung zur Durchführung einer Verarbeitungsaufgabe auswählen. Bei mindestens einer Ausführungsform können die Anwendungen auswählbar und anpassbar sein, und durch die Definition von Konstrukten von Anwendungen wird die Bereitstellung und Implementierung von Anwendungen für einen bestimmten Benutzer als eine nahtlosere Benutzererfahrung dargestellt. Bei mindestens einer Ausführungsform können die Einsatzpipelines 1410 durch die Nutzung anderer Merkmale des Systems 1400 - wie der Dienste 1320 und der Hardware 1322 - noch benutzerfreundlicher sein, eine einfachere Integration ermöglichen und genauere, effizientere und zeitgerechtere Ergebnisse liefern.
  • Bei mindestens einer Ausführungsform kann das Einsatzsystem 1306 eine Benutzerschnittstelle 1414 (z. B. eine grafische Benutzerschnittstelle, eine Webschnittstelle usw.) aufweisen, die verwendet werden kann, um Anwendungen für die Aufnahme in die Einsatzpipeline(s) 1410 auszuwählen, Anwendungen anzuordnen, Anwendungen oder Parameter oder Konstrukte davon zu modifizieren oder zu ändern, die Einsatzpipeline(s) 1410 während der Einrichtung und/oder Bereitstellung zu verwenden und mit ihr zu interagieren und/oder anderweitig mit dem Einsatzsystem 1306 zu interagieren. Bei mindestens einer Ausführungsform, auch wenn sie in Bezug auf das Trainingssystem 1304 nicht dargestellt ist, kann die Benutzerschnittstelle 1414 (oder eine andere Benutzerschnittstelle) für die Auswahl von Modellen zur Verwendung im Einsatzsystem 1306, für die Auswahl von Modellen zum Training oder zum erneuten Training im Trainingssystem 1304 und/oder für die sonstige Interaktion mit dem Trainingssystem 1304 verwendet werden.
  • Bei mindestens einer Ausführungsform kann der Pipeline-Manager 1412 zusätzlich zu einem Anwendungsorchestrierungssystem 1428 verwendet werden, um die Interaktion zwischen Anwendungen oder Containern der Einsatzpipeline(s) 1410 und Diensten 1320 und/oder Hardware 1322 zu verwalten. Bei mindestens einer Ausführungsform kann der Pipeline-Manager 1412 so ausgestaltet sein, dass er die Interaktion von Anwendung zu Anwendung, von Anwendung zu Dienst 1320 und/oder von Anwendung oder Dienst zu Hardware 1322 erleichtert. Bei mindestens einer Ausführungsform ist, obwohl es bei der dargestellten Ausführungsform in der Software 1318 enthalten ist, dies nicht als einschränkend zu verstehen, und bei einigen Beispielen (z. B. wie es in 12 dargestellt ist) kann der Pipeline-Manager 1412 in den Diensten 1320 enthalten sein. Bei mindestens einer Ausführungsform kann das System zur Anwendungsorchestrierung 1428 (z. B. Kubernetes, DOCKER usw.) ein Container-Orchestrierungssystem aufweisen, das Anwendungen in Containern als logische Einheiten zur Koordination, Verwaltung, Skalierung und Einsatz gruppieren kann. Bei mindestens einer Ausführungsform kann durch die Zuordnung von Anwendungen aus der/den Einsatzpipeline(s) 1410 (z. B. eine Rekonstruktionsanwendung, eine Segmentierungsanwendung usw.) zu einzelnen Containern jede Anwendung in einer in sich geschlossenen Umgebung (z. B. auf Kernel-Ebene) ausgeführt werden, um die Geschwindigkeit und Effizienz zu erhöhen.
  • Bei mindestens einer Ausführungsform kann jede Anwendung und/oder jeder Container (oder ein Abbild davon) individuell entwickelt, modifiziert und bereitgestellt werden (z. B. kann ein erster Benutzer oder Entwickler eine erste Anwendung entwickeln, modifizieren und bereitstellen, und ein zweiter Benutzer oder Entwickler kann eine zweite Anwendung separat von einem ersten Benutzer oder Entwickler entwickeln, modifizieren und bereitstellen), was die Konzentration und Aufmerksamkeit auf eine Aufgabe einer einzelnen Anwendung und/oder eines einzelnen Containers ermöglicht, ohne durch Aufgaben einer anderen Anwendung oder eines anderen Containers behindert zu werden. Bei mindestens einer Ausführungsform kann die Kommunikation und Zusammenarbeit zwischen verschiedenen Containern oder Anwendungen durch den Pipeline-Manager 1412 und das Anwendungsorchestrierungssystem 1428 unterstützt werden. Bei mindestens einer Ausführungsform kann, solange eine erwartete Eingabe und/oder Ausgabe jedes Containers oder jeder Anwendung einem System bekannt ist (z. B. auf der Grundlage von Konstrukten von Anwendungen oder Containern), das Anwendungsorchestrierungssystem 1428 und/oder der Pipeline-Manager 1412 die Kommunikation unter und zwischen Anwendungen oder Containern sowie die gemeinsame Nutzung von Ressourcen unter und zwischen diesen erleichtern. Bei mindestens einer Ausführungsform können eine oder mehrere Anwendungen oder Container in der/den Einsatzpipeline(s) 1410 dieselben Dienste und Ressourcen gemeinsam nutzen, so dass das Anwendungsorchestrierungssystem 1428 die gemeinsame Nutzung von Diensten oder Ressourcen zwischen verschiedenen Anwendungen oder Containern orchestrieren, ausgleichen und festlegen kann. Bei mindestens einer Ausführungsform kann ein Scheduler verwendet werden, um die Ressourcenanforderungen von Anwendungen oder Containern, die aktuelle oder geplante Nutzung dieser Ressourcen und die Ressourcenverfügbarkeit zu verfolgen. Bei mindestens einer Ausführungsform kann ein Scheduler somit verschiedenen Anwendungen Ressourcen zuweisen und Ressourcen zwischen und unter Anwendungen im Hinblick auf Anforderungen und Verfügbarkeit eines Systems verteilen. Bei einigen Beispielen kann ein Scheduler (und/oder eine andere Komponente des Anwendungsorchestrierungssystems 1428) die Ressourcenverfügbarkeit und -verteilung auf der Grundlage von Einschränkungen bestimmen, die einem System auferlegt werden (z. B. Benutzereinschränkungen), wie z. B. Dienstgüte (QoS), Dringlichkeit des Bedarfs an Datenausgaben (z. B. um zu bestimmen, ob eine Echtzeitverarbeitung oder eine verzögerte Verarbeitung ausgeführt werden soll), usw.
  • Bei mindestens einer Ausführungsform können die von Anwendungen oder Containern im Einsatzsystem 1306 genutzten und gemeinsam genutzten Dienste 1320 Rechendienste 1416, KI-Dienste 1418, Visualisierungsdienste 1420 und/oder andere Diensttypen aufweisen. Bei mindestens einer Ausführungsform können Anwendungen einen oder mehrere der Dienste 1320 aufrufen (z. B. ausführen), um Verarbeitungsvorgänge für eine Anwendung durchzuführen. Bei mindestens einer Ausführungsform können die Rechendienste 1416 von Anwendungen genutzt werden, um Supercomputing- oder andere High-Performance-Computing-Aufgaben (HPC) auszuführen. Bei mindestens einer Ausführungsform kann/können der/die Rechendienst(e) 1416 genutzt werden, um eine parallele Verarbeitung (z. B. unter Verwendung einer Plattform zum parallelen Rechnen 1430) zur Verarbeitung von Daten durch eine oder mehrere Anwendungen und/oder von einer oder mehreren Aufgaben einer einzelnen Anwendung im Wesentlichen gleichzeitig durchzuführen. Bei mindestens einer Ausführungsform kann die parallele Datenverarbeitungsplattform 1430 (z. B. NVIDIAs CUDA) die allgemeine Datenverarbeitung auf GPUs (GPGPU) (z. B. GPUs 1422) ermöglichen. Bei mindestens einer Ausführungsform kann eine Softwareschicht der Plattform für paralleles Rechnen 1430 den Zugriff auf virtuelle Befehlssätze und Elemente zum parallelen Rechnen von GPUs für die Ausführung von Rechenkernen ermöglichen. Bei mindestens einer Ausführungsform kann die Plattform zum parallelen Rechnen 1430 einen Speicher aufweisen, und bei einigen Ausführungsformen kann ein Speicher zwischen mehreren Containern und/oder zwischen verschiedenen Verarbeitungsaufgaben innerhalb eines einzelnen Containers gemeinsam genutzt werden. Bei mindestens einer Ausführungsform können IPC-Aufrufe (Inter-Process Communication) für mehrere Container und/oder für mehrere Prozesse innerhalb eines Containers generiert werden, um dieselben Daten aus einem gemeinsam genutzten Speichersegment der Plattform zum parallelen Rechnen 1430 zu verwenden (z. B. wenn mehrere verschiedene Stufen einer Anwendung oder mehrere Anwendungen dieselben Informationen verarbeiten). Bei mindestens einer Ausführungsform können dieselben Daten an ein und demselben Speicherort für eine beliebige Anzahl von Verarbeitungsaufgaben verwendet werden (z. B. zur gleichen Zeit, zu verschiedenen Zeiten usw.), anstatt eine Kopie der Daten zu erstellen und die Daten an verschiedene Speicherorte zu verschieben (z. B. eine Lese-/Schreiboperation). Bei mindestens einer Ausführungsform können bei der Verwendung von Daten zur Erzeugung neuer Daten als Ergebnis der Verarbeitung diese Informationen über einen neuen Speicherort der Daten gespeichert und von verschiedenen Anwendungen gemeinsam genutzt werden. Bei mindestens einer Ausführungsform können der Speicherort von Daten und der Speicherort von aktualisierten oder geänderten Daten Teil einer Definition sein, wie eine Nutzlast innerhalb von Containern zu verstehen ist.
  • Bei mindestens einer Ausführungsform können KI-Dienste 1418 genutzt werden, um Inferencing-Dienste für die Ausführung von Modellen zum maschinellen Lernen durchzuführen, die mit Anwendungen verbunden sind (z. B. mit der Aufgabe, eine oder mehrere Verarbeitungsaufgaben einer Anwendung auszuführen). Bei mindestens einer Ausführungsform können die KI-Dienste 1418 das KI-System 1424 nutzen, um Modelle zum maschinellen Lernen (z. B. neuronale Netze wie CNNs) zur Segmentierung, Rekonstruktion, Objekterkennung, Merkmalserkennung, Klassifizierung und/oder andere Inferencing-Aufgaben auszuführen. Bei mindestens einer Ausführungsform können die Anwendungen der Einsatzpipeline(s) 1410 eines oder mehrere der Ausgabemodelle 1316 aus dem Trainingssystem 1304 und/oder andere Modelle von Anwendungen verwenden, um eine Inferenz auf Bilddaten auszuführen. Bei mindestens einer Ausführungsform können zwei oder mehr Beispiele für Inferencing unter Verwendung des Anwendungsorchestrierungssystems 1428 (z. B. ein Scheduler) verfügbar sein. Bei mindestens einer Ausführungsform kann eine erste Kategorie einen Pfad mit hoher Priorität/geringer Latenz aufweisen, über den höhere Service Level Agreements erreicht werden können, z. B. für die Durchführung von Inferenzen bei dringenden Anfragen während eines Notfalls oder für einen Radiologen während der Diagnose. Bei mindestens einer Ausführungsform kann eine zweite Kategorie einen Pfad mit Standardpriorität aufweisen, der für Anfragen verwendet werden kann, die nicht dringlich sind oder bei denen die Analyse zu einem späteren Zeitpunkt durchgeführt werden kann. Bei mindestens einer Ausführungsform kann das Anwendungsorchestrierungssystem 1428 Ressourcen (z. B. Dienste 1320 und/oder Hardware 1322) auf der Grundlage von Prioritätspfaden für verschiedene Inferencing-Aufgaben der KI-Dienste 1418 verteilen.
  • Bei mindestens einer Ausführungsform kann den KI-Diensten 1418 innerhalb des Systems 1400 ein gemeinsamer Speicher zur Verfügung gestellt werden. Bei mindestens einer Ausführungsform kann der gemeinsam genutzte Speicher als Cache (oder eine andere Art von Einrichtung) fungieren und zur Verarbeitung von Inferenzanforderungen von Anwendungen verwendet werden. Bei mindestens einer Ausführungsform kann bei der Übermittlung einer Inferenzanforderung eine Anforderung von einer Reihe von API-Instanzen des Einsatzsystems 1306 empfangen werden, und eine oder mehrere Instanzen können ausgewählt werden (z. B. für die beste Anpassung, für den Lastausgleich usw.), um eine Anforderung zu verarbeiten. Bei mindestens einer Ausführungsform kann zur Bearbeitung einer Anfrage eine Anfrage in eine Datenbank eingegeben werden, ein Modell zum maschinellen Lernen kann aus dem Modellregister 1324 gefunden werden, wenn es sich nicht bereits in einem Cache befindet, ein Validierungsschritt kann sicherstellen, dass ein geeignetes Modell zum maschinellen Lernen in einen Cache (z. B. einen gemeinsam genutzten Speicher) geladen wird, und/oder eine Kopie eines Modells kann in einem Cache gespeichert werden. Bei mindestens einer Ausführungsform kann ein Scheduler (z. B. der Pipeline-Manager 1412) verwendet werden, um eine Anwendung zu starten, auf die in einer Anforderung verwiesen wird, wenn eine Anwendung noch nicht läuft oder wenn nicht genügend Instanzen einer Anwendung vorhanden sind. Bei mindestens einer Ausführungsform kann ein Inferenzserver gestartet werden, wenn noch kein Inferenzserver zur Ausführung eines Modells gestartet ist. Pro Modell kann eine beliebige Anzahl von Inferenzservern gestartet werden. Bei mindestens einer Ausführungsform können bei einem Pull-Modell, bei dem die Inferenzserver geclustert sind, die Modelle zwischengespeichert werden, wenn ein Lastausgleich vorteilhaft ist. Bei mindestens einer Ausführungsform können Inferenzserver statisch in entsprechende verteilte Server geladen werden.
  • Bei mindestens einer Ausführungsform kann das Inferencing mit Hilfe eines Inferenzservers durchgeführt werden, der in einem Container läuft. Bei mindestens einer Ausführungsform kann eine Instanz eines Inferenzservers mit einem Modell (und optional mit mehreren Versionen eines Modells) verbunden sein. Bei mindestens einer Ausführungsform kann eine neue Instanz eines Inferenzservers geladen werden, wenn eine Anforderung zur Durchführung einer Inferenz für ein Modell nicht vorhanden ist. Bei mindestens einer Ausführungsform kann beim Starten eines Inferenzservers ein Modell an einen Inferenzserver übergeben werden, so dass ein und derselbe Container zur Bedienung verschiedener Modelle verwendet werden kann, solange der Inferenzserver als eine andere Instanz läuft.
  • Bei mindestens einer Ausführungsform kann während der Ausführung einer Anwendung eine Inferenzanforderung für eine bestimmte Anwendung empfangen werden, und ein Container (z. B. der eine Instanz eines Inferenzservers beherbergt) kann geladen werden (falls noch nicht geschehen), und eine Startprozedur kann aufgerufen werden. Bei mindestens einer Ausführungsform kann die Vorverarbeitungslogik in einem Container eingehende Daten laden, dekodieren und/oder eine zusätzliche Vorverarbeitung durchführen (z. B. unter Verwendung von CPU(s) und/oder GPU(s)). Bei mindestens einer Ausführungsform kann ein Container, sobald die Daten für die Inferenz vorbereitet sind, die Inferenz wie erforderlich auf den Daten durchführen. Bei mindestens einer Ausführungsform kann dies einen einzigen Inferenzaufruf für ein Bild aufweisen (z. B. ein Handröntgenbild) oder eine Inferenz für Hunderte von Bildern erfordern (z. B. ein Brust-CT). Bei mindestens einer Ausführungsform kann eine Anwendung die Ergebnisse vor der Fertigstellung zusammenfassen, was unter anderem einen einzelnen Konfidenzwert, eine Segmentierung auf Pixelebene, eine Segmentierung auf Voxel-Ebene, die Erstellung einer Visualisierung oder die Erstellung von Text zur Zusammenfassung der Ergebnisse einschließen kann. Bei mindestens einer Ausführungsform können verschiedenen Modellen oder Anwendungen unterschiedliche Prioritäten zugewiesen werden. Beispielsweise können einige Modelle eine Echtzeitpriorität (TAT < 1 min) haben, während andere eine niedrigere Priorität haben können (z. B. TAT < 10 min). Bei mindestens einer Ausführungsform kann die Ausführungszeit des Modells von der anfragenden Institution oder Einrichtung aus gemessen werden und kann die Zeit für die Durchquerung des Partnernetzwerks sowie die Ausführung durch einen Inferenzdienst einschließen.
  • Bei mindestens einer Ausführungsform kann die Übertragung von Anfragen zwischen den Diensten 1320 und den Inferenzanwendungen hinter einem Software Development Kit (SDK) verborgen sein, und ein robuster Transport kann über eine Warteschlange erfolgen. Bei mindestens einer Ausführungsform wird eine Anfrage über eine API für eine individuelle Anwendung/Mandanten-ID-Kombination in eine Warteschlange gestellt, und ein SDK zieht eine Anfrage aus einer Warteschlange und gibt eine Anfrage an eine Anwendung weiter. Bei mindestens einer Ausführungsform kann der Name einer Warteschlange in einer Umgebung angegeben werden, aus der ein SDK sie abruft. Bei mindestens einer Ausführungsform kann eine asynchrone Kommunikation über eine Warteschlange nützlich sein, da sie es jeder Instanz einer Anwendung ermöglicht, die Arbeit aufzunehmen, sobald sie verfügbar ist. Die Ergebnisse können über eine Warteschlange zurückübertragen werden, um sicherzustellen, dass keine Daten verloren gehen. Bei mindestens einer Ausführungsform können Warteschlangen auch die Möglichkeit bieten, die Arbeit zu segmentieren, da die Arbeit mit der höchsten Priorität an eine Warteschlange gehen kann, an die die meisten Instanzen einer Anwendung angeschlossen sind, während die Arbeit mit der niedrigsten Priorität an eine Warteschlange gehen kann, an die nur eine einzige Instanz angeschlossen ist, die die Aufgaben in der empfangenen Reihenfolge bearbeitet. Bei mindestens einer Ausführungsform kann eine Anwendung auf einer GPU-beschleunigten Instanz laufen, die in der Cloud 1426 erzeugt wird, und ein Inferenzdienst kann Inferencing auf einer GPU durchführen.
  • Bei mindestens einer Ausführungsform können Visualisierungsdienste 1420 genutzt werden, um Visualisierungen für die Anzeige der Ausgaben von Anwendungen und/oder der Einsatzpipeline(s) 1410 zu erzeugen. Bei mindestens einer Ausführungsform können die GPUs 1422 von den Visualisierungsdiensten 1420 genutzt werden, um Visualisierungen zu erzeugen. Bei mindestens einer Ausführungsform können Rendering-Effekte, wie z. B. Raytracing, von den Visualisierungsdiensten 1420 implementiert werden, um Visualisierungen von höherer Qualität zu erzeugen. Bei mindestens einer Ausführungsform können die Visualisierungen ohne Einschränkung 2D-Bildrenderings, 3D-Volumenrenderings, 3D-Volumenrekonstruktionen, 2D-Tomographieschichten, Virtual-Reality-Anzeigen, Augmented-Reality-Anzeigen usw. aufweisen. Bei 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, Krankenschwestern, Radiologen usw.) zu erzeugen. Bei mindestens einer Ausführungsform können die Visualisierungsdienste 1420 einen internen Visualisierer, Kinematografie und/oder andere Rendering- oder Bildverarbeitungsfähigkeiten oder -funktionen aufweisen (z. B. Raytracing, Rasterisierung, interne Optik usw.).
  • Bei mindestens einer Ausführungsform kann die Hardware 1322 GPUs 1422, ein Kl-System 1424, eine Cloud 1426 und/oder jede andere Hardware aufweisen, die zur Ausführung des Trainingssystems 1304 und/oder des Einsatzsystems 1306 verwendet wird. Bei mindestens einer Ausführungsform können die GPUs 1422 (z. B. NVIDIAs TESLA- und/oder QUADRO-GPUs) eine beliebige Anzahl von GPUs aufweisen, die für die Ausführung von Verarbeitungsaufgaben der Rechendienste 1416, der KI-Dienste 1418, der Visualisierungsdienste 1420, anderer Dienste und/oder beliebiger Merkmale oder Funktionen der Software 1318 verwendet werden können. In Bezug auf die Kl-Dienste 1418 können die GPUs 1422 beispielsweise zur Vorverarbeitung von Bilddaten (oder anderen Datentypen, die von Modellen zum maschinellen Lernen verwendet werden), zur Nachverarbeitung von Ausgaben von Modellen zum maschinellen Lernen und/oder zur Durchführung von Inferencing (z. B. zur Ausführung von Modellen zum maschinellen Lernen) verwendet werden. Bei mindestens einer Ausführungsform können die Cloud 1426, das Kl-System 1424 und/oder andere Komponenten des Systems 1400 GPUs 1422 verwenden. Bei mindestens einer Ausführungsform kann die Cloud 1426 eine GPU-optimierte Plattform für Deep-Learning-Aufgaben aufweisen. Bei mindestens einer Ausführungsform kann das KI-System 1424 GPUs verwenden, und die Cloud 1426 - oder zumindest ein Abschnitt, der mit Deep Learning oder Inferencing beauftragt ist - kann unter Verwendung eines oder mehrerer KI-Systeme 1424 ausgeführt werden. Obwohl die Hardware 1322 als diskrete Komponenten dargestellt ist, ist dies nicht als Einschränkung zu verstehen, und alle Komponenten der Hardware 1322 können mit anderen Komponenten der Hardware 1322 kombiniert oder von ihnen genutzt werden.
  • Bei mindestens einer Ausführungsform kann das KI-System 1424 ein speziell für Inferencing, Deep Learning, maschinelles Lernen und/oder andere Aufgaben der künstlichen Intelligenz ausgestaltetes Rechensystem (z. B. einen Supercomputer oder einen HPC) aufweisen. Bei mindestens einer Ausführungsform kann das KI-System 1424 (z. B. NVIDIAs DGX) GPU-optimierte Software (z. B. einen Software-Stack) aufweisen, die unter Verwendung einer Vielzahl von GPUs 1422 ausgeführt werden kann, zusätzlich zu CPUs, RAM, Speicher und/oder anderen Komponenten, Merkmalen oder Funktionen. Bei mindestens einer Ausführungsform können ein oder mehrere KI-Systeme 1424 in der Cloud 1426 (z. B. in einem Datenzentrum) implementiert sein, um einige oder alle Kl-basierten Verarbeitungsaufgaben des Systems 1400 auszuführen.
  • Bei mindestens einer Ausführungsform kann die Cloud 1426 eine GPUbeschleunigte Infrastruktur (z. B. NVIDIAs NGC) aufweisen, die eine GPU-optimierte Plattform für die Ausführung von Verarbeitungsaufgaben des Systems 1400 bereitstellen kann. Bei mindestens einer Ausführungsform kann die Cloud 1426 ein oder mehrere KI-Systeme 1424 zur Ausführung einer oder mehrerer Klbasierter Aufgaben des Systems 1400 aufweisen (z. B. als Hardware-Abstraktions- und Skalierungsplattform). Bei mindestens einer Ausführungsform kann die Cloud 1426 in ein Anwendungsorchestrierungssystem 1428 integriert sein, das mehrere GPUs nutzt, um eine nahtlose Skalierung und einen Lastausgleich zwischen und unter Anwendungen und Diensten 1320 zu ermöglichen. Bei mindestens einer Ausführungsform kann die Cloud 1426 damit beauftragt werden, mindestens einige der Dienste 1320 des Systems 1400 auszuführen, einschließlich Rechendienste 1416, KI-Dienste 1418 und/oder Visualisierungsdienste 1420, wie es hier beschrieben ist. Bei mindestens einer Ausführungsform kann die Cloud 1426 kleine und große Batch-Inferenzen durchführen (z. B. mit NVIDIAs TENSOR RT), eine beschleunigte parallele Rechen-API und -Plattform 1430 bereitstellen (z. B. NVIDIAs CUDA), ein Anwendungsorchestrierungssystem 1428 ausführen (z. B, KUBERNETES), eine Grafik-Rendering-API und -Plattform (z. B. für Raytracing, 2D-Grafik, 3D-Grafik und/oder andere Rendering-Techniken zur Erzeugung hochwertigerer Kinofilme) und/oder andere Funktionen für das System 1400 bereitstellen.
  • 15A zeigt ein Datenflussdiagramm für ein Verfahren 1500 zum Trainieren, erneuten Trainieren oder Aktualisieren eines Modells zum maschinellen Lernen gemäß mindestens einer Ausführungsform. Bei mindestens einer Ausführungsform kann das Verfahren 1500 unter Verwendung des Systems 1400 aus 14 als nicht einschränkendes Beispiel ausgeführt werden. Bei mindestens einer Ausführungsform kann das Verfahren 1500 die Dienste 1320 und/oder die Hardware 1322 des Systems 1400 nutzen, wie es hier beschrieben ist. Bei mindestens einer Ausführungsform können verfeinerte Modelle 1512, die durch das Verfahren 1500 erzeugt wurden, durch das Einsatzsystem 1306 für eine oder mehrere containerisierte Anwendungen in Einsatzpipelines 1410 ausgeführt werden.
  • Bei mindestens einer Ausführungsform kann das Modelltraining 1314 ein Neutraining oder eine Aktualisierung eines Ausgangsmodells 1504 (z. B. eines vorab trainierten Modells) unter Verwendung neuer Trainingsdaten (z. B. neuer Eingabedaten, wie dem Kundendatensatz 1506, und/oder neuer, mit den Eingabedaten verbundener Ground-Truth-Daten) aufweisen. Bei mindestens einer Ausführungsform kann (können) zum erneuten Trainieren oder Aktualisieren des Ausgangsmodells 1504 die Ausgangs- oder Verlustschicht(en) des Ausgangsmodells 1504 zurückgesetzt oder gelöscht und/oder durch eine aktualisierte oder neue Ausgangs- oder Verlustschicht(en) ersetzt werden. Bei mindestens einer Ausführungsform kann das Ausgangsmodell 1504 über zuvor feinabgestimmte Parameter (z. B. Gewichte und/oder Bias) verfügen, die von einem früheren Training übrig geblieben sind, so dass das Training oder das erneute Training 1314 nicht so lange dauert oder so viel Verarbeitung erfordert wie das Training eines Modells von Grund auf. Bei mindestens einer Ausführungsform können während des Modelltrainings 1314 durch Zurücksetzen oder Ersetzen der Ausgangs- oder Verlustschicht(en) des Ausgangsmodells 1504 die Parameter aktualisiert und für einen neuen Datensatz neu abgestimmt werden, und zwar auf der Grundlage von Verlustberechnungen, die mit der Genauigkeit der Ausgangs- oder Verlustschicht(en) bei der Erstellung von Vorhersagen für den neuen Kundendatensatz 1506 (z. B. die Bilddaten 1308 von 13) verbunden sind.
  • Bei mindestens einer Ausführungsform können vorab trainierte Modelle 1406 in einem Datenspeicher oder einem Register gespeichert werden (z. B. dem Modellregister 1324 von 13). Bei mindestens einer Ausführungsform können die vorab trainierten Modelle 1406 zumindest teilweise in einer oder mehreren anderen Einrichtungen als der Einrichtung, die das Verfahren 1500 ausführt, trainiert worden sein. Bei mindestens einer Ausführungsform können die vortrainierten Modelle 1406 zum Schutz der Privatsphäre und der Rechte von Patienten, Objekten oder Kunden verschiedener Einrichtungen vor Ort trainiert worden sein, wobei Kunden- oder Patientendaten verwendet wurden, die vor Ort erzeugt wurden. Bei mindestens einer Ausführungsform können vortrainierte Modelle 1406 unter Verwendung der Cloud 1426 und/oder anderer Hardware 1322 trainiert werden, aber vertrauliche, datenschutzrechtlich geschützte Patientendaten dürfen nicht an Komponenten der Cloud 1426 (oder anderer Hardware außerhalb des Standorts) übertragen werden, von diesen verwendet werden oder für diese zugänglich sein. Bei mindestens einer Ausführungsform, bei der ein vortrainiertes Modell 1406 unter Verwendung von Patientendaten von mehr als einer Einrichtung trainiert wird, kann das vortrainierte Modell 1406 individuell für jede Einrichtung trainiert worden sein, bevor es auf Patienten- oder Kundendaten von einer anderen Einrichtung trainiert wird. Bei mindestens einer Ausführungsform, z. B. wenn Kunden- oder Patientendaten aus Datenschutzgründen freigegeben wurden (z. B. durch eine Verzichtserklärung, für experimentelle Zwecke usw.) oder wenn Kunden- oder Patientendaten in einem öffentlichen Datensatz enthalten sind, können Kunden- oder Patientendaten aus einer beliebigen Anzahl von Einrichtungen verwendet werden, um das vorab trainierte Modell 1406 vor Ort und/oder außerhalb der Einrichtung zu trainieren, z. B. in einem Datenzentrum oder einer anderen Cloud-Computing-Infrastruktur.
  • Bei mindestens einer Ausführungsform kann ein Benutzer bei der Auswahl von Anwendungen zur Verwendung in Einsatzpipelines 1410 auch Modelle für maschinelles Lernen auswählen, die für bestimmte Anwendungen verwendet werden sollen. Bei mindestens einer Ausführungsform verfügt ein Benutzer möglicherweise nicht über ein zu verwendendes Modell, so dass er ein vortrainiertes Modell 1406 zur Verwendung mit einer Anwendung auswählen kann. Bei mindestens einer Ausführungsform kann es sein, dass das vortrainierte Modell 1406 nicht dafür optimiert ist, genaue Ergebnisse für den Kundendatensatz 1506 einer Einrichtung eines Benutzers zu erzeugen (z. B. auf der Grundlage der Patientenvielfalt, der demografischen Daten, der Arten der verwendeten medizinischen Bildgebungseinrichtungen usw.). Bei mindestens einer Ausführungsform kann das vortrainierte Modell 1406 vor der Bereitstellung in der Einsatzpipeline 1410 zur Verwendung mit einer oder mehreren Anwendungen aktualisiert, neu trainiert und/oder für die Verwendung in einer entsprechenden Einrichtung feinabgestimmt werden.
  • Bei mindestens einer Ausführungsform kann ein Benutzer das vortrainierte Modell 1406 auswählen, das aktualisiert, neu trainiert und/oder feinabgestimmt werden soll, und das vortrainierte Modell 1406 kann als Ausgangsmodell 1504 für das Trainingssystem 1304 innerhalb des Verfahrens 1500 bezeichnet werden. Bei mindestens einer Ausführungsform kann der Kundendatensatz 1506 (z. B. Bildgebungsdaten, Genomikdaten, Sequenzierungsdaten oder andere Datentypen, die von Einrichtungen in einer Einrichtung erzeugt werden) verwendet werden, um das Modelltraining 1314 (das ohne Einschränkung Transferlernen aufweisen kann) am Ausgangsmodell 1504 durchzuführen, um ein verfeinertes Modell 1512 zu erzeugen. Bei mindestens einer Ausführungsform können die dem Kundendatensatz 1506 entsprechenden Ground-Truth-Daten vom Trainingssystem 1304 erzeugt werden. Bei mindestens einer Ausführungsform können die Ground-Truth-Daten zumindest teilweise von Klinikern, Wissenschaftlern, Ärzten, Praktikern in einer Einrichtung erzeugt werden (z. B. als gekennzeichnete Klinikdaten 1312 von 13).
  • Bei mindestens einer Ausführungsform kann bei einigen Beispielen die Klgestützte Kennzeichnung 1310 verwendet werden, um Ground-Truth-Daten zu erzeugen. Bei mindestens einer Ausführungsform kann die KI-gestützte Kennzeichnung 1310 (z. B. unter Verwendung eines Kl-gestützten Kennzeichnungs-SDK) Modelle zum maschinellen Lernen (z. B. neuronale Netze) nutzen, um vorgeschlagene oder vorhergesagte Ground-Truth-Daten für einen Kundendatensatz zu erzeugen. Bei mindestens einer Ausführungsform kann der Benutzer 1510 Kennzeichnungswerkzeuge innerhalb einer Benutzeroberfläche (einer grafischen Benutzeroberfläche (GUI)) auf der Recheneinrichtung 1508 verwenden.
  • Bei mindestens einer Ausführungsform kann der Benutzer 1510 über die Recheneinrichtung 1508 mit einer GUI interagieren, um (automatische) Kennzeichnungen zu bearbeiten oder fein abzustimmen. Bei mindestens einer Ausführungsform kann eine Polygonbearbeitungsfunktion verwendet werden, um Eckpunkte eines Polygons an genauere oder feinere Positionen zu verschieben.
  • Bei mindestens einer Ausführungsform können, sobald dem Kundendatensatz 1506 Ground-Truth-Daten zugeordnet sind, Ground-Truth-Daten (z. B. aus KI-gestützter Kennzeichnung, manueller Beschriftung usw.) während des Modelltrainings 1314 verwendet werden, um ein verfeinertes Modell 1512 zu erstellen. Bei mindestens einer Ausführungsform kann der Kundendatensatz 1506 beliebig oft auf das Ausgangsmodell 1504 angewendet werden, und die Ground-Truth-Daten können zur Aktualisierung der Parameter des Ausgangsmodells 1504 verwendet werden, bis ein akzeptables Genauigkeitsniveau für das verfeinerte Modell 1512 erreicht ist. Bei mindestens einer Ausführungsform kann das verfeinerte Modell 1512, sobald es generiert ist, in einer oder mehreren Einsatzpipelines 1410 in einer Einrichtung zur Durchführung einer oder mehrerer Verarbeitungsaufgaben in Bezug auf medizinische Bildgebungsdaten eingesetzt werden.
  • Bei mindestens einer Ausführungsform kann das verfeinerte Modell 1512 zu den vortrainierten Modellen 1406 in dem Modellregister 1324 hochgeladen werden, um von einer anderen Einrichtung ausgewählt zu werden. Bei mindestens einer Ausführungsform kann dieser Verfahren in einer beliebigen Anzahl von Einrichtungen abgeschlossen werden, so dass das verfeinerte Modell 1512 beliebig oft an neuen Datensätzen weiter verfeinert werden kann, um ein universelleres Modell zu erzeugen.
  • 15B ist gemäß mindestens einer Ausführungsform eine beispielhafte Darstellung einer Client-Server-Architektur 1532 zur Verbesserung von Kennzeichnungswerkzeugen mit vortrainierten Kennzeichnungsmodellen. Bei mindestens einer Ausführungsform können KI-gestützte Kennzeichnungswerkzeuge 1536 auf der Grundlage einer Client-Server-Architektur 1532 instanziiert werden. Bei mindestens einer Ausführungsform können die Kennzeichnungswerkzeuge 1536 in bildgebenden Anwendungen Radiologen beispielsweise bei der Identifizierung von Organen und Anomalien unterstützen. Bei mindestens einer Ausführungsform können Bildgebungsanwendungen Softwaretools aufweisen, die dem Benutzer 1510 helfen, als nicht einschränkendes Beispiel einige extreme Punkte auf einem bestimmten Organ von Interesse in Rohbildern 1534 (z. B. in einem 3D-MRI- oder CT-Scan) zu identifizieren und automatisch gekennzeichnete Ergebnisse für alle 2D-Schichten eines bestimmten Organs zu erhalten. Bei mindestens einer Ausführungsform können die Ergebnisse in einem Datenspeicher als Trainingsdaten 1538 gespeichert und als (z. B. und ohne Einschränkung) Ground-Truth-Daten für das Training verwendet werden. Bei mindestens einer Ausführungsform kann ein Deep-Learning-Modell, wenn die Recheneinrichtung 1508 Extrempunkte für die KI-gestützte Annotation 1310 sendet, diese Daten beispielsweise als Eingabe empfangen und Inferenzergebnisse eines segmentierten Organs oder einer Anomalie zurückgeben. Bei mindestens einer Ausführungsform können vorinstanzierte Kennzeichnungswerkzeuge, wie das Klunterstützte Kennzeichnungswerkzeug 1536B in 15B, durch API-Aufrufe (z. B. API-Aufruf 1544) an einen Server, wie einen Kennzeichnungsassistenzserver 1540, der beispielsweise einen Satz vortrainierter Modelle 1542 aufweisen kann, die in einem Kennzeichnungsmodellregister gespeichert sind, verbessert werden. Bei mindestens einer Ausführungsform kann ein Kennzeichnungsmodellregister 1542 (z. B. Modelle für maschinelles Lernen, wie Modelle für Deep-Learning) gespeichert werden, die für die Durchführung von Kl-gestützten Kennzeichnungen für ein bestimmtes Organ oder eine bestimmte Anomalie trainiert wurden. Diese Modelle können darüber hinaus durch die Verwendung von Trainings-Pipelines 1404 aktualisiert werden. Bei mindestens einer Ausführungsform können die vorinstallierten Kennzeichnungswerkzeuge im Laufe der Zeit verbessert werden, wenn neue gekennzeichnete Klinikdaten 1312 hinzugefügt werden.
  • Solche Komponenten können verwendet werden, um einen verbesserten Inhalt zu erzeugen, wie z.B. einen Bild- oder Videoinhalt mit hochskalierter Auflösung, reduziertem Vorhandensein von Artefakten und verbesserter visueller Qualität.
  • Andere Variationen sind im Sinne der vorliegenden Offenbarung. Während bezüglich der offenbarten Verfahren verschiedene Modifikationen und alternative Konstruktionen vorgenommen werden können, sind bestimmte dargestellte Ausführungsformen davon in den Zeichnungen gezeigt und oben im Detail beschrieben worden. Es ist jedoch klar, dass nicht beabsichtigt ist, die Offenbarung auf eine bestimmte Form oder bestimmte Formen zu beschränken, sondern dass im Gegenteil beabsichtigt ist, alle Modifikationen, alternativen Konstruktionen und Äquivalente abzudecken, die in den Geist und den Umfang der Offenbarung fallen, wie sie in den beigefügten Ansprüchen definiert ist.
  • Die Verwendung der Ausdrücke „ein“ und „eine“ sowie „der“, „die“ und „das“ und ähnlicher Bezeichnungen im Zusammenhang mit der Beschreibung offengelegter Ausführungsformen (insbesondere im Zusammenhang mit den folgenden Ansprüchen) ist so auszulegen, dass sie sowohl die Einzahl als auch die Mehrzahl umfasst, sofern es hier nicht anders angegeben oder durch den Zusammenhang eindeutig widerlegt ist, und nicht als Definition eines Begriffs. Die Begriffe „umfassend“, „habend“, „aufweisend“ und „enthaltend“ sind als offene Begriffe zu verstehen (im Sinne von „einschließlich, aber nicht beschränkt auf“), sofern es nicht anders angegeben ist. Der Begriff „verbunden“ ist, wenn er unverändert bleibt und sich auf physikalische Verbindungen bezieht, als teilweise oder ganz darin enthalten, angebracht an oder verbunden mit zu verstehen, auch wenn etwas dazwischen liegt. Die Erwähnung von Wertebereichen soll lediglich als Kurzform für die individuelle Erwähnung jedes einzelnen Wertes dienen, der in den Bereich fällt, sofern es hier nicht anders angegeben ist, und jeder einzelne Wert wird in die Spezifikation aufgenommen, als ob er hier einzeln aufgeführt wäre. Die Verwendung des Begriffs „Menge“ (z. B. „eine Menge von Gegenständen“) oder „Teilmenge“ ist, sofern es nicht anders angegeben oder durch den Kontext widerlegt ist, als eine nicht leere Sammlung zu verstehen, die ein oder mehrere Elemente umfasst. Darüber hinaus bezeichnet der Begriff „Teilmenge“ einer entsprechenden Menge nicht notwendigerweise eine echte Teilmenge der entsprechenden Menge, sondern die Teilmenge und die entsprechende Menge können gleich sein, sofern nichts anderes vermerkt ist oder sich aus dem Kontext ergibt.
  • Konjunktionale Ausdrücke, wie z. B. Sätze der Form „mindestens eines von A, B und C“ oder „mindestens eines von A, B und C“, werden, sofern es nicht ausdrücklich anders angegeben oder durch den Kontext eindeutig widerlegt ist, in Verbindung mit dem Kontext so verstanden, wie sie im Allgemeinen verwendet werden, um darzustellen, dass ein Element, ein Begriff usw, entweder A oder B oder C oder eine beliebige, nicht leere Teilmenge der Menge von A und B und C sein kann. So beziehen sich beispielsweise in dem anschaulichen Beispiel einer Menge mit drei Mitgliedern die konjunktiven Ausdrücke „mindestens eines von A, B und C“ und „mindestens eines von A, B und C“ auf eine der folgenden Mengen: {A}, {B}, {C}, {A, B}, {A, C}, {B, C}, {A, B, C}. Derartige konjunktivische Ausdrücke sind also nicht generell so zu verstehen, dass bei bestimmten Ausführungsformen jeweils mindestens eines von A, mindestens eines von B und mindestens eines von C vorhanden sein muss. Sofern es nicht anders vermerkt oder durch den Kontext widerlegt ist, bezeichnet der Begriff „Mehrzahl“ einen Zustand der Pluralität (z. B. „eine Mehrzahl von Gegenständen“ bezeichnet mehrere Gegenstände). Eine Mehrzahl besteht aus mindestens zwei Gegenständen, kann aber auch mehr sein, wenn dies entweder ausdrücklich oder durch den Kontext angegeben wird. Darüber hinaus bedeutet „abhängig von“, sofern es nicht anders angegeben oder aus dem Kontext ersichtlich ist, „zumindest teilweise abhängig von“ und nicht „ausschließlich abhängig von“.
  • Die Vorgänge der hier beschriebenen Verfahren können in jeder geeigneten Reihenfolge durchgeführt werden, sofern dies nicht anders angegeben ist oder sich aus dem Kontext eindeutig ergibt. Bei mindestens einer Ausführungsform wird ein Verfahren, wie es hier beschrieben ist (oder Variationen und/oder Kombinationen davon), unter der Steuerung eines oder mehrerer Computersysteme durchgeführt, die mit ausführbaren Anweisungen konfiguriert sind und als Code (z. B. ausführbare Anweisungen, ein oder mehrere Computerprogramme oder eine oder mehrere Anwendungen) implementiert sind, die gemeinsam auf einem oder mehreren Prozessoren, durch Hardware oder Kombinationen davon ausgeführt werden. Bei mindestens einer Ausführungsform ist der Code auf einem computerlesbaren Speichermedium gespeichert, z. B. in Form eines Computerprogramms, das eine Vielzahl von Anweisungen umfasst, die von einem oder mehreren Prozessoren ausgeführt werden können. Bei mindestens einer Ausführungsform handelt es sich bei einem computerlesbaren Speichermedium um ein nicht flüchtiges computerlesbares Speichermedium, das flüchtige Signale (z. B. eine sich ausbreitende transiente elektrische oder elektromagnetische Übertragung) ausschließt, jedoch Schaltungen zum Speichern von nicht flüchtigen Daten (z. B. Puffer, Cache und Warteschlangen) innerhalb von Transceivern für flüchtige Signale einschließt. Bei mindestens einer Ausführungsform ist Code (z. B. ausführbarer Code oder Quellcode) auf einer Menge von einem oder mehreren nicht flüchtigen, computerlesbaren Speichermedien gespeichert, auf denen ausführbare Befehle (oder ein anderer Speicher zum Speichern ausführbarer Befehle) gespeichert sind, die, wenn sie von einem oder mehreren Prozessoren eines Computersystems ausgeführt werden (d. h. als Ergebnis der Ausführung), das Computersystem veranlassen, die hier beschriebenen Operationen durchzuführen. Bei mindestens einer Ausführungsform umfasst eine Menge von nicht flüchtigen, computerlesbaren Speichermedien mehrere nicht flüchtige, computerlesbare Speichermedien, wobei auf einem oder mehreren der einzelnen nicht flüchtigen Speichermedien der mehreren nicht flüchtigen, computerlesbaren Speichermedien nicht der gesamte Code vorhanden ist, während auf mehreren nicht flüchtigen, computerlesbaren Speichermedien zusammen der gesamte Code gespeichert ist. Bei mindestens einer Ausführungsform werden ausführbare Befehle so ausgeführt, dass verschiedene Befehle von verschiedenen Prozessoren ausgeführt werden - zum Beispiel speichert ein nicht flüchtiges computerlesbares Speichermedium Befehle, und eine Hauptzentraleinheit („CPU“) führt einige der Befehle aus, während eine Grafikverarbeitungseinheit („GPU“) andere Befehle ausführt. Bei mindestens einer Ausführungsform haben verschiedene Komponenten eines Computersystems getrennte Prozessoren, und verschiedene Prozessoren führen verschiedene Teilmengen von Befehlen aus.
  • Dementsprechend sind Computersysteme bei mindestens einer Ausführungsform so ausgestaltet, dass sie einen oder mehrere Dienste implementieren, die einzeln oder gemeinsam Operationen der hier beschriebenen Prozesse durchführen, und solche Computersysteme sind mit geeigneter Hardware und/oder Software ausgestaltet, die die Durchführung der Operationen ermöglichen. Darüber hinaus ist ein Computersystem, das mindestens eine Ausführungsform der vorliegenden Offenbarung implementiert, eine einzelne Einrichtung und in einer anderen Ausführungsform ein verteiltes Computersystem, das mehrere Einrichtungen umfasst, die unterschiedlich arbeiten, so dass das verteilte Computersystem die hier beschriebenen Operationen durchführt und dass eine einzelne Einrichtung nicht alle Operationen durchführt.
  • Die Verwendung von Beispielen oder beispielhaften Ausdrücken (z.B. „wie“) dient lediglich der besseren Veranschaulichung von Ausführungsformen der Offenbarung und stellt keine Einschränkung des Umfangs der Offenbarung dar, sofern es nicht anders beansprucht wird. Keine Formulierung in der Beschreibung sollte so ausgelegt werden, dass ein nicht beanspruchtes Element als wesentlich für die Praxis der Offenbarung angesehen wird.
  • Alle Referenzen, einschließlich Veröffentlichungen, Patentanmeldungen und Patente, die hierin zitiert werden, werden hiermit durch Inbezugnahme in demselben Ausmaß einbezogen, als ob jede Referenz einzeln und ausdrücklich als durch Inbezugnahme einbezogen angegeben wäre und hier in ihrer Gesamtheit dargelegt würde.
  • In der Beschreibung und in den Ansprüchen können die Begriffe „gekoppelt“ und „verbunden“ sowie ihre Ableitungen verwendet werden. Es ist klar, dass diese Begriffe nicht als Synonyme füreinander zu verstehen sind. Vielmehr kann in bestimmten Beispielen „verbunden“ oder „gekoppelt“ verwendet werden, um anzuzeigen, dass zwei oder mehr Elemente in direktem oder indirektem physischem oder elektrischem Kontakt zueinander stehen. „Gekoppelt“ kann auch bedeuten, dass zwei oder mehr Elemente nicht in direktem Kontakt zueinander stehen, aber dennoch zusammenarbeiten oder miteinander interagieren.
  • Sofern es nicht ausdrücklich anders angegeben ist, beziehen sich Begriffe wie „Verarbeiten“, „Rechnen“, „Berechnen“, „Bestimmen“ o. ä. in der gesamten Beschreibung auf Aktionen und/oder Prozesse eines Computers oder eines Rechensystems oder einer ähnlichen elektronischen Recheneinrichtung, die Daten, die als physikalische, z. B. elektronische, Größen in den Registern und/oder Speichern des Rechensystems dargestellt werden, manipulieren und/oder in andere Daten umwandeln, die in ähnlicher Weise als physikalische Größen in den Speichern, Registern oder anderen Einrichtungen zur Speicherung, Übertragung oder Anzeige von Informationen des Rechensystems dargestellt werden.
  • In ähnlicher Weise kann sich der Begriff „Prozessor“ auf eine Einrichtung oder einen Abschnitt einer Einrichtung beziehen, die elektronische Daten aus Registern und/oder Speichern verarbeitet und diese elektronischen Daten in andere elektronische Daten umwandelt, die in Registern und/oder Speichern gespeichert werden können. Als nicht einschränkende Beispiele kann der „Prozessor“ eine CPU oder eine GPU sein. Eine „Datenverarbeitungsplattform“ kann einen oder mehrere Prozessoren umfassen. Der hier verwendete Begriff „Software“-Prozesse kann z. B. Software- und/oder Hardware-Einheiten aufweisen, die im Laufe der Zeit Arbeit verrichten, wie z. B. Tasks, Threads und intelligente Agenten. Jeder Prozess kann sich auch auf mehrere Prozesse beziehen, um Anweisungen nacheinander oder parallel, kontinuierlich oder intermittierend auszuführen. Die Begriffe „System“ und „Verfahren“ werden hier austauschbar verwendet, da ein System eine oder mehrere Verfahren umfassen kann und Verfahren als System betrachtet werden können.
  • Im vorliegenden Dokument kann auf das Erhalten, Erfassen, Empfangen oder Eingeben analoger oder digitaler Daten in ein Teilsystem, ein Computersystem oder eine computerimplementierte Maschine Bezug genommen werden. Das Erhalten, Erfassen, Empfangen oder Eingeben analoger und digitaler Daten kann auf verschiedene Weise erfolgen, beispielsweise durch den Empfang von Daten als Parameter eines Funktionsaufrufs oder eines Aufrufs einer Anwendungsprogrammierschnittstelle. In einigen Implementierungen kann der Prozess des Erhaltens, Erfassens, Empfangens oder Eingebens von analogen oder digitalen Daten durch die Übertragung von Daten über eine serielle oder parallele Schnittstelle durchgeführt werden. In einer anderen Implementierung kann der Prozess des Erhaltens, Erfassens, Empfangens oder Eingebens analoger oder digitaler Daten durch die Übertragung von Daten über ein Computernetzwerk von der bereitstellenden Einheit zur erfassenden Einheit durchgeführt werden. Es kann auch auf das Bereitstellen, Ausgeben, Übertragen, Senden oder Präsentieren analoger oder digitaler Daten Bezug genommen werden. In verschiedenen Beispielen kann das Bereitstellen, Ausgeben, Übertragen, Senden oder Darstellen analoger oder digitaler Daten durch die Übertragung von Daten als Eingabe- oder Ausgabeparameter eines Funktionsaufrufs, als Parameter einer Anwendungsprogrammierschnittstelle oder eines Interprozess-Kommunikationsmechanismus erfolgen.
  • Obwohl die obige Diskussion beispielhafte Implementierungen der beschriebenen Verfahren darlegt, können auch andere Architekturen verwendet werden, um die beschriebene Funktionalität zu implementieren, und diese fallen in den Anwendungsbereich dieser Offenbarung. Darüber hinaus können verschiedene Funktionen und Verantwortlichkeiten je nach den Umständen auf unterschiedliche Weise verteilt und aufgeteilt werden, obwohl oben zu Diskussionszwecken spezifische Verteilungen von Verantwortlichkeiten definiert wurden.
  • Auch wenn der Gegenstand in einer Sprache beschrieben wurde, die sich auf strukturelle Merkmale und/oder Verfahrensvorgänge bezieht, ist klar, dass der in den beigefügten Ansprüchen beanspruchte Gegenstand nicht notwendigerweise auf die beschriebenen spezifischen Merkmale oder Vorgänge beschränkt ist. Vielmehr werden spezifische Merkmale und Vorgänge als beispielhafte Formen der Umsetzung der Ansprüche offenbart.

Claims (20)

  1. Computer-implementiertes Verfahren, umfassend: Bestimmen einer zu rendernden Oberfläche in einer virtuellen Umgebung; Unterteilen der die Oberfläche enthaltenden Umgebung in eine Vielzahl von Voxeln, wobei die Voxel Knoten eines hierarchischen Baumes entsprechen; Bestimmen einer Menge von Abfragepunkten in der Nähe der zu rendernden Oberfläche, wobei einzelne Abfragepunkte einer Teilmenge der Vielzahl von Voxeln auf mehreren Leveln des hierarchischen Baums entsprechen; Durchführen einer Interpolation für die Menge von Abfragepunkten, zumindest teilweise abhängig von der Teilmenge der Vielzahl von Voxeln auf den mehreren Leveln, welche entsprechende Abschnitte der Oberfläche für einzelne Abfragepunkte der Menge enthalten, um eine Menge von summierten Merkmalsvektoren zu erzeugen; und Verwenden entsprechender neuronaler Netze, um zumindest teilweise abhängig von den summierten Merkmalsvektoren vorzeichenbehaftete Abstandswerte für die Abfragepunkte zu bestimmen, welche zum Rendern der Oberfläche verwendet werden.
  2. Computerimplementiertes Verfahren nach Anspruch 1, welches darüber hinaus umfasst: Bestimmen einer Teilmenge von Voxeln, welche mindestens einen Abschnitt der zu rendernden Oberfläche enthalten; und Verwenden nur der Teilmenge von Voxeln, um ein Merkmalsvolumen für den hierarchischen Baum zu erzeugen.
  3. Computerimplementiertes Verfahren nach Anspruch 1 oder 2, wobei der hierarchische Baum ein dünnbesetzter Voxel-Octree (SVO) ist.
  4. Computerimplementiertes Verfahren nach einem der vorhergehenden Ansprüche, wobei die entsprechenden neuronalen Netze neuronale vorzeichenbehaftete Abstandsfunktionen (SDFs) für die Abfragepunkte aufweisen.
  5. Computerimplementiertes Verfahren nach einem der vorhergehenden Ansprüche, welches darüber hinaus umfasst: Bestimmen eines Detaillevels (LOD), mit dem die Oberfläche zu rendern ist, wobei eine Anzahl von Leveln in dem hierarchischen Baum zumindest teilweise abhängig von dem LOD bestimmt wird.
  6. Computerimplementiertes Verfahren nach Anspruch 5, wobei eine Interpolation für die Menge von Abfragepunkten über die Voxel auf den mehreren Leveln, welche verschiedenen Detailleveln entsprechen, bestimmt wird.
  7. Computerimplementiertes Verfahren nach einem der vorhergehenden Ansprüche, wobei das Rendern der Oberfläche mit einer interaktiven Anzeige-Rate erfolgt.
  8. Computerimplementiertes Verfahren nach einem der vorhergehenden Ansprüche, wobei die neuronalen Netze verwendet werden, um andere Oberflächen als die zum Training der neuronalen Netze verwendeten darzustellen.
  9. Computerimplementiertes Verfahren nach einem der vorhergehenden Ansprüche, welches darüber hinaus umfasst: Durchführen eines Sphären-Tracings innerhalb der Voxel, welche mit Abfragepunkten korrespondieren, die als in der Nähe einer Oberfläche liegend bestimmt werden, um einen oder mehrere Abstandswerte zu bestimmen.
  10. System umfassend: einen oder mehrere Prozessoren; und eine oder mehrere Speichereinrichtungen, welche Anweisungen speichern, die, wenn sie von dem einen oder den mehreren Prozessoren ausgeführt werden, den einen oder die mehreren Prozessoren veranlassen, Operationen auszuführen, welche umfassen: Bestimmen einer zu rendernden Oberfläche in einer virtuellen Umgebung; Unterteilen der die Oberfläche enthaltenden virtuellen Umgebung in eine Vielzahl von Voxeln, wobei die Voxel Knoten eines Octrees entsprechen; Verwerfen der Voxel, welche nicht mindestens einen Abschnitt der Oberfläche enthalten, aus einer Betrachtung; Bestimmen einer Menge von Abfragepunkten in der Nähe der zu rendernden Oberfläche, wobei die Abfragepunkte jeweils einer Teilmenge der Vielzahl von Voxeln auf mehreren Leveln des Octrees entsprechen; Durchführen einer Interpolation für die Menge von Abfragepunkten, zumindest teilweise abhängig von der Teilmenge der Vielzahl von Voxeln auf den mehreren Leveln, welche entsprechende Abschnitte der Oberfläche für einzelne Abfragepunkte der Menge enthalten, um eine Menge von summierten Merkmalsvektoren zu erzeugen; und Verwenden entsprechender neuronaler Netze, um aus den summierten Merkmalsvektoren vorzeichenbehaftete Abstandswerte zu bestimmen, welche zum Rendern der Oberfläche verwendet werden.
  11. System nach Anspruch 10, wobei die entsprechenden neuronalen Netze neuronale vorzeichenbehaftete Abstandsfunktionen (SDFs) für die Abfragepunkte aufweisen.
  12. System nach Anspruch 10 oder 11, wobei die Anweisungen, wenn sie von dem einen oder den mehreren Prozessoren ausgeführt werden, den einen oder die mehreren Prozessoren veranlassen, Operationen auszuführen, welche darüber hinaus umfassen: Bestimmen eines Detaillevels (LOD), mit dem die Oberfläche zu rendern ist, wobei eine Anzahl von Leveln in dem hierarchischen Baum zumindest teilweise auf der Grundlage des LODs bestimmt wird.
  13. System nach Anspruch 12, wobei eine Interpolation für die Menge von Abfragepunkten über die Voxel auf den mehreren Leveln, welche verschiedenen Detailleveln entsprechen, bestimmt wird.
  14. System nach einem der Ansprüche 10 bis 13, wobei die Anweisungen, wenn sie von dem einen oder den mehreren Prozessoren ausgeführt werden, den einen oder die mehreren Prozessoren veranlassen, Operationen auszuführen, welche darüber hinaus umfassen: Durchführen eines Sphären-Tracings innerhalb der Voxel, wo Abfragepunkte bestimmt werden, um in der Nähe einer Oberfläche zu liegen, um einen oder mehrere Abstandswerte zu bestimmen.
  15. System nach einem der Ansprüche 10 bis 14, wobei das System mindestens eines umfasst von: ein System zum Durchführen von Simulationsoperationen; ein System zum Durchführen von Simulationsoperationen, um autonome Maschinenanwendungen zu testen oder zu validieren; ein System zum Rendern einer grafischen Ausgabe; ein System zum Durchführen von Deep-Learning-Operationen; ein System, welches unter Verwendung einer Edge-Einrichtung implementiert ist; ein System, welches eine oder mehrere virtuelle Maschinen (VMs) enthält; ein System, welches zumindest teilweise in einem Datenzentrum implementiert ist; oder ein System, welches zumindest teilweise unter Verwendung von Cloud-Computing-Ressourcen implementiert ist.
  16. Nicht-transitorisches computerlesbares Speichermedium, welches Anweisungen aufweist, welche, wenn sie von dem einen oder den mehreren Prozessoren ausgeführt werden, den einen oder die mehreren Prozessoren veranlassen, Operationen auszuführen, welche umfassen: Bestimmen einer zu rendernden Oberfläche in einer virtuellen Umgebung; Unterteilen der die Oberfläche enthaltenden virtuellen Umgebung in eine Vielzahl von Voxeln, wobei die Voxel Knoten eines Octrees entsprechen; Verwerfen der Voxel, welche nicht mindestens einen Abschnitt der Oberfläche enthalten, aus einer Betrachtung; Bestimmen einer Menge von Abfragepunkten in der Nähe der zu rendernden Oberfläche, wobei die Abfragepunkte jeweils in einer Teilmenge der Vielzahl von Voxeln auf mehreren Leveln des Octrees enthalten sind; Durchführen einer Interpolation für die Menge von Abfragepunkten, zumindest teilweise abhängig von der Teilmenge der Vielzahl von Voxeln auf den mehreren Leveln, welche entsprechende Abschnitte der Oberfläche für einzelne Abfragepunkte der Menge enthalten, um eine Menge von summierten Merkmalsvektoren zu erzeugen; und Verwenden entsprechender neuronaler Netze, um aus den summierten Merkmalsvektoren eine Menge von vorzeichenbehafteten Abstandswerten zu bestimmen, welche zum Rendern der Oberfläche verwendet werden.
  17. Nicht-transitorisches computerlesbares Speichermedium nach Anspruch 16, wobei die entsprechenden neuronalen Netze neuronale vorzeichenbehaftete Abstandsfunktionen (SDFs) für die Abfragepunkte aufweisen.
  18. Nicht-transitorisches computerlesbares Speichermedium nach Anspruch 16 oder 17, wobei die Anweisungen, wenn sie von dem einen oder den mehreren Prozessoren ausgeführt werden, den einen oder die mehreren Prozessoren veranlassen, Operationen auszuführen, welche darüber hinaus umfassen: Bestimmen eines Detaillevels (LOD), mit dem die Oberfläche zu rendern ist, wobei eine Anzahl von Leveln in dem hierarchischen Baum zumindest teilweise abhängig von dem LOD bestimmt wird.
  19. Nicht-transitorisches computerlesbares Speichermedium nach Anspruch 18, wobei eine Interpolation für die Menge von Abfragepunkten über die Voxel auf den mehreren Leveln, welche verschiedenen Detailleveln entsprechen, bestimmt wird.
  20. Nicht-transitorisches computerlesbares Speichermedium nach einem der Ansprüche 16 bis 19, wobei die Anweisungen, wenn sie von dem einen oder den mehreren Prozessoren ausgeführt werden, den einen oder die mehreren Prozessoren veranlassen, Operationen auszuführen, welche darüber hinaus umfassen: Durchführen eines Sphären-Tracings innerhalb der Voxel, wo Abfragepunkte bestimmt werden, um in der Nähe einer Oberfläche zu liegen, um einen oder mehrere Abstandswerte zu bestimmen.
DE102021131289.2A 2020-11-30 2021-11-29 Echtzeit-rendering mit impliziten formen Pending DE102021131289A1 (de)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US202063119590P 2020-11-30 2020-11-30
US63/119,590 2020-11-30
US17/314.182 2021-05-07
US17/314,182 US11335056B1 (en) 2020-11-30 2021-05-07 Real-time rendering with implicit shapes

Publications (1)

Publication Number Publication Date
DE102021131289A1 true DE102021131289A1 (de) 2022-06-02

Family

ID=81585966

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102021131289.2A Pending DE102021131289A1 (de) 2020-11-30 2021-11-29 Echtzeit-rendering mit impliziten formen

Country Status (3)

Country Link
US (2) US11335056B1 (de)
CN (1) CN114581587A (de)
DE (1) DE102021131289A1 (de)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11823319B2 (en) 2021-09-02 2023-11-21 Nvidia Corporation Techniques for rendering signed distance functions
CN115080053B (zh) * 2022-06-10 2024-02-27 西北工业大学 一种面向监督学习应用的集群机器人控制方法
US20240029357A1 (en) * 2022-07-19 2024-01-25 Himanshu Arora Apparatus, method, and computer-readable medium for implicit representation of texture on 3d images
CN116570925A (zh) * 2023-05-19 2023-08-11 韶关学院 一种基于ar开发的资源管理方法

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101805619B1 (ko) * 2011-01-25 2017-12-07 삼성전자주식회사 3차원 의료 영상으로부터 최적의 2차원 의료 영상을 자동으로 생성하는 방법 및 장치
US10223635B2 (en) * 2015-01-22 2019-03-05 Qualcomm Incorporated Model compression and fine-tuning
US10698562B1 (en) * 2019-04-30 2020-06-30 Daqri, Llc Systems and methods for providing a user interface for an environment that includes virtual objects
AU2021229706A1 (en) * 2020-03-06 2022-04-28 Yembo, Inc. Systems and methods for building a virtual representation of a location

Also Published As

Publication number Publication date
US11335056B1 (en) 2022-05-17
US20220172423A1 (en) 2022-06-02
US11875449B2 (en) 2024-01-16
CN114581587A (zh) 2022-06-03
US20220284659A1 (en) 2022-09-08

Similar Documents

Publication Publication Date Title
DE112020003547T5 (de) Transfer Learning für neuronale Netzwerke
DE112020001253T5 (de) Techniken zum Trainieren eines neuronalen Netzes unter Verwendung von Transformationen
DE102021128292A1 (de) Skalierbare semantische bildsuche mit deep- template- matching
DE112021001481T5 (de) Neuronales rendern für inverse grafikgenerierung
DE112021002830T5 (de) Erzeugung von bildern von virtuellen umgebungen unter verwendung eines oder mehrerer neuronaler netzwerke
DE102021131289A1 (de) Echtzeit-rendering mit impliziten formen
DE112020002425T5 (de) Bewegungsvorhersage unter verwendung eines oder mehrerer neuronaler netzwerke
DE112021002965T5 (de) Generierung von szenengraphen für unmarkierte daten
DE102021125231A1 (de) Unüberwachte domainanpassung mit neuronalen netzen
DE102021125238A1 (de) Auf fourier-transformation basierte bildsynthese unter verwendung von neuralen netzen
DE102022101664A1 (de) Techniken des maschinellen lernens zur verbesserung von anwendungen für videokonferenzen
DE102022112157A1 (de) Echtzeit-verbesserung für streaming-inhalt
DE102022128165A1 (de) Datenpfadschaltungsentwurf unter verwendung von reinforcement learning
DE102023113190A1 (de) Identifizieren von Applikationspuffern zum Nachbearbeiten und Wiederverwenden in sekundären Applikationen
DE102021114849A1 (de) Umgebungserzeugung unter verwendung eines oder mehrerer neuronaler netzwerke
DE102021132529A1 (de) Adaptive zeitliche bildfilterung zum rendern einer realistischen beleuchtung
DE102022113807A1 (de) Räumlich-zeitliche masken für rauschen und sampling unter verwendung von vektoren für bildverarbeitungs- und lichttransport-simulationssysteme und -anwendungen
DE102023125188A1 (de) Überblenden von videorahmen
DE102023103679A1 (de) Texturübertragung und -synthese unter verwendung ausgerichteter karten in bildgenerierungssystemen und -anwendungen
DE102023125014A1 (de) Anwendungsprogrammierschnittstelle zum ausführen der rahmeninterpolation
DE102023116064A1 (de) Bildbeleuchtung auf der basis neuronaler netzwerke
DE102023112256A1 (de) Neuronale Netze zur Anzeige von Datenabhängigkeiten
DE102023102679A1 (de) Berechnung des optischen flusses mittels semiglobalem abgleich
DE102022113303A1 (de) Raum-zeitliche rauschmasken für die bildverarbeitung
DE102022108108A1 (de) Zwischenspeicherung von kompilierten shader-programmen in einer cloud-computing-umgebung

Legal Events

Date Code Title Description
R012 Request for examination validly filed