DE102017100609A1 - Online-Erfassung und Klassifizierung von dynamischen Gesten mit rekurrenten faltenden neuronalen Netzwerken - Google Patents

Online-Erfassung und Klassifizierung von dynamischen Gesten mit rekurrenten faltenden neuronalen Netzwerken Download PDF

Info

Publication number
DE102017100609A1
DE102017100609A1 DE102017100609.5A DE102017100609A DE102017100609A1 DE 102017100609 A1 DE102017100609 A1 DE 102017100609A1 DE 102017100609 A DE102017100609 A DE 102017100609A DE 102017100609 A1 DE102017100609 A1 DE 102017100609A1
Authority
DE
Germany
Prior art keywords
data stream
unsegmented
gesture
spatio
temporal features
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
DE102017100609.5A
Other languages
English (en)
Inventor
Pavlo Molchanov
Xiaodong Yang
Shalini De Mello
Kihwan Kim
Stephen Walter Tyree
Jan Kautz
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Nvidia Corp
Original Assignee
Nvidia Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Nvidia Corp filed Critical Nvidia Corp
Publication of DE102017100609A1 publication Critical patent/DE102017100609A1/de
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • G06N3/084Backpropagation, e.g. using gradient descent
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F18/00Pattern recognition
    • G06F18/20Analysing
    • G06F18/21Design or setup of recognition systems or techniques; Extraction of features in feature space; Blind source separation
    • G06F18/213Feature extraction, e.g. by transforming the feature space; Summarisation; Mappings, e.g. subspace methods
    • G06F18/2137Feature extraction, e.g. by transforming the feature space; Summarisation; Mappings, e.g. subspace methods based on criteria of topology preservation, e.g. multidimensional scaling or self-organising maps
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F18/00Pattern recognition
    • G06F18/20Analysing
    • G06F18/21Design or setup of recognition systems or techniques; Extraction of features in feature space; Blind source separation
    • G06F18/214Generating training patterns; Bootstrap methods, e.g. bagging or boosting
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F18/00Pattern recognition
    • G06F18/20Analysing
    • G06F18/24Classification techniques
    • G06F18/241Classification techniques relating to the classification model, e.g. parametric or non-parametric approaches
    • G06F18/2413Classification techniques relating to the classification model, e.g. parametric or non-parametric approaches based on distances to training or reference patterns
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F18/00Pattern recognition
    • G06F18/20Analysing
    • G06F18/24Classification techniques
    • G06F18/241Classification techniques relating to the classification model, e.g. parametric or non-parametric approaches
    • G06F18/2415Classification techniques relating to the classification model, e.g. parametric or non-parametric approaches based on parametric or probabilistic models, e.g. based on likelihood ratio or false acceptance rate versus a false rejection rate
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/044Recurrent networks, e.g. Hopfield networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/045Combinations of networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V10/00Arrangements for image or video recognition or understanding
    • G06V10/40Extraction of image or video features
    • G06V10/44Local feature extraction by analysis of parts of the pattern, e.g. by detecting edges, contours, loops, corners, strokes or intersections; Connectivity analysis, e.g. of connected components
    • G06V10/443Local feature extraction by analysis of parts of the pattern, e.g. by detecting edges, contours, loops, corners, strokes or intersections; Connectivity analysis, e.g. of connected components by matching or filtering
    • G06V10/449Biologically inspired filters, e.g. difference of Gaussians [DoG] or Gabor filters
    • G06V10/451Biologically inspired filters, e.g. difference of Gaussians [DoG] or Gabor filters with interaction between the filter responses, e.g. cortical complex cells
    • G06V10/454Integrating the filters into a hierarchical structure, e.g. convolutional neural networks [CNN]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V10/00Arrangements for image or video recognition or understanding
    • G06V10/40Extraction of image or video features
    • G06V10/56Extraction of image or video features relating to colour
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V10/00Arrangements for image or video recognition or understanding
    • G06V10/70Arrangements for image or video recognition or understanding using pattern recognition or machine learning
    • G06V10/764Arrangements for image or video recognition or understanding using pattern recognition or machine learning using classification, e.g. of video objects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V10/00Arrangements for image or video recognition or understanding
    • G06V10/70Arrangements for image or video recognition or understanding using pattern recognition or machine learning
    • G06V10/82Arrangements for image or video recognition or understanding using pattern recognition or machine learning using neural networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V20/00Scenes; Scene-specific elements
    • G06V20/40Scenes; Scene-specific elements in video content
    • G06V20/49Segmenting video sequences, i.e. computational techniques such as parsing or cutting the sequence, low-level clustering or determining units such as shots or scenes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V20/00Scenes; Scene-specific elements
    • G06V20/60Type of objects
    • G06V20/64Three-dimensional objects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V40/00Recognition of biometric, human-related or animal-related patterns in image or video data
    • G06V40/20Movements or behaviour, e.g. gesture recognition
    • G06V40/28Recognition of hand or arm movements, e.g. recognition of deaf sign language

Abstract

Ein Verfahren, ein computerlesbares Medium und ein System werden zum Erfassen und Klassifizieren von Handgesten bereitgestellt. Das Verfahren umfasst die Schritte eines Empfangens eines unsegmentierten Datenstrom, der einer Handgeste zugeordnet ist, eines Extrahierens räumlich-zeitlicher Merkmale aus dem unsegmentierten Strom durch ein dreidimensionales faltendes neuronales Netzwerk (3DCNN) und eines Erzeugens eines Klassenetiketts für die Handgeste basierend auf den räumlich-zeitlichen Merkmalen.

Description

  • PRIORITÄTSANSPRUCH
  • Diese Anmeldung beansprucht den Vorteil der vorläufigen U.S.-Anmeldung Nr. 62/278,924 (Attorney Docket No. NVIDP1124+/16-SC-0359-US02) mit dem Titel ”ONLINE DETECTION AND CLASSIFICATION OF DYNAMIC HAND GESTURES WITH CONVOLUTIONAL NEURAL NETWORKS,” eingereicht 14. Januar 2016, deren gesamter Inhalt hier durch Bezugnahme aufgenommen ist.
  • GEBIET DER ERFINDUNG
  • Die vorliegende Erfindung betrifft Gestenerkennung und insbesondere Gestenerkennung unter Verwendung rekurrenter faltender neuronaler Netzwerke.
  • HINTERGRUND
  • Handgesten und Gestikulationen sind eine übliche Form menschlicher Kommunikation. Es ist daher für Menschen natürlich, diese Form von Kommunikation zu verwenden, um auch mit Machines in Wechselwirkung zu treten. Beispielsweise können berührungslose Mensch-Computer-Schnittstellen in Fahrzeugen Komfort und Sicherheit verbessern. In letzter Zeit haben sich tief faltende neuronale Netzwerke (CNNs = deep convolutional neural networks), die Videosequenzen von Gesten als Eingaben empfangen, als wirksamer Algorithmus zur Gestenerkennung erwiesen, und haben die Genauigkeit von dynamischen Handgesten und Aktionserkennungsaufgaben erheblich vorangebracht. CNNs sind ebenfalls zum optimalen Kombinieren der Eingangsdaten von mehreren Sensoren (multimodale Daten) zur Gestenerkennung in anspruchsvollen Beleuchtungsbedingungen nützlich. Systeme der realen Welt zur dynamischen Handgestenerkennung bringen zahlreiche offene Herausforderungen mit sich, über die man sich noch kümmern muss.
  • Zuerst empfangen die Systeme kontinuierliche Ströme von unverarbeiteten visuellen Daten, wobei dem System bekannte Gesten gleichzeitig erfasst und klassifiziert werden müssen. Herkömmliche Systems betrachten typischerweise die Segmentierung und Klassifizierung von Gesten getrennt. Zwei Klassifizierer, ein Erfassungsklassifizierer, um zwischen ”Geste und ”keine Geste” zu unterscheiden, und ein Erkennungsklassifizierer, um die spezifische Gestenart zu kennzeichnen, werden häufig separat trainiert und in Folge auf die eingegebenen Datenströme angewendet. Es gibt zwei Gründe dafür: (1) die Veränderbarkeit in der Dauer von Gesten zu kompensieren und (2) Geräusche aufgrund von unbekannten Handbewegungen in der ”keine Geste” Klasse zu verringern, um dadurch die Aufgabe des Erkennungsklassifizierers zu vereinfachen. Eine Verarbeitung der visuellen Daten mit einem Erfassungsklassifizierer begrenzt jedoch die Genauigkeit, die von dem System erreichbar ist, auf die Genauigkeit des stromaufwärtigen Gesten-Erfassungsklassifizierers.
  • Zweitens enthalten dynamische Handgesten im Allgemeinen drei zeitlich überlappende Phasen: Vorbereitung, Kern und Rücknahme, von denen der Kern die am meisten diskriminatorische Phase ist. Die anderen beiden Phasen können für unterschiedliche Gesten ziemlich ähnlich sein und folglich weniger nützlich oder sogar schädlich für eine genaue Gestenklassifizierung sein. Daher stützen sich Klassifizierer häufig primär auf die Kernphase für eine Gestenklassifizierung.
  • Schließlich nehmen Menschen die Reaktionszeit von Benutzerschnittstellen intensive wahr, wobei Verzögerungen größer als 100 ms als lästig empfunden werden. Dies stellt die zusätzliche Herausforderung zum Erfassen und Klassifizieren von Gesten direkt bei (oder bevorzugt bevor) Abschluss der Geste dar, um Benutzern eine direkte Rückkopplung bereitzustellen. Es gibt einen Bedarf, diese Probleme und/oder andere Probleme anzugehen, die dem Stand der Technik zugeordnet sind.
  • ZUSAMMENFASSUNG
  • Ein Verfahren, ein computerlesbares Medium und ein System werden zum Erfassen und Klassifizieren von Handgesten offenbart. Das Verfahren umfasst die Schritte eines Empfangens eines unsegmentierten Datenstroms, der einer Handgeste zugeordnet ist, eines Extrahierens räumlich-zeitlicher Merkmale aus dem unsegmentierten Strom durch ein dreidimensionales faltendes neuronales Netzwerk (3D-CNN) und eines Erzeugens eines Klassenetiketts für die Handgeste basierend auf den räumlich-zeitlichen Merkmalen. In einer Ausführungsform wird ein rekurrentes 3D-CNN (R3DCNN) verwendet, um die räumlich-zeitlichen Merkmale aus dem unsegmentierten Strom zu extrahieren und das Klassenetikett für die Handgeste zu erzeugen.
  • KURZE BESCHREIBUNG DER ZEICHNUNGEN
  • 1A veranschaulicht ein Ablaufdiagramm eines Verfahrens zum Erfassen und Klassifizieren dynamischer Handgesten gemäß einer Ausführungsform;
  • 1B veranschaulicht eine negative Verzögerung zum Erfassen und Klassifizieren dynamischer Handgesten gemäß einer Ausführungsform;
  • 1C veranschaulicht ein Blockdiagramm eines Systems zum Erfassen und Klassifizieren dynamischer Handgesten gemäß einer Ausführungsform;
  • 2A veranschaulicht ein Blockdiagramm eines 3DCNN zum Erfassen und Klassifizieren dynamischer Handgesten gemäß einer Ausführungsform;
  • 2B veranschaulicht ein Blockdiagramm eines R3DCNN zum Erfassen und Klassifizieren dynamischer Handgesten gemäß einer Ausführungsform;
  • 2C veranschaulicht ein Blockdiagramm mehrerer R3DCNNs zum Erfassen und Klassifizieren dynamischer Handgesten unter Verwendung von mehreren Modalitäten gemäß einer Ausführungsform;
  • 2D veranschaulicht ein konzeptionelles Blockdiagramm eines R3DCNN zum Erfassen und Klassifizieren dynamischer Handgesten gemäß einer Ausführungsform;
  • 2E veranschaulicht ein weiteres Ablaufdiagramm eines Verfahrens zum Erfassen und Klassifizieren dynamischer Handgesten gemäß einer Ausführungsform;
  • 2F veranschaulicht ein Ablaufdiagramm eines Verfahrens zum Trainieren des 3DCNN zur Gestenerfassung und zum Etikettieren gemäß einer Ausführungsform;
  • 3 veranschaulicht eine Parallelverarbeitungseinheit gemäß einer Ausführungsform;
  • 4A veranschaulicht einen allgemeinen Verarbeitungscluster der Parallelverarbeitungseinheit von 3 gemäß einer Ausführungsform;
  • 4B veranschaulicht eine Partitionseinheit der Parallelverarbeitungseinheit von 3 gemäß einer Ausführungsform;
  • 5 veranschaulicht den Streaming-Multiprozessor von 4A gemäß einer Ausführungsform;
  • 6 veranschaulicht ein beispielhaftes System, in dem die verschiedene Architektur und/oder Funktionalität der verschiedenen vorherigen Ausführungsformen implementiert werden können.
  • AUSFÜHRLICHE BESCHREIBUNG
  • Ein Gestenerfassungs- und Klassifizierungs-Algorithmus vereinigt die Erfassung und Klassifizierung von dynamischen Handgesten von mehreren komplementärer Modalitäten. Der Gestenerfassungs- und Klassifizierungs-Algorithmus kann ebenfalls verwendet werden, um statische Handgesten zu erfassen und zu klassifizieren. Die Modalitäten können Datenströme, wie beispielsweise kontinuierliche Tiefe, Farbe, optischen Fluss, Stereo-IR und IR-Disparitätsbilder umfassen. Ein rekurrentes dreidimensionales faltendes neuronales Netzwerk (R3DCNN) führt die vereinigte Erfassung und Klassifizierung durch, ohne sich auf vorläufige Segmentierung zu stützen. Mindestens ein unsegmentierter Datenstrom einer Modalität wird zur Verarbeitung von dem R3DCNN empfangen und das R3DCNN gibt ein Klassenetikett für die Geste aus.
  • Die vereinigte Erfassungs- und Klassifizierungstechnik verbessert die frühe Erfassung von Gesten, was zu Null oder negativer Verzögerung führt, die für die Ausgestaltung responsiver Benutzerschnittstellen entscheidend ist. Beispielsweise wird die Geste typischerweise klassifiziert, bevor das Ende der Geste eingetreten ist, was eine interaktive Benutzererfahrung bereitstellt.
  • Während des Trainings kann eine CTC(konnektionistische zeitliche Klassifizierung)-Kostenfunktion benutzt werden, um das Netzwerk zu trainieren, um Klassenetikette von in Ausführung befindlicher Gesten in unsegmentierten Eingangsströme vorherzusagen. Die CTC-Funktion ermöglicht, dass die Gestenklassifizierung auf der Kernphase der Geste beruhen kann, ohne eine explizite Vorsegmentierung der Gestenströme in den drei zeitlichen Phasen (z. B., Vorbereitung, Kern und Rücknahme) zu erfordern. Das Weglassen von Merkmalen kann ebenfalls während des Trainings benutzt werden, um eine Überanpassung zu verringern und Gestenklassifizierungsgenauigkeit zu verbessern.
  • 1 veranschaulicht ein Ablaufdiagramm eines Verfahrens 100 zum Erfassen und Klassifizieren von dynamischen Handgesten gemäß einer Ausführungsform. Obwohl das Verfahren 100 im Kontext eines Verarbeitungselements innerhalb eines R3DCNN beschrieben wird, kann das Verfahren 100 ebenfalls von einem Programm, kundenspezifischen Schaltungsanordnungen oder von einer Kombination von kundenspezifischen Schaltungsanordnungen und einem Programm durchgeführt werden. Beispielsweise kann das Verfahren 100 kann von einer GPU, CPU oder jedem Prozessor ausgeführt werden, der fähig ist, die notwendigen arithmetischen Operationen durchzuführen. Des Weiteren werden Fachleute verstehen, dass jedes System, welches das Verfahren 100 durchführt, innerhalb des Umfangs und des Wesens von Ausführungsformen der vorliegende Erfindung ist.
  • Bei Schritt 110 wird ein unsegmentierter Datenstrom empfangen, der einer Handgeste zugeordnet ist. Im Gegensatz zu einem unsegmentierten Datenstrom wird in einem segmentierten Datenstrom mindestens ein Punkt in dem Strom, wo eine Geste erfasst ist (z. B., Vorbereitung, Kern und Rücknahme), in dem segmentierten Datenstrom angegeben. Der Datenstrom wird auf beliebige Art und Weise verarbeitet, um die Angabe bereitzustellen. Beispielsweise kann ein Erfassungsklassifizierer den Datenstrom verarbeiten, um einen segmentierten Datenstrom zu erzeugen.
  • Zusätzlich zum Empfangen eines Datenstroms, der nicht segmentiert ist, stützt sich die Technik zum Erfassen und Klassifizieren dynamischer Handgesten ebenfalls nicht auf Umgebungsdaten, um Bewegungen vorherzusagen. Die Handgesten, die erfasst und etikettiert werden, können statische oder dynamische Gesten sein. Beispielhafte Handgesten umfassen Bewegen entweder der Hand oder von zwei Fingern nach oben, unten, links oder rechts; Klicken mit dem Zeigefinger; Winken; Öffnen oder Schütteln der Hand; Zeigen des Zeigefingers oder zwei oder drei Finger; Schieben der Hand nach oben, nach unten, nach außen oder nach innen; Drehen von zwei Fingern in Uhrzeigerrichtung oder entgegen der Uhrzeigerrichtung; Schieben von zwei Fingern nach vorne; Schließen der Hand zweimal; und Zeigen von ”Daumen nach oben” oder ”OK”. In einer Ausführungsform umfasst die Handgeste ebenfalls mindestens einen Teil des Körpers der Person zusätzlich zu seiner Hand.
  • Bei Schritt 120 werden räumlich-zeitliche Merkmale aus dem unsegmentierten Datenstrom durch ein dreidimensionales faltendes neuronales Netzwerk (3DCNN) extrahiert. In einer Ausführungsform werden ein oder mehrere zusätzliche Ströme von Daten, die der der Handgeste zugeordnet sind, ebenfalls bei Schritt 110 empfangen. Jeder unsegmentierte Datenstrom umfasst Daten einer Modalität, wie beispielsweise kontinuierliche Tiefe, Farbe, optischer Fluss, Stereo-IR und IR-Disparitätsbilder. In einer Ausführungsform wird der SoftKinetic DS325 Sensor (z. B., Tiefenkamera) verwendet, um Farben- und Tiefenvideos aus der Vorderansicht (einem Benutzer gegenüberliegend, der die Geste bereitstellt) zu erfassen und ein oben angebrachter DUO-3D-Sensor wird verwendet, um ein Paar von IR-Strömen (z. B., Stereo-IR) aufzunehmen, die einen Benutzer von oben betrachten. Ein dichter Datenstrom eines optischen Flusses kann aus dem Farbstrom und ein IR-Disparitäts-Datenstrom kann aus dem Paar von IR-Stereoströmen berechnet werden.
  • Bei Schritt 130 wird ein Klassenetikett für die Handgeste basierend auf den räumlich-zeitlichen Merkmalen erzeugt. In einer Ausführungsform ist ein Klassenetikett ein klassenbedingter Wahrscheinlichkeitsvektor, der einer Handgeste zugeordnet ist. Wenn zwei oder mehrere Datenströme bei Schritt 110 empfangen werden, kann das Klassenetikett durch Kombinieren von Wahrscheinlichkeitsvektoren erzeugt werden, die jedem einen der Datenströme entspricht.
  • Mehr veranschaulichende Information wird nun hinsichtlich verschiedener optionalen Architekturen und Merkmalen dargelegt, mit denen das vorhergehenden Rahmenwerk gemäß den Wünschen des Benutzers implementiert werden kann oder nicht. Es sei nachhaltig bemerkt, dass die folgende Information für veranschaulichende Zwecke dargelegt wird und nicht auf irgendeine Art und Weise als beschränkend aufgefasst werden sollte. Beliebige der folgenden Merkmale können optional mit oder ohne den Ausschluss von anderen beschriebenen Merkmalen aufgenommen werden.
  • 1B veranschaulicht eine negative Verzögerung zum Erfassen und Klassifizieren einer dynamischen Handgeste gemäß einer Ausführungsform. Eine Geste startet bei einer ersten Zeit, die durch den Start der Geste 101 angegeben wird. Die Geste endet bei einer zweiten Zeit, die durch das Ende der Geste 103 angegeben wird. Im Stand der Technik beginnt ein Erfassungsklassifizierer-Algorithmus die Verarbeitung der Geste, und nachdem der Erfassungsklassifizierer-Algorithmus die Erfassungsverarbeitung abschließt (d. h., die Segmentierung abschließt), wird ein Erkennungsklassifizierer-Algorithmus verwendet, um die segmentierte Geste zu verarbeiten. Der Erkennungsklassifizierer startet die Verarbeitung nicht bis zum Ende der Geste 103 oder später. Der Erkennungsklassifizierer schließt die Verarbeitung nach dem Ende der Geste 103 bei einer Zeit ab, die durch eine Klassifizierung des Standes der Technik 104 angegeben wird.
  • Im Gegensatz dazu wird, wenn das in 1A gezeigte Gestenerfassungs- und Klassifizierungsverfahren 100 verwendet wird, die Geste unter Verwendung des Erfassungs- und Klassifizierer-Algorithmus verarbeitet. Vor dem Ende der Geste 103 wird die Geste mit einem Gestenetikett 102 etikettiert. Typischerweise wird eine Geste etikettiert, die von dem Gestenerfassungs- und Klassifizierungsverfahren 100 empfangen wird, wenn die Geste zu 40% abgeschlossen ist. Mit anderen Worten etikettiert das Gestenerfassungs- und Klassifizierungsverfahren 100 typischerweise eine Geste, wenn lediglich 40% der Zeit zwischen dem Start der Geste 101 und dem Ende der Geste 103 abgelaufen ist. Daher weist das Gestenerfassungs- und Klassifizierungsverfahren 100 eine negative Verzögerung auf, weil die Geste etikettiert wird bevor das Ende der Geste erfasst ist.
  • Eine CTC(konnektionistische zeitliche Klassifizierung)-Kostenfunktion kann benutzt werden, um ein neuronales Netzwerk zu trainieren, um das Gestenerfassungs- und Klassifizierungsverfahren 100 zu implementieren und Klassenetikette aus im Gang befindlichen Gesten in unsegmentierten oder schwach segmentierten eingegebenen Strömen vorherzusagen. Die CTC ermöglicht, dass die Gestenklassifizierung auf der Kernphase der Geste beruhen kann, ohne eine explizite Vorsegmentierung der Gesten in ihre drei zeitlichen Phasen zu erfordern. Die Klassifizierung während der Kernphase führt zu einer Null oder negativen Verzögerung, die für die Ausgestaltung von responsiven Benutzerschnittstellen sehr nützlich ist.
  • 1C veranschaulicht ein Blockdiagramm eines Systems 125 zum Erfassen und Klassifizieren dynamischer Handgesten gemäß einer Ausführungsform. Das System 125 umfasst einen Prozessor 130 und mehrere Sensoren, die dem Prozessor 130 jeweils einen oder mehrere Datenströme bereitstellen können. Jeder der Sensoren kann einen Datenstrom einer unterschiedlichen Modalität bereitstellen, der innerhalb einer Gestenumgebung erfasst oder berechnet wird. Die Gestenumgebung umfasst einen Menschen, der statische oder dynamische Gesten unter Verwendung seiner oder ihrer Hände, Arme, Torso und/oder Kopf erzeugt. Der Prozessor 130 kann ein Graphikprozessor oder jeder Prozessor sein, der imstande ist, die notwendigen arithmetischen Operationen des Verfahrens 100 durchzuführen.
  • Ein Farbsensor 117 kann einen oder mehrere Rahmen von Farbdaten (RGB, YUV, usw.) bereitstellen, die von einer Vorderansicht der Geste erfasst wurden. In einer Ausführungsform ist der Farbsensor 117 eine Kamera. Ein Sensor für optischen Fluss 115 kann einen oder mehrere Rahmen von Daten optischen Flusses bereitstellen, die als Flussvektoren basierend auf zwei oder mehreren Rahmen von Farbdaten berechnet werden. Ein Tiefensensor 116 kann einen oder mehrere Rahmen von Tiefendaten bereitstellen, die Abstände der Vorderansicht zu der Geste angeben. Ein Stereo-IR-Sensor 118 kann einen oder mehrere Rahmen von Stereo-IR-Daten bereitstellen, wobei die Stereo-IR Daten als Paare von Bildern für jeden Rahmen codiert werden, die ein Paar von Datenströmen erzeugen. Die Stereo-IR-Daten werden von einer Draufsicht der Gestenumgebung erfasst. Ein IR-Disparitätssensor 119 kann einen oder mehrere Rahmen von IR-Disparitätsdaten bereitstellen, die aus dem Paar von IR-Stereo-Datenströmen berechnet werden.
  • Der Rahmen von Daten kann als ein mehrdimensionaler Tensor in Dimensionen von x und y (z. B., Rahmengröße in Pixel), Kanälen (z. B., RGB) und zeitlicher Länge (z. B., Rahmenanzahl) codiert werden. Der Prozessor 130 kann konfiguriert sein, um eine 3D-Faltung in den räumlichen und zeitlichen Domänen, Aktivierungsfunktionen und maximale Bündelungsoperationen wiederholt durchzuführen, bevor die Daten unter Verwendung vollständig verbundener Schichten eines neuronalen Netzwerks verarbeitet werden, um lokale räumlich-zeitliche Merkmale zu erzeugen. Ein mehrdimensionaler Kernel wird als ein Filter während der 3D-Faltung angewendet.
  • Die lokalen räumlich-zeitlichen Merkmale stellen Mikroebenen- und/oder Kurzzeit-Einzelheiten der Geste dar. Die lokalen räumlich-zeitlichen Merkmale sind anders gesagt die Merkmale innerhalb eines Clips, der einen oder mehrere Rahmen oder einen kurzen Puffer von Rahmen umfasst. Der Prozessor 130 verarbeitet dann die lokalen räumlich-zeitlichen Merkmale unter Verwendung einer rekurrenten Schicht, um globale räumlich-zeitliche Merkmale zu erzeugen. Die globalen räumlich-zeitlichen Merkmale stellen Makroebenen- und/oder Langzeit-Einzelheiten der Geste dar. Die globalen räumlich-zeitlichen Merkmale sind anders gesagt Merkmale, die über mehrere Clips extrahiert werden. Schließlich verarbeitet der Prozessor 130 die globalen räumlich-zeitlichen Merkmale unter Verwendung einer Softmax-Schicht, um klassenbedingte Gestenwahrscheinlichkeiten (z. B., Gestenetikette) vorherzusagen. Wenn Datenströme für mehr als eine Modalität in den Prozessor 130 eingegeben werden, kann der Datenstrom für jede Modalität separat verarbeitet werden und die resultierenden Modalitäts-spezifischen Wahrscheinlichkeiten können unter Verwendung von Mittelwertbildung kombiniert werden, um das Gestenetikett 102 zu erzeugen.
  • In einer Ausführungsform empfängt der Prozessor 130 Eingangsdatenströme sequentiell als m-Rahmen Clips und gibt klassenbedingte Wahrscheinlichkeiten nach der Verarbeitung jedes Clips aus (m ist eine positive ganze Zahl). Im Allgemeinen umspannt der Kern der Geste mehrere Clips, um potentiell eine Gestenklassifizierung zu ermöglichen, bevor die Verarbeitung aller Clips zu einer negativen Verzögerung führt. In einer Ausführungsform ist m = 8.
  • Rekurrente 3D-Faltende Neuronale Netzwerk (R3DCNN)-Architektur
  • 2A veranschaulicht ein Blockdiagramm eines 3D-CNN 200 zum Erfassen und Klassifizieren dynamischer Handgesten gemäß einer Ausführungsform. Ein Gestendatenstrom (z. B., Video) wird in der Form von kurzen Clips Ct von mindestens einem Rahmen dem 3D-CNN 200 zum Extrahieren lokaler räumlich-zeitlicher Merkmale ft präsentiert.
  • Ein Datenstromclip (z. B., Videoclip) ist als ein Volumen
    Figure DE102017100609A1_0002
    von m ≥ 1 sequentiellen Rahmen mit c Kanälen der Größe k×l Pixel definiert, der zurzeit t endet. Jeder Datenstromclip wird in eine Merkmalsdarstellung ft durch das 3D-CNN 200 transformiert, das eine Funktion
    Figure DE102017100609A1_0003
    Figure DE102017100609A1_0004
    durch Anwenden von räumlich zeitlichen Filtern auf den Datenstromclip implementiert.
  • Das 3D-CNN 200 umfasst eine 3D-Faltungsschicht 205, eine Aktivierungsschicht 210, eine maximale Bündelungsschicht 215 und eine oder mehrere vollständig verbundene neuronale Netzwerkschichten 218. In einer Ausführungsform umfasst das 3D-CNN 200 mehrere 3D-Faltungsschichten 205, wobei jede 3D-Faltungsschicht 205 von einer Aktivierungsschicht 210 gefolgt wird, und eine maximale Bündelungsschicht 215, die vor den vollständig verbundenen neuronalen Netzwerkschichten 218 in Reihe verbunden ist. Die 3D-Faltungsschicht 205 führt eine 3D-Faltung in den räumlichen und zeitlichen Domänen unter Verwendung eines mehrdimensionalen Kernels durch, der definiert wird, wenn das R3DCNN 230 trainiert wird. Die Aktivierungsschicht 210 legt eine nichtlineare Abbildung von Eingangsdaten in einen anderen Raum an und kann eine ReLU (Rectified Linear Unit) umfassen, die negative Eingänge auf Null und positive Eingänge auf ihren ursprünglichen Wert abbildet. Die maximale Bündelungsschicht 205 legt eine Downsamplingoperator an, um räumliche und zeitliche Dimensionen eines internen mehrdimensionalen Tensors zu verringern. In einer Ausführungsform implementiert die maximale Bündelungsschicht 205 einen Maximumoperator, der für jedes nicht überlappende Gitter von 2×2×2 Elementen lediglich einen einzigen Wert des Untertensors gleich dem maximalen Wert erzeugt; das Gitter kann 2×2×1, 1×2×2, 2×1×2, 1×1×2, 2×1×1, 1×2×1 sein, wobei die ersten beiden Dimensionen die Größe in der räumlichen Domäne beschreiben und die dritte Dimension in der zeitlichen Domäne beschreibt.
  • 2B veranschaulicht ein Blockdiagramm eines R3DCNN 230 zum Erfassen und Klassifizieren dynamischer Handgesten gemäß einer Ausführungsform. Das 3D-CNN 200 ist mit einem RNN 220 (d. h., rekurrenten Schicht) und einem linearen Klassifizierer 225 in Reihe verbunden.
  • Das RNN 220 führt eine globale zeitliche Modellierung durch, wobei Übergänge über zwei oder mehreren Clips des Datenstroms aggregiert werden. Das rekurrente Netzwerk unterhält einen versteckten Zustandsvektor ht-1, der unter Verwendung vorheriger Datenstromclips und vorheriger lokaler räumlich-zeitlicher Merkmale berechnet wird. Ein aktualisierter versteckter Zustandsvektor für den aktuellen Datenstromclip ht wird unter Verwendung der lokalen räumlich-zeitlichen Merkmale ft berechnet, die von dem 3D-CNN 200 und dem versteckten Zustandsvektor ht-1 empfangen werden. Der aktualisierte versteckte Zustandsvektor für den aktuellen Datenstromclip, ht, wird in den linearen Klassifizierer 225 eingegeben, um klassenbedingte Gestenwahrscheinlichkeiten st der verschiedenen Gesten in dem Datenstrom abzuschätzen. In einer Ausführungsform implementiert der lineare Klassifizierer 225 eine Softmax-Funktion. In einer Ausführungsform wird der lineare Klassifizierer 225 durch einen SVM(Support Vector Machine)-Klassifizierer ersetzt, der klassenbedingte Wahrscheinlichkeiten durch Arbeiten an lokalen räumlich-zeitlichen Merkmalen ft oder versteckten Zustandsvektoren ht berechnet, die von dem R3DCNN 230 extrahiert werden.
  • Eine Klassifizierung von Gesten kann durch Aufteilen eines gesamten Datenstroms
    Figure DE102017100609A1_0005
    in T Clips der Länge m und Berechnen der Menge von klassenbedingten Wahrscheinlichkeiten S = {s0, s1, ..., sT-1} für jeden einzelnen Datenstromclip durchgeführt werden. Für Offline(d. h., Nicht-Echtzeit)-Gestenklassifizierung, können die Wahrscheinlichkeiten aller der Datenstromclips innerhalb des gesamten Datenstroms kombiniert werden, die zu einer Geste gehören. Beispielsweise können die Wahrscheinlichkeiten gemittelt werden, um savg = 1/TΣs∈Ss zu erzeugen, und die vorhergesagte Klasse ist ŷ = argmaxi ([savg]i), über alle Gestenklassen i. In einer Ausführungsform werden Pro-Clip-Wahrscheinlichkeiten st verwendet, um Pro-Clip-Gestenetiketts zu berechnen, und die per-clip Gestenetiketts können kombiniert werden, um ein Gestenetikett für mehrere Clips eines Datenstroms zu erzeugen.
  • 2C veranschaulicht ein Blockdiagramm von mehrere R3DCNNs 230 zum Erfassen und Klassifizieren dynamischen Handgesten unter Verwendung von mehreren Modalitäten gemäß einer Ausführungsform. In einer Ausführungsform werden R3DCNNs 230 für jede Modalität getrennt trainiert und beim Fusionieren von Modalitäten können die klassenbedingten Wahrscheinlichkeitsvektoren geometrisch oder algebraisch gemittelt werden. Jedes R3DCNN 230 empfängt einen Datenstrom, der einer separaten Modalität zugeordnet ist, und ein Kombinierer 235 kombiniert die klassenbedingten Wahrscheinlichkeitsvektoren, um ein Gestenetikett zu erzeugen. In einer Ausführungsform werden klassenbedingte Wahrscheinlichkeitsvektoren über Modalitäten für jeden Datenstromclip gemittelt, um das Gestenetikett zu erzeugen. In einer Ausführungsform können lokale räumlich-zeitliche Merkmale ft oder versteckte Zustandsvektoren ht über Datenstromclips gemittelt und durch die jeweiligen l2-Normen normiert werden, um eine einzige Darstellung für den gesamten Datenstrom zu bilden.
  • TABELLE 1 enthält die Genauigkeit für verschiedene Kombinationen von Sensormodalitäten. Es sei bemerkt, dass ein Fusionieren beliebiger Paare von Sensoren einzelne Ergebnisse verbessert. Außerdem verbessert das Kombinieren unterschiedlicher Modalitäten des gleichen Sensors (z. B., Farbe und optischer Fluss) ebenfalls die Genauigkeit. Die höchste Gestenerkennungsgenauigkeit (83.8%) wird für die Kombination aller Modalitäten beobachtet. TABELLE 1 Vergleich von Modalitäten und Kombinationen
    Figure DE102017100609A1_0006
  • 2D veranschaulicht ein konzeptionelles Blockdiagramm eines R3DCNN 250 zum Erfassen und Klassifizieren dynamischer Handgesten gemäß einer Ausführungsform. Zusätzlich zu dem 3D-CNN 200, dem RNN 220 und dem linearen Klassifizierer 225 umfasst das R3DCNN 250 eine konnektionistische zeitliche Klassifizierungseinheit (CTC) 240. Während des Trainings wird die CTC 240 verwendet, um eine Kostenfunktion zu implementieren, und während der Inferenz wird die CTC 240 nicht verwendet. Wie von Fachleuten verstanden, ist die CTC eine Kostenfunktion, die für das Training eines CNN auf einer Folge ausgestaltet ist, die unsegmentiert oder schwach segmentiert ist. Die CTC 240 implementiert einen CTC-Vorwärtsalgorithmus, der den Kern der Geste kennzeichnet und korrekt etikettiert, während eine keine Gestenklasse den verbleibenden Clips zugewiesen wird, wobei die Ausrichtung von Klassenetiketten auf bestimmte Clips in dem Datenstrom adressiert wird. Wenn das R3DCNN 250 zum Inferenzieren verwendet wird, kann die CTC 240 mit dem Kombinierer 235 ersetzt werden.
  • Das R3DCNN 250 empfängt einen Datenstrom, der in eine Folge von Clips (Ct, Ct+1, ... Ct+N) partioniert ist, und jedes 3D-CNN 200 verarbeitet einen Clip in der Folge von Clips, um die lokalen räumlich-zeitlichen Merkmale (ft, ft+1, ... ft+N) zu erzeugen. Jedes RNN 220 berechnet den versteckten Zustandsvektor
    Figure DE102017100609A1_0007
    als eine Funktion des versteckten Zustands des vorherigen Clips ht-1 und der Merkmalsdarstellung des aktuellen Clips ft:
    Figure DE102017100609A1_0008
    mit Gewichtsmatrizen
    Figure DE102017100609A1_0009
    Während des Trainings kann eine abgeschnittene rektifizierte lineare Einheit
    Figure DE102017100609A1_0010
    von dem RNN 220 verwendet werden, um Gradientenexplosion zu begrenzen. Schließlich transformiert der lineare Klassifizierer 225 den versteckten Zustandsvektor ht in klassenbedingte Wahrscheinlichkeiten st von w Klassen: st = S(Ws ht + b) mit Gewichten
    Figure DE102017100609A1_0011
    Bias
    Figure DE102017100609A1_0012
    und einer Softmax-Funktion
    Figure DE102017100609A1_0013
    Das Etikett für die Gestenklasse w, das die höchste Wahrscheinlichkeit aufweist, wird als das Gestenetikett ausgegeben.
  • 2E veranschaulicht ein anderes Ablaufdiagramm eines Verfahrens 255 zum Erfassen und Klassifizieren von dynamischen Handgesten während eines Inferenzierens gemäß einer Ausführungsform. Bei Schritt 256 wird ein Datenstromclip für eine Modalität von dem R3DCNN 230 oder 250 empfangen. Bei Schritt 260 extrahiert das 3DCNN 200 lokale räumlich-zeitliche Merkmale aus dem Datenstromclip. Bei Schritt 262 extrahiert das RNN 220 globale räumlich-zeitliche Merkmale aus den lokalen räumlich-zeitlichen Merkmalen und dem versteckten Zustand des vorherigen Clips (d. h., den globalen räumlich-zeitlichen Merkmalen aus dem vorherigen Clip). Bei Schritt 265 verarbeitet eine Softmax-Schicht die globalen räumlich-zeitlichen Merkmale, um einen klassenbedingten Wahrscheinlichkeitsvektor zu erzeugen. Ein klassenbedingter Wahrscheinlichkeitswert wird für jede mögliche Gestenklasse und die keine Gestenklasse erzeugt, um einen klassenbedingte Wahrscheinlichkeitsvektor zu erzeugen. Die klassenbedingten Wahrscheinlichkeitswerte, die für jede Modalität erzeugt werden, summieren sich auf Eins (z. B., 100%).
  • Bei Schritt 268 wird ein Klassenetikett für die Handgeste basierend auf den Gestenwahrscheinlichkeitswerten erzeugt. In einer Ausführungsform kombiniert der Kombinierer 235 die klassenbedingten Wahrscheinlichkeitsvektoren für zwei oder mehrere Modalitäten, um das Gestenetikett zu erzeugen. In einer Ausführungsform wird das Klassenetikett für einen klassenbedingten Wahrscheinlichkeitsvektor erzeugt, der einer Modalität und einem Datenstromclip entspricht. In einer Ausführungsform wird das Klassenetikett für klassenbedingte Wahrscheinlichkeitsvektoren erzeugt, die einer Modalität und mehreren Datenstromclips entsprechen. In einer Ausführungsform wird das Klassenetikett für klassenbedingte Wahrscheinlichkeitsvektoren erzeugt, die mehrere Modalitäten und einem Datenstromclip entsprechen. In einer Ausführungsform wird das Klassenetikett für klassenbedingte Wahrscheinlichkeitsvektoren erzeugt, die mehrere Modalitäten und mehreren Datenstromclips entsprechen.
  • Training
  • 2F veranschaulicht ein Ablaufdiagramm eines Verfahrens zum Trainieren des R3DCNN 230 oder 250 zur Erfassung und zum Etikettieren von Gesten gemäß einer Ausführungsform. Bei Schritt 272 wird ein Trainingsdatenstrom, der einer Handgeste zugeordnet ist, von dem R3DCNN 230 oder 250 empfangen. In einer Ausführungsform ist
    Figure DE102017100609A1_0014
    ein Mini-Stapel von Trainingsbeispielen in der Form von schwach segmentierten Gestenvideos
    Figure DE102017100609A1_0015
    Es sei bemerkt, dass schwach segmentierte Videos n die Vorbereitungs-, Kern- und Rücknahmephasen und Rahmen aus der keine Gestenklasse enthält. Jedes Video besteht aus T Clips, die
    Figure DE102017100609A1_0016
    eine Menge von N = T·P Clips machen. Klassenetikette yi werden aus dem Alphabet
    Figure DE102017100609A1_0017
    gezogen, um einen Vektor von Klassenetiketten y mit Größe |y| = P zu bilden.
  • In einer Ausführungsform wird das 3D-CNN 200 mit dem C3D-Netzwerk initialisiert, das auf dem großen Sport-1M Menschenerkennungs-Datensatz trainiert wurde. Das Netzwerk weist 8 faltende Schichten von 3×3×3 Filtern und 2 vollständig verbundene neuronale Netzwerkschichten auf, die auf 16-Rahmenclips trainiert werden. In einer Ausführungsform wird eine Softmax-Vorhersageschicht an die letzte vollständig verbundene neuronale Netzwerkschicht angefügt und das 3D-CNN 200 wird durch Rückpropagierung mit negativer Log-Likelihood fein abgestimmt, um Gestenklassen aus einzelnen Clips Ci vorherzusagen.
  • Bei Schritt 275 führt die 3D-Faltungsschicht 205 eine 3D-Faltung an dem Trainings-Datenstrom durch, um Merkmalsabbildungen zu erzeugen. Jede Merkmalsabbildung entspricht einem unterschiedlichen semantischen Merkmal, das aus dem Eingabestrom extrahiert wird. Merkmalsabbildungen werden für unterschiedliche Modalitäten und unterschiedliche Eingabeclips neu berechnet. Bei Schritt 278 wird ein Teil der Merkmalsabbildungen entfernt und verbleibende Merkmalsabbildungen werden proportional skaliert. In einer Ausführungsform werden die Merkmalsabbildungen zufällig zum Weglassen ausgewählt, und jede ausgewählte Merkmalsabbildung wird auf Null gesetzt, um die Merkmalsabbildung zu entfernen.
  • Wenn das Weglassen von Merkmalsabbildungen beim Training des 3D-CNN 200 von Grund auf benutzt wird, wird wenig oder keine Verbesserung bei der Handgestenerkennung bereitgestellt. Wenn das 3D-CNN 200 jedoch auf einer großen Datenmenge mit mehreren Klassen vortrainiert und dann für eine kleinere Domäne mit weniger Beispielen und Klassen für das Training fein abgestimmt wird, ist es nicht wahrscheinlich, dass alle der ursprünglichen Merkmalsabbildungen starke Aktivierungen für die neuen Trainings-Datenströme zeigen, was zu Überanpassung während der Feinabstimmung führt. Das Weglassen von Merkmalsabbildungen in den Faltungsschichten 205 verbessert die Generalisierung in vortrainierten Netzwerken. Die Genauigkeiten des 3D-CNN 200 werden für alle Modalitäten verbessert, wenn das 3D-CNN 200 mit dem Weglassen von Merkmalsabbildungen trainiert wird. In einer Ausführungsform wird eine Weglassrate von 10% verwendet, um einen Teil der Merkmalsabbildungen für einen oder mehrere Datenströme zu entfernen, und Aktivierungen von jeder verbleibenden Merkmalsabbildung werden durch 1,1 während einer Trainingsprozedur skaliert; wobei bei Inferenzeit alle Merkmalsabbildungen keine zusätzliche Skalierung aufweisen.
  • Bei Schritt 280 wird ein Klassenetikett für die Handgeste basierend auf den räumlich-zeitlichen Merkmalen erzeugt. Zuerst werden Merkmalsabbildungen aus der letzten 3D-faltenden Schicht des 3D-CNN 200 vektorisiert und durch vollständig verbundene Schichten 218 geleitet, gefolgt von der rekurrenten Schicht 220. Die Ausgabe der rekurrenten Schicht 220 wird in den linearen Klassifizierer 225 eingespeist, um Ausgabeklassen bedingter Wahrscheinlichkeiten zu erzeugen. Der CTC 240 berechnet die Wahrscheinlichkeit der Folge und propagiert angesichts einer Feldvergleichsfolge bzw. „ground truth sequence” Fehler an die vorhergehende Schicht. Angesichts des Fehlers in der Schätzung aktualisiert jede Schicht ihre Parameter in Richtung einer Fehlerverringerung und propagiert irgendwelche verbleibenden Fehler, um Fehler zu verringern. In einer Ausführungsform wird die Trainings-Prozedur als stochastischer Gradienten-Abstieg mit Momentum implementiert. Die Trainings-Prozedur kann iterativ wiederholt werden, bis Konvergenz erreicht ist.
  • Nach der Feinabstimmung des 3D-CNN 200 wird das gesamte R3DCNN 230 oder 250 mit einer Rückpropagierung durch die Zeit (BPTT = back-propagation-through-time) trainiert. Die BPTT ist gleichbedeutend mit dem Entrollen der rekurrenten Schichten, Transformieren der rekurrenten Schichten in ein mehrschichtiges Feed-Forward Netzwerk, Anwenden einer standardmäßigen Gradienten-basierten Rückpropagierung, und Mittelung der Gradienten, um Aktualisierungen auf Gewichte zu konsolidieren, die durch Entrollen dupliziert wurden.
  • Zwei Trainingskostenfunktionen können berücksichtigt werden: negative Log-Likelihood für den gesamten Trainings-Datenstrom und CTC für Trainings-Datenstrom-Clips. Die negative Log-Likelihood-Funktion für einen Mini-Stapel von Trainings-Datenströme ist:
    Figure DE102017100609A1_0018
    wobei
    Figure DE102017100609A1_0019
    die Wahrscheinlichkeit des Gestenetiketts yi bei gegebenen Trainings-Datenstrom (z. B., Video)
    Figure DE102017100609A1_0020
    wie von dem R3DCNN 230 oder 250 vorhergesagt.
  • Das Verzeichnis von existierenden Gesten wird erweitert, um eine keine Gestenklasse:
    Figure DE102017100609A1_0021
    {keine Geste} zu umfassen. Folglich gibt der lineare Klassifizierer 225 eine klassenbedingte Wahrscheinlichkeit für diese zusätzliche keine Gestenklasse aus. Anstatt der Mittelung von Vorhersagen über Trainings-Datenstromclips in einem vorsegmentierten Datenstrom berechnet das R3DCNN 230 oder 250 die Wahrscheinlichkeit des Beobachtens einer bestimmten Geste (oder keine Geste) k zurzeit t in einem unsegmentierten Training-Datenstrom
    Figure DE102017100609A1_0022
  • Ein Weg π wird als eine mögliche Abbildung des unsegmentierten Trainings-Datenstroms
    Figure DE102017100609A1_0023
    in eine Folge von Klassenetiketten y definiert. Die Wahrscheinlichkeit des Beobachtens des Weges π ist
    Figure DE102017100609A1_0024
    wobei πt das zurzeit t im Weg π vorhergesagte Klassenetikett ist.
  • Wege werden in eine Folge von Ereignisetiketten y durch den Operator
    Figure DE102017100609A1_0025
    abgebildet, der wiederholte Klassenetikette kondensiert und keine Gestenetikette entfernt, z. B.,
    Figure DE102017100609A1_0026
    wobei 1, 2 tatsächliche Gestenklassen sind und ”-” keine Geste ist. Unter
    Figure DE102017100609A1_0027
    führen viele Wege π zu der gleichen Ereignisfolge y. Die Wahrscheinlichkeit der Beobachtung einer bestimmten Folge y in Anbetracht einer eingegebenen Folge
    Figure DE102017100609A1_0028
    ist die Summe der bedingten Wahrscheinlichkeiten aller Wege π, die in diese Folge abgebildet werden:
    Figure DE102017100609A1_0029
  • Die Berechnung von
    Figure DE102017100609A1_0030
    wird durch dynamische Programmierung vereinfacht. Ein Assistenzvektor
    Figure DE102017100609A1_0031
    wird durch Hinzufügen eines kein Gestenetikett vor und nach jedem Trainings-Datenstromclip in y erzeugt, so dass
    Figure DE102017100609A1_0032
    gleich
    Figure DE102017100609A1_0033
    = P' = 2P + 1 Etikette enthält. Dann wird eine Vorwärtsvariable
    Figure DE102017100609A1_0034
    berechnet, wobei αt(u) die kombinierte Wahrscheinlichkeit aller Abbildungen von Ereignissen bis zu dem Trainings-Datenstromclip t und dem Ereignis u ist. Die Übergangsfunktion für α ist:
    Figure DE102017100609A1_0035
    und
    Figure DE102017100609A1_0036
    das Klassenetikett von Ereignis u bezeichnet. Die Vorwärtsvariable wird mit
    Figure DE102017100609A1_0037
    die Wahrscheinlichkeit eines Wegs beginnend mit
    Figure DE102017100609A1_0038
    keine Geste, und
    Figure DE102017100609A1_0039
    die Wahrscheinlichkeit eines mit dem ersten tatsächlichen Ereignis
    Figure DE102017100609A1_0040
    startenden Weges, initialisiert. Da ein gültiger Weg nicht mit einem späteren Ereignis beginnen kann, wird α0(i) initialisiert: α0(i) = 0 ∀i > 1. Bei jedem Zeitschritt t > 0 werden Wege, in denen das Ereignis u aktuell aktiv ist (mit Wahrscheinlichkeit
    Figure DE102017100609A1_0041
    berücksichtigt und (1) bleibt von der vorherigen Zeit t – 1(αt-1(u)) unverändert, (2) ändert sich von keiner Geste in die nächste tatsächliche Geste oder umgekehrt (αt-1(u – 1)), oder (3) geht von einer tatsächlichen Geste zu der nächsten über, während keine Geste übergangen wird, wenn die beiden Gesten verschiedene Etikette (βt-1(u – 2)) aufweisen. Schließlich muss jeder gültige Weg π zur Zeit N – 1 mit der letzten tatsächlichen Geste
    Figure DE102017100609A1_0042
    oder mit keine Geste
    Figure DE102017100609A1_0043
    enden, folglich
    Figure DE102017100609A1_0044
  • Unter Verwendung dieser Berechnung für
    Figure DE102017100609A1_0045
    ist der CTC-Verlust:
    Figure DE102017100609A1_0046
    ausgedrückt in der Log-Domäne. Während der CTC nur als eine Trainings-Kostenfunktion verwendet wird, beeinflusst er die Architektur des Netzwerks durch Hinzufügen des zusätzlichen Etiketts keine Gestenklasse. Für eine vorsegmentierte Datenstromklassifizierung wird die Ausgabe keine Geste entfernt und Wahrscheinlichkeiten werden durch die 11-Norm nach der Modalitätsfusion neu normalisiert.
  • In einer Ausführungsform wird, um den Netzwerkparameter
    Figure DE102017100609A1_0047
    mit Bezug auf eine der beiden Verlustfunktionen zu optimieren, ein stochastischer Gradientenabstieg (SGD) mit einem Dynamikterm von μ = 0,9 verwendet. Jeder Parameter des Netzwerks
    Figure DE102017100609A1_0048
    wird bei jedem Rückpropagations-Schritt aktualisiert durch:
    Figure DE102017100609A1_0049
    wobei λ die Lernrate,
    Figure DE102017100609A1_0050
    der Gradientenwert der gewählten Kostenfunktion E mit Bezug auf den Parameter θ gemittelt über dem Mini-Stapel und γ der Weight-Decay-Parameter ist. Um Gradientenexplosion in den rekurrenten Schichten während des Trainings zu verhindern, wird ein Abschneideoperator
    Figure DE102017100609A1_0051
    mit weichem Gradienten und mit einem Schwellenwert von 10 angewendet.
  • Zusätzlich zum Weglassen von Merkmalsabbildungen kann eine Anzahl von Regularisierungstechniken benutzt werden, um Überanpassung bzw. Overfitting zu verringern. Beispielsweise kann eine Weight-Decay (γ = 0,5%) für alle Gewichte in dem Netzwerk verwendet werden. Weglassen kann auf die vollständig verbundenen Schichten des 3D-CNN 200 angewendet werden. In einer Ausführungsform wird eine Weglassrate von p = 75% verwendet und die verbleibenden Aktivierungen werden durch einen Faktor von 1/(1 – p) neu skaliert.
  • In einer Ausführungsform wird während des Trainings das 3D-CNN 200 für 16 Epochen mit einer anfänglichen Lernrate von λ = 3 × 10–3 fein abgestimmt, die um einen Faktor von 10 nach jeweils 4 Epochen verringert wird. Als nächstes wird das R3DCNN 230 oder 250 Ende-zu-Ende für zusätzliche 100 Epochen mit einer konstanten Lernrate von λ = 3 × 10–4 trainiert. Alle Netzwerkparameter ohne vortrainierte Initialisierungen werden von einer mittelwertfreien Gaussverteilung mit einer Standardabweichung von 0,01 zufällig abgetastet.
  • In einer Ausführungsform wird jeder Trainings-Datenstrom einer schwach segmentierten Geste mit 80 Rahmen von 120×160 Pixel gespeichert, und das Training wird mit Rahmen der Größe 112×112 abgeschlossen, die durch zufällige Zuschnitte bzw. Crops erzeugt wurden. Videos aus der Testmenge werden mit dem zentralen Zuschnitt bzw. Crop von jedem Rahmen bewertet. Um die Veränderbarkeit in den Trainingsbeispielen zu erhöhen, können zusätzliche Datenvergrößerungsschritte auf jedes Video zusätzlich zu dem Zuschneiden bzw. Cropping angewendet werden. Beispielsweise können eine oder mehrere der folgenden ebenfalls auf das Video angewendet werden: zufällige räumliche Drehung, Skalierung, zeitliche Skalierung und Verjittern bzw. Jittering). Die Parameter für jeden Vergrößerungsschritt können aus einer gleichmäßigen Verteilung mit einem spezifizierten Bereich gezogen werden. Da rekurrente Verbindungen die spezifische Reihenfolge von Datenströme in dem Trainingssatz lernen können, können die Trainingsgesten-Datenströme für jede Trainingsepoche permutiert werden.
  • In einer Ausführungsform können die 3D-CNNs 200 auf Dreikanal-RGB-Bildern vortrainiert werden. Um das vortrainierte 3D-CNN 200 auf Einkanaltiefe oder IR-Bilder anzuwenden, können die faltenden Kernel für die drei Kanäle der ersten Schicht summiert werden, um einen Kernel zu erhalten. Auf ähnliche Weise kann, um die vortrainierten 3D-CNNs 200 mit Zweikanaleingängen (z. B. optischer Fluss) zu benutzen, der dritte Kanal jedes Kernels entfernt werden und die verbleibenden beiden Kanäle können um einen Faktor von 1,5 neu skaliert werden.
  • In einer Ausführungsform ergibt für das 3D-CNN 200 ein Aufteilen einer Geste in nicht überlappende Clips von m = 8 Rahmen die beste Kombination von Klassifizierungsgenauigkeit, Berechnungskomplexität und Vorhersagelatenzzeit. Um mit Clips der Größe m = 8 Rahmen auf dem C3D-Netzwerk zu arbeiten (ursprünglich mit m = 16 Rahmen trainiert), wird eine zeitliche Bündelung nach der letzten faltenden Schicht entfernt.
  • In einer Ausführungsform wird das R3DCNN 230 oder 250 verwendet, das unter Verwendung von Trainings-Datenströme trainiert wird, die von einem bestimmten Sensor für eine Modalität erzeugt wurden, um Gesten genau zu erfassen und zu klassifizieren, die unter Verwendung eines unterschiedlichen Sensors für die gleiche Modalität erfasst wurden. Als Ergebnis können die Trainingstechniken die Genauigkeit des R3DCNN 230 oder 250 verwendet werden, um Gesten zu erfassen und zu klassifizieren, die unter Verwendung einer Vielfalt von Sensoren für eine Modalität erfasst wurden, sogar wenn das R3DCNN 230 oder 250 unter Verwendung eines unterschiedlichen Sensors für die Modalität trainiert wird.
  • Parallelverarbeitungsarchitektur
  • 3 veranschaulicht eine Parallelverarbeitungseinheit (PPU) 300 gemäß einer Ausführungsform. Die PPU 300 kann konfiguriert sein, um das System 125 und eine oder mehrere Schichten des R3DCNN 230 oder 250 zu implementieren.
  • In einer Ausführungsform ist die PPU 300 ein Multi-Threaded-Prozessor, der auf einer oder mehreren integrierten Schaltungsvorrichtungen implementiert ist. Die PPU 300 ist eine Latenzzeit-versteckende Architektur, die ausgestaltet ist, um eine große Anzahl von Threads parallel zu verarbeiten. Ein Thread (d. h., ein Ausführungs-Thread) ist eine Instanziierung einer Menge von Anweisungen, die konfiguriert ist, um von der PPU 300 ausgeführt zu werden. In einer Ausführungsform ist die PPU 300 eine Graphikverarbeitungseinheit (GPU), die konfiguriert ist, um eine Graphik-Rendering-Pipeline zur Verarbeitung von dreidimensionalen (3D) Graphikdaten zu implementieren, um zweidimensionale (2D) Bilddaten zur Anzeige auf einer Anzeigenvorrichtung, wie beispielsweise einer Flüssigkristallanzeige(LCD)-Vorrichtung, zu erzeugen. In anderen Ausführungsformen kann die PPU 300 zum Durchführen von Allzweck-Berechnungen benutzt werden. Während ein beispielhafter paralleler Prozessor hier für veranschaulichende Zwecke bereitgestellt wird, sei nachhaltig bemerkt, dass ein derartiger Prozessor lediglich für veranschaulichende Zwecke dargelegt wird, und dass ein beliebiger Prozessor benutzt werden kann, um dasselbe zu ergänzen oder zu ersetzen.
  • Wie in 3 gezeigt, umfasst die PPU 300 eine Eingabe/Ausgabe(E/A)-Einheit 305, eine Host-Schnittstelleneinheit 310, eine Frontendeinheit 315, eine Einplanereinheit 320, eine Arbeitsverteilungseinheit 325, einen Hub 330, eine Kreuzschiene (Xbar) 370, eine oder mehrere allgemeine Verarbeitungscluster (GPCs) 350 und eine oder mehrere Partitionseinheiten 380. Die PPU 300 kann mit einem Host-Prozessor oder anderen peripheren Vorrichtungen über einen Systembus 302 verbunden sein. Die PPU 300 kann ebenfalls mit einem lokalen Speicher verbunden sein, der eine Anzahl von Speichervorrichtungen 304 umfasst. In einer Ausführungsform kann der lokale Speicher eine Anzahl von dynamischen Direktzugriffspeicher(DRAM)-Vorrichtungen umfassen.
  • Die E/A-Einheit 305 ist konfiguriert, um Kommunikationen (d. h., Befehle, Daten, usw.) von einem Host-Prozessor (nicht gezeigt) über den Systembus 302 zu übertragen und zu empfangen. Die E/A-Einheit 305 kann mit dem Host-Prozessor direkt über den Systembus 302 oder durch eine oder mehrere dazwischenliegenden Vorrichtungen, wie beispielsweise einer Speicherbrücke, kommunizieren. In einer Ausführungsform implementiert die E/A-Einheit 305 eine PCIe(Peripheral Component Interconnect Express)-Schnittstelle für Kommunikationen über einen PCIe-Bus. In alternativen Ausführungsformen kann die E/A-Einheit 305 andere Arten von bekannten Schnittstellen zum Kommunizieren mit externen Vorrichtungen implementieren.
  • Die E/A-Einheit 305 ist mit einer Host-Schnittstelleneinheit 310 gekoppelt, die Pakete decodiert, die über den Systembus 302 empfangen wurden. In einer Ausführungsform stellen die Pakete Befehle dar, die konfiguriert sind, um die PPU 300 zu veranlassen, verschiedene Operationen durchzuführen. Die Host-Schnittstelleneinheit 310 überträgt die decodierten Befehle an verschiedene andere Einheiten der PPU 300, wie es die Befehle spezifizieren können. Beispielsweise können einige Befehle an die Frontendeinheit 315 übertragen werden. Andere Befehle können an den Hub 330 oder andere Einheiten der PPU 300, wie beispielsweise eine oder mehrere Kopiermaschinen, einen Videocodierer, einen Videodecodierer, eine Leistungsverwaltungs-Einheit, usw. (nicht explizit gezeigt) übertragen werden. Mit anderen Worten ist die Host-Schnittstelleneinheit 310 konfiguriert, um Kommunikationen zwischen und unter den verschiedenen logischen Einheiten der PPU 300 zu leiten.
  • In einer Ausführungsform codiert ein Programm, das von dem Host-Prozessor ausgeführt wird, einen Befehlsstrom in einem Puffer, der Arbeitslasten der PPU 300 zur Verarbeitung bereitstellt. Eine Arbeitslast kann eine Anzahl von Anweisungen und Daten umfassen, die von diesen Anweisungen zu verarbeiten sind. Der Puffer ist eine Region in einem Speicher, auf die sowohl von dem Host-Prozessor als auch der PPU 300 zugegriffen werden kann (d. h., Lesen/Schreiben). Beispielsweise kann die Host-Schnittstelleneinheit 310 konfiguriert sein, um auf den Puffer in einem mit dem Systembus 302 verbundenen Systemspeicher über Speicheranforderungen zuzugreifen, die über den Systembus 302 durch die E/A-Einheit 305 übertragen werden. In einer Ausführungsform schreibt der Host-Prozessor den Befehlsstrom in den Puffer und überträgt dann einen Zeiger an den Start des Befehlsstroms zu der PPU 300. Die Host-Schnittstelleneinheit 310 stellt die Frontendeinheit 315 mit Zeigern einem oder mehreren Befehlsströmen bereit. Die Frontendeinheit 315 verwaltet den einen oder mehrere Ströme, wobei Befehle aus den Strömen gelesen und Befehle an die verschiedenen Einheiten der PPU 300 weitergeleitet werden.
  • Die Frontendeinheit 315 ist mit einer Einplanereinheit 320 gekoppelt, welche die verschiedenen GPCs 350 konfiguriert, um Aufgaben zu verarbeiten, die durch den einen oder mehrere Ströme definiert sind. Die Einplanereinheit 320 ist konfiguriert, um Zustandsinformation zu verfolgen, die sich auf die verschiedenen Aufgaben bezieht, die von der Einplanereinheit 320 verwaltet werden. Der Zustand kann angeben, welcher GPC 350 einer Aufgabe zugewiesen ist, ob die Aufgabe aktiv oder inaktiv ist, ein der Aufgabe zugeordnetes Prioriätsniveau und so weiter. Die Einplanereinheit 320 verwaltet die Ausführung einer Mehrzahl von Aufgaben auf dem einen oder mehreren GPCs 350.
  • Die Einplanereinheit 320 ist mit einer Arbeitsverteilungseinheit 325 gekoppelt, die konfiguriert ist, um Aufgaben zur Ausführung auf den GPCs 350 abzusenden. Die Arbeitsverteilungseinheit 325 kann eine Anzahl von eingeplanten Aufgaben verfolgen, die von der Einplanereinheit 320 empfangen werden. In einer Ausführungsform verwaltet die Arbeitsverteilungseinheit 325 eine Datenbank für anhängige Aufgaben und eine Datenbank für aktive Aufgaben für jeden der GPCs 350. Die Datenbank für anhängige Aufgaben kann eine Anzahl von Schlitzen (z. B., 32 Schlitze) umfassen, die Aufgaben enthalten, die zugewiesen sind, von einem bestimmten GPC 350 verarbeitet zu werden. Die Datenbank für aktive Aufgaben kann eine Anzahl von Schlitzen (z. B., 4 Schlitze) für Aufgaben umfassen, die aktiv von den GPCs 350 verarbeitet werden. Wenn eine GPC 350 die Ausführung einer Aufgabe beendet, wird diese Aufgabe aus dem Datenbank für aktive Aufgaben für den GPC 350 ausgewiesen und eine der anderen Aufgaben aus der Datenbank für anhängige Aufgaben wird ausgewählt und zur Ausführung auf dem GPC 350 eingeplant. Wenn eine aktive Aufgabe auf dem GPC 350 im Leerlauf war, wie wenn beispielsweise darauf gewartet wird, dass eine Datenabhängigkeit aufgelöst wird, dann kann die aktive Aufgabe aus dem GPC 350 ausgewiesen werden und zu der Datenbank für anhängige Aufgaben zurückgeführt werden, während eine weitere Aufgabe in der Datenbank für anhängige Aufgaben ausgewählt und zur Ausführung auf dem GPC 350 eingeplant wird.
  • Die Arbeitsverteilungseinheit 325 kommuniziert mit dem einem oder mehreren GPCs 350 über die XBar 370. Die XBar 370 ist ein Zwischenverbindungs-Netzwerk, das viele der Einheiten der PPU 300 mit anderen Einheiten der PPU 300 koppelt. Beispielsweise kann die XBar 370 konfiguriert sein, um die Arbeitsverteilungseinheit 325 mit einem bestimmten GPC 350 zu koppeln. Obwohl nicht explizit gezeigt, sind eine oder mehrere andere Einheiten der PPU 300 mit der Host-Schnittstelleneinheit 310 gekoppelt. Die anderen Einheiten können ebenfalls mit der XBar 370 über einen Hub 330 verbunden sein.
  • Die Aufgaben werden von der Einplanereinheit 320 verwaltet und an eine GPC 350 von der Arbeitsverteilungseinheit 325 abgesendet. Der GPC 350 ist konfiguriert, um die Aufgabe zu verarbeiten und Ergebnisse zu erzeugen. Die Ergebnisse können von anderen Aufgaben innerhalb des GPC 350 konsumiert werden, die an einen unterschiedlichen GPC 350 über die XBar 370 geleitet oder in dem Speicher 304 gespeichert werden. Die Ergebnisse können in den Speicher 304 über die Partitionseinheiten 380 geschrieben werden, die eine Speicherschnittstelle zum Lesen und Schreiben von Daten in/aus dem Speicher 304 implementieren. In einer Ausführungsform umfasst die PPU 300 eine Anzahl U von Partitionseinheiten 380, die gleich der Anzahl von getrennten und verschiedenen Speichervorrichtungen 304 ist, die mit der PPU 300 gekoppelt sind. Eine Partitionseinheit 380 wird nachstehend ausführlicher in Verbindung mit 4B beschrieben.
  • In einer Ausführungsform führt ein Host-Prozessor einen Treiberkernel aus, der eine Anwendungsprogrammier-Schnittstelle (API) implementiert, die einer oder mehrere Anwendungen ermöglicht, die auf dem Host-Prozessor laufen, Operationen zur Ausführung auf der PPU 300 einzuplanen. Eine Anwendung kann Anweisungen (d. h., API-Aufrufe) erzeugen, die den Treiberkernel veranlassen, eine oder mehrere Aufgaben zur Ausführung durch die PPU 300 zu erzeugen. Der Treiberkernel gibt Aufgaben an einen oder mehrere Ströme aus, die von der PPU 300 verarbeitet werden. Jede Aufgabe kann eine oder mehrere Gruppen von verwandten Threads umfassen, die hier als ein Warp bezeichnet werden. Ein Thread-Block kann sich auf eine Mehrzahl von Gruppen von Threads beziehen, die Anweisungen umfassen, um die Aufgabe durchzuführen. Threads in der gleichen Gruppe von Threads können Daten mittels eines gemeinsam benutzten Speichers austauschen. In einer Ausführungsform umfasst eine Gruppe von Threads 32 verwandte Threads.
  • 4A veranschaulicht eine GPC 350 der PPU 300 von 3 gemäß einer Ausführungsform. Wie in 4A gezeigt, umfasst jede GPC 350 eine Anzahl von Hardware-Einheiten für Verarbeitungsaufgaben. In einer Ausführungsform umfasst jede GPC 350 einen Pipeline-Verwalter 410, eine Vor-Rasteroperationen-Einheit (PROP) 415, eine Raster-Engine 425, eine Arbeitsverteilungs-Kreuzschiene (WDX) 480, eine Speicherverwaltungseinheit (MMU) 490, und einen oder mehrere Texturverarbeitungs-Cluster (TPCs) 420. Es wird anerkannt, dass der GPC 350 von 4A andere Hardware-Einheiten an Stelle von oder zusätzlich zu den in 4A gezeigten Einheiten umfassen kann.
  • In einer Ausführungsform wird der Betrieb des GPC 350 von dem Pipeline-Verwalter 410 gesteuert. Der Pipeline-Verwalter 410 verwaltet die Konfiguration des einen oder mehrerer TPCs 420 für Verarbeitungsaufgaben, die dem GPC 350 zugeteilt sind. In einer Ausführungsform kann der Pipeline-Verwalter 410 mindestens einen von dem einen oder mehrere TPCs 420 konfigurieren, um mindestens einen Abschnitt einer Graphik-Rendering-Pipeline zu implementieren. Beispielsweise kann ein TPC 420 konfiguriert sein, um ein Vertex-Schattierungsprogramm auf dem programmierbaren Streaming-Multiprozessor (SM) 440 auszuführen. Der Pipeline-Verwalter 410 kann ebenfalls konfiguriert sein, um Pakete, die von der Arbeitsverteilungseinheit 325 empfangen werden, an die passenden logischen Einheiten innerhalb des GPC 350 zu leiten. Beispielsweise können einige Pakete an Hardware-Einheiten mit fester Funktion in der PROP 415 und/oder der Raster-Engine 425 geleitet werden, während andere Pakete an die TPCs 420 zur Verarbeitung durch die Primitiven-Engine 435 oder den SM 440 geleitet werden können.
  • Die RPROP-Einheit 415 ist konfiguriert, um Daten, die von der Raster-Engine 425 und den TPCs 420 erzeugt wurden, an eine Rasteroperationen(ROP)-Einheit in der Partitionseinheit 380 zu leiten, die nachstehend ausführlicher beschrieben wird. Die RPROP-Einheit 415 kann ebenfalls konfiguriert sein, um Optimierungen zur Farbmischung durchzuführen, Pixeldaten zu organisieren, Adressenübersetzungen durchzuführen und dergleichen durchzuführen.
  • Die Raster-Engine 425 umfasst eine Anzahl von Hardware-Einheiten mit fester Funktion, die konfiguriert sind, um verschiedene Rasteroperationen durchzuführen. In einer Ausführungsform umfasst die Raster-Engine 425 eine Setup-Engine, eine grobe Raster-Engine, eine Culling-Engine, eine Clipping-Engine, eine feine Raster-Engine, und eine Kachelkoaleszenz-Engine. Die Setup-Engine empfängt transformierte Vertices und erzeugt Ebenengleichungen, die dem durch die Vertices definierten geometrischen Primitiv zugeordnet sind. Die Ebenengleichungen werden an die grobe Raster-Engine übertragen, um Abdeckungsinformation (z. B., eine x, y-Abdeckungsmaske für eine Kachel) für das Primitiv zu erzeugen. Die Ausgabe der groben Raster-Engine kann an die Culling-Engine übertragen werden, wo dem Primitiv zugeordnete Fragmente, die einen z-Test nicht bestehen, aussortiert und an eine Clipping-Engine übertragen werden, wo Fragmente, die außerhalb eines Betrachtungsstumpfes liegen, abgeschnitten werden. Diejenigen Fragmente, die das Clipping und Culling überleben, können an eine feine Raster-Engine weitergeleitet werden, um Attribute für die Pixelfragmente basierend auf den von der Setup-Engine erzeugten Ebenengleichungen zu erzeugen. Die Ausgabe der Raster-Engine 425 umfasst zu verarbeitende Fragmente, die beispielsweise von einem Fragmenten-Schattierer zu verarbeiten sind, der innerhalb eines TPC 420 implementiert ist.
  • Jeder TPC 420, der in dem GPC 350 umfasst ist, umfasst einen M-Pipe-Controller (MPC) 430, eine Primitiven-Engine 435, einen oder mehrere SMs 440 und eine oder mehrere Textureinheiten 445. Der MPC 430 steuert den Betrieb des TPC 420, wobei von dem Pipeline-Verwalter 410 empfangene Pakete an passende Einheiten in dem TPC 420 geleitet werden. Beispielsweise können Pakete, die einer Vertex zugeordnet sind, an die Primitiven-Engine 435 geleitet werden, die konfiguriert ist, um Vertexattribute aus dem Speicher 304 zu holen, die der Vertex zugeordnet sind. Im Gegensatz dazu können Pakete, die einem Schattierungsprogramm zugeordnet sind, an den SM 440 übertragen werden.
  • In einer Ausführungsform sind die Textureinheiten 445 konfiguriert, um Texturabbildungen (z. B., ein 2D-Array von Texeln) aus dem Speicher 304 zu laden und die Texturabbildungen abzutasten, um abgetastete Texturwerte zur Verwendung in Schattierungsprogrammen zu erzeugen, die von dem SM 440 ausgeführt werden. Die Textureinheiten 445 implementieren Texturoperationen, wie beispielsweise Filteroperationen, unter Verwendung von MIP-Maps (d. h., Texturabbildungen von variierenden Detaillierungsgrad). Die Textureinheit 445 wird ebenfalls als der Lade/Speicher-Weg für den SM 440 an die MMU 490 verwendet. In einer Ausführungsform umfasst jeder TPC 420 zwei (2) Textureinheiten 445.
  • Der SM 440 umfasst einen programmierbaren Streaming-Prozessor, der konfiguriert ist, um Aufgaben zu verarbeiten, die durch eine Anzahl von Threads dargestellt werden. Jeder SM 440 ist multi-threaded und konfiguriert, um eine Mehrzahl von Threads (z. B., 32 Threads) von einer bestimmten Gruppe von Threads gleichzeitig auszuführen. In einer Ausführungsform implementiert der SM 440 eine SIMD (Einzige-Anweisung, Mehrere-Daten) Architektur, wobei jeder Thread in einer Gruppe von Threads (d. h., ein Warp) konfiguriert ist, um eine unterschiedliche Menge von Daten basierend auf der gleichen Menge von Anweisungen zu verarbeiten. Alle Threads in der Gruppe von Threads führen die gleichen Anweisungen aus. In einer anderen Ausführungsform implementiert der SM 440 eine SIMT (Einzige-Anweisung, Multi-Thread) Architektur, wobei jeder Thread in einer Gruppe von Threads konfiguriert ist, um eine unterschiedliche Menge von Daten basierend auf der gleichen Menge von Anweisungen zu verarbeiten, wobei jedoch einzelnen Threads in der Gruppe von Threads ermöglicht wird, während der Ausführung zu divergieren. Mit anderen Worten können, wenn eine Anweisung für die Gruppe von Threads zur Ausführung abgesendet wird, Threads in der Gruppe von Threads aktiv sein, um dadurch die Anweisung auszuführen, während andere Threads in der Gruppe von Threads inaktiv sein können, um dadurch eine Nicht-Operation (NOP) durchzuführen, anstatt die Anweisung auszuführen. Der SM 440 kann ausführlicher nachstehend in Verbindung mit 5 beschrieben werden.
  • Die MMU 490 stellt eine Schnittstelle zwischen dem GPC 350 und der Partitionseinheit 380 bereit. Die MMU 490 kann eine Übersetzung von virtuellen Adressen in physische Adressen, Speicherschutz und Arbitrierung von Speicheranforderungen bereitstellen. In einer Ausführungsform, stellt die MMU 490 einen oder mehrere Translation-Lookaside-Buffers (TLBs) zum Verbessern der Übersetzung von virtuellen Adressen in physischen Adressen in dem Speicher 304 bereit.
  • 4B veranschaulicht eine Speicherpartitionseinheit 380 der PPU 300 von 3 gemäß einer Ausführungsform. Wie in 4B gezeigt, umfasst die Speicherpartitionseinheit 380 eine Rasteroperationen(ROP)-Einheit 450, eine Level-2(L2)-Cache 460, eine Speicherschnittstelle 470 und eine L2-Kreuzschiene (XBar) 465. Die Speicherschnittstelle 470 ist mit dem Speicher 304 gekoppelt. Die Speicherschnittstelle 470 kann 16, 32, 64, 128-Bit Datenbusse oder dergleichen für einen Hochgeschwindigkeits-Datentransfer implementieren. In einer Ausführungsform umfasst die PPU 300U Speicherschnittstellen 470 und eine Speicherschnittstelle 470 pro Partitionseinheit 380, wobei jede Partitionseinheit 380 mit einer entsprechenden Speichervorrichtung 304 verbunden ist. Beispielsweise kann die PPU 300 mit bis zu U Speichervorrichtungen 304 verbunden sein, wie beispielsweise einen GDDR5 SDRAM (Graphics Double Data Rate, Version 5, synchroner dynamischer Direktzugriffsspeicher). In einer Ausführungsform implementiert die Speicherschnittstelle 470 eine DRAM-Schnittstelle und U ist gleich 8.
  • In einer Ausführungsform implementiert die PPU 300 eine Multi-Level-Speicherhierarchie. Der Speicher 304 ist außerhalb des Chips in einem SDRAM lokalisiert, der mit der PPU 300 gekoppelt ist. Daten aus dem Speicher 304 können geholt und in dem L2-Cache 460 gespeichert werden, der innerhalb des Chips lokalisiert ist und zwischen den verschiedenen GPCs 350 gemeinsam benutzt wird. Wie gezeigt, umfasst jede Partitionseinheit 380 einen Abschnitt des L2-Cache 460, der einer entsprechenden Speichervorrichtung 304 zugeordnet ist. Caches niedrigeren Levels können dann in verschiedene Einheiten innerhalb der GPCs 350 implementiert werden. Beispielsweise kann jeder der SMs 440 einen Level-1(Li)-Cache implementieren. Der L1-Cache ist ein privater Speicher, der einem bestimmten SM 440 fest zugeordnet ist. Daten aus dem L2-Cache 460 können geholt und in jedem der L1-Caches zur Verarbeitung in den Funktionseinheiten der SMs 440 gespeichert werden. Der L2-Cache 460 ist mit der Speicherschnittstelle 470 und der XBar 370 gekoppelt.
  • Die ROP-Einheit 450 umfasst einen ROP-Verwalter 455, eine Farben-ROP(CROP)-Einheit 452 und eine Z-ROP(ZROP)-Einheit 454. Die CROP-Einheit 452 führt Rasteroperationen bezogen auf Pixelfarbe durch, wie beispielsweise Farbenkomprimierung, Pixelmischung und dergleichen. Die ZROP-Einheit 454 implementiert eine Tiefenprüfung in Verbindung mit der Raster-Engine 425. Die ZROP-Einheit 454 empfängt eine Tiefe für eine Abtaststelle, die einem Pixelfragment zugeordnet ist, aus der Culling-Engine der Raster-Engine 425. Die ZROP-Einheit 454 prüft die Tiefe gegen eine entsprechende Tiefe in einem Tiefenpuffer für eine Abtaststelle, die dem Fragment zugeordnet ist. Wenn das Fragment den Tiefentest für die Abtaststelle besteht, dann aktualisiert die ZROP-Einheit 454 den Tiefenpuffer und überträgt ein Ergebnis des Tiefentests an die Raster-Engine 425. Der ROP-Verwalter 455 steuert den Betrieb der ROP-Einheit 450. Es wird anerkannt, dass sich die Anzahl von Partitionseinheiten 380 von der Anzahl von GPCs 350 unterscheiden kann und daher kann jede ROP-Einheit 450 mit jede der GPCs 350 gekoppelt sein. Daher verfolgt der ROP-Verwalter 455 Pakete, die von den unterschiedlichen GPCs 350 empfangen wurden, und bestimmt, an welchen GPC 350 geleitet wird, der ein von der ROP-Einheit 450 erzeugtes Ergebnis aufweist. Die CROP-Einheit 452 und die ZROP-Einheit 454 sind mit dem L2-Cache 460 über eine L2-XBar 465 verbunden.
  • 5 veranschaulicht den Streaming-Multiprozessor 440 von 4A gemäß einer Ausführungsform. Wie in 5 gezeigt, umfasst der SM 440 einen Anweisungs-Cache 505, eine oder mehrere Einplanereinheiten 510, eine Registerdatei 520, einen oder mehrere Verarbeitungskerne 550, eine oder mehrere Sonderfunktions-Einheiten (SFUs) 552, eine oder mehrere Lade/Speicher-Einheiten (LSUs) 554, ein Zwischenverbindungs-Netzwerk 580 sowie einen gemeinsam benutzten Speicher/L1-Cache 570.
  • Wie oben beschrieben, sendet die Arbeitsverteilungseinheit 325 Aufgaben zur Ausführung auf den GPCs 350 der PPU 300 ab. Die Aufgaben werden einem bestimmten TPC 420 innerhalb eines GPC 350 zugeteilt, und wenn die Aufgabe einem Schattierungsprogramm zugeordnet ist, kann die Aufgabe einem SM 440 zugeteilt werden. Die Einplanereinheit 510 empfängt die Aufgaben aus der Arbeitsverteilungseinheit 325 und verwaltet die Einplanung von Anweisungen für eine oder mehrere Gruppen von Threads (d. h., Warps), die dem SM 440 zugewiesen sind. Die Einplanereinheit 510 plant Threads zur Ausführung in Gruppen von parallelen Threads ein, wobei jede Gruppe ein Warp genannt wird. In einer Ausführungsform umfasst jeder Warp 32 Threads. Die Einplanereinheit 510 kann eine Mehrzahl von unterschiedlichen Warps verwalten, die Warps zur Ausführung einplanen und dann Anweisungen aus der Mehrzahl von unterschiedlichen Warps an die verschiedenen Funktionseinheiten (d. h., Kerne 550, SFUs 552 und LSUs 554) während jedes Taktzyklus absenden.
  • In einer Ausführungsform umfasst jede Einplanereinheit 510 eine oder mehrere Anweisungsabsende-Einheiten 515. Jede Absende-Einheit 515 ist konfiguriert, um Anweisungen an eine oder mehrere der Funktionseinheiten zu übertragen. In der in 5 gezeigten Ausführungsform umfasst die Einplanereinheit 510 zwei Absende-Einheiten 515, die ermöglichen, dass zwei unterschiedliche Anweisungen aus dem gleiche Warp während jedes Taktzyklus abgesendet werden. In alternativen Ausführungsformen kann jede Einplanereinheit 510 eine einzige Absende-Einheit 515 oder zusätzliche Absende-Einheiten 515 umfassen.
  • Jeder SM 440 umfasst eine Registerdatei 520, die eine Menge von Registern für die Funktionseinheiten des SM 440 bereitstellt. In einer Ausführungsform ist die Registerdatei 520 zwischen jeder der Funktionseinheiten derart aufgeteilt, dass jede Funktionseinheit einem zugehörigen Abschnitt der Registerdatei 520 zugeteilt ist. In einer anderen Ausführungsform ist die Registerdatei 520 zwischen den unterschiedlichen Warps aufgeteilt, die von dem SM 440 ausgeführt werden. Die Registerdatei 520 stellt für Operanden eine vorübergehende Speicherung bereit, die mit den Datenwegen der Funktionseinheiten verbunden sind.
  • Jeder SM 440 umfasst L Verarbeitungskerne 550. In einer Ausführungsform umfasst der SM 440 eine große Anzahl (z. B., 128, usw.) von verschiedenen Verarbeitungskernen 550. Jeder Kern 550 kann eine vollständig in einer Pipeline angeordnete Verarbeitungseinheit mit einfacher Genauigkeit umfassen, die eine Fließkommaarithmetik-Logikeinheit und eine Ganzzahlarithmetik-Logikeinheit umfasst. Der Kern 550 kann ebenfalls eine Doppelpräzisions-Verarbeitungseinheit umfassen, die eine Fließkommaarithmetik-Logikeinheit umfasst. In einer Ausführungsform implementieren die Fließkommaarithmetik-Logikeinheiten den IEEE 754-2008 Standard für Fließkommaarithmetik. Jeder SM 440 umfasst ebenfalls M SFUs 552, die Sonderfunktionen (z. B., Attributbeurteilung, reziproke Quadratwurzel und dergleichen) durchführen, und N LSUs 554, die Lade- und Speicheroperationen zwischen dem gemeinsam benutzten Speicher/L1-Cache 570 und der Registerdatei 520 implementieren. In einer Ausführungsform umfasst der SM 440 128 Kerne 550, 32 SFUs 552 und 32 LSUs 554.
  • Jeder SM 440 umfasst ein Zwischenverbindungs-Netzwerk 580, das jede der Funktionseinheiten mit der Registerdatei 520 und die LSU 554 mit der Registerdatei 520 des gemeinsam benutzten Speichers/L1-Cache 570 verbinden. In einer Ausführungsform ist das Zwischenverbindungs-Netzwerk 580 eine Kreuzschiene, die konfiguriert sein kann, um beliebige der Funktionseinheiten mit beliebigen der Register in der Registerdatei 520 zu verbinden und die LSUs 554 mit der Registerdatei und Speicherplätzen in dem gemeinsam benutzten Speicher/L1-Cache 570 zu verbinden.
  • Der gemeinsam benutzte Speicher/L1-Cache 570 ist ein Array eines auf dem Chip befindlichen Speichers, der Datenspeicherung und Kommunikation zwischen dem SM 440 und der Primitiven-Engine 435 und zwischen Threads in dem SM 440 ermöglicht. In einer Ausführungsform umfasst der gemeinsam benutzte Speicher/L1-Cache 570 64 KB von Speicherungskapazität und ist in dem Weg aus dem SM 440 zu der Partitionseinheit 380. Der gemeinsam benutzte Speicher/L1-Cache 570 kann verwendet werden, um Lesevorgänge und Schreibvorgänge zwischen zu speichern.
  • Die oben beschriebene PPU 300 kann konfiguriert sein, um äußerst parallele Berechnungen viel schneller als herkömmliche CPUs durchzuführen. Paralleles Berechnen weist Vorteile bei der Graphikverarbeitung, Datenkomprimierung, Biometrik, stromverarbeitenden Algorithmen und dergleichen auf.
  • Wenn für parallele Allzweckberechnung konfiguriert ist, kann eine einfachere Konfiguration verwendet werden. In diesem Modell werden, wie in 3 gezeigt, Graphikverarbeitungseinheiten mit fester Funktion umgangen, wobei eine viel einfacheres Programmiermodell erzeugt wird. In dieser Konfiguration weist die Arbeitsverteilungseinheit 325 Blöcke von Threads direkt an die TPCs 420 zu und verteilt diese direkt an die TPCs. Die Threads in einem Block führen das gleiche Programm unter Verwendung einer eindeutigen Thread-ID in der Berechnung aus, um sicherzustellen, dass jeder Thread eindeutige Ergebnisse unter Verwendung des SM 440 erzeugt, um das Programm auszuführen und Berechnungen durchzuführen, wobei der gemeinsam benutzte Speicher/L1-Cache 570 zwischen Threads und der LSU 554 kommuniziert, den globalen Speicher durch Partitionieren des gemeinsam benutzten Speichers/L1-Cache 570 und der Partitionseinheit 380 zu lesen und in diesen zu schreiben.
  • Wenn der SM 440 für eine parallele Allzweckberechnung konfiguriert ist, kann er ebenfalls Befehle schreiben, welche die Einplanereinheit 320 verwenden kann, um neue Arbeit auf den TPCs 420 zu starten.
  • In einer Ausführungsform umfasst die PPU 300 eine Graphikverarbeitungseinheit (GPU). Die PPU 300 ist konfiguriert, um Befehle zu empfangen, die Schattierungsprogramme zur Verarbeitung von Graphikdaten spezifizieren. Graphikdaten können als eine Menge von Primitiven, wie beispielsweise Punkte, Linien, Dreiecke, Quader, Dreieckstreifen und dergleichen, definiert werden. Typischerweise umfasst ein Primitiv Daten, die eine Anzahl von Vertices für das Primitiv spezifiziert (z. B., in einem Modellraum-Koordinatensystem) sowie auch Attribute, die jedem Vertex des Primitivs zugeordnet sind. Die PPU 300 kann konfiguriert sein, um die Graphikprimitiven zu verarbeiten, um einen Rahmenpuffer zu erzeugen (d. h., Pixeldaten für jedes der Pixel der Anzeige).
  • Eine Anwendung schreibt Modelldaten für eine Szene (d. h., eine Sammlung von Vertices und Attributen) in einen Speicher, wie beispielsweise einen Systemspeicher oder Speicher 304. Die Modelldaten definieren jedes der Objekte, das auf einer Anzeige sichtbar sein kann. Die Anwendung macht dann einen API-Aufruf an den Treiberkernel, der die Modelldaten anfordert, die zu rendern und anzuzeigen sind. Der Treiberkernel liest die Modelldaten und schreibt Befehle in den einen oder mehrere Ströme, um Operationen durchzuführen, um die Modelldaten zu verarbeiten. Die Befehle können unterschiedliche Schattierungsprogramme referenzieren, die auf den SMs 440 der PPU 300 zu implementieren sind, die einen oder mehrere eines Vertex-Schattierers, Hull-Schattierers, Domänen-Schattierers, Geometrie-Schattierers und Pixel-Schattierers umfassen. Beispielsweise kann einer oder mehrere der SMs 440 konfiguriert sein, um ein Vertex-Schattierungsprogramm auszuführen, das eine Anzahl von Vertices verarbeitet, die von den Modelldaten definiert wird. In einer Ausführungsform können die unterschiedlichen SMs 440 konfiguriert sein, um unterschiedliche Schattierungsprogramme gleichzeitig auszuführen. Beispielsweise kann eine erste Teilmenge von SMs 440 konfiguriert sein, um ein Vertex-Schattierungsprogramm auszuführen, während eine zweite Teilmenge von SMs 440 konfiguriert sein kann, um ein Pixel-Schattierungsprogramm auszuführen. Die erste Teilmenge von SMs 440 verarbeitet Vertex-Daten, um verarbeitete Vertex-Daten zu erzeugen, und schreibt die verarbeiteten Vertex-Daten in den L2-Cache 460 und/oder den Speicher 304. Nachdem die verarbeiteten Vertex-Daten gerastert sind (d. h., aus dreidimensionalen Daten in zweidimensionale Daten im Bildschirmraum transformiert sind), um Fragmentdaten zu erzeugen, führt die zweiten Teilmenge von SMs 440 einen Pixel-Schattierer aus, um verarbeitete Fragmentdaten zu erzeugen, die dann mit anderen verarbeiteten Fragmentdaten gemischt und in den Rahmenpuffer im Speicher 304 geschrieben werden. Das Vertex-Schattierungsprogramm und das Pixel-Schattierungsprogramm können nebenläufig ausgeführt werden, wobei unterschiedlichen Daten aus der gleichen Szene in einer Art und Weise einer Pipeline ausgeführt werden, bis sämtliche der Modelldaten für die Szene in dem Rahmenpuffer gerendert wurden. Dann wird der Inhalt des Rahmenpuffers an einen Anzeigecontroller zur Anzeige auf einer Anzeigevorrichtung übertragen.
  • Die PPU 300 kann in einem Desktop-Computer, einem Laptop-Computer, einem Tablet-Computer, einem Smartphone (z. B., einer drahtlosen, handgehaltenen Vorrichtung), einem PDA (personal digital assistant), einer Digitalkamera, einer handgehaltenen elektronischen Vorrichtung und dergleichen umfasst sein. In einer Ausführungsform ist die PPU 300 auf einem einzigen Halbleitersubstrat verkörpert. In einer anderen Ausführungsform ist die PPU 300 in einem SoC (System-on-a-Chip) zusammen mit einer oder mehreren anderen Logikeinheiten umfasst, wie beispielsweise eine RISC(Computer mit reduziertem Befehlssatz)-CPU, einer Speicherverwaltungseinheit (MMU), einem Digital/Analog-Wandler (DAC) und dergleichen umfasst.
  • In einer Ausführungsform kann die PPU 300 auf einer Graphikkarte umfasst sein, die eine oder mehrere Speichervorrichtungen 304, wie beispielsweise einen GDDR5 SDRAM, umfasst. Die Graphikkarte kann konfiguriert sein, um sich schnittstellenmäßig mit einem PCIe-Steckplatz auf einer Hauptplatine eines Desktop-Computers zu verbinden, der beispielsweise einen Northbridge-Chipsatz und einen Southbridge-Chipsatz umfasst. In noch einer anderen Ausführungsform kann die PPU 300 eine integrierte Graphikverarbeitungseinheit (iGPU) sein, die in dem Chipsatz (d. h., Northbridge) der Hauptplatine umfasst ist.
  • Verschiedene Programme können innerhalb der PPU 300 ausgeführt werden, um die verschiedene Schichten des R3DCNN 230 oder 250 zu implementieren. Beispielsweise kann der Vorrichtungstreiber einen Kernel auf der PPU 300 starten, um das 3D-CNN 230 auf einem SM 440 (oder mehreren SMs 440) zu implementieren. Der Vorrichtungstreiber (oder der von der PPU 300 ausgeführte Anfangskernel) kann ebenfalls andere Kernels auf der PPU 300 starten, um andere Schichten des R3DCNN 230 oder 250, wie beispielsweise das RNN 220 und den linearen Klassifizierer 225, durchzuführen. Außerdem können einige der Schichten des R3DCNN 230 oder 250 auf Hardware mit fester Einheit innerhalb der PPU 300 implementiert werden. Es wird anerkannt, dass Ergebnisse von einem Kernel von einer oder mehreren intervenierenden Hardware-Einheiten mit fester Funktion verarbeitet werden können, bevor sie von einem anschließenden Kernel auf einem SM 440 verarbeitet werden.
  • Beispielhaftes System
  • 6 veranschaulicht ein beispielhaftes System 600, in dem die verschiedene Architektur und/oder Funktionalität der verschiedenen vorherigen Ausführungsformen implementiert werden kann. Das beispielhafte System 600 kann verwendet werden, das R3DCNN 230 oder 250 zur dynamischen Gestenerkennung zu implementieren. Das R3DCNN 230 oder 250 unterstützen Online-Gestenklassifizierung mit Null oder negativer Verzögerung und wirksamer Modalitätsfusion, die mit schwach segmentierten Datenströmen trainiert werden kann. In einer Ausführungsform erreicht das R3DCNN 230 oder 250 eine Genauigkeit von 83,8% für schwach segmentierte Gesten, die alle drei Gestenphasen enthalten, was im Vergleich mit der Genauigkeit eines menschlichen Subjekts von 88,4% vorteilhaft ist. Durch Benutzen einer rekurrenten Verbindung und des CTC zum Trainieren des R3DCNN 230 oder 250 kann eine Online-Erfassung und Erkennung von Gesten ebenfalls während lediglich der Kernphase der Geste genau durchgeführt werden.
  • Wie gezeigt, wird ein System 600 bereitgestellt, das mindestens einen zentralen Prozessor 601 umfasst, der mit einem Kommunikationsbus 602 verbunden ist. Der Kommunikationsbus 602 kann unter Verwendung jedes geeigneten Protokolls, wie beispielsweise PCI (Peripheral Component Interconnect), PCI-Express, AGP (Accelerated Graphics Port), HyperTransport oder beliebige andere Busse oder Punkt-zu-Punkt-Kommunikations-Protokoll(e) implementiert werden. Das System 600 umfasst ebenfalls einen Hauptspeicher 604. Steuerlogik (Software) und Daten werden in dem Hauptspeicher 604 gespeichert, der die Form eines Direktzugriffsspeichers (RAM) annehmen kann.
  • Das System 600 umfasst ebenfalls Eingabevorrichtungen 612, einen Graphikprozessor 606 und eine Anzeige 608, d. h. eine herkömmliche CRT (Kathodenstrahlröhre), LCD (Flüssigkristallanzeige), LED (lichtemittierende Diode), Plasmaanzeige oder dergleichen. Eine Benutzereingabe kann aus den Eingabevorrichtungen 612, z. B., Tastatur, Maus, Touchpad, Mikrophon und dergleichen, empfangen werden. In einer Ausführungsform kann der Graphikprozessor 606 eine Mehrzahl von Schattierer-Modulen, ein Rasterisierungsmodul, usw. umfassen. Jede der vorhergehenden Module kann sogar auf einer einzigen Halbleiterplattform liegen, um eine Graphikverarbeitungseinheit (GPU) zu bilden.
  • In der vorliegenden Beschreibung kann sich eine einzige Halbleiterplattform auf eine alleinige einheitliche halbleiterbasierte integrierte Schaltung oder Chip beziehen. Es sei bemerkt, dass sich der Begriff einzige Halbleiterplattform ebenfalls auf Mehrchipmodule mit erhöhter Konnektivität beziehen kann, die einen chipinternen bzw. on-chip Betrieb simulieren, und erhebliche Verbesserungen gegenüber der Nutzung einer herkömmlichen zentralen Verarbeitungseinheit (CPU) und Busimplementierung durchführen. Natürlich können diese verschiedenen Module ebenfalls getrennt oder in verschiedenen Kombinationen von Halbleiterplattformen gemäß den Wünschen des Benutzers liegen.
  • Das System 600 kann ebenfalls eine sekundäre Speicherung 610 umfassen. Die sekundäre Speicherung 610 umfasst beispielsweise ein Festplattenlaufwerk und/oder ein entfernbares Speicherungslaufwerk, das ein Diskettenlaufwerk darstellt, ein Magnetbandlaufwerk, ein Compact-Disk-Laufwerk, ein DVD(digital versatile disk)-Laufwerk, eine Aufzeichnungsvorrichtung und einen USB(universal serial bus)-Flash-Speicher. Das entfernbare Speicherungslaufwerk liest aus und/oder schreibt in eine entfernbare Speicherungseinheit auf eine bekannte Art und Weise.
  • Computerprogramme oder Computersteuerlogik-Algorithmen können in dem Hauptspeicher 604 und/oder der sekundären Speicherung 610 gespeichert sein. Derartige Computerprogramme ermöglichen dem System 600, wenn ausgeführt, verschiedene Funktionen auszuführen. Der Speicher 604, die Speicherung 610 und/oder eine beliebige andere Speicherung sind mögliche Beispiele von computerlesbaren Medien. Datenströme, die Gesten zugeordnet sind, können in dem Hauptspeicher 604 und/oder der sekundären Speicherung 610 gespeichert werden.
  • In einer Ausführungsform kann die Architektur und/oder die Funktionalität der verschiedene vorherigen Figuren im Kontext des zentralen Prozessors 601, des Graphikprozessors 606, einer integrierten Schaltung (nicht gezeigt), die fähig ist, mindestens einen Teil der Fähigkeiten von sowohl dem zentralen Prozessor 601 als auch dem Graphikprozessor 606, eines Chipsatzes (d. h., eine Gruppe von integrierten Schaltungen, die ausgestaltet sind, um als eine Einheit zum Durchführen verwandten Funktionen, usw., zu arbeiten und verkauft zu werde) und/oder jede andere integrierten Schaltung für diese Angelegenheit betrifft, implementiert werden.
  • Die Architektur und/oder Funktionalität der verschiedenen vorherigen Figuren können jedoch im Kontext eines allgemeinen Computersystems, eines Leiterplattensystems, eines Spielkonsolensystems, das Vergnügungszwecken zugehörig ist, eines anwendungsspezifischen Systems und/oder beliebiger anderer gewünschter System weiterhin implementiert werden. Beispielsweise kann das System 600 die Form eines Desktop-Computers, eines Laptop-Computers, eines Servers, einer Workstation, von Spielkonsolen, von eingebetteten Systemen und/oder einer beliebigen anderen Art von Logik annehmen. Das System 600 kann jedoch weiterhin die Form von verschiedenen anderen Vorrichtungen annehmen, die, jedoch nicht beschränkt auf, eine PDA(personal digital assistant)-Vorrichtung, ein Mobiltelefongerät, ein Fernsehgerät, usw. umfassen
  • Ferner kann, obwohl nicht gezeigt, das System 600 mit einem Netzwerk (z. B., einem Telekommunikations-Netzwerk, Lokalbereichsnetzwerk (LAN), drahtlosen Netzwerk, Weitbereichsnetzwerk (WAN), wie beispielsweise dem Internet, Peer-to-Peer-Netzwerk, Kabelnetzwerk oder dergleichen) für Kommunikationszwecke gekoppelt sein.
  • Während verschiedene Ausführungsformen obenstehend beschrieben wurden, versteht es sich, dass sie nur mittels Beispiel und nicht durch Beschränkung präsentiert wurden. Somit sollte die Breite und der Umfang einer bevorzugten Ausführungsform nicht durch beliebige der oben beschriebenen beispielhaften Ausführungsformen beschränkt werden, sondern sollte nur gemäß den folgenden Ansprüchen und ihren Äquivalenten definiert werden.
  • ZITATE ENTHALTEN IN DER BESCHREIBUNG
  • Diese Liste der vom Anmelder aufgeführten Dokumente wurde automatisiert erzeugt und ist ausschließlich zur besseren Information des Lesers aufgenommen. Die Liste ist nicht Bestandteil der deutschen Patent- bzw. Gebrauchsmusteranmeldung. Das DPMA übernimmt keinerlei Haftung für etwaige Fehler oder Auslassungen.
  • Zitierte Nicht-Patentliteratur
    • 11-Norm [0063]
    • IEEE 754-2008 Standard [0097]

Claims (22)

  1. Computerimplementiertes Verfahren zum Erfassen und Klassifizieren von Gesten, umfassend: Empfangen eines unsegmentierter Datenstroms, der einer Handgeste zugeordnet ist; Extrahieren räumlich-zeitliche Merkmale aus dem unsegmentierten Strom durch ein dreidimensionales faltendes neuronales Netzwerk (3D-CNN); und Erzeugen eines Klassenetiketts für die Handgeste basierend auf den räumlich-zeitliche Merkmale.
  2. Verfahren gemäß Anspruch 1, wobei die räumlich-zeitlichen Merkmale lokale räumlich-zeitliche Merkmale sind, die aus einem Rahmen innerhalb des unsegmentierten Datenstroms extrahiert werden, und das Erzeugen die Verarbeitung der lokalen räumlich-zeitlichen Merkmale durch ein rekurrentes neuronales Netzwerk umfasst, um globale räumlich-zeitliche Merkmale basierend auf einer Menge von Rahmen innerhalb des unsegmentierten Datenstroms zu erzeugen.
  3. Verfahren gemäß Anspruch 2, wobei die globalen räumlich-zeitlichen Merkmale von einer Softmax-Funktion verarbeitet werden, um das Klassenetikett zu erzeugen.
  4. Verfahren gemäß Anspruch 2 oder 3, wobei das Erzeugen ferner eine Verarbeitung von globalen räumlich-zeitlichen Merkmalen durch das rekurrente neuronale Netzwerk umfasst, die für eine vorherige Menge von Rahmen innerhalb des unsegmentierten Datenstrom erzeugt wurden.
  5. Verfahren gemäß einem der vorhergehenden Ansprüche, wobei der unsegmentierte Datenstrom eine Folge von Rahmen umfasst, die in Clips von m Rahmen partioniert sind, und ferner ein Erzeugen eines Klassenetiketts für jeweils einen der Clips umfasst.
  6. Verfahren gemäß Anspruch 5, wobei die räumlich-zeitlichen Merkmale lokale räumlich-zeitliche Merkmale umfassen, die jedem Rahmen innerhalb eines ersten Clips der Clips entsprechen, und globale räumlich-zeitliche Merkmale umfassen, die zwei oder mehreren der Clips entsprechen.
  7. Verfahren gemäß einem der vorhergehenden Ansprüche, wobei der unsegmentierte Datenstrom Farbwerte umfasst, die der Handgeste entsprechen.
  8. Verfahren gemäß einem der vorhergehenden Ansprüche, wobei der unsegmentierte Datenstrom Tiefenwerte umfasst, die der Handgeste entsprechen.
  9. Verfahren gemäß einem der vorhergehenden Ansprüche, wobei der unsegmentierte Datenstrom optische Flusswerte umfasst, die der Handgeste entsprechen.
  10. Verfahren gemäß einem der vorhergehenden Ansprüche, wobei der unsegmentierte Datenstrom Stereo-Infrarotpaare und/oder Disparitätswerte umfasst, die der Handgeste entsprechen.
  11. Verfahren gemäß einem der vorhergehenden Ansprüche, wobei das Klassenetikett erzeugt wird, bevor die Handgeste endet.
  12. Verfahren gemäß einem der vorhergehenden Ansprüche, wobei der unsegmentierte Datenstrom aus Farbdaten oder Tiefendaten ist, und ferner umfassend: Empfangen eines zweiten unsegmentierten Stroms von Stereo-Infrarotdaten; Erzeugen eines ersten klassenbedingten Wahrscheinlichkeitsvektors für den unsegmentierten Datenstrom; und Erzeugen eines zweiten klassenbedingten Wahrscheinlichkeitsvektors für den zweiten unsegmentierten Strom.
  13. Verfahren gemäß Anspruch 12, wobei ein Erzeugen der Klassenetikette ein Kombinieren des ersten klassenbedingten Wahrscheinlichkeitsvektors mit dem zweiten klassenbedingten Wahrscheinlichkeitsvektor umfasst.
  14. Verfahren gemäß einem der vorhergehenden Ansprüche, wobei das 3D-CNN unter Verwendung schwach segmentierter Ströme von Daten trainiert wird, die unter Verwendung eines ersten Sensors erfasst wurden, und der unsegmentierte Datenstrom, welcher der Handgeste zugeordnet ist, unter Verwendung eines zweiten Sensors erhalten wird, der ein anderer als der erste Sensor ist.
  15. Verfahren gemäß einem der vorhergehenden Ansprüche, wobei eine CNN-Funktion während des Trainings des 3D-CNN verwendet wird.
  16. Verfahren gemäß einem der vorhergehenden Ansprüche, wobei, während des Trainings des 3D-CNN, das 3D-CNN erste räumlich-zeitliche Merkmale erzeugt und ein Teil der ersten räumlich-zeitliche Merkmale entfernt wird, bevor die ersten räumlich-zeitlichen Merkmale von einem rekurrenten neuronalen Netzwerk verarbeitet werden.
  17. System zum Erfassen und Klassifizieren von Gesten, umfassend: einen Speicher, der konfiguriert ist, um einen unsegmentierten Datenstrom zu speichern, der einer Handgeste zugeordnet ist; und einen Prozessor, der mit dem Speicher gekoppelt und konfiguriert ist, um: den unsegmentierten Datenstrom zu empfangen; räumlich-zeitliche Merkmale aus dem unsegmentierten Strom unter Verwendung eines dreidimensionalen faltenden neuronalen Netzwerks (3D-CNN) zu extrahieren; und ein Klassenetikett für die Handgeste basierend auf den räumlich-zeitlichen Merkmalen zu erzeugen.
  18. System gemäß Anspruch 17, wobei die räumlich-zeitlichen Merkmale lokale räumlich-zeitliche Merkmale sind, die aus einem Rahmen innerhalb des unsegmentierten Datenstroms extrahiert werden, und ferner umfassend ein rekurrentes neuronales Netzwerk, das konfiguriert ist, um die lokalen räumlich-zeitlichen Merkmale zu verarbeiten, um globale räumlich-zeitliche Merkmale basierend auf einer Menge von Rahmen innerhalb des unsegmentierten Datenstroms zu erzeugen.
  19. System gemäß Anspruch 17 oder 18, wobei das System konfiguriert ist, um ein Verfahren durchzuführen, wie in einem der Ansprüche 1 bis 16 erwähnt.
  20. Nicht-transitorische computerlesbare Medien, die Computeranweisungen zum Erfassen und Klassifizieren von Gesten speichern, die, wenn von einem oder mehreren Prozessoren ausgeführt, den einen oder mehrere Prozessoren. veranlassen, die folgenden Schritte durchzuführen: Empfangen eines unsegmentierten Datenstroms, der einer Handgeste zugeordnet ist; Extrahieren räumlich-zeitlicher Merkmale aus dem unsegmentierten Strom durch ein dreidimensionales faltendes neuronales Netzwerk (3D-CNN); und Erzeugen eines Klassenetiketts für die Handgeste basierend auf den räumlich-zeitlichen Merkmalen.
  21. Nicht-transitorisches computerlesbaren Medien gemäß Anspruch 20, wobei die räumlich-zeitlichen Merkmale lokale räumlich-zeitliche Merkmale sind, die aus einem Rahmen innerhalb des unsegmentierten Datenstroms extrahiert werden, und ferner umfassend eine Verarbeitung der lokalen räumlich-zeitlichen Merkmale durch ein rekurrentes neuronales Netzwerk, um globale räumlich-zeitliche Merkmale basierend auf einer Menge von Rahmen innerhalb des unsegmentierten Datenstroms zu erzeugen.
  22. Nicht-transitorische computerlesbare Medien, wobei die Computeranweisungen, wenn von dem einen oder mehreren Prozessoren ausgeführt, den einen oder mehrere Prozessoren veranlassen, ein Verfahren durchzuführen, wie in einem der Ansprüche 1 bis 16 erwähnt ist.
DE102017100609.5A 2016-01-14 2017-01-13 Online-Erfassung und Klassifizierung von dynamischen Gesten mit rekurrenten faltenden neuronalen Netzwerken Pending DE102017100609A1 (de)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201662278924P 2016-01-14 2016-01-14
US62/278,924 2016-01-14
US15/402,128 2017-01-09
US15/402,128 US10157309B2 (en) 2016-01-14 2017-01-09 Online detection and classification of dynamic gestures with recurrent convolutional neural networks

Publications (1)

Publication Number Publication Date
DE102017100609A1 true DE102017100609A1 (de) 2017-07-20

Family

ID=59256078

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102017100609.5A Pending DE102017100609A1 (de) 2016-01-14 2017-01-13 Online-Erfassung und Klassifizierung von dynamischen Gesten mit rekurrenten faltenden neuronalen Netzwerken

Country Status (2)

Country Link
US (1) US10157309B2 (de)
DE (1) DE102017100609A1 (de)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108960171A (zh) * 2018-07-12 2018-12-07 安徽工业大学 一种基于特征迁移学习的转换手势识别到身份识别的方法
CN109993130A (zh) * 2019-04-04 2019-07-09 哈尔滨拓博科技有限公司 一种基于深度图像动态手语语义识别系统及方法
DE102018205050A1 (de) * 2018-04-04 2019-10-10 Zf Friedrichshafen Ag Erkennen eines Beförderungswunsches einer Person für eine Beförderung mit einem Personenbeförderungsfahrzeug
CN110795990A (zh) * 2019-09-11 2020-02-14 中国海洋大学 一种面向水下设备的手势识别方法

Families Citing this family (73)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6271444B2 (ja) * 2012-02-24 2018-01-31 トーマス ジェイ モスカリッロMOSCARILLO, Thomas, J. ジェスチャー認識装置及び方法
US11841920B1 (en) * 2016-02-17 2023-12-12 Ultrahaptics IP Two Limited Machine learning based gesture recognition
US11714880B1 (en) 2016-02-17 2023-08-01 Ultrahaptics IP Two Limited Hand pose estimation for machine learning based gesture recognition
US11854308B1 (en) 2016-02-17 2023-12-26 Ultrahaptics IP Two Limited Hand initialization for machine learning based gesture recognition
US10963775B2 (en) * 2016-09-23 2021-03-30 Samsung Electronics Co., Ltd. Neural network device and method of operating neural network device
US10430661B2 (en) * 2016-12-20 2019-10-01 Adobe Inc. Generating a compact video feature representation in a digital medium environment
KR20180075220A (ko) * 2016-12-26 2018-07-04 삼성전자주식회사 멀티미디어 신호의 프로세싱 방법, 장치 및 시스템
US10490182B1 (en) * 2016-12-29 2019-11-26 Amazon Technologies, Inc. Initializing and learning rate adjustment for rectifier linear unit based artificial neural networks
WO2018133034A1 (en) * 2017-01-20 2018-07-26 Intel Corporation Dynamic emotion recognition in unconstrained scenarios
CN108304755B (zh) 2017-03-08 2021-05-18 腾讯科技(深圳)有限公司 用于图像处理的神经网络模型的训练方法和装置
EP3388981B1 (de) * 2017-04-13 2021-09-01 Nxp B.V. Faltungsverarbeitungssystem
US11102225B2 (en) 2017-04-17 2021-08-24 Splunk Inc. Detecting fraud by correlating user behavior biometrics with other data sources
US11315010B2 (en) 2017-04-17 2022-04-26 Splunk Inc. Neural networks for detecting fraud based on user behavior biometrics
US11372956B2 (en) * 2017-04-17 2022-06-28 Splunk Inc. Multiple input neural networks for detecting fraud
EP3602397A1 (de) * 2017-05-15 2020-02-05 Deepmind Technologies Limited Neuronale netzwerksysteme zur aktionserkennung in videos
US11049018B2 (en) * 2017-06-23 2021-06-29 Nvidia Corporation Transforming convolutional neural networks for visual sequence learning
EP3662474B1 (de) 2017-07-30 2023-02-22 NeuroBlade Ltd. Speicherbasierte verteilte prozessorarchitektur
EP3651055A4 (de) * 2017-08-01 2020-10-21 Huawei Technologies Co., Ltd. Verfahren, gerät und vorrichtung zur gestenerkennung
CN107526438B (zh) * 2017-08-08 2020-11-13 深圳市明日实业有限责任公司 根据举手动作进行跟踪录播的方法、装置及存储装置
US10706840B2 (en) * 2017-08-18 2020-07-07 Google Llc Encoder-decoder models for sequence to sequence mapping
CN107657233A (zh) * 2017-09-28 2018-02-02 东华大学 基于改进型单次多目标检测器的静态手语实时识别方法
CN109726809B (zh) * 2017-10-30 2020-12-08 赛灵思公司 深度学习softmax分类器的硬件实现电路及其控制方法
US10373332B2 (en) 2017-12-08 2019-08-06 Nvidia Corporation Systems and methods for dynamic facial analysis using a recurrent neural network
US10553207B2 (en) * 2017-12-29 2020-02-04 Facebook, Inc. Systems and methods for employing predication in computational models
CN110083448B (zh) * 2018-01-25 2023-08-18 腾讯科技(深圳)有限公司 一种计算资源调整方法、装置以及相关设备
US10346198B1 (en) * 2018-02-12 2019-07-09 Avodah Labs, Inc. Data processing architecture for improved data flow
US10489639B2 (en) 2018-02-12 2019-11-26 Avodah Labs, Inc. Automated sign language translation and communication using multiple input and output modalities
US10304208B1 (en) 2018-02-12 2019-05-28 Avodah Labs, Inc. Automated gesture identification using neural networks
WO2019157344A1 (en) * 2018-02-12 2019-08-15 Avodah Labs, Inc. Real-time gesture recognition method and apparatus
US10289903B1 (en) * 2018-02-12 2019-05-14 Avodah Labs, Inc. Visual sign language translation training device and method
US10782986B2 (en) 2018-04-20 2020-09-22 Facebook, Inc. Assisting users with personalized and contextual communication content
US11676220B2 (en) 2018-04-20 2023-06-13 Meta Platforms, Inc. Processing multimodal user input for assistant systems
US11886473B2 (en) 2018-04-20 2024-01-30 Meta Platforms, Inc. Intent identification for agent matching by assistant systems
US11715042B1 (en) 2018-04-20 2023-08-01 Meta Platforms Technologies, Llc Interpretability of deep reinforcement learning models in assistant systems
US11307880B2 (en) 2018-04-20 2022-04-19 Meta Platforms, Inc. Assisting users with personalized and contextual communication content
US11537838B2 (en) 2018-05-04 2022-12-27 Apple Inc. Scalable neural network processing engine
US11580353B2 (en) 2018-05-04 2023-02-14 Apple Inc. Neural network processor for handling differing datatypes
CN110163048B (zh) * 2018-07-10 2023-06-02 腾讯科技(深圳)有限公司 手部关键点的识别模型训练方法、识别方法及设备
CN109214282B (zh) * 2018-08-01 2019-04-26 中南民族大学 一种基于神经网络的三维手势关键点检测方法和系统
US20200050353A1 (en) * 2018-08-09 2020-02-13 Fuji Xerox Co., Ltd. Robust gesture recognizer for projector-camera interactive displays using deep neural networks with a depth camera
EP3608844A1 (de) * 2018-08-10 2020-02-12 Naver Corporation Verfahren zum trainieren eines crnn und zur semantischen segmentierung eines eingegebenen videos unter verwendung des besagten crnn
KR102235745B1 (ko) * 2018-08-10 2021-04-02 네이버 주식회사 컨볼루션 순환 신경망을 훈련시키는 방법 및 훈련된 컨볼루션 순환 신경망을 사용하는 입력된 비디오의 의미적 세그먼트화 방법
CN109165727A (zh) * 2018-09-04 2019-01-08 成都品果科技有限公司 一种基于循环神经网络的数据预测方法
US10732726B2 (en) * 2018-09-21 2020-08-04 International Business Machines Corporation Gesture recognition using 3D MM-wave radar
US11436482B2 (en) 2018-10-29 2022-09-06 Western Digital Technologies, Inc. Storing neural net works and weights for neural networks
US10929676B2 (en) * 2018-11-01 2021-02-23 Microsoft Technology Licensing, Llc Video recognition using multiple modalities
CN109635843B (zh) * 2018-11-14 2021-06-18 浙江工业大学 一种基于多视角图像的三维物体模型分类方法
CN109858524B (zh) * 2019-01-04 2020-10-16 北京达佳互联信息技术有限公司 手势识别方法、装置、电子设备及存储介质
US10373317B1 (en) * 2019-01-22 2019-08-06 StradVision, Inc. Learning method and learning device for attention-driven image segmentation by using at least one adaptive loss weight map to be used for updating HD maps required to satisfy level 4 of autonomous vehicles and testing method and testing device using the same
CN109902583B (zh) * 2019-01-28 2020-04-24 电子科技大学 一种基于双向独立循环神经网络的骨架手势识别方法
USD912139S1 (en) 2019-01-28 2021-03-02 Avodah, Inc. Integrated dual display sensor
WO2020170986A1 (ja) * 2019-02-21 2020-08-27 ソニー株式会社 情報処理装置、方法及びプログラム
US11126885B2 (en) * 2019-03-21 2021-09-21 Infineon Technologies Ag Character recognition in air-writing based on network of radars
US11580970B2 (en) * 2019-04-05 2023-02-14 Samsung Electronics Co., Ltd. System and method for context-enriched attentive memory network with global and local encoding for dialogue breakdown detection
KR20200130602A (ko) 2019-05-10 2020-11-19 한국전자통신연구원 영상 인식 장치, 영상 인식 장치의 동작 방법, 그리고 영상 인식 장치를 포함하는 컴퓨팅 장치
CN112241673B (zh) * 2019-07-19 2022-11-22 浙江商汤科技开发有限公司 视频处理方法及装置、电子设备和存储介质
CN110414402B (zh) * 2019-07-22 2022-03-25 北京达佳互联信息技术有限公司 一种手势数据标注方法、装置、电子设备及存储介质
US11804050B1 (en) * 2019-10-31 2023-10-31 Nvidia Corporation Processor and system to train machine learning models based on comparing accuracy of model parameters
US11631163B2 (en) * 2020-02-11 2023-04-18 Samsung Electronics Co., Ltd. Mobile data augmentation engine for personalized on-device deep learning system
US11467254B2 (en) * 2020-02-27 2022-10-11 Samsung Electronics Co., Ltd. Method and apparatus of radar-based activity detection
GB202003088D0 (en) * 2020-03-04 2020-04-15 Samsung Electronics Co Ltd Method and system for action recognition
CN113449573A (zh) * 2020-03-27 2021-09-28 华为技术有限公司 一种动态手势识别方法及设备
CN113673280A (zh) * 2020-05-14 2021-11-19 索尼公司 图像处理装置、图像处理方法和计算机可读存储介质
US11687514B2 (en) * 2020-07-15 2023-06-27 International Business Machines Corporation Multimodal table encoding for information retrieval systems
CN112329544A (zh) * 2020-10-13 2021-02-05 香港光云科技有限公司 基于深度信息的手势识别机器学习方法及系统
US11892562B2 (en) * 2020-10-30 2024-02-06 KaiKuTek Inc. Impulse-like gesture recognition method, and impulse-like gesture recognition system
CN112527107B (zh) * 2020-11-30 2023-04-07 京东方科技集团股份有限公司 手势识别方法、装置、电子设备及存储介质
CN112711664B (zh) * 2020-12-31 2022-09-20 山西三友和智慧信息技术股份有限公司 一种基于tcn+lstm的文本情感分类方法
CN112783327B (zh) * 2021-01-29 2022-08-30 中国科学院计算技术研究所 基于表面肌电信号进行手势识别的方法及系统
CN113343198B (zh) * 2021-06-23 2022-12-16 华南理工大学 一种基于视频的随机手势认证方法及系统
WO2023102223A1 (en) * 2021-12-03 2023-06-08 Innopeak Technology, Inc. Cross-coupled multi-task learning for depth mapping and semantic segmentation
CN114926761B (zh) * 2022-05-13 2023-09-05 浪潮卓数大数据产业发展有限公司 一种基于时空平滑特征网络的动作识别方法
WO2022241328A1 (en) * 2022-05-20 2022-11-17 Innopeak Technology, Inc. Hand gesture detection methods and systems with hand shape calibration

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8345984B2 (en) * 2010-01-28 2013-01-01 Nec Laboratories America, Inc. 3D convolutional neural networks for automatic human action recognition
CN104881881B (zh) * 2014-02-27 2018-04-10 株式会社理光 运动对象表示方法及其装置
US20160379109A1 (en) * 2015-06-29 2016-12-29 Microsoft Technology Licensing, Llc Convolutional neural networks on hardware accelerators
US9904874B2 (en) * 2015-11-05 2018-02-27 Microsoft Technology Licensing, Llc Hardware-efficient deep convolutional neural networks

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
11-Norm
IEEE 754-2008 Standard

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE102018205050A1 (de) * 2018-04-04 2019-10-10 Zf Friedrichshafen Ag Erkennen eines Beförderungswunsches einer Person für eine Beförderung mit einem Personenbeförderungsfahrzeug
CN108960171A (zh) * 2018-07-12 2018-12-07 安徽工业大学 一种基于特征迁移学习的转换手势识别到身份识别的方法
CN108960171B (zh) * 2018-07-12 2021-03-02 安徽工业大学 一种基于特征迁移学习的转换手势识别到身份识别的方法
CN109993130A (zh) * 2019-04-04 2019-07-09 哈尔滨拓博科技有限公司 一种基于深度图像动态手语语义识别系统及方法
CN110795990A (zh) * 2019-09-11 2020-02-14 中国海洋大学 一种面向水下设备的手势识别方法
CN110795990B (zh) * 2019-09-11 2022-04-29 中国海洋大学 一种面向水下设备的手势识别方法

Also Published As

Publication number Publication date
US20170206405A1 (en) 2017-07-20
US10157309B2 (en) 2018-12-18

Similar Documents

Publication Publication Date Title
DE102017100609A1 (de) Online-Erfassung und Klassifizierung von dynamischen Gesten mit rekurrenten faltenden neuronalen Netzwerken
DE102017124573A1 (de) Systeme und verfahren zum beschneiden von neuronalen netzen für eine betriebsmitteleffiziente folgerung
DE102018130924A1 (de) Systeme und Verfahren zur dynamischen Gesichtsanalyse mittels eines rekurrenten neuronalen Netzes
DE112020004702T5 (de) Bildgenerierung unter verwendung eines oder mehrerer neuronaler netze
DE102018113845A1 (de) Systeme und Verfahren zum Trainieren von neuronalen Netzwerken mit dünnbesetzten Daten
DE102018126342A1 (de) Transformieren von faltenden neuronalen netzen zum lernen von visuellen sequenzen
DE102019102279A1 (de) Erzeugung von synthetischen Bildern zum Trainieren eines Neuronal-Netzwerkmodells
DE102018108324A1 (de) System und Verfahren zur Schätzung eines optischen Flusses
DE102018117813A1 (de) Zeitlich stabile Datenrekonstruktion mit einem externen rekurrenten neuronalen Netzwerk
DE102020108218A1 (de) Vorrichtung und Verfahren zur Konstruktion von Begrenzungsvolumenhierarchien mit reduzierter Genauigkeit
DE102020124932A1 (de) Vorrichtung und Verfahren zur Echtzeit-Grafikverarbeitung mittels lokaler und cloudbasierter Grafikverarbeitungsbetriebsmittel
DE102021119726A1 (de) Dreidimensionale objektrekonstruktion aus einem video
DE102018121282A1 (de) Differenzierbare rendering-pipeline für inverse graphik
DE102020122943A1 (de) Hardware-basierte beschleunigung eines optischen flusses
DE102018120859A1 (de) Inline-Dateninspektion zur Arbeitslastvereinfachung
DE102019103310A1 (de) Schätzer for einen optimalen betriebspunkt für hardware, die unter einer beschränkung der gemeinsam genutzten leistung/wärme arbeitet
DE102018009315A1 (de) Verfahren tiefgehenden Lernens zum Trennen von Reflexions- und Übertragungsbildern, die an einer halbreflektierenden Oberfläche in einem Computerbild einer Realweltszene sichtbar sind
DE102021120605A1 (de) Effiziente softmax-berechnung
DE102020132557A1 (de) Vorrichtung und verfahren für asynchrones raytracing
DE102020132377A1 (de) Vorrichtung und Verfahren zur Drosselung einer Raytracing-Pipeline
DE102022100360A1 (de) Framework für maschinelles lernen angewandt bei einer halbüberwachten einstellung, um instanzenverfolgung in einer sequenz von bildframes durchzuführen
DE102020131901A1 (de) Vorrichtung und verfahren zum durchführen nicht lokaler mittelwertfilterung unter verwendung eines bewegungsschätzschaltkreises eines grafikprozessors
DE102020132544A1 (de) Vorrichtung und verfahren für doppelpräzisionsstrahlquerung in einer raytracing-pipeline
DE102021105249A1 (de) Mikrotraining zur iterativen verfeinerung eines neuronalen netzes mit wenigen anpassungen
DE102019106996A1 (de) Darstellen eines neuronalen netzwerks unter verwendung von pfaden innerhalb des netzwerks zum verbessern der leistung des neuronalen netzwerks

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R079 Amendment of ipc main class

Free format text: PREVIOUS MAIN CLASS: G06K0009620000

Ipc: G06V0030190000

R016 Response to examination communication