DE102018127265A1 - Multi-einzelbild-videointerpolation mit optischem fluss - Google Patents

Multi-einzelbild-videointerpolation mit optischem fluss Download PDF

Info

Publication number
DE102018127265A1
DE102018127265A1 DE102018127265.0A DE102018127265A DE102018127265A1 DE 102018127265 A1 DE102018127265 A1 DE 102018127265A1 DE 102018127265 A DE102018127265 A DE 102018127265A DE 102018127265 A1 DE102018127265 A1 DE 102018127265A1
Authority
DE
Germany
Prior art keywords
frame
data
optical
neural network
flow
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
DE102018127265.0A
Other languages
English (en)
Inventor
Huaizu Jiang
Deqing Sun
Varun Jampani
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
Priority claimed from US16/169,851 external-priority patent/US10776688B2/en
Application filed by Nvidia Corp filed Critical Nvidia Corp
Publication of DE102018127265A1 publication Critical patent/DE102018127265A1/de
Pending legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/132Sampling, masking or truncation of coding units, e.g. adaptive resampling, frame skipping, frame interpolation or high-frequency transform coefficient masking
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/136Incoming video signal characteristics or properties
    • H04N19/137Motion inside a coding unit, e.g. average field, frame or block difference
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/172Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a picture, frame or field
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/553Motion estimation dealing with occlusions
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/587Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal sub-sampling or interpolation, e.g. decimation or subsequent interpolation of pictures in a video sequence

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Television Systems (AREA)

Abstract

Videointerpolation wird dazu verwendet, ein oder mehrere Zwischen-Einzelbilder in Zeitschritten vorherzusagen, die zwischen zwei aufeinanderfolgenden Einzelbildern definiert sind. Ein erstes neuronales Netzwerkmodell approximiert optische Flussdaten, die eine Bewegung zwischen den beiden aufeinanderfolgenden Einzelbildern definieren. Ein zweites neuronales Netzwerkmodell verfeinert die optischen Flussdaten und prognostiziert Sichtbarkeitskarten für jeden Zeitschritt. Die beiden aufeinanderfolgenden Einzelbilder werden in Übereinstimmung mit den verfeinerten optischen Flussdaten für jeden Zeitschritt verzerrt, um Paare von verzerrten Einzelbildern für jeden Zeitschritt zu erzeugen. Das zweite neuronale Netzwerkmodell fusioniert dann auf der Grundlage der Sichtbarkeitskarten das Paar von verzerrten Einzelbildern, um das Zwischen-Einzelbild für jeden Zeitschritt zu erzeugen. Artefakte, die durch Bewegungsgrenzen und Okklusionen verursacht werden, werden in den prognostizierten Zwischen-Einzelbildern reduziert.

Description

  • GEBIET DER ERFINDUNG
  • Die Erfindung bezieht sich auf Videointerpolation und insbesondere auf Videointerpolation unter Verwendung eines optischen Flusses.
  • HINTERGRUND
  • Videointerpolation wird dazu verwendet, ein oder mehrere zusätzliche Einzelbilder zwischen zwei aufeinanderfolgenden Einzelbildern zu erzeugen. Ein Erhöhen der Anzahl von Einzelbildern ermöglicht eine Videowiedergabe mit einer höheren Einzelbildrate und Zeitlupenwiedergabe. Videointerpolation kann auch dazu verwendet werden, fließende Bildübergänge zu erzeugen. Die erzeugten Zwischen-Einzelbilder sollten sowohl räumlich als auch zeitlich kohärent sein, so dass durch Verdeckung bzw. Okklusion verursachte Artefakte minimiert werden. Herkömmliche Techniken erzeugen ein einzelnes Einzelbild zwischen zwei aufeinanderfolgenden Einzelbildern, so dass dann, wenn starke Bewegungen zwischen den beiden aufeinanderfolgenden Einzelbildern auftreten, Artefakte in dem Einzelbild vorhanden sind.
  • Die herkömmlichen Techniken können nicht direkt eingesetzt werden, um Videos mit beliebig höherer Bildrate zu erzeugen. Ein Ansatz, ein Einzelbild-Videointerpolationsverfahren einfach rekursiv anzuwenden, um mehrere Zwischen-Einzelbilder zu erzeugen, unterliegt zumindest zwei Einschränkungen. Erstens kann eine rekursive Einzelbildinterpolation nicht vollständig parallelisiert werden und ist daher langsam, da einige Einzelbilder erst dann berechnet werden können, wenn andere Einzelbilder fertig sind (z.B. hängt bei einer Interpolation von sieben Einzelbildern das Einzelbild 2 von 0 und 4 ab, während das Einzelbild 4 von 0 und 8 abhängt). Darüber hinaus akkumulieren sich während der rekursiven Interpolation Fehler. Zweitens kann eine Einzelbildinterpolation nur 2n-1 Zwischen-Einzelbilder (z.B. 3, 7) erzeugen. Infolgedessen erfordert ein rekursives Anwenden der Einzelbild-Videointerpolation zur Erzeugung von 1008-fps (Einzelbilder pro Sekunde) Video aus 24-fps Video die Erzeugung von 41 Zwischen-Einzelbildern, welches nicht effizient ist.
  • Vor kurzem wurden Techniken des optischen Flusses dazu verwendet, eine Einzelbildinterpolation durchzuführen. Bewegungsgrenzen und starke Okklusionen sind jedoch immer noch eine Herausforderung, so dass die interpolierten Einzelbilder dazu neigen, Artefakte in der Umgebung der Grenzen sich bewegender Objekte aufzuweisen. Es besteht eine Notwendigkeit, diese Fragestellungen und/oder andere mit dem Stand der Technik verbundene Fragestellungen zu behandeln.
  • KURZBESCHREIBUNG
  • Videointerpolation wird dazu verwendet, ein oder mehrere Zwischen-Einzelbilder in Zeitschritten, die zwischen zwei aufeinanderfolgenden Einzelbildern definiert sind, vorherzusagen. Ein erstes neuronales Netzwerkmodell approximiert optische Flussdaten, die Bewegung zwischen den beiden aufeinanderfolgenden Einzelbildern definieren. Ein zweites neuronales Netzwerkmodell verfeinert die optischen Flussdaten und prognostiziert Sichtbarkeitskarten für jeden Zeitschritt. Die beiden aufeinanderfolgenden Einzelbilder werden entsprechend den verfeinerten optischen Flussdaten für jeden Zeitschritt verzerrt, um Paare von verzerrten Einzelbildern für jeden Zeitschritt zu erzeugen. Das zweite neuronale Netzwerkmodell fusioniert dann das Paar von verzerrten Einzelbildern auf der Grundlage der Sichtbarkeitskarten, um das Zwischen-Einzelbild für jeden Zeitschritt zu erzeugen. Artefakte, die durch Bewegungsgrenzen und Okklusionen verursacht werden, sind in den vorhergesagten Zwischen-Einzelbildern reduziert.
  • Ein Verfahren, ein computerlesbares Medium und ein System zur Videointerpolation mittels optischen Flusses werden offenbart. Vorwärts gerichtete optische Flussdaten, die ausgehend von einem ersten Einzelbild hin zu einem zweiten Einzelbild in einer Folge von Einzelbildern berechnet wurden, und vorwärts gerichtete optische Zwischenflussdaten für eine Zeit in der Folge von Einzelbildern, die zwischen dem ersten Einzelbild und dem zweiten Einzelbild liegt, werden empfangen. Rückwärts gerichtete optische Flussdaten, die ausgehend von dem zweiten Einzelbild hin zu dem ersten Einzelbild berechnet wurden, und rückwärts gerichtete optische Zwischenflussdaten für die Zeit werden empfangen. Ein neuronales Netzwerkmodell zur Flussinterpolation erzeugt auf der Grundlage des ersten Einzelbilds und des zweiten Einzelbilds, der vorwärts gerichteten optischen Zwischenflussdaten, der rückwärts gerichteten optischen Zwischenflussdaten, des ersten Einzelbilds, das in Übereinstimmung mit den vorwärts gerichteten optischen Zwischenflussdaten verzerrt wurde, und des zweiten Einzelbilds, das in Übereinstimmung mit den rückwärts gerichteten optischen Zwischenflussdaten verzerrt wurde, ein Zwischenbild zu dieser Zeit.
  • Figurenliste
    • 1A veranschaulicht ein Blockdiagramm eines Einzelbild-Interpolationssystems gemäß einem Ausführungsbeispiel.
    • 1B ist ein konzeptionelles Diagramm der Flussinterpolation gemäß einem Ausführungsbeispiel.
    • 1C veranschaulicht ein Ablaufdiagramm eines Verfahrens zum Erzeugen eines Zwischen-Einzelbilds mittels Flussinterpolation gemäß einem Ausführungsbeispiel.
    • 1D ist ein konzeptionelles Diagramm eines Vorwärts- und Rückwärts-Verzerrens gemäß einem Ausführungsbeispiel.
    • 1E veranschaulicht ein Blockdiagramm eines anderen Einzelbild-Interpolationssystems gemäß einem Ausführungsbeispiel.
    • 1F veranschaulicht ein Ablaufdiagramm eines anderen Verfahrens zum Erzeugen eines Zwischen-Einzelbilds mittels Flussinterpolation gemäß einem Ausführungsbeispiel.
    • 2A veranschaulicht ein Blockdiagramm eines anderen Einzelbild-Interpolationssystems gemäß einem Ausführungsbeispiel.
    • 2B veranschaulicht ein Ablaufdiagramm eines Verfahrens zum Trainieren des Einzelbild-Interpolationssystems gemäß einem Ausführungsbeispiel.
    • 2C veranschaulicht Eingangs-Einzelbilder, bidirektionale optische Flüsse und verzerrte Eingangs-Einzelbilder gemäß einem Ausführungsbeispiel.
    • 2D veranschaulicht Sichtbarkeitskarten und vorhergesagte Zwischen-Einzelbilder gemäß einem Ausführungsbeispiel.
    • 3 veranschaulicht eine Parallelverarbeitungseinheit gemäß einem Ausführungsbeispiel.
    • 4A veranschaulicht einen allgemeinen Verarbeitungscluster innerhalb der Parallelverarbeitungseinheit von 3 gemäß einem Ausführungsbeispiel.
    • 4B veranschaulicht eine Speicherpartitionierungseinheit der Parallelverarbeitungseinheit von 3 gemäß einem Ausführungsbeispiel.
    • 5A veranschaulicht den Streaming-Multiprozessor von 4A gemäß einem Ausführungsbeispiel.
    • 5B ist ein konzeptionelles Diagramm eines Verarbeitungssystems, das unter Verwendung der PPU von 3 implementiert wurde, gemäß einem Ausführungsbeispiel.
    • 5C veranschaulicht ein beispielhaftes System, in welchem die unterschiedliche Architektur und/oder Funktionalität der verschiedenen vorangehenden Ausführungsbeispiele implementiert werden kann.
  • DETAILLIERTE BESCHREIBUNG
  • Es gibt viele unvergessliche Momente im Leben, die man mit einer Kamera in Zeitlupe aufnehmen möchte, weil die Details mit den Augen schwer zu erkennen sind: das erste Mal, wenn ein Baby läuft, ein schwieriger Skateboard-Trick, ein Hund, der einen Ball fängt, usw. Während es möglich ist, Videos mit einer Geschwindigkeit von 240 fps (Einzelbilder pro Sekunde) mit einem Mobiltelefon aufzunehmen, werden für höhere Einzelbildraten noch immer professionelle Hochgeschwindigkeitskameras benötigt. Darüber hinaus sind viele der Momente, die wir verlangsamen möchten, unvorhersehbar und werden daher mit Standardbildraten aufgezeichnet. Alles mit hohen Bildraten aufzuzeichnen ist impraktikabel - es erfordert große Speicherkapazitäten und ist energieintensiv für mobile Geräte. Daher ist es von großem Interesse, hochwertiges Zeitlupenvideo aus bestehenden Videos zu erzeugen. Zusätzlich zur Umwandlung von Standardvideos in höhere Bildraten kann die Videointerpolation dazu verwendet werden, sanfte Einzelbildübergänge zu erzeugen. Videointerpolation hat auch interessante neue Anwendungen im selbstbeaufsichtigten Lernen und dient als ein Überwachungssignal, um optischen Fluss aus unbenannten Videos zu lernen.
  • Ein neuronales Netzwerkmodell kann dazu trainiert werden, ein oder mehrere zwischenliegende (Zwischen-)Einzelbilder für eine Videosequenz zu interpolieren. So können beispielsweise Videos mit 240 Bildern pro Sekunde aus Standardsequenzen (30 Bilder pro Sekunde) erzeugt werden, indem sieben Zwischen-Einzelbilder für bzw. pro jeweils zwei aufeinanderfolgende Bilder interpoliert werden. Die Zwischen-Einzelbilder, die durch das neuronale Netzmodell erzeugt werden, sind innerhalb der Videosequenz sowohl räumlich als auch zeitlich kohärent. Eine erfolgreiche Lösung sollte nicht nur die Bewegung zwischen zwei Eingangsbildern (implizit oder explizit) korrekt interpretieren, sondern auch Okklusionen verstehen, um Artefakte in den interpolierten Einzelbilder, insbesondere um Bewegungsgrenzen herum, zu reduzieren.
  • 1A veranschaulicht ein Blockdiagramm eines Einzelbild-Interpolationssystems 100 gemäß einem Ausführungsbeispiel. Ein sequentielles Bildpaar mit Farbdaten (I0 und I1 ) wird in das Einzelbild-Interpolationssystem 100 eingegeben. Im Allgemeinen empfängt das Einzelbild-Interpolationssystem 100 Eingangsdaten zu einer Zeit t und zu einer Zeit t+1, wie beispielsweise zwei Einzelbilder einer Bildfolge. Die Eingangs-Einzelbildsequenz kann dynamische Szenen beinhalten, die von einer stationären oder beweglichen (z.B. schwenkenden) Kamera aufgenommen wurden.
  • Das Einzelbild-Interpolationssystem 100 beinhaltet eine Verzerrungseinheit für optischen Fluss 105, ein neuronales Netzwerkmodell zur Flussverfeinerung 110 und ein neuronales Netzwerkmodell zur Flussinterpolation für jedes eine der sequentiellen Eingangs-Einzelbilder I0 und I1 . Das Einzelbild-Interpolationssystem 100 beinhaltet auch eine Bildvorhersageeinheit 115, die dazu konfiguriert ist, das Zwischen-Einzelbild It zu einer Zeit t ∈ (0,1) vorherzusagen.
  • Obwohl das Einzelbild-Interpolationssystem 100 im Kontext von Verarbeitungseinheiten beschrieben wird, können eine oder mehrere der Verzerrungseinheit für optischen Fluss 105, des neuronalen Netzwerkmodells zur Flussinterpolation 102 und die Bildvorhersageeinheit 115 durch ein Programm, eine benutzerdefinierte Schaltung oder durch eine Kombination aus einer benutzerdefinierten Schaltung und einem Programm ausgeführt werden. So kann beispielsweise das neuronale Netzwerkmodell zur Flussinterpolation 102 durch eine GPU (Grafikprozessoreinheit), eine CPU (Zentralprozessoreinheit) oder einen beliebigen Prozessor, der Schichten eines neuronalen Netzwerks implementieren kann, implementiert werden. Ferner versteht es sich für den Fachmann, dass jedes beliebige System, das die Betriebsabläufe des Einzelbild-Interpolationssystems 100 ausführt, innerhalb des Schutzumfangs und Rahmens von Ausführungsbeispielen der Erfindung liegt.
  • Das Einzelbild-Interpolationssystem 100 ist darauf trainiert, die RGB-Pixel von It direkt auszugeben. Wichtig ist, dass das Einzelbild-Interpolationssystem 100 lernen muss, nicht nur die Bewegungsmuster, sondern auch das Aussehen der beiden Eingangsbilder zu interpretieren. Aufgrund des mächtigen RGB-Farbraums ist eine genaue Vorhersage von Zwischen-Einzelbildern hoher Qualität schwierig.
  • Bidirektionale optische Flüsse (F1→0 , F0→1 ) werden auf der Grundlage der Eingangs-Einzelbilder I0 , I1 ) berechnet. Die bidirektionalen optischen Flüsse werden linear kombiniert, um bidirektionale optische Zwischenflüsse (F̂t→0, F̂t→1) für zumindest einen Zeitschritt t zwischen den beiden Eingangs-Einzelbildern zu approximieren. Die Eingangs-Einzelbilder werden jeweils durch die Verzerrungseinheiten für optischen Fluss 105-0 und 105-1 in Übereinstimmung mit den approximierten bidirektionalen optischen Zwischenflüssen für jeden Zeitschritt verzerrt, um verzerrte Eingangs-Einzelbilder Î0→t und Î1→t zu erzeugen.
  • Das neuronale Netzwerkmodell zur Flussverfeinerung 102 beinhaltet neuronale Netzwerke zur Flussverfeinerung 110-0 und 110-1 und eine Bildvorhersageeinheit 115. Die bidirektionalen optischen Zwischenflüsse (F̂t→0, F̂t→1) werden für jeden Zeitschritt durch das neuronale Netzwerkmodell zur Flussverfeinerung 110 unter Verwendung der beiden Eingangs-Einzelbilder, der bidirektionalen optischen Zwischenflüsse und der beiden verzerrten Eingangs-Einzelbilder verfeinert. Die verfeinerten bidirektionalen optischen Zwischenflüsse (Ft→0 , Ft→1 ) werden von den neuronalen Netzwerkmodellen 110-0 und 110-1 ausgegeben. Die verfeinerten bidirektionalen optischen Zwischenflüsse werden von der Bildvorhersageeinheit 115 verarbeitet, um das Zwischen-Einzelbild It zu erzeugen.
  • In einem Ausführungsbeispiel empfängt die Bildvorhersageeinheit 115 die beiden Eingangs-Einzelbilder und (rückwärts-) verzerrt die beiden Eingangs-Einzelbilder in Übereinstimmung mit den verfeinerten bidirektionalen optischen Zwischenflüssen für jeden Zeitschritt, um verfeinerte verzerrte Eingangs-Einzelbilder zu erzeugen. Daher können zusätzliche Verzerrungseinheiten für optischen Fluss 105 in der Bildvorhersageeinheit 115 enthalten sein, um die verfeinerten verzerrten Eingangs-Einzelbilder zu erzeugen, und werden die verfeinerten verzerrten Eingangs-Einzelbilder durch die Bildvorhersageeinheit 115 effektiv linear fusioniert bzw. verschmolzen, um das Zwischen-Einzelbild für jeden Zeitschritt zu erzeugen. In einem Ausführungsbeispiel empfängt die Bildvorhersageeinheit die verzerrten Eingangsbilder (Î0→t, Î1→t), die von den Verzerrungseinheiten für optischen Fluss 105-0 und 105-1 erzeugt wurden, und werden die verzerrten Eingangs-Einzelbilder durch die Bildvorhersageeinheit 115 effektiv linear fusioniert bzw. verschmolzen, um das Zwischen-Einzelbild für jeden Zeitschritt zu erzeugen.
  • Nachstehend werden weitere veranschaulichende Informationen zu verschiedenen optionalen Architekturen und Merkmalen gegeben, mit welchen das vorgenannte Rahmenwerk nach den Wünschen des Benutzers implementiert werden kann. Es sei ausdrücklich darauf hingewiesen, dass die folgenden Informationen zur Veranschaulichung dienen und nicht als beschränkend auszulegen sind. Ein beliebiges der folgenden Merkmale kann optional mit oder ohne Ausschluss anderer beschriebener Merkmale einbezogen werden.
  • 1B ist ein konzeptionelles Diagramm einer Zwischeninterpolation für optischen Fluss in Übereinstimmung mit einem Ausführungsbeispiel. Zu einem Zeitpunkt T=0 zeigt ein Satz von Pixeln (gefüllte Kreise) das erste Bild I0 , gezeigt in einer ersten Spalte, an, und zu einem Zeitpunkt T=1 zeigt der Satz von Pixeln das zweite Bild I1 , gezeigt in einer dritten Spalte, an. Zu der Zeit T=t wird ein Wert des mittleren Pixels (ungefüllter Kreis) approximiert, wobei die optischen Flussdaten von Pixeln an der gleichen Position in dem ersten und dem zweiten Einzelbild (bei T = 0 und T = 1), die als die ausgefüllten Pfeile dargestellt sind, ausgeliehen werden. Das Ausleihen der optischen Flussdaten von Pixeln in dem ersten und dem zweiten Bild liefert ein genaues Ergebnis, wenn das optische Flussfeld lokal glatt ist.
  • Wie in 1B dargestellt ist, wird der bidirektionale optische Fluss (F0→1 ) von dem Eingangs-Einzelbild I0 zu dem Eingangs-Einzelbild I1 berechnet, und wird der bidirektionale optische Fluss (F1→0 ) von dem Eingangs-Einzelbild I1 zu dem Eingangs-Einzelbild I0 berechnet. Die bidirektionalen optischen Flüsse werden linear kombiniert, um bidirektionale optische Zwischen-Flüsse (F̂t→0, F̂t→1) für den Zeitschritt t zwischen den beiden Eingangs-Einzelbildern, die als gestrichelte Pfeile dargestellt sind, zu approximieren. Insbesondere kann ein vorwärts gerichteter optischer Zwischenfluss Ft→1 (p) approximiert werden als F ^ t 1 ( p ) = ( 1 t ) F 0 1 ( p )
    Figure DE102018127265A1_0001
    oder F ^ t 1 ( p ) = ( 1 t ) F 1 0 ( p )
    Figure DE102018127265A1_0002
    wobei die Richtung des optischen Flusses zwischen den beiden Eingangs-Einzelbildern in die gleiche oder in die entgegengesetzte Richtung genommen wird und die Größe des bidirektionalen optischen Flusses entsprechend skaliert wird ((1 - t) in Gleichung (2)). Ähnlich zu der zeitlichen Konsistenz für die RGB-Bildsynthese kann in einem Ausführungsbeispiel der optische Zwischenfluss durch Kombinieren des bidirektionalen optische Flusses wie folgt (in Vektorform) synthetisiert werden. F ^ t 0 = ( 1 t ) t F 0 1 + t 2 F 1 0 F ^ t 1 = ( 1 t ) 2 F 0 1 t ( 1 t ) F 1 0
    Figure DE102018127265A1_0003
  • Das Approximieren des optischen Zwischenflusses durch Kombinieren des bidirektionalen optischen Flusses funktioniert gut in glatten Regionen, aber schlecht um Bewegungsgrenzen herum, weil die Bewegung in der Nähe von Bewegungsgrenzen lokal nicht glatt ist. Um Artefakte um Bewegungsgrenzen herum, die zu einer schlechten Bildvorhersage führen können, zu reduzieren, lernt das neuronale Netzwerkmodell zur Flussverfeinerung 110, die von dem neuronalen Netzwerkmodell zur Flussinterpolation 102 empfangenen bidirektionalen optischen Zwischenflüsse zu verfeinern. In einem Ausführungsbeispiel ist das neuronale Netzwerkmodell zur Flussinterpolation 102 ein faltendes neuronales Netzwerk (convolutional neural network; CNN). Das neuronale Netzwerkmodell zur Flussinterpolation 102 verfeinert die bidirektionalen optischen Zwischen-Flüsse (F̂t→0, F̂t→1) für jeden Zeitschritt unter Verwendung der bidirektionalen optischen Zwischenflüsse (F̂t→0, F̂t→1), der beiden Eingangs-Einzelbilder und der Eingangs-Einzelbilder, die von den Verzerrungseinheiten für optischen Fluss 105 verzerrt wurden.
  • 1C veranschaulicht ein Ablaufdiagramm eines Verfahrens 120 zum Erzeugen eines Zwischen-Einzelbilds mittels Flussinterpolation gemäß einem Ausführungsbeispiel. Obwohl das Verfahren 120 im Kontext einer Verarbeitungseinheit beschrieben wird, kann das Verfahren 120 auch durch ein Programm, eine benutzerdefinierte Schaltung oder durch eine Kombination aus einer benutzerdefinierten Schaltung und einem Programm durchgeführt werden. So kann beispielsweise das Verfahren 120 von einer GPU (Grafikprozessoreinheit), einer CPU (Zentralprozessoreinheit) oder einem beliebigen Prozessor, der ein neuronales Netzwerkmodell implementieren kann, ausgeführt werden. Darüber hinaus versteht sich für den Fachmann, dass jedes System, das die Methode 120 durchführt, innerhalb des Schutzbereichs und des Rahmens von Ausführungsbeispielen der Erfindung liegt.
  • In Schritt 125 werden die Daten des optischen Flusses bzw. die optischen Flussdaten (F0→1 ) und die Daten des optischen Zwischenflusses bzw. die optischen Zwischenflussdaten (F̂t→0) von einem neuronalen Netzwerkmodell zur Flussverfeinerung 110-0 empfangen. In einem Ausführungsbeispiel werden die vorwärts gerichteten optischen Flussdaten (F0→1 ) ausgehend von einem ersten Einzelbild I0 hin zu einem zweiten Einzelbild I1 in einer Folge von Einzelbildern berechnet. In einem Ausführungsbeispiel werden die rückwärts gerichteten optischen Flussdaten ausgehend von dem zweiten Einzelbild I1 hin zu dem ersten Einzelbild I0 berechnet, und werden die vorwärts gerichteten optischen Zwischenflussdaten und die rückwärts gerichteten optischen Zwischenflussdaten unter Verwendung der vorwärts gerichteten und der rückwärts gerichteten optischen Flussdaten vorhergesagt. In einem Ausführungsbeispiel werden das erste Einzelbild I0 und das zweite Einzelbild I1 durch ein neuronales Netzwerkmodell für Zwischenfluss verarbeitet, um die vorwärts gerichteten optischen Flussdaten und die rückwärts gerichteten optischen Flussdaten zu erzeugen.
  • Die vorwärts gerichteten optischen Zwischenflussdaten gelten für eine Zeit T=t in der Folge von Einzelbildern, die zwischen dem ersten Einzelbild und dem zweiten Einzelbild liegt. In einem Ausführungsbeispiel können Farbdaten für jedes Einzelbild als rote, grüne und blaue (RGB) Farbkomponenten, YUV-Komponenten oder dergleichen repräsentiert sein. Optische Flussdaten umfassen ein Flussfeld, das eine Richtung und eine Stärke der Bilddatenbewegung von dem ersten Einzelbild zu dem zweiten Einzelbild angibt. Mit anderen Worten kann sich eine bestimmte Farbe eines bestimmten Pixels oder eine Kante eines Objekts in dem ersten Einzelbild zu einem anderen Pixel in dem zweiten Einzelbild bewegen bzw. verschieben. Die Farbe kann einem Objekt in einer Szene zugeordnet sein, das sich zwischen dem ersten und dem zweiten Einzelbild bewegt. Alternativ kann sich eine Kameraposition, die dazu verwendet wird, die Szene aufzunehmen, zwischen dem ersten und dem zweiten Einzelbild ändern (Schwenken), so dass sich das Objekt zu bewegen scheint.
  • In Schritt 130 werden rückwärts gerichtete optische Zwischenflussdaten (F̂t→1) von dem neuronalen Netzwerkmodell zur Flussverfeinerung 110-1 empfangen. Die rückwärts gerichteten optischen Zwischenflussdaten (F̂t→1) sind für die Zeit T=t in der Folge von Einzelbildern, die zwischen dem ersten Einzelbild und dem zweiten Einzelbild liegt.
  • In Schritt 135 erzeugt das neuronale Netzwerkmodell zur Flussinterpolation 102 ein Zwischen-Einzelbild zu dieser Zeit auf der Grundlage des ersten Einzelbilds und des zweiten Einzelbilds, der vorwärts gerichteten optischen Zwischenflussdaten, der rückwärts gerichteten optischen Zwischenflussdaten, des ersten Einzelbilds, das in Übereinstimmung mit den vorwärts gerichteten optischen Zwischenflussdaten verzerrt wurde (Î0→t), und des zweiten Einzelbilds, das in Übereinstimmung mit den rückwärts gerichteten optischen Zwischenflussdaten verzerrt wurde (Î1→t). In einem Ausführungsbeispiel berechnet die Verzerrungseinheit für optischen Fluss 105-0 das erste Einzelbild, das in Übereinstimmung mit den vorwärts gerichteten optischen Zwischenflussdaten verzerrt wurde. In einem Ausführungsbeispiel berechnet die Verzerrungseinheit für optischen Fluss 105-1 das zweite Einzelbild, das in Übereinstimmung mit den rückwärts gerichteten optischen Zwischenflussdaten verzerrt wurde.
  • 1D ist ein konzeptionelles Diagramm des Vorwärts- und Rückwärts-Verzerrens gemäß einem Ausführungsbeispiel. Die von dem Einzelbild-Interpolationssystem 100 durchgeführte, hoch qualitative Multi-Einzelbild-Interpolationstechnik mit variabler Länge vorhersagt bzw. prognostiziert ein Einzelbild zu jedem beliebigen Zeitschritt zwischen zwei Einzelbildern durch Verzerren der eingegebenen zwei Bilder auf den spezifischen Zeitschritt und sodann adaptives Fusionieren bzw. Verschmelzen der beiden verzerrten Bilder, um das Zwischen-Einzelbild zu erzeugen. In einem Ausführungsbeispiel wird anstelle des Durchführens einer vorwärts verzerrenden Operation eine rückwärts verzerrende Operation auf das erste und das zweite Eingangsbild angewendet. Für die Rückwärtsverzerrung findet jeder Pixel in dem Zwischen (Ziel)-Einzelbild eine Entsprechung in dem Eingangsbild (Quellbild). Wenn die Vorwärtsverzerrung verwendet wird, haben Pixel 126 in dem Zielbild keine entsprechenden Pixel in dem Quellbild und entspricht Pixel 136 mehreren Pixeln in dem Quellbild. Daher kann ein Rückwärtsverzerren genauere verzerrte Bilddaten produzieren.
  • Wenn die beiden bidirektionalen optischen Zwischen-Flüsse (F̂t→0, F̂t→1) bekannt sind, kann das Zwischen-Einzelbild It wie folgt synthetisiert werden: I ^ t = α 0 g ( I 0 , F t 0 ) + ( 1 α 0 ) g ( I 1 , F t 1 ) ,
    Figure DE102018127265A1_0004
    worin g(·,·) eine Rückwärtsverzerrungsfunktion ist. Die Rückwärtsverzerrungsfunktion kann unter Verwendung einer bilinearen Interpolation implementiert werden und ist differenzierbar, wodurch ein Trainieren des Einzelbild-Interpolationssystems 100 ermöglicht wird. Der Parameter α0 steuert den Beitrag der beiden verzerrten Bilder und hängt von zwei Faktoren ab: der zeitlichen Konsistenz und dem Okklusionsargument. ⊙ bezeichnet eine elementweise Multiplikation und impliziert eine inhaltsbewusste Gewichtung von Eingangs-Einzelbildern. Für die zeitliche Konsistenz gilt: Je näher der Zeitschritt T = t an T = 0 liegt, desto mehr trägt I0 zu Ît bei; eine ähnliche Eigenschaft gilt für I1 .
  • 1E veranschaulicht ein Blockdiagramm eines anderen Einzelbild-Interpolationssystems 150 gemäß einem Ausführungsbeispiel. Das Einzelbild-Interpolationssystem 150 beinhaltet ein neuronales Netzwerkmodell zur Flussinterpolation 122, ein neuronales Netzwerkmodell für optischen Zwischenfluss 142 und Verzerrungseinheiten für optischen Fluss 105. Das neuronale Netzwerkmodell für optischen Zwischenfluss 142 empfängt die beiden Eingangs-Einzelbilder und approximiert die bidirektionalen optischen Zwischenflüsse F̂t→0 und F̂t→1. In einem Ausführungsbeispiel ist das neuronale Netzwerkmodell für optischen Zwischenfluss 142 ein CNN. Das neuronale Netzwerkmodell zur Flussinterpolation 122 beinhaltet ein neuronales Netzwerkmodell zur Flussverfeinerung 145-0, ein neuronales Netzwerkmodell zur Flussverfeinerung 145-1 und eine Bildvorhersageeinheit 155.
  • Obwohl das Einzelbild-Interpolationssystem 150 im Kontext von Verarbeitungseinheiten beschrieben wird, kann eines oder mehrere der neuronalen Netzwerke für Zwischenfluss 142, der Verzerrungseinheiten für optischen Fluss 105, der neuronalen Netzwerke zur Flussverfeinerung 145 und der Bildvorhersageeinheit 155 durch ein Programm, eine benutzerdefinierte Schaltung oder durch eine Kombination aus benutzerdefinierter Schaltung und einem Programm ausgeführt werden. So können beispielsweise die neuronalen Netzwerkmodelle zur Flussverfeinerung 145 durch eine GPU (Grafikprozessoreinheit), eine CPU (Zentralprozessoreinheit) oder einen beliebigen Prozessor, der in der Lage ist, Schichten eines neuronalen Netzwerks zu implementieren, implementiert werden. Darüber hinaus versteht sich für den Fachmann, dass jedes System, das die Betriebsabläufe des Einzelbild-Interpolationssystems 150 ausführt, innerhalb des Schutzumfangs und des Rahmens der Erfindung liegt.
  • Eine wichtige Eigenschaft des Problems der Interpolation von Video-Einzelbildern ist, dass dann, wenn ein Pixel p bei T = t sichtbar ist, es höchstwahrscheinlich in zumindest einem der Eingangs-Einzelbilder sichtbar ist, was bedeutet, dass Okklusion gehandhabt werden kann. Um Okklusion Rechnung zu tragen, prognostizieren die neuronalen Netzwerkmodelle zur Verfeinerung 145-0 und 145-1 für jeden Zeitschritt weiche Sichtbarkeitskarten Vt←0 und Vt←1 . Vt←0(p)∈ [0,1] gibt an, ob das Pixel p beim Wechsel von T=0 auf T=t sichtbar bleibt (0 ist vollständig okkludiert und daher nicht sichtbar). Die beiden Sichtbarkeitskarten müssen die folgende Beschränkung erfüllen V t 0 = 1 V t 1 .
    Figure DE102018127265A1_0005
  • Ohne eine solche Beschränkung können die verfeinerten neuronalen Netzwerkmodelle 145 während des Trainings divergieren. Vt←0(p)=0 impliziert intuitiv Vt←1(p) = 1, was bedeutet, dass der Pixel p von I0 bei T = t okkludiert ist, so dass I1 zur Vorhersage des Zwischen-Einzelbilds zu verwenden ist. Demgegenüber ist dann, wenn Vt←0(p)=1 Vt←1(p) = 0 impliziert, was bedeutet, dass der Pixel p von I1 bei T = t okkludiert ist, I0 zu verwenden, um das Zwischen-Einzelbild vorherzusagen. Es wird angemerkt, dass es selten vorkommt, dass ein Pixel zur Zeit t sowohl zur Zeit T= 0 als auch zur Zeit T=1 okkludiert ist. Da weiche Sichtbarkeitskarten verwendet werden, wenn der Pixel p sowohl in I0 als auch in I1 sichtbar ist, lernt das neuronale Netzwerkmodell zur Flussinterpolation 122, die Informationen aus zwei Bildern adaptiv zu kombinieren.
  • Die weichen Sichtbarkeitskarten werden auf die verzerrten Eingangs-Einzelbilder angewendet, bevor die verzerrten Eingangs-Einzelbilder von der Bildvorhersageeinheit 155 linear fusioniert werden, um das Zwischen-Einzelbild für jeden Zeitschritt zu erzeugen. Das Kombinieren der zeitlichen Konsistenz und des Okklusionsarguments ermöglicht die Berechnung des interpolierten Einzelbilds als: I ^ t = 1 z ( ( 1 t ) V t 0 g ( I 0 , F t 0 ) + tV t 1 g ( I 1 , F t 1 ) ) ,
    Figure DE102018127265A1_0006
    worin Z = (1- t) Vt→0 + tVt→1 ein Normierungsfaktor ist.
  • In einem Ausführungsbeispiel wird anstelle durch direktes Vorhersagen des optischen Zwischenflusses in den neuronalen Netzwerken zur Verfeinerung 145 durch Vorhersagen von Residuen des optischen Zwischenflusses eine etwas bessere Leistung erreicht. In einem Ausführungsbeispiel prognostizieren die neuronalen Netzwerkmodelle zur Verfeinerung 145-0 und 145-1 Ft→0 bzw. Ft→1. Ft→0 und Ft→1 werden dann berechnet als: F t 0 = F ^ t 0 + Δ F t 0 F t 1 = F ^ t 1 + Δ F t 1
    Figure DE102018127265A1_0007
  • Durch Anwenden der Sichtbarkeitskarten auf die verzerrten Bilder vor der Fusion wird der Beitrag von okkludierten Pixeln aus dem interpolierten Zwischen-Einzelbild ausgeschlossen, wodurch Artefakte vermieden oder reduziert werden. Da keine der während des Trainings erlernten Parameter (z.B. Gewichte) des Einzelbild-Interpolationssystems 150 zeitabhängig sind, kann das Einzelbild-Interpolations-system 150 so viele Zwischen-Einzelbilder wie notwendig erzeugen. In einem Ausführungsbeispiel kann das Einzelbild-Interpolationssystem 150 so viele Zwischen-Einzelbilder wie notwendig parallel erzeugen.
  • In einem Ausführungsbeispiel ist das neuronale Netzwerkmodell für optischen Zwischenfluss 142 als ein Encoder implementiert, und ist das neuronale Netzwerkmodell zur Flussinterpolation 122 als ein Decoder implementiert. In einem Ausführungsbeispiel ist das neuronale Netzwerkmodell für optischen Zwischenfluss 142 mit 6 Hierarchien strukturiert, die jeweils aus zwei faltenden Schichten und einer Leaky Rectified Linear Unit (ReLU)-Schicht bestehen. In einem Ausführungsbeispiel wird am Ende jeder Hierarchie mit Ausnahme der letzten eine Average Pooling-Schicht mit einer Schrittweite von 2 verwendet, um die räumliche Dimension zu verringern. In einem Ausführungsbeispiel ist das neuronale Netzwerk zur Flussinterpolation 122 mit 5 Hierarchien strukturiert. In einem Ausführungsbeispiel wird am Anfang jeder Hierarchie eine bilineare Upsampling-Schicht verwendet, um die räumliche Dimension um den Faktor 2 zu erhöhen, gefolgt von zwei faltenden und Leaky ReLU-Schichten.
  • In einem Ausführungsbeispiel wird das Einzelbild-Interpolationssystem 150 mit 1.132 240-fps Videoclips trainiert, die 300K individuelle Video-Einzelbilder enthalten. Experimentelle Ergebnisse an mehreren Datensätzen, die eine unterschiedliche Anzahl von interpolierten Einzelbilden vorhersagen, zeigen, dass das Einzelbild-Interpolationssystem 150 durchweg besser abschneidet als herkömmliche interpolierte bzw. interpolierende Bilderzeugungstechniken. Im Gegensatz zu herkömmlichen Einzelbild-Interpolationstechniken zur Durchführung einer Einzelbild-Interpolation kann das Einzelbild-Interpolationssystem 150 eine Videointerpolation mit variabler Länge und mehreren Einzelbildern durchführen, wobei die Bewegungsinterpretation und das Okklusionsargument gemeinsam modelliert werden. Die Bewegungsinterpretation und das Okklusionsargument werden in dem durchgehend trainierbaren Einzelbild-Interpolationssystem 150, das das neuronale Netzwerkmodell für optischen Zwischenfluss 142 und die neuronalen Netzwerkmodelle zur Flussverbesserung 145-0 und 145-1 umfasst, modelliert.
  • 1F veranschaulicht ein Ablaufdiagramm eines anderen Verfahrens 160 zum Erzeugen eines Zwischen-Einzelbilds mittels Flussinterpolation gemäß einem Ausführungsbeispiel. Obwohl das Verfahren 160 im Kontext einer Verarbeitungseinheit beschrieben wird, kann das Verfahren 160 auch durch ein Programm, eine benutzerdefinierte Schaltung oder durch eine Kombination aus einer benutzerdefinierten Schaltung und einem Programm durchgeführt werden. So kann beispielsweise das Verfahren 160 von einer GPU (Grafikprozessoreinheit), einer CPU (Zentralprozessoreinheit) oder einem beliebigen Prozessor, der ein neuronales Netzwerkmodell implementieren kann, ausgeführt werden. Darüber hinaus versteht sich für den Fachmann, dass jedes System, das die Methode 160 durchführt, innerhalb des Schutzumfangs und des Rahmens von Ausführungsbeispielen der Erfindung liegt.
  • In Schritt 162 werden bidirektionale (vorwärts und rückwärts gerichtete) optische Flussdaten (F0→1 und F1→0 ) erzeugt. In Schritt 165 werden bidirektionale optische Zwischenflussdaten F̂t→0 und F̂t→1 durch das neuronale Netzwerkmodell für optischen Zwischenfluss 142 approximiert. In einem Ausführungsbeispiel berechnet das neuronale Netzwerkmodell zur Flussverfeinerung 145-0 Ft→0 und berechnet dann die verfeinerten optischen Zwischenflussdaten Ft→0 . In einem Ausführungsbeispiel empfängt die Bildvorhersageeinheit 115 ΔFt→0 und berechnet dann die verfeinerten optischen Zwischenflussdaten Ft→0 . In einem Ausführungsbeispiel berechnet das neuronale Netzwerkmodell zur Flussverfeinerung 145-1 ΔFt→1 und berechnet dann die verfeinerten optischen Zwischenflussdaten Ft→1 . In einem Ausführungsbeispiel empfängt die Bildvorhersageeinheit 115 ΔFt→1 und berechnet dann die verfeinerten optischen Zwischenflussdaten Ft→1 .
  • In Schritt 170 verzerren die Verzerrungseinheiten für optischen Fluss 105 die Eingangs-Einzelbilder unter Verwendung der bidirektionalen optischen Zwischenflussdaten. In Schritt 175 verfeinern die neuronalen Netzwerkmodelle zur Flussverfeinerung 145 die bidirektionalen optischen Zwischenflussdaten auf der Grundlage der verzerrten Eingangs-Einzelbilder und der Eingangs-Einzelbilder. In Schritt 185 werden die Sichtbarkeitskarten durch das neuronale Netzwerkmodell zur Flussinterpolation 122 auf der Grundlage der Eingaben in das neuronale Netzwerkmodell zur Flussinterpolation 122 vorhergesagt. In einem Ausführungsbeispiel prognostiziert das neuronale Netzwerkmodell zur Flussverfeinerung 145-0 die Sichtbarkeitskarte Vt→0 auf der Grundlage des ersten Eingangs-Einzelbilds I0 , der vorwärts gerichteten optischen Zwischenflussdaten F̂t→0 und des ersten Einzelbilds, das in Übereinstimmung mit den vorwärts gerichteten optischen Zwischenflussdaten verzerrt wurde (Î0→t). In einem Ausführungsbeispiel prognostiziert das neuronale Netzwerkmodell zur Flussverfeinerung 145-1 die Sichtbarkeitskarte Vt→1 auf der Grundlage des zweiten Eingangs-Einzelbilds I1 , der rückwärts gerichteten optischen Zwischenflussdaten F̂t→1 und des zweiten Einzelbilds, das in Übereinstimmung mit den rückwärts gerichteten optischen Zwischenflussdaten (Î1→t) verzerrt wurde.
  • In Schritt 190 wird das Zwischen-Einzelbild durch das neuronale Netzwerkmodell zur Flussinterpolation 122 vorhergesagt. In einem Ausführungsbeispiel prognostiziert die Bildvorhersageeinheit 155 das Zwischen-Einzelbild unter Verwendung der Gleichung (4) oder (6). In einem Ausführungsbeispiel wendet in Schritt 190 die Bildvorhersageeinheit 155 die Sichtbarkeitskarten auf das erste verzerrte Einzelbild und das verzerrte zweite Einzelbild an, bevor sie das Zwischen-Einzelbild berechnet. In einem Ausführungsbeispiel erzeugt die Bildvorhersageeinheit 155 das erste verzerrte Einzelbild und das verzerrte zweite Einzelbild unter Verwendung der verfeinerten optischen Zwischenflussdaten.
  • 2A veranschaulicht ein Blockdiagramm eines anderen Einzelbild-Interpolationssystems 200 gemäß einem Ausführungsbeispiel. Zusätzlich zu dem neuronalen Netzwerkmodell für Zwischenfluss 122, den Verzerrungseinheiten für optischen Fluss 105 und dem neuronalen Netzwerkmodell zur Flussinterpolation 102 oder 122 beinhaltet das Einzelbild-Interpolationssystem 100 eine Trainingsverlustfunktion 210 und ein neuronales Netzwerkmodell zur Flussberechnung 215. In einem Ausführungsbeispiel ist das neuronale Netzwerkmodell zur Flussberechnung 215 als CNN implementiert. In einem Ausführungsbeispiel ist das neuronale Netzwerkmodell zur Flussberechnung 215 als ein Encoder und Decoder implementiert und weist in den ersten Schichten des Encoders große Filter auf, um langfristige Bewegungen zu erfassen. In einem Ausführungsbeispiel werden 7x7 Kerne in den ersten beiden faltenden Schichten verwendet, und werden 5x5 Kerne in der zweiten Hierarchie verwendet. In einem Ausführungsbeispiel werden für Schichten im Rest des neuronalen Netzwerkmodells zur Flussberechnung 215 3x 3 Faltungskerne verwendet.
  • Das neuronale Netzwerkmodell zur Flussberechnung 215 empfängt die Eingangs-Einzelbilder und erzeugt einmalig die bidirektionalen optischen Flussdaten (vorwärts gerichtete optische Flussdaten und rückwärts gerichtete optische Flussdaten), um ein oder mehrere interpolierte Einzelbilder zwischen den Eingangs-Einzelbildern vorherzusagen. Demgegenüber berechnen die anderen Komponenten in dem Einzelbild-Interpolationssystem 200, das heißt das neuronale Netzwerkmodell für optischen Zwischenfluss 122, die Verzerrungseinheiten für optischen Fluss 105 und das neuronale Netzwerkmodell für Flussinterpolation 102 oder 122, sowie die Trainingsverlustfunktion 210, Daten für jeden Zeitschritt entsprechend einem interpolierten Einzelbild.
  • Während des Trainings vergleicht die Trainingsverlustfunktion 210 das Zwischen-Einzelbild mit einem Lerndaten- bzw. Grundwissen-Einzelbild (ground truth frame) und aktualisiert Parameter des neuronalen Netzwerkmodells zur Flussberechnung 215, des neuronalen Netzwerkmodells für Zwischenfluss 142 und des neuronalen Netzwerkmodells zur Flussinterpolation 102 oder 122, um Unterschiede zwischen dem Zwischen-Einzelbild und dem Grundwissen-Einzelbild zu reduzieren. Wichtig ist, dass das neuronale Netzwerkmodell zur Flussberechnung 215, das neuronale Netzwerkmodell für optischen Zwischenfluss 122 und das neuronale Netzwerkmodell zur Flussinterpolation 102 oder 122 gemeinsam trainiert werden, um den optischen Fluss auf unbeaufsichtigte Weise zu lernen. Das Training wird unter Verwendung von Videosequenzen als Trainingsdatensätze durchgeführt, wobei eine Teilmenge der Einzelbilder als exemplarische Zwischen-Einzelbilder verwendet wird. So können beispielsweise für eine Sequenz von drei Einzelbildern in der Videosequenz das erste und das dritte Einzelbild in das Einzelbild-Interpolations-system 100 eingegeben werden und wird das zweite Bild, das zwischen dem ersten und dem dritten Bild auftritt, als exemplarisches Zwischen-Einzelbild verwendet, das mit dem vorhergesagten Zwischen-Einzelbild verglichen wird, das durch das Einzelbild-Interpolationssystem 100 erzeugt wurde.
  • In einem Ausführungsbeispiel sind das neuronale Netzwerkmodell für optischen Zwischenfluss 122 und die neuronalen Netzwerkmodelle zur Flussverfeinerung 145 ein vollständig faltendes neuronales Netzwerk, bestehend aus einem Encoder und einem Decoder, mit Sprungverbindungen zwischen den Encoder- und Decoder-Funktionen bei derselben räumlichen Auflösung. In einem Ausführungsbeispiel bewertet die Trainingsverlustfunktion 210 einen oder mehrere eines Rekonstruktionsverlusts, eines Wahrnehmungsverlusts, eines Verzerrungsverlusts und eines Glättungsverlusts.
  • Für gegebene Eingangs-Einzelbilder (z.B. Bilder) I0 und I1 , einen Satz von Zwischen-Einzelbildern { I t l } i = 1 N
    Figure DE102018127265A1_0008
    zwischen I0 und I1 , wobei t1 ∈ (0,1) ,und die vorhergesagten Zwischen-Einzelbilder { I ^ t i } i = 1 N
    Figure DE102018127265A1_0009
    ist die Verlustfunktion eine lineare Kombination aus vier Ausdrücken: L = λ r I r + Δ p I p + Δ w I w + Δ s I s .
    Figure DE102018127265A1_0010
  • Ein Rekonstruktionsverlust Ir modelliert, wie gut die Rekonstruktion der Zwischen-Einzelbilder ist: l r = 1 N i = 1 N I ^ t i I t i 1
    Figure DE102018127265A1_0011
  • Ein solcher Rekonstruktionsverlust ist im RGB-Raum definiert, in dem die Pixelwerte im Bereich von [0, 255] liegen.
  • Auch wenn der L1 -Verlust dazu verwendet wird, den Rekonstruktionsfehler von Zwischen-Einzelbildern zu modellieren, kann es zu Unschärfen in den Vorhersagen kommen. Daher kann ein Wahrnehmungsverlust verwendet werden, um Details der Vorhersagen zu erhalten und interpolierte Bilder schärfer zu machen. Insbesondere ist der Wahrnehmungsverlust IP definiert als l p = 1 N i = 1 N ϕ ( I ^ t ) ϕ ( I t ) 2
    Figure DE102018127265A1_0012
  • Worin Φ die conv4_3-Merkmale eines vortrainierten VGG-16 (Visual Geometry Group) Modells bezeichnet.
  • Neben Zwischenprognosen kann auch ein Verzerrungsverlust Iw einbezogen werden zur Modellierung der Qualität des berechneten optischen Flusses, definiert als l w = I 0 g ( I 1 , F 0 1 ) 1 + I 1 g ( 0, F 1 0 ) 1 + 1 N i = 1 N I t i g ( I 0 , F ^ t i 0 ) 1 + 1 N i = 1 N I t i g ( I 1 , F ^ t i 1 ) 1
    Figure DE102018127265A1_0013
  • Schließlich kann ein Glättungsterm einbezogen werden, um benachbarte Pixel zu animieren, ähnliche Flusswerte zu haben: l s = F 0 1 1 + F 1 0 1
    Figure DE102018127265A1_0014
  • Die Gewichte λr , λp , λw und λs können unter Verwendung eines Validierungssatzes als λr = 0,8, λp = 0,005, λw = 0,4 und λs = 1 empirisch festgelegt werden. In einem Ausführungsbeispiel sind Komponenten der Einzelbild-Interpolationssysteme 100, 150 und 200 differenzierbar, einschließlich des neuronalen Netzwerkmodells zur Flussberechnung 210, der Verzerrungseinheiten für optischen Fluss 105, der neuronalen Netzwerkmodelle für optischen Zwischenfluss 142 und der neuronalen Netzwerkmodelle zur Flussverfeinerung 102 und 122. Somit können die Einzelbild-Interpolationssysteme 100, 150 und 200 durchgehend trainiert werden.
  • 2B veranschaulicht ein Ablaufdiagramm eines Verfahrens 220 zum Trainieren der Einzelbild-Interpolationssysteme 100, 150 und 200 gemäß einem Ausführungsbeispiel. Obwohl das Verfahren 220 im Kontext einer Verarbeitungseinheit beschrieben wird, kann das Verfahren 220 auch durch ein Programm, eine benutzerdefinierte Schaltung oder durch eine Kombination aus einer benutzerdefinierten Schaltung und einem Programm durchgeführt werden. So kann beispielsweise das Verfahren 220 von einer GPU (Grafikprozessoreinheit), einer CPU (Zentralprozessoreinheit) oder einem beliebigen Prozessor, der ein neuronales Netzwerkmodell implementieren kann, ausgeführt werden. Darüber versteht sich für den Fachmann, dass jedes System, das das Verfahren 220 ausführt, innerhalb des Schutzumfangs und des Rahmens von Ausführungsbeispielen der Erfindung liegt.
  • Die Schritte 162, 165, 170 und 135 werden wie zuvor in Verbindung mit 1F beschrieben abgeschlossen. In Schritt 225 wird das vorhergesagte Zwischen-Einzelbild mit dem Grundwissen-Einzelbild verglichen. In einem Ausführungsbeispiel vergleicht die Trainingsverlustfunktion 210 das Zwischen-Einzelbild mit einem Grundwissen-Einzelbild. In Schritt 230 kann das Training auf der Grundlage von Unterschieden zwischen dem vorhergesagten Einzelbild und dem Grundwissen-Einzelbild abgeschlossen sein. Eine Verlustfunktion, wie beispielsweise die durch die Gleichung (7) definierte Verlustfunktion, kann berechnet werden, um Entfernungen (d.h. Unterschiede oder Gradienten) zwischen dem Grundwissen-Einzelbild und dem vorhergesagten Zwischen-Einzelbild zu messen. In einem Ausführungsbeispiel kann die Verlustfunktion eine Kombination aus zumindest einem des Rekonstruktionsverlusts, des Wahrnehmungsverlusts, des Verzerrungsverlusts und des Glättungsverlusts sein. Das neuronale Netzwerkmodell für optischen Zwischenfluss 142 und das neuronale Netzwerkmodell zur Flussinterpolation 102 oder 122 gelten als ausreichend trainiert, wenn die vorhergesagten Einzelbilder, die für die Eingangs-Einzelbilder aus dem Trainingsdatensatz erzeugt wurden, mit den Grundwissen-Einzelbild übereinstimmen oder eine Schwellengenauigkeit für den Trainingsdatensatz erreicht wird.
  • Wenn das Training in Schritt 230 abgeschlossen ist, können in Schritt 240 Einzelbild-Interpolationssysteme 100, 150 und 200 zur Durchführung einer Einzelbild-Interpolation eingesetzt werden. Andernfalls werden dann, wenn das Training in Schritt 230 nicht abgeschlossen ist, in Schritt 235 die Parameter auf der Grundlage der Verlustfunktion angepasst und die Schritte 165 bis 230 wiederholt. In einem Ausführungsbeispiel werden in Schritt 235 die Parameter des neuronalen Netzwerkmodells für Zwischenfluss 142 und des neuronalen Netzwerkmodells zur Flussinterpolation 102 oder 122 angepasst, um Unterschiede zwischen dem Zwischen-Einzelbild und dem Grundwissen-Einzelbild zu verringern. In einem Ausführungsbeispiel passt die Trainingsverlustfunktion 210 die Parameter des neuronalen Netzwerkmodells für Zwischenfluss 142 und des neuronalen Netzwerkmodells zur Flussinterpolation 102 oder 122 an. Durch das Verfahren 220 können das neuronale Netzwerkmodell für optischen Zwischenfluss 142 und das neuronale Netzwerkmodell zur Flussinterpolation 102 oder 122 dazu trainiert werden, die Einzelbild-Interpolation gleichzeitig zu lernen.
  • 2C veranschaulicht Eingangs-Einzelbilder, bidirektionale optische Flüsse und verzerrte Eingangs-Einzelbilder gemäß einem Ausführungsbeispiel. In den Eingangs-Einzelbildern bewegen sich die Arme des Fußballspielers von T=0 zu T=1 nach unten. Der Bereich direkt über dem Arm bei T=0 ist bei t sichtbar, aber der gleiche Bereich ist bei T=1 okkludiert (d.h. unsichtbar). Die bidirektionalen optischen Flüsse werden auf der Grundlage der Eingangs-Einzelbilder approximiert und dazu verwendet, die Eingangs-Einzelbilder zu verzerren (dargestellt in der letzten Zeile).
  • 2D veranschaulicht Sichtbarkeitskarten und vorhergesagte Zwischen-Einzelbilder gemäß einem Ausführungsbeispiel. Bereiche, die nicht sichtbar sind, sind in den Sichtbarkeitskarten durch Schwarz angegeben, und Bereiche, die sichtbar sind, sind durch Weiß angegeben. Die Sichtbarkeitskarten in der oberen Reihe zeigen deutlich, dass der Bereich direkt über dem Arm bei T=0 sichtbar ist und bei T=1 okkludiert ist. Der weiße Bereich um die Arme in Vt←1 zeigt Pixel in I1 an, die am meisten zu dem vorhergesagten It beitragen, während die entsprechenden okkludierten Pixel (in schwarzen Bereichen) in I0 wenig beitragen. Ähnliche Phänomene treten auch um Bewegungsgrenzen auf (z.B. um Körper der Athleten).
  • Wie bereits erläutert wurde, sind Bewegungsgrenzen und starke Okklusionen nach wie vor eine Herausforderung für herkömmliche Einzelbild-Interpolationsverfahren. Daher neigen die interpolierten Einzelbilder, die unter Verwendung der herkömmlichen Einzelbild-Interpolationstechniken erzeugt wurden, dazu, Artefakte um die Grenzen bewegter Objekte zu haben. Demgegenüber sind Artefakte, die durch Bewegungsgrenzen und Okklusionen verursacht werden, in Zwischen-Einzelbildern, die von den Einzelbild-Interpolationssystemen 100, 150 und 200 vorhergesagt werden, reduziert. Herkömmliche Einzelbild-Interpolationstechniken beruhen auf heuristikbasierter Zwischenflussberechnung (d.h. Flussinterpolation) und Okklusionsargumentation und sind nicht durchgehend trainierbar. Demgegenüber sind die Einzelbild-Interpolationssysteme 100, 150 und 200 durchgehend trainierbar. Ferner können Zwischen-Einzelbilder durch die Einzelbild-Interpolationssysteme 100, 150 und 200 für ein einfaches Video vorhergesagt werden, ohne Referenzbilder oder überwachtes Training zu erfordern. Schließlich können die Einzelbild-Interpolationssysteme 100, 150 und 200 dazu erweitert werden, mehrere Zwischen-Einzelbilder parallel vorherzusagen. Demgegenüber beruhen herkömmliche Einzelbild-Interpolationstechniken auf Rekursion, um mehr als ein Zwischen-Einzelbild zu berechnen, und können daher nur ein Zwischen-Einzelbild auf einmal vorhersagen.
  • Parallele Verarbeitungsarchitektur
  • 3 veranschaulicht eine Parallelverarbeitungseinheit (PPU) 300 gemäß einem Ausführungsbeispiel. In einem Ausführungsbeispiel ist die PPU 300 ein Multithread-Prozessor, der auf einer oder mehreren integrierten Schaltungsvorrichtungen implementiert ist. Die PPU 300 ist eine latenzverbergende Architektur, die entwickelt wurde, um viele Threads parallel zu verarbeiten. Ein Thread (d.h. ein Thread der Ausführung) ist eine Instanziierung eines Satzes von Anweisungen, die dazu konfiguriert sind, durch die PPU 300 ausgeführt zu werden. In einem Ausführungsbeispiel ist die PPU 300 eine Grafikverarbeitungseinheit (GPU), die dazu konfiguriert ist, eine Grafik-Rendering-Pipeline zum Verarbeiten dreidimensionaler (3D) Grafikdaten zu implementieren, um zweidimensionale (2D) Bilddaten zur Anzeige auf einer Anzeigevorrichtung, wie beispielsweise einer Flüssigkristallanzeigevorrichtung (LCD), zu erzeugen. In anderen Ausführungsbeispielen kann die PPU 300 zur Durchführung von Universalberechnungen verwendet werden. Obwohl hierin ein exemplarischer Parallelprozessor zu veranschaulichenden Zwecken bereitgestellt wird, wird dringend angemerkt, dass ein solcher Prozessor nur zu veranschaulichenden Zwecken vorgesehen ist und dass jeder beliebige Prozessor verwendet werden kann, um denselben zu ergänzen oder zu substituieren.
  • Eine oder mehrere PPUs 300 können dazu konfiguriert sein, Tausende von High Performance Computing (HPC), Rechenzentren und Anwendungen maschinellen Lernens zu beschleunigen. Die PPU 300 kann dazu konfiguriert sein, zahlreiche Systeme und Anwendungen für das Tiefenlernen zu beschleunigen, darunter autonome Fahrzeugplattformen, Deep Learning, hochpräzise Sprach-, Bild- und Texterkennungssysteme, intelligente Videoanalytik, molekulare Simulationen, Medikamentenentdeckung, Krankheitsdiagnose, Wettervorhersage, Big Data Analytik, Astronomie, Molekulardynamiksimulation, Finanzmodellierung, Robotik, Fabrikautomatisierung, Echtzeit-Sprachübersetzung, Online-Suchoptimierungen und personalisierte Benutzerempfehlungen und dergleichen.
  • Wie in 3 dargestellt ist, beinhaltet die PPU 300 eine Eingabe/Ausgabe bzw. Input/Output (I/O)-Einheit 305, eine Frontend-Einheit 315, eine Scheduler-Einheit 320, eine Arbeitsverteilungseinheit 325, einen Verteiler bzw. Hub 330, eine Kreuz- bzw. Querschiene (Xbar) 370, einen oder mehrere General Processing Cluster (GPCs) 350 und eine oder mehrere Partitionierungseinheiten 380. Die PPU 300 kann über eine oder mehrere Hochgeschwindigkeits-NVLink 310-Verbindungen mit einem Host-Prozessor oder anderen PPUs 300 verbunden sein. Die PPU 300 kann über eine Verbindung 302 mit einem Host-Prozessor oder anderen Peripheriegeräten verbunden sein. Die PPU 300 kann auch mit einem lokalen Speicher verbunden sein, der eine Anzahl von Speichervorrichtungen 304 umfasst. In einem Ausführungsbeispiel kann der lokale Speicher eine Anzahl von dynamischen DRAM (Dynamic Random Access Memory)-Vorrichtungen umfassen. Die DRAM-Vorrichtungen können als HBM (High-Bandwidth Memory)-Subsystem konfiguriert sein, wobei mehrere DRAM-Dies innerhalb jeder Vorrichtung gestapelt sind.
  • Die NVLink 310-Verbindung ermöglicht es Systemen, zu skalieren und eine oder mehrere PPUs 300 kombiniert mit einer oder mehreren CPUs zu beinhalten, unterstützt eine Cache-Kohärenz zwischen den PPUs 300 und CPUs, und CPU-Mastering. Daten und/oder Befehle können von dem NVLink 310 über den Hub 330 zu/von anderen Einheiten der PPU 300, wie z.B. einer oder mehreren Kopier-Engines, einem Video-Encoder, einem Video-Decoder, einer Energieverwaltungs- bzw. Power-Management-Einheit usw. (nicht explizit dargestellt) übertragen werden. Der NVLink 310 wird in Verbindung mit 5B näher beschrieben.
  • Die I/O-Einheit 305 ist dazu konfiguriert, Kommunikationen (d.h. Befehle, Daten usw.) von einem Host-Prozessor (nicht dargestellt) über die Verbindung 302 zu senden und zu empfangen. Die I/O-Einheit 305 kann mit dem Host-Prozessor direkt über die Verbindung 302 oder über eine oder mehrere Zwischenvorrichtungen, wie beispielsweise eine Speicherbrücke, kommunizieren. In einem Ausführungsbeispiel kann die I/O-Einheit 305 mit einem oder mehreren anderen Prozessoren, wie beispielsweise einer oder mehreren der PPUs 300, über die Verbindung 302 kommunizieren. In einem Ausführungsbeispiel implementiert die I/O-Einheit 305 eine Peripheral Component Interconnect Express (PCIe)-Schnittstelle für die Kommunikation über einen PCIe-Bus, und ist die Verbindung 302 ein PCIe-Bus. In alternativen Ausführungsbeispielen kann die I/O-Einheit 305 andere Arten von gut bekannten Schnittstellen zum Kommunizieren mit externen Geräten implementieren.
  • Die I/O-Einheit 305 dekodiert Pakete, die über die Verbindung 302 empfangen wurden. In einem Ausführungsbeispiel repräsentieren die Pakete Befehle, die dazu konfiguriert sind, die PPU 300 zu veranlassen, verschiedene Operationen durchzuführen. Die I/O-Einheit 305 überträgt die dekodierten Befehle an verschiedene andere Einheiten der PPU 300, wie in den Befehlen angegeben. So können beispielsweise einige Befehle an die Frontend-Einheit 315 übertragen werden. Andere Befehle können an den Hub 330 oder andere Einheiten der PPU 300, wie z.B. eine oder mehrere Kopier-Engines, ein Video-Encoder, ein Video-Decoder, eine Power-Management-Einheit usw. (nicht explizit dargestellt), übertragen werden. Mit anderen Worten ist die I/O-Einheit 305 dazu konfiguriert, die Kommunikation zwischen und unter den verschiedenen logischen Einheiten der PPU 300 zu routen.
  • In einem Ausführungsbeispiel kodiert ein von dem Host-Prozessor ausgeführtes Programm einen Befehlsstrom in einem Puffer, der der PPU 300 Arbeitslasten zur Verarbeitung bereitstellt. Eine Arbeitslast kann mehrere Anweisungen und Daten umfassen, die durch diese Anweisungen zu verarbeiten sind. Der Puffer ist eine Region in einem Speicher, der sowohl von dem Host-Prozessor als auch von der PPU 300 aus (d.h. lesend/schreibend) zugänglich ist. So kann beispielsweise die I/O-Einheit 305 dazu konfiguriert sein, über Speicheranforderungen, die über die Verbindung 302 übertragen werden, auf den Puffer in einem Systemspeicher, der mit der Verbindung 302 verbunden ist, zuzugreifen. In einem Ausführungsbeispiel schreibt der Host-Prozessor den Befehlsstrom in den Puffer und überträgt dann einen Zeiger auf den Anfang des Befehlsstroms an die PPU 300. Die Frontend-Einheit 315 empfängt Zeiger auf einen oder mehrere Befehlsströme. Die Frontend-Einheit 315 verwaltet einen oder mehrere Streams, wobei sie Befehle aus den Streams liest und Befehle an die verschiedenen Einheiten der PPU 300 weiterleitet.
  • Die Front-End-Einheit 315 ist mit einer Scheduler-Einheit 320 gekoppelt, die die verschiedenen GPCs 350 konfiguriert, um Aufgaben zu verarbeiten, die durch einen oder mehrere Streams definiert sind. Die Scheduler-Einheit 320 ist dazu konfiguriert, Zustandsinformationen mit Bezug zu den verschiedenen Aufgaben, die von der Scheduler-Einheit 320 verwaltet werden, nachzuverfolgen. Der Zustand kann anzeigen, welchem GPC 350 eine Aufgabe zugeordnet ist, ob die Aufgabe aktiv oder inaktiv ist, eine der Aufgabe zugeordnete Prioritätsstufe und so weiter. Die Scheduler-Einheit 320 verwaltet die Ausführung einer Vielzahl von Aufgaben auf dem einem oder den mehreren GPCs 350.
  • Die Scheduler-Einheit 320 ist mit einer Arbeitsverteilungseinheit 325 gekoppelt, die dazu konfiguriert ist, Aufgaben zur Ausführung auf den GPCs 350 zu verteilen. Die Arbeitsverteilungseinheit 325 kann eine Anzahl von geplanten Aufgaben, die von der Planungseinheit 320 empfangen wurden, verfolgen. In einem Ausführungsbeispiel verwaltet die Arbeitsverteilungseinheit 325 für jeden der GPCs 350 einen Pool offener Aufgaben und einen Pool aktiver Aufgaben. Der Pool offener Aufgaben kann eine Anzahl von Slots (z.B. 32 Slots) umfassen, die Aufgaben enthalten, die von einem bestimmten GPC 350 zu verarbeiten sind. Der Pool aktiver Aufgaben kann eine Anzahl von Slots (z.B. 4 Slots) für Aufgaben umfassen, die von den GPCs 350 aktiv bearbeitet werden. Wenn ein GPC 350 die Ausführung einer Aufgabe beendet, wird diese Aufgabe aus dem Pool aktiver Aufgaben für den GPC 350 herausgenommen und wird eine der anderen Aufgaben aus dem Pool offener Aufgaben ausgewählt und zur Ausführung auf dem GPC 350 eingeplant. Wenn eine aktive Aufgabe auf dem GPC 350 im Leerlauf war, z. B. während des Wartens auf die Auflösung einer Datenabhängigkeit, kann die aktive Aufgabe aus dem GPC 350 herausgenommen und in den Pool offener Aufgaben zurückgeführt werden, während eine andere Aufgabe im Pool offener Aufgaben ausgewählt und für die Ausführung auf dem GPC 350 eingeplant wird.
  • Die Arbeitsverteilungseinheit 325 kommuniziert über die XBar 370 mit einem oder mehreren GPCs 350. Die XBar 370 ist ein Verbindungsnetzwerk, das viele der Einheiten der PPU 300 mit anderen Einheiten der PPU 300 koppelt. So kann beispielsweise die XBar 370 dazu konfiguriert sein, die Arbeitsverteilungseinheit 325 mit einem bestimmten GPC 350 zu koppeln. Obwohl dies nicht explizit gezeigt ist, können eine oder mehrere andere Einheiten der PPU 300 auch über den Hub 330 mit der XBar 370 verbunden sein.
  • Die Aufgaben werden von der Scheduler-Einheit 320 verwaltet und von der Arbeitsverteilungseinheit 325 an einen GPC 350 gesendet. Der GPC 350 ist dazu konfiguriert, die Aufgabe zu verarbeiten und Ergebnisse zu erzeugen. Die Ergebnisse können von anderen Aufgaben innerhalb des GPC 350 übernommen, über die XBar 370 an einen anderen GPC 350 weitergeleitet oder in dem Speicher 304 gespeichert werden. Die Ergebnisse können über die Partitionierungseinheiten 380, die eine Speicherschnittstelle zum Lesen und Schreiben von Daten in/aus dem Speicher 304 implementieren, in den Speicher 304 geschrieben werden. Die Ergebnisse können über den NVLink 310 an eine andere PPU 304 oder CPU übertragen werden. In einem Ausführungsbeispiel beinhaltet die PPU 300 eine Anzahl U von Partitionierungseinheiten 380, die gleich der Anzahl der separaten und unterschiedlichen Speichervorrichtungen 304 ist, die mit der PPU 300 gekoppelt sind. Eine Partitionierungseinheit 380 wird nachstehend in Verbindung mit 4B näher beschrieben.
  • In einem Ausführungsbeispiel führt ein Host-Prozessor einen Treiberkern aus, der eine Anwendungsprogrammierschnittstelle (API) implementiert, die es einer oder mehreren auf dem Host-Prozessor ausgeführten Anwendungen ermöglicht, Operationen zur Ausführung auf der PPU 300 zu planen. In einem Ausführungsbeispiel werden mehrere Rechenanwendungen gleichzeitig von der PPU 300 ausgeführt, und die PPU 300 stellt Isolation, Quality of Service (QoS) und unabhängige Adressräume für die mehreren Rechenanwendungen bereit. Eine Anwendung kann Anweisungen (z.B. API-Aufrufe) erzeugen, die den Treiberkern veranlassen, eine oder mehrere Aufgaben zur Ausführung durch die PPU 300 zu erzeugen. Der Treiberkern gibt Aufgaben an einen oder mehrere Streams aus, die von der PPU 300 verarbeitet werden. Jede Aufgabe kann eine oder mehrere Gruppen von verwandten Threads umfassen, die hierin als Warp bezeichnet werden. In einem Ausführungsbeispiel umfasst ein Warp 32 verwandte Threads, die parallel ausgeführt werden können. Kooperierende Threads können sich auf eine Vielzahl von Threads beziehen, einschließlich Anweisungen zum Durchführen der Aufgabe, und die Daten über einen gemeinsamen Speicher austauschen können. Threads und kooperierende Threads werden in Verbindung mit 5A näher beschrieben.
  • 4A veranschaulicht einen GPC 350 der PPU 300 aus 3 gemäß einem Ausführungsbeispiel. Wie in 4A dargestellt ist, beinhaltet jeder GPC 350 eine Reihe von Hardwareeinheiten für Verarbeitungsaufgaben. In einem Ausführungsbeispiel beinhaltet jeder GPC 350 einen Pipeline-Verwalter bzw. Pipeline-Manager 410, eine Pre-Raster Operations Unit (PROP) 415, eine Rastermaschine bzw. Raster-Engine 425, eine Arbeitsverteilungs-Querschiene bzw. Work Distribution Crossbar (WDX) 480, eine Speicherverwaltungseinheit bzw. Memory Management Unit (MMU) 490 und einen oder mehrere Datenverarbeitungscluster bzw. Data Processing Cluster (DPCs) 420. Es ist zu beachten, dass der GPC 350 von 4A anstelle der oder zusätzlich zu den in 4A dargestellten Einheiten weitere Hardwareeinheiten beinhalten kann.
  • In einem Ausführungsbeispiel wird der Betriebsablauf des GPC 350 durch den Pipeline-Manager 410 gesteuert. Der Pipeline-Manager 410 verwaltet die Konfiguration des einen oder der mehreren DPCs 420 zum Verarbeiten von Aufgaben, die dem GPC 350 zugewiesen sind. In einem Ausführungsbeispiel kann der Pipeline-Manager 410 zumindest einen der einen oder mehreren DPCs 420 dazu konfigurieren, zumindest einen Teil einer Grafik-Rendering-Pipeline zu implementieren. So kann beispielsweise ein DPC 420 dazu konfiguriert sein, ein Vertex-Shader-Programm auf dem programmierbaren Streaming-Multiprozessor (SM) 440 auszuführen. Der Pipeline-Manager 410 kann auch dazu konfiguriert sein, von der Arbeitsverteilungseinheit 325 empfangene Pakete an die geeigneten logischen Einheiten innerhalb des GPC 350 weiterzuleiten. So können beispielsweise einige Pakete an Hardwareeinheiten mit fester Funktion in dem PROP 415 und/oder in der Raster-Engine 425 weitergeleitet werden, während andere Pakete an die DPCs 420 zur Verarbeitung durch die Stammfunktions-Engine 435 oder den SM 440 weitergeleitet werden können. In einem Ausführungsbeispiel kann der Pipeline-Manager 410 zumindest einen der einen oder mehreren DPCs 420 dazu konfigurieren, ein neuronales Netzwerkmodell und/oder eine Rechen-Pipeline zu implementieren.
  • Die PROP-Einheit 415 ist dazu konfiguriert, die von der Raster-Engine 425 und den DPCs 420 erzeugten Daten an eine Raster Operations (ROP)-Einheit weiterzuleiten, die in Verbindung mit 4B näher beschrieben wird. Die PROP-Einheit 415 kann auch dazu konfiguriert werden, Optimierungen zur Farbmischung durchzuführen, Pixeldaten zu organisieren, Adressenübersetzungen durchzuführen und dergleichen.
  • Die Raster-Engine 425 beinhaltet eine Reihe von Hardwareeinheiten mit fester Funktion, die dazu konfiguriert sind, verschiedene Rasteroperationen durchzuführen. In einem Ausführungsbeispiel beinhaltet die Raster-Engine 425 eine Setup-Engine, eine Grobraster-Engine, eine Entnahme-Engine, eine Clipping-Engine, eine Feinraster-Engine und eine Kachelvereinigungs- bzw. Kachel-Koaleszenz-Engine. Die Setup-Engine empfängt transformierte Eckpunkte bzw. Vertices und erzeugt Ebenengleichungen, die der durch die Vertices definierten geometrischen Stammfunktion zugeordnet sind. Die Ebenengleichungen werden an die Grobraster-Engine übertragen, um Abdeckungsinformationen (z.B. eine x, y-Abdeckungsmaske für eine Kachel) für die Stammfunktion zu erzeugen. Die Ausgabe der Grobraster-Engine wird an die Entnahme-Engine übertragen, an der der Stammfunktion zugeordnete Fragmente, die einen z-Test nicht bestehen, entnommen bzw. aussortiert werden, und an eine Clipping-Engine übertragen, an der Fragmente, die außerhalb eines Betrachtungskegels liegen, abgeschnitten werden. Die Fragmente, die das Abschneiden und das Aussortieren überleben, können an die Feinraster-Engine übergeben werden, um Attribute für die Pixelfragmente auf der Grundlage der von der Setup-Engine erzeugten Ebenengleichungen zu erzeugen. Die Ausgabe der Raster-Engine 425 umfasst Fragmente, die beispielsweise von einem in einem DPC 420 implementierten Fragment-Shader zu verarbeiten sind.
  • Jeder im GPC 350 enthaltene DPC 420 beinhaltet einen M-Pipe Controller (MPC) 430, eine Stammfunktions-Engine 435 und einen oder mehrere SMs 440. Der MPC 430 steuert den Betriebsablauf des DPC 420 und leitet die von dem Pipeline-Manager 410 empfangenen Pakete an die geeigneten Einheiten des DPC 420 weiter. So können beispielsweise Pakete, die einem Vertex zugeordnet sind, an die Stammfunktions-Engine 435 weitergeleitet werden, die dazu konfiguriert ist, dem Vertex zugeordnete Vertexattribute aus dem Speicher 304 zu holen. Demgegenüber können Pakete, die einem Shader-Programm zugeordnet sind, an den SM 440 übertragen werden.
  • Der SM 440 umfasst einen programmierbaren Streaming-Prozessor, der dazu konfiguriert ist, Aufgaben zu verarbeiten, die durch eine Reihe von Threads repräsentiert werden. Jeder SM 440 ist multi-threaded und dazu konfiguriert, eine Vielzahl von Threads (z.B. 32 Threads) aus einer bestimmten Gruppe von Threads gleichzeitig auszuführen. In einem Ausführungsbeispiel implementiert der SM 440 eine SIMD (Single-Instruction, Multiple-Data)-Architektur, bei der jeder Thread in einer Gruppe von Threads (d.h. einem Warp) dazu konfiguriert ist, einen anderen Datensatz auf der Grundlage desselben Befehlssatzes zu verarbeiten. Alle Threads in der Gruppe der Threads führen dieselben Anweisungen aus. In einem anderen Ausführungsbeispiel implementiert der SM 440 eine SIMT (Single-Instruction, Multiple Thread)-Architektur, bei der jeder Thread in einer Gruppe von Threads dazu konfiguriert ist, einen anderen Datensatz auf der Grundlage desselben Befehlssatzes zu verarbeiten, wobei jedoch einzelne Threads in der Gruppe von Threads während der Ausführung divergieren dürfen. In einem Ausführungsbeispiel wird für jeden Warp ein Programmzähler, ein Aufrufstapel und ein Ausführungszustand beibehalten, wodurch die Gleichzeitigkeit zwischen Warps und eine serielle Ausführung innerhalb von Warps ermöglicht wird, wenn Threads innerhalb des Warps divergieren. In einem anderen Ausführungsbeispiel wird für jeden einzelnen Thread ein Programmzähler, ein Aufrufstapel und ein Ausführungszustand beibehalten, wodurch eine gleiche Gleichzeitigkeit zwischen allen Threads, innerhalb und zwischen Warps, ermöglicht wird. Wenn der Ausführungszustand für jeden einzelnen Thread beibehalten wird, können Threads, die dieselben Anweisungen ausführen, konvergiert und parallel ausgeführt werden, um eine maximale Effizienz zu erreichen. Der SM 440 wird nachstehend in Verbindung mit 5A näher beschrieben.
  • Die MMU 490 stellt eine Schnittstelle zwischen dem GPC 350 und der Partitionierungseinheit 380 bereit. Die MMU 490 kann eine Übersetzung von virtuellen Adressen in physikalische Adressen, einen Speicherschutz und eine Arbitrierung von Speicheranforderungen bereitstellen. In einem Ausführungsbeispiel stellt die MMU 490 einen oder mehrere Translation Lookaside Buffer (TLBs) zur Verfügung, um eine Übersetzung von virtuellen Adressen in physikalische Adressen in dem Speicher 304 durchzuführen.
  • 4B veranschaulicht eine Speicherpartitionierungseinheit 380 der PPU 300 von 3 gemäß einem Ausführungsbeispiel. Wie in 4B dargestellt ist, beinhaltet die Speicherpartitionierungseinheit 380 eine Raster Operations (ROP)-Einheit 450, einen Level-2 (L2)-Cache 460 und eine Speicherschnittstelle 470. Die Speicherschnittstelle 470 ist mit dem Speicher 304 gekoppelt. Die Speicherschnittstelle 470 kann 32, 64, 128, 1024-Bit-Datenbusse oder dergleichen für die Hochgeschwindigkeits-Datenübertragung implementieren. In einem Ausführungsbeispiel beinhaltet die PPU 300 U-Speicherschnittstellen 470, eine Speicherschnittstelle 470 pro Paar von Partitionierungseinheiten 380, wobei jedes Paar von Partitionierungseinheiten 380 mit einer entsprechenden Speichervorrichtung 304 verbunden ist. So kann die PPU 300 beispielsweise mit bis zu Y-Speichervorrichtungen 304 verbunden sein, wie beispielsweise Speicherstapeln mit hoher Bandbreite oder Grafikkarten mit doppelter Datenrate, Version 5, synchronen dynamischen Direktzugriffsspeichern oder anderen Arten von persistenten Speichern.
  • In einem Ausführungsbeispiel implementiert die Speicherschnittstelle 470 eine HBM2-Speicherschnittstelle und entspricht Y der Hälfte von U. In einem Ausführungsbeispiel befinden sich die HBM2-Speicherstapel in demselben physikalischen Gehäuse wie die PPU 300, wodurch im Vergleich zu herkömmlichen GDDR5-SDRAM-Systemen erheblichen Strom- und Flächeneinsparungen bereitgestellt werden. In einem Ausführungsbeispiel beinhaltet jeder HBM2-Stapel vier Speicherchips und ist Y gleich 4, wobei der HBM2-Stapel zwei 128-Bit-Kanäle pro Chip für insgesamt 8 Kanäle und eine Datenbusbreite von 1024 Bit beinhaltet.
  • In einem Ausführungsbeispiel unterstützt der Speicher 304 Single-Error Correcting Double-Error Detecting (SECDED) Error Correction Code (ECC) zum Schutz der Daten. ECC bietet eine höhere Zuverlässigkeit für Rechenanwendungen, die gegenüber Datenkorruption empfindlich reagieren. Zuverlässigkeit ist besonders wichtig in großen Cluster-Rechenumgebungen, in denen PPUs 300 sehr große Datensätze verarbeiten und/oder Anwendungen über längere Zeitspannen hinweg betreiben.
  • In einem Ausführungsbeispiel implementiert die PPU 300 eine mehrstufige Speicherhierarchie. In einem Ausführungsbeispiel unterstützt die Speicherpartitionseinheit 380 einen vereinigten Speicher, um einen einzigen vereinigten virtuellen Adressraum für CPU- und PPU 300-Speicher bereitzustellen, der einen Datenaustausch zwischen virtuellen Speichersystemen ermöglicht. In einem Ausführungsbeispiel wird die Häufigkeit von Zugriffen einer PPU 300 auf Speicher, der sich auf anderen Prozessoren befindet, nachverfolgt, um sicherzustellen, dass Speicherseiten in den physikalischen Speicher der PPU 300 verschoben werden, die häufiger auf die Seiten zugreift. In einem Ausführungsbeispiel unterstützt der NVLink 310 Adressübersetzungsdienste, die es der PPU 300 ermöglichen, direkt auf die Seitentabellen einer CPU zuzugreifen, und vollen Zugriff auf CPU-Speicher durch die PPU 300 bereitstellen.
  • In einem Ausführungsbeispiel übertragen Kopier-Engines Daten zwischen mehreren PPUs 300 oder zwischen PPUs 300 und CPUs. Die Kopier-Engines können Seitenfehler für Adressen, die nicht in den Seitentabellen abgebildet sind, erzeugen. Die Speicherpartitionierungseinheit 380 kann dann die Seitenfehler beheben, wobei sie die Adressen in die Seitentabelle abbildet, woraufhin die Kopier-Engine die Übertragung durchführen kann. In einem herkömmlichen System ist der Speicher für mehrfache Kopier-Engine-Operationen zwischen mehreren Prozessoren verankert (d.h. nicht auslagerbar), welches den verfügbaren Speicher erheblich reduziert. Mit Hardware-Seitenfehlerverwerfung können Adressen an die Kopier-Engines weitergegeben werden, ohne besorgt sein zu müssen, ob die Speicherseiten resident sind, und ist der Kopiervorgang transparent.
  • Daten aus dem Speicher 304 oder anderen Systemspeicher können von der Speicherpartitionierungseinheit 380 abgerufen und in dem L2-Cache 460 gespeichert werden, welcher sich auf dem Chip befindet und von den verschiedenen GPCs 350 gemeinsam genutzt wird. Wie dargestellt ist, beinhaltet jede Speicherpartitionierungseinheit 380 einen Teil des L2-Cache 460, der einer entsprechenden Speichervorrichtung 304 zugeordnet ist. Untergeordnete Caches können dann in verschiedenen Einheiten innerhalb der GPCs 350 implementiert sein. So kann beispielsweise jeder der SMs 440 einen Level One (L1)-Cache implementieren. Der L1-Cache ist ein privater Speicher, der für einen bestimmten SM 440 dediziert ist. Daten aus dem L2-Cache 460 können abgerufen und in jedem der L1-Caches zur Verarbeitung in den Funktionseinheiten des SMs 440 gespeichert werden. Der L2-Cache 460 ist mit der Speicherschnittstelle 470 und der XBar 370 gekoppelt.
  • Die ROP-Einheit 450 führt Grafikrasteroperationen mit Bezug zu Pixelfarben durch, wie z.B. eine Farbkompression, ein Pixelblending und dergleichen. Die ROP-Einheit 450 implementiert darüber hinaus Tiefenprüfungen in Verbindung mit der Raster-Engine 425, wobei sie eine Tiefe für einen Probenort empfängt, der einem Pixelfragment aus der Entnahme-Engine der Raster-Engine 425 zugeordnet ist. Die Tiefe wird gegen eine entsprechende Tiefe in einem Tiefenpuffer für einen dem Fragment zugeordnete Probenort getestet. Wenn das Fragment den Tiefentest für den Probenort besteht, aktualisiert die ROP-Einheit 450 den Tiefenpuffer und überträgt ein Ergebnis des Tiefentests an die Raster-Engine 425. Es ist zu beachten, dass die Anzahl von Partitionierungseinheiten 380 von der Anzahl der GPCs 350 verschieden sein kann und daher jede ROP-Einheit 450 mit jedem der GPCs 350 gekoppelt sein kann. Die ROP-Einheit 450 verfolgt die von den verschiedenen GPCs 350 empfangenen Pakete nach und ermittelt den GPC 350, zu dem ein von der ROP-Einheit 450 erzeugtes Ergebnis über die Xbar 370 geroutet wird. Obwohl die ROP-Einheit 450 in 4B innerhalb der Speicherpartitionierungseinheit 380 enthalten ist, kann in einem anderen Ausführungsbeispiel die ROP-Einheit 450 außerhalb der Speicherpartitionierungseinheit 380 sein. So kann sich beispielsweise die ROP-Einheit 450 in dem GPC 350 oder in einer anderen Einheit befinden.
  • 5A veranschaulicht den Streaming-Multiprozessor 440 von 4A gemäß einem Ausführungsbeispiel. Wie in 5A dargestellt ist, beinhaltet der SM 440 einen Anweisungs-Cache 505, eine oder mehrere Scheduler-Einheiten 510, eine Registerdatei 520, einen oder mehrere Verarbeitungskerne 550, eine oder mehrere Spezialfunktionseinheiten (SFUs) 552, eine oder mehrere Lade-/Speichereinheiten (LSUs) 554, ein Verbindungsnetzwerk 580 und einen gemeinsam genutzten Speicher/L1-Cache 570.
  • Wie vorstehend beschrieben wurde, versendet die Arbeitsverteilungseinheit 325 Aufgaben zur Ausführung auf den GPCs 350 der PPU 300. Die Aufgaben sind einem bestimmten DPC 420 innerhalb eines GPC 350 zugeordnet, und, wenn die Aufgabe einem Shaderprogramm zugeordnet ist, kann die Aufgabe einem SM 440 zugeordnet sein. Die Scheduler-Einheit 510 empfängt die Aufgaben von der Arbeitsverteilungseinheit 325 und verwaltet die Anweisungsplanung für einen oder mehrere der dem SM 440 zugeordneten Thread-Blöcke. Die Scheduler-Einheit 510 plant Thread-Blöcke zur Ausführung als Warps paralleler Threads, wobei jedem Thread-Block zumindest ein Warp zugeordnet ist. In einem Ausführungsbeispiel führt jeder Warp 32 Threads aus. Die Scheduler-Einheit 510 kann eine Vielzahl verschiedener Thread-Blöcke verwalten, wobei sie die Warps den verschiedenen Thread-Blöcken zuordnet und dann während jedes Taktzyklus Anweisungen von der Vielzahl von verschiedenen kooperativen Gruppen an die verschiedenen Funktionseinheiten (d.h. Kerne 550, SFUs 552 und LSUs 554) sendet.
  • Cooperative Groups ist ein Programmiermodell für die Organisation von Gruppen kommunizierender Threads, das es Entwicklern ermöglicht, die Granularität auszudrücken, mit welcher Threads kommunizieren, wodurch der Ausdruck reichhaltigerer, effizienterer paralleler Zerlegungen ermöglicht wird. Kooperative Start-APIs unterstützen die Synchronisation zwischen Thread-Blöcken zur Ausführung paralleler Algorithmen. Herkömmliche Programmiermodelle stellen ein einziges, einfaches Konstrukt zur Synchronisation kooperierender Threads bereit: eine Barriere über alle Threads eines Thread-Blocks (d.h. die Funktion syncthreads()). Programmierer möchten jedoch oftmals Gruppen von Threads definieren, die kleiner als die Granularität von Threads sind, und innerhalb der definierten Gruppen synchronisieren, um mehr Leistung, Designflexibilität und Softwarewiederverwendbarkeit in Form von gemeinsamen gruppenweiten Funktionsschnittstellen zu ermöglichen.
  • Cooperative Groups ermöglicht es Programmierern, Gruppen von Threads explizit bei Subblock (d.h. so klein wie ein einzelner Thread) und Multiblock-Granularitäten zu definieren und kollektive Operationen wie beispielsweise die Synchronisation auf der Threads in einer kooperativen Gruppe durchzuführen. Das Programmiermodell unterstützt eine saubere Zusammensetzung über Softwaregrenzen hinweg, so dass Bibliotheken und Utility-Funktionen in ihrem lokalen Kontext sicher synchronisieren können, ohne Annahmen über Konvergenz treffen zu müssen. Stammfunktionen kooperativer Gruppen ermöglichen neue Muster kooperativer Parallelität, einschließlich von Erzeuger-Verbraucher-Parallelität, opportunistischer Parallelität und globaler Synchronisation über ein ganzes Netz von Thread-Blöcken hinweg.
  • Eine Sendeeinheit 515 ist dazu konfiguriert, Anweisungen an eine oder mehrere der Funktionseinheiten zu senden. In dem Ausführungsbeispiel beinhaltet die Scheduler-Einheit 510 zwei Sendeeinheiten 515, die es ermöglichen, während jedes Taktzyklus zwei verschiedene Anweisungen desselben Warps zu versenden. In alternativen Ausführungsbeispielen kann jede Scheduler-Einheit 510 eine einzelne Sendeeinheit 515 oder zusätzliche Sendeeinheiten 515 beinhalten.
  • Jeder SM 440 beinhaltet eine Registerdatei 520, die einen Satz von Registern für die Funktionseinheiten des SM 440 bereitstellt. In einem Ausführungsbeispiel ist die Registerdatei 520 zwischen jeder der Funktionseinheiten aufgeteilt, so dass jeder Funktionseinheit ein dedizierter Teil der Registerdatei 520 zugeordnet ist. In einem anderen Ausführungsbeispiel ist die Registerdatei 520 zwischen den verschiedenen Warps aufgeteilt, die von dem SM 440 ausgeführt werden. Die Registerdatei 520 stellt einen Zwischenspeicher für Operanden, die mit den Datenpfaden der Funktionseinheiten verbunden sind, bereit.
  • Jeder SM 440 umfasst L Verarbeitungskerne 550. In einem Ausführungsbeispiel beinhaltet der SM 440 eine große Anzahl (z.B. 128, usw.) verschiedener Verarbeitungskerne 550. Jeder Kern 550 kann eine vollpipelinierte, einfachgenaue, doppelgenaue und/oder gemischtgenaue Verarbeitungseinheit beinhalten, die eine Gleitkomma-Rechenlogikeinheit und eine Ganzzahl-Rechenlogikeinheit beinhaltet. In einem Ausführungsbeispiel implementieren die Gleitkomma-Rechenlogikeinheiten den Standard IEEE 754-2008 für Gleitkommaarithmetik. In einem Ausführungsbeispiel beinhalten die Kerne 550 64 einfachgenaue (32-Bit) Gleitkomma-Kerne, 64 Ganzzahlkerne, 32 doppelgenaue (64-Bit) Gleitkommakerne und 8 Tensorkerne.
  • Tensorkerne, die dazu konfiguriert sind, Matrixoperationen durchzuführen, und, in einem Ausführungsbeispiel ein oder mehrere Tensorkerne, sind in den Kernen 550 enthalten. Insbesondere sind die Tensorkerne dazu konfiguriert, tief lernende Matrixarithmetik durchzuführen, wie z.B. Faltungsoperationen für das Training und die Inferenzierung neuronaler Netzwerke. In einem Ausführungsbeispiel arbeitet jeder Tensorkern auf einer 4x4-Matrix und führt eine Matrixmultiplikation- und Akkumulationsoperation D=AxB+C durch, worin A, B, C und D 4x4-Matrizen sind.
  • In einem Ausführungsbeispiel sind die Matrixmultiplikationseingänge A und B 16-Bit Fließkomma-Matrizen, während die Akkumulationsmatrizen C und D 16-Bit Fließkomma- oder 32-Bit Fließkomma-Matrizen sein können. Tensorkerne arbeiten mit 16-Bit Gleitkomma-Eingangsdaten mit 32-Bit Gleitkommaakkumulation. Die 16-Bit-Fließkomma-Multiplikation erfordert 64 Operationen und resultiert in einem hochpräzisen Produkt, das dann unter Verwendung der 32-Bit-Fließkommaaddition mit den anderen Zwischenprodukten für eine 4×4×4×4-Matrix-Multiplikation akkumuliert wird. In der Praxis werden Tensorkerne verwendet, um viel größere zweidimensionale oder höher dimensionale Matrixoperationen durchzuführen, die sich aus diesen kleineren Elementen zusammensetzen. Eine API, wie beispielsweise die CUDA 9 C++ API, stellt spezielle Matrixlasten, Matrixmultiplikationen und - akkumulationen sowie Matrixspeicheroperationen zur Verfügung, um Tensorkerne aus einem CUDA-C++-Programm heraus effizient zu nutzen. Auf der CUDA-Ebene geht das Warp-Level-Interface von Matrizen der Größe 16×16 aus, die alle 32 Threads des Warps umspannen.
  • Jeder SM 440 umfasst auch M SFUs 552, die spezielle Funktionen durchführen (z.B. Attributbewertung, reziproke Quadratwurzel und dergleichen). In einem Ausführungsbeispiel können die SFUs 552 eine Baumdurchlaufeinheit beinhalten, die dazu konfiguriert ist, eine hierarchische Baumdatenstruktur zu durchlaufen. In einem Ausführungsbeispiel können die SFUs 552 eine Textureinheit beinhalten, die dazu konfiguriert ist, Texturkartenfilteroperationen durchzuführen. In einem Ausführungsbeispiel sind die Textureinheiten dazu konfiguriert, Texturkarten (z.B. ein 2D-Array von Texeln) aus dem Speicher 304 zu laden und die Texturkarten abzutasten, um abgetastete Texturwerte zur Verwendung in Shaderprogrammen zu erzeugen, die von dem SM 440 ausgeführt werden. In einem Ausführungsbeispiel werden die Texturkarten in dem gemeinsamen Speicher/L1-Cache 470 gespeichert. Die Textureinheiten implementieren Texturoperationen wie z.B. Filteroperationen mit Hilfe von Mip-Maps (d.h. Texturkarten mit variierendem Detaillierungsgrad). In einem Ausführungsbeispiel beinhaltet jeder SM 340 zwei Textureinheiten.
  • Jeder SM 440 umfasst darüber hinaus N LSUs 554, die Lade- und Speicheroperationen zwischen dem gemeinsamen Speicher/L1-Cache 570 und der Registerdatei 520 implementieren. Jeder SM 440 beinhaltet ein Verbindungsnetzwerk 580, das jede der Funktionseinheiten mit der Registerdatei 520 und die LSU 554 mit der Registerdatei 520 und dem gemeinsamen Speicher/L1 Cache 570 verbindet. In einem Ausführungsbeispiel ist das Verbindungsnetzwerk 580 eine Kreuz- bzw. Querschiene, die dazu konfiguriert werden kann, eine beliebige der Funktionseinheiten mit einem beliebigen der Register in der Registerdatei 520 zu verbinden und die LSUs 554 mit der Registerdatei und Speicherplätzen in dem gemeinsamen Speicher/L1-Cache 570 zu verbinden.
  • Der gemeinsam genutzte Speicher/L1 Cache 570 ist ein Feld bzw. Array von Speichern auf dem Chip bzw. On-Chip-Speicher, das eine Datenspeicherung und Kommunikation zwischen dem SM 440 und der Stammfunktions-Engine 435 sowie zwischen Threads in dem SM 440 ermöglicht. In einem Ausführungsbeispiel umfasst der gemeinsam genutzte Speicher/L1-Cache 570 128KB Speicherkapazität und liegt in dem Pfad von dem SM 440 zu der Partitionseinheit 380. Der gemeinsam genutzte Speicher/L1-Cache 570 kann dazu verwendet werden, Lesevorgänge und Schreibvorgänge zwischenzuspeichern. Einer oder mehrere des gemeinsam genutzten Speichers/L1-Caches 570, L2-Caches 460 und Speichers 304 sind Backup-Speicher.
  • Ein Kombinieren von Daten-Cache und gemeinsam genutzter Speicherfunktionalität zu einem einzigen Speicherblock stellt die beste Gesamtleistung für beide Arten von Speicherzugriffen bereit. Die Kapazität ist als ein Zwischenspeicher bzw. Cache für Programme nutzbar, die keinen gemeinsamen Speicher verwenden. Wenn beispielsweise ein gemeinsam genutzter Speicher so konfiguriert ist, dass er die Hälfte der Kapazität verwendet, können Textur- und Lade-/Speicher-Operationen die verbleibende Kapazität nutzen. Die Integration innerhalb des gemeinsam genutzten Speichers/L1-Caches 570 ermöglicht es dem gemeinsam genutzten Speicher/L1-Cache 570, als eine Hochdurchsatzleitung zum Streamen von Daten zu arbeiten und gleichzeitig einen Zugriff auf häufig wiederverwendete Daten mit hoher Bandbreite und geringer Latenz zu ermöglichen.
  • Bei einer Konfiguration für universelle parallele Berechnungen kann eine im Vergleich mit Grafikverarbeitung einfachere Konfiguration verwendet werden. Insbesondere werden die in 3 gezeigten Grafikverarbeitungseinheiten mit fester Funktion umgangen, wodurch ein wesentlich einfacheres Programmiermodell entsteht. In der Konfiguration für universelle parallele Berechnung weist die Arbeitsverteilungseinheit 325 Thread-Blöcke direkt den DPCs 420 zu und verteilt sie. Die Threads in einem Block führen dasselbe Programm aus, wobei eine eindeutige Thread-ID in der Berechnung verwendet wird, um sicherzustellen, dass jeder Thread eindeutige Ergebnisse erzeugt, und wobei der SM 440 verwendet wird, um das Programm auszuführen und Berechnungen durchzuführen, der gemeinsam genutzte Speicher/L1-Cache 570 verwendet wird, um zwischen Threads zu kommunizieren, und die LSU 554 verwendet wird, um den globalen Speicher über den gemeinsamen Speicher/L1-Cache 570 und die Speicherpartitionseinheit 380 zu lesen und zu beschreiben. Bei der Konfiguration für universelle parallele Berechnungen kann der SM 440 ebenfalls Befehle schreiben, die die Scheduler-Einheit 320 dazu verwenden kann, neue Arbeit an den DPCs 420 zu beginnen.
  • Die PPU 300 kann in einem Desktop-Computer, einem Laptop-Computer, einem Tablet-Computer, Servern, Supercomputern, einem Smartphone (z.B. einem drahtlosen, tragbaren Gerät), einem Personal Digital Assistant (PDA), einer Digitalkamera, einem Fahrzeug, einem Kopfbildschirm, einer tragbaren elektronischen Vorrichtung und dergleichen integriert sein. In einem Ausführungsbeispiel ist die PPU 300 auf einem einzelnen Halbleitersubstrat ausgeführt. In einem anderen Ausführungsbeispiel ist die PPU 300 zusammen mit einer oder mehreren anderen Vorrichtungen, wie beispielsweise zusätzlichen PPUs 300, dem Speicher 204, einer CPU mit reduziertem Befehlssatz (RISC), einer Speicherverwaltungseinheit (MMU), einem Digital-Analog-Wandler (DAC) und dergleichen, in einem System auf einem Chip (SoC) enthalten.
  • In einem Ausführungsbeispiel kann die PPU 300 auf einer Grafikkarte enthalten sein, die eine oder mehrere Speichervorrichtungen 304 beinhaltet. Die Grafikkarte kann so konfiguriert sein, dass sie mit einem PCIe-Steckplatz auf einem Motherboard eines Desktop-Computers verbunden ist. In einem nochmals anderen Ausführungsbeispiel kann die PPU 300 eine integrierte Grafikverarbeitungseinheit (iGPU) oder ein paralleler Prozessor sein, der in dem Chipsatz des Motherboards enthalten ist.
  • Beispielhaftes Rechensystem
  • Systeme mit mehreren GPUs und CPUs werden in einer Vielzahl von Branchen eingesetzt, da Entwickler mehr Parallelität in Anwendungen wie künstlicher Intelligenz bereitstellen und nutzen. Leistungsstarke GPU-beschleunigte Systeme mit Zehntausenden und mehr Rechenknoten werden in Rechenzentren, Forschungseinrichtungen und Supercomputern eingesetzt, um immer größere Probleme zu lösen. Mit zunehmender Anzahl von Verarbeitungseinrichtungen innerhalb der Hochleistungssysteme müssen die Kommunikations- und Datenübertragungsmechanismen skaliert werden, um die erhöhte Bandbreite zu unterstützen.
  • 5B ist ein konzeptionelles Diagramm eines unter Verwendung der PPU 300 von 3 implementierten Verarbeitungssystems 500, gemäß einem Ausführungsbeispiel. Das exemplarische System 565 kann dazu konfiguriert sein, die in den 1C, 1F und 2B dargestellten Verfahren 100, 160 und 220 zu implementieren. Das Verarbeitungssystem 500 beinhaltet eine CPU 530, einen Switch 510 und jeweils mehrere PPUs 300 und entsprechende Speicher 304. Der NVLink 310 stellt Hochgeschwindigkeits-Kommunikationsverbindungen zwischen jeder der PPUs 300 bereit. Obwohl eine bestimmte Anzahl von NVLink 310- und Interconnect 302-Verbindungen in 5B dargestellt ist, kann die Anzahl der Verbindungen zu jeder PPU 300 und der CPU 530 variieren. Der Switch 510 verbindet zwischen der Verbindung 302 und der CPU 530. Die PPUs 300, die Speicher 304 und die NVLinks 310 können auf einer einzigen Halbleiterplattform liegen, um ein Parallelverarbeitungsmodul 525 zu bilden. In einem Ausführungsbeispiel unterstützt der Switch 510 zwei oder mehr Protokolle, um zwischen verschiedenen unterschiedlichen Verbindungen und/oder Verknüpfungen zu verbinden.
  • In einem anderen Ausführungsbeispiel (nicht dargestellt) stellt der NVLink 310 eine oder mehrere Hochgeschwindigkeits-Kommunikationsverbindungen zwischen jeder der PPUs 300 und der CPU 530 bereit und verbindet der Switch 510 zwischen der Verbindung 302 und jeder der PPUs 300. Die PPUs 300, die Speicher 304 und die Verbindung 302 können auf einer einzigen Halbleiterplattform angeordnet sein, um ein Parallelverarbeitungsmodul 525 zu bilden. In einem nochmals weiteren Ausführungsbeispiel (nicht dargestellt) stellt die Verbindung 302 eine oder mehrere Kommunikationsverbindungen zwischen jeder der PPUs 300 und der CPU 530 bereit, und verbindet der Switch 510 zwischen jeder der PPUs 300 unter Verwendung des NVLinks 310, um eine oder mehrere Hochgeschwindigkeits-Kommunikationsverbindungen zwischen den PPUs 300 bereitzustellen. In einem weiteren Ausführungsbeispiel (nicht dargestellt) stellt der NVLink 310 eine oder mehrere Hochgeschwindigkeits-Kommunikationsverbindungen zwischen den PPUs 300 und der CPU 530 über den Switch 510 bereit. In einem nochmals anderen Ausführungsbeispiel (nicht dargestellt) stellt die Verbindung 302 eine oder mehrere Kommunikationsverbindungen zwischen jeder der PPUs 300 direkt zur Verfügung. Eine oder mehrere der Hochgeschwindigkeits-Kommunikationsverbindungen über dem/die NVLink(s) 310 können als physische NVLink-Verbindung oder als entweder eine On-Chip- oder eine On-Die-Verbindung unter Verwendung desselben Protokolls wie der NVLink 310 implementiert sein.
  • Im Kontext der vorliegenden Beschreibung kann sich eine einzelne Halbleiterplattform auf eine einzige einheitliche halbleiterbasierte integrierte Schaltung beziehen, die auf einem Die oder einem Chip hergestellt ist. Es wird angemerkt, dass sich der Begriff einzelne Halbleiterplattform auch auf Multichip-Module mit erhöhter Konnektivität, die einen On-Chip-Betriebsablauf simulieren und wesentliche Verbesserungen gegenüber der Nutzung einer herkömmlichen Busimplementierung bereitstellen, beziehen kann. Natürlich können die verschiedenen Schaltungen oder Vorrichtungen auch einzeln oder in verschiedenen Kombinationen von Halbleiterplattformen nach den Wünschen des Benutzers angeordnet sein. Alternativ kann das Parallelverarbeitungsmodul 525 als ein Leiterplattensubstrat implementiert sein, und kann jede der PPUs 300 und/oder jeder der Speicher 304 eine gepackte Vorrichtung sein. In einem Ausführungsbeispiel befinden sich die CPU 530, der Switch 510 und das Parallelverarbeitungsmodul 525 auf einer einzigen Halbleiterplattform.
  • In einem Ausführungsbeispiel beträgt die Signalübertragungsrate jedes NVLinks 310 20 bis 25 Gigabit/Sekunde und beinhaltet jede PPU 300 beinhaltet sechs NVLink 310-Schnittstellen (wie in 5B dargestellt, sind fünf NVLink 310-Schnittstellen für jede PPU 300 enthalten). Jeder NVLink 310 stellt eine Datenübertragungsrate von 25 Gigabyte/Sekunde in jede Richtung, wobei sechs Links 300 Gigabyte/Sekunde liefern. Die NVLinks 310 können ausschließlich für die PPU-zu-PPU-Kommunikation, wie in 5B dargestellt, oder für eine Kombination aus PPU-zu-PPU und PPU-zu-CPU verwendet werden, wenn die CPU 530 ebenfalls eine oder mehrere NVLink 310-Schnittstellen beinhaltet.
  • In einem Ausführungsbeispiel ermöglicht der NVLink 310 den direkten Lade-/Speicher-/Kernzugriff von der CPU 530 auf den Speicher 304 jeder PPU 300. In einem Ausführungsbeispiel unterstützt der NVLink 310 Kohärenzoperationen, so dass aus den Speichern 304 gelesene Daten in der Cache-Hierarchie der CPU 530 gespeichert werden können, wodurch die Cache-Zugriffslatenz für die CPU 530 reduziert wird. In einem Ausführungsbeispiel beinhaltet der NVLink 310 die Unterstützung von Address Translation Services (ATS), so dass die PPU 300 direkt auf Seitentabellen innerhalb der CPU 530 zugreifen kann. Einer oder mehrere der NVLinks 310 können auch für den Betrieb in einem Niedrigverbrauchsmodus konfiguriert sein.
  • 5C veranschaulicht ein exemplarisches System 565, in welchem die unterschiedliche Architektur und/oder Funktionalität der verschiedenen vorangehenden Ausführungsbeispiele implementiert sein kann. Das exemplarische System 565 kann dazu konfiguriert sein, die in den 1C, 1F und 2B dargestellten Verfahren 100, 160 und 220 zu implementieren.
  • Wie gezeigt ist, wird ein System 565 bereitgestellt, das zumindest eine Zentralprozessoreinheit 530 beinhaltet, die mit einem Kommunikationsbus 575 verbunden ist. Der Kommunikationsbus 575 kann unter Verwendung jedes geeigneten Protokolls, wie z.B. PCI (Peripheral Component Interconnect), PCI-Express, AGP (Accelerated Graphics Port), HyperTransport oder einem beliebigen anderen Bus- oder Punkt-zu-Punkt Kommunikationsprotokoll(en), implementiert sein. Das System 565 beinhaltet darüber hinaus einen Hauptspeicher 540. Steuerlogik (Software) und die Daten werden in dem Hauptspeicher 540 gespeichert, welcher als Direktzugriffsspeicher (RAM) ausgeführt sein kann.
  • Das System 565 beinhaltet darüber hinaus Eingabevorrichtungen 560, das Parallelverarbeitungssystem 525 und Anzeigevorrichtungen 545, d.h. eine herkömmliche CRT (Kathodenstrahlröhre), LCD (Flüssigkristallanzeige), LED (Leuchtdiode), Plasmaanzeige oder dergleichen. Benutzereingaben können von den Eingabegeräten 560, z.B. Tastatur, Maus, Touchpad, Mikrofon und dergleichen, empfangen werden. Jede(s) der vorgenannten Module und/oder Vorrichtungen kann sich sogar auf einer einzigen Halbleiterplattform befinden, um das System 565 zu bilden. Alternativ können die verschiedenen Module auch einzeln oder in verschiedenen Kombinationen von Halbleiterplattformen nach den Wünschen des Anwenders angeordnet sein.
  • Ferner kann das System 565 über eine Netzwerkschnittstelle 535 zu Kommunikationszwecken mit einem Netzwerk (z.B. einem Telekommunikationsnetzwerk, einem Local Area Network (LAN), einem drahtlosen Netzwerk, einem Wide Area Network (WAN) wie beispielsweise dem Internet, einem Peer-to-Peer-Netzwerk, einem Kabelnetzwerk oder dergleichen) gekoppelt sein.
  • Das System 565 kann darüber hinaus einen Sekundärspeicher (nicht dargestellt) beinhalten. Der Sekundärspeicher 610 beinhaltet beispielsweise ein Festplattenlaufwerk und/oder ein Wechselspeicherlaufwerk, das ein Diskettenlaufwerk, ein Magnetbandlaufwerk, ein Compact-Disc-Laufwerk, ein Digital Versatile Disc (DVD)-Laufwerk, ein Aufzeichnungsgerät oder einen universeller serieller Bus-(USB)-Flashspeicher darstellt. Das Wechselspeicherlaufwerk liest und/oder schreibt in bekannter Weise von einer/auf eine Wechselspeichereinheit.
  • Computerprogramme, oder Logikalgorithmen der Computersteuerung, können in dem Hauptspeicher 540 und/oder in dem Sekundärspeicher gespeichert werden. Wenn sie ausgeführt werden, ermöglichen es solche Computerprogramme dem System 565, verschiedene Funktionen durchzuführen. Der Speicher 540, der Speicher und/oder jeder andere Speicher sind mögliche Beispiele von computerlesbaren Medien.
  • Die Architektur und/oder Funktionalität der verschiedenen vorangehenden Figuren kann im Kontext eines universellen Computersystems, eines Platinensystems, eines Spielkonsolensystems, das für Unterhaltungszwecke dediziert ist, eines anwendungsspezifischen Systems und/oder eines beliebigen anderen gewünschten Systems implementiert werden. Das System 565 kann beispielsweise die Form eines Desktop-Computers, eines Laptops, eines Tablet-Computers, von Servern, Supercomputern, eines Smartphones (z.B. eines drahtlosen, tragbaren Geräts), eines persönlichen digitalen Assistenten (PDA), einer Digitalkamera, eines Fahrzeugs, einer kopfmontierten Anzeige, einer tragbaren elektronischen Vorrichtung, einer mobilen Telefonvorrichtung, eines Fernsehers, einer Workstation, von Spielkonsolen, eines eingebetteten Systems und/oder einer beliebigen anderen Art von Logik annehmen.
  • Während vorstehend verschiedene Ausführungsbeispiele beschrieben wurden, versteht sich, dass diese lediglich beispielhaft und nicht als beschränkend dargestellt wurden. Daher ist die Breite und der Schutzumfang eines bevorzugten Ausführungsbeispiels nicht durch eines der oben beschriebenen exemplarischen Ausführungsbeispielen zu beschränken, sondern nur in Übereinstimmung mit den nachfolgenden Ansprüchen und deren Entsprechungen zu definieren.
  • Maschinelles Lernen
  • Deep Neural Networks (DNNs), die auf Prozessoren wie beispielsweise der PPU 300 entwickelt wurden, wurden für verschiedene Anwendungsfälle eingesetzt, von selbstfahrenden Autos bis hin zu schnellerer Medikamentenentwicklung, von automatischer Bildaufzeichnung in Online-Bilddatenbanken bis hin zu intelligenter Echtzeit-Sprachübersetzung in Video-Chat-Anwendungen. Deep Learning ist eine Technik, die den neuronalen Lernprozess des menschlichen Gehirns modelliert, kontinuierlich lernt, kontinuierlich intelligenter wird und im Laufe der Zeit schnellere und genauere Ergebnisse liefert. Ein Kind wird zunächst von einem Erwachsenen gelehrt, verschiedene Formen richtig zu identifizieren und zu klassifizieren, um schließlich ohne jegliche Nachhilfe Formen identifizieren zu können. Ebenso muss ein tief lernendes oder neuronal lernendes System in der Objekterkennung und -klassifizierung trainiert werden, damit es intelligenter und effizienter grundlegende Objekte, okkludierte Objekte usw. identifizieren und gleichzeitig den Objekten Kontext zuweisen kann.
  • Auf der einfachsten Ebene betrachten Neuronen im menschlichen Gehirn verschiedene Inputs bzw. Eingaben, die empfangen werden, werden jedem dieser Inputs Wichtigkeitsstufen zugewiesen, und wird ein Output bzw. eine Ausgabe an andere Neuronen weitergeleitet, um darauf zu reagieren. Ein künstliches Neuron oder Perzeptron ist das grundlegendste Modell eines neuronalen Netzwerks. In einem Beispiel kann ein Perzeptron eine oder mehrere Eingaben empfangen, die verschiedene Merkmale eines Objekts darstellen, für die das Perzeptron trainiert wird, um sie zu erkennen und zu klassifizieren, und wird jedem dieser Merkmale ein bestimmtes Gewicht zugewiesen, das auf der Bedeutung dieses Merkmals für die Definition der Form eines Objekts basiert.
  • Ein Deep Neural Network (DNN)-Modell beinhaltet mehrere Schichten vieler verbundener Knoten (z.B. Perzeptrons, Boltzmann-Maschinen, radiale Basisfunktionen, faltende Schichten, usw.), die mit enormen Mengen von Eingangsdaten trainiert werden können, um komplexe Probleme schnell mit hoher Genauigkeit zu lösen. In einem Beispiel zerlegt eine erste Schicht des DNN-Modells ein Eingangsbild eines Autos in verschiedene Abschnitte und sucht nach Grundmustern wie beispielsweise Linien und Winkeln. Die zweite Schicht setzt die Linien zusammen, um nach Mustern höherer Ebene wie beispielsweise Rädern, Windschutzscheiben und Spiegeln zu suchen. Die nächste Schicht identifiziert den Fahrzeugtyp, und die letzten paar Schichten erzeugen ein Label für das Eingangsbild, das das Modell einer bestimmten Automobilmarke identifiziert.
  • Sobald das DNN trainiert ist, kann das DNN eingesetzt und dazu verwendet werden, Objekte oder Muster in einem Prozess, der als Inferenz bzw. Schlussfolgerung bekannt ist, zu identifizieren und zu klassifizieren. Beispiele für Schlussfolgerungen (der Prozess, durch welchen ein DNN nützliche Informationen aus einer gegebenen Eingabe extrahiert) beinhalten das Identifizieren von handschriftlichen Zahlen auf Schecks, die in Geldautomaten hinterlegt werden, das Identifizieren von Bildern von Freunden auf Fotos, das Liefern von Filmempfehlungen an über fünfzig Millionen Benutzer, das Identifizieren und Klassifizieren verschiedener Arten von Automobilen, Fußgängern und Straßengefahren in fahrerlosen Autos oder das Übersetzen menschlicher Sprache in Echtzeit.
  • Während des Trainings fließen Daten in einer Vorwärtspropagationsphase durch das DNN, bis eine Vorhersage erstellt wird, die ein dem Input entsprechendes Label angibt. Wenn das neuronale Netzwerk die Eingabe nicht korrekt kennzeichnet, werden Fehler zwischen der korrekten Bezeichnung und der vorhergesagten Kennzeichnung analysiert und werden die Gewichte für jedes Merkmal während einer Rückwärtspropagationsphase angepasst, bis das DNN die Eingabe und andere Eingaben in einem Trainingsdatensatz korrekt kennzeichnet. Das Training komplexer neuronaler Netze erfordert enorme Mengen an paralleler Rechenleistung, einschließlich von Gleitkomma-Multiplikationen und Additionen, die von der PPU 300 unterstützt werden. Die Inferenzierung ist weniger rechenintensiv als das Training, da es sich um einen latenzsensitiven Prozess handelt, bei dem ein trainiertes neuronales Netzwerk auf neue Eingaben, die es bisher noch nicht gegeben hat, angewendet wird, um Bilder zu klassifizieren, Sprache zu übersetzen und generell neue Informationen abzuleiten.
  • Neuronale Netzwerke sind stark auf Matrix-Mathematik-Operationen angewiesen, und komplexe mehrschichtige Netzwerke erfordern enorme Mengen an Gleitkommaleistung und Bandbreite für sowohl Effizienz als auch Geschwindigkeit. Mit Tausenden von Rechenkernen, die für Matrix-Mathematik-Operationen optimiert sind und Hunderte von TFLOPS an Leistung liefern, ist die PPU 300 eine Rechenplattform, die in der Lage ist, die Leistung zu liefern, die für auf tiefen neuronalen Netzwerken basierende künstliche Intelligenz und Anwendungen des maschinellen Lernens erforderlich ist.

Claims (20)

  1. Computerimplementiertes Verfahren, umfassend: ein Empfangen von vorwärts gerichteten optischen Flussdaten, die von einem ersten Einzelbild ausgehend hin zu einem zweiten Einzelbild in einer Folge von Einzelbildern berechnet wurden, und von vorwärts gerichteten optischen Zwischenflussdaten für eine Zeit in der Folge von Einzelbildern, die zwischen dem ersten Einzelbild und dem zweiten Einzelbild liegt; ein Empfangen von rückwärts gerichteten optischen Flussdaten, die von dem zweiten Einzelbild ausgehend hin zu dem ersten Einzelbild berechnet wurden, und von rückwärts gerichteten optischen Zwischenflussdaten für die Zeit; und ein Erzeugen, durch ein neuronales Netzwerkmodell zur Flussinterpolation, eines Zwischen-Einzelbilds zu der Zeit auf der Grundlage des ersten Einzelbilds und des zweiten Einzelbilds, der vorwärts gerichteten optischen Zwischenflussdaten, der rückwärts gerichteten optischen Zwischenflussdaten, des ersten Einzelbilds, das in Übereinstimmung mit den vorwärts gerichteten optischen Zwischenflussdaten verzerrt wurde, und des zweiten Einzelbilds, das in Übereinstimmung mit den rückwärts gerichteten optischen Zwischenflussdaten verzerrt wurde.
  2. Computerimplementiertes Verfahren nach Anspruch 1, ferner umfassend ein Interpolieren, durch das neuronale Netzwerkmodell zur Flussinterpolation, zwischen den vorwärts gerichteten optischen Flussdaten und den rückwärts gerichteten optischen Flussdaten, um die vorwärts gerichteten optischen Zwischenflussdaten und die rückwärts gerichteten optischen Zwischenflussdaten zu der Zeit zu erzeugen.
  3. Computerimplementiertes Verfahren nach Anspruch 1 oder 2, ferner umfassend ein Erzeugen, durch ein neuronales Netzwerkmodell zur Flussberechnung, der vorwärts gerichteten optischen Flussdaten und der rückwärts gerichteten optischen Flussdaten auf der Grundlage des erstens Bilds und des zweiten Bilds.
  4. Computerimplementiertes Verfahren nach Anspruch 3, bei dem das neuronale Netzwerkmodell zur Flussberechnung und das neuronale Netzwerkmodell zur Flussinterpolation gemeinsam unbeaufsichtigt trainiert werden.
  5. Computerimplementiertes Verfahren nach Anspruch 3, bei dem das neuronale Netzwerkmodell zur Flussberechnung und das neuronale Netzwerkmodell zur Flussinterpolation gemeinsam unter Verwendung einer Verlustfunktion, die einen Wahrnehmungsverlust minimiert, trainiert werden.
  6. Computerimplementiertes Verfahren nach Anspruch 3, bei dem das neuronale Netzwerkmodell zur Flussberechnung und das neuronale Netzwerkmodell zur Flussinterpolation gemeinsam unter Verwendung einer Verlustfunktion, die einen Rekonstruktionsverlust minimiert, trainiert werden.
  7. Computerimplementiertes Verfahren nach Anspruch 3, bei dem das neuronale Netzwerkmodell zur Flussberechnung und das neuronale Netzwerkmodell zur Flussinterpolation gemeinsam unter Verwendung einer Verlustfunktion, die einen Verzerrungsverlust minimiert, trainiert werden.
  8. Computerimplementiertes Verfahren nach Anspruch 3, bei dem das neuronale Netzwerkmodell zur Flussberechnung und das neuronale Netzwerkmodell zur Flussinterpolation gemeinsam unter Verwendung einer Verlustfunktion, die einen Glättungsverlust minimiert, trainiert werden.
  9. Computerimplementiertes Verfahren nach einem der Ansprüche 2 bis 8, bei dem das neuronale Netzwerkmodell zur Flussberechnung und das neuronale Netzwerk zur Flussinterpolation faltende neuronale Netzwerkmodelle sind.
  10. Computerimplementiertes Verfahren nach einem vorangehenden Ansprüche, bei dem das neuronale Netzwerkmodell zur Flussinterpolation auf der Grundlage der vorwärts gerichteten optischen Zwischenflussdaten, der rückwärts gerichteten optischen Zwischenflussdaten, des ersten Eingangs-Einzelbilds, des zweiten Eingangs-Einzelbilds, des ersten Einzelbilds, das in Übereinstimmung mit den vorwärts gerichteten optischen Zwischenflussdaten verzerrt wurde, und des zweiten Einzelbilds, das in Übereinstimmung mit den rückwärts gerichteten optischen Zwischenflussdaten verzerrt wurde, eine Vorwärtssichtbarkeitskarte und eine Rückwärtssichtbarkeitskarte berechnet.
  11. Computerimplementiertes Verfahren nach einem der vorangehenden Ansprüche, ferner umfassend: ein Empfangen von zweiten vorwärts gerichteten optischen Zwischenflussdaten für eine zweite Zeit in der Folge von Einzelbildern, die zwischen dem ersten Bild und dem zweiten Bild liegt; ein Empfangen von zweiten rückwärts gerichteten optischen Zwischenflussdaten für die zweite Zeit; und ein Erzeugen, durch das neuronale Netzwerkmodell zur Flussinterpolation, eines zweiten Zwischen-Einzelbilds zu der zweiten Zeit auf der Grundlage der zweiten vorwärts gerichteten optischen Zwischenflussdaten, der zweiten rückwärts gerichteten optischen Zwischenflussdaten, des ersten Einzelbilds, das in Übereinstimmung mit den zweiten vorwärts gerichteten optischen Zwischenflussdaten verzerrt wurde, und des zweiten Einzelbilds, das in Übereinstimmung mit den zweiten rückwärts gerichteten optischen Zwischenflussdaten verzerrt wurde.
  12. Computerimplementiertes Verfahren nach einem der vorangehenden Ansprüche, bei dem das neuronale Netzwerkmodell zur Flussinterpolation das Zwischen-Einzelbild zu der Zeit durch lineares Fusionieren des ersten Einzelbilds, das in Übereinstimmung mit den vorwärts gerichteten optischen Zwischenflussdaten verzerrt wurde, und des zweiten Einzelbilds, das in Übereinstimmung mit den rückwärts gerichteten optischen Zwischenflussdaten verzerrt wurde, erzeugt.
  13. Computerimplementiertes Verfahren nach Anspruch 12, ferner umfassend ein, vor dem linearen Fusionieren, Anwenden einer Vorwärtssichtbarkeitskarte auf das erste Einzelbild, das in Übereinstimmung mit den vorwärts gerichteten optischen Zwischenflussdaten verzerrt wurde, und Anwenden einer Rückwärtssichtbarkeitskarte auf das zweite Einzelbild, das in Übereinstimmung mit den rückwärts gerichteten optischen Zwischenflussdaten verzerrt wurde.
  14. System, umfassend: ein neuronales Netzwerkmodell zur Flussinterpolation, das konfiguriert ist zum: Empfangen von vorwärts gerichteten optischen Flussdaten, die ausgehend von einem ersten Einzelbild hin zu einem zweiten Einzelbild in einer Folge von Einzelbildern berechnet wurden, und von vorwärts gerichteten optischen Zwischenflussdaten für eine Zeit in der Folge von Einzelbildern, die zwischen dem ersten Einzelbild und dem zweiten Einzelbild liegt; Empfangen von rückwärts gerichteten optischen Flussdaten, die ausgehend von dem zweiten Einzelbild hin zu dem ersten Einzelbild berechnet wurden, und von rückwärts gerichteten optischen Zwischenflussdaten für die Zeit; und Erzeugen eines Zwischen-Einzelbilds zu der Zeit auf der Grundlage des ersten Einzelbilds und des zweiten Einzelbilds, der vorwärts gerichteten optischen Zwischenflussdaten, der rückwärts gerichteten optischen Zwischenflussdaten, des ersten Einzelbilds, das in Übereinstimmung mit den vorwärts gerichteten optischen Zwischenflussdaten verzerrt wurde, und des zweiten Einzelbilds, das in Übereinstimmung mit den rückwärts gerichteten optischen Zwischenflussdaten verzerrt wurde.
  15. System nach Anspruch 14, ferner umfassend ein neuronales Netzwerkmodell für optischen Zwischenfluss, das dazu konfiguriert ist, zwischen den vorwärts gerichteten optischen Flussdaten und den rückwärts gerichteten optischen Flussdaten zu interpolieren, um die vorwärts gerichteten optischen Zwischenflussdaten und die rückwärts gerichteten optischen Zwischenflussdaten zu der Zeit zu erzeugen.
  16. System nach Anspruch 14 oder 15, ferner umfassend ein neuronales Netzwerkmodell zur Flussberechnung, das dazu konfiguriert ist, die vorwärts gerichteten optischen Flussdaten und die rückwärts gerichteten optischen Flussdaten auf der Grundlage des ersten Bilds und des zweiten Bilds zu erzeugen.
  17. System nach Anspruch 16, bei dem das neuronale Netzwerkmodell zur Flussberechnung und das neuronale Netzwerkmodell zur Flussinterpolation gemeinsam unbeaufsichtigt trainiert werden.
  18. System nach einem der Ansprüche 14 bis 17, bei dem das neuronale Netzwerkmodell zur Flussinterpolation eine Vorwärtssichtbarkeitskarte und eine Rückwärtssichtbarkeitskarte auf der Grundlage der vorwärts gerichteten optischen Zwischenflussdaten, der rückwärts gerichteten optischen Zwischenflussdaten, des ersten Eingangs-Einzelbilds, des zweiten Eingangs-Einzelbilds, des ersten Einzelbilds, das in Übereinstimmung mit den vorwärts gerichteten optischen Zwischenflussdaten verzerrt wurde, und des zweiten Einzelbilds, das in Übereinstimmung mit den rückwärts gerichteten optischen Zwischenflussdaten verzerrt wurde, berechnet.
  19. System nach einem der Ansprüche 14 bis 18, bei dem das neuronale Netzwerkmodell zur Flussinterpolation das Zwischen-Einzelbild zu der Zeit durch lineares Fusionieren des ersten Einzelbilds, das in Übereinstimmung mit den vorwärts gerichteten optischen Zwischenflussdaten verzerrt wurde, und des zweiten Einzelbilds, das in Übereinstimmung mit den rückwärts gerichteten optischen Zwischenflussdaten verzerrt wurde, erzeugt.
  20. Nichtflüchtiges, computerlesbares Speichermedium, das Anweisungen speichert, die dann, wenn sie von einer Verarbeitungseinheit ausgeführt werden, die Verarbeitungseinheit veranlassen, ein computerimplementiertes Verfahren nach einem der Ansprüche 1 bis 13 durchzuführen.
DE102018127265.0A 2017-11-06 2018-10-31 Multi-einzelbild-videointerpolation mit optischem fluss Pending DE102018127265A1 (de)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201762582135P 2017-11-06 2017-11-06
US62/582,135 2017-11-06
US16/169,851 2018-10-24
US16/169,851 US10776688B2 (en) 2017-11-06 2018-10-24 Multi-frame video interpolation using optical flow

Publications (1)

Publication Number Publication Date
DE102018127265A1 true DE102018127265A1 (de) 2019-05-09

Family

ID=66179012

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102018127265.0A Pending DE102018127265A1 (de) 2017-11-06 2018-10-31 Multi-einzelbild-videointerpolation mit optischem fluss

Country Status (1)

Country Link
DE (1) DE102018127265A1 (de)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113727141A (zh) * 2020-05-20 2021-11-30 富士通株式会社 视频帧的插值装置以及方法
CN114071223A (zh) * 2020-07-30 2022-02-18 武汉Tcl集团工业研究院有限公司 基于光流的视频插帧的生成方法、存储介质及终端设备

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113727141A (zh) * 2020-05-20 2021-11-30 富士通株式会社 视频帧的插值装置以及方法
CN113727141B (zh) * 2020-05-20 2023-05-12 富士通株式会社 视频帧的插值装置以及方法
CN114071223A (zh) * 2020-07-30 2022-02-18 武汉Tcl集团工业研究院有限公司 基于光流的视频插帧的生成方法、存储介质及终端设备

Similar Documents

Publication Publication Date Title
US20230410375A1 (en) Temporally stable data reconstruction with an external recurrent neural network
US10776688B2 (en) Multi-frame video interpolation using optical flow
US11475542B2 (en) Neural network system with temporal feedback for adaptive sampling and denoising of rendered sequences
DE102018108324A1 (de) System und Verfahren zur Schätzung eines optischen Flusses
DE102018126670A1 (de) Fortschreitende Modifizierung von generativen adversativen neuronalen Netzen
DE102019130889A1 (de) Schätzung der tiefe eines mit einer monokularen rgb-kamera aufgenommenen videodatenstroms
US11557022B2 (en) Neural network system with temporal feedback for denoising of rendered sequences
DE102019106123A1 (de) Dreidimensionale (3D) Posenschätzung von Seiten einer monokularen Kamera
DE102021119726A1 (de) Dreidimensionale objektrekonstruktion aus einem video
DE102018130924A1 (de) Systeme und Verfahren zur dynamischen Gesichtsanalyse mittels eines rekurrenten neuronalen Netzes
DE102019102009A1 (de) Reduzierung des rauschens während des renderings durch parallele path-space-filterung unter verwendung von hashing
DE102018009315A1 (de) Verfahren tiefgehenden Lernens zum Trennen von Reflexions- und Übertragungsbildern, die an einer halbreflektierenden Oberfläche in einem Computerbild einer Realweltszene sichtbar sind
DE102019130311A1 (de) Transponierte schwachbesetzte matrix multipliziert mit dichtbesetzter matrix für ein training neuronaler netzwerke
DE102021105249A1 (de) Mikrotraining zur iterativen verfeinerung eines neuronalen netzes mit wenigen anpassungen
DE102021121109A1 (de) Wiederherstellung dreidimensionaler modelle aus zweidimensionalen bildern
DE102018124211A1 (de) Lernbasierte Kameraposenschätzung von Bildern einer Umgebung
DE102020108526A1 (de) Adaptive pixelabtastreihenfolge für zeitlich dichtes rendern
DE102018114799A1 (de) Halbüberwachtes lernen zur orientierungspunktlokalisierung
DE112019001978T5 (de) Verbesserung des realismus von szenen mit wasseroberflächen beim rendern
DE102019121200A1 (de) Bewegungsadaptives rendern mittels shading mit variabler rate
DE102021121332A1 (de) Bewertung von qualitativer streaming-erfahrung unter verwendung von sitzungsleistungsmetadaten
DE102019103319A1 (de) Stochastisches runden von zahlenwerten
DE102022103358A1 (de) Training für maschinelles lernen im logarithmischen zahlensystem
DE102022121509A1 (de) Einzelbild-inversrendering
DE102020101525A1 (de) Blind-spot-faltungsarchitekturen und bayessche bildwiederherstellung

Legal Events

Date Code Title Description
R012 Request for examination validly filed