DE102018126670A1 - Fortschreitende Modifizierung von generativen adversativen neuronalen Netzen - Google Patents

Fortschreitende Modifizierung von generativen adversativen neuronalen Netzen Download PDF

Info

Publication number
DE102018126670A1
DE102018126670A1 DE102018126670.7A DE102018126670A DE102018126670A1 DE 102018126670 A1 DE102018126670 A1 DE 102018126670A1 DE 102018126670 A DE102018126670 A DE 102018126670A DE 102018126670 A1 DE102018126670 A1 DE 102018126670A1
Authority
DE
Germany
Prior art keywords
gan
training
data
topology
modified
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
DE102018126670.7A
Other languages
English (en)
Inventor
Tero Tapani KARRAS
Timo Oskari Aila
Samuli Matias Laine
Jaakko T. Lehtinen
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 DE102018126670A1 publication Critical patent/DE102018126670A1/de
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural 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
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • G06N3/082Learning methods modifying the architecture, e.g. adding, deleting or silencing nodes or connections
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/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/04Architecture, e.g. interconnection topology
    • G06N3/0475Generative networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • G06N3/084Backpropagation, e.g. using gradient descent
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V10/00Arrangements for image or video recognition or understanding
    • G06V10/70Arrangements for image or video recognition or understanding using pattern recognition or machine learning
    • G06V10/82Arrangements for image or video recognition or understanding using pattern recognition or machine learning using neural networks

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Evolutionary Computation (AREA)
  • Health & Medical Sciences (AREA)
  • Software Systems (AREA)
  • Artificial Intelligence (AREA)
  • General Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • General Health & Medical Sciences (AREA)
  • Biomedical Technology (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Molecular Biology (AREA)
  • Computational Linguistics (AREA)
  • General Engineering & Computer Science (AREA)
  • Biophysics (AREA)
  • Mathematical Physics (AREA)
  • Data Mining & Analysis (AREA)
  • Probability & Statistics with Applications (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Databases & Information Systems (AREA)
  • Medical Informatics (AREA)
  • Multimedia (AREA)
  • Image Analysis (AREA)

Abstract

Ein generatives adversatives neuronales Netz (GAN) lernt eine bestimmte Aufgabe, indem ihm viele Beispiele gezeigt werden. In einem Szenario kann ein GAN darauf trainiert werden, neue Bilder zu generieren, die bestimmte Objekte wie z. B. menschliche Gesichter, Fahrräder usw. enthalten. Anstatt ein komplexes GAN mit einer vorgegebenen Topologie von Merkmalen und Verbindungen zwischen den Merkmalen zu trainieren, um die Aufgabe zu lernen, wird die Topologie des GAN modifiziert, wenn das GAN für die Aufgabe trainiert wird. Die Topologie des GAN kann zu Beginn einfach sein und wird komplexer, wenn das GAN während des Trainings lernt, und entwickelt sich schließlich so, dass sie zu der vorgegebenen Topologie des komplexen GAN passt. Zu Beginn lernt das GAN große Details für die Aufgabe (Fahrräder haben zwei Räder) und lernt später, wenn das GAN komplexer wird, kleinere Details (die Räder haben Speichen).

Description

  • Gebiet der Erfindung
  • Die vorliegende Erfindung bezieht sich auf generative adversative neuronale Netze (Generative Adversarial Neural Networks; GANs) und insbesondere auf das Modifizieren einer Topologie eines GAN während des Trainings.
  • Hintergrund
  • Generative adversative neuronale Netze (GANs) können zur Erzeugung von neuen Ausgabedaten verwendet werden, nachdem das GAN für eine bestimmte Aufgabe trainiert worden ist. Zum Beispiel kann ein GAN drauf trainiert werden, neue Bilder zu generieren, nachdem es unter Verwendung einer hochdimensionalen Verteilung von Beispielbildern trainiert worden ist. In letzter Zeit finden generative Verfahren breite Anwendung, zum Beispiel bei Sprachsynthese, Bild-zu-Bild-Übersetzung und Bild-Inpainting. Jedoch gibt es gravierende praktische Probleme beim erfolgreichen Training von GANs. Das Training ist oft instabil, synthetisierte Bilder sind tendenziell unrealistisch, und die Variabilität der Ausgaben kann sich während des Trainings plötzlich verschlechtern, ein Phänomen, das als Modus-Kollaps bekannt ist.
  • Herkömmliche Techniken zum Trainieren von generativen Modellen haben jeweils erhebliche Stärken und Schwächen. Autoregressive Modelle erzeugen scharfe Bilder, sind aber langsam auszuwerten und haben keine latente Darstellung, da autoregressive Modelle die bedingte Verteilung über Pixel direkt modellieren, was ihre Anwendbarkeit potentiell einschränkt. Variations-Autoencoder (VAEs) sind leicht zu trainieren, erzeugen aber aufgrund von Beschränkungen im Modell tendenziell unscharfe Ergebnisse. Herkömmliche GANs erzeugen scharfe Bilder, wenn auch nur in ziemlich kleinen Auflösungen und mit etwas begrenzter Variation, und das Training ist trotz jüngster Fortschritte weiterhin instabil. Hybrid-Verfahren kombinieren verschiedene Stärken der autoregressiven Modelle, VAEs und GANs, liegen aber in der Bildqualität hinter GANs zurück.
  • Typischerweise besteht ein GAN aus zwei neuronalen Netzen: einem Generator und einem Diskriminator (auch bekannt als Kritiker). Der Generator erzeugt aus einem latenten Code ein Sample, z. B. ein Bild, und die Verteilung der vom Generator erzeugten Bilder sollte idealerweise nicht von der Verteilung der zum Trainieren des GAN verwendeten Bilder unterscheidbar sein. Da keine Funktion zur Verfügung steht, um zu bestätigen, dass die Verteilungen übereinstimmen, wird der Diskriminator darauf trainiert, diese Bewertung durchzuführen. Der Diskriminator ist differenzierbar, und während des Trainings werden Gradienten berechnet, um den Generator dahin zu lenken, Ausgaben zu erzeugen, die den Trainings-Bildern ähnlicher sind. Typischerweise implementiert der Diskriminator eine adaptive Verlustfunktion, und der Diskriminator wird ausrangiert, nachdem der Generator trainiert worden ist.
  • Wenn die Unterschiede zwischen Bildern in der Trainings-Verteilung und der generierten Verteilung gemessen werden, können die Gradienten in mehr oder weniger zufällige Richtungen zeigen, wenn die Verteilungen keine wesentliche Überlappung aufweisen, d. h., die erzeugten Bilder sind zu leicht von den Trainings-Bildern zu unterscheiden. Wenn sich die Auflösung der generierten Bilder verbessert, kann das Trainieren des Generators schwieriger werden, da eine höhere Auflösung es dem Diskriminator leichter macht, die generierten Bilder von den Trainings-Bildern zu unterscheiden, wodurch die berechneten Gradienten drastisch verstärkt werden und Konvergenz des Generators verhindert wird. Es besteht die Notwendigkeit, diese Fragen und/oder andere Fragen im Zusammenhang mit dem Stand der Technik zu behandeln.
  • Kurzdarstellung
  • Ein GAN lernt eine bestimmte Aufgabe, indem ihm viele Beispiele gezeigt werden. In einem Szenario kann ein GAN darauf trainiert werden, neue Bilder zu generieren, die bestimmte Objekte wie z. B. menschliche Gesichter, Fahrräder usw. enthalten. Anstatt ein komplexes GAN mit einer vorgegebenen Topologie von Merkmalen und Verbindungen zwischen den Merkmalen zu trainieren, um die Aufgabe zu lernen, wird die Topologie des GAN modifiziert, wenn das GAN für die Aufgabe trainiert wird. Die Topologie des GAN kann zu Beginn einfach sein und wird komplexer, wenn das GAN während des Trainings lernt, und entwickelt sich schließlich so, dass sie zu der vorgegebenen Topologie des komplexen GAN passt. Zu Beginn lernt das GAN große Details für die Aufgabe (Fahrräder haben zwei Räder) und lernt später, wenn das GAN komplexer wird, kleinere Details (die Räder haben Speichen).
  • Es werden ein Verfahren, ein computerlesbares Medium und ein System offenbart, um die Topologie eines GAN während des Trainings fortschreitend zu modifizieren. Das GAN umfasst ein neuronales Generator-Netz, das mit einem neuronalen Diskriminator-Netz gekoppelt ist. Das GAN wird für eine erste Zeitdauer trainiert, wobei die Topologie des GAN Merkmale und Verbindungen zwischen den Merkmalen innerhalb des neuronalen Generator-Netzes und innerhalb des neuronalen Diskriminator-Netzes umfasst. Die Topologie des GAN wird modifiziert, um ein modifiziertes GAN zu erzeugen, und das modifizierte GAN wird dann für eine zweite Zeitdauer trainiert.
  • Figurenliste
    • 1A veranschaulicht ein Blockdiagramm eines GAN-Systems gemäß einer Ausführungsform.
    • 1B veranschaulicht ein konzeptionelles Diagramm von GAN-Topologie-Modifizierungen während des Trainings gemäß einer Ausführungsform.
    • 1C veranschaulicht ein Flussdiagramm eines Verfahrens zum Modifizieren der Topologie des GAN während des Trainings gemäß einer Ausführungsform.
    • 2A veranschaulicht ein Blockdiagramm eines anderen GAN-Systems gemäß einer Ausführungsform.
    • 2B veranschaulicht eine Technik, die sanftes Modifizieren der GAN-Topologie ermöglicht, gemäß einer Ausführungsform.
    • 2C veranschaulicht ein Flussdiagramm eines Verfahrens für sanften Übergang zwischen GAN-Topologien gemäß einer Ausführungsform.
    • 2D veranschaulicht Beispiel-Bilder, die von einem GAN erzeugt wurden, das darauf trainiert wurde, Bilder von Fahrrädern zu generieren, gemäß einer Ausführungsform.
    • 3 veranschaulicht eine Parallelverarbeitungseinheit gemäß einer Ausführungsform.
    • 4A veranschaulicht einen Allgemeinverarbeitungscluster innerhalb der Parallelverarbeitungseinheit von 3 gemäß einer Ausführungsform.
    • 4B veranschaulicht eine Speicherpartitionseinheit der Parallelverarbeitungseinheit von 3 gemäß einer Ausführungsform.
    • 5A veranschaulicht den Streaming-Multiprozessor von 4A gemäß einer Ausführungsform.
    • 5B ist ein konzeptionelles Diagramm eines unter Verwendung der PPU von 3 implementierten Verarbeitungssystems gemäß einer Ausführungsform.
    • 5C veranschaulicht ein Beispiel-System, in dem die verschiedene Architektur und/oder Funktionalität der verschiedenen vorherigen Ausführungsformen implementiert werden kann.
  • Detaillierte Beschreibung
  • Es wird eine Trainings-Technik für ein GAN offenbart, welche die Topologie des GAN modifiziert, indem sie Schichten hinzufügt oder entfernt (z. B. vollständig verbundene Schicht, Konvolutionsschicht (Convolutional Layer; Faltungsschicht), Hochtaktung (upsampling), Pooling, Normierung, Capsule und dergleichen), Merkmale hinzufügt oder entfernt (z. B. Merkmal-Karten, Neuronen, Aktivierungen und dergleichen), Verbindungen zwischen Merkmalen hinzufügt oder entfernt, und dergleichen. In einer Ausführungsform ändern Modifizierungen der GAN-Topologie eine Verarbeitungskapazität des neuronalen Generator-Netzes und/oder des neuronalen Diskriminator-Netzes, die das GAN umfassen. Zum Beispiel kann das Training mit der Verwendung von Bildern mit niedriger Auflösung beginnen, und wenn die Auflösung der Bilder fortschreitend vergrößert wird, können dem GAN Verarbeitungsschichten hinzugefügt werden. Eine derartige fortschreitende Technik ermöglicht es dem Training, zunächst eine Grobstruktur der Bildverteilung zu entdecken und dann die Aufmerksamkeit auf Details auf immer feinerer Skala zu lenken, anstatt alle Skalen gleichzeitig lernen zu müssen.
  • 1A veranschaulicht ein Blockdiagramm eines GAN 100 gemäß einer Ausführungsform. Das GAN 100 kann durch ein Programm, eine anwenderspezifische Schaltung oder durch eine Kombination aus einer anwenderspezifischen Schaltung und einem Programm implementiert werden. Zum Beispiel kann das GAN 100 unter Verwendung einer GPU (Grafikverarbeitungseinheit), einer CPU (Zentralverarbeitungseinheit) oder irgendeines Prozessors implementiert werden, der imstande ist, die hierin beschriebenen Operationen durchzuführen. Weiterhin erkennt der Fachmann, dass jedes System, das die Operationen des GAN 100 durchführt, im Schutzbereich und Geist der Ausführungsformen der vorliegenden Erfindung liegt.
  • Das GAN 100 enthält einen Generator (neuronales Netz) 110, einen Diskriminator (neuronales Netz) 115 und eine Trainings-Verlusteinheit 105. Die Topologien sowohl des Generators 110 als auch des Diskriminators 115 können während des Trainings geändert werden. Das GAN 100 kann in einer unüberwachten Einstellung oder in einer bedingten Einstellung arbeiten. Der Generator 110 empfängt Eingabedaten und erzeugt Ausgabedaten. In der unüberwachten Einstellung können die Eingabedaten ein latenter Code sein, d. h. ein zufälliger N-dimensionaler Vektor, der z. B. aus einer Gaußschen Verteilung geholt wird. Je nach der Aufgabe können die Ausgabedaten ein Bild, Audio, Video oder andere Datentypen sein (Konfigurationseinstellung). Der Diskriminator 115 ist eine adaptive Verlustfunktion, die während des Trainings des Generators 110 verwendet wird. Der Generator 110 und der Diskriminator 115 werden unter Verwendung eines Trainingsdatensatzes, der Beispiel-Ausgabedaten enthält, mit denen die vom Generator 110 erzeugten Ausgabedaten konsistent sein sollten, gleichzeitig trainiert. Der Generator 110 generiert als Antwort auf die Eingabedaten Ausgabedaten, und der Diskriminator 115 bestimmt, ob die Ausgabedaten den in den Trainingsdaten enthaltenen Beispiel-Ausgabedaten ähnlich erscheinen.
  • In der unüberwachten Einstellung gibt der Diskriminator 115 einen kontinuierlichen Wert aus, der angibt, wie genau die Ausgabedaten zu den Beispiel-Ausgabedaten passen. In einer Ausführungsform gibt der Diskriminator 115 zum Beispiel einen ersten Trainings-Stimulus (z. B. hohen Wert) aus, wenn die Ausgabedaten als zu den Beispiel-Ausgabedaten passend bestimmt werden, und einen zweiten Trainings-Stimulus (z. B. niedrigen Wert), wenn die Ausgabedaten als nicht zu den Beispiel-Ausgabedaten passend bestimmt werden. Die Trainings-Verlusteinheit 105 stimmt Parameter (Gewichte) des GAN 100 auf Basis der Ausgabe des Diskriminators 115 ab. Wenn der Generator 110 für eine bestimmte Aufgabe trainiert wird, wie z. B. das Erzeugen von Bildern von Fahrrädern, gibt der Diskriminator einen hohen Wert aus, wenn die Ausgabedaten ein Bild eines Fahrrades sind. Die vom Generator 110 generierten Ausgabedaten müssen nicht mit den Beispiel-Ausgabedaten für den Diskriminator 115 identisch sein, um zu bestimmen, dass die Ausgabedaten zu den Beispiel-Ausgabedaten passen. Im Kontext der folgenden Beschreibung bestimmt der Diskriminator 115, dass die Ausgabedaten zu den Beispiel-Ausgabedaten passen, wenn die Ausgabedaten irgendwelchen der Beispiel-Ausgabedaten ähnlich sind.
  • In der bedingten Einstellung können die Eingabedaten des Generators 110 andere (zusätzliche) Daten enthalten, wie z. B. ein Bild, ein Klassifizierungs-Etikett (z. B. „FAHRRAD“), Segmentierungskonturen (z. B. Umrisse von Objekten) und andere Arten von Daten (Verteilung, Audio, usw.). Die zusätzlichen Daten können zusätzlich zu dem zufälligen latenten Code angegeben werden, oder die zusätzlichen Daten können den zufälligen latenten Code vollständig ersetzen. Der Trainingsdatensatz kann Ein-/Ausgabedatenpaare enthalten, und die Aufgabe des Diskriminators 115 kann darin bestehen, auf Basis der Beispiel-Ein-/Ausgabepaare, die der Diskriminator 115 in den Trainingsdaten gesehen hat, zu bestimmen, ob die Ausgabedaten des Generators 110 mit der Eingabe konsistent zu sein scheinen.
  • Es werden nun weitere veranschaulichende Informationen zu verschiedenen wahlweisen Architekturen und Merkmalen gegeben, mit denen das vorgenannte Gerüst nach den Wünschen des Benutzers implementiert werden kann. Es sei ausdrücklich darauf hingewiesen, dass die folgenden Informationen zur Veranschaulichung gegeben werden und nicht als in irgendeiner Weise einschränkend auszulegen sind. Irgendeines der folgenden Merkmale kann wahlweise mit oder ohne den Ausschluss von anderen beschriebenen Merkmalen eingebaut werden.
  • 1B veranschaulicht ein konzeptionelles Diagramm von Modifizierungen der Topologie des GAN 100 während des Trainings gemäß einer Ausführungsform. Das Training des GAN 100 beginnt oben in 1B und geht bis zum unteren Ende in 1B, wenn die Topologie des GAN 100 modifiziert wird. Während des Trainings wird die Topologie des GAN 100 modifiziert, um Schichten hinzuzufügen oder zu entfernen, Merkmale hinzuzufügen oder zu entfernen (z. B. Merkmal-Karten oder Neuronen), Verbindungen zwischen Merkmalen hinzuzufügen oder zu entfernen, und dergleichen. Wie in 1B gezeigt, werden sowohl dem Generator 110 als auch dem Diskriminator 115 Schichten hinzugefügt.
  • In einer Ausführungsform können die Parameter des Generators 110-A und des Diskriminators 115-A jeweils mit Zufallswerten initialisiert werden. In einer Ausführungsform werden die Gewichte initialisiert, in dem sie aus einer Gaußschen Einheitsverteilung geholt werden, und zur Laufzeit werden die Gewichte gemäß w ^ i = w i c
    Figure DE102018126670A1_0001
    skaliert, worin wi die Gewichte sind und c eine Normierungskonstante pro Schicht ist. Der Vorteil des Skalierens der Gewichte zur Laufzeit statt während der Initialisierung ist etwas subtil und bezieht sich auf die Skaleninvarianz in gemeinsam verwendeten adaptiven stochastischen Gradientenabsenkungsverfahren. Die adaptiven stochastischen Gradientenabsenkurigsverfahren normieren eine Gradientenaktualisierung mittels einer geschätzten Standardabweichung und machen die Aktualisierung somit unabhängig von der Skala des Parameters. Wenn einige Parameter einen größeren Dynamikumfang haben als andere, dauert das Abstimmen dieser Parameter daher länger. Skalieren der Gewichte mittels der Normierungskonstanten pro Schicht stellt sicher, dass der Dynamikumfang und damit die Lerngeschwindigkeit für alle Gewichte gleich ist.
  • In einer Ausführungsform ändern Modifizierungen der Topologie des GAN 100 eine Verarbeitungskapazität des Generators 110 und/oder des Diskriminators 115. Zum Beispiel können eine oder mehrere Schichten hinzugefügt werden, wodurch die Topologie von GAN 100 modifiziert und die Verarbeitungskapazität vergrößert wird. Wenn das GAN 100 darauf trainiert wird, Bilder zu generieren, werden sowohl der Generator 110 als auch der Diskriminator 115 gleichzeitig und fortschreitend modifiziert, wobei das Training mit einfacheren Bildern mit niedriger Auflösung beginnt und neue Schichten hinzufügt, die Details mit höherer Auflösung einführen, wenn das Training fortschreitet. Insbesondere kann das GAN 100 anfänglich mit dem Generator 110-A und dem Diskriminator 115-A konfiguriert sein, die jeweils nur wenige Schichten 120 bzw. 122 umfassen, um Beispiel-Ausgabedaten mit einer räumlichen Auflösung von 4×4 Pixel zu verarbeiten und Ausgabedaten mit einer räumlichen Auflösung von 4×4 Pixel zu generieren. Eine im Generator 110-A enthaltene Konvertierungsschicht 230 projiziert Merkmalsvektoren auf das Ausgabedatenformat. Wenn zum Beispiel der Generator 110 für eine Bilderzeugungsaufgabe trainiert wird, projiziert die Konvertierungsschicht 230 Merkmalsvektoren auf RGB-Farben und erzeugt so ein Ausgabebild. Eine in dem Diskriminator 115-A enthaltene Konvertierungsschicht 235 projiziert das Ausgabedatenformat auf Merkmalsvektoren. Wenn der Diskriminator 115 für eine Bilderzeugungsaufgabe trainiert wird, projiziert die Konvertierungsschicht 235 die RGB-Farben auf Merkmalsvektoren. In einer Ausführungsform führen die Konvertierungsschicht 230 und die Konvertierungsschicht 235 1×1 Konvolutionen (Faltungen) durch.
  • In einer Ausführungsform enthalten die eine oder mehreren Schichten 120 zwei Konvolutionsschichten. Zum Beispiel kann einer 4×4-Konvolutionsschicht eine 3×3-Konvolutionsschicht folgen. Ähnlich können die eine oder mehreren Schichten 122 drei Konvolutionsschichten und eine Heruntertaktungs-Schicht (downsample layer) enthalten. Zum Beispiel können einer 1×1-Konvolutionsschicht zwei 3×3-Konvolutionsschichten folgen, wobei die eine oder mehreren Schichten 122 die vom Generator 110-A generierten Ausgabedaten und die Beispiel-Ausgabedaten verarbeiten. Die Auflösung der in den Trainingsdaten enthaltenen Beispiel-Ausgabedaten kann verringert werden, um zu der räumlichen Auflösung der generierten Ausgabebilder zu passen.
  • Mit fortschreitendem Training wird die Topologie des GAN 100 modifiziert, indem die Anzahl der Schichten vergrößert und die Auflösung der Beispielbilder vergrößert wird. Die Schichten 121 und 124 werden dem Generator 110-A bzw. dem Diskriminator 115-A hinzugefügt, was den Generator 110-B und den Diskriminator 115-B erzeugt und die räumliche Auflösung der generierten Ausgabebilder vergrößert. Zum Beispiel kann die räumliche Auflösung der Beispiel-Ausgabebilder und der generierten Ausgabebilder von einer räumlichen Auflösung von 4×4 Pixel auf eine räumliche Auflösung von 8×8 Pixel vergrößert werden. In einer Ausführungsform enthalten die Schichten 121 eine Hochtaktungs-Schicht (upsample layer) und zwei 3×3-Konvolutionsschichten. Ähnlich können die Schichten 124 zwei 3×3 Konvolutionsschichten und eine Heruntertaktungs-Schicht enthalten.
  • Mit weiter fortschreitendem Training wird die Topologie des GAN 100 durch Hinzufügen von immer mehr Schichten modifiziert, was schließlich die Schichten 123 und 126 in den Generator 110-B bzw. Diskriminator 115-B einschließt, den Generator 110-C und den Diskriminator 115-C erzeugt und die räumliche Auflösung der generierten Ausgabebilder vergrößert. Zum Beispiel kann die räumliche Auflösung der Beispiel-Ausgabebilder und der generierten Ausgabebilder auf eine räumliche Auflösung von 1024×1024 Pixel vergrößert werden. In einer Ausführungsform enthalten die Schichten 123 eine Hochtaktungs-Schicht, zwei 3×3 Konvolutionsschichten und eine 1×1 Konvolutionsschicht. Ähnlich können die Schichten 126 eine 3×3-Konvolutionsschicht, eine 4x4-Konvolutionsschicht und eine vollständig verbundene Schicht enthalten.
  • Die Parameter für alle vorhandenen Schichten können den ganzen Trainingsprozess hindurch aktualisiert werden, das heißt, es können ein oder mehrere Gewichte für irgendeine Schicht des Generators 110 und/oder des Diskriminators 115 während des Trainings aktualisiert werden. Das einem jeden Merkmal zugeordnete Gewicht steuert einen Beitrag oder Einfluss, den das Merkmal zu der bzw. auf die Ausgabe der Schicht hat. Anstatt direkt einen Wert jedes Gewichts einzustellen, werden die Gewichte während des Trainings gelernt. Die Trainings-Verlusteinheit 105 aktualisiert die Gewichtswerte des Diskriminators 115, um besser zwischen den vom Generator 110 erzeugten Ausgabedaten und den Beispiel-Ausgabedaten zu unterscheiden, und sie aktualisiert die Gewichtswerte des Generators 110, um Unterschiede zwischen den vom Generator 110 erzeugten Ausgabedaten und den Beispiel-Ausgabedaten zu reduzieren.
  • Das Training des GAN 100 mit niedrigeren Auflösungen zu beginnen, bietet Stabilität für jede Topologie des GAN 100, auch wenn die Anzahl der Schichten größer wird, um Ausgabebilder mit hoher Auflösung zu generieren. Fortschreitendes Modifizieren der Topologie während des Trainings reduziert auch die Trainingszeit im Vergleich zu Beginnen des Trainings mit sämtlichen Schichten. Wenn der Trainingsdatensatz Beispielbilder mit hoher Auflösung enthält, werden die im Trainingsdatensatz enthaltenen Beispielbilder modifiziert (heruntergetaktet), bevor sie in den Diskriminator 115 eingegeben werden, bis der Generator 110 die endgültigen Bilder mit hoher Auflösung generiert. Wichtig ist, dass das GAN 100 einen einzigen Generator 110 und einen einzigen Diskriminator 115 enthält. Die endgültige Topologie des GAN 100 kann vorgegeben werden, und eine oder mehrere Schichten werden, wenn das GAN 100 trainiert wird, für jede schrittweise Änderung der Auflösung der Ausgabedaten (Vergrößerung oder Verringerung) hinzugefügt oder entfernt
  • Obwohl das Training des GAN 100 im Kontext von Bilderzeugung beschrieben wird, können zusätzliche Eingabedaten (in der bedingten Einstellung) andere Daten als Bilddaten sein, und der Generator 110 und der Diskriminator 115 können darauf trainiert werden, dass der Generator 110 die anderen Daten unter Verwendung der fortschreitenden Modifizierungstechnik generiert. Je nach der Aufgabe können die Ausgabedaten ein Bild, Audio, Video oder andere Datentypen sein (Konfigurationseinstellung). Die Auflösung der Ausgabedaten oder die Verarbeitungskapazität des GAN 100 wird fortschreitend modifiziert, wenn die Topologie modifiziert wird.
  • 1C veranschaulicht ein Flussdiagramm eines Verfahrens 130 zum Modifizieren der Topologie des GAN während des Trainings gemäß einer Ausführungsform. Das Verfahren 130 kann durch ein Programm, eine anwenderspezifische Schaltung oder durch eine Kombination aus einer anwenderspezifischen Schaltung und einem Programm durchgeführt werden. Zum Beispiel kann das Verfahren 130 von einer GPU (Grafikverarbeitungseinheit), einer CPU (Zentralverarbeitungseinheit) oder irgendeinem Prozessor ausgeführt werden, der imstande ist, Operationen des neuronalen Generator-Netzes und des neuronalen Diskriminator-Netzes durchzuführen. Weiterhin erkennt der Fachmann, dass jedes System, welches das Verfahren 130 durchführt, im Schutzbereich und Geist der Ausführungsformen der vorliegenden Erfindung liegt.
  • Im Schritt 135 wird das GAN 100 für eine erste Zeitdauer trainiert, wobei eine Topologie des GAN 100 Merkmale und Verbindungen zwischen den Merkmalen innerhalb des Generators 110 und innerhalb des Diskriminators 115 umfasst. In einer Ausführungsform verarbeitet das GAN 100 dreidimensionale Bilddaten. In einer Ausführungsform verarbeitet das GAN 100 Audiodaten. In einer Ausführungsform enthalten die Trainingsdaten Beispiel-Ausgabedaten, und während des Trainings verarbeitet der Generator 110 Eingabedaten, um Ausgabedaten zu erzeugen. In einer Ausführungsform werden die Beispiel-Ausgabedaten modifiziert, um modifizierte Trainingsdaten für Eingabe in den Diskriminator 115 zusammen mit den Ausgabedaten zu erzeugen. Die Trainings-Verlusteinheit 105 empfängt die Ausgabe des Diskriminators 115 und erzeugt aktualisierte Parameter für das GAN 100.
  • In einer Ausführungsform umfasst das Modifizieren der Trainingsdaten das Vergrößern oder Verringern einer Dichte der Beispiel-Ausgabedaten. Zum Beispiel kann eine räumliche Auflösung der Beispiel-Ausgabedaten verringert werden. In einer Ausführungsform enthalten die Trainingsdaten zusätzliche (Beispiel)-Eingabedaten, wie z. B. ein Bild, ein Klassifizierungs-Etikett, Segmentierungskonturen und andere Datentypen (Verteilung, Audio, usw.), und die zusätzlichen Eingabedaten sind mit den Beispiel-Ausgabedaten gepaart.
  • Im Schritt 140 wird die Topologie des GAN 100 modifiziert, um ein modifiziertes GAN 100 zu erzeugen. In einer Ausführungsform ändert das Modifizieren der Topologie eine Verarbeitungskapazität des Generators 110 und/oder des Diskriminators 115. In einer Ausführungsform sind die Modifizierungen am GAN 100 und Beispiel-Trainings-Bilder aufgabenspezifisch. Zum Beispiel wird in einer Ausführungsform die Topologie modifiziert, indem in dem Generator 110 und/oder dem Diskriminator 115 eine oder mehrere Schichten (z. B. vollständig verbundene Schicht, Konvolutionsschicht, Hochtaktung, Pooling, Normierung, Capsule und dergleichen) hinzugefügt oder entfernt werden, Merkmale (z. B. Merkmal-Karten, Neuronen, Aktivierungen und dergleichen) hinzugefügt oder entfernt werden, Verbindungen zwischen Merkmalen hinzugefügt oder entfernt werden, und dergleichen. Für eine andere Aufgabe kann die Topologie modifiziert werden, indem in dem Generator 110 und/oder dem Diskriminator 115 eine oder mehrere Schichten entfernt werden, Merkmale hinzugefügt oder entfernt werden, Verbindungen zwischen Merkmalen hinzugefügt oder entfernt werden, und dergleichen.
  • Im Schritt 145 wird das modifizierte GAN 100 für eine zweite Zeitdauer trainiert. In einer Ausführungsform unterscheiden sich die modifizierten Trainingsdaten für die erste Zeitdauer von den modifizierten Trainingsdaten für die zweite Zeitdauer. In einer Ausführungsform werden die modifizierten Trainingsdaten für die erste Zeitdauer gemäß einer ersten Funktion modifiziert, und die modifizierten Trainingsdaten für die zweite Zeitdauer werden gemäß einer zweiten Funktion modifiziert, die von der ersten Funktion verschieden ist. In einer Ausführungsform sind die Trainingsdaten Bilddaten, und ein Betrag, um den die Pixelauflösung der Trainingsdaten für die erste Zeitdauer verringert wird, ist größer als für die zweite Zeitdauer.
  • 2A veranschaulicht ein Blockdiagramm eines anderen GAN 200 gemäß einer Ausführungsform. Zusätzlich zu dem Generator 110, dem Diskriminator 115 und der Trainings-Verlusteinheit 105 enthält das GAN 200 eine Beispiel-Ausgabedaten-Vorverarbeitungseinheit 215. Die Beispiel-Ausgabedaten-Vorverarbeitungseinheit 215 ist so konfiguriert, dass die in den Trainingsdaten enthaltenen Beispiel-Ausgabedaten gemäß der aktuellen Topologie des GAN 200 modifiziert werden. Die Dichte der Beispiel-Ausgabedaten kann vergrößert oder verringert werden, bevor sie in den Diskriminator 115 eingegeben werden. Wenn die Beispiel-Ausgabedaten Bilder sind, kann die räumliche Auflösung der Bilder durch Hochtakten bzw. Heruntertakten vergrößert oder verringert werden.
  • In einer Ausführungsform werden die Modifizierungen an der Topologie durch Interpolieren zwischen der alten und der neuen Topologie und den alten und den neuen Trainingsdaten sanft eingeführt. Der Generator 110 und der Diskriminator 115 können so konfiguriert sein, dass die Topologie sanft modifiziert wird, und die Beispiel-Ausgabedaten-Vorverarbeitungseinheit 215 kann so konfiguriert sein, dass sie sanft von ersten modifizierten Beispiel-Ausgabedaten zu zweiten modifizierten Beispiel-Ausgabedaten übergeht. Glätten der Übergänge reduziert plötzliche Schocks für das bereits gut trainierte GAN 200 mit einer ersten Topologie. Zum Beispiel kann die erste Topologie mit Schichten geringer Kapazität gut trainiert sein, so dass während des Trainings allmählich eine zweite Topologie mit zusätzlichen Schichten eingeführt wird, wenn die Trainingsdaten entsprechend allmählich für die zweite Topologie modifiziert werden.
  • 2B veranschaulicht die Technik zum sanften Modifizieren der Topologie des GAN 200 gemäß einer Ausführungsform. Der Generator 110-D und der Diskriminator 115-D sind unter Verwendung einer ersten Topologie konfiguriert. In einer Ausführungsform sind für die erste Topologie die modifizierten Beispiel-Ausgabedaten Bilddaten mit 16×16 Pixel Auflösung. Die modifizierten Beispiel-Ausgabedaten können von Beispiel-Ausgabedaten mit höherer Auflösung heruntergetaktet werden. Der Generator 110-D enthält eine oder mehrere Schichten 220 und die Konvertierungsschicht 230, die Merkmalsvektoren auf das Ausgabedatenformat projiziert. Der Diskriminator 115-D enthält die Konvertierungsschicht 235 und eine oder mehrere Schichten 222, wobei die Konvertierungsschicht 235 das Ausgabedatenformat auf Merkmalsvektoren projiziert.
  • Der Generator 110-D und der Diskriminator 115-D werden für eine erste Zeitdauer trainiert, bevor zu einer zweiten Topologie übergegangen wird. In einer Ausführungsform wird die Verarbeitungskapazität des Generators 110-D und des Diskriminators 115-D verdoppelt, wenn die erste Topologie zu der zweiten Topologie übergeht. Der Übergang ist in 2B als ein Generator 110-E und ein Diskriminator 115-E gezeigt, und die zweite Topologie ist in 2B als ein Generator 110-F und ein Diskriminator 115-F gezeigt. In einer Ausführungsform sind für die zweite Topologie die modifizierten Beispiel-Ausgabedaten Bilddaten mit 32×32 Pixel Auflösung. Von den ein oder mehreren Schichten 220 ausgegebene Zwischendaten werden in der Dichte verdoppelt (z. B. räumliche Auflösung) und in eine oder mehrere Schichten 221 und eine zweite Konvertierungsschicht 230B eingegeben. In einer Ausführungsform wird Filterung nächster Nachbarn verwendet, um die Zwischendaten zu verdoppeln.
  • Die von der einen oder den mehreren Schichten 221 generierten Ausgabedaten mit höherer Auflösung entsprechend der zweiten Topologie werden in die Konvertierungsschicht 230B eingegeben. Während des Übergangs von der ersten Topologie zu der zweiten Topologie werden die Schichten, die an den Daten mit höherer Dichte arbeiten (z. B. eine oder mehrere Schichten 221), wie ein Rest-Block behandelt und erzeugen Zwischendaten, die um ein Gewicht α skaliert werden, das während einer zweiten Zeitdauer linear von 0 auf 1 ansteigt. Wie in 2B gezeigt, werden die Zwischendaten mit höherer Dichte um α skaliert, und die Zwischendaten, die einfach in ihrer Dichte verdoppelt sind und der ersten Topologie entsprechen, werden um 1-α skaliert. Die skalierten Zwischendaten werden summiert und in den Diskriminator 115-E eingegeben.
  • Der Diskriminator 115-E enthält die Konvertierungsschicht 235 und eine zweite Konvertierungsschicht 235B, die jeweils vom Generator 110-E empfangene Daten auf Merkmalsvektoren projizieren. Vor Erreichen der zweiten Konvertierungsschicht 235B wird die Dichte der Daten (d. h. die räumliche Auflösung) entsprechend der ersten Topologie halbiert. In einer Ausführungsform wird Mittelwert-Pooling verwendet, um die Daten zu halbieren. Eine oder mehrere Schichten 223 verarbeiten die Merkmalsvektoren, um verarbeitete Daten entsprechend der zweiten Topologie zu erzeugen. Die von der einen oder den mehreren Schichten 223 erzeugten verarbeiteten Daten werden halbiert, um Ausgabedaten entsprechend der zweiten Topologie zu erzeugen. In einer Ausführungsform sind die verarbeiteten Daten Daten mit Dichte 32×32, was halbiert wird, um Daten mit Dichte 16×16 zu erzeugen.
  • Wie in 2B gezeigt, werden die der zweiten Topologie entsprechenden Ausgabedaten um α skaliert, und die Ausgabedaten, die einfach in ihrer Dichte halbiert sind und der ersten Topologie entsprechen, werden um 1-α skaliert. Die skalierten Ausgabedaten werden summiert und in die eine oder mehreren Schichten 222 eingegeben. In einer Ausführungsform sind für die zweite Topologie die modifizierten Beispiel-Ausgabedaten Bilddaten mit 16×16 Pixel Auflösung. Während des Topologie-Übergangs wird α von der Beispiel-Ausgabedaten-Vorverarbeitungseinheit 215 verwendet, um zwischen den Bilddaten mit 16x16 Pixel Auflösung und den Bilddaten mit 32×32 Pixel Auflösung entsprechend der zweiten Topologie zu interpolieren, ähnlich wie der Generator 110-E und der Diskriminator 115-E die zwei Topologien mischen. Wenn α den Wert 1 erreicht, ist der Übergang zu der in 2B gezeigten zweiten Topologie als der Generator 110-F und der Diskriminator 115-F abgeschlossen.
  • Obwohl die Topologie-Modifizierungen im Kontext der Bilderzeugung beschrieben werden, kann die Topologie-Modifizierung auch für andere Aufgaben durchgeführt werden. Zum Beispiel können die Modifizierungen, die Schichten entfernen, durchgeführt werden, indem die Reihenfolge der Modifizierungen in 2B umgekehrt wird und mit zunehmender Trainingszeit von unten nach oben fortgeschritten wird. In einer Ausführungsform enthalten die Trainingsdaten zusätzliche Eingabedaten, die mit den Beispiel-Ausgabedaten gepaart sind, wie z. B. ein Bild, ein Klassifizierungs-Etikett, Segmentierungskonturen und andere Datentypen (Verteilung, Audio, usw.), und die zusätzlichen Eingabedaten werden für sanfte Übergänge interpoliert, wenn die Topologien modifiziert werden.
  • 2C veranschaulicht ein Flussdiagramm eines Verfahrens 250 für sanften Übergang zwischen GAN-Topologien gemäß einer Ausführungsform. Das Verfahren 250 kann durch ein Programm, eine anwenderspezifische Schaltung oder durch eine Kombination aus einer anwenderspezifischen Schaltung und einem Programm durchgeführt werden. Zum Beispiel kann das Verfahren 250 von einer GPU (Grafikverarbeitungseinheit), einer CPU (Zentralverarbeitungseinheit) oder irgendeinem Prozessor ausgeführt werden, der in der Lage ist, Operationen des neuronalen Generator-Netzes und des neuronalen Diskriminator-Netzes durchzuführen. Weiterhin erkennt der Fachmann, dass jedes System, welches das Verfahren 250 durchführt, im Schutzbereich und Geist der Ausführungsformen der vorliegenden Erfindung liegt.
  • Im Schritt 135 wird das GAN 100 für eine erste Zeitdauer unter Verwendung einer ersten Topologie trainiert, die den Generator 110-D und den Diskriminator 115-D umfasst. Im Schritt 255 wird die Topologie des GAN 100 modifiziert, um ein modifiziertes GAN 100 zu erzeugen, das den Generator 110-E und den Diskriminator 115-E umfasst. Im Schritt 260 werden die Trainingsdaten so modifiziert, dass sie einer Ausgabedatendichte der zweiten Topologie entsprechen. Zum Beispiel können die Trainingsdaten heruntergetaktet werden. Im Schritt 265 wird das GAN 100 beim Trainieren des GAN 100 für eine zweite Zeitdauer so konfiguriert, dass zwischen der ersten Topologie und der zweiten Topologie interpoliert wird. Im Schritt 270 wird beim Trainieren des GAN 100 für die zweite Zeitdauer eine Interpolation zwischen den Trainingsdaten für die erste Topologie und den modifizierten Trainingsdaten für die zweite Topologie durchgeführt. Im Schritt 275 werden beim Trainieren des GAN 100 für die zweite Zeitdauer die Gewichte des Generators 110-E und des Diskriminators 115-E auf Basis einer unter Verwendung der Ausgabe des Diskriminators 115-E berechneten Verlustfunktion aktualisiert.
  • Im Schritt 280 bestimmt die Trainings-Verlusteinheit 105, ob ein Genauigkeitsgrad erreicht ist, und wenn nicht, geht das Training weiter. Der Genauigkeitsgrad kann ein vorgegebener Schwellenwert (d. h. ein Kriterium) sein. In einer Ausführungsform kann der Wert von α, der den sanften Übergang von der ersten Topologie zu der zweiten Topologie steuert, ebenfalls steigen, wenn die Genauigkeit steigt. Alternativ kann eine vorgegebene Menge der Trainingsdaten verwendet werden, um den GAN 100 für jede schrittweise Änderung von α zu trainieren.
  • Wenn der Genauigkeitsgrad im Schritt 280 erreicht wird, erfolgt im Schritt 285 eine Bestimmung, ob das GAN 100 zu der endgültigen Topologie passt. Wenn ja, ist das Training abgeschlossen. Andernfalls werden die Schritte 255, 260, 265, 270, 275 und 280 wiederholt, und das GAN 100 wird modifiziert, um zu einer anderen Topologie überzugehen, und das Training geht weiter. Zum Beispiel wird in einer Ausführungsform die Topologie weiter modifiziert, indem in dem Generator 110 und/oder dem Diskriminator 115 eine oder mehrere Schichten hinzugefügt werden, Merkmale hinzugefügt oder entfernt werden, Verbindungen zwischen Merkmalen hinzugefügt oder entfernt werden, und dergleichen. Für eine andere Aufgabe kann die Topologie modifiziert werden, indem in dem Generator 110 und/oder dem Diskriminator 115 eine oder mehrere Schichten entfernt werden, Merkmale hinzugefügt oder entfernt werden, Verbindungen zwischen Merkmalen hinzugefügt oder entfernt werden, und dergleichen.
  • 2D veranschaulicht Beispiel-Bilder, die von einem GAN 100 erzeugt wurden, der darauf trainiert wurde, Bilder von Fahrrädern zu generieren, gemäß einer Ausführungsform. Jedes Bild wird vom Generator 110 als Antwort auf das Empfangen einer Eingabe eines latenten Codes generiert. In einer Ausführungsform wird der Diskriminator 115 zum Trainieren des GAN 100 verwendet, und er wird nicht verwendet, um die Bilder zu generieren, nachdem das Training abgeschlossen ist. Während des Trainings werden sowohl der Generator 110 als auch der Diskriminator 115 fortschreitend modifiziert und gehen von einer Topologie zu einer anderen über. Die Beispiel-Trainingsdaten werden während des Trainings modifiziert, beginnend mit Bildern mit niedriger Auflösung, und die Auflösung der Bilder wird vergrößert, wenn neue Schichten hinzugefügt werden, die Details mit höherer Auflösung verarbeiten. Das Modifizieren des GAN 100 während des Trainings stabilisiert das Training erheblich und ermöglicht es dem GAN 100, Bilder von noch nie da gewesener Qualität im Vergleich zu herkömmlichen Techniken zu erzeugen.
  • Fortschreitendes Modifizieren der Topologie des GAN 100 bietet zwei wesentliche Vorteile: Das GAN 100 konvergiert zu einem beträchtlich besseren Optimum, und die gesamte Trainingszeit verkürzt sich um ungefähr einen Faktor zwei. Die verbesserte Konvergenz erklärt sich durch eine implizite Form von Lehrplan-Lernen, das durch die allmählich zunehmende Kapazität des Generators 110 und des Diskriminators 115 erzwungen wird. Ohne fortschreitende Modifizierung haben alle Schichten des Generators 110 und des Diskriminators 115 die Aufgabe, gleichzeitig prägnante Zwischendarstellungen sowohl für die große Variation als auch für das kleine Detail zu finden. Bei fortschreitender Modifizierung dürften die vorhandenen Schichten niedriger Dichte jedoch schon früh konvergiert sein, so dass der Generator 110 und der Diskriminator 115 nur die Aufgabe haben, die Darstellungen durch immer kleiner werdende Effekte zu verfeinern, wenn neue Schichten eingeführt werden. Für die Trainingszeit gewinnt fortschreitende Modifizierung einen erheblichen Vorsprung, da der Generator 110 und der Diskriminator 115 zu Beginn flach und schnell auszuwerten sind.
  • Parallelverarbeitungsarchitektur
  • 3 veranschaulicht eine Parallelverarbeitungseinheit (PPU) 300 gemäß einer Ausführungsform. In einer Ausführungsform ist die PPU 300 ein Multi-Thread-Prozessor, der auf einer oder mehreren integrierten Schaltungen implementiert ist. Die PPU 300 ist eine Latenz verbergende Architektur (Latency Hiding Architecture), die darauf ausgelegt ist, viele Threads parallel zu verarbeiten. Ein Thread (d. h. ein Thread einer Ausführung) ist eine Instanziierung eines Satzes von Befehlen, die so konfiguriert sind, dass sie von der PPU 300 ausgeführt werden. In einer Ausführungsform ist die PPU 300 eine Grafikverarbeitungseinheit (GPU), die so konfiguriert ist, dass sie eine Grafik-Rendering-Pipeline für Verarbeitung von dreidimensionalen (3D) Grafikdaten implementiert, um zweidimensionale (2D) Bilddaten für Anzeige auf einem Display-Gerät wie z. B. einem Flüssigkristalldisplay-Gerät (LCD-Gerät) zu erzeugen. In anderen Ausführungsformen kann die PPU 300 zur Durchführung von Mehrzweckberechnungen verwendet werden. Obwohl hierin zur Veranschaulichung ein Beispiel-Parallelprozessor vorgesehen ist, sei ausdrücklich darauf hingewiesen, dass dieser Prozessor nur zu veranschaulichenden Zwecken angegeben ist und dass irgendein Prozessor eingesetzt werden kann, um diesen zu ergänzen und/oder zu ersetzen.
  • Eine oder mehrere PPUs 300 können so konfiguriert sein, dass sie Tausende von Hochleistungsrechnern (HPC, High Performance Computing), ein Rechenzentrum und Anwendungen für maschinelles Lernen beschleunigen. Die PPU 300 kann so konfiguriert sein, dass sie zahlreiche Systeme und Anwendungen für Deep Learning (tiefgehendes Lernen) beschleunigt, darunter autonome Fahrzeugplattformen, Deep Learning, hochpräzise Sprach-, Bild- und Texterkennungssysteme, intelligente Videoanalytik, molekulare Simulationen, Medikamentenentdeckung, Krankheitsdiagnose, Wettervorhersage, Big Data Analytik, Astronomie, Molekulardynamiksimulation, Finanzmodellierung, Robotik, Fabrikautomatisierung, Echtzeit-Sprachübersetzung, Online-Suchoptimierungen und personalisierte Benutzerempfehlungen und dergleichen.
  • Wie in 3 gezeigt, enthält die PPU 300 eine Eingabe/Ausgabe-(I/O)-Einheit 305, eine Vorverarbeitungseinheit 315, eine Scheduler-Einheit 320, eine Arbeitsverteilungseinheit 325, einen Hub 335, ein Koppelfeld (Xbar, crossbar) 370, einen oder mehrere Allgemeinverarbeitungscluster (GPCs) 350 und eine oder mehrere Partitionseinheiten 380. Die PPU 300 kann über eine oder mehrere Hochgeschwindigkeits-NVLink-310-Verbindungen mit einem Host-Prozessor oder anderen PPUs 300 verbunden sein. Die PPU 300 kann über eine Verbindung 302 mit einem Host-Prozessor oder anderen Peripheriegeräten verbunden sein. Die PPU 300 kann auch mit einem lokalen Speicher verbunden sein, der eine Anzahl von Speichergeräten 304 umfasst. In einer Ausführungsform kann der lokale Speicher eine Anzahl von DRAM-(Dynamic Random Access Memory, Speicher mit dynamischem Direktzugriff)-Geräten umfassen. Die DRAM-Geräte können als ein HBM-(High-Bandwidth Memory)-Subsystem konfiguriert sein, wobei mehrere DRAM-Dies (Waferstücke) in jedem Gerät gestapelt sind.
  • Die NVLink 310 Verbindung ermöglicht es Systemen, eine oder mehrere PPUs 300 in Kombination mit einer oder mehreren CPUs zu skalieren und zu integrieren, unterstützt Cache-Kohärenz zwischen den PPUs 300 und CPUs sowie CPU-Mastering. Daten und/oder Befehle können vom NVLink 310 über den Hub 330 zu/von anderen Einheiten der PPU 300 übertragen werden, wie z. B. einer oder mehreren Kopier-Engines, einem Video-Encoder, einem Video-Decoder, einer Leistungsmanagement-Einheit usw. (nicht explizit gezeigt). Der NVLink 310 wird in Verbindung mit 5B näher beschrieben.
  • Die I/O-Einheit 305 ist so konfiguriert, dass sie über die Verbindung 302 Kommunikation (d. h. Befehle, Daten, usw.) von einem Host-Prozessor (nicht gezeigt) sendet und empfängt. Die I/O-Einheit 305 kann mit dem Host-Prozessor direkt über die Verbindung 302 oder über ein oder mehrere Zwischen-Geräte wie z. B. eine Speicherbrücke kommunizieren. In einer Ausführungsform kann die I/O-Einheit 305 über die Verbindung 302 mit einem oder mehreren anderen Prozessoren kommunizieren, wie z. B. einer oder mehreren der PPUs 300. In einer Ausführungsform implementiert die I/O-Einheit 305 eine PCIe-(Peripheral Component Interconnect Express)-Schnittstelle für Kommunikation über einen PCIe-Bus, und die Verbindung 302 ist ein PCIe-Bus. In alternativen Ausführungsformen kann die I/O-Einheit 305 andere Arten von bekannten Schnittstellen für Kommunikation mit externen Geräten implementieren.
  • Die I/O-Einheit 305 decodiert Pakete, die über die Verbindung 302 empfangen wurden. In einer Ausführungsform repräsentieren die Pakete Befehle, die so konfiguriert sind, dass sie die PPU 300 verschiedene Operationen durchführen lassen. Die I/O-Einheit 305 überträgt die decodierten Befehle an verschiedene andere Einheiten der PPU 300, wie es die Befehle spezifizieren können. So können zum Beispiel manche Befehle an die Vorverarbeitungseinheit 315 übertragen werden. Ändere Befehle können an den Hub 330 oder andere Einheiten der PPU 300 übertragen werden, wie z. B. eine oder mehrere Kopier-Engines, einen Video-Encoder, einen Video-Decoder, eine Leistungsmanagement-Einheit usw. (nicht explizit gezeigt). Mit anderen Worten, die I/O-Einheit 305 ist so konfiguriert, dass sie die Kommunikation zwischen und unter den verschiedenen logischen Einheiten der PPU 300 weiterleitet.
  • In einer Ausführungsform codiert ein vom Host-Prozessor ausgeführtes Programm einen Befehlsstrom in einem Puffer, der der PPU 300 Arbeit (Workload) zur Verarbeitung liefert. Ein Workload kann mehrere Anweisungen sowie Daten, die von diesen Anweisungen verarbeitet werden sollen, umfassen. Der Puffer ist ein Bereich in einem Speicher, auf den sowohl der Host-Prozessor als auch die PPU 300 zugreifen (d. h. lesen/schreiben) können. Zum Beispiel kann die I/O-Einheit 305 so konfiguriert sein, dass sie über Speicheranforderungen, die über die Verbindung 302 übertragen werden, auf den Puffer in einem Systemspeicher zugreift, der mit der Verbindung 302 verbunden ist. In einer Ausführungsform schreibt der Host-Prozessor den Befehlsstrom in den Puffer und sendet dann einen Zeiger auf den Anfang des Befehlsstroms an die PPU 300. Die Vorverarbeitungseinheit 315 empfängt Zeiger auf einen oder mehrere Befehlsströme. Die Vorverarbeitungseinheit 315 verwaltet einen oder mehrere Ströme, liest Befehle aus den Strömen und leitet Befehle an die verschiedenen Einheiten der PPU 300 weiter.
  • Die Vorverarbeitungseinheit 315 ist mit einer Scheduler-Einheit 320 gekoppelt, die die verschiedenen GPCs 350 so konfiguriert, dass sie Aufgaben bzw. Tasks bearbeiten, die durch die ein oder mehreren Ströme definiert sind. Die Scheduler-Einheit 320 ist so konfiguriert, dass sie Zustandsinformationen zu den verschiedenen Aufgaben verfolgt, die von der Scheduler-Einheit 320 verwaltet werden. Der Zustand kann angeben, welchem GPC 350 eine Aufgabe zugewiesen ist, ob die Aufgabe aktiv oder inaktiv ist, einen der Aufgabe zugewiesenen Prioritätsgrad und so weiter. Die Scheduler-Einheit 320 verwaltet die Ausführung einer Vielzahl von Aufgaben auf den ein oder mehreren GPCs 350.
  • Die Scheduler-Einheit 320 ist mit einer Arbeitsverteilungseinheit 325 gekoppelt, die so konfiguriert ist, dass sie Aufgaben zur Ausführung auf den GPCs 350 abfertigt. Die Arbeitsverteilungseinheit 325 kann eine Reihe von geplanten Aufgaben verfolgen, die von der Scheduler-Einheit 320 empfangen wurden. In einer Ausführungsform verwaltet die Arbeitsverteilungseinheit 325 für jeden der GPCs 350 einen Pool von anstehenden Aufgaben und einen Pool von aktiven Aufgaben. Der Pool von anstehenden Aufgaben kann eine Anzahl von Slots (z. B. 32 Slots) umfassen, die Aufgaben enthalten, die von einem bestimmten GPC 350 zu bearbeiten sind. Der Pool von aktiven Aufgaben kann eine Anzahl von Slots (z. B. 4 Slots) für Aufgaben umfassen, die gerade von den GPCs 350 aktiv bearbeitet werden. Wenn ein GPC 350 die Ausführung einer Aufgabe beendet, wird diese Aufgabe aus dem Pool von aktiven Aufgaben für den GPC 350 entfernt, und es wird eine der anderen Aufgaben aus dem Pool von anstehenden Aufgaben ausgewählt und für Ausführung auf dem GPC 350 eingeplant. Wenn eine aktive Aufgabe auf dem GPC 350 untätig war, z. B. während des Wartens auf Auflösung einer Datenabhängigkeit, kann die aktive Aufgabe aus dem GPC 350 entfernt und an den Pool von anstehenden Aufgaben zurückgegeben werden, während eine andere Aufgabe im Pool von anstehenden Aufgaben ausgewählt und für Ausführung auf dem GPC 350 eingeplant wird.
  • Die Arbeitsverteilungseinheit 325 kommuniziert über das XBar 370 mit einem oder mehreren GPCs 350. Das XBar 370 ist ein Verbindungsnetz, das viele Einheiten der PPU 300 mit anderen Einheiten der PPU 300 koppelt. Zum Beispiel kann das XBar 370 so konfiguriert sein, dass es die Arbeitsverteilungseinheit 325 mit einem bestimmten GPC 350 koppelt. Obwohl nicht explizit gezeigt, können eine oder mehrere andere Einheiten der PPU 300 auch über den Hub mit dem XBar 370 verbunden sein.
  • Die Aufgaben werden von der Scheduler-Einheit 320 verwaltet und von der Arbeitsverteilungseinheit 325 an ein GPC 350 abgefertigt. Der GPC 350 ist so konfiguriert, dass er die Aufgabe bearbeitet und Ergebnisse erzeugt. Die Ergebnisse können von anderen Aufgaben innerhalb des GPC 350 aufgenommen, über das XBar 370 an einen anderen GPC 350 weitergeleitet oder im Speicher 304 gespeichert werden. Die Ergebnisse können über die Partitionseinheiten 380, die eine Speicherschnittstelle zum Lesen und Schreiben von Daten in den bzw. aus dem Speicher 304 implementieren, in den Speicher 304 geschrieben werden. Die Ergebnisse können über den NVLink 310 an eine andere PPU 304 oder CPU übertragen werden. In einer Ausführungsform enthält die PPU 300 eine Anzahl U von Partitionseinheiten 380, die der Anzahl von separaten und getrennten Speichergeräten 304 entspricht, die mit der PPU 300 gekoppelt sind. Eine Partitionseinheit 380 wird im Folgenden in Verbindung mit 4B näher beschrieben.
  • In einer Ausführungsform führt ein Host-Prozessor einen Treiber-Kernel aus, der eine Anwendungsprogrammierschnittstelle (API) implementiert, die es einer oder mehreren auf dem Host-Prozessor ausgeführten Anwendungen ermöglicht, Operationen für Ausführung auf der PPU 300 zu planen. In einer Ausführungsform werden mehrere Rechenanwendungen gleichzeitig von der PPU 300 ausgeführt, und die PPU 300 bietet Isolation, Dienstgüte (QoS, Quality of Service) und unabhängige Adressräume für die mehreren Rechenanwendungen. Eine Anwendung kann Anweisungen (d. h. API-Aufrufe) generieren, die den Treiber-Kernel veranlassen, eine oder mehrere Aufgaben für Ausführung durch die PPU 300 zu generieren. Der Treiber-Kernel gibt Aufgaben an einen oder mehrere Ströme aus, die von der PPU 300 bearbeitet werden. Jede Aufgabe kann eine oder mehrere Gruppen von verwandten Threads umfassen, die hier als ein Warp bezeichnet werden. In einer Ausführungsform umfasst ein Warp 32 in Bezug stehende Threads, die parallel ausgeführt werden können. Kooperierende Threads können sich auf eine Vielzahl von Threads beziehen, einschließlich Anweisungen zur Durchführung der Aufgabe und dass Daten über Gemeinschaftsspeicher ausgetauscht werden können. Threads und kooperierende Threads werden in Verbindung mit 5A näher beschrieben.
  • 4A veranschaulicht ein GPC 350 der PPU 300 von 3 gemäß einer Ausführungsform. Wie in 4A gezeigt, enthält jeder GPC 350 eine Reihe von Hardware-Einheiten zur Bearbeitung von Aufgaben. In einer Ausführungsform enthält jeder GPC 350 einen Pipeline-Manager 410, eine Pre-Rasteroperationseinheit (PROP) 415, eine Raster-Engine 425, ein Arbeitsverteilungs-Koppelfeld (WDX) 480, eine Speicherverwaltungs-Einheit (MMU) 490 und einen oder mehrere Datenverarbeitungs-Cluster (DPCs) 420. Man beachte, dass der GPC 350 von 4A anstelle der oder zusätzlich zu den in 4A gezeigten Einheiten andere Hardware-Einheiten enthalten kann.
  • In einer Ausführungsform wird der Betrieb des GPC 350 durch den Pipeline-Manager 410 gesteuert. Der Pipeline-Manager 410 verwaltet die Konfiguration der ein oder mehreren DPCs 420 für Bearbeitung von Aufgaben, die dem GPC 350 zugewiesen sind. In einer Ausführungsform kann der Pipeline-Manager 410 mindestens einen der ein oder mehreren DPCs 420 so konfigurieren, dass er mindestens einen Teil einer Grafik-Rendering-Pipeline implementiert. Zum Beispiel kann ein DPC 420 so konfiguriert sein, dass er ein Vertex-Shader-Programm auf dem programmierbaren Streaming-Multiprozessor (SM) 440 ausführt. Der Pipeline-Manager 410 kann auch so konfiguriert sein, dass er von der Arbeitsverteilungseinheit 325 empfangene Pakete an die entsprechenden logischen Einheiten innerhalb des GPC 350 weiterleitet. Zum Beispiel können manche Pakete an Hardware-Einheiten mit fester Funktion in der PROP 415 und/oder der Raster-Engine 425 weitergeleitet werden, während andere Pakete an die DPCs 420 zur Verarbeitung durch die Primitiv-Engine 435 oder den SM 440 weitergeleitet werden können. In einer Ausführungsform kann der Pipeline-Manager 410 mindestens einen der ein oder mehreren DPCs 420 so konfigurieren, dass er ein Modell für ein neuronales Netz und/oder eine Rechen-Pipeline implementiert.
  • Die PROP-Einheit 415 ist so konfiguriert, dass sie von der Raster-Engine 425 und den DPCs 420 erzeugte Daten an eine Rasteroperations-(ROP)-Einheit weiterleitet, die in Verbindung mit 4B näher beschrieben wird. Die PROP-Einheit 415 kann auch so konfiguriert sein, dass sie Optimierungen für Farbmischung durchführt, Pixeldaten organisiert, Adressenübersetzungen durchführt und dergleichen.
  • Die Raster-Engine 425 enthält eine Reihe von Hardware-Einheiten mit fester Funktion, die so konfiguriert sind, dass sie verschiedene Rasteroperationen durchführen können. In einer Ausführungsform enthält die Raster-Engine 425 eine Setup-Engine, eine Grobraster-Engine, eine Culling-Engine, eine Clipping-Engine, eine Feinraster-Engine und eine Kachel-Coalescing-Engine. Die Setup-Engine empfängt transformierte Vertices und generiert Ebenengleichungen, die dem geometrischen Primitiv zugeordnet sind, das durch die Vertices definiert ist. Die Ebenengleichungen werden an die Grobraster-Engine übertragen, um Abdeckungsinformationen (z. B. eine x,y-Abdeckungsmaske für eine Kachel) für das Primitiv zu generieren. Die Ausgabe der Grobraster-Engine wird zu der Culling-Engine übertragen, wo Fragmente, die dem Primitiv zugeordnet sind, dass einen Z-Test nicht besteht, einem Culling (Auslesen) unterzogen werden, und zu einer Clipping-Engine übertragen, wo Fragmente, die außerhalb eines Betrachtungsstumpfs liegen, einem Clipping (Abschneiden) unterzogen werden. Diejenigen Fragmente, die das Clipping und Culling überleben, können an die Feinraster-Engine übergeben werden, um Attribute für die Pixelfragmente auf Basis der von der Setup-Engine generierten Ebenengleichungen zu generieren. Die Ausgabe der Raster-Engine 425 umfasst Fragmente, die zum Beispiel von einem Fragment-Shader zu verarbeiten sind, der innerhalb eines DPC 420 implementiert ist.
  • Jeder in dem GPC 350 enthaltene DPC 420 enthält einen M-Pipe-Controller (MPC) 430, eine Primitiv-Engine 435 und einen oder mehrere SMs 440. Der MPC 430 steuert den Betrieb des DPC 420 und leitet die vom Pipeline-Manager 410 empfangenen Pakete an die entsprechenden Einheiten im DPC 420 weiter. Zum Beispiel können Pakete, die einem Vertex zugeordnet sind, an die Primitiv-Engine 435 weitergeleitet werden, die so konfiguriert ist, dass sie Vertex-Attribute, die dem Vertex zugeordnet sind, aus dem Speicher 304 holt. Im Gegensatz dazu können Pakete, die einem Shader-Programm zugeordnet sind, an den SM 440 übertragen werden.
  • Der SM 440 umfasst einen programmierbaren Streaming-Prozessor, der so konfiguriert ist, dass er Aufgaben verarbeitet, die durch eine Reihe von Threads repräsentiert werden. Jeder SM 440 ist multi-threaded (mehrprozessfähig) und so konfiguriert, dass er eine Vielzahl von Threads (z. B. 32 Threads) aus einer bestimmten Gruppe von Threads gleichzeitig ausführen kann. In einer Ausführungsform implementiert der SM 440 eine SIMD-(Single-Instruction, Multiple-Data)-Architektur, bei der jeder Thread in einer Gruppe von Threads (z. B. einem Warp) so konfiguriert ist, dass er einen anderen Datensatz auf Basis desselben Befehlssatzes verarbeitet. Alle Threads in der Gruppe der Threads führen dieselben Anweisungen aus. In einer anderen Ausführungsform implementiert der SM 440 eine SIMT-(Single-Instruction, Multiple-Thread)-Architektur, bei der jeder Thread in einer Gruppe von Threads so konfiguriert ist, dass er einen anderen Datensatz auf Basis desselben Befehlssatzes verarbeitet, wobei jedoch einzelne Threads in der Gruppe von Threads während der Ausführung voneinander abweichen dürfen. In einer Ausführungsform werden für jeden Warp ein Programmzähler, ein Aufruf-Stapel und ein Ausführungszustand aufrechterhalten, was Gleichzeitigkeit zwischen Warps und serielle Ausführung innerhalb von Warps ermöglicht, wenn Threads innerhalb des Warps voneinander abweichen. In einer weiteren Ausführungsform werden für jeden einzelnen Thread ein Programmzähler, ein Aufruf-Stapel und ein Ausführungszustand aufrechterhalten, was gleiche Gleichzeitigkeit zwischen allen Threads, innerhalb und zwischen Warps, ermöglicht. Wenn der Ausführungszustand für jeden einzelnen Thread aufrechterhalten wird, können Threads, die dieselben Anweisungen ausführen, konvergiert und parallel ausgeführt werden, um maximale Effizienz zu erreichen. Der SM 440 wird im Folgenden in Verbindung mit 5A näher beschrieben.
  • Die MMU 490 stellt eine Schnittstelle zwischen dem GPC 350 und der PartitionsEinheit 380 bereit. Die MMU 490 kann Übersetzung von virtuellen Adressen in physische Adressen, Speicherschutz und Arbitrierung von Speicheranforderungen ermöglichen. In einer Ausführungsform stellt die MMU 490 einen oder mehrere Übersetzungspuffer (TLBs, Translation Lookaside Buffers) bereit, um Übersetzung von virtuellen Adressen in physische Adressen im Speicher 304 durchzuführen.
  • 4B veranschaulicht eine Speicherpartitionseinheit 380 der PPU 300 von 3 gemäß einer Ausführungsform. Wie in 4B gezeigt, enthält die Speicherpartitionseinheit 380 eine Rasteroperations-(ROP)-Einheit 450, einen Level-2-Cache (L2-Cache) 460 und eine Speicherschnittstelle 470. Die Speicherschnittstelle 470 ist mit dem Speicher 304 gekoppelt. Die Speicherschnittstelle 470 kann 32, 64, 128, 1024-Bit-Datenbusse oder dergleichen für Hochgeschwindigkeits-Datenübertragung implementieren. In einer Ausführungsform enthält die PPU 300 U Speicherschnittstellen 470, eine Speicherschnittstelle 470 pro Paar Partitionseinheiten 380, wobei jedes Paar Partitionseinheiten 380 mit einem entsprechenden Speichergerät 304 verbunden ist. Zum Beispiel kann die PPU 300 an bis zu Y Speichergeräte 304 angeschlossen werden, wie z. B. Speicherstapel mit hoher Bandbreite oder Grafik mit Doppel-Datenrate, Version 5, Speicher mit synchronem dynamischen Direktzugriff oder andere Arten von persistentem Speicher.
  • In einer Ausführungsform implementiert die Speicherschnittstelle 470 eine HBM2-Speicherschnittstelle und entspricht Y einem halben U. In einer Ausführungsform befinden sich die HBM2-Speicherstapel auf demselben physischen Gehäuse wie die PPU 300, was im Vergleich zu herkömmlichen GDDR5-SDRAM-Systemen zu erheblichen Leistungs- und Flächeneinsparungen führt. In einer Ausführungsform enthält jeder HBM2-Stapel vier Speicher-Dies und ist Y gleich 4, wobei der HBM2-Stapel zwei 128-Bit-Kanäle pro Die für insgesamt 8 Kanäle sowie eine Datenbusbreite von 1024 Bits aufweist.
  • In einer Ausführungsform unterstützt der Speicher 304 Einzelfehler korrigierenden und Doppelfehler erkennenden (SECDED) Fehlerkorrekturcode (ECC) zum Schutz von Daten. ECC bietet höhere Zuverlässigkeit für Rechenanwendungen, die empfindlich auf Datenbeschädigung reagieren. Zuverlässigkeit ist besonders wichtig in großen Cluster-Computerumgebungen, in denen PPUs 300 sehr große Datensätze verarbeiten und/oder Anwendungen über längere Zeiträume laufen.
  • In einer Ausführungsform implementiert die PPU 300 eine mehrstufige Speicherhierarchie. In einer Ausführungsform unterstützt die Speicherpartitionseinheit 380 einen vereinheitlichten Speicher, um einen einzigen vereinheitlichten virtuellen Adressraum für Speicher der CPU und PPU 300 bereitzustellen, der das Teilen von Daten zwischen virtuellen Speichersystemen ermöglicht. In einer Ausführungsform wird die Häufigkeit der Zugriffe einer PPU 300 auf Speicher verfolgt, der sich auf anderen Prozessoren befindet, um sicherzustellen, dass Speicherseiten in den physischen Speicher derjenigen PPU 300 verschoben werden, die häufiger auf die Seiten zugreift. In einer Ausführungsform unterstützt der NVLink 310 Adressenübersetzungsdienste, die es der PPU 300 ermöglichen, direkt auf Seitentabellen einer CPU zuzugreifen, und vollen Zugriff auf CPU-Speicher durch die PPU 300 ermöglichen.
  • In einer Ausführungsform übertragen Kopier-Engines Daten zwischen mehreren PPUs 300 oder zwischen PPUs 300 und CPUs. Die Kopier-Engines können Seitenstörungen für Adressen erzeugen, die nicht in die Seitentabellen eingetragen sind. Die Speicherpartitionseinheit 380 kann dann die Seitenstörungen bedienen und die Adressen in die Seitentabelle eintragen, woraufhin die Kopier-Engine die Übertragung durchführen kann. In einem herkömmlichen System ist Speicher für Mehrfach-Kopier-Engine-Operationen zwischen mehreren Prozessoren festgeheftet (d. h. nicht auslagerbar), was den verfügbaren Speicher erheblich reduziert. Bei Hardware-Seitenstörung können Adressen an die Kopier-Engines weitergegeben werden, ohne sich Sorgen zu machen, ob die Speicherseiten resident sind, und die Kopier-Operation ist transparent.
  • Daten aus dem Speicher 304 oder einem anderen Systemspeicher können von der Speicherpartitionseinheit 380 abgerufen und im L2-Cache 460, der On-Chip (auf dem Chip) angesiedelt ist und zwischen den verschiedenen GPCs 350 geteilt wird, gespeichert werden. Wie gezeigt, enthält jede Speicherpartitionseinheit 380 einen Teil des L2-Cache 460, der einem entsprechenden Speichergerät 304 zugeordnet ist. Untergeordnete Caches können dann in verschiedenen Einheiten innerhalb der GPCs 350 implementiert werden. Zum Beispiel kann jeder der SMs 440 einen Level-One-Cache (L1-Cache) implementieren. Der L1-Cache ist privater Speicher, der einem bestimmten SM 440 zugeordnet ist. Daten aus dem L2-Cache 460 können abgerufen und in jedem der L1-Caches zur Verarbeitung in den Funktionseinheiten der SMs 440 gespeichert werden. Der L2-Cache 460 ist mit der Speicherschnittstelle 470 und dem XBar 370 gekoppelt.
  • Die ROP-Einheit 450 führt grafische Rasteroperationen in Bezug auf Pixelfarbe durch, wie z. B. Farbkompression, Pixel-Blending und dergleichen. Die ROP-Einheit 450 führt auch Tiefenprüfungen in Verbindung mit der Raster-Engine 425 durch und empfängt eine Tiefe für eine Abtast-Position, die einem Pixelfragment zugeordnet ist, von der Culling-Engine der Raster-Engine 425. Die Tiefe wird gegen eine entsprechende Tiefe in einem Tiefenpuffer für eine dem Fragment zugeordnete Abtast-Position getestet. Wenn das Fragment den Tiefentest für die Abtast-Position besteht, aktualisiert die ROP-Einheit 450 den Tiefenpuffer und sendet ein Ergebnis des Tiefentests an die Raster-Engine 425. Man beachte, dass die Anzahl der Partitionseinheiten 380 von der Anzahl der GPCs 350 abweichen kann und daher jede ROP-Einheit 450 mit jeder der GPCs 350 gekoppelt sein kann. Die ROP-Einheit 450 verfolgt die von den verschiedenen GPCs 350 empfangenen Pakete und bestimmt, zu welchem GPC 350 ein von der ROP-Einheit 450 erzeugtes Ergebnis durch das Xbar 370 geleitet wird. Obwohl die ROP-Einheit 450 in 4B innerhalb der Speicherpartitionseinheit 380 enthalten ist, kann sich die ROP-Einheit 450 in einer anderen Ausführungsform außerhalb der Speicherpartitionseinheit 380 befinden. Zum Beispiel kann sich die ROP-Einheit 450 im GPC 350 oder einer anderen Einheit befinden.
  • 5A veranschaulicht den Streaming-Multiprozessor 440 von 4A gemäß einer Ausführungsform. Wie in 5A gezeigt, enthält der SM 440 einen Anweisungs-Cache 505, eine oder mehrere Scheduler-Einheiten 510, eine Registerdatei 520, einen oder mehrere Verarbeitungs-Rechenkerne 550, eine oder mehrere Spezial-Funktionseinheiten (SFUs) 552, eine oder mehrere Lade-/Speicher-Einheiten (LSUs) 554, ein Verbindungsnetz 580 und einen Gemeinschaftsspeicher/L1-Cache 570.
  • Wie oben beschrieben, fertigt die Arbeitsverteilungseinheit 325 Aufgaben zur Ausführung auf den GPCs 350 der PPU 300 ab. Die Aufgaben sind einem bestimmten DPC 420 innerhalb eines GPC 350 zugewiesen, und wenn die Aufgabe einem Shader-Programm zugeordnet ist, kann die Aufgabe einem SM 440 zugewiesen werden. Die Scheduler-Einheit 510 empfängt die Aufgaben von der Arbeitsverteilungseinheit 325 und verwaltet die Anweisungsplanung für einen oder mehrere Thread-Blöcke, die der SM 440 zugeordnet sind. Die Scheduler-Einheit 510 plant Thread-Blöcke zur Ausführung als Warps von parallelen Threads ein, wobei jedem Thread-Block mindestens ein Warp zugewiesen ist. In einer Ausführungsform führt jeder Warp 32 Threads aus. Die Scheduler-Einheit 510 kann eine Vielzahl verschiedener Thread-Blöcke verwalten, die Warps den verschiedenen Thread-Blöcken zuweisen und dann während jedes Taktzyklus Anweisungen von der Vielzahl von verschiedenen kooperativen Gruppen an die verschiedenen Funktionseinheiten (d. h. Rechenkerne 550, SFUs 552 und LSUs 554) abfertigen.
  • Cooperative Groups ist ein Programmiermodell für die Organisation von Gruppen kommunizierender Threads, das es Entwicklern ermöglicht, die Granularität auszudrücken, mit der Threads kommunizieren, was den Ausdruck reichhaltigerer, effizienterer paralleler Zerlegungen ermöglicht. Kooperative Start-APIs unterstützen Synchronisation zwischen Thread-Blöcken für die Ausführung paralleler Algorithmen. Herkömmliche Programmiermodelle bieten ein einziges, einfaches Konstrukt zur Synchronisation kooperierender Threads: eine Barriere über alle Threads eines Thread-Blocks hinweg (d. h. die Funktion syncthreads()). Programmierer möchten jedoch oft Gruppen von Threads mit kleinerer Granularität als Thread-Blöcke definieren und innerhalb der definierten Gruppen synchronisieren, um mehr Leistung, Designflexibilität und Software-Wiederverwendung in Form von gemeinsamen gruppenweiten Funktionsschnittstellen zu ermöglichen.
  • Cooperative Groups ermöglicht es Programmierern, Gruppen von Threads explizit am Unterblock (d. h. so klein wie ein einzelner Thread) und Multiblock-Granularitäten zu definieren und kollektive Operationen wie z. B. Synchronisation der Threads in einer kooperativen Gruppe durchzuführen. Das Programmiermodell unterstützt saubere Zusammensetzung über Softwaregrenzen hinweg, so dass Bibliotheken und Utility-Funktionen in ihrem lokalen Kontext sicher synchronisieren können, ohne Annahmen über Konvergenz treffen zu müssen. Cooperative Groups Primitive ermöglichen neue Muster kooperativer Parallelität, einschließlich Produzenten-Verbraucher-Parallelität, opportunistischer Parallelität und globaler Synchronisation über ein ganzes Netz von Thread-Blöcken hinweg.
  • Eine Abfertigungs-Einheit 515 ist so konfiguriert, das sie Anweisungen an eine oder mehrere der Funktionseinheiten senden kann. In der Ausführungsform enthält die Scheduler-Einheit 510 zwei Abfertigungs-Einheiten 515, die es ermöglichen, während jedes Taktzyklus zwei verschiedene Anweisungen von derselben Warp zu senden. In alternativen Ausführungsformen kann jede Scheduler-Einheit 510 eine einzige Abfertigungs-Einheit 515 oder zusätzliche Abfertigungs-Einheiten 515 enthalten.
  • Jeder SM 440 enthält eine Registerdatei 520, die einen Satz Register für die Funktionseinheiten der SM 440 bereitstellt. In einer Ausführungsform ist die Registerdatei 520 zwischen den einzelnen Funktionseinheiten aufgeteilt, so dass jeder Funktionseinheit ein bestimmter Teil der Registerdatei 520 zugeordnet ist. In einer anderen Ausführungsform ist die Registerdatei 520 zwischen den verschiedenen Warps aufgeteilt, die von dem SM 440 ausgeführt werden. Die Registerdatei 520 stellt temporären Speicher für Operanden bereit, die mit den Datenpfaden der Funktionseinheiten verbunden sind.
  • Jeder SM 440 umfasst L Verarbeitungs-Rechenkerne 550. In einer Ausführungsform enthält der SM 440 eine große Anzahl (z. B. 128, usw.) von getrennten Verarbeitungs-Rechenkernen 550. Jeder Rechenkern 550 kann eine Verarbeitungseinheit mit vollständiger Pipeline, einfacher Genauigkeit, Einfachpräzision, Doppelpräzision und/oder gemischter Präzision enthalten, die eine Gleitkomma-Arithmetik-Logikeinheit und eine Ganzzahl-Arithmetik-Logikeinheit enthält. In einer Ausführungsform implementieren die Gleitkomma-Arithmetik-Logikeinheiten die Norm IEEE 754 -2008 für Gleitkomma-Arithmetik. In einer Ausführungsform enthalten die Rechenkerne 550 64 Einfachpräzision-(32-Bit)-Gleitkomma-Rechenkerne, 64 Ganzzahl-Rechenkerne, 32 Doppelpräzision-(64-Bit)-Gleitkomma-Rechenkerne und 8 Tensor-Rechenkerne.
  • Tensor-Rechenkerne sind dafür konfiguriert, Matrixoperationen durchzuführen, und in einer Ausführungsform sind ein oder mehrere Tensor-Rechenkerne in den Rechenkernen 550 enthalten. Insbesondere sind die Tensor-Rechenkerne so konfiguriert, dass sie Deep-Learning-Matrixarithmetik durchführen können, wie z. B. Faltungsoperationen für Training und Inferenzierung neuronaler Netze. In einer Ausführungsform arbeitet jeder Tensor-Rechenkern auf einer 4x4-Matrix und führt eine Matrix-Multiplikations- und Akkumulationsoperation D=AxB+C durch, worin A, B, C und D 4x4-Matrizen sind.
  • In einer Ausführungsform sind die Matrixmultiplikations-Eingaben A und B 16-Bit-Gleitkomma-Matrizen, während die Akkumulations-Matrizen C und D 16-Bit-Gleitkomma- oder 32-Bit-Gleitkomma-Matrizen sein können. Tensor-Rechenkerne arbeiten an 16-Bit-Gleitkomma-Eingabedaten mit 32-Bit-Gleitkomma-Akkumulation. Die 16-Bit-Gleitkomma-Multiplikation erfordert 64 Operationen und führt zu einem hochpräzisen Produkt, das dann unter Verwendung von 32-Bit-Gleitkomma-Addition mit den anderen Zwischenprodukten für eine 4x4x4-Matrix-Multiplikation akkumuliert wird. In der Praxis werden Tensor-Rechenkerne verwendet, um viel größere zweidimensionale oder höherdimensionale Matrixoperationen durchzuführen, die sich aus diesen kleineren Elementen zusammensetzen. Eine API, wie z. B. die CUDA 9 C++ API, stellt spezielle Matrixlast, Matrix-Multiplikation und -Akkumulation sowie Matrix-Speicheroperationen zur Verfügung, um Tensor-Rechenkerne von einem CUDA-C++-Programm effizient zu nutzen. Auf der CUDA-Ebene setzt die Schnittstelle auf Warp-Ebene Matrizen der Größe 16x16 voraus, die alle 32 Threads des Warps überspannen.
  • Jeder SM 440 enthält auch M SFUs 552, die spezielle Funktionen ausführen (z. B. Attributbewertung, reziproke Quadratwurzel und dergleichen). In einer Ausführungsform können die SFUs 552 eine Baumdurchlaufeinheit enthalten, die so konfiguriert ist, dass eine hierarchische Baumdatenstruktur durchlaufen wird. In einer Ausführungsform können die SFUs 552 eine Textureinheit enthalten, die so konfiguriert ist, dass sie Texturabbildungs-Filteroperationen durchführt. In einer Ausführungsform sind die Textureinheiten so konfiguriert, dass sie Texturabbildungen (z. B. ein zweidimensionales Array von Texeln) aus dem Speicher 304 laden und die Texturabbildungen abtasten, um abgetastete Texturwerte zur Verwendung in Shader-Programmen zu erzeugen, die vom SM 440 ausgeführt werden. In einer Ausführungsform werden die Texturabbildungen im Gemeinschaftsspeicher/L1-Cache 470 gespeichert. Die Textureinheiten implementieren Textur-Operationen wie z. B. Filteroperationen mit Hilfe von Mip-Maps (d. h. Texturabbildungen mit unterschiedlichem Detaillierungsgrad). In einer Ausführungsform enthält jeder SM 340 zwei Textureinheiten.
  • Jeder SM 440 umfasst auch N LSUs 554, die Lade- und Speicheroperationen zwischen dem Gemeinschaftsspeicher/L1-Cache 570 und der Registerdatei 520 implementieren. Jeder SM 440 enthält ein Verbindungsnetz 580, das jede der Funktionseinheiten mit der Registerdatei 520 und die LSU 554 mit der Registerdatei 520, Gemeinschaftsspeicher/ L1 Cache 570 verbindet. In einer Ausführungsform ist das Verbindungsnetz 580 ein Koppelfeld, das so konfiguriert sein kann, dass es irgendeine der Funktionseinheiten mit irgendeinem der Register in der Registerdatei 520 verbindet und die LSUs 554 mit der Registerdatei und Speicherstellen im Gemeinschaftsspeicher/L1-Cache 570 verbindet.
  • Der Gemeinschaftsspeicher/L1 Cache 570 ist ein Array von On-Chip-Speicher, das Datenspeicherung und Kommunikation zwischen dem SM 440 und der Primitiv-Engine 435 sowie zwischen Threads im SM 440 ermöglicht. In einer Ausführungsform umfasst der Gemeinschaftsspeicher/L1-Cache 570 128KB Speicherkapazität und befindet sich in dem Pfad vom SM 440 zur Partitionseinheit 380. Mit dem Gemeinschaftsspeicher/L1-Cache 570 können Lese- und Schreibzugriffe zwischengespeichert werden. Einer oder mehrere von dem Gemeinschaftsspeicher/L1-Cache 570, L2-Cache 460 und Speicher 304 sind Backup-Speicher.
  • Die Kombination von Daten-Cache und Gemeinschaftsspeicher-Funktionalität in einem einzigen Speicherblock bietet die beste Gesamtleistung für beide Arten von Speicherzugriffen. Die Kapazität ist als ein Cache von Programmen nutzbar, die keinen Gemeinschaftsspeicher verwenden. Wenn zum Beispiel Gemeinschaftsspeicher so konfiguriert ist, dass die Hälfte der Kapazität genutzt werden kann, können Textur- und Lade-/Speicher-Operationen die verbleibende Kapazität nutzen. Integration in den Gemeinschaftsspeicher/L1-Cache 570 ermöglicht es dem Gemeinschaftsspeicher/L1-Cache 570, als Hochdurchsatz-Leitung für das Streaming von Daten zu fungieren und zugleich Zugriff mit hoher Bandbreite und niedriger Latenz auf häufig wiederverwendete Daten zu ermöglichen.
  • Bei Konfiguration für Universal-Parallelberechnung kann eine einfachere Konfiguration im Vergleich zu Grafikverarbeitung verwendet werden. Insbesondere werden die in 3 gezeigten Grafikverarbeitungseinheiten mit fester Funktion umgangen, wodurch ein viel einfacheres Programmiermodell entsteht. In der Universal-Parallelberechnungs-Konfiguration weist die Arbeitsverteilungseinheit 325 Thread-Blöcke direkt den DPCs 420 zu und verteilt sie darauf. Die Threads in einem Block führen das gleiche Programm aus, wobei eine eindeutige Thread-ID bei der Berechnung verwendet wird, um sicherzustellen, dass jeder Thread eindeutige Ergebnisse erzeugt, wobei der SM 440 verwendet wird, um das Programm auszuführen und Berechnungen durchzuführen, der Gemeinschaftsspeicher/L1-Cache 570, um zwischen Threads zu kommunizieren, und die LSU 554, um über den Gemeinschaftsspeicher/L1-Cache 570 und die Speicherpartitionseinheit 380 globalen Speicher zu lesen und darin zu schreiben. Wenn für Universal-Parallelberechnung konfiguriert, kann der SM 440 auch Befehle schreiben, mit denen die Scheduler-Einheit 320 neue Arbeit auf den DPCs 420 starten kann.
  • Die PPU 300 kann in einem Desktop-Computer, einem Laptop-Computer, einem Tablet-Computer, Servern, Supercomputern, einem Smartphone (z. B. einem drahtlosen, tragbaren Gerät), einem Personal Digital Assistant (PDA), einer Digitalkamera, einem Fahrzeug, einem am Kopf befestigten Display, einem tragbaren elektronischen Gerät und dergleichen enthalten sein. In einer Ausführungsform ist die PPU 300 auf einem einzelnen Halbleitersubstrat ausgebildet. In einer anderen Ausführungsform ist die PPU 300 zusammen mit einem oder mehreren anderen Geräten, wie z. B. zusätzlichen PPUs 300, dem Speicher 204, einer CPU für Computer mit reduziertem Befehlssatz (RISC), einer Speicherverwaltungseinheit (MMU), einem Digital-Analog-Wandler (DAC) und dergleichen in einem SoC (System-on-a-Chip, System auf einem Chip) enthalten.
  • In einer Ausführungsform kann die PPU 300 auf einer Grafikkarte enthalten sein, die ein oder mehrere Speichergeräte 304 enthält. Die Grafikkarte kann so konfiguriert sein, dass sie eine Schnittstellenverbindung mit einem PCIe-Steckplatz auf einem Motherboard eines Desktop-Computers herstellt. In noch einer Ausführungsform kann die PPU 300 eine integrierte Grafikverarbeitungseinheit (iGPU) oder ein Parallelprozessor sein, die bzw. der im Chipsatz des Motherboards enthalten ist.
  • Beispiel-Rechensystem
  • Systeme mit mehreren GPUs und CPUs werden in mannigfachen Branchen eingesetzt, da Entwickler mehr Parallelität bei Anwendungen wie z. B. künstlicher Intelligenz enthüllen und nutzen. Leistungsstarke GPU-beschleunigte Systeme mit Zehntausenden von Rechenknoten werden in Rechenzentren, Forschungseinrichtungen und Supercomputern eingesetzt, um immer größere Probleme zu lösen. Mit zunehmender Anzahl von Verarbeitungsgeräten innerhalb der Hochleistungssysteme müssen die Kommunikations- und Datenübertragungsmechanismen skaliert werden, um die erhöhte Bandbreite zu unterstützen.
  • 5B ist ein konzeptionelles Diagramm eines unter Verwendung der PPU 300 von 3 implementierten Verarbeitungssystems 500 gemäß einer Ausführungsform. Das Beispiel-System 565 kann so konfiguriert sein, dass es das in 1C gezeigte Verfahren 130 und/oder das in 2C gezeigte Verfahren 250 implementiert. Das Verarbeitungssystem 500 enthält eine CPU 530, einen Switch 510 und jeweils mehrere PPUs 300 und entsprechende Speicher 304. Der NVLink 310 stellt Hochgeschwindigkeits-Kommunikationsverbindungen zwischen jeder der PPUs 300 bereit. Obwohl in 5B eine bestimmte Anzahl von Verbindungen mittels NVLink 310 und Verbindung 302 gezeigt ist, kann die Anzahl der Verbindungen zu jeder PPU 300 und der CPU 530 variieren. Der Switch 510 bildet eine Schnittstelle zwischen der Verbindung 302 und der CPU 530. Die PPUs 300, der Speicher 304 und die NVLinks 310 können sich auf einer einzelnen Halbleiterplattform befinden, um ein Parallelverarbeitungsmodul 525 zu bilden. In einer Ausführungsform unterstützt der Switch 510 zwei oder mehr Protokolle zur Schnittstellenbildung zwischen verschiedenen unterschiedlichen Verbindungen und/oder Links.
  • In einer weiteren Ausführungsform (nicht gezeigt) stellt der NVLink 310 eine oder mehrere Hochgeschwindigkeits-Kommunikationsverbindungen zwischen jeder der PPUs 300 und der CPU 530 bereit, und der Switch 510 bildet Schnittstellen zwischen der Verbindung 302 und jeder der PPUs 300. Die PPUs 300, die Speicher 304 und die Verbindung 302 können sich auf einer einzelnen Halbleiterplattform befinden, um ein Parallelverarbeitungsmodul 525 zu bilden. In noch einer Ausführungsform (nicht gezeigt) stellt die Verbindung 302 eine oder mehrere Kommunikationsverbindungen zwischen jeder der PPUs 300 und der CPU 530 bereit, und der Switch 510 bildet Schnittstellen zwischen jeder der PPUs 300 unter Verwendung des NVLinks 310, um eine oder mehrere Hochgeschwindigkeits-Kommunikationsverbindungen zwischen den PPUs 300 bereitzustellen. In noch einer Ausführungsform (nicht gezeigt) stellt der NVLink 310 eine oder mehrere Hochgeschwindigkeits-Kommunikationsverbindungen zwischen den PPUs 300 und der CPU 530 über den Switch 510 bereit. In noch einer Ausführungsform (nicht gezeigt) stellt die Verbindung 302 eine oder mehrere Kommunikationsverbindungen zwischen jeder der PPUs 300 direkt bereit. Eine oder mehrere der Hochgeschwindigkeits-Kommunikationsverbindungen NVLink 310 können als physische NVLink-Verbindung oder als On-Chip- oder On-Die-Verbindung unter Verwendung des gleichen Protokolls wie der NVLink 310 implementiert werden.
  • Im Kontext der vorliegenden Beschreibung kann sich eine einzelne Halbleiterplattform auf eine einzige einheitliche halbleiterbasierte integrierte Schaltung beziehen, die auf einem Die oder Chip hergestellt wird. Man beachte, dass sich der Begriff einzelne Halbleiterplattform auch auf Multichip-Module mit erhöhter Konnektivität beziehen kann, die On-Chip-Betrieb simulieren und wesentliche Verbesserungen gegenüber herkömmlicher Bus-Implementierung vornehmen. Natürlich können die verschiedenen Schaltungen oder Geräte nach den Wünschen des Benutzers auch getrennt oder in verschiedenen Kombinationen von Halbleiterplattformen angeordnet sein. Alternativ kann das Parallelverarbeitungsmodul 525 als ein Leiterplattensubstrat implementiert sein und kann jede(r) der PPUs 300 und/oder Speicher 304 als verpacktes Gerät ausgeführt sein. In einer Ausführungsform befinden sich die CPU 530, der Switch 510 und das Parallelverarbeitungsmodul 525 auf einer einzelnen Halbleiterplattform.
  • In einer Ausführungsform beträgt die Signalübertragungsrate jedes NVLink 310 20 bis 25 Gigabit/Sekunde und enthält jede PPU 300 sechs NVLink 310 Schnittstellen (wie in 5B gezeigt, sind fünf NVLink 310 Schnittstellen für jede PPU 300 enthalten). Jeder NVLink 310 bietet eine Datenübertragungsrate von 25 Gigabyte/Sekunde in jede Richtung, wobei sechs Links 300 Gigabyte/Sekunde liefern. Die NVLinks 310 werden möglicherweise ausschließlich für PPU-zu-PPU-Kommunikation verwendet, wie in 5B gezeigt, oder für irgendeine Kombination von PPU-zu-PPU und PPU-zu-CPU, wenn die CPU 530 ebenfalls eine oder mehrere NVLink 310 Schnittstellen enthält.
  • In einer Ausführungsform ermöglicht der NVLink 310 direkten Lade-/Speicher-/atomischen Zugriff von der CPU 530 auf den Speicher 304 jeder PPU 300. In einer Ausführungsform unterstützt der NVLink 310 Kohärenz-Operationen, so dass aus den Speichern 304 gelesene Daten in der Cache-Hierarchie der CPU 530 gespeichert werden können, was die Cache-Zugriffslatenz für die CPU 530 reduziert. In einer Ausführungsform enthält der NVLink 310 Unterstützung für Adressenübersetzungsdienste (ATS), so dass die PPU 300 direkt auf Seitentabellen innerhalb der CPU 530 zugreifen kann. Einer oder mehrere der NVLinks 310 können auch für Betrieb in einem Niedrigverbrauchsmodus konfiguriert sein.
  • 5C veranschaulicht ein Beispiel-System 565, in dem die verschiedene Architektur und/oder Funktionalität der verschiedenen früheren Ausführungsformen implementiert sein kann. Das Beispiel-System 565 kann so konfiguriert sein, dass es das in 1C gezeigte Verfahren 130 und/oder das in 2C gezeigte Verfahren 250 implementiert.
  • Wie gezeigt, ist ein System 565 vorgesehen, das mindestens eine Zentralverarbeitungseinheit 530 enthält, die mit einem Kommunikationsbus 575 verbunden ist. Der Kommunikationsbus 575 kann unter Verwendung irgendeines geeigneten Protokolls implementiert werden, wie z. B. PCI (Peripheral Component Interconnect), PCI-Express, AGP (Accelerated Graphics Port), HyperTransport oder irgendeinem anderen Bus oder Punkt-zu-Punkt-Kommunikationsprotokoll(en). Das System 565 enthält auch einen Hauptspeicher 540. Steuerlogik (Software) und Daten werden im Hauptspeicher 540 gespeichert, der als Direktzugriffsspeicher (RAM) ausgeführt sein kann.
  • Das System 565 enthält auch Eingabegeräte 560, das Parallelverarbeitungssystem 525 und Display-Geräte 545, d. h. eine herkömmliche CRT (Kathodenstrahlröhre), ein LCD (Flüssigkristall-Display), eine LED (Leuchtdiode), ein Plasma-Display oder dergleichen. Benutzereingaben können von den Eingabegeräten 560 empfangen werden, z. B. einer Tastatur, einer Maus, einem Touchpad, einem Mikrofon und dergleichen. Jedes der vorgenannten Module und/oder Geräte kann sich sogar auf einer einzelnen Halbleiterplattform befinden, um das System 565 zu bilden. Alternativ können die verschiedenen Module auch getrennt oder in verschiedenen Kombinationen von Halbleiterplattformen nach den Wünschen des Anwenders angeordnet werden.
  • Weiterhin kann das System 565 zu Kommunikationszwecken über eine Netzschnittstelle 535 mit einem Netz (z. B. einem Telekommunikationsnetz, Lokalen Netz (LAN), Drahtlosnetz, Weitverkehrsnetz (WAN) wie z. B. das Internet, Peer-to-Peer-Netz, Kabelnetz oder dergleichen) gekoppelt sein.
  • Das System 565 kann auch einen Sekundärspeicher enthalten (nicht gezeigt). Der Sekundärspeicher 610 enthält zum Beispiel ein Festplattenlaufwerk und/oder ein Wechselspeicherlaufwerk, das ein Diskettenlaufwerk, ein Magnetbandlaufwerk, ein CD-Laufwerk, ein DVD-Laufwerk, ein Aufzeichnungsgerät oder einen USB-Flashspeicher repräsentiert. Das Wechselspeicherlaufwerk liest und/oder schreibt in einer bekannten Weise von einer bzw. auf eine Wechselspeicher-Einheit.
  • Computerprogramme oder Computer-Steuerlogikalgorithmen können in dem Hauptspeicher 540 und/oder dem Sekundärspeicher gespeichert werden. Solche Computerprogramme ermöglichen es dem System 565, verschiedene Funktionen durchzuführen, wenn sie ausgeführt werden. Der Speicher 540, der Sekundärspeicher und/oder irgendwelche anderen Speicher sind mögliche Beispiele von computerlesbaren Medien.
  • Die Architektur und/oder Funktionalität der verschiedenen vorhergehenden Figuren kann im Kontext eines allgemeinen Computersystems, eines Platinensystems, eines Spielkonsolensystems für Unterhaltungszwecke, eines anwendungsspezifischen Systems und/oder irgendeines anderen gewünschten Systems implementiert werden. Das System 565 kann zum Beispiel die Form eines Desktop-Computers, eines Laptop-Computers, eines Tablet-Computers, von Servern, Supercomputern, eines Smartphones (z. B. eines drahtlosen, tragbaren Geräts), eines persönlichen digitalen Assistenten (PDA), einer Digitalkamera, eines Fahrzeugs, eines kopfmontierten Displays, eines tragbaren elektronischen Geräts, eines Mobiltelefongeräts, eines Fernsehgeräts, einer Workstation, einer Spielkonsole, eines eingebetteten Systems und/oder eines anderen Typs von Logik annehmen.
  • Obwohl verschiedene Ausführungsformen vorstehend beschrieben worden sind, versteht es sich, dass sie nur als Beispiel und nicht als Einschränkung präsentiert worden sind. Daher sind die Breite und der Schutzumfang einer bevorzugten Ausführungsform nicht durch irgendwelche der oben beschriebenen Ausführungsbeispiele einzuschränken, sondern nur in Übereinstimmung mit den folgenden Ansprüchen und ihren Äquivalenten zu definieren.
  • Maschinelles Lernen
  • Tiefe neuronale Netze (DNNs), die auf Prozessoren wie z. B. der PPU 300 entwickelt wurden, hat man für verschiedene Anwendungsfälle eingesetzt, von selbstfahrenden Automobilen bis hin zu schnellerer Medikamentenentwicklung, von automatischer Bilderfassung in Online-Bilddatenbanken bis hin zur intelligenter Echtzeit-Sprachübersetzung in Video-Chat-Anwendungen. Deep Learning ist eine Technik, die den neuronalen Lernprozess des menschlichen Gehirns modelliert, kontinuierlich lernt, kontinuierlich intelligenter wird und im Laufe der Zeit schneller genauere Ergebnisse liefert. Ein Kind wird zunächst von einem Erwachsenen gelehrt, verschiedene Formen richtig zu identifizieren und zu klassifizieren, um schließlich ohne Nachhilfe Formen identifizieren zu können. Ähnlich muss ein System für Deep Learning oder neuronales Lernen in Objekterkennung und -klassifizierung trainiert werden, damit es intelligenter und effizienter wird, grundlegende Objekte, verdeckte Objekte usw. zu identifizieren und den Objekten auch Kontext zuzuweisen.
  • Auf der einfachsten Ebene betrachten Neuronen im menschlichen Gehirn verschiedene Eingaben, die empfangen werden, jedem dieser Inputs werden Wichtigkeitsstufen zugewiesen, und Ausgaben werden an andere Neuronen weitergeleitet, um darauf zu reagieren. Ein künstliches Neuron oder Perzeptron ist das grundlegendste Modell eines neuronalen Netzes. In einem Beispiel kann ein Perzeptron eine oder mehrere Eingaben empfangen, die verschiedene Merkmale eines Objekts repräsentieren, für die das Perzeptron trainiert wird, sie zu erkennen und zu klassifizieren, und jedem dieser Merkmale wird ein bestimmtes Gewicht zugewiesen, das auf der Wichtigkeit dieses Merkmals für die Definition der Form eines Objekts basiert.
  • Ein Modell eines tiefen neuralen Netzes (Deep Neural Network; DNN) enthält mehrere Schichten vieler verbundener Knoten (z. B. Perzeptronen, Boltzmann-Maschinen, radiale Basisfunktionen, Konvolutionsschichten, usw.), die mit enormen Mengen Eingabedaten trainiert werden können, um komplexe Probleme schnell und mit hoher Genauigkeit zu lösen. In einem Beispiel zerlegt eine erste Schicht des DNN-Modells ein Eingabebild eines Automobils in verschiedene Teile und sucht nach Grundmustern wie z. B. Linien und Winkeln. Die zweite Schicht setzt die Linien zusammen, um nach Mustern höherer Ebenen wie z. B. Rädern, Windschutzscheiben und Spiegeln zu suchen. Die nächste Schicht identifiziert den Fahrzeugtyp, und die letzten paar Schichten erzeugen ein Etikett für das Eingabebild, welches das Modell einer bestimmten Fahrzeugmarke identifiziert.
  • Sobald das DNN trainiert ist, kann das DNN eingesetzt und verwendet werden, um Objekte oder Muster in einem als Schlussfolgerung bekannten Prozess zu identifizieren und zu klassifizieren. Beispiele für eine Schlussfolgerung (den Prozess, durch den ein DNN nützliche Informationen aus einer gegebenen Eingabe extrahiert) umfassen das Identifizieren von handschriftlichen Zahlen auf in Geldautomaten gelegten Schecks, das Identifizieren von Bildern von Freunden auf Fotos, das Liefern von Filmempfehlungen an über fünfzig Millionen Benutzer, das Identifizieren und Klassifizieren von verschiedenen Arten von Automobilen, Fußgängern und Straßengefahren in fahrerlosen Fahrzeugen oder das Übersetzen von menschlicher Sprache in Echtzeit.
  • Während des Trainings fließen die Daten in einer Vorwärtsfortpflanzungssphase durch das DNN, bis eine Vorhersage erzeugt wird, die ein der Eingabe entsprechendes Etikett anzeigt. Wenn das neuronale Netz die Eingabe nicht korrekt etikettiert, werden Fehler zwischen dem korrekten Etikett und dem vorhergesagten Etikett analysiert und werden die Gewichte für jedes Merkmal während einer Rückwärtsfortpflanzungssphase angepasst, bis der DNN die Eingabe und andere Eingaben in einem Trainingsdatensatz korrekt etikettiert. Das Training komplexer neuronaler Netze erfordert enorme Mengen an Parallelrechenleistung, einschließlich Gleitkomma-Multiplikationen und -Additionen, die von der PPU 300 unterstützt werden. Schlussfolgerung ist weniger rechenintensiv als Training, da es sich um einen latenzsensitiven Prozess handelt, bei dem ein trainiertes neuronales Netz auf neue Eingaben angewendet wird, die es vorher nicht gegeben hat, um Bilder zu klassifizieren, Sprache zu übersetzen und allgemein neue Informationen zu schlussfolgern.
  • Neuronale Netze sind stark auf mathematische Matrix-Operationen angewiesen, und komplexe mehrschichtige Netze erfordern enorme Mengen an Gleitkommaleistung und Bandbreite für Effizienz und Geschwindigkeit. Mit Tausenden von Verarbeitungs-Rechenkernen, die für mathematische Matrix-Operationen optimiert sind und mehrere zehn bis Hunderte TFLOPS Leistung liefern, ist die PPU 300 eine Computerplattform, die in der Lage ist, die für tiefe neuronale netzbasierte künstliche Intelligenz und Anwendungen für maschinelles Lernen erforderliche Leistung zu liefern.

Claims (20)

  1. Computerimplementiertes Verfahren, umfassend: Trainieren eines generativen adversativen Netzes, GAN, das ein neuronales Generator-Netz umfasst, das mit einem neuronalen Diskriminator-Netz gekoppelt ist, für eine erste Zeitdauer, wobei eine Topologie des GAN Merkmale und Verbindungen zwischen den Merkmalen innerhalb des neuronalen Generator-Netzes und innerhalb des neuronalen Diskriminator-Netzes umfasst; Modifizieren der Topologie des GAN, um ein modifiziertes GAN zu erzeugen; und Trainieren des modifizierten GAN für eine zweite Zeitdauer.
  2. Computerimplementiertes Verfahren nach Anspruch 1, wobei das Modifizieren der Topologie eine Verarbeitungskapazität des neuronalen Generator-Netzes ändert.
  3. Computerimplementiertes Verfahren nach Anspruch 1 oder 2, wobei die Topologie durch Hinzufügen mindestens einer Schicht in dem neuronalen Generator-Netz modifiziert wird.
  4. Computerimplementiertes Verfahren nach einem der vorhergehenden Ansprüche, wobei die Topologie durch Hinzufügen mindestens einer Schicht in dem neuronalen Diskriminator-Netz modifiziert wird.
  5. Computerimplementiertes Verfahren nach einem der vorhergehenden Ansprüche, wobei die Topologie durch Entfernen mindestens einer Schicht in dem neuronalen Generator-Netz modifiziert wird.
  6. Computerimplementiertes Verfahren nach einem der vorhergehenden Ansprüche, wobei Trainingsdaten Beispiel-Ausgabedaten enthalten, und das weiterhin umfasst, während des Trainings des modifizierten GAN: Verarbeiten von Eingabedaten durch das neuronale Generator-Netz, um Ausgabedaten zu erzeugen; Modifizieren der Beispiel-Ausgabedaten, um modifizierte Trainingsdaten zu erzeugen; und Verarbeiten der modifizierten Trainingsdaten und der Ausgabedaten durch das neuronale Diskriminator-Netz, um aktualisierte Parameter für das GAN zu erzeugen.
  7. Computerimplementiertes Verfahren nach Anspruch 6, wobei sich die modifizierten Trainingsdaten für die erste Zeitdauer von den modifizierten Trainingsdaten für die zweite Zeitdauer unterscheiden.
  8. Computerimplementiertes Verfahren nach Anspruch 6 oder 7, wobei die modifizierten Trainingsdaten für die erste Zeitdauer gemäß einer ersten Funktion modifiziert werden und die modifizierten Trainingsdaten für die zweite Zeitdauer gemäß einer zweiten Funktion, die von der ersten Funktion verschieden ist, modifiziert werden.
  9. Computerimplementiertes Verfahren nach einem der Ansprüche 6 bis 8, wobei die Trainingsdaten weiterhin zusätzliche Eingabedaten umfassen und die zusätzlichen Eingabedaten mit den Beispiel-Ausgabedaten gepaart sind.
  10. Computerimplementiertes Verfahren nach einem der Ansprüche 6 bis 9, wobei das Modifizieren der Trainingsdaten umfasst, eine Dichte der Beispiel-Ausgabedaten zu vergrößern oder zu verringern.
  11. Computerimplementiertes Verfahren nach einem der Ansprüche 6 bis 10, wobei die Trainingsdaten Bilddaten sind und das Modifizieren der Trainingsdaten umfasst, eine Pixelauflösung der Trainingsdaten zu verringern.
  12. Computerimplementiertes Verfahren nach Anspruch 11, wobei ein Betrag, um den die Pixelauflösung der Trainingsdaten für die erste Zeitdauer verringert wird, größer ist als für die zweite Zeitdauer.
  13. Computerimplementiertes Verfahren nach einem der vorhergehenden Ansprüche, das weiterhin umfasst, während der zweiten Zeitdauer die Topologie sanft zu modifizieren.
  14. Computerimplementiertes Verfahren nach Anspruch 13, wobei erste durch das GAN unter Verwendung der Topologie generierte Zwischenwerte mit zweiten durch das GAN unter Verwendung der modifizierten Topologie generierten Zwischenwerten interpoliert werden.
  15. Computerimplementiertes Verfahren nach einem der vorhergehenden Ansprüche, wobei das GAN dreidimensionale Bilddaten verarbeitet.
  16. Computerimplementiertes Verfahren nach einem der vorhergehenden Ansprüche, wobei das GAN Audiodaten verarbeitet.
  17. System, umfassend: ein generatives adversatives Netz (GAN), das ein neuronales Generator-Netz umfasst, das mit einem neuronalen Diskriminator-Netz gekoppelt ist, wobei das GAN für eine erste Zeitdauer trainiert wird und eine Topologie des GAN Merkmale und Verbindungen zwischen den Merkmalen innerhalb des neuronalen Generator-Netzes und innerhalb des neuronalen Diskriminator-Netzes umfasst; die Topologie des GAN modifiziert wird, um ein modifiziertes GAN zu erzeugen; und das modifizierte GAN für eine zweite Zeitdauer trainiert wird.
  18. System nach Anspruch 17, wobei das System so konfiguriert ist, dass es nach einem computerimplementierten Verfahren wie in einem der Ansprüche 1 bis 16 erwähnt arbeitet.
  19. Nichtflüchtiges computerlesbares Medium, das Computeranweisungen zum Trainieren eines generativen adversativen Netzes, GAN, speichert, umfassend ein neuronales Generator-Netz, das mit einem neuronalen Diskriminator-Netz gekoppelt ist, das bei Ausführung durch einen oder mehrere Prozessoren bewirkt, dass der eine oder die mehreren Prozessoren die Schritte eines computerimplementierten Verfahrens wie in einem der Ansprüche 1 bis 16 erwähnt durchführen: Trainieren des GAN für eine erste Zeitdauer, wobei eine Topologie des GAN Merkmale und Verbindungen zwischen den Merkmalen innerhalb des neuronalen Generator-Netzes und innerhalb des neuronalen Diskriminator-Netzes umfasst; Modifizieren der Topologie des GAN, um ein modifiziertes GAN zu erzeugen; und Trainieren des modifizierten GAN für eine zweite Zeitdauer.
  20. Computerimplementiertes Verfahren zum Trainieren eines generativen adversativen Netzes, GAN, welches ein neuronales Generator-Netz enthält, das mit einem neuronalen Diskriminator-Netz gekoppelt ist, wobei das Verfahren umfasst: Empfangen von Beispiel-Ausgabedaten an einem Eingang des GAN; das neuronale Generator-Netz verarbeitet Eingabedaten, um Generator-Ausgabedaten zu erzeugen; das neuronale Diskriminator-Netz vergleicht die Beispiel-Ausgabedaten mit den Generator-Ausgabedaten, und wenn die Generator-Ausgabedaten gemäß einem Kriterium ausreichend mit den Beispiel-Ausgabedaten übereinstimmen, Ausgeben eines ersten Trainings-Stimulus, und wenn die Generator-Ausgabedaten gemäß dem Kriterium nicht ausreichend mit den Beispiel-Ausgabedaten übereinstimmen, Ausgeben eines zweiten Trainings-Stimulus; als Antwort darauf, dass das neuronale Diskriminator-Netz den zweiten Trainings-Stimulus ausgibt, Modifizieren mindestens eines von Schichten, Merkmalen und Verbindungen innerhalb mindestens eines des neuronalen Generator-Netzes und des neuronalen Diskriminator-Netzes, wodurch das GAN modifiziert wird.
DE102018126670.7A 2017-10-26 2018-10-25 Fortschreitende Modifizierung von generativen adversativen neuronalen Netzen Pending DE102018126670A1 (de)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201762577611P 2017-10-26 2017-10-26
US62/577,611 2017-10-26
US16/156,994 2018-10-10
US16/156,994 US11250329B2 (en) 2017-10-26 2018-10-10 Progressive modification of generative adversarial neural networks

Publications (1)

Publication Number Publication Date
DE102018126670A1 true DE102018126670A1 (de) 2019-05-02

Family

ID=66138092

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102018126670.7A Pending DE102018126670A1 (de) 2017-10-26 2018-10-25 Fortschreitende Modifizierung von generativen adversativen neuronalen Netzen

Country Status (2)

Country Link
US (2) US11250329B2 (de)
DE (1) DE102018126670A1 (de)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112084830A (zh) * 2019-06-13 2020-12-15 百度(美国)有限责任公司 通过基于视觉的感知系统检测对抗样本

Families Citing this family (42)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8515052B2 (en) 2007-12-17 2013-08-20 Wai Wu Parallel signal processing system and method
GB201718756D0 (en) * 2017-11-13 2017-12-27 Cambridge Bio-Augmentation Systems Ltd Neural interface
TWI682359B (zh) * 2018-01-29 2020-01-11 國立清華大學 影像補全方法
US11093830B2 (en) * 2018-01-30 2021-08-17 D5Ai Llc Stacking multiple nodal networks
WO2019155052A1 (en) * 2018-02-09 2019-08-15 Deepmind Technologies Limited Generative neural network systems for generating instruction sequences to control an agent performing a task
US10970765B2 (en) * 2018-02-15 2021-04-06 Adobe Inc. Generating user-customized items using a visually-aware image generation network
US11797864B2 (en) * 2018-06-18 2023-10-24 Fotonation Limited Systems and methods for conditional generative models
CN110570358A (zh) * 2018-09-04 2019-12-13 阿里巴巴集团控股有限公司 基于gan网络的车损图像增强方法和装置
US11308133B2 (en) * 2018-09-28 2022-04-19 International Business Machines Corporation Entity matching using visual information
JP7318197B2 (ja) * 2018-11-15 2023-08-01 富士通株式会社 逐次学習プログラム、逐次学習装置および逐次学習方法
JP7278766B2 (ja) * 2018-12-21 2023-05-22 キヤノン株式会社 画像処理装置、画像処理方法およびプログラム
US11514330B2 (en) * 2019-01-14 2022-11-29 Cambia Health Solutions, Inc. Systems and methods for continual updating of response generation by an artificial intelligence chatbot
JP7279368B2 (ja) 2019-01-17 2023-05-23 富士通株式会社 学習方法、学習プログラムおよび学習装置
JP7163786B2 (ja) * 2019-01-17 2022-11-01 富士通株式会社 学習方法、学習プログラムおよび学習装置
US10872297B2 (en) * 2019-01-30 2020-12-22 StradVision, Inc. Learning method and learning device for generating training data from virtual data on virtual world by using generative adversarial network, to thereby reduce annotation cost required in training processes of neural network for autonomous driving, and a testing method and a testing device using the same
CN110348330B (zh) * 2019-06-24 2022-06-14 电子科技大学 基于vae-acgan的人脸姿态虚拟视图生成方法
JP7171520B2 (ja) * 2019-07-09 2022-11-15 株式会社日立製作所 機械学習システム
CN110264398B (zh) * 2019-07-16 2021-05-28 北京市商汤科技开发有限公司 图像处理方法及装置
US10944996B2 (en) * 2019-08-19 2021-03-09 Intel Corporation Visual quality optimized video compression
US10658005B1 (en) 2019-08-19 2020-05-19 Neon Evolution Inc. Methods and systems for image and voice processing
US10671838B1 (en) 2019-08-19 2020-06-02 Neon Evolution Inc. Methods and systems for image and voice processing
US10949715B1 (en) 2019-08-19 2021-03-16 Neon Evolution Inc. Methods and systems for image and voice processing
US10803646B1 (en) * 2019-08-19 2020-10-13 Neon Evolution Inc. Methods and systems for image and voice processing
US20210056432A1 (en) * 2019-08-21 2021-02-25 Dspace Digital Signal Processing And Control Engineering Gmbh Method for training an artificial neural generator network, method for training an artificial neural discriminator network, and test unit
US11152785B1 (en) * 2019-09-17 2021-10-19 X Development Llc Power grid assets prediction using generative adversarial networks
US11514694B2 (en) 2019-09-20 2022-11-29 Samsung Electronics Co., Ltd. Teaching GAN (generative adversarial networks) to generate per-pixel annotation
US20210103820A1 (en) * 2019-10-03 2021-04-08 Vathys, Inc. Pipelined backpropagation with minibatch emulation
KR102637341B1 (ko) * 2019-10-15 2024-02-16 삼성전자주식회사 음성 생성 방법 및 장치
US11062504B1 (en) * 2019-12-27 2021-07-13 Ping An Technology (Shenzhen) Co., Ltd. Method for generating model of sculpture of face, computing device, and non-transitory storage medium
US10991154B1 (en) * 2019-12-27 2021-04-27 Ping An Technology (Shenzhen) Co., Ltd. Method for generating model of sculpture of face with high meticulous, computing device, and non-transitory storage medium
US11403734B2 (en) 2020-01-07 2022-08-02 Ademco Inc. Systems and methods for converting low resolution images into high resolution images
CN111325319B (zh) * 2020-02-02 2023-11-28 腾讯云计算(北京)有限责任公司 一种神经网络模型的检测方法、装置、设备及存储介质
US11475313B2 (en) 2020-02-13 2022-10-18 International Business Machines Corporation Unsupervised, semi-supervised, and supervised learning using deep learning based probabilistic generative models
US11335112B2 (en) 2020-04-27 2022-05-17 Adernco Inc. Systems and methods for identifying a unified entity from a plurality of discrete parts
US11978328B2 (en) 2020-04-28 2024-05-07 Ademco Inc. Systems and methods for identifying user-customized relevant individuals in an ambient image at a doorbell device
US11587249B2 (en) 2020-09-24 2023-02-21 Eagle Technology, Llc Artificial intelligence (AI) system and methods for generating estimated height maps from electro-optic imagery
US11302071B1 (en) 2020-09-24 2022-04-12 Eagle Technology, Llc Artificial intelligence (AI) system using height seed initialization for extraction of digital elevation models (DEMs) and related methods
US11238307B1 (en) * 2020-09-24 2022-02-01 Eagle Technology, Llc System for performing change detection within a 3D geospatial model based upon semantic change detection using deep learning and related methods
US11747468B2 (en) 2020-09-24 2023-09-05 Eagle Technology, Llc System using a priori terrain height data for interferometric synthetic aperture radar (IFSAR) phase disambiguation and related methods
CN113505772B (zh) * 2021-06-23 2024-05-10 北京华创智芯科技有限公司 基于生成对抗网络的车牌图像生成方法及系统
US11308657B1 (en) 2021-08-11 2022-04-19 Neon Evolution Inc. Methods and systems for image processing using a learning engine
US11669937B2 (en) * 2022-02-28 2023-06-06 Huajie ZENG Method and system for enhancing image captured by on-board camera, and computing device

Family Cites Families (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6236296B2 (ja) * 2013-11-14 2017-11-22 株式会社デンソーアイティーラボラトリ 学習装置、学習プログラム、及び学習方法
US9767381B2 (en) 2015-09-22 2017-09-19 Xerox Corporation Similarity-based detection of prominent objects using deep CNN pooling layers as features
US10395356B2 (en) 2016-05-25 2019-08-27 Kla-Tencor Corp. Generating simulated images from input images for semiconductor applications
US10319076B2 (en) 2016-06-16 2019-06-11 Facebook, Inc. Producing higher-quality samples of natural images
US10621486B2 (en) * 2016-08-12 2020-04-14 Beijing Deephi Intelligent Technology Co., Ltd. Method for optimizing an artificial neural network (ANN)
US10636141B2 (en) 2017-02-09 2020-04-28 Siemens Healthcare Gmbh Adversarial and dual inverse deep learning networks for medical image analysis
US10803378B2 (en) 2017-03-15 2020-10-13 Samsung Electronics Co., Ltd System and method for designing efficient super resolution deep convolutional neural networks by cascade network training, cascade network trimming, and dilated convolutions
CN107103590B (zh) 2017-03-22 2019-10-18 华南理工大学 一种基于深度卷积对抗生成网络的图像反射去除方法
US10733744B2 (en) * 2017-05-11 2020-08-04 Kla-Tencor Corp. Learning based approach for aligning images acquired with different modalities
CN106993851B (zh) 2017-05-18 2022-02-18 李文谦 一种基于鞋子图像和脚型图像的鞋楦参数自动预测方法及预测装置
CN107392973B (zh) 2017-06-06 2020-01-10 中国科学院自动化研究所 像素级手写体汉字自动生成方法、存储设备、处理装置
WO2018236565A1 (en) * 2017-06-20 2018-12-27 Hologic, Inc. METHOD AND SYSTEM FOR MEDICAL IMAGING WITH DYNAMIC SELF-LEARNING
CN107590530B (zh) 2017-07-17 2020-09-22 华南理工大学 一种基于生成对抗网络的逐层更新算法
CN107423701B (zh) 2017-07-17 2020-09-01 智慧眼科技股份有限公司 基于生成式对抗网络的人脸非监督特征学习方法及装置
CN107423700B (zh) 2017-07-17 2020-10-20 广州广电卓识智能科技有限公司 人证核实的方法及装置
CN107563509B (zh) 2017-07-17 2020-11-24 华南理工大学 一种基于特征返回的条件dcgan模型的动态调整方法
CN107451994A (zh) 2017-07-25 2017-12-08 宸盛科华(北京)科技有限公司 基于生成对抗网络的物体检测方法及装置
US10679129B2 (en) * 2017-09-28 2020-06-09 D5Ai Llc Stochastic categorical autoencoder network
DE102017219282A1 (de) * 2017-10-26 2019-05-02 Albert-Ludwigs-Universität Freiburg Verfahren und Vorrichtung zum automatischen Erzeugen eines künstlichen neuronalen Netzes
CN107945118B (zh) 2017-10-30 2021-09-28 南京邮电大学 一种基于生成式对抗网络的人脸图像修复方法
CN107992944A (zh) 2017-11-14 2018-05-04 华南理工大学 一种基于原始生成对抗网络模型的多尺度卷积方法
CN107993190B (zh) 2017-11-14 2020-05-19 中国科学院自动化研究所 图像水印去除装置
CN108009058A (zh) 2017-11-17 2018-05-08 阿里巴巴集团控股有限公司 异常设备识别方法及装置和电子设备
CN107798669B (zh) 2017-12-08 2021-12-21 北京小米移动软件有限公司 图像去雾方法、装置及计算机可读存储介质
CN108334847B (zh) 2018-02-06 2019-10-22 哈尔滨工业大学 一种真实场景下的基于深度学习的人脸识别方法
DE102018206110A1 (de) * 2018-04-20 2019-10-24 Zf Friedrichshafen Ag Trainingsverfahren
EP3859681A4 (de) * 2018-09-29 2021-12-15 Zhejiang University Verfahren zur erzeugung einer gesichtsanimation aus einem einzelbild

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112084830A (zh) * 2019-06-13 2020-12-15 百度(美国)有限责任公司 通过基于视觉的感知系统检测对抗样本

Also Published As

Publication number Publication date
US20220121958A1 (en) 2022-04-21
US11250329B2 (en) 2022-02-15
US11763168B2 (en) 2023-09-19
US20190130278A1 (en) 2019-05-02

Similar Documents

Publication Publication Date Title
DE102018126670A1 (de) Fortschreitende Modifizierung von generativen adversativen neuronalen Netzen
DE102018117813A1 (de) Zeitlich stabile Datenrekonstruktion mit einem externen rekurrenten neuronalen Netzwerk
DE102018108324A1 (de) System und Verfahren zur Schätzung eines optischen Flusses
DE102018132069A1 (de) Äquivariante Orientierungspunkt-Transformation für Orientierungspunkt-Lokalisierung
DE102019130702A1 (de) Stilbasierte architektur für generative neuronale netzwerke
DE102018130924A1 (de) Systeme und Verfahren zur dynamischen Gesichtsanalyse mittels eines rekurrenten neuronalen Netzes
DE102019102279A1 (de) Erzeugung von synthetischen Bildern zum Trainieren eines Neuronal-Netzwerkmodells
DE102018121282A1 (de) Differenzierbare rendering-pipeline für inverse graphik
DE102019130889A1 (de) Schätzung der tiefe eines mit einer monokularen rgb-kamera aufgenommenen videodatenstroms
DE102019106123A1 (de) Dreidimensionale (3D) Posenschätzung von Seiten einer monokularen Kamera
DE102021119726A1 (de) Dreidimensionale objektrekonstruktion aus einem video
DE102017124573A1 (de) Systeme und verfahren zum beschneiden von neuronalen netzen für eine betriebsmitteleffiziente folgerung
DE102019130311A1 (de) Transponierte schwachbesetzte matrix multipliziert mit dichtbesetzter matrix für ein training neuronaler netzwerke
DE102019102009A1 (de) Reduzierung des rauschens während des renderings durch parallele path-space-filterung unter verwendung von hashing
DE102018009315A1 (de) Verfahren tiefgehenden Lernens zum Trennen von Reflexions- und Übertragungsbildern, die an einer halbreflektierenden Oberfläche in einem Computerbild einer Realweltszene sichtbar sind
DE102021105249A1 (de) Mikrotraining zur iterativen verfeinerung eines neuronalen netzes mit wenigen anpassungen
DE102019128750A1 (de) Reduzierung des detailgrades eines polygonnetzes, um eine komplexität einer bildlich wiedergegebenen geometrie innerhalb einer szene zu verringern
DE102018124211A1 (de) Lernbasierte Kameraposenschätzung von Bildern einer Umgebung
DE102021121109A1 (de) Wiederherstellung dreidimensionaler modelle aus zweidimensionalen bildern
DE102019134020A1 (de) Dekompprimierungstechniken zur verarbeitung komprimierter daten, die für künstliche neuronale netzwerke geeignet sind
DE102019106996A1 (de) Darstellen eines neuronalen netzwerks unter verwendung von pfaden innerhalb des netzwerks zum verbessern der leistung des neuronalen netzwerks
DE102018114799A1 (de) Halbüberwachtes lernen zur orientierungspunktlokalisierung
DE102021205690A1 (de) Trainieren neuronaler Netze mit begrenzten Daten unter Verwendung invertierbarer Augmentationsoperatoren
DE102019103319A1 (de) Stochastisches runden von zahlenwerten
DE102022100360A1 (de) Framework für maschinelles lernen angewandt bei einer halbüberwachten einstellung, um instanzenverfolgung in einer sequenz von bildframes durchzuführen

Legal Events

Date Code Title Description
R012 Request for examination validly filed