DE102018126342A1 - Transformieren von faltenden neuronalen netzen zum lernen von visuellen sequenzen - Google Patents

Transformieren von faltenden neuronalen netzen zum lernen von visuellen sequenzen Download PDF

Info

Publication number
DE102018126342A1
DE102018126342A1 DE102018126342.2A DE102018126342A DE102018126342A1 DE 102018126342 A1 DE102018126342 A1 DE 102018126342A1 DE 102018126342 A DE102018126342 A DE 102018126342A DE 102018126342 A1 DE102018126342 A1 DE 102018126342A1
Authority
DE
Germany
Prior art keywords
layer
weights
hidden
neural network
model
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
DE102018126342.2A
Other languages
English (en)
Inventor
Xiaodong Yang
Pavlo Molchanov
Jan Kautz
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Nvidia Corp
Original Assignee
Nvidia Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Nvidia Corp filed Critical Nvidia Corp
Publication of DE102018126342A1 publication Critical patent/DE102018126342A1/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
    • G06N3/08Learning methods
    • G06N3/082Learning methods modifying the architecture, e.g. adding, deleting or silencing nodes or connections
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F18/00Pattern recognition
    • G06F18/20Analysing
    • G06F18/24Classification techniques
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/044Recurrent networks, e.g. Hopfield networks
    • 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/048Activation functions
    • 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/764Arrangements for image or video recognition or understanding using pattern recognition or machine learning using classification, e.g. of video objects
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V20/00Scenes; Scene-specific elements
    • G06V20/40Scenes; Scene-specific elements in video content
    • G06V20/41Higher-level, semantic clustering, classification or understanding of video scenes, e.g. detection, labelling or Markovian modelling of sport events or news items

Landscapes

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

Abstract

Es werden ein Verfahren, ein computerlesbares Medium und ein System zum Lernen von visuellen Sequenzen unter Verwendung neuronaler Netze offenbart. Das Verfahren umfasst die Schritte, eine nicht rekurrente Schicht innerhalb eines Modells eines trainierten faltenden neuronalen Netzes durch eine rekurrente Schicht zu ersetzten, um ein Modell eines visuelle Sequenzen lernenden neuronalen Netzes zu erzeugen, und Feedforward-Gewichte für die nicht rekurrente Schicht in Eingabe-zu-Verborgen-Gewichte der rekurrenten Schicht zu transformieren, um eine transformierte rekurrente Schicht zu erzeugen. Das Verfahren umfasst auch die Schritte, Verborgen-zu-Verborgen-Gewichte der rekurrenten Schicht auf Anfangswerte zu setzen und Videobilddaten durch das Modell eines visuelle Sequenzen lernenden neuronalen Netzes zu verarbeiten, um Klassifizierungs- oder Regressions-Ausgabedaten zu erzeugen.

Description

  • Gebiet der Erfindung
  • Die vorliegende Erfindung bezieht sich auf das Lernen von visuellen Sequenzen und insbesondere auf das Lernen von visuellen Sequenzen unter Verwendung neuronaler Netze.
  • Hintergrund
  • Rekurrente Neuronale Netze (RNNs) haben bei mannigfachen sequentiellen Lernproblemen einschließlich Sprachmodellierung, Handschrifterkennung, maschinelle Übersetzung, Spracherkennung, polyphone Musikmodellierung und intelligente Videoanalyse hervorragende Leistung erzielt. Ein einfaches rekurrentes (rückgerichtetes) neuronales Netz (VRNN; Vanilla Recurrent Neural Network) erweitert das konventionelle (vorwärtsgerichtete) Feedforward-Netz auf Behandeln einer Sequenz variabler Länge, indem der Kontext früherer Eingaben in seinen internen Zustand akkumuliert wird, um weitergehende Ausgaben zu beeinflussen. Zwar gibt es eine Fülle von Arbeiten zum Verständnis und zur Verbesserung von RNNs im Kontext von Sprach- und Audiosignalen, doch hat man der Analyse oder Modifizierung von RNNs für visuelle Sequenzen, die von Natur aus eigene Eigenschaften haben, relativ wenig Aufmerksamkeit geschenkt.
  • Im Gegensatz zu Sprache und Sprechen liegt die Verarbeitungseinheit einer visuellen Sequenz in einem strukturierteren Format vor, wie z. B. einem Bild oder einem kurzen Videoschnipsel. Daher dienen faltende neuronale Netze (CNNs; Convolutional Neural Networks) gewöhnlich als die Backbone-Netze, um semantische Merkmale zu extrahieren, und RNNs werden dann oben auf einem vortrainierten CNN aufgebaut. Ein wesentlicher Vorteil der Merkmal-Extraktion für visuelle Sequenzen ist, die extrem ausdrucksstarken CNN-Modelle zu nutzen, die auf großen Bild- und Video-Datensätzen vortrainiert werden. Es bleibt jedoch eine offene Frage, wie man RNNs aufbauen kann, um die Darstellungsleistung und Verallgemeinerungsfähigkeit dieser vortrainierten CNNs besser zu nutzen. Darüber hinaus zeigen visuelle Sequenzen typischerweise große Redundanz und weisen bei unterschiedlichen Anwendungen unterschiedliche Zeitabhängigkeiten auf. Es besteht die Notwendigkeit, diese Fragen und/oder andere Fragen im Zusammenhang mit dem Stand der Technik zu behandeln.
  • Kurzdarstellung
  • Es werden ein Verfahren, ein computerlesbares Medium und ein System zum Lernen von visuellen Sequenzen unter Verwendung neuronaler Netze offenbart. Das Verfahren umfasst die Schritte, eine nicht rekurrente Schicht innerhalb eines Modells eines trainierten neuronalen Netzes durch eine rekurrente Schicht zu ersetzten, um ein Modell eines visuelle Sequenzen lernenden neuronalen Netzes zu erzeugen, und Feedforward-Gewichte für die nicht rekurrente Schicht in Eingabe-zu-Verborgen-Gewichte (input-to-hidden weights) der rekurrenten Schicht zu transformieren, um eine transformierte rekurrente Schicht zu erzeugen. Das Verfahren umfasst auch die Schritte, Verborgen-zu-Verborgen-Gewichte (hiddento-hidden weights) der rekurrenten Schicht auf Anfangswerte zu setzen und Videobilddaten durch das Modell eines visuelle Sequenzen lernenden neuronalen Netzes zu verarbeiten, um Klassifizierungs- oder Regressions-Ausgabedaten zu erzeugen. In einer Ausführungsform ist das Modell eines trainierten neuronalen Netzes ein faltendes neuronales Netz (CNN).
  • Figurenliste
    • 1A veranschaulicht ein Flussdiagramm eines Verfahrens zum Lernen von visuellen Sequenzen unter Verwendung neuronaler Netze gemäß einer Ausführungsform;
    • 1B veranschaulicht ein Blockdiagramm eines Systems zum Lernen von visuellen Sequenzen gemäß einer Ausführungsform;
    • 1C veranschaulicht ein Blockdiagramm eines Systems nach dem Stand der Technik zum Lernen von visuellen Sequenzen;
    • 1D veranschaulicht ein weiteres Blockdiagramm eines Systems nach dem Stand der Technik zum Lernen von visuellen Sequenzen;
    • 1E veranschaulicht ein weiteres Blockdiagramm eines Videosequenz-Lernsystems gemäß einer Ausführungsform;
    • 1F veranschaulicht ein weiteres Flussdiagramm eines Verfahrens zum Lernen von visuellen Sequenzen unter Verwendung neuronaler Netze gemäß einer Ausführungsform;
    • 2A veranschaulicht ein Sättigungsdiagramm der Zeitabschnitte, in denen eine Merk- und Vergesstor-Einheit links oder rechts gesättigt ist, gemäß einer Ausführungsform;
    • 2B veranschaulicht ein Aktivierungshistogramm über 10 Klassen für eine erste Schicht gemäß einer Ausführungsform;
    • 2C veranschaulicht ein Aktivierungshistogramm über 10 Klassen für eine zweite Schicht gemäß einer Ausführungsform;
    • 2D veranschaulicht ein weiteres Flussdiagramm eines Verfahrens zum Lernen von visuellen Sequenzen unter Verwendung neuronaler Netze gemäß einer Ausführungsform;
    • 3 veranschaulicht eine Parallelverarbeitungseinheit gemäß einer Ausführungsform;
    • 4A veranschaulicht einen Allgemeinverarbeitungscluster der Parallelverarbeitungseinheit von 3 gemäß einer Ausführungsform;
    • 4B veranschaulicht eine Partitionseinheit der Parallelverarbeitungseinheit von 3 gemäß einer Ausführungsform;
    • 5 veranschaulicht den Streaming-Multiprozessor von 4A gemäß einer Ausführungsform; und
    • 6 veranschaulicht ein Beispiel-System, in dem die verschiedene Architektur und/oder Funktionalität der verschiedenen vorherigen Ausführungsformen implementiert werden kann.
  • Detaillierte Beschreibung
  • Eine oder mehrere nicht rekurrente Schichten eines Modells eines vortrainierten (d. h. trainierten) faltenden neuronalen Netzes werden jeweils in eine rekurrente Schicht transformiert, um ein Modell eines neuronalen Netzes zum Lernen von visuellen Sequenzen zu erzeugen. Feedforward-Gewichte einer trainierten nicht rekurrenten Schicht des Modells eines vortrainierten faltenden neuronalen Netzes, die in eine rekurrente Schicht transformiert wird, werden als Anfangswerte für die Eingabe-zu-Verborgen-Gewichte der rekurrenten Schicht verwendet. Während nachfolgendem Training werden die Eingabe-zu-Verborgen-Gewichte der rekurrenten Schicht feinabgestimmt, und Verborgen-zu-Verborgen-Gewichte, die auf untrainierte Werte initialisiert werden, werden gelernt. In einer Ausführungsform wird die Genauigkeit des resultierenden Modells eines neuronalen Netzes im Vergleich zu konventionellen Techniken verbessert und wird die Anzahl der Parameter des resultierenden Modells eines neuronalen Netzes reduziert. Die Transformationstechnik kann irgendeine rekurrente Struktur implementieren und ist für viele Anwendungen des Lernens visueller Sequenzen relevant, einschließlich, aber nicht beschränkt auf sequentielle Gesichtsausrichtung, dynamische Handgestenerkennung und Aktionserkennung.
  • 1A veranschaulicht ein Flussdiagramm eines Verfahrens zum Klassifizieren von Videobilddaten unter Verwendung tiefer neuronaler Netze gemäß einer Ausführungsform. Das Verfahren 100 wird im Kontext eines Modells eines neuronalen Netzes beschrieben, und das Verfahren 100 kann auch durch ein Programm, eine benutzerspezifische Schaltung oder durch eine Kombination aus einer benutzerspezifischen Schaltung und einem Programm durchgeführt werden. Zum Beispiel kann das Verfahren 100 von einer GPU, CPU oder irgendeinem Prozessor durchgeführt werden, der im Stande ist, die erforderlichen Verarbeitungsoperationen durchzuführen. Darüber hinaus werden Fachleute erkennen, dass irgendein System, welches das Verfahren 100 durchführt, im Schutzbereich und Geist der Ausführungsformen der vorliegenden Erfindung liegt.
  • Im Schritt 110 wird eine nicht rekurrente Schicht innerhalb eines Modells eines trainierten faltenden neuronalen Netzes durch eine rekurrente Schicht ersetzt, um ein Modell eines visuelle Sequenzen lernenden neuronalen Netzes zu erzeugen. In einer Ausführungsform ist das Modell eines trainierten faltenden neuronalen Netzes ein zweidimensionales (2D) CNN, und die Trainings-Videobilddaten entsprechen einem einzelnen Bild oder einem einzelnen Videobild. In einer Ausführungsform ist das Modell eines trainierten faltenden neuronalen Netzes ein dreidimensionales (3D) CNN, und die Trainings-Videobilddaten entsprechen einem Ausschnitt, einem Clip oder einer Sequenz von Videobildern.
  • In einer Ausführungsform ist das Modell eines transformierten neuronalen Netzes so konfiguriert, dass es Trainings-Videobilddaten von mindestens einer Modalität wie z. B. räumlich (Farbe), Tiefe oder optischer Fluss verarbeitet. Zum Beispiel kann das Modell eines neuronalen Netzes trainiert werden, sequentielle Gesichtsausrichtung unter Verwendung von Farbdaten durchzuführen. Das Modell eines neuronalen Netzes kann trainiert werden, Handgestenerkennung unter Verwendung von Farb- und Tiefeninformationen durchzuführen. Das Modell eines neuronalen Netzes kann trainiert werden, Aktionserkennung unter Verwendung von Farb- und Flussdaten durchzuführen. Optischer-Fluss-Daten können aus Videobilddaten berechnet werden. In einer Ausführungsform werden die Optischer-Fluss-Daten durch drei Farbkanäle dargestellt. Mindestens eine Schicht wird durch eine rekurrente Schicht ersetzt. Der optische Fluss erfasst explizit dynamische Bewegungen und liefert so Hinweise zur Erkennung von Aktionen und vermittelt grobe Hinweise auf die Form von bewegten Objekten, z. B. die Ski und Skistöcke in Ski-Videos.
  • Nachdem das Modell eines faltenden neuronalen Netzes trainiert worden ist, können eine oder mehrere nicht rekurrente (z. B. vollständig verbundene und/oder Faltungs-) Schichten des Modells eines trainierten faltenden neuronalen Netzes in jeweilige rekurrente Schichten transformiert werden. Ein Auswahlkriterium, das auf einer Verteilung von Aktivierungswerten für jede rekurrente Schicht basiert, kann verwendet werden, um die eine oder mehreren nicht rekurrenten Schichten auszuwählen, die zu transformieren sind. In einer Ausführungsform werden die durch rekurrente Schichten zu ersetzende(n) nicht rekurrente(n) Schicht(en) auf Basis eines Sättigungsmerkmals ausgewählt, wobei Aktivierungswerte für Neuronen in einer transformierten rekurrenten Schicht zwischen 0,0 und 1,0 verteilt sind. Die Verteilung von Aktivierungswerten wird als gesättigt erachtet, wenn mehr Aktivierungswerte nahe den minimalen und maximalen Aktivierungswerten als nahe der Mitte (die Mitte liegt zwischen 0,1 und 0,9) verteilt sind.
  • Im Schritt 120 werden (vortrainierte) Feedforward-Gewichte für die nicht rekurrente Schicht in Eingabe-zu-Verborgen-Gewichte der rekurrenten Schicht transformiert, um eine transformierte rekurrente Schicht zu erzeugen. In einem konventionellen System eines rekurrenten neuronalen Netzes wird typischerweise eine rekurrente Schicht zu einem CNN hinzugefügt, nachdem die letzte Schicht des CNN und die Parameter der rekurrenten Schicht (Eingabe-zu-Verborgen-Gewichte und Verborgen-zu-Verborgen-Gewichte) auf untrainierte Werte initialisiert worden sind. Im Gegensatz zu dem konventionellen System eines neuronalen Netzes werden die Feedforward-Gewichte einer vortrainierten nicht rekurrenten Schicht des Modells eines faltenden neuronalen Netzes, die in eine rekurrente Schicht transformiert wird, als Anfangswerte für die Eingabe-zu-Verborgen-Gewichte der rekurrenten Schicht verwendet.
  • In einer Ausführungsform können für rekurrente Schichten, wie z. B. einen Speicher mit langem Kurzzeitgedächtnis (LSTM; Long Short Term Memory) oder eine Tor-Rekurrenz-Einheit (GRU; Gated Recurrent Unit), Werte für die mehrfachen Eingabe-zu-Verborgen-Zustände, die mehrfachen Logikfunktionen entsprechen, auf Basis der Feedforward-Gewichte auf individuelle Werte initialisiert werden. Alternativ können Werte sämtlicher mehrfacher Eingabe-zu-Verborgen-Zustände unter Verwendung der Feedforward-Gewichte auf einheitliche Werte initialisiert werden. Gemeinsame Nutzung der einheitlichen Werte für mehrfache Logikfunktionen reduziert die Anzahl der rekurrenten Parameter, die unterhalten (d. h. gespeichert und aktualisiert) werden.
  • Im Schritt 130 werden Verborgen-zu-Verborgen-Gewichte der rekurrenten Schicht auf Anfangswerte gesetzt. In einer Ausführungsform sind die Anfangswerte für die Verborgen-zu-Verborgen-Gewichte Zufallswerte.
  • Im Schritt 140 werden Videobilddaten durch das Modell eines visuelle Sequenzen lernenden neuronalen Netzes verarbeitet, um Klassifizierungs- oder Regressions-Ausgabedaten zu erzeugen. Im Kontext der folgenden Beschreibung sind Klassifizierungs-Ausgabedaten (d. h. Vorhersagen) Klassenkennzeichnungen, die von dem Modell eines neuronalen Netzes für mindestens ein Bild von Videoeingabedaten erzeugt werden. In einer Ausführungsform sind die Regressions-Ausgabedaten die zweidimensionalen Orte von Gesichts-Orientierungspunkten in der Anwendung für sequentielle Gesichtsausrichtung. In einer Ausführungsform ist eine Klassenkennzeichnung ein klassenbedingter Wahrscheinlichkeitsvektor, der den Trainings-Videobilddaten zugeordnet ist. Während des Trainings werden Klassifizierungsgenauigkeitsdaten berechnet, indem die Klassifizierungsausgabedaten mit einer (in einem Trainingsdatensatz gelieferten) Ziel-Klassifizierungsausgabe verglichen werden und die Gewichte angepasst werden, um Unterschiede zwischen den Klassifizierungsausgabedaten und einer Ziel-Klassifizierungsausgabe zu verringern.
  • Es werden nun nähere Informationen zu verschiedenen optionalen Architekturen und Merkmalen gegeben, mit denen das vorgenannte Gerüst nach den Wünschen des Benutzers implementiert werden kann oder nicht. Man beachte dringend, 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 aufgenommen werden
  • RNNs hat man seit Jahrzehnten bei Sequenzlernen, für Sprachmodellierung, maschinelle Übersetzung und Spracherkennung gut untersucht. Ein Vanilla-RNN (VRNN) enthält einen rekurrenten oder rückgekoppelten Verborgen-Zustand ht , dessen Aktivierung von jener des vorherigen Zeitschritts abhängt: h t = H ( W i h y t + W h h h t 1 ) ,
    Figure DE102018126342A1_0001
    worin H
    Figure DE102018126342A1_0002
    eine Aktivierungsfunktion ist, Wth die Eingabe-zu-Verborgen-Matrix ist, Whh die Verborgen-zu-Verborgen-Matrix ist, yt die Eingabe in die rekurrente Schicht ist. Ein Bias-Vektor (nicht gezeigt) kann ebenfalls einbezogen werden. Um die Fähigkeit zur Nutzung von Kontextinformationen zu verbessern, hat man erhebliche Anstrengungen unternommen, um das Problem des Verschwindens von Gradienten für VRNN zu mildern. Zu den erfolgreichsten Varianten gehören LSTM und GRU, welche Logikfunktionen in die Zustandsdynamik einbauen. Zu jedem Zeitschritt unterhält LSTM eine Speicherzelle ct und einen Verborgen-Zustand ht , die durch Tore sorgfältig geregelt werden: i t = sigm ( W i i y t + W h i h t 1 ) , f t = sigm ( W i f y t + W h f h h 1 ) , o t = sigm ( W i o y t + W h o h t 1 ) , c ˜ t = tanh ( W i v y t + W h c h t 1 ) , c t = f t c t 1 + i t c ˜ t , h t = 0 t tanh ( c t ) .
    Figure DE102018126342A1_0003
  • Ähnlich wie in Gleichung (1) sind Wi die Eingabe-zu-Verborgen-Matrizen und sind Wh die Verborgen-zu-Verborgen-Matrizen. Hier sind it , ft und ot die Eingangs-, Merk- und Vergess- bzw. Ausgangstore. t ist der neue Speicherzustand, und ⊙ ist das elementweise Produkt. GRU vereinfacht LSTM in erster Linie, indem es den Verborgen-Zustand und die Speicherzelle zusammenführt und die Merk- und Vergesstore und die Eingangstore zu einem einzelnen Aktualisierungstor kombiniert: r t = sigm ( W i r y t + W h r h t 1 ) , z t = sigm ( W i z y t + W h z h t 1 ) , h ˜ t = tanh ( W i h y t + W h h ( r t h t 1 ) ) , h t = ( 1 z t ) h t 1 + z t h ˜ t ,
    Figure DE102018126342A1_0004
    worin rt und zt die Rücksetz- und Aktualisierungstore sind und t der Kandidat-Verborgen-Zustand ist. Man beachte, dass für die obigen drei grundlegenden rekurrenten Strukturen in den Gleichungen (1), (2) und (3) mehrfache rekurrente Schichten aufeinander gestapelt werden können, um tiefe und hierarchische rekurrente Verarbeitung durchzuführen.
  • Konventionell werden RNNs im Anschluss an die letzte Schicht vortrainierter CNNs für Aufgaben, visuelle Sequenzen zu lernen, angebracht, um die starke Darstellungsfähigkeit der vortrainierten CNN-Modelle zu nutzen und die langfristigen Zeitzusammenhänge zu erfassen. Im Gegensatz zu konventionellen Techniken wird eine effektivere und verallgemeinerte Methode beschrieben, die eine oder mehrere Schichten der vortrainierten CNNs direkt in rekurrente Schicht(en) umwandelt.
  • Eine Architektur eines neuronalen Netzes zum Lernen von visuellen Sequenzen
  • RNNs in Verbindung mit vortrainierten CNNs sind leistungsstarke Werkzeuge, um die wichtigen zeitlichen Verbindungen bei Aufgaben, visuelle Sequenzen zu lernen, zu nutzen. CNN-Modelle, die auf großen Bild- oder Video-Datensätzen vortrainiert sind, behalten starke Semantik- und Allgemeingültigkeits-Eigenschaften. Wenn eine oder mehrere rekurrente Schichten im Anschluss an einen vortrainierten CNN hinzugefügt werden, wie es konventionell geschieht, müssen die rekurrenten Schichten von Grund auf neu trainiert werden, selbst wenn ein vortrainiertes CNN für Merkmal-Extraktion verwendet wird. Im Gegensatz zu konventionellen Techniken wird eine vortrainierte Schicht eines Modells eines neuronalen Netzes direkt in eine rekurrente Schicht transformiert, um die Darstellungsleistung und Verallgemeinerungsfähigkeit vortrainierter faltender neuronaler Netze zu maximieren. In einer Ausführungsform sind eine oder mehrere Schichten, die transformiert werden, vortrainierte Faltungsschichten oder vollständig verbundene Schichten. Die Schwierigkeit, ein oder mehrere RNNs zu trainieren, wird gemildert, da Komponenten eines Modells eines vortrainierten faltenden neuronalen Netzes als ein teilweise vortrainiertes RNN verwendet werden. Daher wird die Verallgemeinerungsfähigkeit eines vortrainierten faltenden neuronalen Netzes an das RNN vererbt, was die Gesamtleistung verbessert.
  • 1B veranschaulicht ein Blockdiagramm eines Modells 115 eines visuelle Sequenzen lernenden neuronalen Netzes gemäß einer Ausführungsform. Das Modell 115 eines visuelle Sequenzen lernenden neuronalen Netzes enthält zwei Faltungsschichten 125 und eine PreRNN-Schicht 135. Die PreRNN-Schicht 135 ist eine rekurrente Schicht, die eine nicht rekurrente Schicht ersetzt hat. Eine erste Faltungsschicht 125 empfängt Eingabedaten, und die PreRNN-Schicht 135, die eine letzte Faltungsschicht 125 ersetzt hat, erzeugt Ausgabedaten. Eingabe-Videobilddaten können dem Modell 115 eines visuelle Sequenzen lernenden neuronalen Netzes in Form von Einzelbildern präsentiert werden.
  • Die Gewichte Wxy , die der PreRNN-Schicht 135 zugeordnet sind, sind vortrainierte Gewichte (d. h. Gewichte der vortrainierten nicht rekurrenten Schicht). Die Gewichte Whh und Who sind wahllos initialisierte Gewichte, die von der PreRNN-Schicht 135 eingeführt werden. Andere Ausführungsformen des Modells 115 eines visuelle Sequenzen lernenden neuronalen Netzes können weniger oder mehr Faltungsschichten 125 enthalten. Obwohl in 1B nur eine einzige PreRNN-Schicht 135 gezeigt ist, können mehr als eine Faltungsschicht 125 durch eine PreRNN-Schicht 135 ersetzt werden.
  • 1C veranschaulicht ein Blockdiagramm eines Systems 145 zum Lernen von visuellen Sequenzen nach dem Stand der Technik. Das bekannte System 145 enthält zwei Faltungsschichten 125, eine vollständig verbundene Schicht 160 und eine RNN-Schicht 165. Eine erste Faltungsschicht 125 empfängt Eingabedaten, und die RNN-Schicht 165 erzeugt Ausgabedaten. In Übereinstimmung mit verschiedenen Backbone-CNN-Architekturen ist die RNN-Schicht 165 oben auf die letzte Schicht 160 des vortrainierten faltenden neuronalen Netzes gestapelt, das die Faltungsschichten 125 und die vollständig verbundene Schicht 160 enthält.
  • Die Gewichte Wxy , die der vollständig verbundenen Schicht 160 zugeordnet sind, sind vortrainierte Gewichte. Die der RNN-Schicht 165 zugeordneten Gewichte Wih sind jedoch nicht vortrainiert. Die Gewichte Wth und Whh sind wahllos initialisierte Gewichte, die von der RNN-Schicht 165 eingeführt werden. Im Gegensatz zu dem Modell 115 eines visuelle Sequenzen lernenden neuronalen Netzes, bei dem die der PreRNN-Schicht 135 zugeordneten Gewichte vortrainiert sind, sind die der RNN-Schicht 165 des bekannten Systems 145 zugeordneten Gewichte nicht vortrainiert.
  • 1D veranschaulicht ein Blockdiagramm eines anderen Systems 155 zum Lernen von visuellen Sequenzen nach dem Stand der Technik. Das bekannte System 155 enthält eine Faltungsschicht 145, eine Faltungsschicht 125, eine Faltungsschicht 170, eine Mittelwert-Pooling-Schicht 165 und eine RNN-Schicht 165. Die erste Faltungsschicht 145 empfängt Eingabedaten, und die RNN-Schicht 165 erzeugt Ausgabedaten. Die RNN-Schicht 165 ist oben auf die Mittelwert-Pooling-Schicht 165 des Modells eines vortrainierten faltenden neuronalen Netzes gestapelt, das die Faltungsschicht 145, die Faltungsschicht 125, die Faltungsschicht 170 und die Mittelwert-Pooling-Schicht 165 enthält. Im Vergleich zu dem bekannten System 145 enthält das bekannte System 155 eine Rest- (oder Sprung-) Verbindung von der Faltungsschicht 145 zur Faltungsschicht 170.
  • Die Gewichte Wxy , die der Faltungsschicht 170 zugeordnet sind, sind vortrainierte Gewichte. Die der RNN-Schicht 165 zugeordneten Gewichte Wih sind jedoch nicht vortrainiert. Die Gewichte Whh und Who sind wahllos initialisierte Gewichte, die von der RNN-Schicht 165 eingeführt werden. Im Gegensatz zu dem Modell 115 eines visuelle Sequenzen lernenden neuronalen Netzes, bei dem die der PreRNN-Schicht 135 zugeordneten Gewichte vortrainiert sind, sind die der RNN-Schicht 165 des bekannten Systems 155 zugeordneten Gewichte nicht vortrainiert.
  • 1E veranschaulicht ein weiteres Blockdiagramm eines Modells 150 eines visuelle Sequenzen lernenden neuronalen Netzes gemäß einer Ausführungsform. Das Modell 150 eines visuelle Sequenzen lernenden neuronalen Netzes enthält eine Faltungsschicht 145, eine Faltungsschicht 125 und eine PreRNN-Schicht 175. Die PreRNN-Schicht 175 ist eine rekurrente Schicht, die eine nicht rekurrente Schicht ersetzt hat. Eine erste Faltungsschicht 125 empfängt Eingabedaten, und die PreRNN-Schicht 135 erzeugt Ausgabedaten. In einer Ausführungsform ersetzt die PreRNN-Schicht 135 eine letzte Faltungsschicht 170 und eine Mittelwert-Pooling-Schicht 165. Im Vergleich zu dem Modell 115 eines visuelle Sequenzen lernenden neuronalen Netzes enthält das Modell 150 eines visuelle Sequenzen lernenden neuronalen Netzes eine Rest- (oder Sprung-) Verbindung von der Faltungsschicht 145 zur PreRNN-Schicht 175.
  • Die Gewichte Wxy , die der PreRNN-Schicht 165 zugeordnet sind, sind vortrainierte Gewichte (d. h. Gewichte der vortrainierten nicht rekurrenten Schicht). Die vortrainierten Gewichte Wxy werden anstelle der Eingabe-zu-Verborgen-Gewicht-Eingaben in die PreRNN-Schicht 165 verwendet. Die Gewichte Whh und Who sind wahllos initialisierte Gewichte, die von der PreRNN-Schicht 135 eingeführt werden. Andere Ausführungsformen des Modells 115 eines visuelle Sequenzen lernenden neuronalen Netzes können weniger oder mehr Faltungsschichten 125 enthalten. Obwohl in 1E nur eine einzige PreRNN-Schicht 135 gezeigt ist, können mehr als eine Faltungsschicht 145, 125 und/oder 170 durch eine PreRNN-Schicht 135 ersetzt werden.
  • Das Ersetzen einer oder mehrerer Schichten eines Modells eines vortrainierten faltenden neuronalen Netzes durch PreRNN-Schicht(en) 135 oder 175 ist eine generische Methode, die auf verschiedene Architekturen vortrainierter zwei- und dreidimensionaler neuronaler Netze, insbesondere CNNs, angewendet werden kann. Wie in 1B und 1E gezeigt, kann eine Schicht von CNNs wie z. B. VGG und C3D mit vollständig verbundenen Schichten am Ende der Faltungsnetze durch eine PreRNN-Schicht 135 oder 175 ersetzt werden. Ähnlich kann auch eine Schicht von CNNs wie z. B. ResNet und DenseNet mit Faltungs- und Global-Mittelwert-Pooling-Schichten am Ende, wie in 1D gezeigt, durch eine PreRNN-Schicht 135 oder 175 ersetzt werden, um das Modell 150 eines visuelle Sequenzen lernenden neuronalen Netzes zu erzeugen. Das Ersetzen einer vortrainierten nicht rekurrenten Schicht durch eine PreRNN-Schicht 135 oder 175 ermöglicht auch eine Anpassung an alle drei grundlegenden rekurrenten Strukturen, die VRNN, LSTM und GRU umfassen. Zusätzlich kann eine Alternative, PreRNN-SIH, verwendet werden, um Logikfunktionen zu vereinfachen und rekurrente Parameter zu reduzieren. Ein Vorteil des Ersetzens einer vortrainierten nicht rekurrenten Schicht durch eine PreRNN-Schicht 135 oder 175 besteht darin, dass die Genauigkeit verbessert werden kann und Training der Gewichte für die nicht rekurrente Schicht genutzt wird. Jede PreRNN-Schicht 135 oder 175 kann die PreRNN-SIH-Logikfunktions-Technik verwenden.
  • Die letzte vollständig verbundene Schicht oder Faltungsschicht eines vortrainierten CNN habe die folgende Struktur: y = H ( W x y x ) ,
    Figure DE102018126342A1_0005
    worin H
    Figure DE102018126342A1_0006
    eine Aktivierungsfunktion ist, Wxy die vortrainierten Feedforward-Gewichte sind, x und y die Eingabe und Ausgabe der Schicht sind und o die Matrixmultiplikation für die vollständig verbundene Schicht oder eine Faltungsoperation für die Faltungsschicht anzeigt. Um die vortrainierte nicht rekurrente Schicht auszunutzen, wird die Feedforward-Schicht als eine PreRNN-Schicht 135 oder 175 umformuliert, wobei die vortrainierten Feedforward-Gewichte als Eingabe-zu-Verborgen-Gewichte für die PreRNN-Schicht 135 oder 175 verwendet werden. Die vollständig verbundene Schicht (wie z. B. die vollständig verbundene Schicht 160) kann wie folgt durch die PreRNN-Schicht 135 ersetzt werden: y t = H ( W x y x t + W h h y t 1 ) ,
    Figure DE102018126342A1_0007
    worin xt und yt reformiert werden, um der Eingabe- und Verborgen-Zustand der rekurrenten Schicht im Zeitpunkt t zu sein. Die Faltungsschicht (wie z. B. Faltungsschicht 125) kann in die PreRNN-Schicht 135 oder 175 transformiert werden durch: y t = H ( P ( B ( W x y x t ) + γ t ) + W h h y t 1 ) ,
    Figure DE102018126342A1_0008
    worin * die Faltungsoperation ist, B
    Figure DE102018126342A1_0009
    die Batch-Normalisierung mit der vorberechneten Mini-Batch-Statistik repräsentiert, γt eine optionale Rest- (oder Sprung-) Verbindung in Rest-Netzen anzeigt und P
    Figure DE102018126342A1_0010
    das Global-Mittelwert-Pooling ist.
  • Das Ersetzen einer nicht rekurrenten Schicht durch eine PreRNN-Schicht transformiert im Wesentlichen die Feedforward-Gewichte Wxy und die Ausgabe y in Gleichung (4) als die Eingabe-zu-Verborgen-Gewichte Wxy und den Verborgen-Zustand yt in den Gleichungen (5) und (6). Im Vergleich zu Gleichung (1) für das traditionelle VRNN, die zwei wahllos initialisierte Gewicht-Matrizen (Eingabe-zu-Verborgen-Gewicht-Matrix Wih und Verborgen-zu-Verborgen-Gewicht-Matrix Whh ) enthält, bringt das PreRNN in den Gleichungen (5) und (6) nur eine einzige von Grund auf zu trainierende Verborgen-zu-Verborgen-Gewicht-Matrix Whh ein, während die aus Gleichung (4) geerbten Eingabe-zu-Verborgen-Gewichte Wxy vortrainiert worden sind und mit zusätzlichem Training gerade noch feinabgestimmt werden können. Dadurch kann das Modell eines neuronalen Netzes mit dem PreRNN 135 oder 175 die robuste Verallgemeinerung eines Modells eines vortrainierten neuronalen Netzes voll ausschöpfen und die Architektur weitestgehend erhalten.
  • 1F veranschaulicht ein weiteres Flussdiagramm eines Verfahrens zum Klassifizieren von Videobilddaten unter Verwendung tiefer neuronaler Netze gemäß einer Ausführungsform. Das Verfahren 112 wird im Kontext eines Modells eines neuronalen Netzes beschrieben, und das Verfahren 112 kann auch durch ein Programm, eine benutzerspezifische Schaltung oder durch eine Kombination aus einer benutzerspezifischen Schaltung und einem Programm durchgeführt werden. Zum Beispiel kann das Verfahren 112 von einer GPU, CPU oder irgendeinem Prozessor durchgeführt werden, der im Stande ist, die erforderlichen Verarbeitungsoperationen durchzuführen. Darüber hinaus werden Fachleute erkennen, dass irgendein System, welches das Verfahren 112 durchführt, im Schutzbereich und Geist der Ausführungsformen der vorliegenden Erfindung liegt.
  • Die Schritte 110, 120 und 130 werden wie vorher in Verbindung mit 1A beschrieben absolviert. Im Schritt 132 wird das Modell eines visuelle Sequenzen lernenden neuronalen Netzes trainiert, um die in die PreRNN-Schicht 135 oder 175 eingegebenen Verborgen-zu-Verborgen-Gewichte zu lernen. In einer Ausführungsform werden Eingabe-Videobilddaten durch das Modell 115 oder 150 eines visuelle Sequenzen lernenden neuronalen Netzes in einen Trainingsdatensatz aufgenommen, um Ausgabedaten zu erzeugen. Die Ausgabedaten werden mit im Trainingsdatensatz enthaltenen Ziel-Ausgabedaten verglichen, um Vergleichsergebnisse zu erzeugen, und die Verborgen-zu-Verborgen-Gewichte werden auf Basis der Vergleichsergebnisse angepasst. Während des Trainings werden auch die in die PreRNN-Schicht 135 oder 175 eingegebenen Eingabe-zu-Verborgen-Gewichte angepasst (d. h. feinabgestimmt), um Unterschiede zwischen den Ausgabedaten und den Ziel-Ausgabedaten zu reduzieren. In einer Ausführungsform ist der Trainingsdatensatz für sequentielle Gesichtsausrichtung konfiguriert und sind die Videobilddaten Farbdaten. Sequentielle Gesichtsausrichtung ist für viele Anwendungen wie z. B. Gesichtserkennung, Ausdrucksanalyse, Gesichtsanimationserfassung usw. grundlegend. In einer Ausführungsform ist der Trainingsdatensatz für dynamische Handgestenerkennung konfiguriert und sind die Videobilddaten Farbdaten und Tiefendaten. In einer Ausführungsform ist der Trainingsdatensatz für Aktionserkennung konfiguriert und sind die Videobilddaten Farbdaten und Optischer-Fluss-Daten.
  • Im Vergleich zu dem VRNN ist ein herausragendes Merkmal, das LSTM und GRU gemeinsam haben, die additive Natur beim Aktualisieren des Verborgen-Zustands von t auf t+1, d. h., den bestehenden Zustand beizubehalten und durch die Verwendung von Logikfunktionen Änderungen oben auf dem bestehenden Zustand hinzuzufügen. Schrittweises Aktualisieren des Verborgen-Zustands hilft jeder Verborgener-Zustand-Einheit, sich an die Existenz eines bestimmten Merkmals für eine lange Reihe von Schritten zu erinnern, und vor allem, Verknüpfungspfade zu erzeugen, damit der Fehler leicht durch mehrfache Schritte rückpropagiert werden kann, ohne zu schnell zu verschwinden. Die Logikfunktionen von LSTM und GRU können auch dann aufgenommen werden, wenn eine nicht rekurrente Schicht durch eine PreRNN-Schicht 135 oder 175 ersetzt wird. Jede Logikfunktion kann in zwei Komponenten aufgeteilt werden, und die vortrainierte Feedforward-Schicht (nicht rekurrent) kann zu den Komponenten fusioniert werden.
  • Torabhängige Eingabe-zu-Verborgen-Zustand-Transformation
  • Eine vortrainierte Feedforward-Schicht eines CNN kann in eine rekurrente Schicht für LSTM oder GRU umgewandelt werden, auf eine ähnliche Weise wie für ein VRNN. In den Gleichungen (2) und (3) besteht jedes Tor aus zwei Komponenten, nämlich dem Eingabe-zu-Verborgen-Zustand und dem Verborgen-zu-Verborgen-Zustand. Für einfache Notation wird der neue Speicherzustand eines LSTM c̃t genannt, und der Kandidat-Verborgen-Zustand einer GRU h̃t ein Tor. Der torabhängige Eingabe-zu-Verborgen-Zustand für die PreRNN-Schicht ist definiert als: u t ( g ) = { W i g p x t eine vollständig verbundene Schicht , P ( B ( W i g p x t ) + γ t eine Faltungsschicht ,
    Figure DE102018126342A1_0011
    worin g ein Tor-Index ist, g = {i,f,o,c} für LSTM und g = (r,z,h) für GRU, ut(g) der Eingabe-zu-Verborgen-Zustand des Tores g im Zeitpunkt t ist und W i g p
    Figure DE102018126342A1_0012
    die vortrainierten Eingabe-zu-Verborgen-Gewichte des Tores g sind. Die Feedforward-Gewichte W i g p
    Figure DE102018126342A1_0013
    p können zum Berechnen von torspezifischen Werten (z. B. ut(i), ut(f), ut(o) und ut(c) für LSTM oder ut(r), ut(z) und ut(h) für GRU) für mehrfache Eingabe-zu-Verborgen-Zustände entsprechend mehrfachen Logikfunktionen der PreRNN-Schicht 135 oder 175 verwendet werden.
  • Konkret werden die vortrainierten Feedforward-Gewichte Wxy in Gleichung (4) in die Eingabe-zu-Verborgen-Gewichte für ein Tor umgewandelt und werden die vortrainierten Werte zum Initialisieren der Eingabe-zu-Verborgen-Gewichte für andere Tore verwendet. Daher können die Logikfunktionen von LSTM in Gleichung (2) neu definiert werden als: i t = sigm ( u t ( i ) + W h i h t 1 ) , f t = sigm ( u t ( f ) + W h f h t 1 ) , o t = sigm ( u t ( o ) + W h o h t 1 ) , c ˜ t = tanh ( u t ( c ) + W h c h t 1 ) ,
    Figure DE102018126342A1_0014
    worin nur die Verborgen-zu-Verborgen-Gewichte Wh wahllos initialisiert werden und die gleichen Aktualisierungsfunktionen in Gleichung (2) befolgt werden, um die Speicherzelle ct und den Verborgen-Zustand ht zu erneuern. Die Gleichungen (7) und (8) können verwendet werden, um während Schritt 120 des Verfahrens 100 oder 112 die Feedforward-Gewichte in die Eingabe-zu-Verborgen-Gewichte des PreRNN 135 oder 175 zu transformieren, wenn das Modell 115 bzw. 150 eines visuelle Sequenzen lernenden neuronalen Netzes ein LSTM ist.
  • Dementsprechend können die Logikfunktionen von GRU in Gleichung (3) neu definiert werden als: r t = sigm ( u t ( r ) + W h r h t 1 ) , z t = sigm ( u z ( z ) + W h z h t 1 ) , h ˜ t = tanh ( u h ( h ) + W h h ( r t h t 1 ) ) ,
    Figure DE102018126342A1_0015
    und der Verborgen-Zustand ht wird auf die gleiche Weise aktualisiert wie in Gleichung (3). Durch Fusionieren der vortrainierten Feedforward-Schicht zu dem Eingabe-zu-Verborgen-Zustand jedes Tores führt eine PreRNN-Schicht weniger Eingabe-zu-Verborgen-Parameter ein, und es müssen nur die Verborgen-zu-Verborgen-Gewichte von Grund auf trainiert werden. Die Gleichungen (7) und (9) können verwendet werden, um während Schritt 120 des Verfahrens 100 oder 112 die Feedforward-Gewichte in die Eingabe-zu-Verborgen-Gewichte des PreRNN 135 oder 175 zu transformieren, wenn das Modell 115 bzw. 150 eines visuelle Sequenzen lernenden neuronalen Netzes eine GRU ist.
  • Einzel-Eingabe-zu-Verborgen-Zustand-Transformation (PreRNN-SIH)
  • In dem vorgenannten Transformationsschema lernt jedes Tor torspezifische Eingabe-zu-Verborgen-Gewichte W i g p
    Figure DE102018126342A1_0016
    obwohl jedes Tor bei dem gleichen Anfangszustand Wxy anfängt. Um die Logikfunktionen zu vereinfachen und die vortrainierte Feedforward-Schicht voll auszunutzen, können alle Tore an den gleichen Eingabe-zu-Verborgen-Zustand gebunden werden: v t ( g ) = { W x y x t eine vollständig verbundene Schicht , P ( B ( W x y x t ) + γ t eine Faltungsschicht ,
    Figure DE102018126342A1_0017
    worin vt der Zustand Einzel-Eingabe-zu-Verborgen (SIH; Single Input-to-Hidden) ist, der von allen Toren für die PreRNN-Schicht 135 oder 175 übernommen wird. Im Vergleich zum torabhängigen Eingabe-zu-Verborgen-Zustand in Gleichung (7) wandelt die SIH-Technik die vortrainierte Feedforward-Schicht direkt in den vereinheitlichten Eingabe-zu-Verborgen-Zustand für alle Tore um. Daher werden die Logikfunktionen von LSTM in Gleichung (2) geändert in: i t = sigm ( v t + W h i h t 1 ) , f t = sigm ( v t + W h f h t 1 ) , o t = sigm ( v t + W h o h t 1 ) c ˜ t = tanh ( v t + W h c h t 1 ) ,
    Figure DE102018126342A1_0018
    wobei alle Tore auf Basis des gleichen Eingabe-zu-Verborgen-Zustands vt berechnet werden. Auf die gleiche Weise werden die Logikfunktionen von GRU in Gleichung (3) umformuliert als: r t = sigm ( v t + W h r h t 1 ) , z t = sigm ( v t + W h z h t 1 ) , h ˜ t = tanh ( v t + W h h ( r t h t 1 ) ) ,
    Figure DE102018126342A1_0019
  • Daher führt PreRNN-SIH in den Gleichungen (11) und (12) nur die Verborgen-zu-Verborgen-Gewichte Wh . ein, die von Grund auf trainiert werden müssen. Da die vortrainierte Feedforward-Schicht als der gemeinsame Eingabe-zu-Verborgen-Zustand für alle Logikfunktionen von LSTM und GRU festgelegt ist, wird außerdem die Anzahl der rekurrenten Parameter für die PreRNN-Schicht 135 oder 175 reduziert, und folglich wird auch der Rechenaufwand im Vergleich zu Berechnung von torspezifischen Eingabe-zu-Verborgen-Zuständen (z. B. ut(i), ut(f), ut(o) und ut(c) oder ut(r), ut(z) und ut(h)) reduziert. Zusammenfassend lässt sich sagen, dass beim Transformieren einer nicht rekurrenten Schicht in eine PreRNN-Schicht 135 oder 175 unter Verwendung von SIH die Feedforward-Gewichte Wxy verwendet werden können, um Werte für einen vereinheitlichten Eingabe-zu-Verborgen-Zustand entsprechend mehrfachen Logikfunktionen der PreRNN-Schicht 135 oder 175 zu berechnen.
  • Wie vorher beschrieben, können eine oder mehrere nicht rekurrente Schichten ausgewählt werden, um durch PreRNN-Schicht(en) 135 oder 175 ersetzt zu werden. In einer Ausführungsform werden Verteilungen von Tor-Aktivierungen verwendet, um die eine oder mehreren nicht rekurrenten Schichten eines Modells eines trainierten neuronalen Netzes auszuwählen. Eine Tor-Einheit kann als links oder rechts gesättigt definiert werden, wenn die Tor-Aktivierungen kleiner als 0,1 oder größer als 0,9 sind, andernfalls wird die Tor-Einheit als ungesättigt definiert.
  • 2A veranschaulicht eine Sättigungskurve 200 der Zeitabschnitte, in denen eine Merk- und Vergesstor-Einheit links oder rechts gesättigt ist, gemäß einer Ausführungsform. Eine erste Schicht eines LSTM wird durch eine PreRNN-Schicht 135 oder 175 konstruiert, um eine erste Schicht des Modells 115 oder 150 eines visuelle Sequenzen lernenden neuronalen Netzes zu erzeugen. Separat wird eine zweite Schicht des LSTM durch eine PreRNN-Schicht 135 oder 175 konstruiert, um eine zweite Schicht des Modells 115 oder 150 eines visuelle Sequenzen lernenden neuronalen Netzes zu erzeugen. Das Diagramm veranschaulicht die Verteilung von Aktivierungswerten für Merk- und Vergesstor-Neuronen für die erste PreRNN-Schicht (PreLSTM Schicht 1) und für die zweite PreRNN-Schicht (PreLSTM Schicht 2) individuell. Das Diagramm veranschaulicht auch die Verteilung von Aktivierungswerten für Merk- und Vergesstor-Neuronen jeweils einer ersten Schicht und einer zweiten Schicht eines traditionellen LSTM (TraLSTM).
  • Die Aktivierungen in der ersten Schicht von PreLSTM (PreLSTM Schicht 1) liegen im gesättigteren Gebiet (d. h. näher an der Sättigungslinie) im Vergleich zu den Aktivierungen entweder der ersten oder der zweiten Schicht des TraLSTM. Die Implikation der Verteilung der ersten Schicht ist, dass PreLSTM besser im Stande ist, den zeitlichen Kontext zu nutzen, z. B. entsprechen die mehrfachen häufig rechts gesättigten Merk- und Vergesstor-Einheiten (unten rechts im Merk- und Vergesstor-Sättigungsdiagramm 200) den Speicherzellen, die sich ihre Werte für lange Zeiträume merken. Umgekehrt sind die Aktivierungen von TraLSTM, insbesondere der TraLSTM-Schicht 1, im ungesättigteren Gebiet des Sättigungsdiagramms 200 verteilt, was anzeigt, dass die integrierten zeitlichen Informationen schnell verfallen.
  • Man beachte, dass sich die Aktivierungen in der zweiten Schicht sowohl von TraLSTM als auch PreLSTM in der Nähe des Ursprungs im Sättigungsdiagramm 200 konzentrieren, wo die Tor-Einheiten selten links oder rechts gesättigt sind. Es ist wahrscheinlich, dass die zweite rekurrente Schicht (PreLSTM Schicht 2) praktisch auf eine Feedforward-Weise funktioniert und der vorhergehende Verborgen-Zustand kaum genutzt wird. Auf Basis des Sättigungsdiagramms 200 sollte die erste Schicht des LSTM ausgewählt werden, um mit einer PreRNN-Schicht 135 oder 175 konstruiert zu werden. Insbesondere ist eine Verteilung von Aktivierungswerten für Neuronen in der transformierten ersten Schicht links und rechts gesättigt, was anzeigt, dass die erste Schicht davon profitiert, mit einer PreRNN-Schicht 135 oder 175 konstruiert zu werden.
  • Da hingegen die Verteilung von Aktivierungswerten für Neuronen in der transformierten zweiten Schicht für die zweite Schicht weder rechts noch links gesättigt ist, sollte die zweite Schicht des LSTM nicht ausgewählt werden, um durch eine PreRNN-Schicht 135 oder 175 konstruiert zu werden. Daher wird für das Modell 115 oder 150 eines visuelle Sequenzen lernenden neuronalen Netzes die erste nicht rekurrente Schicht des LSTM durch eine PreRNN-Schicht 135 oder 175 aufgebaut und wird die zweite nicht rekurrente Schicht des LSTM nicht transformiert. In einer Ausführungsform sind weniger Aktivierungswerte für die Neuronen in der PreRNN-Schicht 135 oder 175 zwischen 0,1 und 0,9 verteilt als außerhalb von 0,1 und 0,9 innerhalb eines Bereichs von 0,0 bis 1,0 verteilt sind. Wenn die Aktivierungswerte für eine PreRNN-Schicht nicht gesättigt sind, kann die PreRNN-Schicht 135 oder 175 wieder zu der nicht rekurrenten Schicht zurückkehren, so dass die nicht rekurrente Schicht nicht ersetzt wird, um das Modell 115 oder 150 eines visuelle Sequenzen lernenden neuronalen Netzes zu erzeugen. Der Tor-Mechanismus kann durch Sättigungsdiagramme für LSTM oder durch Aktivierungshistogramme für GRU gefolgert werden.
  • 2B veranschaulicht ein Aktivierungshistogramm 205 über 10 Klassen für eine erste Schicht gemäß einer Ausführungsform. Eine erste Schicht eines GRU wird durch eine PreRNN-Schicht 135 oder 175 konstruiert, um eine erste Schicht eines Modells 115 oder 150 eines visuelle Sequenzen lernenden neuronalen Netzes zu erzeugen. Das Balkendiagramm veranschaulicht das Aktivierungshistogramm für Rücksetz- und Aktualisierungstor-Neuronen für die erste PreRNN-Schicht (PreGRU Rücksetztor und Aktualisierungstor). Das Balkendiagramm veranschaulicht auch das Aktivierungshistogramm für Rücksetz- und Aktualisierungstor-Neuronen für eine erste Schicht eines traditionellen GRU (TraGRU Rücksetztor und Aktualisierungstor).
  • Für die erste Schicht von PreGRU dominieren die links gesättigten (0,0-0,1) und rechts gesättigten (0,9-1,0) Klassen die Verteilung sowohl des Rücksetztores als auch des Aktualisierungstores, während sich die Aktivierungen von TraGRU-Toren in den ungesättigten Klassen in der Mitte der Verteilung sammeln. Auf Basis des Sättigungsdiagramms 205 sollte die erste Schicht der GRU ausgewählt werden, um durch eine PreRNN-Schicht 135 oder 175 konstruiert zu werden. Insbesondere ist eine Verteilung von Aktivierungswerten für Neuronen in der transformierten ersten Schicht links und rechts gesättigt, was anzeigt, dass die erste Schicht davon profitiert, durch eine PreRNN-Schicht 135 oder 175 konstruiert zu werden.
  • 2C veranschaulicht ein Aktivierungshistogramm 215 über 10 Klassen für eine zweite Schicht gemäß einer Ausführungsform. Eine zweite Schicht des GRU wird durch eine PreRNN-Schicht 135 oder 175 konstruiert, um eine zweite Schicht eines Modells 115 oder 150 eines visuelle Sequenzen lernenden neuronalen Netzes zu erzeugen. Das Balkendiagramm veranschaulicht das Aktivierungshistogramm für Rücksetz- und Aktualisierungstor-Neuronen für die zweite PreRNN-Schicht (PreGRU Rücksetztor und Aktualisierungstor). Das Balkendiagramm veranschaulicht auch das Aktivierungshistogramm für Rücksetz- und Aktualisierungstor-Neuronen für eine zweite Schicht eines traditionellen GRU (TraGRU Rücksetztor und Aktualisierungstor).
  • Für die zweite Schicht von PreGRU sammelt sich die Verteilung sowohl des Rücksetztores als auch des Aktualisierungstores im ungesättigten Gebiet in der Mitte der Verteilung. Da die Verteilung von Aktivierungswerten für Neuronen in der transformierten zweiten Schicht weder rechts noch links für die zweite Schicht gesättigt ist, sollte die zweite Schicht der GRU nicht ausgewählt werden, um in eine PreRNN-Schicht 135 oder 175 transformiert zu werden. Daher wird für das Modell 115 oder 150 eines visuelle Sequenzen lernenden neuronalen Netzes die erste nicht rekurrente Schicht der GRU durch eine PreRNN-Schicht 135 oder 175 konstruiert und wird die zweite nicht rekurrente Schicht der GRU nicht transformiert.
  • 2D veranschaulicht ein weiteres Flussdiagramm eines Verfahrens 225 zum Lernen von visuellen Sequenzen unter Verwendung neuronaler Netze gemäß einer Ausführungsform. Das Verfahren 225 wird im Kontext eines Modells eines neuronalen Netzes beschrieben, und das Verfahren 225 kann auch durch ein Programm, eine benutzerspezifische Schaltung oder durch eine Kombination aus einer benutzerspezifischen Schaltung und einem Programm durchgeführt werden. Zum Beispiel kann das Verfahren 225 von einer GPU, CPU oder irgendeinem Prozessor durchgeführt werden, der im Stande ist, die erforderlichen Verarbeitungsoperationen durchzuführen. Darüber hinaus werden Fachleute erkennen, dass irgendein System, welches das Verfahren 225 durchführt, im Schutzbereich und Geist der Ausführungsformen der vorliegenden Erfindung liegt.
  • Im Schritt 210 wird mindestens eine nicht rekurrente Schicht innerhalb eines Modells eines trainierten faltenden neuronalen Netzes durch eine jeweilige PreRNN-Schicht 135 oder 175 ersetzt, um ein Modell 115 oder 150 eines visuelle Sequenzen lernenden neuronalen Netzes zu erzeugen. Es können mehrfache Schritte 210 parallel durchgeführt werden, um verschiedene Kombinationen von mindestens einer nicht rekurrenten Schicht zu ersetzen.
  • Im Schritt 212 werden eine oder mehrere der nicht rekurrenten Schichten, die in einer der Kombinationen während der Schritte 210 ersetzt worden sind, auf Basis von Verteilung(en) von Aktivierungswerten für Neuronen in der bzw. den transformierten rekurrenten Schicht(en) ausgewählt. In einer Ausführungsform werden nicht rekurrente Schichten mit Aktivierungswerten mit einer linken und/oder rechten Sättigungsverteilung ausgewählt. In einer Ausführungsform ist bzw. sind die ausgewählten nicht rekurrenten Schicht(en) eine Kombination von mindestens einer Faltungsschicht oder mindestens einer vollständig verbundenen Schicht.
  • Schritt 120 wird wie vorher in Verbindung mit 1A beschrieben durchgeführt. Im Schritt 230 werden Verborgen-zu-Verborgen-Gewichte der rekurrenten Schicht(en) auf Anfangswerte gesetzt. Die Schritte 132 und 140 werden wie vorher in Verbindung mit 1A und 1F beschrieben zum Abschließen des Trainings durchgeführt. In einer Ausführungsform verbessert das Ersetzen einer oder mehrerer nicht rekurrenter Schichten durch PreRNN-Schicht(en) 135 oder 175 die Klassifizierungsgenauigkeit, und das resultierende Modell 115 oder 150 eines visuelle Sequenzen lernenden neuronalen Netzes konvergiert während des Trainings schneller als ein traditionelles RNN. Die schnellere Konvergenz kann ein Resultat des Fusionierens der vortrainierten Feedforward-Schichten zu rekurrenten Schichten sein, so dass die PreRNN-Schichten 135 oder 175 teilweise vortrainiert sind und daher Konvergenz beschleunigen können.
  • In einer Ausführungsform werden eine oder zwei vollständig verbundene Schichten eines vortrainierten VGG16 in eine PreRNN-Schicht 175 mit vereinheitlichten Parametern transformiert. Wie in den Gleichungen (6), (7) und (10) definiert, werden die vortrainierten Gewichte zu den PreRNN-Schichten 175 fusioniert. Zum Vergleich: Traditionelle RNNs bauen entsprechende rekurrente Schichten oben auf einer vollständig verbundenen siebten Schicht in VGG16 auf. Die unten gezeigte TABELLE 1 zeigt, dass PreRNN und PreRNN-SIH beide traditionelle RNNs übertreffen, da eine Fläche unter der Kurve (AUC) größer ist, wobei die kumulative Fehlerverteilungskurve den normalisierten Punkt-zu-Punkt-Fehler für 68 Gesichts-Orientierungspunkte darstellt. TABELLE 1
    Gesichts-Orientierungspunkt-Erkennungsgenauigkeit (in AUC) der traditionellen RNNs und der PreRNN und PreRNN-SIH
    Trad itionell PreRNN Pr eRNN-SIH
    1 Schicht 2 Schichten fc6 fc7 fc6/7 fc6 fc7 fc6/7
    VRNN 0,704 0,716 0,757 0,742 0,763 - - -
    LSTM 0,718 0,671 0,769 0,754 0,746 0,743 0,746 0,719
    GRU 0,722 0,698 0,772 0,755 0,761 0,768 0,748 0,762
    Transformieren der vollständig verbundenen Schichten (fc6, fc7 oder fc6/7) in PreRNN 175 Schichten übertrifft die traditionellen RNNs für die drei grundlegenden rekurrenten Strukturen deutlich. In einer Ausführungsform reduziert PreRNN-SIH die rekurrenten Parameter um bis zu 82 %, abgesehen von der Verbesserung der Genauigkeit. Im Vergleich dazu erzeugt unter den drei grundlegenden rekurrenten Strukturen LSTM ähnliche Resultate wie GRU, welche beide VRNN übertreffen.
  • Das Ersetzen einer oder mehrerer nicht rekurrenter Schichten eines Modells eines vortrainierten faltenden neuronalen Netzes durch eine PreRNN-Schicht 135 oder 175 zum Lernen von visuellen Sequenzen transformiert vortrainierte Feedforward-Schichten direkt in rekurrente Schichten. Das Ersetzen einer oder mehrerer nicht rekurrenter Schichten durch eine PreRNN-Schicht 135 oder 175 kann auf alle grundlegenden rekurrenten Strukturen und verschiedene Architekturen von neuronalen Netzen, insbesondere CNNs, angewendet werden. Umfangreiche Experimente an drei Anwendungen zeigen, dass PreRNN und PreRNN-SIH konsistent bessere Resultate liefern als traditionelle RNNs, zusätzlich zu einer signifikanten Reduzierung von rekurrenten Parametern durch PreRNN-SIH.
  • Parallelverarbeitungsarchitektur
  • 3 veranschaulicht eine Parallelverarbeitungseinheit (PPU) 300 gemäß einer Ausführungsform. Die PPU 300 kann so konfiguriert sein, das sie das Modell 115 oder 150 eines visuelle Sequenzen lernenden neuronalen Netzes implementiert.
  • 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 Anweisungen, 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.
  • Wie in 3 gezeigt, enthält die PPU 300 eine Eingabe/Ausgabe-(I/O)-Einheit 305, eine Host-Schnittstelleneinheit 310, 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 einen Systembus 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 I/O-Einheit 305 ist so konfiguriert, dass sie über den Systembus 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 den Systembus 302 oder über ein oder mehrere Zwischen-Geräte wie z. B. eine Speicherbrücke kommunizieren. In einer Ausführungsform implementiert die I/O-Einheit 305 eine PCIe-(Peripheral Component Interconnect Express)-Schnittstelle für Kommunikation über einen 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 ist mit einer Host-Schnittstelleneinheit 310 gekoppelt, die über den Systembus 302 empfangene Pakete decodiert. In einer Ausführungsform repräsentieren die Pakete Befehle, die so konfiguriert sind, dass sie die PPU 300 verschiedene Operationen durchführen lassen. Die Host-Schnittstelleneinheit 310 ü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. Andere 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 Host-Schnittstelleneinheit 310 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 Host-Schnittstelleneinheit 310 so konfiguriert sein, dass sie über Speicheranforderungen, die durch die I/O-Einheit 305 über den Systembus 302 übertragen werden, auf den Puffer in einem Systemspeicher zugreift, der mit dem Systembus 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 Host-Schnittstelleneinheit 310 führt der Vorverarbeitungseinheit 315 Zeiger auf einen oder mehrere Befehlsströme zu. Die Vorverarbeitungseinheit 315 verwaltet den einen oder die mehreren 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 mit der Host-Schnittstelleneinheit 310 gekoppelt sein. Die anderen Einheiten können auch über ein Hub 330 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. In einer Ausführungsform enthält die PPU 300 eine Anzahl U von Partitionseinheiten 380, die der Anzahl von separaten und eigenen 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. 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 zusammengehörigen Threads umfassen, die hier als ein Warp bezeichnet werden. Ein Thread-Block kann sich auf eine Vielzahl von Gruppen von Threads beziehen, die Anweisungen zur Durchführung der Aufgabe enthalten. Threads in derselben Gruppe von Threads können Daten über Gemeinschaftsspeicher austauschen. In einer Ausführungsform umfasst eine Gruppe von Threads 32 zusammengehörige Threads.
  • 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-Rasteroperationen-Einheit (PROP) 415, eine Raster-Engine 425, ein Arbeitsverteilungs-Koppelfeld (WDX) 480, eine Speicherverwaltungs-Einheit (MMU) 490 und einen oder mehrere Texturverarbeitungs-Cluster (TPCs) 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 TPCs 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 TPCs 420 so konfigurieren, dass er mindestens einen Teil einer Grafik-Rendering-Pipeline implementiert. Zum Beispiel kann ein TPC 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 TPCs 420 zur Verarbeitung durch die Primitiv-Engine 435 oder den SM 440 weitergeleitet werden können.
  • Die PROP-Einheit 415 ist so konfiguriert, dass sie von der Raster-Engine 425 und den TPCs 420 erzeugte Daten an eine Rasteroperationen-(ROP)-Einheit in der Partitionseinheit 380 weiterleitet, die nachfolgend 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 eine 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 TPC 420 implementiert ist.
  • Jeder in dem GPC 350 enthaltene TPC 420 enthält einen M-Pipe-Controller (MPC) 430, eine Primitiv-Engine 435, einen oder mehrere SMs 440 und eine oder mehrere Textureinheiten 445. Der MPC 430 steuert den Betrieb des TPC 420 und leitet die vom Pipeline-Manager 410 empfangenen Pakete an die entsprechenden Einheiten im TPC 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.
  • In einer Ausführungsform sind die Textureinheiten 445 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. Die Textureinheiten 445 implementieren Textur-Operationen wie z. B. Filteroperationen mit Hilfe von Mip-Maps (d. h. Texturabbildungen mit unterschiedlichen Detaillierungsgraden). Die Textureinheit 445 wird auch als der Lade-/Speicherpfad für SM 440 zu MMU 490 verwendet. In einer Ausführungsform enthält jeder TPC 420 zwei Textureinheiten.
  • 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 Satzes von Anweisungen 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 Satzes von Anweisungen verarbeitet, wobei jedoch einzelne Threads in der Gruppe von Threads während der Ausführung voneinander abweichen dürfen. Mit anderen Worten, wenn eine Anweisung für die Gruppe von Threads zur Ausführung abgefertigt wird, können einige Threads in der Gruppe von Threads inaktiv sein, wodurch eine Nicht-Operation (NOP) durchgeführt wird, statt die Anweisung auszuführen. Der SM 440 wird im Folgenden in Verbindung mit 5 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 die Übersetzung von virtuellen Adressen in physische Adressen im Speicher 304 zu verbessern.
  • 4B veranschaulicht eine Speicherpartitionseinheit 380 der PPU 300 von 3 gemäß einer Ausführungsform. Wie in 4B gezeigt, enthält die Speicherpartitionseinheit 380 eine Rasteroperationen-(ROP)-Einheit 450, einen Level-2-Cache (L2-Cache) 460, eine Speicherschnittstelle 470 und ein L2-Koppelfeld (crossbar; XBar) 465. Die Speicherschnittstelle 470 ist mit dem Speicher 304 gekoppelt. Die Speicherschnittstelle 470 kann 16, 32, 64, 128-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 Partitionseinheit 380, wobei jede Partitionseinheit 380 an ein entsprechendes Speichergerät 304 angeschlossen ist. Zum Beispiel kann die PPU 300 an bis zu U Speichergeräte 304 angeschlossen sein, wie z. B. Grafik mit Doppel-Datenrate, Version 5, Speicher mit synchronem dynamischen Direktzugriff (GDDR5 SDRAM), In einer Ausführungsform implementiert die Speicherschnittstelle 470 eine DRAM-Schnittstelle und ist U gleich 8.
  • In einer Ausführungsform implementiert die PPU 300 eine mehrstufige Speicherhierarchie. Der Speicher 304 ist Off-Chip (nicht auf dem Chip) in SDRAM angesiedelt, der mit der PPU 300 gekoppelt ist. Daten aus dem Speicher 304 können 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 Partitionseinheit 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-1-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 enthält einen ROP-Manager 455, eine a Color ROP (CROP) Einheit 452 und eine Z ROP (ZROP) Einheit 454. Die CROP-Einheit 452 führt Rasteroperationen in Bezug auf Pixelfarbe durch, wie z. B. Farbkompression, Pixel-Blending und dergleichen. Die ZROP-Einheit 454 implementiert Tiefenprüfungen in Verbindung mit der Raster-Engine 425. Die ZROP-Einheit 454 empfängt eine Tiefe für eine Abtast-Position, die einem Pixelfragment zugeordnet ist, von der Culling-Engine der Raster-Engine 425. Die ZROP-Einheit 454 testet die Tiefe gegen eine entsprechende Tiefe in einem Tiefenpuffer für eine dem Fragment zugeordnete Abtast-Position. Wenn das Fragment den Tiefentest für die Abtast-Position besteht, aktualisiert die ZROP-Einheit 454 den Tiefenpuffer und sendet ein Ergebnis des Tiefentests an die Raster-Engine 425. Der ROP-Manager 455 steuert den Betrieb der ROP-Einheit 450. 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. Daher verfolgt der ROP-Manager 455 die von den verschiedenen GPCs 350 empfangenen Pakete und bestimmt, zu welchem GPC 350 ein von der ROP-Einheit 450 erzeugtes Ergebnis geleitet wird. Die CROP-Einheit 452 und die ZROP-Einheit 454 sind über ein L2-XBar 465 mit dem L2-Cache 460 gekoppelt.
  • 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 TPC 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 eine oder mehrere Gruppen von Threads (d. h. Warps), die dem SM 440 zugeordnet sind. Die Scheduler-Einheit 510 plant Threads für Ausführung in Gruppen von parallelen Threads ein, wobei jede Gruppe ein Warp genannt wird. In einer Ausführungsform enthält jeder Warp 32 Threads. Die Scheduler-Einheit 510 kann eine Vielzahl verschiedener Warps verwalten, die Warps für Ausführung einplanen 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.
  • In einer Ausführungsform ist jede Abfertigungs-Einheit 515 so konfiguriert, das sie eine oder mehrere Abfertigungs-Einheiten 515 enthält. Jede Abfertigungs-Einheit 515 ist so konfiguriert, dass sie Anweisungen an eine oder mehrere der Funktionseinheiten sendet. In der in 5 gezeigten Ausführungsform enthält die Scheduler-Einheit 510 zwei Abfertigungs-Einheiten 515, die es ermöglichen, dass während jedes Taktzyklus zwei verschiedene Anweisungen abgefertigt werden. 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 des 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 eigenen Verarbeitungs-Rechenkernen 550. Jeder Rechenkern 550 kann eine Einfachpräzisions-Verarbeitungseinheit mit vollständiger Pipeline enthalten, die eine Gleitkomma-Arithmetik-Logikeinheit und eine Ganzzahl-Arithmetik-Logikeinheit enthält. Der Rechenkern 550 kann auch eine Doppelpräzisions-Verarbeitungseinheit enthalten, die eine Gleitkomma-Arithmetik-Logikeinheit enthält. In einer Ausführungsform implementieren die Gleitkomma-Arithmetik-Logikeinheiten die Norm IEEE 754-2008 für Gleitkomma-Arithmetik. Jeder SM 440 umfasst auch M SFUs 552, die spezielle Funktionen durchführen (z. B. Attributbewertung, reziproke Quadratwurzel und dergleichen), und N LSUs 554, die Lade- und Speicheroperationen zwischen dem Gemeinschaftsspeicher/L1-Cache 570 und der Registerdatei 520 implementieren. In einer Ausführungsform enthält der SM 128 Rechenkerne 550, 32 SFUs 552 und 32 LSUs 554.
  • 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 hat der Gemeinschaftsspeicher/L1-Cache 570 64KB 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.
  • Die oben beschriebene PPU 300 kann so konfiguriert sein, dass sie Höchstparallelberechnungen viel schneller als konventionelle CPUs durchführt. Parallelberechnung hat Vorteile bei Grafikverarbeitung, Datenkompression, Biometrie, Flussverarbeitungsalgorithmen und dergleichen.
  • Bei Konfiguration für Universal-Parallelberechnung kann eine einfachere Konfiguration verwendet werden. Wie in 3 gezeigt, werden in diesem Modell Grafikverarbeitungseinheiten mit fester Funktion umgangen, wodurch ein viel einfacheres Programmiermodell entsteht. In dieser Konfiguration weist die Arbeitsverteilungseinheit 325 Thread-Blöcke direkt den TPCs 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 Partitionseinheit 380 globalen Speicher zu lesen und darin zu schreiben.
  • Bei Konfiguration für Universal-Parallelberechnung kann der SM 440 auch Befehle schreiben, mit denen die Scheduler-Einheit 320 neue Arbeit auf den TPCs 420 starten kann.
  • Eine Anwendung schreibt Modelldaten für eine Szene (d. h. eine Sammlung von Vertices und Attributen) in einen Speicher wie z. B. einen Systemspeicher oder Speicher 304. Die Modelldaten definieren jedes der Objekte, die auf einem Display sichtbar sein können. Die Anwendung tätigt dann einen API-Aufruf an den Treiber-Kernel, der anfordert, die Modelldaten zu rendern und anzuzeigen. Der Treiber-Kernel liest die Modelldaten und schreibt Befehle in die ein oder mehreren Datenströme, um Operationen zum Verarbeiten der Modelldaten durchzuführen. Die Befehle können sich auf verschiedene Shader-Programme beziehen, die auf den SMs 440 der PPU 300 zu implementieren sind, einschließlich eines oder mehrerer von einem Vertex-Shader, Hull-Shader, Domain-Shader, Geometrie-Shader und einem Pixel-Shader. Zum Beispiel können einer oder mehrere der SMs 440 so konfiguriert sein, dass sie ein Vertex-Shader-Programm ausführen, das eine Anzahl von durch die Modelldaten definierten Vertices verarbeitet. In einer Ausführungsform können die verschiedenen SMs 440 so konfiguriert sein, dass sie verschiedene Shader-Programme gleichzeitig ausführen. Zum Beispiel kann eine erste Teilmenge von SMs 440 so konfiguriert sein, dass sie ein Vertex-Shader-Programm ausführt, während eine zweite Teilmenge von SMs 440 so konfiguriert sein, dass sie ein Pixel-Shader-Programm ausführt. Die erste Teilmenge von SMs 440 verarbeitet Vertex-Daten, um verarbeitete Vertex-Daten zu erzeugen, und schreibt die verarbeiteten Vertex-Daten in den L2-Cache 460 und/oder den Speicher 304. Nachdem die verarbeiteten Vertex-Daten gerastert (d. h. von dreidimensionalen Daten in zweidimensionale Daten im Bildschirmraum transformiert) worden sind, um Fragmentdaten zu erzeugen, führt die zweite Teilmenge von SMs 440 einen Pixel-Shader aus, um verarbeitete Fragmentdaten zu erzeugen, die dann mit anderen verarbeiteten Fragmentdaten gemischt und in den Bildpuffer im Speicher 304 geschrieben werden. Das Vertex-Shader-Programm und das Pixel-Shader-Programm können gleichzeitig ausgeführt werden, wobei unterschiedliche Daten aus derselben Szene gemäß einem Pipeline-Vorgehen verarbeitet werden, bis alle Modelldaten für die Szene in den Bildpuffer gerendert worden sind. Anschließend wird der Inhalt des Bildpuffers an eine Display-Steuerung zur Anzeige auf einem Display-Gerät übertragen.
  • Die PPU 300 kann in einem Desktop-Computer, einem Laptop-Computer, einem Tablet-Computer, einem Smartphone (z. B. einem drahtlosen, tragbaren Gerät), einem Personal Digital Assistant (PDA), einer Digitalkamera, einem tragbaren elektronischen Gerät und dergleichen enthalten sein. In einer Ausführungsform ist die PPU 300 auf einem einzelnen Halbleitersubstrat aufgenommen. In einer anderen Ausführungsform ist die PPU 300 zusammen mit einen oder mehreren anderen Logikeinheiten, wie z. B. 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 wie z. B. GDDR5 SDRAM enthält. Die Grafikkarte kann so konfiguriert sein, dass sie eine Schnittstellenverbindung mit einem PCIe-Steckplatz auf einem Motherboard eines Desktop-Computers herstellt, das z. B. einen Northbridge-Chipsatz und einen Southbridge-Chipsatz enthält. In noch einer Ausführungsform kann die PPU 300 eine integrierte Grafikverarbeitungseinheit (iGPU) sein, die im Chipsatz (d. h. Northbridge) des Motherboards enthalten ist.
  • Innerhalb der PPU 300 können verschiedene Programme ausgeführt werden, um die verschiedenen Schichten CNN, FC 135 und RNN 235 der Video-Klassifizierungssysteme 115, 145, 200, 215 und 245 zu implementieren. Zum Beispiel kann der Gerätetreiber einen Kernel auf der PPU 300 starten, um mindestens eine 2D- oder 3D-CNN-Schicht auf einem SM 440 (oder mehreren SMs 440) zu implementieren. Der Gerätetreiber (oder der anfängliche Kernel, der von der PPU 300 ausgeführt wird) kann auch andere Kerne auf der PPU 300 starten, um andere CNN-Schichten durchzuführen, wie z. B. die FC 135, RNN 235 und den Klassifizierer 105, 106 oder 206. Darüber hinaus können einige der CNN-Schichten auf Festeinheit-Hardware implementiert werden, die innerhalb der PPU 300 implementiert ist. Man beachte, dass Resultate eines Kernels von einer oder mehreren dazwischenliegenden Hardwareeinheiten mit fester Funktion verarbeitet werden können, bevor sie von einem nachfolgenden Kernel auf einem SM 440 verarbeitet werden.
  • Beispiel-System
  • 6 veranschaulicht ein Beispiel-System 600, in dem die verschiedene Architektur und/oder Funktionalität der verschiedenen früheren Ausführungsformen implementiert sein kann. Das Beispiel-System 600 kann verwendet werden, um das Modell 115 oder 150 eines visuelle Sequenzen lernenden neuronalen Netzes zu implementieren.
  • Wie gezeigt, ist ein System 600 vorgesehen, das mindestens einen Zentralprozessor 601 enthält, der mit einem Kommunikationsbus 602 verbunden ist. Der Kommunikationsbus 602 kann unter Verwendung irgendeines geeigneten Protokolls implementiert werden, wie z. B. PCI (Peripheral Component Interconnect), PCI-Express, AGP (Accelerated Graphics Port), HyperTransport oder irgendwelchen anderen Bus- oder Punkt-zu-Punkt-Kommunikationsprotokoll(en). Das System 600 enthält auch einen Hauptspeicher 604. Steuerlogik (Software) und Daten werden im Hauptspeicher 604 gespeichert, der als Direktzugriffsspeicher (RAM) ausgeführt sein kann.
  • Das System 600 enthält auch Eingabegeräte 612, einen Grafikprozessor 606 und ein Display 608, d. h. ein herkömmliches CRT- (Kathodenstrahlröhre), LCD-(Flüssigkristall-Display), LED- (Leuchtdioden), Plasma-Display oder dergleichen. Benutzereingaben können von den Eingabegeräten 612 empfangen werden, z. B. einer Tastatur, einer Maus, einem Touchpad, einem Mikrofon und dergleichen. In einer Ausführungsform kann das Modell eines visuelle Sequenzen lernenden neuronalen Netzes zur Erkennung von dynamischen Handgesten als Benutzereingaben verwendet werden. Jedes der vorgenannten Module und/oder Geräte kann sich sogar auf einer einzelnen Halbleiterplattform befinden, um eine Grafikverarbeitungseinheit (GPU) zu bilden.
  • In der vorliegenden Ausführungsform kann sich eine einzelne Halbleiterplattform auf eine einzige einheitliche integrierte Schaltung oder einen Chip auf Halbleiterbasis beziehen. Man beachte, dass sich der Ausdruck einzelne Halbleiterplattform auch auf Mehrchip-Module mit erhöhter Konnektivität beziehen kann, die On-Chip-Betrieb simulieren und wesentliche Verbesserungen gegenüber Verwendung einer konventionellen Implementierung mit Zentralverarbeitungseinheit (CPU) und Bus herstellen. Natürlich können die verschiedenen Module nach den Wünschen des Benutzers auch getrennt oder in verschiedenen Kombinationen von Halbleiterplattformen angeordnet werden.
  • Das System 600 kann auch einen Sekundärspeicher 610 enthalten. 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 604 und/oder dem Sekundärspeicher 610 gespeichert werden. Solche Computerprogramme ermöglichen es dem System 600, verschiedene Funktionen durchzuführen, wenn sie ausgeführt werden. Der Speicher 604, der Sekundärspeicher 610 und/oder irgendwelche anderen Speicher sind mögliche Beispiele von computerlesbaren Medien. Mit Gesten verknüpfte Datenströme können im Hauptspeicher 604 und/oder im Sekundärspeicher 610 gespeichert werden.
  • In einer Ausführungsform kann die Architektur und/oder Funktionalität der verschiedenen vorhergehenden Figuren im Kontext des Zentralprozessors 610, des Grafikprozessors 606, einer integrierten Schaltung (nicht gezeigt), die mindestens einen Teil der Fähigkeiten des Zentralprozessors 610 und des Grafikprozessors 606 besitzt, eines Chipsatzes (d. h. einer Gruppe von integrierten Schaltungen, die als eine Einheit zur Durchführung von zusammengehörigen Funktionen ausgelegt sind und verkauft werden, und/oder irgendeiner anderen intergierten Schaltung dafür implementiert werden.
  • Weiterhin kann das System 600, obwohl nicht gezeigt, zu Kommunikationszwecken mit einem Netz (z. B. einem Telekommunikationsnetz, Lokalen Netz (LAN), Drahtlosnetz, Weitverkehrsnetz (WAN) wie z. B. dem Internet, Peer-to-Peer-Netz, Kabelnetz oder dergleichen) gekoppelt sein.
  • 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 Schutzbereich 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.

Claims (17)

  1. Computerimplementiertes Verfahren, umfassend: Ersetzen einer nicht rekurrenten Schicht innerhalb eines Modells eines trainierten neuronalen Netzes durch eine rekurrente Schicht, um ein Modell eines visuelle Sequenzen lernenden neuronalen Netzes zu erzeugen; Transformieren von Feedforward-Gewichten für die nicht rekurrente Schicht in Eingabe-zu-Verborgen-Gewichte der rekurrenten Schicht, um eine transformierte rekurrente Schicht zu erzeugen; Setzen von Verborgen-zu-Verborgen-Gewichten der rekurrenten Schicht auf Anfangswerte; und Verarbeiten von Videobilddaten durch das Modell eines visuelle Sequenzen lernenden neuronalen Netzes, um Klassifizierungs- oder Regressions-Ausgabedaten zu erzeugen.
  2. Verfahren nach Anspruch 1, das vor dem Verarbeiten der Videobilddaten weiterhin umfasst: Verarbeiten von Eingabe-Videobilddaten, die in einem Trainingsdatensatz enthalten sind, durch das Modell eines visuelle Sequenzen lernenden neuronalen Netzes, um Ausgabedaten zu erzeugen; Vergleichen der Ausgabedaten mit Ziel-Ausgabedaten, die in dem Trainingsdatensatz enthalten sind, um Vergleichsergebnisse zu erzeugen; und Anpassen der Verborgen-zu-Verborgen-Gewichte auf Basis der Vergleichsergebnisse.
  3. Verfahren nach Anspruch 2, das weiterhin umfasst, die Eingabe-zu-Verborgen-Gewichte auf Basis der Vergleichsergebnisse anzupassen.
  4. Verfahren nach Anspruch 2 oder 3, wobei der Trainingsdatensatz für sequentielle Gesichtsausrichtung konfiguriert ist und die Videobilddaten Farbdaten sind.
  5. Verfahren nach einem der Ansprüche 2 bis 4, wobei der Trainingsdatensatz für dynamische Handgestenerkennung konfiguriert ist und die Videobilddaten Farbdaten und Tiefendaten sind.
  6. Verfahren nach einem der Ansprüche 2 bis 5, wobei der Trainingsdatensatz für Aktionserkennung konfiguriert ist und die Videobilddaten Farbdaten und Optischer-Fluss-Daten sind.
  7. Verfahren nach einem der vorhergehenden Ansprüche, wobei die nicht rekurrente Schicht eine vollständig verbundene Schicht ist.
  8. Verfahren nach einem der vorhergehenden Ansprüche, wobei die nicht rekurrente Schicht eine Faltungsschicht ist.
  9. Verfahren nach einem der vorhergehenden Ansprüche, wobei das Transformieren umfasst, Werte von Parametern für einen mehrfachen Eingabe-zu-Verborgen-Zustand entsprechend mehrfachen Logikfunktionen der rekurrenten Schicht unter Verwendung der Feedforward-Gewichte zu berechnen.
  10. Verfahren nach einem der vorhergehenden Ansprüche, wobei das Transformieren umfasst, Werte von Parametern für einen vereinheitlichten Eingabe-zu-Verborgen-Zustand entsprechend mehrfachen Logikfunktionen der rekurrenten Schicht unter Verwendung der Feedforward-Gewichte zu berechnen.
  11. Verfahren nach einem der vorhergehenden Ansprüche, wobei das Ersetzen umfasst, die nicht rekurrente Schicht auf Basis einer Verteilung von Aktivierungswerten für Neuronen in der transformierten rekurrenten Schicht auszuwählen.
  12. Verfahren nach Anspruch 11, wobei weniger Aktivierungswerte für die Neuronen in der rekurrenten Schicht zwischen 0,1 und 0,9 verteilt sind als außerhalb von 0,1 und 0,9 innerhalb eines Bereichs von 0,0 bis 1,0 verteilt sind.
  13. System, umfassend: einen Speicher, der Videobilddaten speichert; und eine Parallelverarbeitungseinheit, die mit dem Speicher gekoppelt und für Folgendes konfiguriert ist: Ersetzen einer nicht rekurrenten Schicht innerhalb eines Modells eines trainierten neuronalen Netzes durch eine rekurrente Schicht, um ein Modell eines visuelle Sequenzen lernenden neuronalen Netzes zu erzeugen; Transformieren von Feedforward-Gewichten für die nicht rekurrente Schicht in Eingabe-zu-Verborgen-Gewichte der rekurrenten Schicht, um eine transformierte rekurrente Schicht zu erzeugen; Setzen von Verborgen-zu-Verborgen-Gewichten der rekurrenten Schicht auf Anfangswerte; und Verarbeiten der Videobilddaten durch das Modell eines visuelle Sequenzen lernenden neuronalen Netzes, um Klassifizierungs- oder Regressions-Ausgabedaten zu erzeugen.
  14. System nach Anspruch 13, wobei die Parallelverarbeitungseinheit weiterhin konfiguriert ist, vor dem Verarbeiten der Videobilddaten Folgendes zu tun: Verarbeiten von Eingabe-Videobilddaten, die in einem Trainingsdatensatz enthalten sind, durch das Modell eines visuelle Sequenzen lernenden neuronalen Netzes, um Ausgabedaten zu erzeugen; Vergleichen der Ausgabedaten mit Ziel-Ausgabedaten, die in dem Trainingsdatensatz enthalten sind, um Vergleichsergebnisse zu erzeugen; und Anpassen der Verborgen-zu-Verborgen-Gewichte auf Basis der Vergleichsergebnisse.
  15. System nach Anspruch 14, wobei die Parallelverarbeitungseinheit weiterhin konfiguriert ist, ein Verfahren gemäß einem der Ansprüche 2 bis 12 durchzuführen.
  16. System nach den Ansprüchen 13 bis 15, wobei die Parallelverarbeitungseinheit weiterhin konfiguriert ist, die nicht rekurrente Schicht auf Basis einer Verteilung von Aktivierungswerten für Neuronen in der transformierten rekurrenten Schicht auszuwählen, um die Feedforward-Gewichte zu transformieren.
  17. Nichtflüchtige computerlesbare Medien, die Computeranweisungen zum Lernen von visuellen Sequenzen speichern, die bei Ausführung durch einen Prozessor bewirken, dass der Prozessor die Schritte eines Verfahrens gemäß einem der Ansprüche 1 bis 12 ausführt.
DE102018126342.2A 2017-06-23 2018-10-23 Transformieren von faltenden neuronalen netzen zum lernen von visuellen sequenzen Pending DE102018126342A1 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201762524359P 2017-06-23 2017-06-23
US15/880,472 US11049018B2 (en) 2017-06-23 2018-01-25 Transforming convolutional neural networks for visual sequence learning
US15/880,472 2018-01-25

Publications (1)

Publication Number Publication Date
DE102018126342A1 true DE102018126342A1 (de) 2019-07-25

Family

ID=64692635

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102018126342.2A Pending DE102018126342A1 (de) 2017-06-23 2018-10-23 Transformieren von faltenden neuronalen netzen zum lernen von visuellen sequenzen

Country Status (2)

Country Link
US (2) US11049018B2 (de)
DE (1) DE102018126342A1 (de)

Families Citing this family (50)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11615285B2 (en) 2017-01-06 2023-03-28 Ecole Polytechnique Federale De Lausanne (Epfl) Generating and identifying functional subnetworks within structural networks
US10803581B2 (en) * 2017-11-06 2020-10-13 Beijing Keya Medical Technology Co., Ltd. System and method for generating and editing diagnosis reports based on medical images
EP3495988A1 (de) 2017-12-05 2019-06-12 Aptiv Technologies Limited Verfahren zur verarbeitung von bilddaten in einem verbindungsnetzwerk
US10546393B2 (en) * 2017-12-30 2020-01-28 Intel Corporation Compression in machine learning and deep learning processing
US10489639B2 (en) * 2018-02-12 2019-11-26 Avodah Labs, Inc. Automated sign language translation and communication using multiple input and output modalities
US10304208B1 (en) 2018-02-12 2019-05-28 Avodah Labs, Inc. Automated gesture identification using neural networks
WO2019157344A1 (en) * 2018-02-12 2019-08-15 Avodah Labs, Inc. Real-time gesture recognition method and apparatus
US10346198B1 (en) 2018-02-12 2019-07-09 Avodah Labs, Inc. Data processing architecture for improved data flow
US10289903B1 (en) 2018-02-12 2019-05-14 Avodah Labs, Inc. Visual sign language translation training device and method
EP3561727A1 (de) * 2018-04-23 2019-10-30 Aptiv Technologies Limited Vorrichtung und verfahren zum extrahieren von dynamischen informationen über eine szene unter verwendung eines neuronalen faltungsnetzwerks
EP3561726A1 (de) 2018-04-23 2019-10-30 Aptiv Technologies Limited Vorrichtung und verfahren zur verarbeitung von datensequenzen mithilfe eines neuronalen faltungsnetzes
US11663478B2 (en) 2018-06-11 2023-05-30 Inait Sa Characterizing activity in a recurrent artificial neural network
US11972343B2 (en) 2018-06-11 2024-04-30 Inait Sa Encoding and decoding information
US11893471B2 (en) 2018-06-11 2024-02-06 Inait Sa Encoding and decoding information and artificial neural networks
US20200050353A1 (en) * 2018-08-09 2020-02-13 Fuji Xerox Co., Ltd. Robust gesture recognizer for projector-camera interactive displays using deep neural networks with a depth camera
EP3617947A1 (de) * 2018-08-30 2020-03-04 Nokia Technologies Oy Vorrichtung und verfahren zur verarbeitung von bilddaten
US20200074290A1 (en) * 2018-08-30 2020-03-05 Element Ai Inc. Complex valued gating mechanisms
CN109522450B (zh) * 2018-11-29 2023-04-07 腾讯科技(深圳)有限公司 一种视频分类的方法以及服务器
CN109739703B (zh) * 2018-12-28 2020-01-17 中科寒武纪科技股份有限公司 调错方法及相关产品
CN109710787B (zh) * 2018-12-30 2023-03-28 陕西师范大学 基于深度学习的图像描述方法
CN111401105B (zh) * 2019-01-02 2023-11-24 中国移动通信有限公司研究院 一种视频表情识别方法、装置及设备
CN110084259B (zh) * 2019-01-10 2022-09-20 谢飞 一种结合面部纹理和光流特征的面瘫分级综合评估系统
US10496899B1 (en) * 2019-01-25 2019-12-03 StradVision, Inc. Learning method and learning device for adjusting parameters of CNN in which residual networks are provided for meta learning, and testing method and testing device using the same
USD912139S1 (en) 2019-01-28 2021-03-02 Avodah, Inc. Integrated dual display sensor
US11652603B2 (en) 2019-03-18 2023-05-16 Inait Sa Homomorphic encryption
US11569978B2 (en) 2019-03-18 2023-01-31 Inait Sa Encrypting and decrypting information
KR102200809B1 (ko) * 2019-04-01 2021-01-12 주식회사 엘렉시 학습기반 데이터 처리 시스템 및 모델 갱신 방법
CN110210429B (zh) * 2019-06-06 2022-11-29 山东大学 一种基于光流、图像、运动对抗生成网络提高焦虑、抑郁、愤怒表情识别正确率的方法
CN110245720B (zh) * 2019-06-22 2023-05-26 中南林业科技大学 一种基于深度学习的柑橘病虫害智能诊断方法及系统
CN110427867B (zh) * 2019-07-30 2021-11-19 华中科技大学 基于残差注意力机制的面部表情识别方法及系统
US10706286B1 (en) * 2019-09-05 2020-07-07 Alphonso Inc. 3D convolutional neural networks for television advertisement detection
US11568049B2 (en) 2019-09-27 2023-01-31 Mcafee, Llc Methods and apparatus to defend against adversarial machine learning
CN111126454B (zh) * 2019-12-05 2024-03-26 东软集团股份有限公司 图像处理方法、装置、存储介质及电子设备
US11580401B2 (en) 2019-12-11 2023-02-14 Inait Sa Distance metrics and clustering in recurrent neural networks
US11797827B2 (en) 2019-12-11 2023-10-24 Inait Sa Input into a neural network
US11816553B2 (en) * 2019-12-11 2023-11-14 Inait Sa Output from a recurrent neural network
US11513673B2 (en) 2019-12-11 2022-11-29 Robert Bosch Gmbh Steering deep sequence model with prototypes
US11651210B2 (en) 2019-12-11 2023-05-16 Inait Sa Interpreting and improving the processing results of recurrent neural networks
CN110929697B (zh) * 2019-12-17 2021-04-13 中国人民解放军海军航空大学 一种基于残差结构的神经网络目标识别方法及系统
CN111292525B (zh) * 2019-12-30 2023-01-13 南京艾特斯科技有限公司 基于神经网络的交通流预测方法
US11687778B2 (en) 2020-01-06 2023-06-27 The Research Foundation For The State University Of New York Fakecatcher: detection of synthetic portrait videos using biological signals
CN111209962B (zh) * 2020-01-06 2023-02-03 电子科技大学 一种联合热图特征回归的基于cnn特征提取网络的联合图像分类方法
CN111582136B (zh) * 2020-04-30 2024-04-16 京东方科技集团股份有限公司 表情识别方法及装置、电子设备、存储介质
US11485308B2 (en) * 2020-06-29 2022-11-01 Nvidia Corporation In-cabin hazard prevention and safety control system for autonomous machine applications
CN112348121B (zh) * 2020-12-01 2022-06-28 吉林大学 一种目标检测方法、设备及计算机存储介质
CN113221693B (zh) * 2021-04-29 2023-07-28 苏州大学 一种动作识别方法
CN113469260B (zh) * 2021-07-12 2022-10-04 天津理工大学 一种基于卷积神经网络、注意力机制及自注意力变换器的视觉描述方法
CN113744758B (zh) * 2021-09-16 2023-12-01 江南大学 基于2-DenseGRUNet模型的声音事件检测方法
US11443553B1 (en) * 2022-02-22 2022-09-13 Clearview Ai, Inc. Scalable training data preparation pipeline and efficient distributed trainer for deep neural networks in facial recognition
CN115240075B (zh) * 2022-09-22 2022-12-13 山东大学 电力视觉多粒度预训练大模型的构建与训练方法

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9665823B2 (en) 2013-12-06 2017-05-30 International Business Machines Corporation Method and system for joint training of hybrid neural networks for acoustic modeling in automatic speech recognition
WO2016197381A1 (en) 2015-06-12 2016-12-15 Sensetime Group Limited Methods and apparatus for recognizing text in an image
US9852492B2 (en) 2015-09-18 2017-12-26 Yahoo Holdings, Inc. Face detection
CN106548127B (zh) 2015-09-18 2022-11-04 松下电器(美国)知识产权公司 图像识别方法
US10395118B2 (en) * 2015-10-29 2019-08-27 Baidu Usa Llc Systems and methods for video paragraph captioning using hierarchical recurrent neural networks
US20170178346A1 (en) * 2015-12-16 2017-06-22 High School Cube, Llc Neural network architecture for analyzing video data
US10157309B2 (en) * 2016-01-14 2018-12-18 Nvidia Corporation Online detection and classification of dynamic gestures with recurrent convolutional neural networks
US10395356B2 (en) 2016-05-25 2019-08-27 Kla-Tencor Corp. Generating simulated images from input images for semiconductor applications
CN107220611B (zh) 2017-05-23 2020-02-11 上海交通大学 一种基于深度神经网络的空时特征提取方法

Also Published As

Publication number Publication date
US11049018B2 (en) 2021-06-29
US20180373985A1 (en) 2018-12-27
US11645530B2 (en) 2023-05-09
US20210271977A1 (en) 2021-09-02

Similar Documents

Publication Publication Date Title
DE102018126342A1 (de) Transformieren von faltenden neuronalen netzen zum lernen von visuellen sequenzen
DE102019103059B4 (de) Hieb- und stichfester Strahl-Dreieck-Schnittpunkt
DE102018126670A1 (de) Fortschreitende Modifizierung von generativen adversativen neuronalen Netzen
DE112020004702T5 (de) Bildgenerierung unter verwendung eines oder mehrerer neuronaler netze
DE102017124573A1 (de) Systeme und verfahren zum beschneiden von neuronalen netzen für eine betriebsmitteleffiziente folgerung
DE102018130924A1 (de) Systeme und Verfahren zur dynamischen Gesichtsanalyse mittels eines rekurrenten neuronalen Netzes
DE102018111407A1 (de) Methode zum maschinellen lernen für automatisches modellieren von mehrwertigen ausgaben
DE102021118444A1 (de) Einrichtung und Verfahren zum Komprimieren von Strahlverfolgungsbeschleunigungsstrukturaufbaudaten
DE102019103326A1 (de) Robuste, effiziente multiprozessor-koprozessor-schnittstelle
DE102018117813A1 (de) Zeitlich stabile Datenrekonstruktion mit einem externen rekurrenten neuronalen Netzwerk
DE102019101873A1 (de) Abfragespezifische Verhaltensmodifizierung von Baumtraversierung
DE102018132069A1 (de) Äquivariante Orientierungspunkt-Transformation für Orientierungspunkt-Lokalisierung
DE102017100609A1 (de) Online-Erfassung und Klassifizierung von dynamischen Gesten mit rekurrenten faltenden neuronalen Netzwerken
DE102018113845A1 (de) Systeme und Verfahren zum Trainieren von neuronalen Netzwerken mit dünnbesetzten Daten
DE102019133028A1 (de) Für neuronale netzwerke geeignetes effizientes matrixformat
DE102019102821A1 (de) Verfahren zur behandlung von ungeordneten opak- und alphastrahl/primitiv-schnittpunkten
DE102019103058A1 (de) Verfahren für fortgesetzte begrenzungsvolumenhierarchietraversierung auf schnittpunkte ohne shader-intervention
DE102018108324A1 (de) System und Verfahren zur Schätzung eines optischen Flusses
DE102021120605A1 (de) Effiziente softmax-berechnung
DE102020115026A1 (de) Systeme und Verfahren zur Tonabbildung von Bildern mit hohem Dynamikumfang für auf tiefem Lernen basierende Verarbeitung von hoher Qualität
DE102021119722A1 (de) Feingranulare pro-vektor-skalierung für neuronale netzwerkquantisierung
DE102020132377A1 (de) Vorrichtung und Verfahren zur Drosselung einer Raytracing-Pipeline
DE102020132557A1 (de) Vorrichtung und verfahren für asynchrones raytracing
DE102021121109A1 (de) Wiederherstellung dreidimensionaler modelle aus zweidimensionalen bildern
DE102020131901A1 (de) Vorrichtung und verfahren zum durchführen nicht lokaler mittelwertfilterung unter verwendung eines bewegungsschätzschaltkreises eines grafikprozessors

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R016 Response to examination communication