DE112021001481T5 - Neuronales rendern für inverse grafikgenerierung - Google Patents

Neuronales rendern für inverse grafikgenerierung Download PDF

Info

Publication number
DE112021001481T5
DE112021001481T5 DE112021001481.1T DE112021001481T DE112021001481T5 DE 112021001481 T5 DE112021001481 T5 DE 112021001481T5 DE 112021001481 T DE112021001481 T DE 112021001481T DE 112021001481 T5 DE112021001481 T5 DE 112021001481T5
Authority
DE
Germany
Prior art keywords
network
data
training
image
generative
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
DE112021001481.1T
Other languages
English (en)
Inventor
Wenzheng Chen
Alex Zhang
Sanja Fidler
Huan Ling
Jun Gao
Antonio Torralba Barriuso
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 DE112021001481T5 publication Critical patent/DE112021001481T5/de
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T17/00Three dimensional [3D] modelling, e.g. data description of 3D objects
    • 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/04Architecture, e.g. interconnection topology
    • G06N3/047Probabilistic or stochastic networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • G06N3/088Non-supervised learning, e.g. competitive learning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/10Geometric effects

Landscapes

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

Abstract

Es werden Ansätze vorgestellt, um ein inverses Grafiknetzwerk zu trainieren. Ein Bildsynthese-Netzwerk kann Trainingsdaten für ein inverses Grafiknetzwerk generieren. Das inverse Grafiknetzwerk wiederum kann dem Synthese-Netzwerk die physikalischen dreidimensionalen (3D) Steuerungen beibringen. Ein solcher Ansatz kann eine genaue 3D-Rekonstruktion von Objekten aus 2D-Bildern unter Verwendung des trainierten inversen Grafiknetzwerks bereitstellen, wobei nur wenig Annotation der bereitgestellten Trainingsdaten erforderlich ist. Ein solcher Ansatz kann 3D-Wissen, das von generativen Modellen erlernt wurde, extrahieren und trennen, indem differenzierbare Renderer verwendet werden, so dass ein getrenntes generatives Modell als kontrollierbarer „neuronaler 3D-Renderer“ fungieren kann, der herkömmliche Grafik-Renderer ergänzt.

Description

  • VERWEIS AUF VERWANDTE ANMELDUNGEN
  • Diese Anmeldung beansprucht Priorität für die US-Non-Provisional-Patentanmeldung Nr. 17/193,405 , eingereicht am 5. März 2021, mit dem Titel „Neural Rendering for Inverse Graphics Generation“, die sich auf die vorläufige Patentanmeldung Nr. 62/986,618, eingereicht am 6. März 2020, mit dem Titel „3D Neural Rendering and Inverse Graphics with StyleGAN Renderer“ beruft, die hiermit in vollem Umfang und für alle Zwecke einbezogen werden.
  • Diese Anmeldung ist auch mit der gemeinsam angemeldeten US-Patentanmeldung Nr. 17/019,120 , die am 11. September 2020 eingereicht wurde und den Titel „Labeling Images Using a Neural Network“ trägt, sowie mit der gemeinsam angemeldeten US-Patentanmeldung Nr. 17/020,649 , die am 14. September 2020 eingereicht wurde und den Titel „Generating Labels for Synthetic Images Using One or More Neural Networks“ trägt, verbunden, die hiermit in ihrer Gesamtheit und für alle Zwecke aufgenommen werden.
  • HINTERGRUND
  • Eine Vielzahl verschiedener Branchen verwendet dreidimensionale (3D-) Modellierung für verschiedene Zwecke, einschließlich solcher, die eine Generierung von Repräsentationen von 3D-Umgebungen erfordern. Um realistische, komplexe Umgebungen bereitzustellen, ist es notwendig, eine Vielzahl verschiedener Objekttypen oder ähnlicher Objekte mit unterschiedlichen Erscheinungsbildern zur Verfügung zu haben, um unrealistische Wiederholungen oder Auslassungen zu vermeiden. Leider kann die Beschaffung einer großen Anzahl von dreidimensionalen Modellen ein komplexer, teurer und zeit- (und ressourcen-) intensiver Prozess sein. Es kann wünschenswert sein, 3D-Umgebungen aus einer großen Menge verfügbarer zweidimensionaler (2D-) Daten zu generieren, aber viele bestehende Ansätze stellen keine adäquate 3D-Modellgenerierung basierend auf2D-Daten bereit. Für vielversprechende Ansätze, die beispielsweise maschinelles Lernen beinhalten, ist es nach wie vor erforderlich, über eine ausreichend große Anzahl und Vielfalt markierter Trainingsdaten zu verfügen, um das maschinelle Lernen zu trainieren. Eine unzureichende Anzahl und Vielfalt an annotierten Instanzen von Trainingsdaten kann verhindern, dass ein Modell ausreichend trainiert wird, um akzeptabel genaue Ergebnisse zu erzielen.
  • Figurenliste
  • Verschiedene Ausführungsbeispiele gemäß der vorliegenden Offenbarung werden unter Bezugnahme auf die Zeichnungen beschrieben, in denen Folgendes dargestellt ist:
    • 1A, 1B und 1C zeigen Bilddaten, die gemäß mindestens einem Ausführungsbeispiel verwendet werden können;
    • 2 zeigt eine Pipeline für neuronales Rendern und inverse Grafik, gemäß zumindest einem Ausführungsbeispiel;
    • 3 zeigt die Komponenten eines Bilderzeugungssystems, gemäß zumindest einem Ausführungsbeispiel;
    • 4 zeigt repräsentative Punkte, die verwendet werden, um Ansichts- oder Poseninformationen für ein Objekt zu bestimmen, gemäß mindestens einem Ausführungsbeispiel;
    • 5 zeigt ein Verfahren zum Trainieren eines inversen Grafiknetzwerks, gemäß zumindest einem Ausführungsbeispiel;
    • 6 zeigt Komponenten eines Systems zum Trainieren und Verwenden eines inversen Grafiknetzwerks, gemäß mindestens einem Ausführungsbeispiel;
    • 7A zeigt eine Inferenz- und/oder Trainingslogik, gemäß zumindest einem Ausführungsbeispiel;
    • 7B zeigt eine Inferenz- und/oder Trainingslogik, gemäß zumindest einem Ausführungsbeispiel;
    • 8 zeigt ein Rechenzentrumssystem, gemäß zumindest einem Ausführungsbeispiel;
    • 9 zeigt ein Rechnersystem, gemäß mindestens einem Ausführungsbeispiel;
    • 10 zeigt ein Rechnersystem, gemäß mindestens einem Ausführungsbeispiel;
    • 11 zeigt zumindest Teile eines Grafikprozessors, gemäß einem oder mehreren Ausführungsbeispielen;
    • 12 zeigt zumindest Teile eines Graphikprozessors, gemäß einem oder mehreren Ausführungsbeispielen;
    • 13 zeigt ein beispielhaftes Datenflussdiagramm für eine fortgeschrittene Rechen-Pipeline, gemäß mindestens einem Ausführungsbeispiel;
    • 14 zeigt ein Systemdiagramm für ein Beispielsystem zum Trainieren, Anpassen, Instanziieren und Bereitstellen von Modellen für maschinelles Lernen in einer fortgeschrittenen Rechen-Pipeline gemäß mindestens einem Ausführungsbeispiel; und
    • 15A und 15B zeigen ein Datenflussdiagramm für einen Prozess zum Trainieren eines maschinellen Lernmodells sowie eine Client-Server-Architektur zum Verbessern von Annotationstools mit vorab trainierten Annotationsmodellen, gemäß mindestens einem Ausführungsbeispiel.
  • DETAILLIERTE BESCHREIBUNG
  • Ansätze gemäß verschiedenen Ausführungsbeispielen können die Generierung von dreidimensionalen (3D) Modellen oder zumindest die Ableitung einer oder mehrerer 3D-Eigenschaften (z.B. Form, Textur oder Licht) aus zweidimensionalen (2D) Eingaben, wie beispielsweise Bildern oder Einzelbildern, bereitstellen. Insbesondere stellen verschiedene Ausführungsbeispiele Ansätze zum Trainieren eines inversen Grafikmodells bereit, um genaue 3D-Modelle oder Repräsentationen aus 2D-Bildem zu generieren. Zumindest in einigen Ausführungsbeispielen kann ein generatives Modell verwendet werden, um mehrere Ansichten eines Objekts aus verschiedenen Blickwinkeln oder mit verschiedenen Posen zu generieren, wobei andere Bildmerkmale oder Aspekte beibehalten werden. Die generierten Bilder können Pose-, Ansichts- oder Kamerainformationen enthalten, die verwendet wurden, um jedes dieser Bilder zu generieren. Diese Bilder können als Trainingsbilder für ein inverses Grafiknetzwerk verwendet werden. Das inverse Grafiknetzwerk kann einen solchen Satz von Eingabebildern für ein einzelnes Objekt verwenden, um ein Modell für dieses Objekt zu generieren und zu verfeinern. In mindestens einem Ausführungsbeispiel können diese Netzwerke gemeinsam trainiert werden, wobei ein 3D-Modell, das von dem inversen Grafiknetzwerk ausgegeben wird, als Eingabetrainingsdaten in das Generator-Netzwerk eingespeist werden kann, um die Genauigkeit des Generator-Netzwerks zu verbessern. Eine kombinierte Verlustfunktion kann mit Termen sowohl für das inverse Grafiknetzwerk als auch für das Generator-Netzwerk verwendet werden, um beide Netzwerke gemeinsam zu optimieren, indem ein gemeinsamer Satz von Trainingsdaten verwendet wird. Ein solcher Ansatz kann eine verbesserte 3D-Rekonstruktionsleistung im Vergleich zu vorherigen Ansätzen bereitstellen, kann eine Kategoriegeneralisierung ermöglichen (d.h. ein Modell muss nicht nur für eine bestimmte Art von Objektklasse trainiert werden) und kann den Bedarf an manueller Annotation erheblich reduzieren (z.B. von vielen Stunden auf eine Minute oder weniger).
  • In mindestens einem Ausführungsbeispiel kann ein inverses Grafiknetzwerk trainiert werden, um ein 3D-Modell oder eine Repräsentation zu generieren oder anderweitig 3D-Informationen aus einem 2D-Bild eines Objekts zu bestimmen, wie beispielsweise dem Eingabebild 100 von 1A, das eine Vorderansicht eines Fahrzeugs zeigt. Wie man sich vorstellen kann, stellt das Eingabebild zumindest drei Herausforderungen für die Rekonstruktion eines 3D-Modells oder einer Repräsentation dieses Fahrzeugs bereit. Eine erste Herausforderung besteht darin, dass in diesem Beispiel nur Bilddaten für die Vorderseite des Fahrzeugs vorhanden sind, so dass Bilddaten für andere Teile des Fahrzeugs (z.B. die Rückseite, die Unterseite oder die Seiten) vollständig inferenziert und generiert werden müssten. 1B zeigt beispielsweise weitere Bilder 140 mit verschiedenen Ansichten der Fahrzeugseiten, in denen Teile der Fahrzeugseiten repräsentiert sind, die im ursprünglichen Eingabebild nicht enthalten waren. Eine weitere Herausforderung besteht darin, dass das 2D-Bild keine Tiefeninformationen enthält. Jegliche Tiefen- oder Forminformationen müssen basierend auf der zweidimensionalen Einzelansicht inferenziert werden. Eine weitere Herausforderung besteht darin, dass mit dem Eingabebild 100 keine Kamera- oder Poseninformationen oder Annotationen bereitgestellt werden, die als Referenz verwendet werden können, wenn andere Ansichten oder Teile eines 3D-Modells generiert werden sollen.
  • Um ein Modell, ein Netzwerk oder einen Algorithmus (z.B. ein inverses Grafiknetzwerk) zu trainieren, um solche 3D-Informationen, einschließlich semantischer Informationen, zu generieren oder zu inferenzieren, können Ansätze gemäß verschiedenen Ausführungsbeispielen Ansichtsbilder 140, wie sie in 1B gezeigt sind, als Trainingsbilder für ein Netzwerk bereitstellen. Wie bereits erwähnt, kann es jedoch schwierig sein, eine ausreichende Anzahl von Ansichten für ein bestimmtes Objekt zu erhalten, und selbst wenn eine ausreichende Anzahl erhalten wird, müssen diese Bilder mit ausreichenden Informationen annotiert werden, beispielsweise mit Pose-, Kamera- oder Ansichtsdaten, damit diese Bilder als Grundwahrheits-Trainingsdaten dienen können.
  • Ansätze gemäß verschiedenen Ausführungsbeispielen können einen Generator verwenden, der in der Lage ist, ein Eingabebild, beispielsweise das Bild 100 aus 1A, zu nehmen und einen Satz von Bildern dieses Objekts in verschiedenen Ansichten zu generieren. In mindestens einem Ausführungsbeispiel kann dies ein generatives neuronales Netzwerk sein, beispielsweise ein Generative Adversarial Network (GAN). Ein GAN kann mit einem Eingabebild sowie Pose-, Ansichts- oder Kameradaten bereitgestellt werden und kann eine Repräsentation eines Objekts im Eingabebild generieren, das die bereitgestellten Pose-, Ansichts- oder Kameradaten hat oder diesen entspricht. Um einen Satz von Trainingsbildern für dieses Objekt zu generieren, kann ein Satz von Pose-, Ansichts- oder Kamerainformationen bereitgestellt werden (manuell, zufällig oder nach einem bestimmten Muster oder einer Regel), und ein Bild kann für jede einzelne Pose-, Ansichts- oder Kameraeingabe generiert werden. Ein weiterer Vorteil eines solchen Prozesses besteht darin, dass das GAN die Annotationen ohne zusätzliche Verarbeitung bereitstellen kann, da die Informationen zu Pose, Ansicht oder Kamera bereits bekannt waren und bei der Generierung der Bilder verwendet wurden. Ein Beispiel für ein GAN, das für einen derartigen Zweck verwendet werden kann, ist ein von der NVIDIA Corporation entwickeltes Style Generative Adversarial Network, das auch als StyleGAN bezeichnet wird. Gemäß einem oder mehreren Ausführungsbeispielen erweitert ein StyleGAN-Modell die allgemeine GAN-Architektur um ein Abbildungsnetzwerk, um Punkte im latenten Raum auf einen latenten Zwischenraum abzubilden, das den „Stil“ (z.B. Pose, Ansicht oder Kamerainformationen) an jedem Punkt im Generatormodell steuern und auch Rauschen als Quelle der Variation an jedem dieser Punkte einführen kann. In einem oder mehreren Ausführungsbeispielen kann ein StyleGAN-Modell verwendet werden, um große, genaue Sätze von Multi-Ansichts-Daten in kurzer Zeit und mit relativ geringen Verarbeitungsressourcen zu generieren. Ein StyleGAN-Modell kann ein Eingabebild 140 nehmen und mehrere verschiedene Bilder 140 generieren, die zum Trainieren eines inversen Grafiknetzwerks verwendet werden. Das inverse Grafiknetzwerk kann dann darauf trainiert werden, 2D-Eingabebilder zu nehmen und relativ genaue 3D-Informationen 180 zu generieren oder zu inferenzieren, wie in 1C gezeigt, beispielsweise die Form eines Objekts (die durch ein 3D-Netz repräsentiert werden kann), die Beleuchtung des Objekts (z.B. Richtung, Intensität und Farbe einer oder mehrerer Lichtquellen) und die Textur des Objekts (z.B. ein vollständiger Satz von Bilddaten, der alle relevanten Teile des Objekts repräsentiert). Wie aus Anwendungen wie der Computergrafik bekannt, kann eine Ansicht eines Objekts generiert werden, indem die Textur auf das Netz projiziert, das Netz unter Verwendung der entsprechenden Beleuchtungsinformationen beleuchtet und dann ein Bild dieses Objekts aus einem bestimmten Blickwinkel einer virtuellen Kamera gerendert wird. Für verschiedene Anwendungsfälle, Anwendungen oder Ausführungsbeispiele können auch andere Sätze oder Typen von 3D-Informationen verwendet werden. Die von dem inversen Grafiknetzwerk generierten 3D-Informationen können dann wiederum als Trainingsdaten für das StyleGAN-Modell verwendet werden. Diese Netzwerke können in verschiedenen Ausführungsbeispielen getrennt unter Verwendung separater Verlustfunktionen oder zusammen unter Verwendung einer gemeinsamen Verlustfunktion trainiert werden.
  • 2 zeigt eine beispielhafte Trainingspipeline 200, die gemäß verschiedenen Ausführungsbeispielen verwendet werden kann. Diese beispielhafte Pipeline 200 umfasst zwei verschiedene Renderer. Der erste Renderer ist ein Generator-Netzwerk, wie z.B. ein GAN (z.B. StyleGAN), und der zweite Renderer in diesem Beispiel ist ein differenzierbarer Grafik-Renderer, beispielsweise ein interpolationsbasierter differenzierbarer Renderer (DIB-R). Ein DIB-R ist ein differenzierbares Rendering Framework, das die analytische Berechnung von Gradienten für alle Pixel eines Bildes ermöglicht. Dieses Framework kann die Vordergrundrasterung als gewichtete Interpolation lokaler Eigenschaften und die Hintergrundrasterung als abstandsbasierte Aggregation globaler Geometrie betrachten, was eine genaue Optimierung von Scheitelpunktpositionen, Farben, Normalen, Lichtrichtungen und Texturkoordinaten durch eine Vielzahl von Beleuchtungsmodellen ermöglicht. In diesem Beispiel wird der Generator 204 als Generator für synthetische Daten mit effizienter Annotation eines Multi-Ansicht-Datensatzes 206 verwendet. Dieser Datensatz kann dann zum Trainieren eines inversen Grafiknetzwerks 212 verwendet werden, das 3D-Eigenschaften aus den 2D-Bildern vorhersagt. Dieses Netzwerk kann verwendet werden, um den latenten Code des Generators durch ein sorgfältig entworfenes Abbildungsnetzwerk zu entschlüsseln.
  • In diesem Beispiel können Eingabebilder des Multi-Ansicht-Datensatzes als Eingabe für das inverse Grafiknetzwerk 208 bereitgestellt werden, das ein Inferenzierungsnetzwerk verwenden kann, um 3D-Informationen wie beispielsweise die Form, Beleuchtung und Textur eines Objekts im Bild zu inferenzieren. Zu Trainingszwecken können diese 3D-Informationen zusammen mit den Kamerainformationen aus dem Eingangsbild als Eingabe in einen differenzierbaren Grafik-Renderer eingespeist werden. Dieser Renderer kann die 3D-Informationen nutzen, um Forminformationen, ein 3D-Modell oder ein oder mehrere Bilder für gegebene Kamerainformationen zu generieren. Diese Renderungen können dann mit den relevanten Daten der Grundwahrheit verglichen werden, wobei eine geeignete Verlustfunktion verwendet wird, um die Verlustwerte zu bestimmen. Der Verlust kann dann verwendet werden, um eine oder mehrere Netzwerk-Gewichte oder -Parameter anzupassen. Wie bereits erwähnt, kann die Ausgabe des inversen Grafiknetzwerks 208 auch dazu verwendet werden, den Generator 204 oder StyleGAN weiter zu trainieren oder fein abzustimmen, um genauere Bilder zu generieren.
  • 3 zeigt einen Teil 300 einer solchen Pipeline, die gemäß mindestens einem Ausführungsbeispiel verwendet werden kann. Wie in 2 erwähnt, können 3D-Informationen (oder „Codes“) über ein Objekt in einem Bild inferenziert werden, wie z. B. ein Netz 304, eine Textur 306 und Hintergrundinformationen 308. Es können auch Kamerainformationen verwendet werden, die aus einer oder mehreren Annotationen des eingegebenen Bildes extrahiert wurden. In diesem Beispiel wird das Netz 304 mit einem Prozessor für maschinelles Lernen (MLP) verarbeitet, um eine oder mehrere Dimensionen oder latente Merkmale zu extrahieren. Die Textur 306 und die Hintergrunddaten 308 können mit entsprechenden Kodierern 314, 316 verarbeitet werden, beispielsweise mit einem oder mehreren Convolutional Neural Networks (CNNs), um ebenfalls die relevanten Dimensionen oder Merkmale zu extrahieren. Diese Merkmale oder Dimensionen können dann an ein Entflechtungsmodul 318 weitergeleitet werden, das ein Abbildungsnetzwerk enthält. Das Netzwerk versucht, die Merkmale der verschiedenen Codes auf einen einzigen latenten Code 320 abzubilden, der dem Generator 322 oder Renderer zur Generierung eines Ausgabebildes 322 bereitgestellt wird. In mindestens einem Ausführungsbeispiel entspricht ein Teil eines latenten Codes den Kamerainformationen, der Rest entspricht dem Netz, der Textur und dem Hintergrund. Vor dem Generieren des latenten Codes 320 kann versucht werden, die Merkmale zu einem einzigen Satz von Merkmalen zusammenzufassen, anstelle von drei Sätzen von Merkmalen für das Netz, die Textur und den Hintergrund. Es kann eine Auswahlmatrix S verwendet werden, um diese Merkmale zusammen mit den Kameramerkmalen auszuwählen und in den latenten Code 320 einzubinden. Diese Informationen können dann dem Generator, beispielsweise einem StyleGAN, zum Rendern eines Bildes bereitgestellt werden. Der latente Code kann auch andere Formen annehmen, beispielsweise einen latenten Raum oder einen Merkmalsvektor mit einer bestimmten Dimension, beispielsweise für etwa 500 Merkmale. Der Eintrag für jede Dimension kann Informationen über das Bild enthalten, aber es kann unbekannt sein, welches Merkmal oder welche Dimension welche Informationen oder Aspekte des Bildes kontrolliert oder enthält. Um verschiedene Bildansichten desselben Objekts zu generieren, können die der Kamera entsprechenden Merkmale (die bekannt sind - z. B. die ersten 100 Merkmale) variiert werden, während die anderen Merkmale unverändert bleiben. Ein solcher Ansatz kann sicherstellen, dass sich nur die Ansicht oder die Pose ändert, während andere Aspekte des Objekts oder des Bildes zwischen gerenderten Bildern unverändert bleiben.
  • Zumindest in einigen Ausführungsbeispielen kann es erforderlich sein, dass zumindest eine Art von Kamera- oder Objektansicht oder Poseninformationen als Annotationen bereitgestellt werden. 4 zeigt ein Beispiel für das Bereitstellen von Annotationspunkten 402 für eine Art von Objekt in einem Satz 400 von Bildansichten. Anstatt alle Schlüsselpunkte für ein Objekt zu markieren, was sehr aufwändig sein kann, können schwache Kamerainformationen verwendet werden, die nur eine Teilmenge möglicher Merkmale enthalten. In diesem Beispiel kann die Kameraposition in verschiedene Bereiche aufgeteilt werden, beispielsweise in zwölf Bereiche. Ausgehend von diesen Merkmalspunkten und den Pose-Bereichen kann dies ausreichen, um eine grobe Abschätzung der Objektposition zu erhalten, die für die Annotation des Bildes zur Verwendung als Trainingsdaten verwendet werden kann. Der Prozess kann dann mit diesen ungenauen Kamerapositionsinformationen initialisiert werden. Ein solches Verfahren kann auch mit verschiedenen Arten von Objekten arbeiten, beispielsweise mit Menschen, Tieren, Fahrzeugen und so weiter.
  • Ansätze gemäß verschiedenen Ausführungsbeispielen können daher differenzierbares Rendern verwenden, um das Training eines oder mehrerer neuronaler Netzwerke zu unterstützen, um inverse Grafikaufgaben auszuführen, wie beispielsweise (ohne Einschränkung) Aufgaben wie die Vorhersage von 3D-Geometrie aus monokularen (z.B. 2D-) Fotos. Um leistungsstarke Modelle zu trainieren, sind viele herkömmliche Ansätze auf Multi-Ansicht-Bilder angewiesen, die in der Praxis nicht ohne weiteres verfügbar sind. Neuere Generative Adversarial Networks (GANs), die Bilder synthetisieren, scheinen dagegen während des Trainings implizit 3D-Wissen zu erwerben: Objektstandpunkte können durch einfache Manipulation der latenten Codes manipuliert werden. Allerdings fehlt diesen latenten Codes oft eine weitere physikalische Interpretation, so dass GANs nicht ohne weiteres invertiert werden können, um explizite 3D-Schlussfolgerungen zu ziehen. 3D-Wissen, das durch generative Modelle erlernt wurde, kann zumindest teilweise durch die Verwendung differenzierbarer Renderer extrahiert und entwirrt werden. In mindestens einem Ausführungsbeispiel können ein oder mehrere Generative Adversarial Network (GANs) als Multi-Ansicht-Datengenerator genutzt werden, um ein inverses Grafiknetzwerk zu trainieren. Dazu kann ein handelsüblicher differenzierbarer Renderer verwendet werden, und das trainierte inverse Grafiknetzwerk dient als Lehrer, um den latenten Code des GAN in interpretierbare 3D-Eigenschaften zu zerlegen. In verschiedenen Ansätzen kann eine gesamte Architektur iterativ unter Verwendung von Zykluskonsistenzverlusten trainiert werden. Ein solcher Ansatz kann im Vergleich zu konventionellen inversen Grafiknetzwerken, die auf bestehenden Datensätzen trainiert wurden, eine deutlich verbesserte Leistung bereitstellen, sowohl in quantitativer Hinsicht als auch durch Anwenderstudien. Ein solches entwirrtes GAN kann auch als steuerbarer 3D-„neuronaler Renderer“ verwendet werden, der herkömmliche Grafik-Renderer ergänzen kann.
  • Die Fähigkeit, 3D-Eigenschaften wie Geometrie, Textur, Material und Licht aus Fotos zu inferenzieren, ist in vielen Bereichen, beispielsweise AR/VR, Robotik, Architektur und Computervision, von entscheidender Bedeutung. Das Interesse an diesem Problem ist vor allem in den letzten Jahren explosionsartig gestiegen, was durch eine Vielzahl veröffentlichter Arbeiten und mehrere veröffentlichte 3D-Bibliotheken belegt wird. Der Prozess der Umwandlung von Bildern in 3D wird oft als „inverse Grafik“ bezeichnet, da das Problem dem Prozess des Renderns in der Grafik entgegengesetzt ist, bei dem eine 3D-Szene auf ein 2D-Bild projiziert wird, wobei die Geometrie und die Materialeigenschaften von Objekten sowie die in der Szene vorhandenen Lichtquellen berücksichtigt werden. Die meisten Arbeiten zur inversen Grafik gehen davon aus, dass 3D-Markierungen während des Trainings verfügbar sind, und trainieren ein neuronales Netzwerk zur Vorhersage dieser Markierungen. Um eine hochwertige 3D-Grundwahrheit zu gewährleisten, werden in der Regel synthetische Datensätze wie beispielsweise ShapeNet verwendet. Modelle, die auf synthetischen Datensätzen trainiert wurden, haben jedoch aufgrund der Diskrepanz zwischen synthetischen Bildern und realen Fotografien oft Schwierigkeiten.
  • Um zumindest einige dieser Probleme zu umgehen, kann ein alternativer Ansatz zum Training eines inversen Grafiknetzwerks verwendet werden, der die Notwendigkeit einer 3D-Grundwahrheit während des Trainings umgeht. Grafik-Renderer können differenzierbar gemacht werden, was es erlaubt, 3D-Eigenschaften direkt aus Bildern zu inferenzieren, indem eine gradientenbasierte Optimierung verwendet wird. Zumindest einige dieser Ansätze können ein neuronales Netzwerk einsetzen, um Geometrie, Textur und Licht aus Bildern vorherzusagen, indem sie die Differenz zwischen dem Eingabebild und dem aus diesen Eigenschaften gerenderten Bild minimieren. Obwohl einige Ansätze beeindruckende Ergebnisse erzielt haben, erfordern viele dieser Ansätze immer noch eine Form der impliziten 3D-Überwachung, beispielsweise durch die Verwendung von Multi-Ansicht-Bildern desselben Objekts mit bekannten Kameras. Andererseits scheinen generative Bildmodelle 3D-Informationen implizit zu erlernen, wobei die Manipulation des latenten Codes Bilder derselben Szene aus einem anderen Blickwinkel erzeugen kann. Dem erlernten latenten Raum fehlt jedoch typischerweise die physikalische Interpretation und er ist in der Regel nicht entwirrt, wobei Eigenschaften wie beispielsweise die 3D-Form und Farbe des Objekts oft nicht unabhängig manipuliert werden können.
  • Ansätze gemäß mindestens einem Ausführungsbeispiel können 3D-Wissen, das durch generative Modelle gelernt wurde, extrahieren und entwirren, indem sie differenzierbare Grafik-Renderer verwenden. In mindestens einem Ausführungsbeispiel kann ein Generator, beispielsweise ein GAN, als Generator von Multi-Ansicht-Bildern genutzt werden, um ein inverses Grafiknetzwerk unter Verwendung eines differenzierbaren Renderers zu trainieren. Das inverse Grafiknetzwerk wiederum kann verwendet werden, um den Generator über den Bildbildungsprozess durch das Wissen aus der Grafik zu informieren, wodurch der latente Raum des GANs effektiv entwirrt wird. In mindestens einem Ausführungsbeispiel kann ein GAN (z.B. StyleGAN) mit einem inversen Grafiknetzwerk verbunden werden, um eine einzige Architektur zu bilden, die iterativ unter Verwendung von Zykluskonsistenzverlusten trainiert werden kann. Ein solcher Ansatz kann ein trainiertes Netzwerk erzeugen, das inverse Grafiknetzwerke auf bestehenden Datensätzen deutlich übertrifft und eine kontrollierbare 3D-Generierung und - Manipulation von Bildern unter Verwendung eines entwirrten generativen Modells bereitstellen kann.
  • Eine Pipeline, die für einen solchen Ansatz verwendet werden kann, wurde zuvor in Bezug auf 2 beschrieben. Ein solcher Ansatz kann zwei Arten von Renderern kombinieren: einen GAN-basierten neuronalen „Renderer“ und einen differenzierbaren Grafik-Renderer. In mindestens einem Ausführungsbeispiel kann ein solcher Ansatz die Tatsache ausnutzen, dass ein GAN lernen kann, hochrealistische Bilder von Objekten zu erzeugen, und eine zuverlässige Kontrolle über die virtuelle Kamera ermöglicht, die verwendet wird, um Ansichten dieser Objekte zu generieren. Eine Reihe von Kameraansichten kann manuell oder anderweitig ausgewählt werden, beispielsweise mit einer groben Annotation des Blickpunkts. Ein GAN, beispielsweise StyleGAN, kann dann verwendet werden, um eine große Anzahl von Beispielen pro Ansicht zu generieren. Ein solcher Datensatz kann verwendet werden, um ein inverses Grafiknetzwerk zu trainieren, das einen differenzierbaren Renderer wie beispielsweise DIB-R verwendet. Ein trainiertes inverses Grafiknetzwerk kann verwendet werden, um den latenten Code des GAN zu entwirren und das GAN in einen neuronalen 3D-Renderer zu verwandeln, der die Kontrolle über explizite 3D-Eigenschaften ermöglicht.
  • In mindestens einem Ausführungsbeispiel kann ein Generator wie beispielsweise ein StyleGAN-Modell verwendet werden, um Multi-Ansicht-Bilder zu generieren. Ein Beispiel für ein StyleGAN-Modell ist ein neuronales Netzwerk mit 16 Schichten, das einen latenten Code z ∈ Z aus einer Normalverteilung auf ein realistisches Bild abbildet. Der Code z wird zunächst auf einen latenten Zwischencode w ∈ W abgebildet, der durch 16 gelernte affine Transformationen in W * = ( W 1 * , W 2 * , , W 16 * ) W *
    Figure DE112021001481T5_0001
    transformiert wird. W* wird als transformierter latenter Raum bezeichnet, um ihn vom latenten Zwischenraum W zu unterscheiden. Die transformierten latenten Codes w* werden dann als Stilinformationen in ein StyleGAN-Synthese-Netzwerk eingespeist.
  • Verschiedene Schichten können unterschiedliche Bildattribute im Generator steuern. Stile in frühen Schichten passen den Kamerastandpunkt an, während Stile in den mittleren und höheren Schichten Form, Textur und Hintergrund beeinflussen. Es wurde empirisch festgestellt, dass der latente Code W v * : = ( W 1 * , W 2 * , W 3 * , W 4 * )
    Figure DE112021001481T5_0002
    in den ersten vier Schichten den Kamerablickwinkel in zumindest einem StyleGAN-Modell steuert. Das heißt, wenn ein Prozess einen neuen Code W v *
    Figure DE112021001481T5_0003
    sampelt, aber die übrigen Dimensionen von w* festhält (was als Inhaltscode bezeichnet wird), können Bilder desselben Objekts generiert werden, die in einem anderen Blickwinkel dargestellt werden. Weiter lässt sich feststellen, dass ein gesampelter Code W v *
    Figure DE112021001481T5_0004
    in der Tat einen festen Kamerastandpunkt repräsentiert. Das heißt, wenn W v *
    Figure DE112021001481T5_0005
    fest gehalten wird, aber die übrigen Dimensionen von w* gesampelt werden, kann der Generator Bilder von verschiedenen Objekten unter demselben Kamerastandpunkt generieren. Da der Generator als Multi-Ansicht-Datengenerator arbeitet, werden die Objekte in den einzelnen Blickwinkeln aneinander ausgerichtet (engl. aligned, dt. auch angepasst).
  • In einem beispielhaften Ansatz können mehrere Ansichten manuell ausgewählt werden, die alle gängigen Blickwinkel eines Objekts im Bereich von 0-360 Grad im Azimut und etwa 0-30 Grad in der Höhe abdecken. Bei einem solchen Ansatz kann darauf geachtet werden, dass die Ansichten ausgewählt werden, in denen die Objekte am konsistentesten erscheinen. Da inverse Grafiktechniken in der Regel Informationen über die Kameraposition verwenden, können die gewählten Blickpunktcodes mit einer groben absoluten Kameraposition annotiert werden. Genauer gesagt, kann jeder Blickpunktcode beispielsweise einem von zwölf Azimutwinkeln zugeordnet werden, die gleichmäßig in 360-Grad-Schritten gesampelt werden. Jedem Code kann eine feste Höhe (z.B. 0°) und ein fester Kameraabstand zugewiesen werden. Diese Kamerapositionen können eine sehr grobe Annotation der tatsächlichen Pose bereitstellen, da die Annotation als Initialisierung der Kamera dient, die während des Trainings optimiert wird. Ein solcher Ansatz stellt die Annotation aller Ansichten und damit des gesamten Datensatzes in relativ kurzer Zeit bereit, beispielsweise in einer Minute oder weniger. Ein solches Ergebnis kann den Aufwand für die Annotation praktisch vernachlässigbar machen. Für jeden Blickwinkel kann eine große Anzahl von Inhaltscodes gesampelt werden, um verschiedene Objekte in diesen Ansichten zu synthetisieren. Da ein differenzierbarer Renderer wie DIB-R während des Trainings auch Segmentierungsmasken verwenden kann, kann ein Netzwerk wie beispielsweise MaskRCNN weiter eingesetzt werden, um eine Segmentierung der Instanzen im generierten Datensatz zu erhalten. Da ein Generator manchmal unrealistische Bilder oder Bilder mit mehreren Objekten generieren kann, können in mindestens einem Ausführungsbeispiel Bilder mit mehr als einer Instanz oder kleinen Masken (weniger als 10 % der gesamten Bildfläche) herausgefiltert werden.
  • Ansätze gemäß mindestens einem Ausführungsbeispiel können darauf abzielen, ein durch θ parametrisiertes 3D-Vorhersagenetzwerk f, zu trainieren, um 3D-Formen (die als Netze repräsentiert werden können) zusammen mit Texturen aus Bildern zu inferenzieren. Iv sei ein Bild im Blickpunkt V aus einem Generator-Datensatz und M die entsprechende Objektmaske. Das inverse Grafiknetzwerk macht eine Vorhersage wie folgt: {S, T} ƒθ = (Iv), wobei S die vorhergesagte Form und T eine Texturkarte bezeichnet. Die Form S wird aus einer Kugel deformiert. DIB-R unterstützt zwar auch die Vorhersage von Beleuchtungseffekten, seine Leistung ist jedoch für realistische Bilder möglicherweise nicht ausreichend, so dass die Abschätzung von Beleuchtungseffekten in der vorliegenden Diskussion nicht berücksichtigt wird.
  • Um das Netzwerk zu trainieren, kann ein Renderer wie beispielsweise DIB-R als differenzierbarer Grafikrenderer verwendet werden, der {S, T} und V als Eingabe erhält und ein gerendertes Bild I V ' = r ( S , T , V )
    Figure DE112021001481T5_0006
    zusammen mit einer gerenderten Maske M' erzeugt. Entsprechend dem DIB-R nimmt die Verlustfunktion dann die folgende Form an: L ( I , S , T , V , θ ) = λ c o l L c o l ( I , I ' ) + λ p e r c e p t L p e r c e p t ( I , I ' ) + L I O U ( M , M ' ) + λ s m L s m ( S ) + λ l a p L l a p ( S ) + λ m o v L m o v ( S )
    Figure DE112021001481T5_0007
  • Dabei ist Lcol der standardmäßige L1-Bildrekonstruktionsverlust, der im RGB-Farbraum definiert ist, während Lpercept der Wahrnehmungsverlust ist, der die vorhergesagte Textur realistischer aussehen lässt. Zu beachten ist, dass gerenderte Bilder keinen Hintergrund haben, daher werden Lcol und Lpercept unter Verwendung der Maske berechnet. LIOU berechnet die Überschneidung zwischen der Maske der Grundwahrheit und der gerenderten Maske. Regularisierungsverluste wie der Laplace-Verlust Llap und der Abflachungsverlust Lsm werden üblicherweise verwendet, um sicherzustellen, dass sich die Form gut verhält. Lmov schließlich reguliert die Formdeformation so, dass sie gleichmäßig und klein ist.
  • Da auch Zugang zu Multi-Ansicht-Bildern für jedes Objekt bestehen kann, kann ein Multi-Ansicht-Konsistenzverlust einbezogen werden. Insbesondere kann der Verlust pro Objekt k gegeben sein durch: L k ( θ ) = i , j , i j ( L ( I V i ' k , S k , T k , V i k , θ ) ) + L ( I V i ' k , S k , T k , T k , V j k , θ ) )  where  { S k , T k , L k } = ƒ θ ( I V i k )
    Figure DE112021001481T5_0008
  • Obwohl mehr Ansichten mehr Einschränkungen zur Folge haben, hat die Erfahrung gezeigt, dass zwei Ansichten ausreichen. Die Ansichtspaare (i,j) können aus Gründen der Effizienz nach dem Zufallsprinzip gesampelt (engl. sample, dt. auch auswählen) werden. Die oben genannten Verlustfunktionen können verwendet werden, um das neuronale Netzwerk ƒ gemeinsam zu trainieren und die Kameras V zu optimieren. Es kann davon ausgegangen werden, dass verschiedene Bilder, die aus demselben W v *
    Figure DE112021001481T5_0009
    generiert wurden, demselben Standpunkt V entsprechen. Die Optimierung der Kamera zusammen mit den Gewichten des Netzwerks ermöglicht es einem solchen Ansatz, mit verrauschten initialen Kameraannotationen effektiv umzugehen.
  • Das inverse Grafikmodell ermöglicht das Inferenzieren eines 3D-Netzes und einer Textur aus einem gegebenen Bild. Diese 3D-Eigenschaften können dann verwendet werden, um den latenten Raum des Generators zu entwirren und den Generator in einen vollständig steuerbaren neuronalen 3D-Renderer zu verwandeln, der beispielsweise als StyleGAN-R bezeichnet werden kann. Es ist anzumerken, dass StyleGAN in der Tat mehr als nur ein Objekt synthetisiert, es erzeugt auch den Hintergrund, um eine ganze Szene zu erhalten. Zumindest in einigen Ausführungsbeispielen kann auch die Kontrolle über den Hintergrund bereitgestellt werden, so dass der neuronale Renderer 3D-Objekte in die gewünschten Szenen rendern kann. Um den Hintergrund aus einem gegebenen Bild zu erhalten, kann das Objekt in mindestens einem Ausführungsbeispiel ausgeblendet werden.
  • Ein Abbildungsnetzwerk kann trainiert und verwendet werden, um den Blickpunkt, die Form (z.B. Netz), die Textur und den Hintergrund in den latenten Code des Generators abzubilden. Da der Generator nicht vollständig entwirrt werden darf, kann das gesamte generative Modell fein abgestimmt werden, während das inverse Grafiknetzwerk fest bleibt. Ein Abbildungsnetzwerk, wie beispielsweise das in 3 gezeigte, kann die Ansichtspunkte auf die ersten vier Schichten und die Form, die Textur und den Hintergrund auf die letzten zwölf Schichten von W* abbilden. Der Einfachheit halber können die ersten vier Schichten als WV* und die letzten zwölf Schichten als WS*TB bezeichnet werden, wobei WV* ∈ R2048 und WS*TBE R3008. Es sei darauf hingewiesen, dass es in anderen Modellen oder Netzwerken eine andere Anzahl von Schichten geben kann. In diesem Beispiel sind das Abbildungsnetzwerk gv für den Ansichtspunkt V und gs für die Form S separate MLPs, während gt für die Textur T und gb für den Hintergrund B CNN-Schichten sind: z v i e w = g v ( V ; θ v ) , z s h a p e = g s ( S ; θ s ) , z t x t = g t ( T ; θ t ) , z b c k = g b ( B ; θ b ) ,
    Figure DE112021001481T5_0010
    wobei zview ∈ R,zshape, ztxt, zbck ∈ R3008 und θv, θs, θt, θb Netzwerkparameter sind. Die Form-, Textur- und Hintergrundcodes können wie folgt zu dem endgültigen latenten Code softkombiniert werden: w ˜ m t b = s m z s h a p e + z t x t + s b z b c k ,
    Figure DE112021001481T5_0011
    wobei O das elementweise Produkt bezeichnet und sm, st, sb ∈ R3008 von allen Samples gemeinsam genutzt wird. Um eine Entflechtung zu erreichen, kann jede Dimension des endgültigen Codes durch nur eine Eigenschaft (z.B. Form, Textur oder Hintergrund) erklärt werden. Ein Verfahren gemäß mindestens einem Ausführungsbeispiel kann daher jede Dimension von s unter Verwendung eines SoftMax normalisieren. In der Praxis wurde festgestellt, dass die Abbildung von V auf einen hochdimensionalen Code schwierig sein kann, da ein Datensatz möglicherweise nur eine begrenzte Anzahl von Ansichten enthält und V auf Azimut, Höhe und Maßstab beschränkt ist. Ein Ansatz besteht darin, V auf die Teilmenge von W v *
    Figure DE112021001481T5_0012
    abzubilden, wobei empirisch eine Zahl, beispielsweise 144 von 2048, oder Dimensionen mit der höchsten Korrelation mit den annotierten Ansichtspunkten ausgewählt wird. So ergibt sich in diesem Beispiel zview ∈ R144 ∈ R144.
  • In mindestens einem Ausführungsbeispiel können das Abbildungsnetzwerk trainiert und das StyleGAN-Modell in zwei separaten Stufen feinabgestimmt werden. In einem Beispiel werden die Gewichte des StyleGAN-Modells eingefroren und nur das Abbildungsnetzwerk wird trainiert. In einem oder mehreren Ausführungsbeispielen erleichtert oder verbessert dies die Fähigkeit des Abbildungsnetzwerks, angemessene latente Codes für das StyleGAN-Modell auszugeben. Der Prozess kann dann eine Feinabstimmung sowohl des StyleGAN-Modells als auch des Abbildungsnetzwerks vornehmen, um verschiedene Attribute besser zu entwirren. In einer Aufwärmphase können die Codes der Ansichtspunkte W v *
    Figure DE112021001481T5_0013
    unter den ausgewählten Ansichtspunkten gesampelt und die verbleibenden Dimensionen von w* ∈ W* gesampelt werden. Es kann versucht werden, die L2-Differenz zwischen dem abgebildeten Code w̃ und dem Code w* des StyleGAN-Modells zu minimieren. Um die Entflechtung im latenten Raum zu fördern, kann die Entropie jeder Dimension i von s bestraft werden. Eine beispielhafte Gesamtverlustfunktion für dieses Abbildungsnetzwerk kann dann wie folgt lauten: L m a p n e t ( θ v , θ s , θ t , θ v ) = w ˜ w 2 i k ( m , t , b ) s i k log ( s i k )
    Figure DE112021001481T5_0014
  • Durch das Trainieren des Abbildungsnetzwerks können Ansicht, Form und Textur im ursprünglichen StyleGAN-Modell entflochten werden, der Hintergrund kann jedoch verflochten bleiben. Das Modell kann daher fein abgestimmt werden, um eine bessere Entflechtung zu erreichen. Zur Feinabstimmung des StyleGAN-Modells kann ein Zykluskonsistenzverlust eingebaut werden. Insbesondere kann das StyleGAN-Modell mit einem Sample von Form, Textur und Hintergrund gefüttert werden, um ein synthetisiertes Bild zu erhalten. Ein solcher Ansatz kann die Konsistenz zwischen den ursprünglichen Sample-Eigenschaften und der Form, der Textur und dem Hintergrund fördern, die vom StyleGAN-synthetisierten Bild über das inverse Grafiknetzwerk vorhergesagt werden. Derselbe Hintergrund B kann mit zwei verschiedenen {S, T} -Paaren gespeist werden, um zwei Bilder I1 und I2 zu generieren. Die neu synthetisierten Hintergründe B1 und B2 können dann dazu gebracht werden, ähnlich zu sein. Mit diesem Verlust wird versucht, den Hintergrund vom Vordergrundobjekt zu entkoppeln. Während des Trainings kann die Anwendung des Konsistenzverlustes auf B im Bildraum zu unscharfen Bildern führen, daher kann er im Code-Raum eingeschränkt werden. Ein Beispiel für einen Feinabstimmungsverlust hat die folgende Form: L s t y l e g a n ( θ g a n = S S ¯ 2 + T T ¯ 2 + g b ( B ) g b ( B ¯ ) 2 + g b ( B ¯ 1 ) g b B ¯ 2 2 )
    Figure DE112021001481T5_0015
  • In einem Beispiel wurde ein DIB-R-basiertes inverses Grafikmodell mit Adam trainiert, mit einer Lernrate von 1e4, wobei λIOU, λcol, λlap, λsm jeweils auf 3, 20, 5, 5 bzw. 2,5 gesetzt wurden. Das Modell wurde zunächst mit dem Verlustfaktor Lcol in 3K Iterationen trainiert und dann durch Hinzufügen von Lpecept feinabgestimmt, um die Textur realistischer zu machen. Bei diesem Verfahren wurde λ percept auf 0,5 gesetzt. Das Modell konvergierte in 200.000 Iterationen mit einer Stapelgröße von 16. Das Training dauerte etwa 120 Stunden auf vier V100-GPUs. Das Training führte zu hochwertigen 3D-Rekonstruktionsergebnissen, einschließlich der Qualität der vorhergesagten Formen und Texturen sowie der Vielfalt der erhaltenen 3D-Formen. Dieses Verfahren funktionierte auch bei anspruchsvolleren (z.B. gelenkigen) Klassen, beispielsweise bei Tieren, gut.
  • In mindestens einem Ausführungsbeispiel wurde ein StyleGAN-R-Modell unter Verwendung von Adam mit einer Lernrate von 1e5 und einer Stapelgröße von 16 trainiert. Die Aufwärmphase dauerte 700 Iterationen, und die gemeinsame Feinabstimmung wurde für weitere 2500 Iterationen durchgeführt. Bei dem bereitgestellten Eingabebild wurden zunächst Netz und Textur unter Verwendung des trainierten inversen Grafikmodells vorhergesagt und dann diese 3D-Eigenschaften in StyleGAN-R eingespeist, um ein neues Bild zu generieren. Zum Vergleich wurden dieselben 3D-Eigenschaften in den DIB-R-Grafikrenderer (den OpenGL-Renderer) eingespeist. Es ist festzustellen, dass DIB-R nur das vorhergesagte Objekt rendern kann, während StyleGAN-R auch die Möglichkeit hat, das Objekt in einen gewünschten Hintergrund zu rendern. Es wurde festgestellt, dass StyleGAN-R im Vergleich zum Eingabebild relativ konsistente Bilder erzeugt. Form und Textur bleiben gut erhalten, während nur der Hintergrund eine leichte inhaltliche Verschiebung aufweist.
  • Ein solcher Ansatz wurde bei der Bearbeitung von StyleGAN-synthetisierten Bildern aus einem Testsatz und echten Bildern getestet. Konkret wurden bei einem Eingabebild 3D-Eigenschaften unter Verwendung des inversen Grafiknetzwerks vorhergesagt und der Hintergrund durch Ausblenden des Objekts mit einem Mask-RCNN extrahiert. Der Ansatz manipulierte dann diese Eigenschaften und speiste sie in ein StyleGAN-R ein, um neue Ansichten zu synthetisieren.
  • Um den Ansichtspunkt zu kontrollieren, fror der Prozess zunächst Form, Textur und Hintergrund ein und änderte nur den Ansichtspunkt der Kamera. Es wurden aussagekräftige Ergebnisse erzielt, insbesondere für Form und Textur. Zum Vergleich: Ein alternativer Weg, der erforscht wurde, ist die direkte Optimierung des latenten Codes des GAN (in einem Beispielfall der Code des ursprünglichen StyleGAN) über einen L2-Bildrekonstruktionsverlust. Ein solcher Ansatz kann jedoch versagen, plausible Bilder zu generieren, was zumindest in einem Ausführungsbeispiel die Bedeutung des Abbildungsnetzwerks und der Feinabstimmung der gesamten Architektur mit einem inversen Grafiknetzwerk in der Schleife verdeutlicht.
  • Um Form, Textur und Hintergrund zu kontrollieren, kann ein solcher Ansatz versuchen, diese oder andere 3D-Eigenschaften zu manipulieren, während der Ansichtspunkt der Kamera fixiert bleibt. In einem Beispiel können die Formen aller Autos auf eine ausgewählte Form geändert werden und ein neuronales Rendern unter Verwendung eines StyleGAN-R durchgeführt werden. Mit einem solchen Verfahren wurde die Form des Autos erfolgreich ausgetauscht, während andere Eigenschaften beibehalten wurden. Das Verfahren ist auch in der Lage, winzige Teile des Autos zu verändern, beispielsweise den Kofferraum und die Scheinwerfer. Das gleiche Experiment kann auch durchgeführt werden, wobei jedoch Textur und Hintergrund ausgetauscht werden. In einigen Ausführungsbeispielen kann durch den Austausch der Texturen auch der Hintergrund leicht verändert werden, was darauf hindeutet, dass weitere Verbesserungen bei der Entflechtung der beiden vorgenommen werden können. Ein solches Framework kann auch gut funktionieren, wenn es mit echten Bildern bereitgestellt wird, da die Bilder von StyleGAN recht realistisch sind.
  • Das StyleGAN-Code-Repository stellt Modelle verschiedener Objektkategorien in unterschiedlichen Auflösungen bereit. Hier wird ein 512 × 384 Auto-Modell als Beispiel genommen. Dieses Modell enthält 16 Schichten, wobei jeweils zwei aufeinanderfolgende Schichten einen Block bilden. Jeder Block hat eine unterschiedliche Anzahl von Kanälen. Im letzten Block erzeugt das Modell eine 32-Kanal-Merkmalskarte mit einer Auflösung von 512 × 384. Schließlich wird eine gelernte RGB-Transformationsfunktion angewendet, um die Merkmalskarte in ein RGB-Bild umzuwandeln. Die Merkmalskarte für jeden Block kann über die gelernte RGB-Transformationsfunktion visualisiert werden. Konkret kann das Verfahren für die Merkmalskarte in jedem Block mit der Größe h × w × c zunächst entlang der Merkmalsdimension summieren und so einen h × w × 1 -Tensor bilden. Das Verfahren kann das Merkmal 32-mal wiederholen und eine neue h × w × 32-Merkmalskarte generieren. Auf diese Weise können die Informationen aller Kanäle beibehalten und die RGB-Transformationsfunktion im letzten Block direkt angewendet werden, um sie in ein RGB-Bild umzuwandeln. In diesem Beispiel weisen die Blöcke 1 und 2 keine interpretierbare Struktur auf, während die Form des Fahrzeugs in den Blöcken 3 bis 5 zu erscheinen beginnt. In Block 4 ist eine grobe Fahrzeugkontur zu erkennen, die weiter in Block 5 deutlich wird. In den Blöcken 6 bis 8 wird die Form des Fahrzeugs immer feiner und auch der Hintergrund erscheint. Dies spricht dafür, dass der Ansichtspunkt in den Blöcken 1 und 2 (z.B. in den ersten 4 Schichten) kontrolliert wird, während Form, Textur und Hintergrund in den letzten 12 Schichten dieses Beispiels vorhanden sind. Sowohl die Form und die Textur des Autos als auch die Hintergrundszene waren über die verschiedenen Ansichtspunkte hinweg sehr konsistent. Beachten Sie, dass bei gelenkigen Objekten, wie beispielsweise Pferden und Vögeln, ein StyleGAN-Modell die Artikulation des Objekts in verschiedenen Ansichtspunkten möglicherweise nicht perfekt beibehält, was beim Trainieren von Modellen mit hoher Genauigkeit unter Verwendung von Multi-Ansicht-Konsistenzverlusten zu Problemen führen kann.
  • Wie bereits erwähnt, erfordern inverse Grafikaufgaben während des Trainings Informationen über die Kameraposition, deren Beschaffung für reale Bilder schwierig sein kann. Die Pose wird im Allgemeinen durch die Annotation von Schlüsselpunkten für jedes Objekt und die Anwendung von SFM-Techniken (Structure-from-Motion) zur Berechnung von Kameraparametern ermittelt. Die Annotation von Schlüsselpunkten ist jedoch recht zeitaufwändig - pro Objekt werden in einem Experiment etwa 3-5 Minuten benötigt. Mit Hilfe eines StyleGAN-Modells lässt sich der Annotationsaufwand erheblich reduzieren, da Samples mit demselben W v *
    Figure DE112021001481T5_0016
    denselben Ansichtspunkt gemeinsam nutzen. Daher muss der Prozess nur einige ausgewählte W v *
    Figure DE112021001481T5_0017
    den Kameraposen zuordnen. Dies reicht aus, um inverse Grafiknetzwerke zu trainieren, bei denen die Kameras zusammen mit den Netzwerkparametern während des Trainings gemeinsam optimiert werden, indem diese Bins als Initialisierung verwendet werden. In einem Beispiel wird jede Ansicht mit einer groben absoluten Kameraposition annotiert (die beim Training weiter optimiert werden kann). Genauer gesagt, kann ein Beispiel zunächst 12 Azimutwinkel auswählen: [0°, 30°, 60°, 90°, 120°, 150°, 180°, 210°, 240°, 270°, 300°, 330°]. Bei einem gegebenen StyleGAN Ansichtspunkt kann manuell klassifiziert werden, welchem Azimutwinkel er am nächsten liegt, und er wird der entsprechenden Markierung mit fester Elevation (0°) und Kameradistanz zugewiesen.
  • Um die Wirksamkeit dieser Kamera-Initialisierung zu demonstrieren, kann ein Vergleich mit einem anderen inversen Grafiknetzwerk durchgeführt werden, das mit einer genaueren Kamera-Initialisierung trainiert wurde. Eine solche Initialisierung erfolgt durch manuelle Annotation von Objekt-Schlüsselpunkten in jeder der ausgewählten Ansichten ( W v * )
    Figure DE112021001481T5_0018
    eines einzelnen Autobeispiels, was etwa 3-4 Stunden dauert (etwa 200 Minuten, 39 Ansichten). Dies ist immer noch ein deutlich geringerer Aufwand für die Annotation als die 200-350 Stunden, die für die Annotation von Schlüsselpunkten für jedes einzelne Objekt im Pascal3D-Datensatz erforderlich sind. Die Kameraparameter können dann unter Verwendung von Structure from Motion (SfM) berechnet werden. Die beiden inversen Grafiknetzwerke, die mit unterschiedlichen Kamera-Initialisierungen trainiert wurden, können als View-Modell bzw. als Key-Point-Modell bezeichnet werden. Während das Trainieren des View-Modells die gleiche Zeit in Anspruch nimmt, kann das Key-Point-Modell Zeit bei der Annotation sparen. Die Leistung des View-Modells und des Key-Point-Modells sind vergleichbar, wobei die 2D-IOU-Reprojektion auf der StyleGAN-Testreihe fast gleich gut abschneidet. Außerdem konvergieren die beiden Kamerasysteme während des Trainings zur gleichen Position. Dies kann bewertet werden, indem alle Ansichten in Quaternionen umgewandelt werden und die Differenz zwischen den Drehachsen und Drehwinkeln verglichen wird. Bei allen Ansichten beträgt die durchschnittliche Differenz der Rotationsachsen nur 1,43° und der Rotationswinkel 0,42°. Der maximale Unterschied zwischen den Rotationsachsen beträgt nur 2,95° und der Rotationswinkel 1,11°. Sowohl qualitative als auch quantitative Vergleiche haben gezeigt, dass die initiale Kameraansicht ausreicht, um genaue inverse Grafiknetzwerke zu trainieren, und dass keine zusätzliche Annotation erforderlich ist. Dies demonstriert eine skalierbare Methode zur Erstellung von Multi-Ansicht-Datensätzen mit StyleGAN, mit etwa einer Minute Annotation pro Klasse.
  • 5 zeigt ein Beispielverfahren 500 zum Trainieren eines inversen Grafiknetzwerks, das gemäß verschiedenen Ausführungsbeispielen verwendet werden kann. Es sollte verstanden werden, dass für dieses und andere hier vorgestellte Verfahren zusätzliche, weniger oder alternative Schritte in ähnlicher oder alternativer Reihenfolge oder zumindest partiell parallel im Rahmen verschiedener Ausführungsbeispiele durchgeführt werden können, sofern nicht ausdrücklich anders angegeben. Weiter, obwohl in Bezug auf Streaming-Video-Inhalte diskutiert, sollte es verstanden werden, dass solche Verbesserungen für individuelle Bilder oder Bildsequenzen, gespeicherte Videodateien, Augmented- oder Virtual-Reality-Streams oder andere solche Inhalte bereitgestellt werden können. In diesem Beispiel wird ein zweidimensionales (2D) Trainingsbild empfangen, das eine Repräsentation eines Objekts enthält. Eine Reihe von Kamerapositionen wird ebenfalls empfangen (504) oder anderweitig bestimmt. Unter Verwendung der 2D-Bildinformationen mit einem Generator-Netzwerk, beispielsweise einem StyleGAN, wird ein Satz von Ansichtsbildern generiert, der Repräsentationen des Objekts mit Ansichten gemäß dem Satz von Kamerapositionen enthält. Hier würde jedes generierte Bild die entsprechenden Kamerapositionsinformationen enthalten oder mit ihnen assoziiert sein.
  • In diesem Beispiel kann die Menge der generierten Bilder dann als Eingabe für ein inverses Grafiknetzwerk bereitgestellt werden (508). Ein Satz dreidimensionaler (3D-) Informationen, die beispielsweise Form, Beleuchtung und Textur umfassen können, wird 510 für das Objekt im Bild inferenziert. Eine oder mehrere Repräsentationen des Objekts können dann 512 unter Verwendung der 3D-Informationen und der Kamerainformationen aus dem Eingabebild mit einem differenzierbaren Renderer gerendert werden. Die gerenderte(n) Repräsentation(en) kann/können dann 514 mit den entsprechenden Grundwahrheitsdaten verglichen werden, um einen oder mehrere Verlustwerte zu bestimmen. Ein oder mehrere Netzwerkparameter oder Gewichte können dann angepasst werden 516, um zu versuchen, den Verlust zu minimieren. Es kann bestimmt werden 518, ob eine Endbedingung erfüllt ist, beispielsweise, dass das Netzwerk konvergiert, eine maximale Anzahl von Trainingsdurchläufen erreicht ist oder alle Trainingsdaten verarbeitet wurden, neben anderen Optionen. Falls nicht, kann der Prozess mit dem nächsten 2D-Trainingsbild fortgesetzt werden. Wenn ein Endkriterium erfüllt ist, können die optimierten Parameter des Netzwerks zur Verwendung bei der Inferenzierung bereitgestellt werden (520). Zumindest ein Teil der gerenderten Ausgabe des inversen Grafiknetzwerks kann auch als Trainingsdaten für das weitere Training oder die Feinabstimmung des Generator-Netzwerks bereitgestellt werden (524). In einigen Ausführungsbeispielen können das Generator-Netzwerk und das inverse Grafiknetzwerk zusammen trainiert werden, indem eine gemeinsame Verlustfunktion verwendet wird.
  • Als Beispiel zeigt 6 eine Netzwerkkonfiguration 600, die verwendet werden kann, um Inhalte bereitzustellen oder zu verbessern. In mindestens einem Ausführungsbeispiel kann ein Client-Gerät 602 Inhalte für eine Sitzung generieren, indem es Komponenten einer Inhaltsanwendung 604 auf dem Client-Gerät 602 und lokal auf diesem Client-Gerät gespeicherte Daten verwendet. In mindestens einem Ausführungsbeispiel kann eine Inhaltsanwendung 624 (z.B. eine Bilderzeugungs- oder -bearbeitungsanwendung), die auf einem Inhaltsserver 620 (z.B, ein Cloud-Server oder Edge-Server) ausgeführt wird, eine zumindest mit dem Client-Gerät 602 assoziierte Sitzung initiieren, wobei ein Sitzungsverwalter und in einer Benutzerdatenbank 634 gespeicherte Benutzerdaten verwendet werden können, und kann veranlassen, dass der Inhalt 632 von einem Inhaltsverwalter 626 bestimmt und unter Verwendung einer Rendering-Engine gerendert wird, falls dies für diese Art von Inhalt oder Plattform erforderlich ist, und an das Client-Gerät 602 unter Verwendung eines geeigneten Übertragungsverwalter 622 übertragen wird, um per Download, Streaming oder über einen anderen derartigen Übertragungskanal zu senden. In mindestens einem Ausführungsbeispiel kann dieser Inhalt 632 2D- oder 3D-Assets enthalten, die von einer Rendering-Engine verwendet werden können, um eine Szene basierend auf einem bestimmten Szenengraph zu rendern. In mindestens einem Ausführungsbeispiel kann das Client-Gerät 602, das diese Inhalte empfängt, diese Inhalte einer entsprechenden Inhaltsanwendung 604 bereitstellen, die auch oder alternativ eine Rendering-Engine (falls erforderlich) zum Rendern zumindest einiger dieser Inhalte für die Präsentation über das Client-Gerät 602 enthalten kann, beispielsweise Bild- oder Videoinhalte über ein Display 606 und Audioinhalte, wie Geräusche und Musik, über mindestens ein Audio-Wiedergabegerät 608, wie Lautsprecher oder Kopfhörer. Für Live-Videoinhalte, die beispielsweise von einer oder mehreren Kameras aufgenommen wurden, ist eine solche Rendering-Engine möglicherweise nicht erforderlich, es sei denn, sie wird verwendet, um diese Videoinhalte in irgendeiner Weise zu erweitern. In mindestens einem Ausführungsbeispiel kann zumindest ein Teil dieses Inhalts bereits auf dem Client-Gerät 602 gespeichert, gerendert oder für dieses zugänglich sein, sodass 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. In mindestens einem Ausführungsbeispiel kann ein Übertragungsmechanismus wie beispielsweise Datenstreaming verwendet werden, um diese Inhalte vom Server 620 oder der Inhaltsdatenbank 634 zum Client-Gerät 602 zu übertragen. In mindestens einem Ausführungsbeispiel kann zumindest ein Teil dieses Inhalts von einer anderen Quelle bezogen oder gestreamt werden, beispielsweise von einem Drittanbieter-Inhaltsdienst 660, der auch eine Inhaltsanwendung 662 zum Generieren oder Bereitstellen von Inhalten enthalten kann. In mindestens einem Ausführungsbeispiel können Teile dieser Funktionalität unter Verwendung mehrerer Rechengeräte oder mehrerer Prozessoren in einem oder mehreren Rechengeräten ausgeführt werden, die beispielsweise eine Kombination aus CPUs und GPUs umfassen können.
  • In mindestens einem Ausführungsbeispiel umfasst die Inhaltsanwendung 624 einen Verwalter 626, der Inhalte bestimmen oder analysieren kann, bevor diese Inhalte an das Gerät 602 übertragen werden. In mindestens einem Ausführungsbeispiel kann der Verwalter 626 auch andere Komponenten enthalten oder mit diesen zusammenarbeiten, die in der Lage sind, die bereitzustellenden Inhalte zu generieren, zu modifizieren oder zu verbessern. In mindestens einem Ausführungsbeispiel kann dies eine Rendering-Engine zum Rendern von Bild- oder Videoinhalten umfassen. Diese Rendering-Engine kann zumindest in einem Ausführungsbeispiel Teil eines inversen Grafiknetzwerks sein. In mindestens einem Ausführungsbeispiel kann eine Bild-, Video- oder Szenengenerierungskomponente 628 verwendet werden, um Bild-, Video- oder andere Medieninhalte zu generieren. In mindestens einem Ausführungsbeispiel kann eine inverse Grafikkomponente 630, die auch ein neuronales Netzwerk umfassen kann, Repräsentationen basierend auf inferenzierten 3D-Informationen generieren, wie hierin diskutiert und vorgeschlagen. In mindestens einem Ausführungsbeispiel kann der Verwalter 626 veranlassen, dass dieser Inhalt (verbessert oder nicht) an das Client-Gerät 602 übertragen wird. In mindestens einem Ausführungsbeispiel kann eine Inhaltsanwendung 604 auf dem Client-Gerät 602 auch Komponenten wie eine Rendering-Engine, einen Bild- oder Videogenerator 612 und ein inverses Grafikmodul 614 enthalten, so dass jede oder alle diese Funktionen zusätzlich oder alternativ auf dem Client-Gerät 602 ausgeführt werden können. In mindestens einem Ausführungsbeispiel kann eine Inhaltsanwendung 662 auf einem Inhaltsdienstsystem 660 eines Drittanbieters ebenfalls eine solche Funktionalität enthalten. In mindestens einem Ausführungsbeispiel können die Orte, an denen zumindest ein Teil dieser Funktionalität ausgeführt wird, konfigurierbar sein oder von Faktoren wie beispielsweise dem Typ des Client-Geräts 602 oder der Verfügbarkeit einer Netzwerkverbindung mit geeigneter Bandbreite abhängen. In mindestens einem Ausführungsbeispiel kann ein System zur Generierung von Inhalten jede geeignete Kombination von Hardware und Software an einem oder mehreren Orten umfassen. In mindestens einem Ausführungsbeispiel können generierte Bild- oder Videoinhalte mit einer oder mehreren Auflösungen auch für andere Client-Geräte 650 bereitgestellt oder verfügbar gemacht werden, beispielsweise zum Herunterladen oder Streaming von einer Medienquelle, die eine Kopie dieser Bild- oder Videoinhalte speichert. In mindestens einem Ausführungsbeispiel kann dies die Übertragung von Bildern von Spielinhalten für ein Multiplayer-Spiel umfassen, wobei verschiedene Client-Geräte diese Inhalte mit unterschiedlichen Auflösungen, einschließlich einer oder mehrerer Superauflösungen, anzeigen können.
  • In diesem Beispiel können diese Client-Geräte alle geeigneten Rechengeräte umfassen, wie z. B. einen Desktop-Computer, ein Notebook, eine Set-Top-Box, ein Streaming-Gerät, eine Spielkonsole, ein Smartphone, einen Tablet-Computer, ein VR-Headset, eine AR-Brille, einen tragbaren Computer oder ein Smart-TV. Jedes Client-Gerät kann eine Anfrage über mindestens ein kabelgebundenes oder drahtloses Netzwerk senden, beispielsweise über das Internet, ein Ethernet, ein lokales Netzwerk (LAN) oder ein Mobilfunknetz, neben anderen Optionen. In diesem Beispiel können diese Anfragen an eine Adresse übermittelt werden, die mit einem Cloud-Anbieter assoziiert ist, der eine oder mehrere elektronische Ressourcen in einer Cloud-Anbieter-Umgebung betreiben oder kontrollieren kann, beispielsweise ein Rechenzentrum oder eine Serverfarm. In mindestens einem Ausführungsbeispiel kann die Anfrage von mindestens einem Edge-Server empfangen oder verarbeitet werden, der sich an einem Netzwerkrand befindet und außerhalb mindestens einer mit der Cloud-Anbieterumgebung assoziierten Sicherheitsschicht liegt. Auf diese Weise kann die Latenzzeit verringert werden, indem die Client-Geräte 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 Cloud-Anbieterumgebung verbessert wird.
  • In mindestens einem Ausführungsbeispiel kann ein solches System für die Durchführung grafischer Rendering-Operationen verwendet werden. In anderen Ausführungsbeispielen kann ein solches System für andere Zwecke verwendet werden, beispielsweise zum Bereitstellen von Bild- oder Videoinhalten, um autonome Maschinenanwendungen zu testen oder zu validieren, oder zur Durchführung von Deep-Learning-Operationen. In mindestens einem Ausführungsbeispiel kann ein solches System unter Verwendung eines Edge-Geräts implementiert werden oder eine oder mehrere virtuelle Maschinen (VMs) umfassen. In mindestens einem Ausführungsbeispiel kann ein solches System zumindest teilweise in einem Rechenzentrum oder zumindest teilweise unter Verwendung von Cloud-Computing-Ressourcen implementiert werden.
  • Inferenz- und Trainingslogik
  • 7A zeigt eine Inferenz- und/oder Trainingslogik 715, die verwendet wird, um Inferenzierungs- und/oder Trainingsoperationen durchzuführen, die mit einer oder mehreren Ausführungsbeispielen assoziiert sind. Details zur Inferenz- und/oder Trainingslogik 715 werden unten in Verbindung mit 7A und/oder 7B bereitgestellt.
  • In mindestens einem Ausführungsbeispiel kann die Inferenz- und/oder Trainingslogik 715 ohne Einschränkung einen Code- und/oder Datenspeicher 701 umfassen, um Vorwärts- und/oder Ausgabegewichte und/oder Eingabe-/Ausgabedaten und/oder andere Parameter zu speichern, um Neuronen oder Schichten eines neuronalen Netzwerks zu konfigurieren, das für die Inferenzierung in Aspekten einer oder mehrerer Ausführungsbeispiele trainiert und/oder verwendet wird. In mindestens einem Ausführungsbeispiel kann die Trainingslogik 715 einen Code- und/oder Datenspeicher 701 enthalten 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 sollen, um eine Logik zu konfigurieren, einschließlich Ganzzahl- und/oder Gleitkommaeinheiten (zusammenfassend als arithmetische Logikeinheiten (ALUs) bezeichnet). In mindestens einem Ausführungsbeispiel lädt ein Code, beispielsweise ein Graphencode, basierend auf einer Architektur eines neuronalen Netzwerks, dem der Code entspricht, Gewichts- oder andere Parameterinformationen in Prozessor-ALUs. In mindestens einem Ausführungsbeispiel speichert der Code und/oder der Datenspeicher 701 Gewichtsparameter und/oder Eingabe-/Ausgabedaten jeder Schicht eines neuronalen Netzwerks, das während der Vorwärtspropagation von Eingabe-/Ausgabedaten und/oder Gewichtsparametern während des Trainings und/oder der Inferenz unter Verwendung von Aspekten eines oder mehrerer Ausführungsbeispiele trainiert oder in Verbindung mit einem oder mehreren Ausführungsbeispielen verwendet wird. In mindestens einem Ausführungsbeispiel kann jeder Teil des Code- und/oder Datenspeichers 701 in anderen On-Chip- oder Off-Chip-Datenspeichem enthalten sein, einschließlich des L1-, L2- oder L3-Cache oder Systemspeichers eines Prozessors.
  • In mindestens einem Ausführungsbeispiel kann jeder Teil des Codes und/oder des Datenspeichers 701 intern oder extern zu einem oder mehreren Prozessoren oder anderen Hardware-Logikgeräten oder -Schaltungen sein. In mindestens einem Ausführungsbeispiel kann der Code und/oder der Code- und/oder Datenspeicher 701 ein Cache-Speicher, ein dynamischer zufällig adressierbarer Speicher („DRAM“), ein statischer zufällig adressierbarer Speicher („SRAM“), ein nichtflüchtiger Speicher (z.B. ein Flash-Speicher) oder ein anderer Speicher sein. In mindestens einem Ausführungsbeispiel kann die Wahl, ob der Code- und/oder Code- und/oder Datenspeicher 701 beispielsweise intern oder extern zu einem Prozessor ist oder DRAM, SRAM, Flash oder einen anderen Speichertyp umfasst, von dem verfügbaren Speicher auf dem Chip gegenüber dem außerhalb des Chips, den Latenzanforderungen der ausgeführten Trainings- und/oder Inferenzfunktionen, der Stapelgröße der beim Inferieren und/oder Trainieren eines neuronalen Netzwerks verwendeten Daten oder einer Kombination dieser Faktoren abhängen.
  • In mindestens einem Ausführungsbeispiel kann die Inferenz- und/oder Trainingslogik 715 ohne Einschränkung einen Code- und/oder Datenspeicher 705 umfassen, um Rückwärts- und/oder Ausgabegewichts- und/oder Eingabe-/Ausgabedaten zu speichern, die Neuronen oder Schichten eines neuronalen Netzwerks entsprechen, das in Aspekten einer oder mehrerer Ausführungsbeispiele trainiert und/oder zum Inferenzieren verwendet wird. In mindestens einem Ausführungsbeispiel speichert der Code- und/oder Datenspeicher 705 Gewichtsparameter und/oder Eingabe-/Ausgabedaten jeder Schicht eines neuronalen Netzwerks, das während der Rückwärtspropagation von Eingabe-/Ausgabedaten und/oder Gewichtsparametern während des Trainings und/oder der Inferenzierung unter Verwendung von Aspekten einer oder mehrerer Ausführungsbeispiele trainiert oder in Verbindung mit einer oder mehrerer Ausführungsbeispiele verwendet wird. In mindestens einem Ausführungsbeispiel kann die Trainingslogik 715 einen Code- und/oder Datenspeicher 705 enthalten 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 zu konfigurieren, einschließlich Ganzzahl- und/oder Gleitkommaeinheiten (zusammenfassend als arithmetische Logikeinheiten (ALUs) bezeichnet). In mindestens einem Ausführungsbeispiel lädt ein Code, beispielsweise ein Graphencode, basierend auf einer Architektur eines neuronalen Netzwerks, dem der Code entspricht, Gewichts- oder andere Parameterinformationen in Prozessor-ALUs. In mindestens einem Ausführungsbeispiel kann ein beliebiger Teil des Code- und/oder Datenspeichers 705 in einen anderen On-Chip- oder Off-Chip-Datenspeicher, einschließlich des L1-, L2- oder L3-Cache oder Systemspeichers eines Prozessors, integriert werden. In mindestens einem Ausführungsbeispiel kann jeder Teil des Codes und/oder des Datenspeichers 705 intern oder extern zu einem oder mehreren Prozessoren oder anderen Hardware-Logikgeräten oder -Schaltungen sein. In mindestens einem Ausführungsbeispiel kann der Code- und/oder Datenspeicher 705 ein Cache-Speicher, DRAM, SRAM, nichtflüchtiger Speicher (z.B. Flash-Speicher) oder ein anderer Speicher sein. In mindestens einem Ausführungsbeispiel kann die Wahl, ob der Code- und/oder Datenspeicher 705 beispielsweise intern oder extern zu einem Prozessor ist oder DRAM, SRAM, Flash oder einen anderen Speichertyp umfasst, von dem verfügbaren Speicher auf dem Chip gegenüber dem außerhalb des Chips, den Latenzanforderungen der ausgeführten Trainings- und/oder Inferenzfunktionen, der Stapelgröße der beim Inferieren und/oder Trainieren eines neuronalen Netzwerks verwendeten Daten oder einer Kombination dieser Faktoren abhängen.
  • In mindestens einem Ausführungsbeispiel können der Code- und/oder Datenspeicher 701 und der Code- und/oder Datenspeicher 705 separate Speicherstrukturen sein. In mindestens einem Ausführungsbeispiel können der Code- und/oder Datenspeicher 701 und der Code- und/oder Datenspeicher 705 dieselbe Speicherstruktur sein. In mindestens einem Ausführungsbeispiel können der Code- und/oder Datenspeicher 701 und der Code- und/oder Datenspeicher 705 teilweise dieselbe Speicherstruktur und teilweise separate Speicherstrukturen sein. In mindestens einem Ausführungsbeispiel kann jeder Teil des Code- und/oder Datenspeichers 701 und des Code- und/oder Datenspeichers 705 in einen anderen On-Chip- oder Off-Chip-Datenspeicher, einschließlich des L1-, L2- oder L3-Caches eines Prozessors oder des Systemspeichers, einbezogen werden.
  • In mindestens einem Ausführungsbeispiel kann die Inferenz- und/oder Trainingslogik 715 ohne Einschränkung eine oder mehrere arithmetische Logikeinheit(en) („ALU(s)“) 710 enthalten, 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. Ausgaben von Schichten oder Neuronen innerhalb eines neuronalen Netzwerks) erzeugen kann, die Funktionen von Eingabe-/Ausgabe- und/oder Gewichtsparameterdaten sind, die in Code- und/oder Datenspeicher 701 und/oder Code- und/oder Datenspeicher 705 gespeichert sind. Gemäß zumindest einem Ausführungsbeispiel werden in einem Aktivierungsspeicher 720 gespeicherte Aktivierungen gemäß linearer algebraischer und/oder matrixbasierter Mathematik generiert, die von ALU(s) 710 als Reaktion auf Ausführungsbefehle oder anderen Code ausgeführt wird, wobei in Code- und/oder Datenspeicher 705 und/oder Code- und/oder Datenspeicher 701 gespeicherte Gewichtswerte als Operanden zusammen mit anderen Werten, wie beispielsweise Bias-Werten, Gradienteninformationen, Impulswerten oder anderen Parametern oder Hyperparametern, verwendet werden, von denen beliebige oder alle in Code- und/oder Datenspeicher 705 oder Code- und/oder Datenspeicher 701 oder einem anderen Speicher auf oder außerhalb des Chips gespeichert sein können.
  • In mindestens einem Ausführungsbeispiel sind ALU(s) 710 in einem oder mehreren Prozessoren oder anderen logischen Hardware-Geräten oder -Schaltungen enthalten, während in einem anderen Ausführungsbeispiel ALU(s) 710 extern zu einem Prozessor oder einem anderen logischen Hardware-Gerät oder einer Schaltung sein können, die sie verwenden (z.B. ein Co-Prozessor). In mindestens einem Ausführungsbeispiel können die ALUs 710 in den Ausführungseinheiten eines Prozessors oder in einer Bank von ALUs enthalten sein, auf die die Ausführungseinheiten eines Prozessors entweder innerhalb desselben Prozessors oder verteilt auf verschiedene Prozessoren unterschiedlichen Typs (z.B. Zentraleinheiten, Grafikverarbeitungseinheiten, feste Funktionseinheiten usw.) zugreifen können. In mindestens einem Ausführungsbeispiel können sich der Code- und/oder Datenspeicher 701, der Code- und/oder Datenspeicher 705 und der Aktivierungsspeicher 720 auf demselben Prozessor oder einem anderen logischen Hardware-Gerät oder -Schaltkreis befinden, während sie sich in einem anderen Ausführungsbeispiel in verschiedenen Prozessoren oder anderen logischen Hardware-Geräten oder -Schaltkreisen oder in einer Kombination aus gleichen und verschiedenen Prozessoren oder anderen logischen Hardware-Geräten oder -Schaltkreisen befinden können. In mindestens einem Ausführungsbeispiel kann ein beliebiger Teil des Aktivierungsspeichers 720 in einen anderen On-Chip- oder Off-Chip-Datenspeicher, einschließlich des L1-, L2- oder L3-Cache oder Systemspeichers eines Prozessors, integriert werden. Darüber hinaus kann der Inferenz- und/oder Trainingscode zusammen mit anderem Code gespeichert werden, auf den ein Prozessor oder eine andere Hardwarelogik oder -schaltung zugreifen kann, und unter Verwendung der Abruf-, Dekodier-, Planungs-, Ausführungs-, Ausscheidungs- und/oder anderer logischer Schaltungen eines Prozessors abgerufen und/oder verarbeitet werden.
  • In mindestens einem Ausführungsbeispiel kann der Aktivierungsspeicher 720 ein Cache-Speicher, ein DRAM, ein SRAM, ein nichtflüchtiger Speicher (z.B. ein Flash-Speicher) oder ein anderer Speicher sein. In mindestens einem Ausführungsbeispiel kann sich der Aktivierungsspeicher 720 vollständig oder partiell innerhalb oder außerhalb eines oder mehrerer Prozessoren oder anderer logischer Schaltungen befinden. In mindestens einem Ausführungsbeispiel kann die Entscheidung, ob der Aktivierungsspeicher 720 beispielsweise innerhalb oder außerhalb eines Prozessors liegt oder DRAM, SRAM, Flash oder einen anderen Speichertyp umfasst, von dem verfügbaren Speicher auf dem Chip oder außerhalb des Chips, den Latenzanforderungen der durchgeführten Trainings- und/oder Inferenzfunktionen, der Stapelgröße der bei der Inferenz und/oder dem Training eines neuronalen Netzwerks verwendeten Daten oder einer Kombination dieser Faktoren abhängen. In mindestens einem Ausführungsbeispiel kann die in 7a gezeigte Inferenz- und/oder Trainingslogik 715 in Verbindung mit einem anwendungsspezifischen integrierten Schaltkreis („ASIC“) verwendet werden, beispielsweise der Tensorflow® Processing Unit von Google, einer Inferenzverarbeitungseinheit (IPU) von Graphcore™ oder einem Nervana®-Prozessor (z.B. „Lake Crest“) von Intel Corp. In mindestens einem Ausführungsbeispiel kann die in 7a gezeigte Inferenz- und/oder Trainingslogik 715 in Verbindung mit Hardware der Zentraleinheit („CPU“), der Grafikverarbeitungseinheit („GPU“) oder anderer Hardware, beispielsweise mit feldprogrammierbaren Gate-Arrays („FPGAs“), verwendet werden.
  • 7b zeigt die Inferenz- und/oder Trainingslogik 715, gemäß zumindest einem oder mehreren Ausführungsbeispielen. In mindestens einem Ausführungsbeispiel kann die Inferenz- und/oder Trainingslogik 715 ohne Einschränkung eine Hardware-Logik umfassen, in der Rechenressourcen dediziert oder anderweitig ausschließlich in Verbindung mit Gewichtswerten oder anderen Informationen verwendet werden, die einer oder mehreren Schichten von Neuronen innerhalb eines neuronalen Netzwerks entsprechen. In mindestens einem Ausführungsbeispiel kann die in 7b gezeigte Inferenz- und/oder Trainingslogik 715 in Verbindung mit einem anwendungsspezifischen integrierten Schaltkreis (ASIC) verwendet werden, beispielsweise der Tensorflow® Processing Unit von Google, einer Inferenzverarbeitungseinheit (IPU) von Graphcore™ oder einem Nervana®-Prozessor (z.B. „Lake Crest“) von Intel Corp. In mindestens einem Ausführungsbeispiel kann die in 7b gezeigte Inferenz- und/oder Trainingslogik 715 in Verbindung mit Hardware der Zentraleinheit (CPU), der Grafikverarbeitungseinheit (GPU) oder anderer Hardware, beispielsweise feldprogrammierbaren Gate-Arrays (FPGAs), verwendet werden. In mindestens einem Ausführungsbeispiel umfasst die Inferenz- und/oder Trainingslogik 715 ohne Einschränkung einen Code- und/oder Datenspeicher 701 und einen Code- und/oder Datenspeicher 705, die zum Speichern von Code (z.B. Graphencode), Gewichtswerten und/oder anderen Informationen, einschließlich Bias-Werten, Gradienteninformationen, Impulswerten und/oder anderen Parameter- oder Hyperparameterinformationen, verwendet werden können. In mindestens einem Ausführungsbeispiel, das in 7b gezeigt wird, ist jeder der Code- und/oder Datenspeicher 701 und der Code- und/oder Datenspeicher 705 mit einer dedizierten Rechnerressource assoziiert, beispielsweise mit der Rechnerhardware 702 bzw. der Rechnerhardware 706. In mindestens einem Ausführungsbeispiel umfasst jede der Rechenhardware 702 und der Rechenhardware 706 eine oder mehrere ALUs, die mathematische Funktionen, beispielsweise lineare algebraische Funktionen, nur auf Informationen ausführen, die im Code- und/oder Datenspeicher 701 bzw. im Code- und/oder Datenspeicher 705 gespeichert sind, deren Ergebnis im Aktivierungsspeicher 720 gespeichert wird.
  • In mindestens einem Ausführungsbeispiel entspricht jeder der Code- und/oder Datenspeicher 701 und 705 und die entsprechende Rechenhardware 702 bzw. 706 verschiedenen Schichten eines neuronalen Netzwerks, sodass die resultierende Aktivierung von einem „Speicher-/Rechnerpaar 701/702“ aus Code- und/oder Datenspeicher 701 und Rechenhardware 702 als Eingabe für das „Speicher-/Rechnerpaar 705/706“ aus Code- und/oder Datenspeicher 705 und Rechenhardware 706 bereitgestellt wird, um die konzeptionelle Organisation eines neuronalen Netzwerks zu spiegeln. In mindestens einem Ausführungsbeispiel kann jedes der Speicher-/Rechnerpaare 701/702 und 705/706 mehr als einer Schicht des neuronalen Netzwerks entsprechen. In mindestens einem Ausführungsbeispiel können zusätzliche Speicher-/Rechenpaare (nicht dargestellt) im Anschluss an oder parallel zu den Speicher-Rechenpaaren 701/702 und 705/706 in die Inferenz- und/oder Trainingslogik 715 einbezogen werden.
  • Rechenzentrum
  • 8 zeigt ein beispielhaftes Rechenzentrum 800, in dem zumindest ein Ausführungsbeispiel verwendet werden kann. In mindestens einem Ausführungsbeispiel umfasst das Rechenzentrum 800 eine Rechenzentrumsinfrastrukturschicht 810, eine Framework-Schicht 820, eine Softwareschicht 830 und eine Applikationsschicht 840.
  • In mindestens einem Ausführungsbeispiel, wie in 8 gezeigt, kann die Rechenzentrum-Infrastrukturschicht 810 einen Ressourcen-Orchestrator 812, gruppierte Rechnerressourcen 814 und Knoten-Rechnerressourcen („node C.R.s“) 816(1)-816(N) umfassen, wobei „N“ eine beliebige ganze, positive Zahl repräsentiert. In mindestens einem Ausführungsbeispiel können die Knoten C.R.s 816(1)-816(N) eine beliebige Anzahl von Zentraleinheiten („CPUs“) oder anderen Prozessoren (einschließlich Beschleunigern, Field Programmable Gate Arrays (FPGAs), Grafikprozessoren usw.), Speichergeräten (z.B., dynamischer Festwertspeicher), Speichergeräte (z.B. Solid-State- oder Festplattenlaufwerke), Netzwerk-Eingabe/Ausgabe-Geräte („NW I/O“), Netzwerk-Switches, virtuelle Maschinen („VMs“), Stromversorgungsmodule und Kühlmodule usw. In mindestens einem Ausführungsbeispiel können ein oder mehrere Knoten-C.R.s unter den Knoten-C.R.s 816(1)-816(N) ein Server sein, der über eine oder mehrere der oben genannten Rechenressourcen verfügt.
  • In mindestens einem Ausführungsbeispiel können die gruppierten Rechnerressourcen 814 separate Gruppierungen von Knoten-C.R.s umfassen, die in einem oder mehreren Racks (nicht gezeigt) untergebracht sind, oder viele Racks, die in Rechenzentren an verschiedenen geografischen Orten untergebracht sind (ebenfalls nicht gezeigt). Separate Gruppierungen von Knoten-C.R.s innerhalb der gruppierten Rechnerressourcen 814 können gruppierte Rechen-, Netzwerk-, Speicher- oder Storage-Ressourcen umfassen, die zur Unterstützung einer oder mehrerer Arbeitslasten konfiguriert oder zugewiesen werden können. In mindestens einem Ausführungsbeispiel können mehrere Knoten-C.R.s einschließlich CPUs oder Prozessoren in einem oder mehreren Racks gruppiert werden, um Rechenressourcen zur Unterstützung einer oder mehrerer Arbeitslasten bereitzustellen. In mindestens einem Ausführungsbeispiel können ein oder mehrere Racks auch eine beliebige Anzahl von Stromversorgungsmodulen, Kühlmodulen und Netzwerk-Switches in beliebiger Kombination enthalten.
  • In mindestens einem Ausführungsbeispiel 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. In mindestens einem Ausführungsbeispiel kann der Ressourcen-Orchestrator 812 eine Verwaltung für die Software-Design-Infrastruktur („SDI“) des Rechenzentrums 800 umfassen. In mindestens einem Ausführungsbeispiel kann der Ressourcen-Orchestrator Hardware, Software oder eine Kombination davon umfassen.
  • In mindestens einem Ausführungsbeispiel, wie in 8 gezeigt, umfasst die Framework-Schicht 820 einen Planer für Aufgaben 822, einen Konfigurationsverwalter 824, einen Verwalter für Ressourcen 826 und ein verteiltes Dateisystem 828. In mindestens einem Ausführungsbeispiel kann die Framework-Schicht 820 ein Framework zur Unterstützung der Software 832 der Software-Schicht 830 und/oder einer oder mehrerer Anwendung(en) 842 der Applikationsschicht 840 enthalten. In mindestens einem Ausführungsbeispiel können die Software 832 oder die Anwendung(en) 842 jeweils webbasierte Dienstsoftware oder Anwendungen umfassen, wie sie beispielsweise von Amazon Web Services, Google Cloud und Microsoft Azure bereitgestellt werden. In mindestens einem Ausführungsbeispiel kann es sich bei der Applikationsschicht 820 um eine Art kostenloses und quelloffenes Software-Webanwendungs-Framework wie Apache SparkTM (im Folgenden „Spark“) 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. In mindestens einem Ausführungsbeispiel kann der Planer für Aufgaben 822 einen Spark-Treiber enthalten, um die Planung von Arbeitslasten zu erleichtern, die von verschiedenen Schichten des Rechenzentrums 800 unterstützt werden. In mindestens einem Ausführungsbeispiel kann der Verwalter 824 in der Lage sein, verschiedene Schichten zu konfigurieren, beispielsweise die Softwareschicht 830 und die Framework-Schicht 820 einschließlich Spark und das verteilte Dateisystem 828 zur Unterstützung der Verarbeitung großer Datenmengen. In mindestens einem Ausführungsbeispiel kann der Ressourcenverwalter 826 in der Lage sein, geclusterte oder gruppierte Rechnerressourcen zu verwalten, die zur Unterstützung des verteilten Dateisystems 828 und des Planers für Aufgaben 822 zugeordnet sind. In mindestens einem Ausführungsbeispiel können geclusterte oder gruppierte Rechnerressourcen gruppierte Rechnerressourcen 814 in der Rechenzentrum-Infrastrukturschicht 810 umfassen. In mindestens einem Ausführungsbeispiel kann der Verwalter 826 mit dem Ressourcen-Orchestrator 812 koordiniert werden, um diese zugeordneten oder zugewiesenen Rechenressourcen zu verwalten.
  • In mindestens einem Ausführungsbeispiel kann die in der Softwareschicht 830 enthaltene Software 832 Software enthalten, die zumindest von Teilen der Knotenrechner 816(1)-816(N), der gruppierten Rechenressourcen 814 und/oder des verteilten Dateisystems 828 der Framework-Schicht 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 umfassen.
  • In zumindest einem Ausführungsbeispiel kann(n) die in der Applikationsschicht 840 enthaltene(n) Anwendung(en) 842 eine oder mehrere Arten von Anwendungen umfassen, die von zumindest Teilen der Knoten C.R.s 816(1)-816(N), gruppierten Rechnerressourcen 814 und/oder dem verteilten Dateisystem 828 der Framework-Schicht 820 verwendet werden. Eine oder mehrere Arten von Anwendungen können eine beliebige Anzahl einer Genomanwendung, eines kognitiven Rechners und einer maschinellen Lemanwendung, einschließlich einer Trainings- oder Inferenzsoftware, einer maschinellen Lern-Framework-Software (z.B. PyTorch, TensorFlow, Caffe, etc.) oder anderer maschineller Lernanwendungen, die in Verbindung mit einem oder mehreren Ausführungsbeispielen verwendet werden, umfassen, sind aber nicht darauf beschränkt.
  • In mindestens einem Ausführungsbeispiel kann ein beliebiger Konfigurationsverwalter 824, Ressourcenverwalter 826 und Ressourcenorchestrator 812 eine beliebige Anzahl und Art von selbstmodifizierenden Aktionen implementieren, basierend auf einer beliebigen Menge und Art von Daten, die auf jede technisch machbare Weise erfasst wurden. In mindestens einem Ausführungsbeispiel können selbstmodifizierende Aktionen einen Rechenzentrumsbetreiber des Rechenzentrums 800 davon entlasten, möglicherweise schlechte Konfigurationsentscheidungen zu treffen und möglicherweise nicht ausgelastete und/oder schlecht funktionierende Teile eines Rechenzentrums zu vermeiden.
  • In mindestens einem Ausführungsbeispiel kann das Rechenzentrum 800 Werkzeuge, Dienste, Software oder andere Ressourcen enthalten, um ein oder mehrere maschinelle Lernmodelle zu trainieren oder Informationen unter Verwendung eines oder mehrerer maschineller Lernmodelle gemäß einem oder mehreren hierin beschriebenen Ausführungsbeispielen vorherzusagen oder zu inferenzieren. Beispielsweise kann in mindestens einem Ausführungsbeispiel ein maschinelles Lernmodell trainiert werden, indem Gewichtsparameter gemäß einer Architektur eines neuronalen Netzwerks unter Verwendung von Software und Rechenressourcen berechnet werden, die oben in Bezug auf das Rechenzentrum 800 beschrieben wurden. In mindestens einem Ausführungsbeispiel können trainierte maschinelle Lernmodelle, die einem oder mehreren neuronalen Netzwerken entsprechen, verwendet werden, um Informationen zu inferenzieren oder vorherzusagen, wobei Ressourcen verwendet werden, die oben in Bezug auf das Rechenzentrum 800 beschrieben sind, indem Gewichtsparameter verwendet werden, die durch eine oder mehrere hierin beschriebene Trainingstechniken berechnet werden.
  • In mindestens einem Ausführungsbeispiel kann das Rechenzentrum CPUs, anwendungsspezifische integrierte Schaltungen (ASICs), GPUs, FPGAs oder andere Hardware verwenden, um das Training und/oder die Inferenzierung 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 konfiguriert werden, um es Benutzern zu ermöglichen, Informationen zu trainieren oder zu inferieren, beispielsweise für Bilderkennung, Spracherkennung oder andere Dienste der künstlichen Intelligenz.
  • Die Inferenz- und/oder Trainingslogik 715 wird verwendet, um Inferenzierungs- und/oder Trainingsoperationen durchzuführen, die mit einem oder mehreren Ausführungsbeispielen assoziiert sind. Details zur Inferenz- und/oder Trainingslogik 715 werden im Folgenden in Verbindung mit den 7A und/oder 7B beschrieben. In mindestens einem Ausführungsbeispiel kann die Inferenz- und/oder Trainingslogik 715 im System 8 für Inferenz- oder Vorhersageoperationen verwendet werden, die zumindest teilweise auf Gewichtsparametern basieren, die unter Verwendung von Trainingsoperationen für neuronale Netzwerke, Funktionen und/oder Architekturen neuronaler Netzwerke oder hierin beschriebenen Anwendungsfällen neuronaler Netzwerke berechnet werden.
  • Derartige Komponenten können verwendet werden, um ein inverses Grafiknetzwerk zu trainieren, indem ein Satz von Bildern verwendet wird, der von einem Generator-Netzwerk generiert wird, wobei Aspekte von Objekten fixiert bleiben, während Pose- oder Ansichtsinformationen zwischen Bildern des Satzes variiert werden.
  • Rechensysteme
  • 9 zeigt ein Blockdiagramm eines beispielhaften Rechnersystems, bei dem es sich um ein System mit miteinander verbundenen Geräten und Komponenten, ein System-on-a-Chip (SOC) oder eine Kombination davon 900 handeln kann, das gemäß zumindest einem Ausführungsbeispiel mit einem Prozessor gebildet wird, der Ausführungseinheiten zur Ausführung eines Befehls enthalten kann. In mindestens einer Ausführungsform kann das Rechnersystem 900 ohne Einschränkung eine Komponente, beispielsweise einen Prozessor 902, enthalten, um Ausführungseinheiten einschließlich Logik zur Durchführung von Algorithmen zur Verarbeitung von Daten gemäß der vorliegenden Offenbarung, wie beispielsweise in einem hierin beschriebenen Ausführungsbeispiel, zu verwenden. In mindestens einem Ausführungsbeispiel kann das Rechnersystem 900 Prozessoren verwenden, beispielsweise 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. In mindestens einem Ausführungsbeispiel kann das Rechnersystem 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ührungsbeispiele können in anderen Geräten verwendet werden, beispielsweise in Handheld-Geräten und eingebetteten Anwendungen. Einige Beispiele für tragbare Geräte sind Mobiltelefone, Internet-Protokoll-Geräte, Digitalkameras, persönliche digitale Assistenten („PDAs“) und Handheld-PCs. In mindestens einem Ausführungsbeispiel können eingebettete Anwendungen einen Mikrocontroller, einen digitalen Signalprozessor („DSP“), ein System auf einem Chip, Netzwerkrechner („NetPCs“), Set-Top-Boxen, Netzwerk-Hubs, Wide-Area-Network-Switches („WAN“) oder jedes andere System umfassen, das gemäß mindestens einem Ausführungsbeispiel eine oder mehrere Anweisungen ausführen kann.
  • In mindestens einem Ausführungsbeispiel kann das Rechnersystem 900 ohne Einschränkung einen Prozessor 902 enthalten, der ohne Einschränkung eine oder mehrere Ausführungseinheiten 908 enthalten kann, um ein maschinelles Lernmodell gemäß den hierin beschriebenen Techniken zu trainieren und/oder zu inferieren. In mindestens einem Ausführungsbeispiel ist das Rechnersystem 900 ein Einzelprozessor-Desktop- oder Serversystem, aber in einem anderen Ausführungsbeispiel kann das Rechnersystem 900 ein Multiprozessorsystem sein. In mindestens einem Ausführungsbeispiel 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 jedes andere Gerät, wie beispielsweise einen digitalen Signalprozessor, umfassen. In mindestens einem Ausführungsbeispiel kann der Prozessor 902 mit einem Prozessorbus 910 gekoppelt sein, der Datensignale zwischen dem Prozessor 902 und anderen Komponenten im Rechnersystem 900 übertragen kann.
  • In mindestens einem Ausführungsbeispiel kann der Prozessor 902 ohne Einschränkung einen internen Level 1 („L1“) Cache-Speicher („Cache“) 904 enthalten. In mindestens einem Ausführungsbeispiel kann der Prozessor 902 einen einzigen internen Cache oder mehrere Ebenen eines internen Cache aufweisen. In mindestens einem Ausführungsbeispiel kann sich der Cache-Speicher außerhalb des Prozessors 902 befinden. Andere Ausführungsbeispiele können auch eine Kombination aus internen und externen Cachespeichern enthalten, abhängig von der jeweiligen Implementierung und den Bedürfnissen. In mindestens einem Ausführungsbeispiel kann die Registerdatei 906 verschiedene Datentypen in verschiedenen Registern speichern, darunter, ohne Einschränkung, Ganzzahlregister, Gleitkommaregister, Statusregister und Befehlszeigerregister.
  • In mindestens einem Ausführungsbeispiel befindet sich die Ausführungseinheit 908, einschließlich, ohne Einschränkung, der Logik zur Durchführung von Ganzzahl- und Gleitkommaoperationen, ebenfalls im Prozessor 902. In mindestens einem Ausführungsbeispiel kann der Prozessor 902 auch einen Nur-Lese-Speicher („ROM“) für Mikrocode („ucode“) enthalten, der Mikrocode für bestimmte Makrobefehle speichert. In mindestens einem Ausführungsbeispiel kann die Ausführungseinheit 908 eine Logik zur Verarbeitung eines gepackten Befehlssatzes 909 enthalten. In mindestens einem Ausführungsbeispiel können durch Aufnahme des gepackten Befehlssatzes 909 in einen Befehlssatz eines Mehrzweckprozessors 902 zusammen mit assoziierten Schaltkreisen 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 einem oder mehreren Ausführungsbeispielen 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 verwendet wird, wodurch die Notwendigkeit entfällt, kleinere Dateneinheiten über den Datenbus des Prozessors zu übertragen, um eine oder mehrere Operationen mit einem Datenelement nach dem anderen durchzuführen.
  • In mindestens einem Ausführungsbeispiel kann die Ausführungseinheit 908 auch in Mikrocontrollern, eingebetteten Prozessoren, Grafikgeräten, DSPs und anderen Arten von Logikschaltungen verwendet werden. In mindestens einem Ausführungsbeispiel kann das Rechnersystem 900, ohne Einschränkung, einen Speicher 920 enthalten. In mindestens einem Ausführungsbeispiel kann der Speicher 920 als dynamisches Gerät mit wahlfreiem Zugriff („DRAM“), als statisches Gerät mit wahlfreiem Zugriff („SRAM“), als Flash-Speichergerät oder als anderes Speichergerät implementiert sein. In mindestens einem Ausführungsbeispiel kann der Speicher 920 Anweisung(en) 919 und/oder Daten 921 speichern, die durch Datensignale repräsentiert werden, die vom Prozessor 902 ausgeführt werden können.
  • In mindestens einem Ausführungsbeispiel kann der Systemlogikchip mit dem Prozessorbus 910 und dem Speicher 920 gekoppelt sein. In mindestens einem Ausführungsbeispiel kann der Systemlogikchip ohne Einschränkung einen Speicher-Controller-Hub („MCH“) 916 umfassen, und der Prozessor 902 kann mit dem MCH 916 über den Prozessorbus 910 kommunizieren. In mindestens einem Ausführungsbeispiel 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. In mindestens einem Ausführungsbeispiel kann der MCH 916 Datensignale zwischen dem Prozessor 902, dem Speicher 920 und anderen Komponenten des Rechnersystems 900 leiten und Datensignale zwischen dem Prozessorbus 910, dem Speicher 920 und einem System-E/A 922 überbrücken. In mindestens einem Ausführungsbeispiel kann der Systemlogikchip einen Grafikport zur Kopplung mit einem Grafikcontroller bereitstellen. In mindestens einem Ausführungsbeispiel kann der MCH 916 mit dem Speicher 920 über einen Pfad 918 mit hoher Bandbreite gekoppelt sein, und die Grafik-/Videokarte 912 kann mit dem MCH 916 über eine AGP-Verbindung (Accelerated Graphics Port) 914 gekoppelt sein.
  • In mindestens einem Ausführungsbeispiel kann das Rechnersystem 900 den System-E/A-Bus 922 verwenden, bei dem es sich um einen proprietären Hub-Schnittstellenbus handelt, um MCH 916 mit dem I/O-Controller-Hub („ICH“) 930 zu koppeln. In mindestens einem Ausführungsbeispiel kann ICH 930 direkte Verbindungen zu einigen E/A-Geräten über einen lokalen E/A-Bus bereitstellen. In mindestens einem Ausführungsbeispiel kann der lokale E/A-Bus ohne Einschränkung einen Hochgeschwindigkeits-E/A-Bus zur Verbindung von Peripheriegeräten mit dem Speicher 920, dem Chipsatz und dem Prozessor 902 umfassen. Beispiele hierfür sind unter anderem ein Audiocontroller 929, ein Firmware-Hub („Flash-BIOS“) 928, ein drahtloser Transceiver 926, ein Datenspeicher 924, ein Legacy-E/A-Controller 923 mit Benutzereingabe- und Tastaturschnittstellen 925, ein serieller Erweiterungsport 927, beispielsweise ein Universal Serial Bus („USB“), und ein Netzwerk-Controller 934. Der Datenspeicher 924 kann ein Festplattenlaufwerk, ein Diskettenlaufwerk, ein CD-ROM-Gerät, ein Flash-Speichergerät oder ein anderes Massenspeichergerät umfassen.
  • In mindestens einer Ausführungsform zeigt 9 ein System, das miteinander verbundene Hardware-Geräte oder „Chips“ enthält, während in anderen Ausführungsbeispielen 9 ein beispielhaftes System on a Chip („SoC“) zeigen kann. In mindestens einem Ausführungsbeispiel können die Geräte mit proprietären Verbindungen, standardisierten Verbindungen (z.B. PCIe) oder einer Kombination davon verbunden sein. In mindestens einem Ausführungsbeispiel sind eine oder mehrere Komponenten des Rechnersystems 900 unter Verwendung von Compute Express Link (CXL)-Verbindungen miteinander verbunden.
  • Die Inferenz- und/oder Trainingslogik 715 wird verwendet, um Inferenzierungs- und/oder Trainingsoperationen durchzuführen, die mit einem oder mehreren Ausführungsbeispielen assoziiert sind. Details zur Inferenz- und/oder Trainingslogik 715 werden unten in Verbindung mit 7A und/oder 7B bereitgestellt. In mindestens einem Ausführungsbeispiel kann die Inferenz- und/oder Trainingslogik 715 im System 9 für Inferenz- oder Vorhersageoperationen verwendet werden, die zumindest teilweise auf Gewichtsparametern basieren, die unter Verwendung von Trainingsoperationen für neuronale Netzwerke, Funktionen und/oder Architekturen neuronaler Netzwerke oder hierin beschriebenen Anwendungsfällen neuronaler Netzwerke berechnet wurden.
  • Derartige Komponenten können verwendet werden, um ein inverses Grafiknetzwerk zu trainieren, indem ein Satz von Bildern verwendet wird, der von einem Generator-Netzwerk generiert wird, wobei Aspekte von Objekten fixiert bleiben, während Pose- oder Ansichtsinformationen zwischen Bildern des Satzes variiert werden.
  • 10 zeigt ein Blockdiagramm, das ein elektronisches Gerät 1000 zur Verwendung eines Prozessors 1010 darstellt, gemäß mindestens einem Ausführungsbeispiel. In mindestens einem Ausführungsbeispiel kann das elektronische Gerät 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 Rechner oder jedes andere geeignete elektronische Gerät sein.
  • In mindestens einem Ausführungsbeispiel kann das System 1000 ohne Einschränkung einen Prozessor 1010 enthalten, der kommunikativ mit einer beliebigen Anzahl oder Art von Komponenten, Peripheriegeräten, Modulen oder Geräten gekoppelt ist. In mindestens einem Ausführungsbeispiel ist der Prozessor 1010 unter Verwendung eines Busses oder einer Schnittstelle gekoppelt, beispielsweise eines 1 °C-Busses, eines System-Management-Busses („SMBus“), eines Low-Pin-Count-Busses (LPC), einer seriellen peripheren Schnittstelle („SPI“), eines High-Definition-Audio-Busses („HDA“), eines Serial-Advance-Technology-Attachment-Busses („SATA“), eines universellen seriellen Busses („USB“) (Versionen 1, 2, 3) oder eines universellen asynchronen Receiver/Transmitter-Busses („UART“). In mindestens einer Ausführungsform zeigt 10 ein System, das miteinander verbundene Hardware-Geräte oder „Chips“ umfasst, während in anderen Ausführungsbeispielen 10 ein beispielhaftes System-on-a-Chip („SoC“) darstellen kann. In mindestens einem Ausführungsbeispiel können die in 10 dargestellten Geräte mit proprietären Verbindungen, standardisierten Verbindungen (z.B. PCIe) oder einer Kombination davon miteinander verbunden sein. In mindestens einem Ausführungsbeispiel sind eine oder mehrere Komponenten von 10 unter Verwendung von Compute-Express-Link-(CXL)-Verbindungen miteinander verbunden.
  • In mindestens einem Ausführungsbeispiel kann 10 ein Display 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 beispielsweise 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 beispielsweise eine USB 3.0-Kamera, und/oder eine Low Power Double Data Rate („LPDDR“)-Speichereinheit („LPDDR3“) 1015, implementiert beispielsweise im LPDDR3-Standard. Diese Komponenten können jeweils auf jede geeignete Weise implementiert werden.
  • In mindestens einem Ausführungsbeispiel können andere Komponenten mit dem Prozessor 1010 über die oben beschriebenen Komponenten kommunikativ gekoppelt sein. In mindestens einem Ausführungsbeispiel können ein Beschleunigungsmesser 1041, ein Umgebungslichtsensor („ALS“) 1042, ein Kompass 1043 und ein Gyroskop 1044 kommunikativ mit dem Sensor-Hub 1040 gekoppelt sein. In mindestens einem Ausführungsbeispiel können ein Wärmesensor 1039, ein Lüfter 1037, eine Tastatur 1046 und ein Touchpad 1030 kommunikativ mit dem EC 1035 gekoppelt sein. In mindestens einem Ausführungsbeispiel können Lautsprecher 1063, Kopfhörer 1064 und Mikrofon („mic“) 1065 kommunikativ mit einer Audioeinheit („audio codec and class d amp“) 1062 gekoppelt sein, die ihrerseits kommunikativ mit dem DSP 1060 gekoppelt sein kann. In mindestens einem Ausführungsbeispiel kann die Audioeinheit 1064 beispielsweise und ohne Einschränkung einen Audiocodierer/-dekodierer („Codec“) und einen Verstärker der Klasse D umfassen. In mindestens einem Ausführungsbeispiel kann die SIM-Karte („SIM“) 1057 mit der WWAN-Einheit 1056 kommunikativ gekoppelt sein. In mindestens einem Ausführungsbeispiel können Komponenten wie beispielsweise 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 Inferenzierungs- und/oder Trainingsoperationen durchzuführen, die mit einem oder mehreren Ausführungsbeispielen assoziiert sind. Details zur Inferenz- und/oder Trainingslogik 715 werden im Folgenden in Verbindung mit den 7a und/oder 7b beschrieben. In mindestens einem Ausführungsbeispiel kann die Inferenz- und/oder Trainingslogik 715 in dem System 10 für Inferenz- oder Vorhersageoperationen verwendet werden, die zumindest teilweise auf Gewichtsparametern basieren, die unter Verwendung von Trainingsoperationen für ein neuronales Netzwerk, Funktionen und/oder Architekturen eines neuronalen Netzwerks oder hierin beschriebenen Anwendungsfällen für ein neuronales Netzwerk berechnet wurden.
  • Solche Komponenten können verwendet werden, um ein inverses Grafiknetzwerk zu trainieren, indem ein Satz von Bildern verwendet wird, der von einem Generator-Netzwerk generiert wird, wobei Aspekte von Objekten fixiert bleiben, während Pose- oder Ansichtsinformationen zwischen Bildern des Satzes variiert werden.
  • 11 ist ein Blockdiagramm eines Verarbeitungssystems, zumindest in einem Ausführungsbeispiel. In mindestens einem Ausführungsbeispiel enthält das System 1100 einen oder mehrere Prozessoren 1102 und einen oder mehrere Grafikprozessoren 1108 und kann ein Einzelprozessor-Desktop-System, ein Multiprozessor-Workstation-System oder ein ServerSystem mit einer großen Anzahl von Prozessoren 1102 oder Prozessorkernen 1107 sein. In mindestens einem Ausführungsbeispiel ist das System 1100 eine Verarbeitungsplattform, die in einen integrierten System-on-a-Chip (SoC)-Schaltkreis zur Verwendung in mobilen, tragbaren oder eingebetteten Geräten integriert ist.
  • In mindestens einem Ausführungsbeispiel 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 umfassen oder darin integriert sein. In mindestens einem Ausführungsbeispiel ist das System 1100 ein Mobiltelefon, ein Smartphone, ein Tablet-Rechner oder ein mobiles Internetgerät. In mindestens einem Ausführungsbeispiel kann das Verarbeitungssystem 1100 auch ein tragbares Gerät, beispielsweise eine intelligente Uhr, eine intelligente Brille, ein Augmented-Reality-Gerät oder ein Virtual-Reality-Gerät, umfassen, mit diesem gekoppelt oder darin integriert sein. In mindestens einem Ausführungsbeispiel ist das Verarbeitungssystem 1100 ein Fernseh- oder Set-Top-Box-Gerät mit einem oder mehreren Prozessoren 1102 und einer grafischen Schnittstelle, die von einem oder mehreren Grafikprozessoren 1108 generiert wird.
  • In mindestens einem Ausführungsbeispiel umfassen ein oder mehrere Prozessoren 1102 jeweils einen oder mehrere Prozessorkerne 1107 zur Verarbeitung von Befehlen, die bei ihrer Ausführung Operationen für System- und Benutzersoftware durchführen. In mindestens einem Ausführungsbeispiel ist jeder von einem oder mehreren Prozessorkemen 1107 so konfiguriert, dass er einen bestimmten Befehlssatz 1109 verarbeitet. In mindestens einem Ausführungsbeispiel 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. In mindestens einem Ausführungsbeispiel können die Prozessorkerne 1107 jeweils einen anderen Befehlssatz 1109 verarbeiten, der Befehle enthalten kann, um die Emulation anderer Befehlssätze zu erleichtern. In mindestens einem Ausführungsbeispiel kann der Prozessorkern 1107 auch andere verarbeitende Geräte, beispielsweise einen digitalen Signalprozessor (DSP), enthalten.
  • In mindestens einem Ausführungsbeispiel umfasst der Prozessor 1102 einen Cache-Speicher 1104. In mindestens einem Ausführungsbeispiel kann der Prozessor 1102 einen einzigen internen Cache-Speicher oder mehrere Ebenen von internen Cache-Speichern aufweisen. In mindestens einem Ausführungsbeispiel wird der Cache-Speicher von verschiedenen Komponenten des Prozessors 1102 gemeinsam genutzt. In mindestens einem Ausführungsbeispiel verwendet der Prozessor 1102 auch einen externen Cache (z.B. einen Level-3 (L3) Cache oder Last Level Cache (LLC)) (nicht gezeigt), der von den Prozessorkernen 1107 gemeinsam genutzt werden kann, indem bekannte Cache-Kohärenztechniken verwendet werden. In mindestens einem Ausführungsbeispiel ist zusätzlich eine Registerdatei 1106 im Prozessor 1102 enthalten, die verschiedene Arten von Registern zur Speicherung unterschiedlicher Datentypen (z.B. Ganzzahlregister, Gleitkommaregister, Statusregister und ein Befehlszeigerregister) enthalten kann. In mindestens einem Ausführungsbeispiel kann die Registerdatei 1106 Allzweckregister oder andere Register enthalten.
  • In mindestens einem Ausführungsbeispiel ist (sind) ein oder mehrere Prozessor(en) 1102 mit einem oder mehreren Schnittstellenbus(en) 1110 gekoppelt, um Kommunikationssignale wie beispielsweise Adress-, Daten- oder Steuersignale zwischen dem Prozessor 1102 und anderen Komponenten im System 1100 zu übertragen. In mindestens einem Ausführungsbeispiel kann der Schnittstellenbus 1110 ein Prozessorbus sein, beispielsweise eine Version eines Direct Media Interface (DMI)-Busses. In mindestens einem Ausführungsbeispiel ist die Schnittstelle 1110 nicht auf einen DMI-Bus beschränkt, sondern kann einen oder mehrere Peripheral Component Interconnect-Busse (z.B. PCI, PCI Express), Speicherbusse oder andere Arten von Schnittstellenbussen umfassen. In mindestens einem Ausführungsbeispiel umfassen Prozessor(en) 1102 einen integrierten Speicher-Controller 1116 und einen Plattform-Controller-Hub 1130. In mindestens einem Ausführungsbeispiel erleichtert der Speicher-Controller 1116 die Kommunikation zwischen einem Speichergerät und anderen Komponenten des Systems 1100, während der Plattform-Controller-Hub (PCH) 1130 Verbindungen zu E/A-Geräten über einen lokalen E/A-Bus bereitstellt.
  • In mindestens einem Ausführungsbeispiel kann das Gerät 1120 ein dynamischer Direktzugriffsspeicher (DRAM), ein statischer Direktzugriffsspeicher (SRAM), ein Flash-Speicher, ein Phasenwechsel-Speicher oder ein anderes Gerät mit geeigneter Leistung sein, das als Prozessspeicher dient. In mindestens einem Ausführungsbeispiel kann das Gerät 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. In mindestens einem Ausführungsbeispiel ist die Speichersteuerung 1116 auch mit einem optionalen externen Grafikprozessor 1112 gekoppelt, der mit einem oder mehreren Grafikprozessoren 1108 in den Prozessoren 1102 kommunizieren kann, um Grafik- und Medienoperationen durchzuführen. In mindestens einem Ausführungsbeispiel kann ein Anzeigegerät 1111 an den/die Prozessor(en) 1102 angeschlossen werden. In mindestens einem Ausführungsbeispiel kann das Anzeigegerät 1111 eines oder mehrere der folgenden Geräte umfassen: ein internes Anzeigegerät, wie z.B. ein mobiles elektronisches Gerät oder ein Laptop-Gerät, oder ein externes Anzeigegerät, das über eine Anzeigeschnittstelle (z.B. DisplayPort usw.) angeschlossen ist. In mindestens einem Ausführungsbeispiel kann das Gerät 1111 ein kopfmontiertes Display (Head Mounted Display, HMD) umfassen, beispielsweise ein stereoskopisches Anzeigegerät zur Verwendung in Virtual-Reality-Anwendungen (VR) oder Augmented-Reality-Anwendungen (AR).
  • In mindestens einem Ausführungsbeispiel ermöglicht der Plattform-Controller-Hub 1130 die Verbindung von Peripheriegeräten mit dem Speichergerät 1120 und dem Prozessor 1102 über einen Hochgeschwindigkeits-E/A-Bus. In mindestens einem Ausführungsbeispiel umfassen E/A-Peripheriegeräte unter anderem einen Audiocontroller 1146, einen Netzwerk-Controller 1134, eine Firmware-Schnittstelle 1128, einen drahtlosen Transceiver 1126, Berührungssensoren 1125, ein Gerät zur Datenspeicherung 1124 (z.B. Festplattenlaufwerk, Flash-Speicher, etc.). In mindestens einem Ausführungsbeispiel kann das Datenspeichergerät 1124 über eine Speicherschnittstelle (z.B. SATA) oder über einen Peripheriebus, beispielsweise einen Peripheral Component Interconnect Bus (z.B. PCI, PCI Express), angeschlossen werden. In mindestens einem Ausführungsbeispiel können die Berührungssensoren 1125 Touchscreen-Sensoren, Drucksensoren oder Fingerabdrucksensoren umfassen. In mindestens einem Ausführungsbeispiel kann der drahtlose Transceiver 1126 ein Wi-Fi-Transceiver, ein Bluetooth-Transceiver oder ein Transceiver für ein mobiles Netzwerk wie beispielsweise ein 3G-, 4G- oder Long Term Evolution (LTE)-Transceiver sein. In mindestens einem Ausführungsbeispiel ermöglicht die Firmware-Schnittstelle 1128 die Kommunikation mit der System-Firmware und kann z. B. eine einheitliche erweiterbare Firmware-Schnittstelle (UEFI) sein. In mindestens einem Ausführungsbeispiel kann der Netzwerk-Controller 1134 eine Netzwerkverbindung mit einem kabelgebundenen Netzwerk ermöglichen. In mindestens einem Ausführungsbeispiel koppelt ein leistungsstarker Netzwerk-Controller (nicht dargestellt) mit dem Schnittstellenbus 1110. In mindestens einem Ausführungsbeispiel ist der Audiocontroller 1146 ein Multi-Channel-High-Definition-Audiocontroller. In mindestens einem Ausführungsbeispiel enthält das System 1100 einen optionalen Legacy-E/A-Controller 1140 zur Kopplung von Legacy-Geräten (z.B. Personal System 2 (PS/2)) mit dem System. In mindestens einem Ausführungsbeispiel kann der Plattform-Controller-Hub 1130 auch mit einem oder mehreren Universal Serial Bus (USB)-Controllem 1142 verbunden werden, die Eingabegeräte, wie beispielsweise Tastatur- und Mauskombinationen 1143, eine Kamera 1144 oder andere USB-Eingabegeräte, anschließen.
  • In mindestens einem Ausführungsbeispiel kann eine Instanz des Speicher-Controllers 1116 und des Plattform-Controller-Hubs 1130 in einen diskreten externen Grafikprozessor, beispielsweise den externen Grafikprozessor 1112, integriert sein. In mindestens einem Ausführungsbeispiel können Plattform-Controller-Hub 1130 und/oder Speicher-Controller 1116 extern zu einem oder mehreren Prozessor(en) 1102 sein. Zumindest in einem Ausführungsbeispiel kann das System 1100 einen externen Speicher-Controller 1116 und einen Plattform-Controller-Hub 1130 enthalten, der als Speicher-Controller-Hub und Peripherie-Controller-Hub innerhalb eines System-Chipsatzes konfiguriert sein kann, der mit dem/den Prozessor(en) 1102 in Verbindung steht.
  • Die Inferenz- und/oder Trainingslogik 715 wird verwendet, um Inferenzierungs- und/oder Trainingsoperationen durchzuführen, die mit einem oder mehreren Ausführungsbeispielen assoziiert sind. Details zur Inferenz- und/oder Trainingslogik 715 werden unten in Verbindung mit 7A und/oder 7B bereitgestellt. In mindestens einem Ausführungsbeispiel können Teile oder die Gesamtheit der Inferenz- und/oder Trainingslogik 715 in den Grafikprozessor 1500 integriert sein. Zumindest in einem Ausführungsbeispiel können die hier beschriebenen Trainings- und/oder Inferenztechniken eine oder mehrere ALUs verwenden, die in einem Grafikprozessor enthalten sind. Darüber hinaus können in mindestens einem Ausführungsbeispiel die hierin beschriebenen Inferenz- und/oder Trainingsoperationen unter Verwendung einer anderen als der in 7A oder 7B dargestellten Logik durchgeführt werden. In mindestens einem Ausführungsbeispiel können Gewichtsparameter in einem On-Chip- oder Off-Chip-Speicher und/oder in Registern (dargestellt oder nicht dargestellt) gespeichert werden, die ALUs eines Grafikprozessors konfigurieren, um einen oder mehrere hierin beschriebene maschinelle Lernalgorithmen, neuronale Netzwerkarchitekturen, Anwendungsfälle oder Trainingstechniken durchzuführen.
  • Derartige Komponenten können verwendet werden, um ein inverses Grafiknetzwerk zu trainieren, indem ein Satz von Bildern verwendet wird, der von einem Generator-Netzwerk generiert wird, wobei Aspekte von Objekten fixiert bleiben, während Pose- oder Ansichtsinformationen zwischen Bildern des Satzes variiert werden.
  • 12 ist ein Blockdiagramm eines Prozessors 1200 mit einem oder mehreren Prozessorkemen 1202A-1202N, einem integrierten Speichercontroller 1214 und einem integrierten Grafikprozessor 1208, gemäß mindestens einem Ausführungsbeispiel. In mindestens einem Ausführungsbeispiel kann der Prozessor 1200 zusätzliche Kerne bis hin zu und einschließlich des zusätzlichen Kerns 1202N umfassen, der durch gestrichelte, linierte Kästen repräsentiert wird. In mindestens einem Ausführungsbeispiel enthält jeder der Prozessorkerne 1202A-1202N eine oder mehrere interne Cache-Einheiten 1204A-1204N. In mindestens einem Ausführungsbeispiel hat jeder Prozessorkern auch Zugriff auf eine oder mehrere gemeinsam genutzte Cache-Einheiten 1206.
  • In mindestens einem Ausführungsbeispiel repräsentieren die internen Cache-Einheiten 1204A-1204N und die gemeinsam genutzten Cache-Einheiten 1206 eine Cache-Speicherhierarchie innerhalb des Prozessors 1200. In mindestens einem Ausführungsbeispiel können die Cache-Speichereinheiten 1204A-1204N mindestens eine Ebene von Befehls- und Daten-Cache innerhalb jedes Prozessorkerns und eine oder mehrere Ebenen von gemeinsam genutztem Mid-Level-Cache, beispielsweise eine Ebene 2 (L2), Ebene 3 (L3), Ebene 4 (L4) oder andere Cache-Ebenen, umfassen, wobei die höchste Cache-Ebene vor dem externen Speicher als LLC klassifiziert ist. In mindestens einem Ausführungsbeispiel hält die Cache-Kohärenzlogik die Kohärenz zwischen verschiedenen Cache-Einheiten 1206 und 1204A-1204N aufrecht.
  • In mindestens einem Ausführungsbeispiel kann der Prozessor 1200 auch einen Satz von einer oder mehreren Bussteuerungseinheiten 1216 und einen Systemagenten-Kern 1210 enthalten. In mindestens einem Ausführungsbeispiel verwalten eine oder mehrere Bus-Controller-Einheiten 1216 einen Satz von Peripherie-Bussen, beispielsweise einen oder mehrere PCI- oder PCI-Express-Busse. In mindestens einem Ausführungsbeispiel stellt der Systemagentenkem 1210 Verwaltungsfunktionen für verschiedene Prozessorkomponenten bereit. In mindestens einem Ausführungsbeispiel umfasst der Systemagenten-Kern 1210 einen oder mehrere integrierte Speicher-Controller 1214 zur Verwaltung des Zugriffs auf verschiedene externe Speichergeräte (nicht dargestellt).
  • In mindestens einem Ausführungsbeispiel umfasst einer oder mehrere der Prozessorkerne 1202A-1202N Unterstützung für gleichzeitiges multi-threading. In mindestens einem Ausführungsbeispiel umfasst der Kern des Systemagenten 1210 Komponenten zur Koordinierung und zum Betrieb der Kerne 1202A-1202N während der Multi-Threading-Verarbeitung. In mindestens einem Ausführungsbeispiel kann der Systemagentenkern 1210 zusätzlich eine Energiesteuerungseinheit (PCU) enthalten, die Logik und Komponenten zur Regelung eines oder mehrerer Leistungszustände der Prozessorkerne 1202A-1202N und des Grafikprozessors 1208 umfasst.
  • In mindestens einem Ausführungsbeispiel enthält der Prozessor 1200 zusätzlich den Grafikprozessor 1208 zur Ausführung von Grafikverarbeitungsoperationen. In mindestens einem Ausführungsbeispiel koppelt der Grafikprozessor 1208 mit gemeinsam genutzten Cache-Einheiten 1206 und dem Systemagenten-Kern 1210, der einen oder mehrere integrierte Speicher-Controller 1214 enthält. In mindestens einem Ausführungsbeispiel umfasst der Systemagenten-Kern 1210 auch einen Display-Controller 1211, um die Ausgabe des Grafikprozessors an ein oder mehrere gekoppelte Displays zu steuern. In mindestens einem Ausführungsbeispiel kann der Display-Controller 1211 auch ein separates Modul sein, das über mindestens eine Zwischenverbindung mit dem Grafikprozessor 1208 gekoppelt ist, oder er kann in den Grafikprozessor 1208 integriert sein.
  • In mindestens einem Ausführungsbeispiel wird eine ringbasierte Verbindungseinheit 1212 verwendet, um interne Komponenten des Prozessors 1200 zu koppeln. In mindestens einem Ausführungsbeispiel kann auch eine alternative Verbindungseinheit verwendet werden, beispielsweise eine Punkt-zu-Punkt-Verbindung, eine geschaltete Verbindung oder andere Techniken. In mindestens einem Ausführungsbeispiel ist der Grafikprozessor 1208 über eine E/A-Verbindung 1213 mit dem Ringverbindung 1212 gekoppelt.
  • In mindestens einem Ausführungsbeispiel repräsentiert die E/A-Verbindung 1213 mindestens eine von mehreren Arten von E/A-Verbindungen, einschließlich einer E/A-Verbindung auf dem Gehäuse, die die Kommunikation zwischen verschiedenen Prozessorkomponenten und einem eingebetteten Hochleistungsspeichermodul 1218, beispielsweise einem eDRAM-Modul, ermöglicht. In mindestens einem Ausführungsbeispiel verwenden jeder der Prozessorkerne 1202A-1202N und der Grafikprozessor 1208 eingebettete Speichermodule 1218 als gemeinsam genutzten Last-Level-Cache.
  • In mindestens einem Ausführungsbeispiel sind die Prozessorkerne 1202A-1202N homogene Kerne, die eine gemeinsame Befehlssatzarchitektur ausführen. In mindestens einem Ausführungsbeispiel 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. In mindestens einem Ausführungsbeispiel 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 Leistungskemen mit einem niedrigeren Stromverbrauch gekoppelt sind. In mindestens einem Ausführungsbeispiel kann der Prozessor 1200 auf einem oder mehreren Chips oder als integrierte SoC-Schaltung implementiert werden.
  • Die Inferenz- und/oder Trainingslogik 715 wird verwendet, um Inferenzierungs- und/oder Trainingsoperationen durchzuführen, die mit einem oder mehreren Ausführungsbeispielen assoziiert sind. Details zur Inferenz- und/oder Trainingslogik 715 werden im Folgenden in Verbindung mit 7a und/oder 7b. In mindestens einem Ausführungsbeispiel können Teile oder die Gesamtheit der Inferenz- und/oder Trainingslogik 715 in den Prozessor 1200 integriert werden. Zumindest in einem Ausführungsbeispiel können die hierin beschriebenen Trainings- und/oder Inferenztechniken eine oder mehrere der ALUs verwenden, die im Grafikprozessor 1512, in den Grafikkernen 1202A-1202N oder in anderen Komponenten in 12 enthalten sind. Darüber hinaus können in mindestens einem Ausführungsbeispiel die hierin beschriebenen Inferenz- und/oder Trainingsoperationen unter Verwendung einer anderen als der in 7A oder 7B dargestellten Logik durchgeführt werden. In mindestens einem Ausführungsbeispiel können Gewichtsparameter in einem On-Chip- oder Off-Chip-Speicher und/oder Registern (dargestellt oder nicht dargestellt) gespeichert werden, die ALUs des Grafikprozessors 1200 konfigurieren, um einen oder mehrere hierin beschriebene Algorithmen für maschinelles Lernen, neuronale Netzwerkarchitekturen, Anwendungsfälle oder Trainingstechniken durchzuführen.
  • Solche Komponenten können verwendet werden, um ein inverses Grafiknetzwerk zu trainieren, indem ein Satz von Bildern verwendet wird, der von einem Generator-Netzwerk generiert wird, wobei Aspekte von Objekten fixiert bleiben, während Pose- oder Ansichtsinformationen zwischen Bildern des Satzes variiert werden.
  • Virtualisierte Rechenplattform
  • 13 ist ein beispielhaftes Datenflussdiagramm für einen Prozess 1300 zum Generieren und Einsetzen einer Bildverarbeitungs- und Inferenz-Pipeline gemäß mindestens einem Ausführungsbeispiel. In mindestens einem Ausführungsbeispiel kann der Prozess 1300 zur Verwendung mit bildgebenden Geräten, Verarbeitungsgeräten und/oder anderen Gerätetypen in einer oder mehreren Anlagen 1302 eingesetzt werden. Der Prozess 1300 kann innerhalb eines Trainingssystems 1304 und/oder eines Einsatzsystems 1306 ausgeführt werden. In mindestens einem Ausführungsbeispiel kann das Trainingssystem 1304 verwendet werden, um das Training, den Einsatz und die Implementierung von Modellen des maschinellen Lernens (z.B. neuronale Netzwerke, Objekterkennungsalgorithmen, Algorithmen der Computervision usw.) zur Verwendung im Einsatzsystem 1306 durchzuführen. In mindestens einem Ausführungsbeispiel kann das Einsatzsystem 1306 so konfiguriert sein, dass es Verarbeitungs- und Rechenressourcen auf eine verteilte Rechenumgebung verlagert, um die Infrastrukturanforderungen in der Anlage 1302 zu reduzieren. In mindestens einem Ausführungsbeispiel können eine oder mehrere Anwendungen in einer Pipeline Dienste (z.B. Inferenz, Visualisierung, Berechnung, KI, etc.) des Einsatzsystems 1306 während der Ausführung von Anwendungen verwenden oder aufrufen.
  • In mindestens einem Ausführungsbeispiel können einige der in fortgeschrittenen Verarbeitungs- und Inferenz-Pipelines verwendeten Anwendungen maschinelle Lernmodelle oder andere KI verwenden, um einen oder mehrere Verarbeitungsschritte durchzuführen. In mindestens einem Ausführungsbeispiel können maschinelle Lernmodelle in der Anlage 1302 unter Verwendung von Daten 1308 (beispielsweise Bildgebungsdaten) trainiert werden, die in der Anlage 1302 generiert wurden (und auf einem oder mehreren PACS-Servern (Picture Archiving and Communication System) in der Anlage 1302 gespeichert sind), sie können unter Verwendung von Bildgebungs- oder Sequenzierungsdaten 1308 aus einer anderen Anlage (oder anderen Anlagen) trainiert werden, oder eine Kombination davon. In mindestens einem Ausführungsbeispiel kann das Trainingssystem 1304 dazu verwendet werden, Anwendungen, Dienste und/oder andere Ressourcen bereitzustellen, um funktionierende, einsatzfähige maschinelle Lernmodelle für das Einsatzsystem 1306 zu generieren.
  • In mindestens einem Ausführungsbeispiel kann die Modellregistratur 1324 durch einen Objektspeicher unterstützt werden, der Versionierung und Objektmetadaten unterstützt. In mindestens einem Ausführungsbeispiel kann auf den Objektspeicher beispielsweise über eine mit einem Cloud-Speicher (z.B. Cloud 1426 aus 14) kompatible Anwendungsprogrammierschnittstelle (API) innerhalb einer Cloud-Plattform zugegriffen werden. In mindestens einem Ausführungsbeispiel können Modelle für maschinelles Lernen in der Modellregistratur 1324 von Entwicklern oder Partnern eines Systems, das mit einer API interagiert, hochgeladen, aufgelistet, geändert oder gelöscht werden. In mindestens einem Ausführungsbeispiel kann eine API den Zugriff auf Verfahren bereitstellen, die es Benutzern mit geeigneten Anmeldeinformationen ermöglichen, Modelle mit Anwendungen zu assoziieren, beispielsweise so, dass Modelle als Teil der Ausführung von containerisierten Instanziierungen von Anwendungen ausgeführt werden können.
  • In mindestens einem Ausführungsbeispiel kann die Trainingspipeline 1404 (14) ein Szenario beinhalten, in dem die Anlage 1302 ihr eigenes maschinelles Lernmodell trainiert oder ein bestehendes maschinelles Lernmodell besitzt, das optimiert oder aktualisiert werden muss. In mindestens einem Ausführungsbeispiel können Bilddaten 1308 empfangen werden, die von bildgebenden Geräten, Sequenziergeräten und/oder anderen Gerätetypen generiert wurden. In mindestens einem Ausführungsbeispiel kann nach dem Empfang der Bildgebungsdaten 1308 die KI-gestützte Annotation 1310 verwendet werden, um die Generierung von Annotationen zu unterstützen, die den Bildgebungsdaten 1308 entsprechen und als Grundwahrheit für ein maschinelles Lernmodell verwendet werden. In zumindest einem Ausführungsbeispiel kann die KI-unterstützte Annotation 1310 ein oder mehrere maschinelle Lernmodelle (z.B. Convolutional Neural Networks (CNNs)) enthalten, die trainiert werden können, um Annotationen zu generieren, die bestimmten Arten von Bilddaten 1308 (z.B. von bestimmten Geräten) entsprechen. In mindestens einem Ausführungsbeispiel können die KI-gestützten Annotationen 1310 dann direkt verwendet oder unter Verwendung eines Annotationstools angepasst oder feinabgestimmt werden, um Grundwahrheitsdaten zu generieren. In mindestens einem Ausführungsbeispiel können KI-unterstützte Annotationen 1310, markierte Klinikdaten 1312 oder eine Kombination davon als Grundwahrheit zum Trainieren eines maschinellen Lemmodells verwendet werden. In mindestens einem Ausführungsbeispiel kann ein trainiertes maschinelles Lernmodell als Ausgabemodell 1316 bezeichnet werden und kann vom Einsatzsystem 1306 verwendet werden, wie hierin beschrieben.
  • In mindestens einem Ausführungsbeispiel kann die Trainingspipeline 1404 (14) ein Szenario umfassen, in dem die Anlage 1302 ein maschinelles Lernmodell zur Verwendung bei der Durchführung einer oder mehrerer Verarbeitungsaufgaben für eine oder mehrere Anwendungen im Einsatzsystem 1306 benötigt, die Anlage 1302 jedoch möglicherweise derzeit nicht über ein solches maschinelles Lernmodell verfügt (oder nicht über ein Modell, das für solche Zwecke optimiert, effizient oder effektiv ist). In mindestens einem Ausführungsbeispiel kann ein vorhandenes maschinelles Lernmodell aus einer Modellregistratur 1324 ausgewählt werden. In mindestens einem Ausführungsbeispiel kann die Modellregistratur 1324 Modelle für maschinelles Lernen enthalten, die trainiert wurden, um eine Vielzahl verschiedener Inferenzaufgaben auf Bilddaten durchzuführen. In mindestens einem Ausführungsbeispiel können die maschinellen Lernmodelle in der Modellregistratur 1324 auf Bildgebungsdaten von anderen Anlagen als der Anlage 1302 (z.B. Anlagen, die sich an einem anderen Ort befinden) trainiert worden sein. In mindestens einem Ausführungsbeispiel können maschinelle Lernmodelle auf Bildgebungsdaten von einem Ort, zwei Orten oder einer beliebigen Anzahl von Orten trainiert worden sein. In mindestens einem Ausführungsbeispiel kann das Training, wenn es auf Bilddaten von einem bestimmten Ort trainiert wird, an diesem Ort oder zumindest auf eine Art und Weise stattfinden, die die Vertraulichkeit der Bilddaten schützt oder die Übertragung von Bilddaten außerhalb des Standorts einschränkt. In mindestens einem Ausführungsbeispiel kann, sobald ein Modell an einem Ort trainiert - oder partiell trainiert - wurde, ein maschinelles Lernmodell zum Modellregistratur 1324 hinzugefügt werden. In mindestens einem Ausführungsbeispiel kann ein maschinelles Lernmodell dann an einer beliebigen Anzahl anderer Anlagen neu trainiert oder aktualisiert werden, und ein neu trainiertes oder aktualisiertes Modell kann in der Modellregistratur 1324 verfügbar gemacht werden. In mindestens einem Ausführungsbeispiel kann dann ein maschinelles Lernmodell aus der Modellregistratur 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.
  • In mindestens einem Ausführungsbeispiel, der Trainingspipeline 1404 (14), kann ein Szenario eine Anlage 1302 umfassen, die ein maschinelles Lernmodell zur Verwendung bei der Durchführung einer oder mehrerer Verarbeitungsaufgaben für eine oder mehrere Anwendungen im Einsatzsystem 1306 benötigt, aber die Anlage 1302 verfügt möglicherweise derzeit nicht über ein solches maschinelles Lernmodell (oder verfügt möglicherweise nicht über ein Modell, das für solche Zwecke optimiert, effizient oder effektiv ist). In mindestens einem Ausführungsbeispiel kann ein aus dem Modellregistratur 1324 ausgewähltes maschinelles Lernmodell aufgrund von Unterschieden in den Populationen, der Robustheit der zum Trainieren eines maschinellen Lemmodells verwendeten Trainingsdaten, der Vielfalt der Anomalien der Trainingsdaten und/oder anderer Probleme mit den Trainingsdaten nicht für die in der Anlage 1302 generierten Bildgebungsdaten 1308 feinabgestimmt oder optimiert sein. In mindestens einem Ausführungsbeispiel kann die KI-unterstützte Annotation 1310 verwendet werden, um das Generieren von Annotationen zu unterstützen, die den Bildgebungsdaten 1308 entsprechen und als Grundwahrheit für das Neutrainieren oder Aktualisieren eines maschinellen Lernmodells verwendet werden. In mindestens einem Ausführungsbeispiel können markierte Daten 1312 als Grundwahrheitsdaten zum Trainieren eines maschinellen Lernmodells verwendet werden. In mindestens einem Ausführungsbeispiel kann die Umschulung oder Aktualisierung eines maschinellen Lernmodells als Modelltraining 1314 bezeichnet werden. In mindestens einem Ausführungsbeispiel kann die Modellschulung 1314 - z.B. KI-unterstützte Annotationen 1310, markierte Klinikdaten 1312 oder eine Kombination davon - als Grundwahrheit für das Trainieren oder Aktualisieren eines maschinellen Lernmodells verwendet werden. In mindestens einem Ausführungsbeispiel kann ein trainiertes maschinelles Lemmodell als Ausgabemodell 1316 bezeichnet werden und kann vom Einsatzsystem 1306 verwendet werden, wie hierin beschrieben.
  • In mindestens einem Ausführungsbeispiel kann das Einsatzsystem 1306 Software 1318, Dienste 1320, Hardware 1322 und/oder andere Komponenten, Merkmale und Funktionen umfassen. In mindestens einem Ausführungsbeispiel kann das Einsatzsystem 1306 einen Software-„Stack“ enthalten, sodass 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 Rechenaufgaben des Einsatzsystems 1306 auszuführen. In mindestens einem Ausführungsbeispiel kann die Software 1318 eine beliebige Anzahl von verschiedenen Containern enthalten, wobei jeder Container eine Instanziierung einer Anwendung ausführen kann. In mindestens einem Ausführungsbeispiel kann jede Anwendung eine oder mehrere Verarbeitungsaufgaben in einer erweiterten Verarbeitungs- und Inferenz-Pipeline ausführen (z.B. Inferenz, Objekterkennung, Merkmalserkennung, Segmentierung, Bildverbesserung, Kalibrierung usw.). In mindestens einem Ausführungsbeispiel kann eine erweiterte Verarbeitungs- und Inferenzpipeline basierend auf der Auswahl verschiedener Container definiert werden, die für die Verarbeitung von Bilddaten 1308 gewünscht oder erforderlich sind, zusätzlich zu Containern, die Bilddaten zur Verwendung durch jeden Container und/oder zur Verwendung durch die Anlage 1302 nach der Verarbeitung durch eine Pipeline (z.B. zur Rückkonvertierung von Ausgaben in einen verwendbaren Datentyp) empfangen und konfigurieren. In mindestens einem Ausführungsbeispiel kann eine Kombination von Containern innerhalb der Software 1318 (z.B. die eine Pipeline bilden) als virtuelles Instrument bezeichnet werden (wie hierin detaillierter beschrieben), und ein virtuelles Instrument kann Dienste 1320 und Hardware 1322 nutzen, um einige oder alle Verarbeitungsaufgaben von in Containern instanziierten Anwendungen auszuführen.
  • In mindestens einem Ausführungsbeispiel kann eine Datenverarbeitungs-Pipeline Eingabedaten (z.B. Bildgebungsdaten 1308) in einem bestimmten Format als Reaktion auf eine Inferenzanforderung (z.B. eine Anforderung von einem Benutzer des Einsatzsystems 1306) empfangen. In mindestens einem Ausführungsbeispiel können die Eingabedaten ein oder mehrere Bilder, Videos und/oder andere Repräsentationen von Daten repräsentieren, die von einem oder mehreren bildgebenden Geräten generiert wurden. In mindestens einem Ausführungsbeispiel können die Daten als Teil der Datenverarbeitungs-Pipeline einer Vorverarbeitung unterzogen werden, um die Daten für die Verarbeitung durch eine oder mehrere Anwendungen vorzubereiten. In mindestens einem Ausführungsbeispiel kann eine Nachverarbeitung an einer Ausgabe einer oder mehrerer Inferenzierungsaufgaben oder anderer Verarbeitungsaufgaben einer Pipeline durchgeführt werden, um Ausgabedaten für eine nächste Anwendung vorzubereiten und/oder Ausgabedaten für die Übertragung und/oder Verwendung durch einen Benutzer vorzubereiten (z.B. als Antwort auf eine Inferenzanfrage). In mindestens einem Ausführungsbeispiel können Inferenzaufgaben von einem oder mehreren maschinellen Lemmodellen durchgeführt werden, beispielsweise von trainierten oder eingesetzten neuronalen Netzwerken, die Ausführungsmodelle 1316 des Trainingssystems 1304 enthalten können.
  • In mindestens einem Ausführungsbeispiel können die Aufgaben der Datenverarbeitungs-Pipeline in einem oder mehreren Containern gekapselt sein, die jeweils eine diskrete, voll funktionsfähige Instanziierung einer Anwendung und einer virtualisierten Rechenumgebung repräsentieren, die in der Lage ist, auf maschinelle Lemmodelle zu verweisen. In mindestens einem Ausführungsbeispiel können Container oder Anwendungen in einem privaten (z.B. zugangsbeschränkten) Bereich einer Containerregistratur (hierin ausführlicher beschrieben) veröffentlicht werden, und trainierte oder eingesetzte Modelle können in der Modellregistratur 1324 gespeichert und mit einer oder mehreren Anwendungen assoziiert werden. In mindestens einem Ausführungsbeispiel können Bilder von Anwendungen (z.B. Container-Images) in einer Container-Registry verfügbar sein, und sobald sie von einem Benutzer aus einer Container-Registry 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 ein System des Benutzers zu generieren.
  • In mindestens einem Ausführungsbeispiel können Entwickler (z.B. Softwareentwickler, Kliniker, Ärzte usw.) Anwendungen (z.B. in Form von Containern) zur Durchführung von Bildverarbeitung und/oder Inferenzierung auf bereitgestellte Daten entwickeln, veröffentlichen und speichern. In mindestens einem Ausführungsbeispiel kann die Entwicklung, Veröffentlichung und/oder Speicherung unter Verwendung eines mit einem System assoziierten Softwareentwicklungskits (SDK) erfolgen (z.B. um sicherzustellen, dass eine entwickelte Anwendung und/oder ein Container mit einem System konform oder kompatibel ist). In mindestens einem Ausführungsbeispiel kann eine entwickelte Anwendung lokal (z.B. in einer ersten Anlage, mit Daten aus einer ersten Anlage) mit einem SDK getestet werden, das zumindest einige der Dienste 1320 als System unterstützen kann (z.B. das System 1400 von 14). In mindestens einem Ausführungsbeispiel kann ein Entwickler aufgrund der Tatsache, dass DICOM-Objekte zwischen einem und Hunderten von Bildern oder anderen Datentypen enthalten können, für die Verwaltung (z.B. Festlegung von Konstrukten für die Vorverarbeitung in einer Anwendung usw.) der Extraktion und Aufbereitung der eingehenden Daten verantwortlich sein. In mindestens einem Ausführungsbeispiel 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 Anlage (z.B. einer zweiten Anlage) eines Benutzers durchzuführen.
  • In mindestens einem Ausführungsbeispiel können Entwickler dann Anwendungen oder Container über ein Netzwerk für den Zugriff und die Verwendung durch Benutzer eines Systems (z.B. das System 1400 von 14) gemeinsam nutzen. In mindestens einem Ausführungsbeispiel können fertige und validierte Anwendungen oder Container in einem Containerregister und assoziierte maschinelle Lernmodelle im Modellregistratur 1324 gespeichert werden. In mindestens einem Ausführungsbeispiel kann eine anfragende Einheit - die eine Inferenz- oder Bildverarbeitungsanforderung bereitstellt - ein Containerregister und/oder Modellregistratur 1324 nach einer Anwendung, einem Container, einem Datensatz, einem maschinellen Lernmodell usw. durchsuchen, eine gewünschte Kombination von Elementen zur Aufnahme in die Datenverarbeitungs-Pipeline auswählen und eine Bildverarbeitungsanforderung übermitteln. In mindestens einem Ausführungsbeispiel kann eine Anforderung Eingabedaten (und assoziierte Patientendaten, in einigen Beispielen) enthalten, die zur Durchführung einer Anforderung erforderlich sind, und/oder eine Auswahl von Anwendungen und/oder maschinellen Lemmodellen, die bei der Verarbeitung einer Anforderung ausgeführt werden sollen, umfassen. In mindestens einem Ausführungsbeispiel kann eine Anforderung dann an eine oder mehrere Komponenten des Einsatzsystems 1306 (z.B. eine Cloud) weitergeleitet werden, um die Verarbeitung der Datenverarbeitungs-Pipeline durchzuführen. In mindestens einem Ausführungsbeispiel kann die Verarbeitung durch das Einsatzsystem 1306 die Referenzierung ausgewählter Elemente (z.B. Anwendungen, Container, Modelle usw.) aus einer Containerregistratur und/oder Modellregistratur 1324 umfassen. In mindestens einem Ausführungsbeispiel können die Ergebnisse, sobald sie von einer Pipeline generiert wurden, an einen Benutzer als Referenz zurückgegeben werden (z.B. zur Betrachtung in einer Betrachtungsanwendungssuite, die auf einer lokalen, ortsfesten Workstation oder einem Terminal ausgeführt wird).
  • In mindestens einem Ausführungsbeispiel können zur Unterstützung der Verarbeitung oder Ausführung von Anwendungen oder Containern in Pipelines die Dienste 1320 genutzt werden. In mindestens einem Ausführungsbeispiel können die Dienste 1320 Rechen-Dienste, Dienste für künstliche Intelligenz (KI), Visualisierungsdienste und/oder andere Diensttypen umfassen. In mindestens einem Ausführungsbeispiel können die Dienste 1320 eine Funktionalität bereitstellen, die einer oder mehreren Anwendungen in der Software 1318 gemeinsam ist, so dass die Funktionalität zu einem Dienst abstrahiert werden kann, der von den Anwendungen aufgerufen oder genutzt werden kann. In mindestens einem Ausführungsbeispiel 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 Parallel-Rechnerplattform 1430 (14)). In mindestens einem Ausführungsbeispiel muss nicht jede Anwendung, die dieselbe von einem Dienst 1320 angebotene Funktionalität nutzt, über eine eigene Instanz des Dienstes 1320 verfügen, sondern der Dienst 1320 kann von verschiedenen Anwendungen gemeinsam genutzt werden. In mindestens einem Ausführungsbeispiel können die Dienste einen Inferenzserver oder eine Engine umfassen, der/die zur Ausführung von Erkennungs- oder Segmentierungsaufgaben verwendet werden kann, als nicht einschränkende Beispiele. In mindestens einem Ausführungsbeispiel kann ein Modelltrainingsdienst enthalten sein, der Fähigkeiten zum Trainieren und/oder Umlernen von Maschinenlernmodellen bereitstellt. In mindestens einem Ausführungsbeispiel kann weiter ein Datenerweiterungsdienst enthalten sein, der eine GPU-beschleunigte Datenextraktion (z.B. DICOM, RIS, CIS, REST-konform, RPC, Rohdaten usw.), Größenänderung, Skalierung und/oder andere Erweiterungen bereitstellen kann. In mindestens einem Ausführungsbeispiel kann ein Visualisierungsdienst verwendet werden, der Bildwiedergabeeffekte - beispielsweise Raytracing, Rasterung, Entrauschung, Schärfung usw. - hinzufügen kann - um zweidimensionalen (2D) und/oder dreidimensionalen (3D) Modellen mehr Realismus zu verleihen. In mindestens einem Ausführungsbeispiel 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 bereitstellen.
  • In mindestens einem Ausführungsbeispiel, in dem ein Dienst 1320 einen KI-Dienst (z.B. einen Inferenzdienst) umfasst, 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. In mindestens einem Ausführungsbeispiel, in dem eine andere Anwendung ein oder mehrere maschinelle Lernmodelle für Segmentierungsaufgaben enthält, kann eine Anwendung einen Inferenzdienst aufrufen, um maschinelle Lernmodelle zur Durchführung einer oder mehrerer mit Segmentierungsaufgaben assoziierter Verarbeitungsoperationen auszuführen. In mindestens einem Ausführungsbeispiel kann die Software 1318, die eine fortgeschrittene Verarbeitungs- und Inferenzierungs Pipeline implementiert, die eine Segmentierungsanwendung und eine Anwendung zur Erkennung von Anomalien umfasst, rationalisiert werden, da jede Anwendung denselben Inferenzdienst aufrufen kann, um eine oder mehrere Inferenzierungsaufgaben durchzuführen.
  • In mindestens einem Ausführungsbeispiel kann die Hardware 1322 GPUs, CPUs, Grafikkarten, ein KI/Deep-Learning-System (z.B. einen KI-Supercomputer, wie NVIDIAs DGX), eine Cloud-Plattform oder eine Kombination davon umfassen. In mindestens einem Ausführungsbeispiel 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. In mindestens einem Ausführungsbeispiel kann die Verwendung von GPU-Verarbeitung für die Verarbeitung lokal (z.B. in der Anlage 1302), innerhalb eines AI/Deep-Learning-Systems, in einem Cloud-System und/oder in anderen Verarbeitungskomponenten des Einsatzsystems 1306 implementiert werden, um die Effizienz, Genauigkeit und Wirksamkeit der Bildverarbeitung und -generierung zu verbessern. In mindestens einem Ausführungsbeispiel können die Software 1318 und/oder die Dienste 1320 für die GPU-Verarbeitung im Hinblick auf Deep Learning, maschinelles Lernen und/oder Hochleistungsrechnen optimiert werden. In mindestens einem Ausführungsbeispiel 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. In mindestens einem Ausführungsbeispiel kann die Hardware 1322 eine beliebige Anzahl von GPUs umfassen, die zur parallelen Verarbeitung von Daten, wie hier beschrieben, herangezogen werden können. In mindestens einem Ausführungsbeispiel kann die Cloud-Plattform ferner eine GPU-Verarbeitung für die GPU-optimierte Ausführung von Deep-Learning-Aufgaben, maschinellen Lernaufgaben oder anderen Rechenaufgaben umfassen. In mindestens einem Ausführungsbeispiel kann die Cloud-Plattform (z.B. NVIDIAs NGC) unter Verwendung eines oder mehrerer KI/Deep-Learning-Supercomputer und/oder GPU-optimierter Software (z.B. wie auf NVIDIAs DGX-Systemen bereitgestellt) als Hardware-Abstraktions- und Skalierungsplattform ausgeführt werden. In mindestens einem Ausführungsbeispiel 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 Beispielsystem 1400 zum Generieren und Einsetzen einer Bild-Einsatzpipeline gemäß mindestens einem Ausführungsbeispiel. In mindestens einem Ausführungsbeispiel kann das System 1400 verwendet werden, um den Prozess 1300 von 13 und/oder andere Prozesse einschließlich fortgeschrittener Verarbeitungs- und Inferenz-Pipelines zu implementieren. In mindestens einem Ausführungsbeispiel kann das System 1400 ein Trainingssystem 1304 und ein Einsatzsystem 1306 umfassen. In mindestens einem Ausführungsbeispiel können das Trainingssystem 1304 und das Einsatzsystem 1306 unter Verwendung von Software 1318, Diensten 1320 und/oder Hardware 1322 implementiert werden, wie hierin beschrieben.
  • In mindestens einem Ausführungsbeispiel kann das System 1400 (z.B. das Trainingssystem 1304 und/oder das Einsatzsystem 1306) in einer Rechenumgebung in der Cloud implementiert werden (z.B. unter Verwendung der Cloud 1426). In mindestens einem Ausführungsbeispiel kann das System 1400 lokal in einer Anlage des Gesundheitswesens implementiert werden oder als Kombination von Cloud- und lokalen Rechenressourcen. In mindestens einem Ausführungsbeispiel kann der Zugriff auf die APIs in der Cloud 1426 durch erlassene Sicherheitsmaßnahmen oder -protokolle auf autorisierte Benutzer beschränkt werden. In mindestens einem Ausführungsbeispiel kann ein Sicherheitsprotokoll Web-Token enthalten, die von einem Authentifizierungsdienst (z.B. AuthN, AuthZ, Gluecon usw.) signiert und mit einer entsprechenden Autorisierung versehen sein können. In mindestens einem Ausführungsbeispiel können APIs von virtuellen Instrumenten (hierin beschrieben) oder andere Instanziierungen des Systems 1400 auf eine Reihe von öffentlichen IPs beschränkt sein, die für die Interaktion überprüft oder autorisiert wurden.
  • In mindestens einem Ausführungsbeispiel können verschiedene Komponenten des Systems 1400 untereinander kommunizieren, indem sie eine Vielzahl verschiedener Netzwerkarten verwenden, einschließlich, aber nicht beschränkt auf lokale Netzwerke (LANs) und/oder Weitverkehrsnetzwerke (WANs) über verdrahtete und/oder drahtlose Kommunikationsprotokolle. In mindestens einem Ausführungsbeispiel kann die Kommunikation zwischen Anlagen und Komponenten des Systems 1400 (z.B. zum Senden von Inferenzierungsanfragen, zum Empfangen von Ergebnissen von Inferenzierungsanfragen usw.) über Datenbus(e), drahtlose Datenprotokolle (Wi-Fi), drahtgebundene Datenprotokolle (z.B. Ethernet) usw. kommuniziert werden.
  • In mindestens einem Ausführungsbeispiel kann das Trainingssystem 1304 Trainingspipelines 1404 ausführen, ähnlich denen, die hier in Bezug auf 13 beschrieben sind. In mindestens einem Ausführungsbeispiel, in dem ein oder mehrere maschinelle Lemmodelle 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 vortrainierte Modelle 1406 zu implementieren (z.B. ohne die Notwendigkeit eines erneuten Trainings oder einer Aktualisierung). In mindestens einem Ausführungsbeispiel können als Ergebnis von Trainingspipelines 1404 Ausgabemodell(e) 1316 generiert werden. In mindestens einem Ausführungsbeispiel können die Trainingspipelines 1404 eine beliebige Anzahl von Verarbeitungsschritten umfassen, beispielsweise die Konvertierung oder Anpassung von Bilddaten (oder anderen Eingabedaten). In mindestens einem Ausführungsbeispiel können für verschiedene maschinelle Lernmodelle, die vom Einsatzsystem 1306 verwendet werden, verschiedene Trainingspipelines 1404 verwendet werden. In mindestens einer Ausführungsform kann für ein erstes maschinelles Lernmodell eine Trainingspipeline 1404 verwendet werden, die einem ersten, in 13 beschriebenen Ausführungsbeispiel ähnelt, für ein zweites maschinelles Lernmodell kann eine Trainingspipeline 1404 verwendet werden, die einem zweiten, in 13 beschriebenen Beispiel ähnelt, und für ein drittes maschinelles Lernmodell kann eine Trainingspipeline 1404 verwendet werden, die einem dritten, in 13 beschriebenen Beispiel ähnelt. In mindestens einem Ausführungsbeispiel kann eine beliebige Kombination von Aufgaben innerhalb des Trainingssystems 1304 verwendet werden, je nachdem, was für das jeweilige maschinelle Lernmodell erforderlich ist. In mindestens einem Ausführungsbeispiel können eines oder mehrere der maschinellen Lernmodelle bereits trainiert und einsatzbereit sein, so dass die maschinellen Lernmodelle keiner Verarbeitung durch das Trainingssystem 1304 unterzogen und vom Einsatzsystem 1306 implementiert werden können.
  • In mindestens einem Ausführungsbeispiel können das/die Ausführungsbeispiel(e) 1316 und/oder das/die trainierte(n) Modell(e) 1406 alle Arten von maschinellen Lernmodellen umfassen, je nach Implementierung oder Ausführungsbeispiel. In mindestens einem Ausführungsbeispiel und ohne Einschränkung können die vom System 1400 verwendeten maschinellen Lernmodelle maschinelle Lernmodelle umfassen, die lineare Regression, logistische Regression, Entscheidungsbäume, Support-Vektor-Maschinen (SVM), Naive Bayes, k-nearest neighbor (Knn), K-Mittel-Clustering, Random Forest, Dimensionalitätsreduktionsalgorithmen, Gradient-Boosting-Algorithmen, neuronale Netzwerke (z.B., Autocodierer, Faltungsalgorithmen, rekurrente Algorithmen, Perceptrons, Long/Short Term Memory (LSTM), Hopfield, Boltzmann, Deep Belief, Deconvolutional, Generative Adversarial, Liquid State Machine, etc.), und/oder andere Arten von maschinellen Lernmodellen.
  • In mindestens einem Ausführungsbeispiel können die Trainingspipelines 1404 eine KI-gestützte Annotation umfassen, wie hierin in Bezug auf mindestens 15B detaillierter beschrieben. In mindestens einem Ausführungsbeispiel können markierte Daten 1312 (z.B. traditionelle Annotation) durch eine beliebige Anzahl von Techniken generiert werden. In mindestens einem Ausführungsbeispiel können Annotationen oder andere Markierungen in einem Zeichenprogramm (z.B. einem Annotationsprogramm), einem CAD-Programm (Computer Aided Design), einem Beschriftungsprogramm oder einer anderen Art von Programm generiert werden, das für die Erzeugung von Annotationen oder Markierungen für die Grundwahrheit geeignet ist, und/oder sie können in einigen Beispielen von Hand gezeichnet werden. In mindestens einem Ausführungsbeispiel können die Grundwahrheitsdaten synthetisch erzeugt (z.B. aus Rechnermodellen oder Renderungen generiert), real erzeugt (z.B. aus realen Daten entworfen und erzeugt), maschinell automatisiert (z.B. unter Verwendung von Merkmalsanalyse und Lernen, um Merkmale aus den Daten zu extrahieren und dann Annotationen zu generieren), von einem Menschen annotiert (z.B. legt ein Beschriftungsexperte den Ort der Markierungen fest) und/oder eine Kombination davon sein. In mindestens einem Ausführungsbeispiel können für jede Instanz von Bildgebungsdaten 1308 (oder anderen Datentypen, die von maschinellen Lernmodellen verwendet werden) entsprechende Grundwahrheitsdaten vorhanden sein, die vom Trainingssystem 1304 generiert werden. In mindestens einem Ausführungsbeispiel kann die KI-gestützte Annotation als Teil der Einsatzpipelines 1410 durchgeführt werden, entweder zusätzlich zu oder anstelle der KIgestützten Annotation, die in den Trainingspipelines 1404 enthalten ist. In mindestens einem Ausführungsbeispiel kann das System 1400 eine mehrschichtige Plattform umfassen, die eine Applikationsschicht (z.B. Software 1318) mit diagnostischen Anwendungen (oder anderen Anwendungstypen) enthalten kann, die eine oder mehrere medizinische Bildgebungs- und Diagnosefunktionen ausführen können. In mindestens einem Ausführungsbeispiel kann das System 1400 kommunikativ an (z.B. über verschlüsselte Verbindungen) PACS-Server-Netzwerke einer oder mehrerer Anlagen gekoppelt sein. In mindestens einem Ausführungsbeispiel kann das System 1400 so konfiguriert sein, dass es auf Daten von PACS-Servern zugreift und diese referenziert, um Operationen durchzuführen, beispielsweise das Trainieren von maschinellen Lernmodellen, den Einsatz von maschinellen Lemmodellen, die Bildverarbeitung, Inferenzierung und/oder andere Operationen.
  • In mindestens einem Ausführungsbeispiel kann eine Softwareschicht als eine sichere, verschlüsselte und/oder authentifizierte API implementiert werden, über die Anwendungen oder Container von einer oder mehreren externen Umgebungen (z.B. Anlage 1302) aufgerufen werden können. In mindestens einem Ausführungsbeispiel können Anwendungen dann einen oder mehrere Dienste 1320 aufrufen oder ausführen, um Rechen-, KI- oder Visualisierungsaufgaben durchzuführen, die mit den jeweiligen Anwendungen assoziiert sind, und die Software 1318 und/oder die Dienste 1320 können die Hardware 1322 nutzen, um die Verarbeitungsaufgaben auf effektive und effiziente Weise durchzuführen.
  • In mindestens einem Ausführungsbeispiel kann das Einsatzsystem 1306 Einsatzpipelines 1410 ausführen. In mindestens einem Ausführungsbeispiel können Einsatzpipelines 1410 eine beliebige Anzahl von Anwendungen enthalten, die sequentiell, nicht-sequentiell oder anderweitig auf Bildgebungsdaten (und/oder andere Datentypen) angewendet werden können, die von Bildgebungsgeräten, Sequenziergeräten, Genomikgeräten usw. generiert werden. - einschließlich KI-gestützter Annotation, wie oben beschrieben. In mindestens einem Ausführungsbeispiel, wie hier beschrieben, kann eine Pipeline 1410 für ein individuelles Gerät als virtuelles Gerät für ein Gerät bezeichnet werden (z.B. ein virtuelles Ultraschallgerät, ein virtuelles CT-Scangerät, ein virtuelles Sequenzierungsgerät usw.). In mindestens einem Ausführungsbeispiel kann es für ein einzelnes Gerät mehr als eine Einsatzpipeline 1410 geben, je nachdem, welche Informationen aus den von einem Gerät generierten Daten gewünscht werden. In mindestens einem Ausführungsbeispiel, in dem die Erkennung von Anomalien von einem MRT-Gerät gewünscht wird, kann es eine erste Einsatzpipeline 1410 geben, und wenn eine Bildverbesserung von der Ausgabe eines MRT-Geräts gewünscht wird, kann es eine zweite Einsatzpipeline 1410 geben.
  • In mindestens einem Ausführungsbeispiel kann eine Bilderzeugungsanwendung eine Verarbeitungsaufgabe enthalten, die die Verwendung eines maschinellen Lernmodells umfasst. In mindestens einem Ausführungsbeispiel kann ein Benutzer wünschen, sein eigenes maschinelles Lernmodell zu verwenden oder ein maschinelles Lernmodell aus dem Modellregistratur 1324 auszuwählen. In mindestens einem Ausführungsbeispiel kann ein Benutzer sein eigenes maschinelles Lernmodell implementieren oder ein maschinelles Lernmodell zur Aufnahme in eine Anwendung zur Durchführung einer Verarbeitungsaufgabe auswählen. In mindestens einem Ausführungsbeispiel können Anwendungen auswählbar und anpassbar sein, und durch die Definition von Konstrukten von Anwendungen wird der Einsatz und Implementierung von Anwendungen für einen bestimmten Benutzer als eine nahtlosere Benutzererfahrung dargestellt. In mindestens einem Ausführungsbeispiel können die Einsatzpipelines 1410 durch die Nutzung anderer Merkmale des Systems 1400 - beispielsweise der Dienste 1320 und der Hardware 1322 - noch benutzerfreundlicher sein, eine einfachere Integration bereitstellen und genauere, effizientere und zeitnahe Ergebnisse liefern.
  • In mindestens einem Ausführungsbeispiel kann das Einsatzsystem 1306 eine Benutzerschnittstelle 1414 (z.B. eine grafische Benutzerschnittstelle, eine Webschnittstelle usw.) enthalten, die verwendet werden kann, um Anwendungen zur 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. In mindestens einem Ausführungsbeispiel, das jedoch nicht in Bezug auf das Trainingssystem 1304 dargestellt ist, kann die Benutzerschnittstelle 1414 (oder eine andere Benutzerschnittstelle) verwendet werden, um Modelle zur Verwendung im Einsatzsystem 1306 auszuwählen, um Modelle zum Trainieren oder Umschulen im Trainingssystem 1304 auszuwählen und/oder um anderweitig mit dem Trainingssystem 1304 zu interagieren.
  • In mindestens einem Ausführungsbeispiel kann der Pipeline-Verwalter 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. In mindestens einem Ausführungsbeispiel kann der Pipeline-Verwalter 1412 so konfiguriert sein, dass er die Interaktion von Anwendung zu Anwendung, von Anwendung zu Dienst 1320 und/oder von Anwendung oder Dienst zu Hardware 1322 erleichtert. In mindestens einem Ausführungsbeispiel, das zwar als in der Software 1318 enthalten dargestellt ist, soll dies keine Einschränkung sein, und in einigen Beispielen (z.B. wie in 12cc dargestellt) kann der Pipeline-Verwalter 1412 in den Diensten 1320 enthalten sein. In mindestens einem Ausführungsbeispiel kann das Anwendungs-Orchestrierungssystem 1428 (z.B. Kubernetes, DOCKER usw.) ein Container-Orchestrierungssystem enthalten, das Anwendungen in Containern als logische Einheiten für die Koordination, Verwaltung, Skalierung und Bereitstellung gruppieren kann. In mindestens einem Ausführungsbeispiel kann durch Assoziieren von Anwendungen aus der/den Einsatzpipeline(s) 1410 (z.B. eine Rekonstruktionsanwendung, eine Segmentierungsanwendung usw.) mit individuellen 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.
  • In mindestens einem Ausführungsbeispiel kann jede Anwendung und/oder jeder Container (oder ein Image davon) individuell entwickelt, modifiziert und eingesetzt werden (z.B. kann ein erster Benutzer oder Entwickler eine erste Anwendung entwickeln, modifizieren und einsetzen, und ein zweiter Benutzer oder Entwickler kann eine zweite Anwendung getrennt von einem ersten Benutzer oder Entwickler entwickeln, modifizieren und einsetzen), was die Konzentration auf und die Aufmerksamkeit für eine Aufgabe einer einzelnen Anwendung und/oder eines einzelnen Containers ermöglichen kann, ohne durch Aufgaben einer anderen Anwendung oder eines anderen Containers behindert zu werden. In mindestens einem Ausführungsbeispiel kann die Kommunikation und Zusammenarbeit zwischen verschiedenen Containern oder Anwendungen durch den Pipeline-Verwalter 1412 und das System zur Anwendungsorchestrierung 1428 unterstützt werden. Solange eine erwartete Eingabe und/oder Ausgabe jedes Containers oder jeder Anwendung durch ein System bekannt ist (z.B. basierend auf Konstrukten von Anwendungen oder Containern), kann in mindestens einem Ausführungsbeispiel das Anwendungsorchestrierungssystem 1428 und/oder der Pipeline-Verwalter 1412 die Kommunikation unter und zwischen den Anwendungen oder Containern sowie die gemeinsame Nutzung von Ressourcen unter und zwischen diesen erleichtern. Da in mindestens einem Ausführungsbeispiel eine oder mehrere Anwendungen oder Container in der/den Pipeline(s) 1410 gemeinsam genutzte Dienste und Ressourcen haben können, kann das Anwendungsorchestrierungssystem 1428 die gemeinsame Nutzung von Diensten oder Ressourcen zwischen verschiedenen Anwendungen oder Containern orchestrieren, ausgleichen und bestimmen. In mindestens einem Ausführungsbeispiel kann ein Planer verwendet werden, um die Ressourcenanforderungen von Anwendungen oder Containern, die aktuelle oder geplante Nutzung dieser Ressourcen und die Ressourcenverfügbarkeit zu verfolgen. In mindestens einem Ausführungsbeispiel kann ein Planer auf diese Weise den verschiedenen Anwendungen Ressourcen zuweisen und die Ressourcen unter Berücksichtigung der Anforderungen und der Verfügbarkeit eines Systems zwischen den Anwendungen und untereinander verteilen. In einigen Beispielen kann ein Planer (und/oder eine andere Komponente des Anwendungsorchestrierungssystems 1428) die Ressourcenverfügbarkeit und -verteilung basierend auf einem System auferlegten Einschränkungen (z.B. Benutzereinschränkungen) bestimmen, wie beispielsweise Dienstqualität (QoS), Dringlichkeit des Bedarfs an Datenausgaben (z.B. um zu bestimmen, ob eine Echtzeitverarbeitung oder eine verzögerte Verarbeitung ausgeführt werden soll), usw.
  • In mindestens einem Ausführungsbeispiel können die Dienste 1320, die von Anwendungen oder Containern im Einsatzsystem 1306 genutzt werden, Rechendienste 1416, KI-Dienste 1418, Visualisierungs-Dienste 1420 und/oder andere Diensttypen umfassen. In mindestens einem Ausführungsbeispiel können Anwendungen einen oder mehrere der Dienste 1320 aufrufen (z.B. ausführen), um Verarbeitungsvorgänge für eine Anwendung durchzuführen. In mindestens einem Ausführungsbeispiel können die Rechendienste 1416 von Anwendungen genutzt werden, um Supercomputing oder andere Aufgaben des Hochleistungsrechnens (HPC) durchzuführen. In mindestens einem Ausführungsbeispiel kann/können der/die Rechendienst(e) 1416 genutzt werden, um eine parallele Verarbeitung (z.B. unter Verwendung einer Parallel-Rechenplattform 1430) zur Verarbeitung von Daten durch eine oder mehrere Anwendungen und/oder eine oder mehrere Aufgaben einer einzelnen Anwendung im Wesentlichen gleichzeitig durchzuführen. In mindestens einem Ausführungsbeispiel kann die Plattform für paralleles Rechnen 1430 (z.B. CUDA von NVIDIA) allgemeines Rechnen auf GPUs (z.B. GPUs 1422) ermöglichen. In mindestens einem Ausführungsbeispiel kann eine Softwareschicht der Plattform für paralleles Rechnen 1430 den Zugriff auf virtuelle Befehlssätze und parallele Rechenelemente von GPUs für die Ausführung von Rechenkernen bereitstellen. In mindestens einem Ausführungsbeispiel kann die Plattform für paralleles Rechnen 1430 einen Speicher enthalten, und in einigen Ausführungsbeispielen kann ein Speicher gemeinsam zwischen mehreren Containern und/oder zwischen verschiedenen Verarbeitungsaufgaben innerhalb eines einzelnen Containers genutzt werden. In mindestens einem Ausführungsbeispiel können IPC-Aufrufe für mehrere Container und/oder für mehrere Prozesse innerhalb eines Containers generiert werden, um dieselben Daten aus einem gemeinsam genutzten Speichersegment der Parallel-Rechenplattform 1430 zu verwenden (z.B. wenn mehrere verschiedene Phasen einer Anwendung oder mehrere Anwendungen dieselben Informationen verarbeiten). In mindestens einem Ausführungsbeispiel können dieselben Daten am selben Ort eines Speichers für eine beliebige Anzahl von Verarbeitungsaufgaben verwendet werden (z.B. zur selben Zeit, zu verschiedenen Zeiten usw.), anstatt eine Kopie der Daten zu erstellen und die Daten an verschiedene Orte im Speicher zu verschieben (z.B. eine Lese-/Schreiboperation). In mindestens einem Ausführungsbeispiel können, wenn Daten verwendet werden, um neue Daten als Ergebnis der Verarbeitung zu generieren, diese Informationen über einen neuen Ort der Daten gespeichert und gemeinsam von verschiedenen Anwendungen genutzt werden. In mindestens einem Ausführungsbeispiel können der Ort von Daten und der Ort von aktualisierten oder geänderten Daten Teil einer Definition sein, wie eine Nutzlast innerhalb von Containern zu verstehen ist.
  • In mindestens einem Ausführungsbeispiel können KI-Dienste 1418 genutzt werden, um Inferenzdienste für die Ausführung von mit Anwendungen assoziierten maschinellen Lernmodellen durchzuführen (z.B. mit der Aufgabe, eine oder mehrere Verarbeitungsaufgaben einer Anwendung auszuführen). In mindestens einem Ausführungsbeispiel können die KI-Dienste 1418 das KI-System 1424 nutzen, um maschinelle Lernmodelle (z.B. neuronale Netzwerke wie CNNs) für Segmentierung, Rekonstruktion, Objekterkennung, Merkmalserkennung, Klassifizierung und/oder andere Inferenzaufgaben auszuführen. In mindestens einem Ausführungsbeispiel können die Anwendungen der Pipeline(s) 1410 eines oder mehrere der Ausgabemodelle 1316 des Trainingssystems 1304 und/oder andere Modelle von Anwendungen verwenden, um Inferenzierung auf Bilddaten durchzuführen. In mindestens einem Ausführungsbeispiel können zwei oder mehr Beispiele für die Inferenzierung unter Verwendung des Anwendungsorchestrierungssystems 1428 (z.B. eines Planers) verfügbar sein. In mindestens einem Ausführungsbeispiel kann eine erste Kategorie einen Pfad mit hoher Priorität/geringer Latenz umfassen, der höhere Service Level Agreements erreichen kann, beispielsweise für die Durchführung von Inferenzierungen bei dringenden Anfragen während eines Notfalls oder für einen Radiologen während der Diagnose. In mindestens einem Ausführungsbeispiel kann eine zweite Kategorie einen Pfad mit Standardpriorität umfassen, 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. In mindestens einem Ausführungsbeispiel kann das Anwendungsorchestrierungssystem 1428 Ressourcen (z.B. Dienste 1320 und/oder Hardware 1322) basierend auf Prioritätspfaden für verschiedene Inferenzaufgaben von KI-Diensten 1418 verteilen.
  • In mindestens einem Ausführungsbeispiel kann gemeinsam genutzter Speicher für KI-Dienste 1418 innerhalb des Systems 1400 bereitgestellt werden. In mindestens einem Ausführungsbeispiel kann der gemeinsam genutzte Speicher als Cache (oder ein anderes Gerät) fungieren und verwendet werden, um Inferenzierungsanfragen von Anwendungen zu verarbeiten. In mindestens einem Ausführungsbeispiel kann bei der Übermittlung einer Inferenzanforderung eine Anforderung von einem Satz 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. In mindestens einem Ausführungsbeispiel kann zur Bearbeitung einer Anfrage eine Anfrage in eine Datenbank eingegeben werden, ein maschinelles Lernmodell kann aus der Modellregistratur 1324 gefunden werden, wenn es sich nicht bereits in einem Cache befindet, ein Validierungsschritt kann sicherstellen, dass ein geeignetes maschinelles Lernmodell in einen Cache (z.B. einen gemeinsam genutzten Speicher) geladen wird, und/oder eine Kopie eines Modells kann in einem Cache gespeichert werden. In mindestens einem Ausführungsbeispiel kann ein Planer (z.B. der Pipeline-Verwalter 1412) verwendet werden, um eine Anwendung zu starten, auf die in einer Anfrage verwiesen wird, wenn eine Anwendung noch nicht läuft oder wenn nicht genügend Instanzen einer Anwendung vorhanden sind. In mindestens einem Ausführungsbeispiel 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. In mindestens einem Ausführungsbeispiel können in einem Pull-Modell, in dem die Inferenzserver geclustert sind, die Modelle zwischengespeichert werden, wenn ein Lastausgleich vorteilhaft ist. In mindestens einem Ausführungsbeispiel können Inferenzserver statisch in entsprechenden, verteilten Servern geladen werden.
  • In mindestens einem Ausführungsbeispiel kann die Inferenzierung unter Verwendung eines Inferenzservers durchgeführt werden, der in einem Container läuft. In mindestens einem Ausführungsbeispiel kann eine Instanz eines Inferenzservers mit einem Modell (und optional einer Vielzahl von Versionen eines Modells) assoziiert sein. In mindestens einem Ausführungsbeispiel kann eine neue Instanz geladen werden, wenn eine Instanz eines Inferenzservers nicht vorhanden ist, wenn eine Anforderung zur Durchführung von Inferenzierung auf einem Modell empfangen wird. In mindestens einem Ausführungsbeispiel kann beim Starten eines Inferenzservers ein Modell an einen Inferenzserver übergeben werden, sodass ein und derselbe Container verwendet werden kann, um verschiedene Modelle zu bedienen, solange der Inferenzserver als eine andere Instanz läuft.
  • In mindestens einem Ausführungsbeispiel kann während der Ausführung einer Anwendung eine Inferenzanforderung für eine gegebene Anwendung empfangen werden, und ein Container (z.B., der eine Instanz eines Inferenzservers beherbergt) kann geladen werden (falls nicht bereits geschehen), und eine Startprozedur kann aufgerufen werden. In mindestens einem Ausführungsbeispiel 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)). In mindestens einem Ausführungsbeispiel kann ein Container, sobald die Daten für die Inferenz vorbereitet sind, die Inferenzierung nach Bedarf an den Daten durchführen. In mindestens einem Ausführungsbeispiel kann dies einen einzigen Inferenzaufruf für ein Bild (z.B. ein Handröntgenbild) umfassen oder eine Inferenz für Hunderte von Bildern (z.B. ein Brust-CT) erfordern. In mindestens einem Ausführungsbeispiel kann eine Anwendung die Ergebnisse vor der Fertigstellung zusammenfassen, was ohne Einschränkung einen einzelnen Konfidenzwert, eine Segmentierung auf Pixelebene, eine Segmentierung auf Voxel-Ebene, das Generieren einer Visualisierung oder das Generieren von Text zur Zusammenfassung der Ergebnisse umfassen kann. In mindestens einem Ausführungsbeispiel können verschiedenen Modellen oder Anwendungen unterschiedliche Prioritäten zugewiesen werden. Zum Beispiel können einige Modelle eine Echtzeitpriorität (TAT < 1 min) haben, während andere eine niedrigere Priorität haben (z.B. TAT < 10 min). In mindestens einem Ausführungsbeispiel können die Modellausführungszeiten von der anfragenden Institution oder Einrichtung gemessen werden und können die Zeit für die Durchquerung des Netzwerks des Partners sowie die Ausführung auf einem Inferenzdienst umfassen.
  • In mindestens einem Ausführungsbeispiel 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 bereitgestellt werden. In mindestens einem Ausführungsbeispiel wird eine Anfrage über eine API für eine individuelle Anwendungs-/Mieter-ID-Kombination in eine Warteschlange gestellt, und ein SDK zieht eine Anfrage aus einer Warteschlange und gibt eine Anfrage an eine Anwendung weiter. In mindestens einem Ausführungsbeispiel kann der Name einer Warteschlange in einer Umgebung bereitgestellt werden, aus der ein SDK sie abruft. In mindestens einem Ausführungsbeispiel kann die asynchrone Kommunikation über eine Warteschlange nützlich sein, da sie es jeder Instanz einer Anwendung ermöglicht, Arbeit aufzunehmen, sobald sie verfügbar wird. Die Ergebnisse können über eine Warteschlange zurückübertragen werden, um sicherzustellen, dass keine Daten verloren gehen. In mindestens einem Ausführungsbeispiel können Warteschlangen auch die Möglichkeit bereitstellen, 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. In mindestens einem Ausführungsbeispiel kann eine Anwendung auf einer GPUbeschleunigten Instanz laufen, die in der Cloud 1426 generiert wird, und ein Inferenzdienst kann auf einer GPU inferenzieren.
  • In mindestens einem Ausführungsbeispiel können Visualisierungsdienste 1420 genutzt werden, um Visualisierungen zur Anzeige der Ausgaben von Anwendungen und/oder Einsatzpipeline(s) 1410 zu generieren. In mindestens einem Ausführungsbeispiel können GPUs 1422 von Visualisierungsdiensten 1420 genutzt werden, um Visualisierungen zu generieren. In mindestens einem Ausführungsbeispiel können Rendering-Effekte, beispielsweise Raytracing, von Visualisierungsdiensten 1420 implementiert werden, um qualitativ hochwertigere Visualisierungen zu generieren. In mindestens einem Ausführungsbeispiel können die Visualisierungen ohne Einschränkung 2D-Bildwiedergaben, 3D-Volumenwiedergaben, 3D-Volumenrekonstruktionen, 2D-tomografische Abschnitte, Virtual-Reality-Anzeigen, Augmented-Reality-Anzeigen usw. umfassen. In mindestens einem Ausführungsbeispiel 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 generieren. In mindestens einem Ausführungsbeispiel können die Visualisierungsdienste 1420 einen internen Visualisierer, Kinematiken und/oder andere Rendering- oder Bildverarbeitungsfähigkeiten oder - funktionalitäten (z.B. Raytracing, Rasterisierung, interne Optik usw.) umfassen.
  • In mindestens einem Ausführungsbeispiel kann die Hardware 1322 GPUs 1422, ein KI-System 1424, eine Cloud 1426 und/oder jede andere Hardware umfassen, die zum Ausführen des Trainingssystems 1304 und/oder des Einsatzsystems 1306 verwendet wird. In mindestens einem Ausführungsbeispiel können die GPUs 1422 (z.B. NVIDIAs TESLA und/oder QUADRO GPUs) eine beliebige Anzahl von GPUs umfassen, die für die Ausführung von Verarbeitungsaufgaben von Rechendiensten 1416, KI-Diensten 1418, Visualisierungsdiensten 1420, anderen Diensten und/oder beliebigen Merkmalen oder Funktionen der Software 1318 verwendet werden können. In Bezug auf die KI-Dienste 1418 können GPUs 1422 beispielsweise zur Vorverarbeitung von Bilddaten (oder anderen Datentypen, die von maschinellen Lernmodellen verwendet werden), zur Nachverarbeitung der Ausgaben von maschinellen Lernmodellen und/oder zur Durchführung von Inferenzen (z.B. zur Ausführung maschineller Lemmodelle) verwendet werden. In mindestens einem Ausführungsbeispiel können die Cloud 1426, das KI-System 1424 und/oder andere Komponenten des Systems 1400 die GPUs 1422 verwenden. In mindestens einem Ausführungsbeispiel kann die Cloud 1426 eine GPU-optimierte Plattform für Deep-Learning-Aufgaben enthalten. In zumindest einem Ausführungsbeispiel kann das KI-System 1424 GPUs verwenden, und die Cloud 1426 - oder zumindest ein Teil, 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 diesen genutzt werden.
  • In mindestens einem Ausführungsbeispiel kann das KI-System 1424 ein speziell entwickeltes Rechnersystem (z.B. einen Supercomputer oder einen HPC) umfassen, das für Inferencing, Deep Learning, maschinelles Lernen und/oder andere Aufgaben der künstlichen Intelligenz konfiguriert ist. In mindestens einem Ausführungsbeispiel kann das KI-System 1424 (z.B. der DGX von NVIDIA) GPU-optimierte Software (z.B. einen Software-Stack) enthalten, 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. In mindestens einem Ausführungsbeispiel können ein oder mehrere KI-Systeme 1424 in der Cloud 1426 (z.B. in einem Rechenzentrum) implementiert werden, um einige oder alle KI-basierten Verarbeitungsaufgaben des Systems 1400 auszuführen.
  • In mindestens einem Ausführungsbeispiel kann die Cloud 1426 eine GPU-beschleunigte Infrastruktur (z.B. NVIDIAs NGC) enthalten, die eine GPU-optimierte Plattform für die Ausführung von Verarbeitungsaufgaben des Systems 1400 bereitstellen kann. In mindestens einem Ausführungsbeispiel kann die Cloud 1426 ein oder mehrere KI-Systeme 1424 zur Ausführung einer oder mehrerer KI-basierter Aufgaben des Systems 1400 enthalten (z.B. als Hardwareabstraktions- und Skalierungsplattform). In mindestens einem Ausführungsbeispiel kann die Cloud 1426 mit einem Anwendungsorchestrierungssystem 1428 integriert werden, das mehrere GPUs nutzt, um eine nahtlose Skalierung und einen Lastausgleich zwischen und unter Anwendungen und Diensten 1320 zu ermöglichen. In mindestens einem Ausführungsbeispiel kann die Cloud 1426 damit beauftragt werden, zumindest einige der Dienste 1320 des Systems 1400 auszuführen, darunter Rechendienste 1416, KI-Dienste 1418 und/oder Visualisierungsdienste 1420, wie hier beschrieben. In mindestens einem Ausführungsbeispiel kann die Cloud 1426 kleine und große Batch-Inferenzierungen durchführen (z.B. die Ausführung von 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 bereitstellen (z.B. für RayTracing, 2D-Grafik, 3D-Grafik und/oder andere Rendering-Techniken, um qualitativ hochwertigere Kinofilme zu erzeugen), und/oder andere Funktionen für das System 1400 bereitstellen.
  • 15A stellt ein Datenflussdiagramm für einen Prozess 1500 dar, um ein maschinelles Lernmodell gemäß mindestens einem Ausführungsbeispiel zu trainieren, neu zu trainieren oder zu aktualisieren. In mindestens einem Ausführungsbeispiel kann der Prozess 1500 unter Verwendung des Systems 1400 aus 14 als nicht einschränkendes Beispiel ausgeführt werden. In mindestens einem Ausführungsbeispiel kann der Prozess 1500 die Dienste 1320 und/oder die Hardware 1322 des Systems 1400 nutzen, wie hierin beschrieben. In mindestens einem Ausführungsbeispiel können verfeinerte Modelle 1512, die durch den Prozess 1500 generiert werden, durch das Einsatzsystem 1306 für eine oder mehrere containerisierte Anwendungen in Einsatzpipelines 1410 ausgeführt werden.
  • In mindestens einem Ausführungsbeispiel kann das Modelltraining 1314 das erneute Trainieren oder Aktualisieren eines initialen Modells 1504 (z.B. eines vortrainierten Modells) unter Verwendung neuer Trainingsdaten (z.B. neuer Eingabedaten, wie z.B. des Kundendatensatzes 1506, und/oder neuer Grundwahrheitsdaten, die mit Eingabedaten assoziiert sind) umfassen. In mindestens einem Ausführungsbeispiel kann zum erneuten Trainieren oder Aktualisieren des initialen Modells 1504 die Ausgabe- oder Verlustschicht(en) des initialen Modells 1504 zurückgesetzt oder gelöscht und/oder durch eine aktualisierte oder neue Ausgabe- oder Verlustschicht(en) ersetzt werden. In mindestens einem Ausführungsbeispiel kann das initiale Modell 1504 über zuvor feinabgestimmte Parameter (z.B. Gewichte und/oder Verzerrungen) verfügen, die von früheren Trainingsvorgaben übrig geblieben sind, so dass das Trainieren oder Nachtrainieren 1314 nicht so lange dauert oder so viel Verarbeitung erfordert wie das Trainieren eines Modells von Grund auf In mindestens einem Ausführungsbeispiel können während des Modelltrainings 1314 durch Zurücksetzen oder Ersetzen der Ausgabe- oder Verlustschicht(en) des initialen Modells 1504 Parameter aktualisiert und für einen neuen Datensatz neu abgestimmt werden, basierend auf Verlustberechnungen, die mit der Genauigkeit der Ausgabe- oder Verlustschicht(en) bei der Generierung von Vorhersagen für einen neuen Kundendatensatz 1506 (z.B. Bilddaten 1308 aus 13) assoziiert sind.
  • In mindestens einem Ausführungsbeispiel können vortrainierte Modelle 1406 in einem Datenspeicher oder einer Registratur (z.B. Modellregistratur 1324 von 13) gespeichert werden. In mindestens einem Ausführungsbeispiel können die vorab trainierten Modelle 1406 zumindest teilweise in einer oder mehreren Anlagen trainiert worden sein, die nicht zu der Anlage gehören, die den Prozess 1500 ausführt. In mindestens einem Ausführungsbeispiel können zum Schutz der Privatsphäre und der Rechte von Patienten, Probanden oder Kunden verschiedener Anlagen vortrainierte Modelle 1406 vor Ort unter Verwendung von vor Ort generierten Kunden- oder Patientendaten trainiert worden sein. In mindestens einem Ausführungsbeispiel 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. In mindestens einem Ausführungsbeispiel, in dem ein vortrainiertes Modell 1406 unter Verwendung von Patientendaten von mehr als einer Anlage trainiert wird, kann das vortrainierte Modell 1406 individuell für jede Anlage trainiert worden sein, bevor es auf Patienten- oder Kundendaten einer anderen Anlage trainiert wird. In mindestens einem Ausführungsbeispiel, beispielsweise 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 Anlagen verwendet werden, um das vor-trainierte Modell 1406 vor Ort und/oder außerhalb der Anlage zu trainieren, beispielsweise in einem Rechenzentrum oder einer anderen Cloud-Recheninfrastruktur.
  • In mindestens einem Ausführungsbeispiel 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 zu verwenden sind. In mindestens einem Ausführungsbeispiel kann ein Benutzer kein Modell zur Verwendung haben, so dass ein Benutzer ein vortrainiertes Modell 1406 zur Verwendung mit einer Anwendung auswählen kann. In mindestens einem Ausführungsbeispiel ist das vortrainierte Modell 1406 möglicherweise nicht dafür optimiert, genaue Ergebnisse für den Kundendatensatz 1506 einer Anlage eines Benutzers zu generieren (z.B. basierend auf der Patientenvielfalt, der Demografie, den Arten der verwendeten medizinischen Bildgebungsgeräte usw.). In mindestens einem Ausführungsbeispiel kann vor der Bereitstellung des trainierten Modells 1406 in der Einsatzpipeline 1410 zur Verwendung mit einer oder mehreren Anwendungen das trainierte Modell 1406 für die Verwendung in einer entsprechenden Anlage aktualisiert, neu trainiert und/oder feinabgestimmt werden.
  • In mindestens einem Ausführungsbeispiel kann ein Benutzer ein vortrainiertes Modell 1406 auswählen, das aktualisiert, neu trainiert und/oder feinabgestimmt werden soll, und das vortrainierte Modell 1406 kann als initiales Modell 1504 für das Trainingssystem 1304 innerhalb des Prozesses 1500 bezeichnet werden. In mindestens einem Ausführungsbeispiel kann der Kundendatensatz 1506 (z.B. Bildgebungsdaten, Genomikdaten, Sequenzierungsdaten oder andere Datentypen, die von Geräten in einer Anlage erzeugt werden) verwendet werden, um das Modelltraining 1314 (das ohne Einschränkung Transferlernen beinhalten kann) auf dem initialen Modell 1504 durchzuführen, um ein verfeinertes Modell 1512 zu generieren. In mindestens einem Ausführungsbeispiel können Grundwahrheitsdaten, die dem Kundendatensatz 1506 entsprechen, vom Trainingssystem 1304 generiert werden. In mindestens einem Ausführungsbeispiel können die Grundwahrheitsdaten zumindest teilweise von Klinikern, Wissenschaftlern, Ärzten, Praktikern in einer Anlage generiert werden (z.B. als markierte Klinikdaten 1312 aus 13).
  • In mindestens einem Ausführungsbeispiel kann die KI-unterstützte Annotation 1310 in einigen Beispielen verwendet werden, um Grundwahrheitsdaten zu generieren. In mindestens einem Ausführungsbeispiel kann die KI-unterstützte Annotation 1310 (z.B. implementiert unter Verwendung eines KI-unterstützten Annotations-SDK) maschinelle Lernmodelle (z.B. neuronale Netzwerke) nutzen, um vorgeschlagene oder vorhergesagte Grundwahrheitsdaten für einen Kundendatensatz zu generieren. In mindestens einem Ausführungsbeispiel kann der Benutzer 1510 Annotationstools innerhalb einer Benutzeroberfläche (einer grafischen Benutzeroberfläche (GUI)) auf dem Rechengerät 1508 verwenden.
  • In mindestens einem Ausführungsbeispiel kann der Benutzer 1510 über das Rechengerät 1508 mit einer GUI interagieren, um (automatische) Annotationen zu bearbeiten oder fein abzustimmen. In mindestens einem Ausführungsbeispiel kann eine Polygonbearbeitungsfunktion verwendet werden, um Scheitelpunkte eines Polygons an genauere oder feiner abgestimmte Orte zu verschieben.
  • In mindestens einem Ausführungsbeispiel können, sobald der Kundendatensatz 1506 über assoziierte Grundwahrheitsdaten verfügt, Grundwahrheitsdaten (z.B. aus KI-gestützter Annotation, manueller Markierung usw.) während des Modelltrainings 1314 verwendet werden, um ein verfeinertes Modell 1512 zu generieren. In mindestens einem Ausführungsbeispiel kann der Kundendatensatz 1506 beliebig oft auf das initiale Modell 1504 angewendet werden, und die Grundwahrheitsdaten können zur Aktualisierung der Parameter des initialen Modells 1504 verwendet werden, bis ein akzeptables Genauigkeitsniveau für das verfeinerte Modell 1512 erreicht ist. In mindestens einem Ausführungsbeispiel kann das verfeinerte Modell 1512, sobald es generiert ist, innerhalb einer oder mehrerer Einsatzpipelines 1410 in einer Anlage zur Durchführung einer oder mehrerer Verarbeitungsaufgaben in Bezug auf medizinische Bildgebungsdaten eingesetzt werden.
  • In mindestens einem Ausführungsbeispiel kann das verfeinerte Modell 1512 zu den vortrainierten Modellen 1406 in der Modellregistratur 1324 hochgeladen werden, um von einer anderen Anlage ausgewählt zu werden. In mindestens einem Ausführungsbeispiel kann dieser Prozess in einer beliebigen Anzahl von Anlagen durchgeführt werden, sodass das verfeinerte Modell 1512 auf neuen Datensätzen beliebig oft weiter verfeinert werden kann, um ein universelleres Modell zu generieren.
  • 15B ist eine beispielhafte Darstellung einer Client-Server-Architektur 1532 zur Verbesserung von Annotationstools mit vorab trainierten Annotationsmodellen, gemäß mindestens einem Ausführungsbeispiel. In mindestens einem Ausführungsbeispiel können KI-unterstützte Annotations-Tools 1536 basierend auf einer Client-Server-Architektur 1532 instanziiert werden. In mindestens einem Ausführungsbeispiel können die Annotationstools 1536 in bildgebenden Anwendungen Radiologen beispielsweise bei der Identifizierung von Organen und Anomalien unterstützen. In mindestens einem Ausführungsbeispiel können Bildgebungsanwendungen Softwaretools enthalten, die dem Benutzer 1510 helfen, als nicht einschränkendes Beispiel einige extreme Punkte auf einem bestimmten Organ von Interesse in Rohbildern (engl. raw, dt. auch unverarbeitet) 1534 (z.B. in einem 3D-MRI- oder CT-Scan) zu identifizieren und automatisch kommentierte Ergebnisse für alle 2D-Abschnitte eines bestimmten Organs zu erhalten. In mindestens einem Ausführungsbeispiel können die Ergebnisse in einem Datenspeicher als Trainingsdaten 1538 gespeichert und als Grundwahrheit für das Training verwendet werden (zum Beispiel und ohne Einschränkung). In zumindest einem Ausführungsbeispiel kann ein Deep-Learning-Modell, wenn das Rechengerät 1508 Extrempunkte für die KI-gestützte Annotation 1310 sendet, diese Daten als Eingabe empfangen und Ergebnisse für die Inferenzierung eines segmentierten Organs oder einer Anomalie zurückgeben. In mindestens einem Ausführungsbeispiel können vorinstanzierte Annotationstools, beispielsweise das KI-unterstützte Annotationstool 1536B in 15B, durch API-Aufrufe (z.B. API-Aufruf 1544) an einen Server verbessert werden, beispielsweise einen Annotation-Assistenz-Server 1540, der eine Reihe von vortrainierten Modellen 1542 enthalten kann, die beispielsweise in einer Annotationsmodellregistratur gespeichert sind. In mindestens einem Ausführungsbeispiel kann eine Annotationsmodellregistratur vortrainierte Modelle 1542 (z.B. Modelle für maschinelles Lernen, wie Deep-Learning-Modelle) speichern, die trainiert wurden, um KI-gestützte Annotationen für ein bestimmtes Organ oder eine Anomalie durchzuführen. Diese Modelle können unter Verwendung von Trainingspipelines 1404 weiter aktualisiert werden. In mindestens einem Ausführungsbeispiel können die vorinstallierten Annotationstools im Laufe der Zeit verbessert werden, wenn neue markierte Klinikdaten 1312 hinzugefügt werden.
  • Derartige Komponenten können verwendet werden, um ein inverses Grafiknetzwerk zu trainieren, indem ein Satz von Bildern verwendet wird, der von einem Generator-Netzwerk generiert wird, wobei Aspekte von Objekten fixiert bleiben, während Pose- oder Ansichtsinformationen zwischen Bildern des Satzes variiert werden.
  • Andere Variationen sind im Sinne der vorliegenden Offenbarung. Während die offenbaren Techniken für verschiedene Modifikationen und alternative Konstruktionen anfällig sind, sind bestimmte Ausführungsbeispiele davon in den Zeichnungen dargestellt und wurden oben detailliert beschrieben. Es sollte jedoch verstanden werden, 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 in den beigefügten Ansprüchen definiert.
  • Die Verwendung der Begriffe „ein/eine/eines“ und „der/die/das“ und ähnlicher Bezeichnungen im Zusammenhang mit der Beschreibung offenbarer Ausführungsbeispiele (insbesondere im Zusammenhang mit den folgenden Ansprüchen) ist so auszulegen, dass sie sowohl die Einzahl als auch die Vielzahl umfasst, sofern hier nicht anders angegeben oder durch den Kontext eindeutig widerlegt, und nicht als eine Definition eines Begriffs. Die Begriffe „umfassend“, „mit“, „einschließlich“ und „enthaltend“ sind, sofern nicht anders angegeben, als offene Begriffe zu verstehen (im Sinne von „einschließlich, aber nicht beschränkt auf‟). Der Begriff „verbunden“ ist, wenn er unverändert bleibt und sich auf physikalische Verbindungen bezieht, als teilweise oder ganz in ihm enthalten, an ihm angebracht oder mit ihm verbunden zu verstehen, auch wenn etwas dazwischen liegt. Die Erwähnung von Wertebereichen soll lediglich als kurzes Verfahren dienen, um sich individuell auf jeden einzelnen Wert zu beziehen, der in den Bereich fällt, sofern hier nichts anderes 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 nicht anders vermerkt oder durch den Kontext widerlegt, als eine nicht leere Sammlung zu verstehen, die ein oder mehrere Elemente umfasst. Weiter ist, sofern nicht anders vermerkt oder durch den Kontext widerlegt, der Begriff „Teilmenge“ einer entsprechenden Menge nicht notwendigerweise als eine echte Teilmenge der entsprechenden Menge zu verstehen, sondern Teilmenge und entsprechende Menge können gleich sein.
  • Konjunktive Sprache, beispielsweise Sätze der Form „zumindest eines von A, B und C“ oder „zumindest eines von A, B und C“, wird, sofern nicht ausdrücklich anders angegeben oder anderweitig eindeutig durch den Kontext widersprochen, mit dem Kontext als allgemein verwendet verstanden, 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. In der Instanz, die ein Beispiel für eine Menge mit drei Mitgliedern darstellt, beziehen sich 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 Formulierungen sind also nicht generell so zu verstehen, dass bei bestimmten Ausführungsbeispielen jeweils mindestens eines von A, mindestens eines von B und mindestens eines von C vorhanden sein muss. Sofern nicht anders vermerkt oder durch den Kontext widerlegt, bezeichnet der Begriff „Vielzahl“ einen Zustand der Pluralität (z.B. „eine Vielzahl von Elementen“ bezeichnet mehrere Elemente). Eine Vielzahl besteht zumindest aus zwei Gegenständen, kann aber auch mehr sein, wenn dies entweder ausdrücklich oder aus dem Kontext hervorgeht. Ferner bedeutet „basierend auf‟, sofern nicht anders angegeben oder aus dem Kontext ersichtlich, „zumindest teilweise basierend auf und nicht „ausschließlich basierend auf“.
  • Die Vorgänge der hierin beschriebenen Prozesse können in jeder geeigneten Reihenfolge durchgeführt werden, es sei denn, es ist hierin anders angegeben oder aus dem Kontext eindeutig widersprochen. In zumindest einem Ausführungsbeispiel wird ein Prozess wie die hier beschriebenen Prozesse (oder Variationen und/oder Kombinationen davon) unter der Kontrolle eines oder mehrerer Rechnersysteme 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 werden, die gemeinsam auf einem oder mehreren Prozessoren, durch Hardware oder Kombinationen davon ausgeführt werden. In mindestens einem Ausführungsbeispiel ist der Code auf einem computerlesbaren Speichermedium gespeichert, z. B. in Form eines Rechnerprogramms, das eine Vielzahl von Anweisungen umfasst, die von einem oder mehreren Prozessoren ausgeführt werden können. In mindestens einem Ausführungsbeispiel handelt es sich bei einem computerlesbaren Speichermedium um ein nicht-transitorisches computerlesbares Speichermedium, das transitorische Signale (z.B. eine sich ausbreitende transiente elektrische oder elektromagnetische Übertragung) ausschließt, jedoch nicht-transitorische Datenspeicherschaltungen (z.B. Puffer, Cache und Warteschlangen) innerhalb von Transceivern für transitorische Signale enthält. In mindestens einem Ausführungsbeispiel ist Code (z.B. ausführbarer Code oder Quellcode) auf einem Satz von einem oder mehreren nichttransitorischen, 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 Rechnersystems ausgeführt werden (d.h. als Ergebnis der Ausführung), das Rechnersystem veranlassen, die hierin beschriebenen Operationen durchzuführen. In mindestens einem Ausführungsbeispiel umfasst ein Satz nicht-transitorischer, computerlesbarer Speichermedien mehrere nicht-transitorische, computerlesbare Speichermedien, und einem oder mehreren der individuellen nicht-transitorischen Speichermedien mehrerer nicht-transitorischer, computerlesbarer Speichermedien fehlt der gesamte Code, während mehrere nicht-transitorische, computerlesbare Speichermedien gemeinsam den gesamten Code speichern. In mindestens einem Ausführungsbeispiel werden ausführbare Befehle so ausgeführt, dass verschiedene Befehle von verschiedenen Prozessoren ausgeführt werden - beispielsweise speichert ein nicht transitorisches computerlesbares Speichermedium Befehle und eine zentrale Verarbeitungseinheit („CPU“) führt einige der Befehle aus, während eine Grafikverarbeitungseinheit („GPU“) andere Befehle ausführt. In mindestens einem Ausführungsbeispiel haben verschiedene Komponenten eines Rechnersystems separate Prozessoren, und verschiedene Prozessoren führen verschiedene Teilmengen von Befehlen aus.
  • Dementsprechend sind Rechnersysteme in mindestens einem Ausführungsbeispiel so konfiguriert, dass sie einen oder mehrere Dienste implementieren, die einzeln oder gemeinsam Operationen der hierin beschriebenen Prozesse ausführen, und solche Rechnersysteme sind mit geeigneter Hardware und/oder Software konfiguriert, die die Durchführung der Operationen ermöglichen. Ferner ist ein Rechnersystem, das zumindest ein Ausführungsbeispiel der vorliegenden Offenbarung implementiert, ein einzelnes Gerät, und in einer weiteren Ausführungsform ist es ein verteiltes Rechnersystem, das mehrere Geräte umfasst, die unterschiedlich arbeiten, so dass das verteilte Rechnersystem die hierin beschriebenen Operationen durchführt und so, dass ein einzelnes Gerät nicht alle Operationen durchfiihrt.
  • Die Verwendung aller hier bereitgestellten Ausführungsbeispiele oder beispielhaften Formulierungen (z.B. „wie“) dient lediglich der besseren Veranschaulichung von Ausführungsbeispielen der Offenbarung und stellt keine Einschränkung des Umfangs der Offenbarung dar, sofern nichts anderes behauptet wird. Keine Formulierung in der Spezifikation sollte so ausgelegt werden, dass sie ein nicht beanspruchtes Element als wesentlich für die Praxis der Offenbarung bezeichnet.
  • Alle Referenzen, einschließlich Veröffentlichungen, Patentanmeldungen und Patente, die hier zitiert werden, werden hiermit durch Bezugnahme in demselben Ausmaß einbezogen, als ob jede Referenz individuell und ausdrücklich als durch Bezugnahme einbezogen angegeben wäre und hier in ihrer Gesamtheit wiedergegeben würde.
  • In der Beschreibung und den Ansprüchen können die Begriffe „gekoppelt“ und „verbunden“ sowie deren Ableitungen verwendet werden. Es sollte verstanden werden, 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 physischen oder elektrischen Kontakt miteinander stehen. „Gekoppelt“ kann auch bedeuten, dass zwei oder mehr Elemente nicht in direktem Kontakt miteinander stehen, aber dennoch zusammenarbeiten oder miteinander interagieren.
  • Sofern nicht ausdrücklich etwas anderes angegeben ist, beziehen sich Begriffe wie „Verarbeitung“, „Rechnen“, „Berechnen“, „Bestimmen“ oder dergleichen in der gesamten Spezifikation auf Aktionen und/oder Prozesse eines Rechners oder Rechensystems oder eines ähnlichen elektronischen Rechengeräts, die Daten, die als physikalische, beispielsweise elektronische, Anzahlen in den Registern und/oder Speichern des Rechnersystems repräsentiert werden, manipulieren und/oder in andere Daten umwandeln, die in ähnlicher Weise als physikalische Anzahlen in den Speichern, Registern oder anderen derartigen Informationsspeicher-, Übertragungs- oder Anzeigegeräten des Rechnersystems repräsentiert werden.
  • In ähnlicher Weise kann sich der Begriff „Prozessor“ auf ein Gerät oder einen Teil eines Geräts beziehen, das elektronische Daten aus Registern und/oder Speichern verarbeitet und diese elektronischen Daten in andere elektronische Daten umwandelt, die in Registern und/oder Speichern gespeichert werden können. Als nicht einschränkende Beispiele kann der „Prozessor“ eine CPU oder eine GPU sein. Eine „Rechnerplattform“ kann einen oder mehrere Prozessoren umfassen. Der hier verwendete Begriff „Software“-Prozesse kann beispielsweise Software- und/oder Hardware-Entitäten umfassen, die im Laufe der Zeit Arbeit verrichten, beispielsweise Aufgaben, 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, insofern als ein System ein oder mehrere Verfahren umfassen kann und Verfahren als System betrachtet werden können.
  • Im vorliegenden Dokument kann auf das Gewinnen, Erfassen, Empfangen oder Eingeben von analogen oder digitalen Daten in ein Teilsystem, ein Rechnersystem oder eine computerimplementierte Maschine Bezug genommen werden. Das Beschaffen, Erfassen, Empfangen oder Eingeben von analogen und digitalen Daten kann auf verschiedene Weise erfolgen, beispielsweise durch Empfangen 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 erfolgen. In einer anderen Implementierung kann der Prozess der Beschaffung, des Erwerbs, des Empfangs oder der Eingabe analoger oder digitaler Daten durch die Übertragung von Daten über ein Netzwerk von der bereitstellenden Einheit zur erwerbenden Einheit erfolgen. Es kann auch auf das Bereitstellen, Ausgeben, Übertragen, Senden oder Präsentieren analoger oder digitaler Daten Bezug genommen werden. In verschiedenen Beispielen kann der Prozess des Bereitstellens, Ausgebens, Übertragens, Sendens oder Darstellens analoger oder digitaler Daten durch die Übertragung von Daten als Eingabe- oder Ausgabeparameter eines Funktionsaufrufs, eines Parameters einer Anwendungsprogrammierschnittstelle oder eines Interprozess-Kommunikationsmechanismus durchgeführt werden.
  • Obwohl die obige Diskussion Beispielimplementierungen der beschriebenen Techniken darlegt, können auch andere Architekturen verwendet werden, um die beschriebene Funktionalität zu implementieren, und sie sollen in den Anwendungsbereich dieser Offenbarung fallen. Darüber hinaus, obwohl spezifische Verteilungen von Verantwortlichkeiten oben zu Diskussionszwecken definiert sind, könnten verschiedene Funktionen und Verantwortlichkeiten auf unterschiedliche Weise verteilt und aufgeteilt werden, abhängig von den Umständen.
  • Obwohl der Gegenstand in einer Sprache beschrieben wurde, die sich auf strukturelle Merkmale und/oder methodische Handlungen bezieht, ist zu verstehen, dass der in den beigefügten Ansprüchen beanspruchte Gegenstand nicht notwendigerweise auf die beschriebenen spezifischen Merkmale oder Handlungen beschränkt ist. Vielmehr sind die spezifischen Merkmale und Handlungen als beispielhafte Formen der Implementierung der Ansprüche offenbart.
  • ZITATE ENTHALTEN IN DER BESCHREIBUNG
  • Diese Liste der vom Anmelder aufgeführten Dokumente wurde automatisiert erzeugt und ist ausschließlich zur besseren Information des Lesers aufgenommen. Die Liste ist nicht Bestandteil der deutschen Patent- bzw. Gebrauchsmusteranmeldung. Das DPMA übernimmt keinerlei Haftung für etwaige Fehler oder Auslassungen.
  • Zitierte Patentliteratur
    • US 17193405 [0001]
    • US 17019120 [0002]
    • US 17020649 [0002]

Claims (20)

  1. Computer-implementiertes Verfahren, umfassend: Bereitstellen eines zweidimensionalen Bildes eines Objekts als Eingabe für ein generatives Netzwerk; Verwenden des generativen Netzwerks zum Generieren eines Satzes von Ansichtsbildern des Objekts, die von verschiedenen Ansichten aus dargestellt sind; Bereitstellen, als Eingabe für ein inverses Grafiknetzwerk, des Satzes von Ansichtsbildern und Informationen für die verschiedenen Ansichten; Bestimmen, für individuelle Ansichtsbilder des Satzes unter Verwendung des inversen Grafiknetzwerks, eines Satzes dreidimensionaler Informationen; Rendern einer Repräsentation des Objekts für die individuellen Ansichtsbilder des Satzes unter Verwendung des Satzes von dreidimensionalen Informationen und der jeweiligen Ansichtsinformationen; Vergleichen der gerenderten Repräsentationen mit entsprechenden Daten, um zumindest einen Verlustwert zu bestimmen; und Anpassen eines oder mehrerer Netzwerkparameter für das inverse Grafiknetzwerk zumindest teilweise basierend auf dem mindestens einen Verlustwert.
  2. Computer-implementiertes Verfahren nach Anspruch 1, weiter umfassend: Bereitstellen zumindest einer Teilmenge der Repräsentationen des Objekts, die durch das inverse Grafiknetzwerk gerendert wurden, als Trainingsdaten, um das generative Netzwerk weiter zu trainieren.
  3. Computer-implementiertes Verfahren nach Anspruch 2, weiter umfassend: Trainieren des inversen Grafiknetzwerks und des generativen Netzwerks zusammen unter Verwendung einer gemeinsamen Verlustfunktion.
  4. Computer-implementiertes Verfahren nach Anspruch 1, wobei das generative Netzwerk ein Style Generative Adversarial Network ist, das es ermöglicht, nur kamerabildbezogene Merkmale einzustellen, um den Satz von Bildansichten zu generieren.
  5. Computer-implementiertes Verfahren nach Anspruch 1, weiter umfassend: Verwenden einer Selektionsmatrix, um eine Dimensionalität von Bildmerkmalen zu reduzieren, die in einem latenten Code enthalten sein sollen, der verwendet werden soll, um die Repräsentation des Objekts zu rendern.
  6. Computer-implementiertes Verfahren nach Anspruch 5, weiter umfassend: Rendern der Repräsentation des Objekts, zumindest teilweise basierend auf dem latenten Code und Verwenden eines differenzierbaren Renderers.
  7. Computer-implementiertes Verfahren nach Anspruch 5, wobei der latente Code Kameramerkmale für die entsprechende Ansicht enthält.
  8. Computer-implementiertes Verfahren nach Anspruch 1, wobei die dreidimensionale Information für das Objekt zumindest eine Form, eine Textur, eine Beleuchtung oder einen Hintergrund für das Objekt enthält.
  9. Computer-implementiertes Verfahren nach Anspruch 1, wobei die zweidimensionale Bildeingabe in das generative Netzwerk mit schwach genauen Kamerainformationen annotiert wird, die einer Teilmenge von Objektmerkmalen entsprechen.
  10. System, umfassend: zumindest einen Prozessor; und Speicher, der Anweisungen enthält, die, wenn sie von dem zumindest einen Prozessor ausgeführt werden, das System veranlassen, zum: Bereitstellen eines zweidimensionalen Bildes eines Objekts als Eingabe für ein generatives Netzwerk; Verwenden des generativen Netzwerks, um einen Satz von Bildern des Objekts zu generieren, die von verschiedenen Ansichten aus dargestellt sind; und Bereitstellen, als Eingabe für ein inverses Grafiknetzwerk, des Satzes von Ansichtsbildern und Informationen für die verschiedenen Ansichten; Bestimmen eines Satzes von dreidimensionalen Informationen für individuelle Ansichtsbilder des Satzes unter Verwendung des inversen Grafiknetzwerks; Rendern einer Repräsentation des Objekts für die individuellen Ansichtsbilder des Satzes unter Verwendung des Satzes von dreidimensionalen Informationen und der jeweiligen Ansichtsinformationen; Vergleichen der gerenderten Repräsentationen mit entsprechenden Daten, um zumindest einen Verlustwert zu bestimmen; und Anpassen eines oder mehrerer Netzwerkparameter für das inverse Grafiknetzwerk zumindest teilweise basierend auf dem mindestens einen Verlustwert.
  11. System nach Anspruch 10, wobei die Anweisungen, wenn sie ausgeführt werden, das System weiter veranlassen, zum: Bereitstellen zumindest einer Teilmenge der Repräsentationen des Objekts, die durch das inverse Grafiknetzwerk gerendert wurden, als Trainingsdaten, um das generative Netzwerk weiter zu trainieren.
  12. System nach Anspruch 11, wobei die Anweisungen, wenn sie ausgeführt werden, das System weiter veranlassen, zum: Trainieren des inversen Grafiknetzwerks und des generativen Netzwerks zusammen unter Verwendung einer gemeinsamen Verlustfunktion.
  13. System nach Anspruch 10, wobei es sich bei dem generativen Netzwerk um ein Style Generative Adversarial Network handelt, das es ermöglicht, dass nur auf die Kameraansicht bezogene Merkmale angepasst werden, um den Satz von Ansichtsbildern zu generieren.
  14. System nach Anspruch 10, wobei die Anweisungen, wenn sie ausgeführt werden, das System weiter veranlassen, zum: Verwenden einer Auswahlmatrix, um eine Dimensionalität von Bildmerkmalen zu reduzieren, die in einem latenten Code enthalten sein sollen, der verwendet werden soll, um die Repräsentation des Objekts zu rendern; und Rendern der Repräsentation des Objekts zumindest teilweise basierend auf dem latenten Code unter Verwendung eines differenzierbaren Renderers.
  15. System nach Anspruch 10, wobei das System zumindest eines der folgenden Elemente umfasst: ein System zum Durchführen von grafischen Rendering-Operationen; ein System zur Durchführung von Simulationsoperationen; ein System zur Durchführung von Simulationsoperationen, um autonome Maschinenanwendungen zu testen oder zu validieren; ein System zur Durchführung von Deep-Learning-Operationen; ein System, das unter Verwendung eines Edge-Geräts implementiert ist; ein System, das eine oder mehrere virtuelle Maschinen (VMs) enthält; ein System, das zumindest partiell in einem Rechenzentrum implementiert ist; oder ein System, das zumindest partiell unter Verwendung von Cloud-Rechenressourcen implementiert ist.
  16. Computer-implementiertes Verfahren, umfassend: Empfangen eines zweidimensionalen Bildes; und Generieren einer dreidimensionalen Repräsentation des zweidimensionalen Bildes unter Verwendung eines inversen Grafiknetzwerks, wobei das inverse Grafiknetzwerk zumindest teilweise trainiert wird durch: Generieren, Verwenden eines generativen Netzwerks und eines zweidimensionalen Eingabebildes eines Objekts, eines Satzes von Ansichtsbildern des Objekts, die von verschiedenen Ansichten aus dargestellt sind; Bestimmen eines Satzes von dreidimensionalen Informationen für individuelle Ansichtsbilder des Satzes unter Verwendung des inversen Grafiknetzwerks; Rendern einer Repräsentation des Objekts für die individuellen Ansichtsbilder des Satzes unter Verwendung des Satzes von dreidimensionalen Informationen und Informationen für die jeweilige Ansicht; Vergleichen der gerenderten Repräsentationen mit entsprechenden Repräsentationen, um zumindest einen Verlustwert zu bestimmen; und Anpassen eines oder mehrerer Netzwerkparameter für das inverse Grafiknetzwerk zumindest teilweise basierend auf dem mindestens einen Verlustwert.
  17. Computer-implementiertes Verfahren nach Anspruch 16, weiter umfassend: Bereitstellen zumindest einer Teilmenge der Repräsentationen des Objekts, die durch das inverse Grafiknetzwerk gerendert wurden, als Trainingsdaten, um das generative Netzwerk weiter zu trainieren.
  18. Computer-implementiertes Verfahren nach Anspruch 17, weiter umfassend: Trainieren des inversen Grafiknetzwerks und des generativen Netzwerks zusammen unter Verwendung einer gemeinsamen Verlustfunktion.
  19. Computer-implementiertes Verfahren nach Anspruch 16, wobei das generative Netzwerk ein Style Generative Adversarial Network ist, das es ermöglicht, nur die auf die Kameraansicht bezogenen Merkmale anzupassen, um den Satz von Ansichtsbildern zu generieren.
  20. Computer-implementiertes Verfahren nach Anspruch 16, bei dem das zweidimensionale Eingabebild mit schwach genauen Kamerainformationen annotiert wird, die einer Teilmenge von Objektmerkmalen entsprechen.
DE112021001481.1T 2020-03-06 2021-03-06 Neuronales rendern für inverse grafikgenerierung Pending DE112021001481T5 (de)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US202062986618P 2020-03-06 2020-03-06
US62/986,618 2020-03-06
US17/193,405 2021-03-05
US17/193,405 US11494976B2 (en) 2020-03-06 2021-03-05 Neural rendering for inverse graphics generation
PCT/US2021/021263 WO2021178936A1 (en) 2020-03-06 2021-03-06 Neural rendering for inverse graphics generation

Publications (1)

Publication Number Publication Date
DE112021001481T5 true DE112021001481T5 (de) 2023-01-12

Family

ID=77556487

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112021001481.1T Pending DE112021001481T5 (de) 2020-03-06 2021-03-06 Neuronales rendern für inverse grafikgenerierung

Country Status (5)

Country Link
US (2) US11494976B2 (de)
JP (1) JP2023515736A (de)
CN (1) CN115151915A (de)
DE (1) DE112021001481T5 (de)
WO (1) WO2021178936A1 (de)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11995854B2 (en) * 2018-12-19 2024-05-28 Nvidia Corporation Mesh reconstruction using data-driven priors
US11393158B2 (en) * 2020-04-02 2022-07-19 Adobe Inc. Utilizing voxel feature transformations for deep novel view synthesis
US20220129315A1 (en) * 2020-10-22 2022-04-28 Hewlett Packard Enterprise Development Lp Deep learning autotuning task optimization
US11663265B2 (en) * 2020-11-25 2023-05-30 Adobe Inc. Enhanced image search via controllable attributes
US11829726B2 (en) * 2021-01-25 2023-11-28 International Business Machines Corporation Dual learning bridge between text and knowledge graph
US20240062441A1 (en) * 2021-02-15 2024-02-22 Carnegie Mellon University System and method for photorealistic image synthesis using unsupervised semantic feature disentanglement
US11663798B2 (en) * 2021-10-13 2023-05-30 Mitsubishi Electric Research Laboratories, Inc. System and method for manipulating two-dimensional (2D) images of three-dimensional (3D) objects
DE102022200353A1 (de) 2022-01-14 2023-07-20 Robert Bosch Gesellschaft mit beschränkter Haftung Verfahren zum Erzeugen von Daten zum Trainieren eines auf künstlicher Intelligenz basierenden Objekterkennungsverfahrens
CN114897664B (zh) * 2022-05-19 2024-05-07 北京百度网讯科技有限公司 图模型部署方法及装置、gpu和存储介质
CN116091871B (zh) * 2023-03-07 2023-08-25 哈尔滨工业大学(深圳)(哈尔滨工业大学深圳科技创新研究院) 一种针对目标检测模型的物理对抗样本生成方法及装置
CN117495797B (zh) * 2023-10-30 2024-06-14 武汉大学 基于隐式三维表达引导的航空数据变化检测方法及系统

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10268195B2 (en) * 2017-01-06 2019-04-23 Qualcomm Incorporated Managing vehicle driving control entity transitions of an autonomous vehicle based on an evaluation of performance criteria
US11501152B2 (en) 2017-05-05 2022-11-15 Intel Corporation Efficient learning and using of topologies of neural networks in machine learning
US10565747B2 (en) * 2017-09-06 2020-02-18 Nvidia Corporation Differentiable rendering pipeline for inverse graphics
US11534136B2 (en) * 2018-02-26 2022-12-27 Siemens Medical Solutions Usa, Inc. Three-dimensional segmentation from two-dimensional intracardiac echocardiography imaging
US10956635B1 (en) * 2019-12-04 2021-03-23 David Byron Douglas Radiologist-assisted machine learning with interactive, volume subtending 3D cursor
US11238197B1 (en) * 2018-04-03 2022-02-01 David Byron Douglas Generating a 3D dataset containing a simulated surgical device
US20210248514A1 (en) * 2018-05-06 2021-08-12 Strong Force TX Portfolio 2018, LLC Artificial intelligence selection and configuration
JP7002404B2 (ja) * 2018-05-15 2022-01-20 株式会社日立製作所 データから潜在因子を発見するニューラルネットワーク
US11232255B2 (en) * 2018-06-13 2022-01-25 Adobe Inc. Generating digital annotations for evaluating and training automatic electronic document annotation models
US11164067B2 (en) * 2018-08-29 2021-11-02 Arizona Board Of Regents On Behalf Of Arizona State University Systems, methods, and apparatuses for implementing a multi-resolution neural network for use with imaging intensive applications including medical imaging
US20200125671A1 (en) * 2018-10-17 2020-04-23 International Business Machines Corporation Altering content based on machine-learned topics of interest
US10956671B2 (en) * 2018-11-30 2021-03-23 International Business Machines Corporation Supervised machine learning models of documents
US10489683B1 (en) * 2018-12-17 2019-11-26 Bodygram, Inc. Methods and systems for automatic generation of massive training data sets from 3D models for training deep learning networks
US20200250304A1 (en) * 2019-02-01 2020-08-06 Nec Laboratories America, Inc. Detecting adversarial examples
US11263384B2 (en) * 2019-03-15 2022-03-01 Ricoh Company, Ltd. Generating document edit requests for electronic documents managed by a third-party document management service using artificial intelligence
US20210142524A1 (en) * 2019-11-13 2021-05-13 Disney Enterprises, Inc. Image Compression Using Normalizing Flows
US11139072B2 (en) * 2019-12-04 2021-10-05 International Business Machines Corporation Three-dimensional medical image generation

Also Published As

Publication number Publication date
US11494976B2 (en) 2022-11-08
CN115151915A (zh) 2022-10-04
US20230134690A1 (en) 2023-05-04
US20210279952A1 (en) 2021-09-09
JP2023515736A (ja) 2023-04-14
WO2021178936A1 (en) 2021-09-10

Similar Documents

Publication Publication Date Title
DE112021001481T5 (de) Neuronales rendern für inverse grafikgenerierung
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
DE112021002965T5 (de) Generierung von szenengraphen für unmarkierte daten
DE102021125231A1 (de) Unüberwachte domainanpassung mit neuronalen netzen
DE112020002425T5 (de) Bewegungsvorhersage unter verwendung eines oder mehrerer neuronaler netzwerke
DE102022101664A1 (de) Techniken des maschinellen lernens zur verbesserung von anwendungen für videokonferenzen
DE112021002772T5 (de) Bilderzeugung unter verwendung eines oder mehrerer neuronaler netzwerke
DE102021131289A1 (de) Echtzeit-rendering mit impliziten formen
DE102022112157A1 (de) Echtzeit-verbesserung für streaming-inhalt
DE102023113190A1 (de) Identifizieren von Applikationspuffern zum Nachbearbeiten und Wiederverwenden in sekundären Applikationen
DE102022128165A1 (de) Datenpfadschaltungsentwurf unter verwendung von reinforcement learning
DE102021114849A1 (de) Umgebungserzeugung unter verwendung eines oder mehrerer neuronaler netzwerke
DE102023101265A1 (de) Objekterfassung bei Bildstromverarbeitung unter Verwendung von optischem Fluss mit dynamischen Regionen von Interesse
DE102021132529A1 (de) Adaptive zeitliche bildfilterung zum rendern einer realistischen beleuchtung
DE102023125188A1 (de) Überblenden von videorahmen
DE102023125014A1 (de) Anwendungsprogrammierschnittstelle zum ausführen der rahmeninterpolation
DE102023124263A1 (de) Techniken zur Videoerzeugung
DE102023116064A1 (de) Bildbeleuchtung auf der basis neuronaler netzwerke
DE102023103679A1 (de) Texturübertragung und -synthese unter verwendung ausgerichteter karten in bildgenerierungssystemen und -anwendungen
DE102023112256A1 (de) Neuronale Netze zur Anzeige von Datenabhängigkeiten
DE102023135603A1 (de) Verwenden stabiler diffusion zum erzeugen nahtloser inhaltskachelsätze in systemen und anwendungen zum erzeugen von inhalten
DE102023135141A1 (de) Auswählen repräsentativer bildansichten für 3d-objektmodelle in systemen und anwendungen zur erstellung von synthetischem content
DE102023134432A1 (de) Effizientes frequenzbasiertes audio-resampling zur verwendung neuronaler netzwerke

Legal Events

Date Code Title Description
R012 Request for examination validly filed