DE102020201787A1 - Erzeugen von blickkorrigierten bildern unter verwendung eines bidirektional trainierten netzwerks - Google Patents

Erzeugen von blickkorrigierten bildern unter verwendung eines bidirektional trainierten netzwerks Download PDF

Info

Publication number
DE102020201787A1
DE102020201787A1 DE102020201787.5A DE102020201787A DE102020201787A1 DE 102020201787 A1 DE102020201787 A1 DE 102020201787A1 DE 102020201787 A DE102020201787 A DE 102020201787A DE 102020201787 A1 DE102020201787 A1 DE 102020201787A1
Authority
DE
Germany
Prior art keywords
image
gaze
vector field
combination
input
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
DE102020201787.5A
Other languages
English (en)
Inventor
Furkan Isikdogan
Timo Gerasimow
Gilad Michael
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.)
Intel Corp
Original Assignee
Intel 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 Intel Corp filed Critical Intel Corp
Publication of DE102020201787A1 publication Critical patent/DE102020201787A1/de
Pending legal-status Critical Current

Links

Images

Classifications

    • 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/10Human or animal bodies, e.g. vehicle occupants or pedestrians; Body parts, e.g. hands
    • G06V40/18Eye characteristics, e.g. of the iris
    • G06V40/19Sensors therefor
    • G06T5/80
    • 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/21Design or setup of recognition systems or techniques; Extraction of features in feature space; Blind source separation
    • G06F18/217Validation; Performance evaluation; Active pattern learning techniques
    • G06T3/18
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T5/00Image enhancement or restoration
    • G06T5/20Image enhancement or restoration by the use of local operators
    • G06T5/60
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/70Determining position or orientation of objects or cameras
    • G06T7/73Determining position or orientation of objects or cameras using feature-based methods
    • 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/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
    • G06V10/00Arrangements for image or video recognition or understanding
    • G06V10/98Detection or correction of errors, e.g. by rescanning the pattern or by human intervention; Evaluation of the quality of the acquired patterns
    • 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/10Human or animal bodies, e.g. vehicle occupants or pedestrians; Body parts, e.g. hands
    • G06V40/18Eye characteristics, e.g. of the iris
    • G06V40/193Preprocessing; Feature extraction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2207/00Indexing scheme for image analysis or image enhancement
    • G06T2207/20Special algorithmic details
    • G06T2207/20081Training; Learning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2207/00Indexing scheme for image analysis or image enhancement
    • G06T2207/20Special algorithmic details
    • G06T2207/20084Artificial neural networks [ANN]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2207/00Indexing scheme for image analysis or image enhancement
    • G06T2207/30Subject of image; Context of image processing
    • G06T2207/30004Biomedical image processing
    • G06T2207/30041Eye; Retina; Ophthalmic
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2210/00Indexing scheme for image generation or computer graphics
    • G06T2210/44Morphing

Abstract

Eine beispielhafte Vorrichtung zum Korrigieren des Blicks in Bildern umfasst einen Bildempfänger zum Empfangen eines Bilds, das ein Auge und einen auf eine Mitte eingestellten Zielwinkel enthält.Die Vorrichtung umfasst auch ein bidirektional trainiertes Convolutional Neural Network (CNN), um das Bild und den Zielwinkel von dem Bildempfänger zu empfangen und ein Vektorfeld und eine Helligkeitskarte auf der Basis des Bilds und des Zielwinkels zu erzeugen. Die Vorrichtung umfasst ferner einen Bildkorrektor, um ein blickkorrigiertes Bild auf der Basis des Vektorfelds und der Helligkeitskarte zu erzeugen.

Description

  • Querverweis auf verwandte Anmeldung
  • Die vorliegende Anmeldung beansprucht Begünstigung aufgrund der Vorläufigen Patentanmeldung der Vereinigten Staaten Serien-Nr. 62/818,255 durch Isikdogan et al. mit dem Titel „ERZEUGEN VON BLICKKORRIGIERTEN BILDERN UNTER VERWENDUNG EINES BIDIREKTIONAL TRAINIERTEN NETZWERKS“ und wurde am 14. März 2019 eingereicht, deren Offenbarung hierin durch diese Referenz einbezogen ist, wie hierin dargelegt.
  • Hintergrund
  • Videokonferenzsysteme ermöglichen es Benutzern, persönliche Interaktionen aus der Ferne durchzuführen. Beispielsweise kann ein Benutzer einen Laptop benutzen, während ein anderer Benutzer möglicherweise eine andere Rechenvorrichtung, wie z. B. ein Smartphone, benutzt.
  • Figurenliste
    • 1 ist ein Blockdiagramm, das ein Beispielsystem zum Erzeugen von blickkorrigierten Bildern unter Verwendung eines bidirektional trainierten Netzwerks darstellt.
    • 2 ist eine schematische Darstellung, die einen Beispielprozess zum bidirektionalen Trainieren eines Modells darstellt, um blickkorrigierte Bilder zu erzeugen.
    • 3 ist ein Flussdiagramm, das ein Beispielverfahren zum Erzeugen von blickkorrigierten Bildern darstellt.
    • 4 ist ein Flussdiagramm, das ein Beispielverfahren zum Prognostizieren eines Eingabeblicks unter Verwendung eines bidirektional trainierten Netzwerks darstellt.
    • 5 ist ein Flussdiagramm, das ein Beispielverfahren zum Trainieren eines Netzwerks darstellt, um Bildeinstellung und Blickprädiktion durchzuführen.
    • 6 ist ein Blockdiagramm, das eine beispielhafte Rechenvorrichtung darstellt, die Bildeinstellung und Blickprädiktion durchführen kann; und
    • 7 ist ein Blockdiagramm, das ein computerlesbares Medium zeigt, das Code zum Trainieren eines Netzwerks zum Durchführen von Bildeinstellung und Blickprädiktion speichert.
  • Die gleichen Zahlen werden in der ganzen Offenbarung und in den Figuren verwendet, um gleiche Komponenten und Merkmale zu referenzieren. Zahlen in der 100er Reihe beziehen sich auf Merkmale, die ursprünglich in 1 zu finden sind; Zahlen in der 200er Reihe beziehen sich auf Merkmale, die ursprünglich in 2 zu finden sind; und so weiter.
  • Beschreibung der Ausführungsformen
  • Wie oben dargelegt, können Videokonferenzsysteme verwendet werden, um persönliche Interaktionen aus der Ferne durchzuführen. Beispielsweise kann ein Benutzer einer Videokamera in einem ersten Gerät zugewandt sein, und ein anderer Benutzer kann einer zweiten Videokamera in einem zweiten Gerät zugewandt sein, um ein Gespräch oder ein Interview zu führen. Es kann jedoch schwierig sein, den Augenkontakt während solcher Interaktionen aufrechtzuerhalten. Beispielsweise mag ein erster Benutzer etwas auf einem Display seines Laptops anschauen, anstatt direkt in die Videokamera zu blicken. Somit kann ein zweiter Benutzer sehen, dass die Augen des ersten Benutzers von dem zweiten Benutzer abgewandt sind.
  • Die vorliegende Offenbarung betrifft im Allgemeinen Techniken zum Korrigieren des Blicks in Bildern. Insbesondere umfassen die hierin beschriebenen Techniken eine Vorrichtung, ein Verfahren und ein System zum Korrigieren des Blicks in Bildern unter Verwendung eines bidirektional trainierten Netzwerks. Eine beispielhafte Vorrichtung umfasst einen Bildempfänger zum Empfangen eines Bilds, das ein Auge und einen auf eine Mitte eingestellten Zielwinkel enthält. Beispielsweise kann ein Gesichtsmerkmaldetektor Augen in einem Bild lokalisieren und ausschneiden und diese in den Bildempfänger einspeisen. Die Vorrichtung umfasst ein bidirektional trainiertes Convolutional Neural Network (CNN), um das Bild und den Zielwinkel von dem Bildempfänger zu empfangen und ein Vektorfeld und eine Helligkeitskarte auf der Basis des Bilds und des Zielwinkels zu erzeugen. Beispielsweise kann das CNN ein Deep Neural Network sein. Das CNN kann dazu trainiert sein, das Bild und den Zielwinkel von dem Bildempfänger zu empfangen und ein Vektorfeld und eine Helligkeitskarte auf der Basis des Bilds und des Zielwinkels zu erzeugen. Die Vorrichtung umfasst ferner einen Bildkorrektor, um das Eingabebild auf der Basis des Vektorfelds zu verzerren und ein blickkorrigiertes Bild zu erzeugen. Der Bildkorrektor hat ferner die Aufgabe, eine lokale Helligkeit des verzerrten Bilds auf der Basis der Helligkeitskarte einzustellen, um ein verbessertes blickkorrigiertes Bild zu erzeugen. In verschiedenen Beispielen gibt der Bildkorrektor Frames aus, die dank der Verwendung eines Satzes von Steuermechanismen einen weichen und natürlich korrigierten Blick haben. Beispielsweise können die Steuermechanismen die Stärke der Korrektur steuern, um unerwünschte Nebenwirkungen von übermäßig korrigiertem Augenkontakt zu verhindern und zeitliche Konsistenz in Live-Anwendungen zu gewährleisten. In einigen Beispielen prognostiziert das CNN ferner eine Eingabeblickrichtung und Größe. Die prognostizierte Eingabeblickrichtung und Größe können zum Beispiel eine Applikation befähigen, die Hintergrundbeleuchtung eines Bildschirms eines Gerätes abzuschwächen, wenn der Benutzer nicht engagiert ist, um die Batterielebensdauer erheblich zu verlängern. In einigen Beispielen kann diese Blickinformation auch Interaktionen ohne Benutzung der Hände ermöglichen.
  • Die hierin beschriebenen Techniken ermöglichen es somit einem ersten Benutzer, Aufgaben durchzuführen und verschiedene Abschnitte eines Displays anzuschauen, während er weiterhin einen zweiten Benutzer direkt anzublicken scheint, der den ersten Benutzer über einen Videostream betrachtet. Beispielsweise mag der erste Benutzer eine Datei suchen oder das Web durchsuchen. Insbesondere unterstützen die hierin beschriebenen Techniken das Umlenken des Blicks von einer beliebigen Richtung auf die Mitte, ohne Rücksicht auf die relativen Kamera- und Anzeigepositionen. Das bidirektional trainierte CNN lernt, einen beliebigen Blick auf die Mitte umzulenken, ohne dass zusätzliche Informationen, wie z. B. ein Umlenkungswinkel, erforderlich sind. Darüber hinaus können die Techniken Blickkorrekturfähigkeit in Echtzeit bereitstellen. Somit können die hierin beschriebenen Techniken die Qualität des Videokonferenzerlebnisses verbessern. In einigen Beispielen können die Techniken auch eine Prognose der Eingabeblickrichtung und Größe ohne zusätzlichen Verarbeitungsaufwand ermöglichen. Darüber hinaus können die Techniken in einer Live-Anwendung verwendet werden, die in Echtzeit auf einer CPU läuft, so dass die Techniken zu einer machbaren Lösung für eine breite Gerätepalette werden. In einigen Beispielen kann der prognostizierte Eingabeblick zur Energieeinsparung verwendet werden, indem ein Bildschirm einer Rechenvorrichtung in Reaktion auf das Erkennen, dass der prognostizierte Eingabeblick außerhalb einer bestimmten Grenze liegt, abgeblendet wird.
  • Außerdem hat das Trainieren eines Modells, ein Vektorfeld und eine Helligkeitskarte auszugeben, wie in 2 und 5 beschrieben, mehrere Vorteile gegenüber dem Trainieren eines generischen Codierer-Decodierer-Modells, das pixelweise dichte Prognosen erzeugt. Erstens können die von dem Modell erzeugten Vektorfelder leicht in einer sinnvollen Weise mit Hilfe von externen Signalen modifiziert werden. Beispielsweise kann ihre Größe vor der Verzerrung skaliert werden, um die Korrekturstärke zu steuern, und sie können für zeitliche Glättung im Laufe der Zeit gemittelt werden. Zweitens verhängt das Prognostizieren eines Bewegungsvektors das Vorhergehende, dass Pixel sich bewegen, anstatt sich in einer uneingeschränkten Weise zu ändern, wenn sich der Blick ändert. Schließlich kann das Trainieren eines Modells zum direkten Ausgeben der Pixelwerte zu Ausgaben führen, denen es an Details mangelt und die auf das mittlere Bild in dem Trainingssatz vorbelastet sind. Dieses Problem tritt auf, wenn ein Modell dazu trainiert ist, den mittleren quadratischen Fehler zwischen eingegebenen und ausgegebenen Pixelwerten zu minimieren.
  • Darüber hinaus kann das Trainieren des Modells unter Verwendung eines kontradiktorischen Verlusts statt dessen dazu beitragen, detailreiche Bilder zu erzeugen, da ein Generative Adversarial Network (GAN) erlernen kann, was in der Ausgabe zu erzeugen wichtig ist. Aber, obwohl Generative Adversarial Networks besser im Rekonstruieren von Details sind, stammen die von GANs erzeugten Details möglicherweise weder aus der Eingabe noch aus dem Ground Truth. Zum Beispiel kann ein Modell, das mit einem kontradiktorischen Verlust ausgebildet ist, Details halluzinieren, wenn die Ausgabe aus uneingeschränkten Pixeln besteht. Dieses Verhalten kann akzeptabel sein oder für viele Anwendungen sogar bevorzugt werden. Diese Art von Flexibilität zum Umlenken des Blicks kann jedoch in einer Videokonferenzeinrichtung unerwünscht sein. Zum Beispiel könnte das Hinzufügen von Wimpern oder anderen Merkmalen, die halluziniert sind, zu unerwünschten Ergebnissen führen. Daher können die hierin beschriebenen Techniken den Gebrauch eines Modells einschließen, das die Position und Helligkeit der existierenden Pixel manipuliert. Dieser Ansatz gewährleistet, dass jegliche Details, die in der Ausgabe vorhanden sind, aus der Eingabe stammen.
  • 1 ist ein Blockdiagramm, das ein Beispielsystem zum Erzeugen von blickkorrigierten Bildern unter Verwendung eines bidirektional trainierten Netzwerks darstellt. Das Beispielsystem wird allgemein mit der Bezugsnummer 100 bezeichnet und kann in der Rechenvorrichtung 600 in 6 unter Verwendung des Verfahrens 300 von 3 implementiert werden.
  • Das Beispielsystem 100 umfasst einen empfangenen Zielwinkel 102 und ein Eingabebild 104. Das System 100 enthält einen Tiler 106, um den empfangenen Zielwinkel zu kacheln. Das System 100 enthält einen Verketter 108, der kommunikativ mit dem Tiler 106 gekoppelt ist. Das System 100 enthält auch vier Paare von Convolution-Blöcken 110 und Pooling-Blöcken 112, die kommunikativ miteinander gekoppelt sind. Das System 100 enthält auch mehrere Up-Convolution-Blöcke 114, die mit Convolution-Blöcken 110 gepaart sind. Das System 100 enthält eine Convolution-Schicht 116, die mit zwei Up-Convolution-Blöcken 114 und einem Sigmoidblock 118 gekoppelt ist. Der Sigmoidblock 118 kann eine Sigmoid-Aktivierungsfunktion auf die empfangene Eingabe anwenden. Die Convolution-Schicht 116 wird als ein Vektorfeld 120 ausgebend gezeigt. Der Sigmoidblock 118 gibt eine Helligkeitskarte 122 aus. Das System 100 enthält einen Warper 124, um das Eingabebild 104 und das Vektorfeld 120 zu empfangen. Das System 100 enthält einen lokalen Helligkeitseinsteller 126, der kommunikativ mit dem Warper 124 gekoppelt ist. Der lokale Helligkeitseinsteller 126 wird als ein Ausgabebild 128 ausgebend gezeigt. Jeder der Convolution-Blöcke 108 des Systems 100 enthält zusätzliche Blöcke, wie durch gestrichelte Linien angegeben. Jeder Convolution-Block 110 enthält drei Gruppen einer Convolution-Schicht 116, die mit einem Batch Normalizer 130 und einer Rectified Linear Unit (ReLU)-Aktivierung 132 gekoppelt sind. Jeder Convolution-Block 110 enthält auch eine Restverbindung 134, die kommunikativ mit den drei Gruppen der Convolution-Schicht 116 gekoppelt ist, die wiederum mit einem Batch Normalizer 130 und einer ReLU-Aktivierung 132 gekoppelt sind. Die Convolution-Blöcke 108 mit Pooling-Blöcken 110 und Up-Convolution-Blöcken 112 können hierin kollektiv als ein neuronales Netzwerk oder ein Convolutional Neural Network bezeichnet werden.
  • Wie in 1 gezeigt, empfängt das System 100, das hierin auch allgemein als ein Eye Contact Correction (ECC)-Netz bezeichnet wird, ein Eingabebild 104, das ein Image-Patch sein kann, dass ein einzelnes Auge und einen Zielwinkel 102 enthält, der ein Zielblickvektor sein kann. In verschiedenen Beispielen wird die Größe der Image-Patches auf 64 × 32 geändert, bevor sie in das Modell eingespeist werden. In einigen Beispielen kann der Zielwinkel 102 ein Zielblickvektor sein, der im kartesischen Raum mit seinen horizontalen und vertikalen Komponenten repräsentiert wird. Der Tiler 106 kann den Zielwinkel 102 kacheln, um die gleichen räumlichen Dimensionen wie das Eingabebild zu haben. Sobald das Training abgeschlossen ist, kann der Zielwinkel 102 auf Null gesetzt werden, um den Blick auf die Mitte umzulenken. Beispielsweise kann die Mitte eine Mitte der Image-Patches sein und kann einem Auge entsprechen, das direkt in die Mitte eines Kameraobjektivs zu blicken scheint. Der Verketter 108 kann die gekachelten Zielwinkel 102 und das Eingabebild verketten. Beispielsweise können die gekachelten Zielwinkel der Größe 64x32x2 mit dem Eingabebild 104 verkettet werden, wobei drei Farbkanäle eine Größe von 64x32x3 haben, um eine Eingabe der Dimensionen 64×32×5 zu erzeugen, die zu dem ersten Convolution-Block 110 und dem ersten Pooling-Block 112 zu senden ist.
  • Der Kern des ECC-Netzsystems 100 ist ein Vollfaltungs-Codierer-Decodierer-Netzwerk, das Sprungverbindungen im U-Net-Stil und kanalweise Verkettungen verwendet, um in den Pooling-Schichten 112 verloren gegangene Details wiederherzustellen. Das Netzwerk wird hierin auch als Modell bezeichnet. In verschiedenen Beispielen verrichtet das Modell den Großteil an Verarbeitung bei geringer Auflösung, um sowohl den Rechenaufwand zu reduzieren, als auch die räumliche Kohärenz der Ergebnisse zu verbessern. In dem Beispiel von 1 umfassen die Convolution-Blöcke 110 des Modells drei tiefenweise trennbare Convolution-Schichten 116 mit einer Restverbindung, die die mittlere Schicht überspringt, wie durch einen Pfeil gezeigt. Die Convolution-Schichten 116 von 1 verwenden auch Batch-Normalisierung 130 und ReLU-Aktivierungen 132.
  • In dem Beispiel von 1 erzeugen der erste Convolution-Block 110 und der erste Pooling-Block 112 eine Ausgabe mit den Dimensionen 32×16×32 zu dem zweiten Convolution-Block 110 und dem zweiten Pooling-Block 112. Der zweite Convolution-Block 110 und der zweite Pooling-Block 112 erzeugen eine Ausgabe mit den Dimensionen 16x8x64 zu einem dritten Convolution-Block 110 und einem dritten Pooling-Block 112. Der dritte Convolution-Block 110 und der dritte Pooling-Block 112 erzeugen eine Ausgabe mit den Dimensionen 8x4x128, die zu einem vierten Convolution-Block 110 und einem vierten Pooling-Block 112 gesendet werden. Der vierte Convolution-Block 110 und der vierte Pooling-Block 112 erzeugen eine Ausgabe mit den Dimensionen 4×2×256, die in einen ersten Up-Convolution-Block 114 und einen fünften Convolution-Block 110 eingespeist wird. Der erste Up-Convolution-Block 114 und der fünfte Convolution-Block 110 erzeugen eine Ausgabe mit den Dimensionen 8×4×128, die in einen zweiten Up-Convolution-Block 114, einen sechsten Convolution-Block 110 und einen zweiten Verketter 108 eingespeist wird. Der zweite Up-Convolution-Block 114, der sechste Convolution-Block 110 und der zweite Verketter 108 erzeugen eine Ausgabe mit den Dimensionen 16x8x64, die in einen siebten Convolution-Block 110 und einen dritten Verketter 108 eingespeist wird. Der siebte Convolution-Block 110 und der dritte Verketter 108 erzeugen eine Ausgabe mit den Dimensionen 16x8x32, die in einen Sigmoidblock 118, eine Convolution-Schicht 116 und zwei Up-Convolution-Schichten 114 eingespeist wird.
  • Die endgültige Ausgabeschicht des Modells umfasst zwei Up-Convolution-Schichten 114, gefolgt von einer Convolution-Schicht 116, die einen 3-Kanal-Ausgang aufweist. Somit erzeugt das Modell ein Vektorfeld und eine Helligkeitskarte. Als ein Beispiel kann das Vektorfeld 120 ein Strömungsfeld mit den Dimensionen 64×32×2 sein, und die Helligkeitskarte 122 kann die Dimensionen 64×32×1 haben. Die Up-Convolution-Schichten 114 können eine 2 × 2-Faltung mit einer Schrittlänge von ½ sein. Zwei dieser Kanäle werden direkt verwendet, um die horizontalen und vertikalen Komponenten eines Vektorfelds zu prognostizieren, das zum Verzerren des Eingabebilds verwendet wird. Der dritte Kanal wird durch eine Sigmoid-Funktion geführt und als Karte verwendet, um die lokale Helligkeit einzustellen. In einigen Beispielen kann die Helligkeitskarte 122 als eine Maske verwendet werden, um das Aussehen der weißen Sclera zu verbessern, nachdem die Eingabebilder zum Umlenken des Blicks verzerrt worden sind. Die Helligkeitskarte 122 kann verwendet werden, um die Augenklarheit zu erhöhen und die Artefakten zu korrigieren, die aus horizontalem Verzerren resultieren, wenn nicht genügend weiße Pixel vorhanden sind, um die weiße Sclera wiederherzustellen.
  • In verschiedenen Beispielen kann auch ein Satz von Steuermechanismen bzw. ein Steuerblock (nicht gezeigt) enthalten sein, um die zeitliche Stabilität zu erhöhen, und eine weiche Steuerung der Korrekturstärke kann ebenfalls enthalten sein, um ein natürliches Videokonferenzerlebnis zu gewährleisten. Der Steuerblock kann verwendet werden, um die Korrekturstärke gegebenenfalls durch Skalieren der ECC-Netz-Ausgabe zu reduzieren. Beispielsweise kann der Steuerblock verwendet werden, um die Augenkontaktkorrektur weich zu deaktivieren, wenn der Benutzer zu weit von der Mitte oder vom Bildschirm entfernt bzw. zu nahe am Bildschirm ist oder blinzelt. In einigen Beispielen kann die Korrektur auch deaktiviert werden, wenn ein Benutzer etwas anderes als die Kamera und das Display anschaut. In einigen Beispielen überwacht der Steuerblock die Gesichtsgröße, den Abstand von der Mitte, die Kopfhaltung, das Augenöffnungsverhältnis und die mittleren und maximalen Bewegungsvektorgrößen, um die gesamte Korrekturstärke zu entscheiden.
    Die Kopfhaltung kann das Überwachen von Nicken, Rollen und Gieren einschließen. In verschiedenen Beispielen können diese Messungen von der Ausgabe desselben Gesichtsmerkmaldetektors abgeleitet werden, der verwendet wird, um die Augen auszurichten und auszuschneiden. Zusätzlich zu den Gesichtsmerkmalen kann der Steuerblock auch mittlere und maximale Bewegungsvektorgrößen berücksichtigen, um die Korrektur für extreme Blicke zu begrenzen. In einigen Beispielen erzeugen sowohl auf Merkmalen als auch Bewegungsvektoren basierende Signale einen Skalierfaktor zwischen 0 und 1. In einigen Beispielen wird eine gesamte Korrekturstärke durch Multiplizieren von Gewichten berechnet, die für jedes Auslösesignal berechnet werden.
  • In verschiedenen Beispielen kann der Satz von Steuermechanismen einen zeitlichen Stabilitätsblock (nicht gezeigt) enthalten, um einen zeitlichen Filter auf die Ausgabe anzuwenden. Beispielsweise filtert der Stabilitätsblock die Bewegungsvektoren, die verwendet werden, um die Eingabebilder unter Verwendung eines Alpha-Beta-Filters zeitlich zu verzerren. Ein Alpha-Beta-Filter, wie hierin verwendet, ist ein Filter, der mit dem Kalman-Filter verwandt ist. Dieser Prozess eliminiert Flimmern und Ausreißer-Bewegungsvektoren in einem eingegebenen Videostream. Bei Verwendung zusammen mit dem Steuerblock gewährleistet der zeitliche Stabilitätsblock, dass die Augenkontaktkorrektur in einer Videokonferenzeinrichtung reibungslos funktioniert.
  • Insgesamt kann der Satz von Steuermechanismen abrupte Änderungen verhindern und gewährleisten, dass der Augenkontaktkorrektor jegliche Korrektur vermeidet, wenn der Benutzer von einem typischen Videokonferenz-Nutzungsfall ablenkt. Folglich kann der Augenkontaktkorrektor reibungsloser arbeiten und peinliche oder unnötige Korrekturen vermeiden.
  • Das Diagramm von 1 ist nicht dazu vorgesehen anzugeben, dass das Beispielsystem 100 alle der in 1 gezeigten Komponenten enthalten soll. Vielmehr kann das Beispielsystem 100 unter Verwendung von weniger oder zusätzlichen Komponenten, die nicht in 1 dargestellt sind (z. B. zusätzliche Zielwinkel, Eingabebilder, Ausgabebilder, Vektorfelder, Helligkeitskarten, Convolution-Blöcke, Convolution-Schichten, Dimensionen usw.), implementiert werden.
  • 2 ist eine schematische Darstellung, die einen Beispielprozess zum bidirektionalen Trainieren eines Modells darstellt, um blickkorrigierte Bilder zu erzeugen. Der Prozess 200 kann in dem nachstehenden Remote-Gerät 638 implementiert werden. Beispielsweise kann der Prozess 200 unter Verwendung des Verfahrens 500 von 5 oder des Trainermoduls 706 des computerlesbaren Mediums 700 von 7 implementiert werden.
  • 2 zeigt einen Zielwinkel 202 und ein Eingabebild 204, die an einem ECC-Netz 206A empfangen werden. Beispielsweise können die ECC-Netze 206A und 206B ein beliebiges Convolutional Neural Network (CNN) wie z. B. das in 1 beschriebene Netzwerk sein. In einigen Beispielen sind die ECC-Netze 206A und 206B Deep Neural Networks. Das ECC-Netz 206A gibt ein Ausgabebild 208 aus, das für den Vergleich mit einem Zielbild 210 verwendet wird, um einen Korrekturverlust 212 zu berechnen. Das Ausgabebild und ein Eingabewinkel 214 werden in das ECC-Netz 206B eingegeben. Das ECC-Netz 206B gibt ein rekonstruiertes Bild 216 aus. Ein Rekonstruktionsverlust wird auf der Basis des rekonstruierten Bilds 216 und des Eingabebilds 204 berechnet. Ein Satz von gemeinsam genutzten Gewichten 220 wird zwischen dem ECC-Netz 206A und dem ECC-Netz 206B geteilt. Beispielsweise können die gemeinsam genutzten Gewichte 220 bei jedem Zyklus, basierend auf dem Korrekturverlust 212 und dem Rekonstruktionsverlust 218, aktualisiert werden.
  • Wie in 2 gezeigt, werden das ECC-Netz 206A und das ECC-Netz 206B in einer bidirektionalen Weise trainiert, um Mapping-Reversibilität durchzusetzen. Bidirektionales Training erwies sich als wertvoll und lieferte eine sichtbare Verbesserung der Ergebnisse. Das Modell erhält zuerst ein Eingabebild und einen Zielwinkel, um den Blick am ECC-Netz 206A umzulenken. In dieser Richtung wird von dem Modell erwartet, den Korrekturverlust zu minimieren. Beispielsweise kann der Korrekturverlust der mittlere quadratische Fehler zwischen dem blickkorrigierten Bild und dem Ground Truth sein. In der anderen Richtung erhält das Modell das blickkorrigierte Ausgabebild und den Eingabewinkel am ECC-Netz 206B, um den Blick zurück zu seinem Ausgangszustand zu lenken. In verschiedenen Beispielen können Verzerrungsartefakte in der Ausgabe eine Wiederherstellung des Originalbilds erschweren. Um dieses Problem anzusprechen, wird ein Rekonstruktionsverlust 218 zwischen dem rekonstruierten Bild 216 und dem ursprünglichen Eingabebild 204 gleichzeitig mit dem Korrekturverlust 212 optimiert.
  • Durch Trainieren des Modells in einer zykluskonsistenten Weise werden die Artefakte reduziert, und natürlichere Blickumlenkungsergebnisse werden erzielt. Trainieren, wobei dem Korrekturverlust 212 und dem Rekonstruktionsverlust 216 während des Trainings das gleiche Gewicht beigemessen wird, kann zu einem Moduskollaps führen, bei dem das Modell schnell zu einer Identitätstransformation konvergiert, um den Rekonstruktionsverlust zu minimieren. Daher wird in einigen Beispielen das Gewicht des Rekonstruktionsverlusts vermindert, um dem Optimierer zu helfen, eine gute Balance zwischen den Verlustfunktionen in beiden Richtungen aufrechtzuerhalten. Als ein Beispiel kann eine Nachjustierung der Gewichte der Verluste in der Gesamtverlustfunktion als Ltotal = 0:8Lc +0:2Lr dem Optimierer helfen, eine gute Balance zwischen den Verlustfunktionen in beiden Richtungen aufrechtzuerhalten.
  • Die Zielwinkel 202 werden während des Trainings verwendet und können während der Inferenz auf Null (0,0) gesetzt werden, da das Modell das Ziel hat, den Blick auf die Mitte umzulenken, um den Augenkontakt zu korrigieren. Das invariante Zielrichtungstraining kann verwendet werden, um die Robustheit des Modells zu verbessern und eine Kalibrierung nach dem Training zu gestatten. Falls beispielsweise der Blick nach der Korrektur auf einem bestimmten Gerät noch immer abgelenkt ist, dann kann der Zielwinkel 202 abgestimmt werden, um diesen Versatz zu kompensieren. Durch Verwendung von Paaren von Eingabebildern 204 mit beliebigen Blicken wurde ebenfalls die Anzahl von möglichen Bildpaaren erhöht. Wird beispielsweise ein Satz von 40 Bildern für eine bestimmte Testperson verwendet, können _40 2 _= 780 eindeutige Paare erzeugt werden, verglichen mit 39 Paaren bei Verwendung eines einzigen Ziels. Dieser Ansatz kann verwendet werden, um die Daten effektiv zu erweitern und das Risiko von Überanpassung zu reduzieren.
  • In einigen Beispielen ist das Modell auf das linke und rechte Auge trainiert, wobei linke Augen in dem synthetischen Datensatz durch Klappen der rechten Augen erzeugt wurden. Dies kann jedoch in einer schlechten horizontalen Korrektur resultieren, da das Modell Überlegungsressourcen zuweisen kann, um zu entscheiden, ob die Eingabe ein linkes oder rechtes Auge ist, um in der Lage zu sein, den Blick horizontal um den richtigen Betrag zu korrigieren. In einigen Beispielen ist das Modell nur auf rechte Augen trainiert, und während der Inferenz auf geklappte linke Augen, um die Modellkapazität für Korrektur besser auszunutzen. Auf diese Weise kann das Modell lernen, den Blick sowohl horizontal als auch vertikal besser zu korrigieren.
  • Als ein Beispiel, um das System zu trainieren und zu validieren, werden zwei unterschiedliche Datensätze vorbereitet: ein synthetischer Datensatz und ein natürlicher Datensatz. Der synthetische Datensatz enthält Bildsätze, innerhalb denen alle Faktoren von Variation außer dem Blick konstant bleiben. Ebenso enthält der natürliche Datensatz Bildpaare, wobei eine Testperson auf einen beliebigen Punkt auf dem Display und dann in die Kamera in jedem Paar blickt. Die ECC-Netze 206A und 206B werden nur unter Verwendung des synthetischen Datensatzes trainiert, und der natürliche Datensatz kann als ein Validierungssatz verwendet werden, um die Modellkonfiguration mit der besten Leistung auszuwählen.
    Die Verwendung eines synthetischen Datensatzes kann Datenschutzfragen und Rechtsfragen vermeiden und kann ein wesentlicher Teil des verwendeten Datensatzes sein.
  • In diesem Beispiel werden realistische Bilder von Augen, die in unterschiedliche Richtungen blicken, programmatisch generiert. Beispielsweise kann ein synthetischer Datengenerator die UnityEyes-Plattform verwenden, die erstmalig von Wood et al. 2016 herausgegeben wurde, um Bilder von Augen zu rendern und rastern, die später durch ein Generative Adversarial Network verfeinert werden. In einigen Beispielen können die Sätze von Augenbildern durch programmatisches Bewegen des Cursors erzeugt werden, um den Blick in beliebige Richtungen zu bewegen. Beispielsweise können die Cursorbewegungen als eine Gaußsche Zufallsvariable mit einem Mittelwert von Null modelliert werden, wobei Null einen zentrierten Blick direkt in die Kamera bedeutet. Um die Vielfalt an Proben in dem Datensatz zu erhöhen, werden die Merkmale der Testperson, die Beleuchtung und Kopfhaltung zwischen unterschiedlichen Sätzen von Bildern randomisiert. Durch Randomisieren der Merkmale der Testperson werden Farbe, Form und Textur des Gesichts, der Haut und der Augen verändert. Durch Verwendung dieses Prozesses werden 3.200 künstliche Testpersonen mit beliebigen Merkmalen erzeugt, was in 128.000 Bildern und nahezu 2,5 Millionen Bildpaaren resultiert.
  • In verschiedenen Beispielen ist der Bewegungsbereich bei der Randomisierung der Kopfhaltung begrenzt, da die Augenkontaktkorrektur eventuell nicht aktiviert wird, wenn der Benutzer eindeutig etwas anderes als die Kamera und das Display anschaut. Daher kann die Kopfhaltung innerhalb der Grenzen eines typischen Anwendungsfalls gehalten werden, in dem es praktisch wäre, die Augenkontaktkorrektur anzuwenden.
  • In einigen Beispielen wird die Renderqualität der synthetischen Bilder randomisiert, um die Zufälligkeit weiter zu erhöhen. Beispielsweise kann die Verwendung einer höheren Renderqualität für viele Anwendungen geeignet sein. Aber der Detailbetrag in Bildern, die mit höchster Qualität gerendert werden, wie z. B. die Reflexion der Außenwelt auf der Oberfläche der Augen, kann je nach dem Typ der Kamera, die in einem gegebenen Anwendungsfall verwendet wird, unrealistisch sein.
  • Nachdem Rasterbilder von der UnityEyes-Plattform erfasst worden sind, können Brillen von unterschiedlichen Größen und Formen in einige der Bildsätze eingeblendet werden, um die Vielfalt des Datensatzes weiter zu erhöhen. In einigen Beispielen werden Brillen von unterschiedlichen Größen und Formen in einige der Bildsätze eingeblendet. Beispielsweise können Brillen unter Verwendung von 25 unterschiedlichen Designs als Vorlagen erzeugt werden, wobei Größe, Farbe und relative Position innerhalb eines visuell realistischen Bereichs randomisiert werden. Nachdem die Brillen eingeblendet worden sind, können die Augen ausgerichtet und ausgeschnitten werden. Beispielsweise können die von der UnityEyes-Plattform bereitgestellten Gesichtsmerkmale verwendet werden, um die Augen auszurichten und auszuschneiden. Diese Merkmale können mit den für natürliche Bilder verwendeten vergleichbar sein. Da die Bilder synthetisch erzeugt werden, können sie genau ausgerichtet werden, bevor die Augen ausgeschnitten werden. Doch die bloße Verwendung eines Begrenzungsrahmens, der die Augenmerkmale einschließt, um jedes Bild zu beschneiden, kann zu kleinen Versätzen zwischen den Bildern in demselben Satz aufgrund von durch den Blick verschobenen Merkmalen führen. Somit wird in einigen Beispielen ein Begrenzungsrahmen erzeugt, der für alle Bilder in einem gegebenen Satz passend ist, und ein einziger Begrenzungsrahmen kann pro Satz verwendet werden. In verschiedenen Beispielen haben die Begrenzungsrahmen ein festes Seitenverhältnis von 2:1 und sind gepolstert, um zweimal so viel Breite zu haben wie die durchschnittliche Breite in einem gegebenen Satz.
  • In verschiedenen Beispielen können alle der Verarbeitungsschritte bis nach dem Ausschneiden, die oben erörtert wurden, als einen Vorverarbeitungsschritt eventuell nur einmal durchgeführt werden. In einigen Beispielen werden Bildpaare während des Trainings mit additivem Rauschen, Helligkeits- und Kontrastverschiebung und Gaußschem Weichzeichner in zufälliger Reihenfolge und Größe spontan verzerrt. Diese Verzerrungen emulieren nicht nur unvollkommene Abbildungsbedingungen, sondern erweitern ferner auch die Vielfalt der Proben in dem Datensatz.
  • In einigen Beispielen, um den Fotorealismus zu steigern, kann ein Generative Adversarial Network verwendet werden. Beispielsweise kann das Generative Adversarial Network eine Zuordnung zwischen synthetischen und realen Proben erlernen und die Verteilung der synthetisch erzeugten Daten näher an die von Kameras erfassten heranbringen. Mit Hilfe des trainierten Generative Adversarial Network können alle Bilder in dem synthetischen Datensatz verfeinert werden, um einen großen Datensatz zu erzeugen, der aus fotorealistischen Bildern besteht, die praktisch perfekte Labels haben.
  • In verschiedenen Beispielen kann ein natürlicher Datensatz gesammelt werden, der Bildpaare enthält, bei denen die Teilnehmer ihren Blick zwischen der Kamera und beliebigen Punkten auf dem Display bewegten. Der Blick der Teilnehmer wird durch Anzeigen von Punkten auf dem Bildschirm gelenkt. In verschiedenen Beispielen können die Testpersonen nach eigenem Belieben an der Datenerhebung teilnehmen, ohne in eine kontrollierte Umgebung eingeladen zu werden, wobei ein Laptop oder Tablet als die Datenerhebungsvorrichtung verwendet wird. Daher können die erfassten Daten repräsentativ für die typischen Anwendungsfälle der vorgeschlagenen Anwendung sein.
  • Um die Datenqualität zu verbessern, kann eine Routine verwendet werden, die Frames automatisch löscht, die höchstwahrscheinlich fehlerhaft waren. Erstens entfernt die Säuberungsroutine die ersten Frames in jeder Sequenz, um die verzögerte Reaktion von den Testpersonen zu kompensieren. Zweitens entfernt die Routine die Frames, bei denen keine Gesichter erkannt werden. Schließlich entfernt die Routine die Frames, bei denen die Testperson blinzelt, wobei die Wimpernschläge von den Abständen zwischen Augenmerkmalen abgeleitet werden. Diese Säuberungsschritte können zu einigen unvollständigen Bildpaaren führen, bei denen entweder das Eingabebild oder das Ground Truth-Bild vollständig entfernt wird. Unvollständige Bildpaare können entfernt werden, um zu gewährleisten, dass alle Paare in dem Datensatz vollständig sind. Als ein Beispiel kann der saubere Datensatz 3.125 Blickpaarsequenzen enthalten, die von über 200 Teilnehmern erfasst wurden.
  • In verschiedenen Beispielen kann der natürliche Datensatz verwendet werden, um sowohl das Modell zu bewerten als auch den synthetischen Datensatz fotorealistischer zu machen. Beispielsweise kann ein Generative Adversarial Network verwendet werden, um synthetische Bilder in natürlich aussehende umzuwandeln. Die Fähigkeit, einen fotorealistischen synthetischen Datensatz zu erzeugen, gestattet das Erzeugen einer enormen Datenmenge mit pixelperfekten Labels bei minimalem Aufwand.
  • Als ein Beispiel wird ein ECC-Netz nur unter Verwendung des synthetischen Datensatzes trainiert, und der natürliche Datensatz wird als ein Validierungssatz verwendet, um die Modellkonfiguration mit der besten Leistung auszusuchen. Nachdem das Training abgeschlossen ist, kann das eingefrorene Modell an dem 2013 herausgegebenen Columbia Gaze Data Set, der ein öffentlicher Benchmark-Datensatz ist, der ursprünglich für Augenkontakterkennung verwendet wurde, getestet werden. Die Verwendung von Daten aus völlig verschiedenen Quellen für Training, Validierung und Testsätze minimierte das Risiko von Überanpassung, einschließlich ihrer impliziten Formen, wie z. B. Informationsverlust aus dem Validierungssatz aufgrund von übermäßigem Hyperparameter-Tuning oder Datensatztendenz.
  • In diesem Beispiel wird relative Reduktion des mittleren quadratischen Fehlers als Leistungsmetrik verwendet. Die Fehlermetrik wird modifiziert, um robuster gegen kleinere Fehlausrichtungen zu sein. Dieser fehlausrichtungstolerante Fehler verwendete das Minimum an Fehlern zwischen Bildpaaren, die innerhalb eines Slacks von 3x3 Pixeln verschoben wurden. Der fehlausrichtungstolerante Fehler kann im Vergleich zu einem starren pixelgenauen quadratischen Fehler mit der visuellen Qualität der Ergebnisse konsistenter sein.
  • In diesem Beispiel kann das Modell unter Verwendung eines Adam-Solvers mit standardmäßigen Dynamikparametern von β1 = 0:9, β2 = 0:999, ∈= 0:1 und einer zyklischen Lernrate zwischen 0,01 und 0,004 für etwa 3 Millionen Iterationen trainiert werden. In einigen Beispielen kann der Fehler bei etwa 2 Millionen Iterationen seinen Minimalwert erreichen. In einigen Beispielen kann das Modell bei dieser Iteration den Fehler um 63 % reduzieren, verglichen mit Identitätstransformation. Das Modell produzierte auch visuell gut aussehende Ergebnisse. In einigen Beispielen kann der Gesamtfehler weiter verringert werden, indem ein Teil des natürlichen Datensatzes für Feinabstimmung und der Rest für Validierung verwendet wird, obwohl eine Feinabstimmung des gesamten Netzwerks auf natürliche Daten zu schneller Überanpassung führen kann. In einigen Deep-Learning-Anwendungen können die ersten Schichten eingefroren und die letzten fein abgestimmt werden, um Überanpassung zu verhindern. Dies ist darauf zurückzuführen, dass die Modelle Gewichte von anderen Modellen übertragen, die ähnliche Daten zum Erreichen unterschiedlicher Aufgaben verwendeten. In diesem Fall ist jedoch die Aufgabe sowohl für den natürlichen als auch den synthetischen Datensatz die gleiche, während die Eingangsdatenverteilung abweichen könnte. Daher werden nur die ersten Schichten als Form einer Domänenanpassung abgestimmt, während der Rest des Netzwerks eingefroren blieb. Durch Verwendung eines Teils der natürlichen Daten für Domänenanpassung wurde der relative Fehler um weitere 2 % verringert.
  • Obwohl Domänenanpassung zu einer Reduzierung des Fehlers beiträgt, kann eine Domänenanpassung auch die Korrekturstärke merklich verringern und die qualitativen Ergebnisse verschlechtern. Trotz der fehlausrichtungstoleranten Fehlermetrik können einige der verbleibenden Fehler an dem natürlichen Datensatz durch die Unterschiede außer dem Blick, wie z. B. Schatten und Reflexionen, bedingt sein. Eine wesentliche Verringerung des Fehlers kann ein Ergebnis einer besseren Blickkorrektur sein, wohingegen kleinere ,Verbesserungen‘ ein Ergebnis von näher am Durchschnitt liegenden Ergebnissen sein können, die andere Faktoren von Variation geglättet haben. Daher kann der natürliche Datensatz als ein Entwicklungssatz verwendet werden, und der Fehler kann als eine Plausibilitätsprüfung anstatt einer Benchmark berechnet werden, während die Ergebnisse kontinuierlich qualitativ überwacht werden. Im Allgemeinen kann das Trainieren des Modells allein auf synthetischen Daten zu visuell besseren Ergebnissen führen. Dies ist wahrscheinlich ein Ergebnis der Auswirkung von perfekten Labels in dem synthetischen Satz, die die Auswirkung einer Datenverteilung näher an dem realen Anwendungsfall in dem natürlichen Satz überwiegen.
  • In einigen Beispielen kann ein Generative Adversarial Network auf der Basis von CycleGAN, erstmalig 2017 herausgegeben, aufgebaut sein, um die Verteilung der synthetischen Daten näher an reale Daten heranzubringen, ohne die Labelqualität zu opfern. CycleGAN verwendet zykluskonsistentes Training, um eine Zuordnung zwischen den beiden Bildsätzen zu erlernen, ohne eine Eins-zu-eins-Entsprechung zu haben. Der Generator in dem trainierten Modell wird verwendet, um ein fotorealistisches Augenbild zu erzeugen, dem eine synthetische Probe gegeben ist. Um die Ähnlichkeit zwischen den synthetischen Eingaben und natürlich aussehenden Ausgaben weiter zu fördern, werden zwei zusätzliche mittlere absolute Fehler (L1)-Verluste zwischen den Eingängen und Ausgängen der Generatoren verwendet. Diese zusätzlichen Verlustfunktionen werden nur auf dem Leuchtdichtekanal definiert, um dem Modell mehr Flexibilität zum Modifizieren der Farbe zu geben, während die Blickrichtung und die allgemeine Struktur des Auges und seiner Umgebung bewahrt werden. Die standardmäßigen Hyperparameter für CycleGAN werden für das Training verwendet, so dass die zusätzlichen L1-Verluste wie die Rekonstruktionsverluste behandelt werden.
  • Der trainierte Generator kann fotorealistische Bilder produzieren, ohne den Blick in der Eingabe zu ändern. Die Ergebnisse haben möglicherweise fast keine Artefakten für die typischen Anwendungsfälle. Selbst in schwierigen Fällen, in denen Blendung vorhanden ist, die Brillenfassung zu nah am Auge ist oder die Szene zu dunkel oder verschwommen ist, können die Artefakten minimal sein.
  • Außerdem kann das Modell bei Verwendung des obigen Trainingsprozesses lernen, den Eingabeblick implizit zu prognostizieren. Beispielsweise kann durch Berechnen des mittleren Bewegungsvektors, basierend auf dem Ausgabevektorfeld, Negieren seiner Richtung und Skalieren seiner Größe zur Anpassung an den Bildschirm, wie in 5 beschrieben, eine Schätzung des Eingabeblicks erzeugt werden. Somit lernt das Modell, im Gegensatz zu einer typischen Multi-Task-Lerneinrichtung, bei der ein Modell trainiert wird, mehrere Aufgaben gleichzeitig durchzuführen, zwei Aufgaben durchzuführen, während es trainiert wird, nur eine davon durchzuführen. In dieser Hinsicht mag das Modell zwar kein ausgewachsener Blickprädiktor sein, sondern es ist vielmehr ein Augenkontaktkorrektor, der lernen kann, wie der Eingabeblick besser funktioniert. Dieses Verhalten kann ein Nebenprodukt beim Trainieren des Modells sein, den Blick umzulenken, ohne einen Umlenkungswinkel bereitzustellen, in dem der Eingabeblickwinkel abgeleitet wird. Der abgeleitete Blick beinhaltet nicht die Kopfhaltung oder den Abstand vom Bildschirm und hängt nur von den Informationen ab, die von Augen in Isolierung extrahiert wurden. Daher ist er möglicherweise nicht so genau wie Systeme, die dedizierte Sensoren oder Modelle verwenden, die speziell für Blickprädiktion ausgebildet sind. Der prognostizierte Blick kann aber dennoch in einer Vielzahl von Anwendungsfällen praktisch zu benutzen sein, in denen der Rechenaufwand ein Anliegen ist, da der zusätzliche Aufwand, d. h. die mittlere Berechnung und Negierung, vernachlässigbar ist. Beispielsweise wäre eine Videokonferenzanwendung, die Augenkontaktkorrektur verwendet, in der Lage, Blickstatistiken mit minimalem Overhead zu berechnen. Diese Blickstatistiken können Informationen über die Effektivität eines Gespräches offenbaren und Feedback für Benutzer bereitstellen. In einigen Beispielen würde die Echtzeit-Blickinformation auch freihändige Interaktionen, wie z. B. Abblenden der Hintergrundbeleuchtung bei Nichtbeschäftigung des Benutzers, ermöglichen. Somit hat die Blickprädiktionseigenschaft unseres Augenkontaktkorrektors das Potenzial, den Batterieverbrauch zu verringern, während er zusätzliche Funktionalität bereitstellt.
  • Das Diagramm von 2 ist nicht dazu vorgesehen anzugeben, dass das Beispielsystem 200 alle der in 2 gezeigten Komponenten enthalten soll. Vielmehr kann der Beispielprozess 200 unter Verwendung von weniger oder zusätzlichen Komponenten, die nicht in 2 dargestellt sind (z. B. zusätzliche Eingabebilder, Zielwinkel, Eingabewinkel, Verluste, rekonstruierte Bilder, Ausgabebilder, Zielbilder usw.), implementiert werden.
  • 3 ist ein Flussdiagramm, das ein Beispielverfahren zum Erzeugen von blickkorrigierten Bildern darstellt. Das Verfahren 300 kann in dem System 100 von 1, dem Prozessor 602 der Rechenvorrichtung 600 von 6 oder dem computerlesbaren Medium 700 von 7 implementiert werden.
  • Bei Block 302 wird ein Eingabebild, das ein Auge enthält, empfangen, und ein Zielwinkel wird auf eine Mitte eingestellt. Beispielsweise kann die Mitte unter Verwendung der Koordinaten (0,0) repräsentiert werden. Beispielsweise kann das Eingabebild ein Image-Patch eines Auges sein. Die Mitte kann der Mitte des Image-Patches entsprechen.
  • Bei Block 304 werden der Zielwinkel und das Eingabebild zu einem trainierten Netzwerk gesendet. Das trainierte Netzwerk kann ein bidirektional trainiertes Convolutional Neural Network sein. Beispielsweise kann das trainierte Netzwerk ein nach dem Verfahren 500 trainiertes Convolutional Neural Network sein.
  • Bei Block 306 werden ein Vektorfeld und eine Helligkeitskarte von dem trainierten Netzwerk empfangen. Beispielsweise kann das Vektorfeld Bewegungsvektoren enthalten, die angeben, wohin Pixel zu bewegen sind. Die Helligkeitskarte kann eine Helligkeitsmaske aufweisen, die einen Helligkeitsmultiplikator für jeden Pixel in dem Eingabebild enthält.
  • Bei Block 308 wird das Eingabebild auf der Basis des Vektorfelds verzerrt, um ein blickkorrigiertes Bild zu erzeugen. In einigen Beispielen kann das Eingabebild auch skaliert werden. Beispielsweise kann das Eingabebild auf eine vorbestimmte Größe skaliert werden. Als ein Beispiel kann die vorbestimmte Größe 64 × 32 Pixel sein.
  • Bei Block 310 wird eine lokale Helligkeit des verzerrten Bilds auf der Basis der Helligkeitskarte angepasst, um ein verbessertes blickkorrigiertes Bild zu erzeugen. Beispielsweise kann die Helligkeitskarte 122 als eine Maske verwendet werden, um das Aussehen der weißen Sclera zu verbessern, nachdem die Eingabebilder zum Umlenken des Blicks verzerrt worden sind.
  • Dieses Prozessflussdiagramm ist nicht dazu vorgesehen anzugeben, dass die Blöcke des Beispielverfahrens 300 in einer bestimmten Reihenfolge auszuführen sind, oder dass alle der Blöcke in jedem Fall einzubeziehen sind. Ferner kann eine beliebige Anzahl von nicht gezeigten zusätzlichen Blöcken, abhängig von den Details der speziellen Implementierung, in das Beispielverfahren 300 einbezogen werden. Beispielsweise kann das Verfahren 300 das Empfangen einer prognostizierten Eingabeblickrichtung und Größe von dem trainierten Netzwerk und das Abblenden der Hintergrundbeleuchtung eines Bildschirms eines Gerätes in Reaktion auf das Erkennen, dass ein Benutzer nicht beschäftigt ist, basierend auf der prognostizierten Eingabeblickrichtung und Größe, einschließen. Beispielsweise können der prognostizierte Eingabeblick und die Größe des Benutzers außerhalb eines vorbestimmten Grenzbereiches liegen. Das Verfahren 300 kann auch das Empfangen einer prognostizierten Eingabeblickrichtung und Größe von dem trainierten Netzwerk und das Verwenden der prognostizierten Eingabeblickrichtung und Größe als Eingabe zum Steuern einer Anwendung einschließen. Beispielsweise kann die prognostizierte Eingabeblickrichtung anstelle, oder zusätzlich zu, einer anderen Benutzereingabe, wie z. B. Tastatur- oder Mauseingaben, unter anderen Eingaben, verwendet werden.
  • 4 ist ein Flussdiagramm, das ein Beispielverfahren zum Prognostizieren eines Eingabeblicks unter Verwendung eines bidirektional trainierten Netzwerks darstellt. Das Verfahren 400 kann in dem System 100 von 1, dem Prozessor 602 und dem Blickprädiktor 636 der Rechenvorrichtung 600 von 6 oder dem Blickprädiktormodul 714 des computerlesbaren Mediums 700 von 7 implementiert werden.
  • Bei Block 402 wird ein Eingabebild, das ein Auge enthält, empfangen, und ein Zielwinkel wird auf Mitte eingestellt. Beispielsweise kann die Mitte durch die Koordinaten (0,0) angegeben werden. Die Mitte kann der Mitte eines Image-Patches des Auges entsprechen.
  • Bei Block 404 werden der Zielwinkel und das Eingabebild zu einem trainierten Netzwerk gesendet. beispielsweise kann das trainierte Netzwerk kann ein bidirektional trainiertes Convolutional Neural Network sein. Als ein Beispiel kann das Netzwerk bidirektional trainiert sein, um Vektorfelder und Helligkeitskarten auf der Basis von simulierten Eingabebildern zu erzeugen, wie in 5 beschrieben.
  • Bei Block 406 wird ein Vektorfeld von dem trainierten Netzwerk empfangen. Beispielsweise kann das Vektorfeld Bewegungsvektoren enthalten, die angeben, wohin Pixel zu bewegen sind.
  • Bei Block 408 wird ein mittlerer Bewegungsvektor auf der Basis des Vektorfelds berechnet. Beispielsweise kann der mittlere Bewegungsvektor durch Mitteln der Bewegungsvektoren des Vektorfelds berechnet werden.
  • Bei Block 410 wird eine Richtung des Bewegungsvektors negiert, und eine Größe des mittleren Bewegungsvektors wird skaliert, um sie an einen Bildschirm anzupassen. Beispielsweise kann der Bildschirm der Bildschirm der Rechenvorrichtung sein, die Videoframes erfasst. Die Rechenvorrichtung kann ein Laptop, ein Tablet oder eine beliebige Vorrichtung sein, die für Videokonferenzen tauglich ist.
  • Bei Block 412 wird ein geschätzter Eingabeblick auf der Basis des skalierten mittleren Bewegungsvektors erzeugt. Beispielsweise kann der geschätzte Eingabeblick sich einem Blick der Augen eines Benutzers annähern, der in dem Eingabebild erfasst wurde.
  • Dieses Prozessflussdiagramm ist nicht dazu vorgesehen anzugeben, dass die Blöcke des Beispielverfahrens 400 in einer bestimmten Reihenfolge auszuführen sind, oder dass alle der Blöcke in jedem Fall einzubeziehen sind. Ferner kann eine beliebige Anzahl von nicht gezeigten zusätzlichen Blöcken, abhängig von den Details der speziellen Implementierung, in das Beispielverfahren 400 einbezogen werden.
  • 5 ist ein Flussdiagramm, das ein Beispielverfahren zum Trainieren eines Netzwerks darstellt, um Bildeinstellung und Blickprädiktion durchzuführen. Das Verfahren 500 kann in dem Remote-Gerät 638 von 6 oder dem computerlesbaren Medium 700 von 7 implementiert werden, und es kann verwendet werden, um das System 100 von 1 oder das bidirektional trainierte CNN 632 von 6 zu trainieren. Das Verfahren 500 kann verwendet werden, um den obigen Prozess 200 von 2 zu implementieren.
  • Bei Block 502 werden ein Zielwinkel und ein Eingabebild an einem ersten Netzwerk empfangen. Beispielsweise kann das Netzwerk ein künstliches neuronales Netzwerk, wie z. B. ein Convolutional Neural Network, sein. In verschiedenen Beispielen kann das Eingabebild eines einer beliebigen Anzahl von simulierten Bildern sein, die auf der Basis eines Proben-Eingabebilds erzeugt wurden. In einigen Beispielen können die simulierten Bilder von einem synthetischen Datensatz stammen, der eingeblendete Brillen von unterschiedlichen Größen und Formen enthält. Beispielsweise können die Brillen in einigen Bildern der simulierten Bilder eingeblendet worden sein, um die Datensatz-Vielfalt zu erhöhen.
  • Bei Block 504 wird ein Ausgabebild auf der Basis des Zielwinkels und des Eingabebilds erzeugt. Beispielsweise kann der Zielwinkel auf eine Mitte eingestellt sein, die durch die Koordinaten (0,0) repräsentiert sein kann.
  • Bei Block 506 werden Gewichte eines Modells berechnet, um Korrekturverlust zwischen dem Ausgabebild und dem Zielbild zu minimieren. Beispielsweise können die Gewichte Parameter des Modells sein, die modifiziert werden können, um die Ausgabe von ein oder mehreren Schichten des Modells zu ändern.
  • Bei Block 508 wird ein rekonstruiertes Bild an einem zweiten Netzwerk auf der Basis des Eingabewinkels, des Ausgabebilds und der angepassten Gewichte erzeugt. Beispielsweise kann das zweite Netzwerk auf dem Modell basieren, das für das erste Netzwerk verwendet wird, dessen Gewichte jedoch bei Block 506 berechnet werden.
  • Bei Block 510 werden Gewichte eines Modells berechnet, um einen Rekonstruktionsverlust zwischen dem rekonstruierten Bild und dem Eingabebild zu minimieren. Beispielsweise kann der Rekonstruktionsverlust die Differenz der Werte der Pixel zwischen dem rekonstruierten Bild und dem Eingabebild sein.
  • Bei Block 512 werden gemeinsam genutzte Gewichte des Modells auf der Basis der berechneten Gewichte angepasst. Beispielsweise können die bei Block 506 berechneten Gewichte des Modells auf der Basis der bei Block 510 berechneten Gewichte angepasst werden. Somit kann das für ein trainiertes Netzwerk zu benutzende Modell bidirektional trainiert werden.
  • Dieses Prozessflussdiagramm ist nicht dazu vorgesehen anzugeben, dass die Blöcke des Beispielverfahrens 500 in einer bestimmten Reihenfolge auszuführen sind, oder dass alle der Blöcke in jedem Fall einzubeziehen sind. Ferner kann eine beliebige Anzahl von nicht gezeigten zusätzlichen Blöcken, abhängig von den Details der speziellen Implementierung, in das Beispielverfahren 500 einbezogen werden. Beispielsweise können zusätzliche Iterationen von bidirektionalem Training über die Blöcke 502-512 durchgeführt werden, bis eine vorbestimmte Anzahl von Iterationen erkannt werden oder eine Konvergenz von Parameterwerten erkannt wird. Beispielsweise kann eine Konvergenz von Parameterwerten erkannt werden, wenn erkannt wird, dass die Änderung der Parameter unter eine Grenzdifferenz in Werten liegt.
  • Nunmehr Bezug nehmend auf 6, wird ein Blockdiagramm gezeigt, das eine beispielhafte Rechenvorrichtung darstellt, die Bildeinstellung und Blickprädiktion durchführen kann. Die Rechenvorrichtung 600 kann zum Beispiel unter anderem ein Laptop-Computer, ein Desktop-Computer, ein Server, ein Tablet-Computer, ein Mobilgerät oder ein tragbares Gerät sein. In einigen Beispielen kann die Rechenvorrichtung 600 eine Smart Watch sein. Die Rechenvorrichtung 600 kann eine zentrale Verarbeitungseinheit (CPU) 602 enthalten, die dazu ausgelegt ist, gespeicherte Anweisungen auszuführen, sowie eine Speichervorrichtung 604, die durch die CPU 602 ausführbare Anweisungen speichert. Die CPU 602 kann über einen Bus 606 mit der Speichervorrichtung 604 gekoppelt sein. Zusätzlich kann die CPU 602 ein Single-Core-Prozessor, ein Multi-Core-Prozessor, ein Computing Cluster oder eine beliebige Anzahl anderer Konfigurationen sein.
    Darüber hinaus kann die Rechenvorrichtung 600 mehr als eine CPU 602 enthalten. In einigen Beispielen kann die CPU 602 ein System-on-Chip (SoC) mit einer Multi-Core-Prozessor-Architektur sein. In einigen Beispielen kann die CPU 602 ein für Bildverarbeitung verwendeter spezialisierter Digitalsignalprozessor (DSP) sein. Die Speichervorrichtung 604 kann einen Direktzugriffsspeicher (RAM), einen Nur-Lese-Speicher (ROM), einen Flash-Speicher oder beliebige andere geeignete Speichersysteme einschließen. Beispielsweise kann die Speichervorrichtung 604 einen dynamischen Direktzugriffsspeicher (DRAM) einschließen.
  • Die Speichervorrichtung 604 kann einen Direktzugriffsspeicher (RAM), einen Nur-Lese-Speicher (ROM), einen Flash-Speicher oder beliebige andere geeignete Speichersysteme einschließen. Beispielsweise kann die Speichervorrichtung 604 einen dynamischen Direktzugriffsspeicher (DRAM) einschließen.
  • Die Rechenvorrichtung 600 kann auch eine Grafikverarbeitungseinheit (GPU) 608 enthalten. Wie gezeigt, kann die CPU 602 durch den Bus 606 mit der GPU 608 gekoppelt sein. Die GPU 608 kann dazu ausgelegt sein, eine beliebige Anzahl von Grafikoperationen innerhalb der Rechenvorrichtung 600 durchzuführen. Beispielsweise kann die GPU 608 dazu ausgelegt sein, Grafikbilder, Grafikframes, Videos oder dergleichen zu rendern oder zu manipulieren, um einem Benutzer der Rechenvorrichtung 600 angezeigt zu werden.
  • Die Speichervorrichtung 604 kann einen Direktzugriffsspeicher (RAM), einen Nur-Lese-Speicher (ROM), einen Flash-Speicher oder beliebige andere geeignete Speichersysteme einschließen. Beispielsweise kann die Speichervorrichtung 604 einen dynamischen Direktzugriffsspeicher (DRAM) einschließen. Die Speichervorrichtung 604 kann Gerätetreiber 610 enthalten, die dazu ausgelegt sind, die Anweisungen auszuführen, um blickkorrigierte Bilder zu erzeugen und den Eingabeblick vorauszuberechnen. Die Gerätetreiber 610 können Software, ein Anwendungsprogramm, Anwendungscode oder dergleichen sein.
  • Die CPU 602 kann ebenfalls durch den Bus 606 mit der Schnittstelle 612 einer Eingabe/Ausgabe (E/A)-Vorrichtung verbunden sein, die dazu ausgelegt ist, die Rechenvorrichtung 600 mit ein oder mehreren E/A-Vorrichtungen 614 zu verbinden. Die E/A-Vorrichtungen 614 können zum Beispiel eine Tastatur und ein Zeigegerät einschließen, wobei das Zeigegerät unter anderem ein Touchpad oder einen Touchscreen einschließen kann. Die E/A-Vorrichtungen 614 können eingebaute Komponenten der Rechenvorrichtung 600 sein, oder sie können Geräte sein, die extern mit der Rechenvorrichtung 600 verbunden sind. In einigen Beispielen kann der Speicher 604 durch direkten Speicherzugriff (DMA) kommunikativ mit den E/A-Vorrichtungen 614 gekoppelt sein.
  • Die CPU 602 kann ebenfalls durch den Bus 606 mit einer Anzeigeschnittstelle 616 verbunden sein, die dazu ausgelegt ist, die Rechenvorrichtung 600 mit einer Anzeigevorrichtung 618 zu verbinden. Die Anzeigevorrichtung 618 kann einen Anzeigebildschirm aufweisen, der eine eingebaute Komponente der Rechenvorrichtung 600 ist. Die Anzeigevorrichtung 618 kann unter anderem auch einen Computermonitor, ein Fernsehgerät oder einen Projektor einschließen, der eine interne Komponente der Rechenvorrichtung ist oder extern mit der Rechenvorrichtung 600 verbunden ist.
  • Die Rechenvorrichtung 600 enthält auch ein Massenspeichergerät 620. Das Massenspeichergerät 620 ist ein physischer Speicher, wie z. B. ein Festplattenlaufwerk, ein optisches Laufwerk, ein USB-Stick, ein Array von Laufwerken, ein Festkörperlaufwerk oder eine beliebige Kombination davon. Das Massenspeichergerät 620 kann auch Remote-Speicherlaufwerke einschließen.
  • Die Rechenvorrichtung 600 kann auch einen Network Interface Controller (NIC) 622 enthalten. Der NIC 622 kann dazu ausgelegt sein, die Rechenvorrichtung 600 durch den Bus 606 mit einem Netzwerk 624 zu verbinden. Das Netzwerk 624 kann unter anderem ein Wide Area Network (WAN), ein Local Area Network (LAN) oder das Internet sein. In einigen Beispielen kann die Vorrichtung durch eine Funktechnologie mit anderen Vorrichtungen kommunizieren. Beispielsweise kann die Vorrichtung über eine WLAN-Verbindung mit anderen Vorrichtungen kommunizieren. In einigen Beispielen kann die Vorrichtung über Bluetooth0 oder eine ähnliche Technologie eine Verbindung mit anderen Vorrichtungen herstellen und mit ihnen kommunizieren.
  • Die Rechenvorrichtung 600 schließt ferner eine Kamera 626 ein. Beispielsweise kann die Kamera 626 ein oder mehrere Bildsensoren enthalten. In einigen Beispielen kann die Kamera 626 einen Prozessor enthalten, um Image-Patches von Augen zu erzeugen.
  • Die Rechenvorrichtung 600 umfasst ferner einen Blickprädiktor und einen Korrektor 628. Beispielsweise können der Blickprädiktor und der Bildkorrektor 628 verwendet werden, um den Eingabeblick vorauszuberechnen und Eingabebilder von Augen zu korrigieren. Das Blickprädiktor und der Bildkorrektor 628 können einen Bildempfänger 630, ein bidirektional trainiertes Convolutional Neural Network (CNN) 632, einen Bildkorrektor 634 und einen Blickprädiktor 636 einschließen. In einigen Beispielen kann jede der Komponenten 630-636 des Blickprädiktors und des Bildkorrektors 628 ein Mikrocontroller, ein integrierter Prozessor oder ein Softwaremodul sein. Der Bildempfänger 630 kann ein Bild empfangen, das ein Auge und einen auf eine Mitte eingestellten Zielwinkel umfasst, und das Bild senden. Das bidirektional trainierte CNN 632 kann das Bild und den Zielwinkel von dem Bildempfänger 630 empfangen und ein Vektorfeld und eine Helligkeitskarte auf der Basis des Bilds und des Zielwinkels erzeugen. In einigen Beispielen ist das bidirektional trainierte CNN 632 auf der Basis eines synthetischen Datensatzes trainiert, der Brillen unterschiedlicher Größen und Formen umfasst, die auf einige Bildsätze überlagert werden, um die Datensatz-Vielfalt zu erhöhen. Der Bildkorrektor 634 kann ein blickkorrigiertes Bild auf der Basis des Vektorfelds und der Helligkeitskarte erzeugen. Beispielsweise kann der Bildkorrektor 634 das Eingabebild auf der Basis des Vektorfelds verzerren, um ein blickkorrigiertes Bild zu erzeugen. Der Bildkorrektor 634 kann auch eine lokale Helligkeit des verzerrten Bilds auf der Basis der Helligkeitskarte einstellen, um ein verbessertes blickkorrigiertes Bild zu erzeugen. Der Blickprädiktor 636 kann eine Blickrichtung und eine Größe auf der Basis des Vektorfelds prognostizieren. Beispielsweise kann der Blickprädiktor 636 einen mittleren Bewegungsvektor auf der Basis des Vektorfelds berechnen. In einigen Beispielen kann der Blickprädiktor 636 eine Richtung eines Bewegungsvektors negieren und eine Größe eines mittleren Bewegungsvektors zum Anpassen an einen Bildschirm skalieren. Der Blickprädiktor 636 kann dann einen geschätzten Eingabeblick auf der Basis des skalierten mittleren Bewegungsvektors erzeugen.
  • Die Rechenvorrichtung 600 kann über das Netzwerk 624 mit einem Remote-Gerät 638 gekoppelt sein. Das Remote-Gerät 638 kann dazu verwendet werden, das bidirektional trainierte CNN 632 zu trainieren. Beispielsweise kann das Remote-Gerät 638 ein CNN aus der Ferne trainieren und das bidirektional trainierte CNN 632 der Rechenvorrichtung 600 bereitstellen.
  • Das Blockdiagramm von 6 ist nicht dazu vorgesehen anzugeben, dass die Rechenvorrichtung 600 alle der in 6 gezeigten Komponenten enthalten soll. Vielmehr kann die Rechenvorrichtung 600 weniger oder zusätzliche Komponenten, die nicht in 6 dargestellt sind, wie z. B. zusätzliche Puffer, zusätzliche Prozessoren und dergleichen, enthalten. Die Rechenvorrichtung 600 kann abhängig von den Details der speziellen Implementierung eine beliebige Anzahl zusätzlicher Komponenten, die nicht in 6 gezeigt sind, enthalten. Beispielsweise kann die Rechenvorrichtung 600 auch ein Stromsparmodul enthalten, um Strom zu sparen, indem ein Bildschirm in Reaktion auf das Erkennen, dass ein Benutzer vom Bildschirm wegschaut, abgeblendet wird. In einigen Beispielen kann die Rechenvorrichtung 600 auch einen visuellen Controller aufweisen, um eine Rechenvorrichtung unter Verwendung von Blickinformationen, die Blickrichtung und Größe enthalten, zu steuern. In verschiedenen Beispielen kann die Rechenvorrichtung 600 auch einen zeitlichen Filter aufweisen, um die Bewegungsvektoren in dem Vektorfeld, die zum Verzerren der Eingabebilder verwendet werden, zeitlich zu filtern.
  • Darüber hinaus kann eine beliebige der Funktionalitäten des Bildempfängers 630, des bidirektional trainierten CNN 632, des Bildkorrektors 634 und des Blickprädiktors 636 teilweise oder ganz in Hardware und/oder in dem Prozessor 602 implementiert sein. Beispielsweise kann die Funktionalität mit einer anwendungsspezifischen integrierten Schaltung, in Logik, die in dem Prozessor 602 implementiert ist, oder einer beliebigen anderen Vorrichtung implementiert sein. Außerdem kann jede der Funktionalitäten der CPU 602 teilweise oder ganz in Hardware und/oder in einem Prozessor implementiert sein. Beispielsweise kann die Funktionalität des Blickprädiktors und Bildkorrektors 628 mit einer anwendungsspezifischen integrierten Schaltung, in Logik, die in einem Prozessor implementiert ist, in Logik, die in einer spezialisierten Grafikverarbeitungseinheit, wie z. B. der GPU 608, implementiert ist, oder in einer beliebigen anderen Vorrichtung implementiert sein.
  • 7 ist ein Blockdiagramm, das ein computerlesbares Medium 700 zeigt, das Code zum Trainieren eines Netzwerks zum Durchführen von Bildeinstellung und Blickprädiktion speichert. Das computerlesbare Medium 700 kann von einem Prozessor 702 über einen Computerbus 704 angesteuert werden. Darüber hinaus kann das computerlesbare Medium 700 Code enthalten, der dazu ausgelegt ist, den Prozessor 702 anzuweisen, die hierin beschriebenen Verfahren durchzuführen. In einigen Ausführungsformen kann das computerlesbare Medium 700 ein nichtflüchtiges computerlesbares Medium sein. In einigen Beispielen kann das computerlesbare Medium 700 ein Speichermedium sein.
  • Die hierin erörterten verschiedenen Softwarekomponenten können auf ein oder mehreren computerlesbaren Medien 700 gespeichert werden, wie in 7 angegeben. Beispielsweise kann ein Trainermodul 706 dazu ausgelegt sein, ein Netzwerk bidirektional zu trainieren, um Vektorfelder und Helligkeitskarten zu erzeugen. Beispielsweise kann das Trainermodul 706 dazu ausgelegt sein, das Netzwerk bidirektional zu trainieren, um Vektorfelder und Helligkeitskarten auf der Basis von simulierten Eingabebildern zu erzeugen. Beispielsweise können die simulierten Eingabebilder überlagerte Brillen unterschiedlicher Größen und Formen enthalten. Als ein Beispiel kann das Trainermodul 706 dazu ausgelegt sein, das Verfahren 500 von 5 durchzuführen. Ein Empfängermodul 708 kann dazu ausgelegt sein, ein Bild zu empfangen, das ein Auge und einen auf eine Mitte eingestellten Zielwinkel umfasst, und das Bild zu einem trainierten Netzwerk zu senden. Ein CNN-Modul 710 kann dazu ausgelegt sein, ein Vektorfeld und eine Helligkeitskarte auf der Basis des Bilds und des Zielwinkels zu erzeugen. Ein Bildkorrektormodul 712 ist dazu ausgelegt, ein blickkorrigiertes Bild auf der Basis des Vektorfelds und der Helligkeitskarte zu erzeugen. Beispielsweise kann das Bildkorrektormodul 712 dazu ausgelegt sein, das Eingabebild auf der Basis des Vektorfelds zu verzerren, um ein blickkorrigiertes Bild zu erzeugen. In einigen Beispielen kann das Bildkorrektormodul 712 dazu ausgelegt sein, das Eingabebild auf eine vorbestimmte Größe zu skalieren. Beispielsweise kann das Bildkorrektormodul 712 dazu ausgelegt sein, eine lokale Helligkeit des verzerrten Bilds auf der Basis der Helligkeitskarte einzustellen, um ein verbessertes blickkorrigiertes Bild zu erzeugen. Ein Blickprädiktormodul 714 kann dazu ausgelegt sein, eine Blickrichtung und Größe auf der Basis des Vektorfelds zu prognostizieren. Beispielsweise kann das Blickprädiktormodul 714 dazu ausgelegt sein, einen mittleren Bewegungsvektor auf der Basis des Vektorfelds zu berechnen. Das Blickprädiktormodul 714 kann dazu ausgelegt sein, eine Richtung eines Bewegungsvektors zu negieren und eine Größe eines mittleren Bewegungsvektors zum Anpassen an einen Bildschirm zu skalieren. Das Blickprädiktormodul 714 kann dazu ausgelegt sein, einen geschätzten Eingabeblick auf der Basis des skalierten mittleren Bewegungsvektors zu erzeugen.
  • Das Blockdiagramm von 7 ist nicht dazu vorgesehen anzugeben, dass das computerlesbare Medium 700 alle der in 7 gezeigten Komponenten enthalten soll. Ferner kann das computerlesbare Medium 700 abhängig von den Details der speziellen Implementierung eine beliebige Anzahl zusätzlicher Komponenten, die nicht in 7 gezeigt sind, enthalten. Beispielsweise kann das computerlesbare Medium 700 auch ein Stromsparmodul enthalten, um Strom zu sparen, indem ein Bildschirm abgeblendet wird, während ein Benutzer wegschaut. In einigen Beispielen kann das computerlesbare Medium 700 auch einen visuellen Controller aufweisen, um eine Rechenvorrichtung unter Verwendung von Blickinformationen, die Blickrichtung und Größe enthalten, zu steuern.
  • BEISPIELE
  • Beispiel 1 ist eine Vorrichtung zum Korrigieren des Blicks in Bildern. Die Vorrichtung weist einen Bildempfänger zum Empfangen eines Bilds auf, das ein Auge und einen auf eine Mitte eingestellten Zielwinkel enthält. Die Vorrichtung umfasst auch ein bidirektional trainiertes Convolutional Neural Network (CNN), um das Bild und den Zielwinkel von dem Bildempfänger zu empfangen und ein Vektorfeld und eine Helligkeitskarte auf der Basis des Bilds und des Zielwinkels zu erzeugen. Die Vorrichtung umfasst ferner einen Bildkorrektor, um ein blickkorrigiertes Bild auf der Basis des Vektorfelds und der Helligkeitskarte zu erzeugen.
  • Beispiel 2 enthält die Vorrichtung von Beispiel 1, einschließlich oder ausschließlich optionaler Merkmale. In diesem Beispiel hat der Bildkorrektor die Aufgabe, das Eingabebild auf der Basis des Vektorfelds zu verzerren, um das blickkorrigierte Bild zu erzeugen.
  • Beispiel 3 enthält die Vorrichtung von einem der Beispiele 1 bis 2, einschließlich oder ausschließlich optionaler Merkmale. In diesem Beispiel hat der Bildkorrektor die Aufgabe, eine lokale Helligkeit des verzerrten Bilds auf der Basis der Helligkeitskarte einzustellen, um ein verbessertes blickkorrigiertes Bild zu erzeugen.
  • Beispiel 4 enthält die Vorrichtung von einem der Beispiele 1 bis 3, einschließlich oder ausschließlich optionaler Merkmale. In diesem Beispiel weist die Vorrichtung einen Blickprädiktor auf, um eine Blickrichtung und eine Größe auf der Basis des Vektorfelds zu prognostizieren.
  • Beispiel 5 enthält die Vorrichtung von einem der Beispiele 1 bis 4, einschließlich oder ausschließlich optionaler Merkmale. In diesem Beispiel weist die Vorrichtung einen Blickprädiktor auf, um einen mittleren Bewegungsvektor auf der Basis des Vektorfelds zu berechnen.
  • Beispiel 6 enthält die Vorrichtung von einem der Beispiele 1 bis 5, einschließlich oder ausschließlich optionaler Merkmale. In diesem Beispiel weist die Vorrichtung einen Blickprädiktor auf, um eine Richtung eines Bewegungsvektors zu negieren und eine Größe eines mittleren Bewegungsvektors zum Anpassen an einen Bildschirm der Vorrichtung zu skalieren.
  • Beispiel 7 enthält die Vorrichtung von einem der Beispiele 1 bis 6, einschließlich oder ausschließlich optionaler Merkmale. In diesem Beispiel weist die Vorrichtung einen Blickprädiktor auf, um einen geschätzten Eingabeblick auf der Basis eines skalierten mittleren Bewegungsvektors zu erzeugen.
  • Beispiel 8 enthält die Vorrichtung von einem der Beispiele 1 bis 7, einschließlich oder ausschließlich optionaler Merkmale. In diesem Beispiel weist die Rechenvorrichtung einen zeitlichen Filter auf, um die Bewegungsvektoren in dem Vektorfeld, die zum Verzerren der Eingabebilder verwendet werden, zeitlich zu filtern.
  • Beispiel 9 enthält die Vorrichtung von einem der Beispiele 1 bis 8, einschließlich oder ausschließlich optionaler Merkmale. In diesem Beispiel weist die Rechenvorrichtung ein Stromsparmodul auf, um Strom zu sparen, indem ein Bildschirm in Reaktion auf das Erkennen, dass ein Benutzer vom Bildschirm wegschaut, abgeblendet wird.
  • Beispiel 10 enthält die Vorrichtung von einem der Beispiele 1 bis 9, einschließlich oder ausschließlich optionaler Merkmale. In diesem Beispiel ist das bidirektional trainierte CNN auf der Basis eines synthetischen Datensatzes trainiert, der Brillen unterschiedlicher Größen und Formen aufweist, die auf einige Bildsätze überlagert werden, um die Datensatz-Vielfalt zu erhöhen.
  • Beispiel 11 ist ein Verfahren zum Korrigieren des Blicks in Bildern. Das Verfahren umfasst das Empfangen, über einen Prozessor, eines Bilds, das ein Auge und einen auf eine Mitte eingestellten Zielwinkel enthält. Das Verfahren umfasst auch das Senden, über den Prozessor, des Zielwinkels und des Eingabebilds zu einem trainierten Netzwerk. Das Verfahren umfasst ferner das Empfangen, über den Prozessor, eines Vektorfelds und einer Helligkeitskarte von dem trainierten Netzwerk. Das Verfahren umfasst ferner auch das Verzerren, über den Prozessor, des Eingabebilds auf der Basis eines Vektorfelds, um ein blickkorrigiertes Bild zu erzeugen.
  • Beispiel 12 enthält das Verfahren von Beispiel 11, einschließlich oder ausschließlich optionaler Merkmale. In diesem Beispiel umfasst das Verfahren bidirektionales Trainieren des Netzwerks, um Vektorfelder und Helligkeitskarten auf der Basis simulierter Eingabebilder zu erzeugen.
  • Beispiel 13 enthält das Verfahren von einem der Beispiele 11 bis 12, einschließlich oder ausschließlich optionaler Merkmale. In diesem Beispiel umfasst das Verfahren bidirektionales Trainieren des Netzwerks auf der Basis simulierter Eingabebilder, die überlagerte Brillen von unterschiedlichen Größen und Formen enthalten.
  • Beispiel 14 enthält das Verfahren von einem der Beispiele 11 bis 13, einschließlich oder ausschließlich optionaler Merkmale. In diesem Beispiel umfasst das Verfahren nach Anspruch 11 das Einstellen, über den Prozessor, einer lokalen Helligkeit des verzerrten Bilds auf der Basis einer Helligkeitskarte, um ein verbessertes blickkorrigiertes Bild zu erzeugen.
  • Beispiel 15 enthält das Verfahren von einem der Beispiele 11 bis 14, einschließlich oder ausschließlich optionaler Merkmale. In diesem Beispiel umfasst das Verfahren das Prognostizieren einer Blickrichtung und Größe auf der Basis des Vektorfelds.
  • Beispiel 16 enthält das Verfahren von einem der Beispiele 11 bis 15, einschließlich oder ausschließlich optionaler Merkmale. In diesem Beispiel umfasst das Verfahren das Berechnen eines mittleren Bewegungsvektors auf der Basis des Vektorfelds, das Negieren einer Richtung eines Bewegungsvektors, das Skalieren einer Größe eines mittleren Bewegungsvektors zum Anpassen an einen Bildschirm und das Erzeugen eines geschätzten Eingabeblicks auf der Basis des skalierten mittleren Bewegungsvektors.
  • Beispiel 17 enthält das Verfahren von einem der Beispiele 11 bis 16, einschließlich oder ausschließlich optionaler Merkmale. In diesem Beispiel umfasst das Verzerren des Eingabebilds ferner das Skalieren des Eingabebilds auf eine vorbestimmte Größe.
  • Beispiel 18 enthält das Verfahren von einem der Beispiele 11 bis 17, einschließlich oder ausschließlich optionaler Merkmale. In diesem Beispiel umfasst das Verfahren das Anwenden eines zeitlichen Filters, um die Bewegungsvektoren in dem Vektorfeld, die zum Verzerren der Eingabebilder verwendet werden, zeitlich zu filtern.
  • Beispiel 19 enthält das Verfahren von einem der Beispiele 11 bis 18, einschließlich oder ausschließlich optionaler Merkmale. In diesem Beispiel umfasst das Verfahren das Empfangen einer prognostizierten Eingabeblickrichtung und Größe von dem trainierten Netzwerk und das Abblenden der Hintergrundbeleuchtung eines Bildschirms eines Gerätes in Reaktion auf das Erkennen, dass ein Benutzer nicht beschäftigt ist, basierend auf der prognostizierten Eingabeblickrichtung und Größe.
  • Beispiel 20 enthält das Verfahren von einem der Beispiele 11 bis 19, einschließlich oder ausschließlich optionaler Merkmale. In diesem Beispiel umfasst das Verfahren das Empfangen einer prognostizierten Eingabeblickrichtung und Größe von dem trainierten Netzwerk und das Verwenden der prognostizierten Eingabeblickrichtung und Größe als Eingabe zum Steuern einer Anwendung.
  • Beispiel 21 enthält mindestens ein computerlesbares Medium zum Korrigieren des Blicks in Bildern, auf dem Anweisungen gespeichert sind, die den Prozessor anweisen, ein Bild zu empfangen, das ein Auge und einen auf eine Mitte eingestellten Zielwinkel enthält. Das computerlesbare Medium enthält auch Anweisungen, die den Prozessor anweisen, ein Vektorfeld und eine Helligkeitskarte auf der Basis des Bilds und des Zielwinkels zu erzeugen. Das computerlesbare Medium enthält ferner Anweisungen, die den Prozessor anweisen, ein blickkorrigiertes Bild auf der Basis des Vektorfelds und der Helligkeitskarte zu erzeugen.
  • Beispiel 22 enthält das computerlesbare Medium von Beispiel 21, einschließlich oder ausschließlich optionaler Merkmale. In diesem Beispiel enthält das computerlesbare Medium Anweisungen zum bidirektionalen Trainieren des Netzwerks, um Vektorfelder und Helligkeitskarten auf der Basis simulierter Eingabebilder zu erzeugen.
  • Beispiel 23 enthält das computerlesbare Medium von einem der Beispiele 21 bis 22, einschließlich oder ausschließlich optionaler Merkmale. In diesem Beispiel enthält das computerlesbare Medium Anweisungen, das Eingabebild auf der Basis des Vektorfelds zu verzerren, um das blickkorrigierte Bild zu erzeugen.
  • Beispiel 24 enthält das computerlesbare Medium von einem der Beispiele 21 bis 23, einschließlich oder ausschließlich optionaler Merkmale. In diesem Beispiel enthält das computerlesbare Medium Anweisungen, eine lokale Helligkeit des verzerrten Bilds auf der Basis der Helligkeitskarte einzustellen, um ein verbessertes blickkorrigiertes Bild zu erzeugen.
  • Beispiel 25 enthält das computerlesbare Medium von einem der Beispiele 21 bis 24, einschließlich oder ausschließlich optionaler Merkmale. In diesem Beispiel enthält das computerlesbare Medium Anweisungen, eine Blickrichtung und Größe auf der Basis des Vektorfelds zu prognostizieren.
  • Beispiel 26 enthält das computerlesbare Medium von einem der Beispiele 21 bis 25, einschließlich oder ausschließlich optionaler Merkmale. In diesem Beispiel enthält das computerlesbare Medium Anweisungen, einen mittleren Bewegungsvektor auf der Basis des Vektorfelds zu berechnen, eine Richtung eines Bewegungsvektors zu negieren, eine Größe eines mittleren Bewegungsvektors zum Anpassen an einen Bildschirm zu skalieren, und einen geschätzten Eingabeblick auf der Basis des skalierten mittleren Bewegungsvektors zu erzeugen.
  • Beispiel 27 enthält das computerlesbare Medium von einem der Beispiele 21 bis 26, einschließlich oder ausschließlich optionaler Merkmale. In diesem Beispiel enthält das computerlesbare Medium Anweisungen, das Eingabebild auf eine vorbestimmte Größe zu skalieren.
  • Beispiel 28 enthält das computerlesbare Medium von einem der Beispiele 21 bis 27, einschließlich oder ausschließlich optionaler Merkmale. In diesem Beispiel enthält das computerlesbare Medium Anweisungen, einen zeitlichen Filter anzuwenden, um die Bewegungsvektoren in dem Vektorfeld, die zum Verzerren der Eingabebilder verwendet werden, zeitlich zu filtern.
  • Beispiel 29 enthält das computerlesbare Medium von einem der Beispiele 21 bis 28, einschließlich oder ausschließlich optionaler Merkmale. In diesem Beispiel enthält das computerlesbare Medium Anweisungen, eine prognostizierte Eingabeblickrichtung und Größe von dem trainierten Netzwerk zu empfangen und die Hintergrundbeleuchtung eines Bildschirms eines Gerätes in Reaktion auf das Erkennen, dass ein Benutzer nicht beschäftigt ist, basierend auf der prognostizierten Eingabeblickrichtung und Größe, abzublenden.
  • Beispiel 30 enthält das computerlesbare Medium von einem der Beispiele 21 bis 29, einschließlich oder ausschließlich optionaler Merkmale. In diesem Beispiel enthält das computerlesbare Medium Anweisungen, eine prognostizierte Eingabeblickrichtung und Größe von dem trainierten Netzwerk zu empfangen und die prognostizierte Eingabeblickrichtung und Größe als Eingabe zum Steuern einer Anwendung zu verwenden.
  • Beispiel 31 ist ein System zum Korrigieren des Blicks in Bildern. Das System weist einen Bildempfänger zum Empfangen eines Bilds auf, das ein Auge und einen auf eine Mitte eingestellten Zielwinkel enthält. Das System umfasst auch ein bidirektional trainiertes Convolutional Neural Network (CNN), um das Bild und den Zielwinkel von dem Bildempfänger zu empfangen und ein Vektorfeld und eine Helligkeitskarte auf der Basis des Bilds und des Zielwinkels zu erzeugen. Das System umfasst ferner einen Bildkorrektor, um ein blickkorrigiertes Bild auf der Basis des Vektorfelds und der Helligkeitskarte zu erzeugen.
  • Beispiel 32 enthält das System von Beispiel 31, einschließlich oder ausschließlich optionaler Merkmale. In diesem Beispiel hat der Bildkorrektor die Aufgabe, das Eingabebild auf der Basis des Vektorfelds zu verzerren, um das blickkorrigierte Bild zu erzeugen.
  • Beispiel 33 enthält das System von einem der Beispiele 31 bis 32, einschließlich oder ausschließlich optionaler Merkmale. In diesem Beispiel hat der Bildkorrektor die Aufgabe, eine lokale Helligkeit des verzerrten Bilds auf der Basis der Helligkeitskarte einzustellen, um ein verbessertes blickkorrigiertes Bild zu erzeugen.
  • Beispiel 34 enthält das System von einem der Beispiele 31 bis 33, einschließlich oder ausschließlich optionaler Merkmale. In diesem Beispiel weist das System einen Blickprädiktor auf, um eine Blickrichtung und eine Größe auf der Basis des Vektorfelds zu prognostizieren.
  • Beispiel 35 enthält das System von einem der Beispiele 31 bis 34, einschließlich oder ausschließlich optionaler Merkmale. In diesem Beispiel weist das System einen Blickprädiktor auf, um einen mittleren Bewegungsvektor auf der Basis des Vektorfelds zu berechnen.
  • Beispiel 36 enthält das System von einem der Beispiele 31 bis 35, einschließlich oder ausschließlich optionaler Merkmale. In diesem Beispiel weist das System einen Blickprädiktor auf, um eine Richtung eines Bewegungsvektors zu negieren und eine Größe eines mittleren Bewegungsvektors zum Anpassen an einen Bildschirm der Vorrichtung zu skalieren.
  • Beispiel 37 enthält das System von einem der Beispiele 31 bis 36, einschließlich oder ausschließlich optionaler Merkmale. In diesem Beispiel weist das System einen Blickprädiktor auf, um einen geschätzten Eingabeblick auf der Basis eines skalierten mittleren Bewegungsvektors zu erzeugen.
  • Beispiel 38 enthält das System von einem der Beispiele 31 bis 37, einschließlich oder ausschließlich optionaler Merkmale. In diesem Beispiel weist das System einen zeitlichen Filter auf, um die Bewegungsvektoren in dem Vektorfeld, die zum Verzerren der Eingabebilder verwendet werden, zeitlich zu filtern.
  • Beispiel 39 enthält das System von einem der Beispiele 31 bis 38, einschließlich oder ausschließlich optionaler Merkmale. In diesem Beispiel weist das System ein Stromsparmodul auf, um Strom zu sparen, indem ein Bildschirm in Reaktion auf das Erkennen, dass ein Benutzer vom Bildschirm wegschaut, abgeblendet wird.
  • Beispiel 40 enthält das System von einem der Beispiele 31 bis 39, einschließlich oder ausschließlich optionaler Merkmale. In diesem Beispiel ist das bidirektional trainierte CNN auf der Basis eines synthetischen Datensatzes trainiert, der Brillen unterschiedlicher Größen und Formen aufweist, die auf einige Bildsätze überlagert werden, um die Datensatz-Vielfalt zu erhöhen.
  • Beispiel 41 ist ein System zum Korrigieren des Blicks in Bildern. Das System weist Mittel zum Empfangen eines Bilds auf, das ein Auge und einen auf eine Mitte eingestellten Zielwinkel enthält. Das System weist auch Mittel zum Erzeugen eines Vektorfelds und einer Helligkeitskarte auf der Basis des Bilds und des Zielwinkels auf. Das System umfasst ferner Mittel zum Erzeugen eines blickkorrigierten Bilds auf der Basis des Vektorfelds und der Helligkeitskarte.
  • Beispiel 42 enthält das System von Beispiel 41, einschließlich oder ausschließlich optionaler Merkmale. In diesem Beispiel haben die Mittel zum Erzeugen des blickkorrigierten Bilds die Aufgabe, das Eingabebild auf der Basis des Vektorfelds zu verzerren, um das blickkorrigierte Bild zu erzeugen.
  • Beispiel 43 enthält das System von einem der Beispiele 41 bis 42, einschließlich oder ausschließlich optionaler Merkmale. In diesem Beispiel haben die Mittel zum Erzeugen des blickkorrigierten Bilds die Aufgabe, eine lokale Helligkeit des verzerrten Bilds auf der Basis der Helligkeitskarte einzustellen, um ein verbessertes blickkorrigiertes Bild zu erzeugen.
  • Beispiel 44 enthält das System von einem der Beispiele 41 bis 43, einschließlich oder ausschließlich optionaler Merkmale. In diesem Beispiel weist das System Mittel auf, um eine Blickrichtung und eine Größe auf der Basis des Vektorfelds zu prognostizieren.
  • Beispiel 45 enthält das System von einem der Beispiele 41 bis 44, einschließlich oder ausschließlich optionaler Merkmale. In diesem Beispiel weist das System Mittel auf, um einen mittleren Bewegungsvektor auf der Basis des Vektorfelds zu berechnen.
  • Beispiel 46 enthält das System von einem der Beispiele 41 bis 45, einschließlich oder ausschließlich optionaler Merkmale. In diesem Beispiel weist das System Mittel auf, um eine Richtung eines Bewegungsvektors zu negieren und eine Größe eines mittleren Bewegungsvektors zum Anpassen an einen Bildschirm der Vorrichtung zu skalieren.
  • Beispiel 47 enthält das System von einem der Beispiele 41 bis 46, einschließlich oder ausschließlich optionaler Merkmale. In diesem Beispiel weist das System Mittel auf, um einen geschätzten Eingabeblick auf der Basis eines skalierten mittleren Bewegungsvektors zu erzeugen.
  • Beispiel 48 enthält das System von einem der Beispiele 41 bis 47, einschließlich oder ausschließlich optionaler Merkmale. In diesem Beispiel weist das System Mittel auf, um die Bewegungsvektoren in dem Vektorfeld, die zum Verzerren der Eingabebilder verwendet werden, zeitlich zu filtern.
  • Beispiel 49 enthält das System von einem der Beispiele 41 bis 48, einschließlich oder ausschließlich optionaler Merkmale. In diesem Beispiel weist das System Mittel auf, um Strom zu sparen, indem ein Bildschirm in Reaktion auf das Erkennen, dass ein Benutzer vom Bildschirm wegschaut, abgeblendet wird.
  • Beispiel 50 enthält das System von einem der Beispiele 41 bis 49, einschließlich oder ausschließlich optionaler Merkmale. In diesem Beispiel umfassen die Mittel zum Erzeugen des Vektorfelds und der Helligkeitskarte ein bidirektional trainiertes CNN, das auf der Basis eines synthetischen Datensatzes trainiert ist, der Brillen von unterschiedlichen Größen und Formen enthält, die auf einige Bildsätze überlagert werden, um die Datensatz-Vielfalt zu erhöhen.
  • Nicht alle Komponenten, Merkmale, Strukturen, Eigenschaften usw., die hierin beschrieben und dargestellt sind, müssen in einen bestimmten Aspekt oder Aspekte einbezogen werden. Falls die Spezifikation angibt, dass zum Beispiel eine Komponente, ein Merkmal, eine Struktur oder eine Eigenschaft einbezogen werden „soll“, „sollte“, „kann“ oder „könnte“, ist es nicht erforderlich, die bestimmte Komponente, das Merkmal, die Struktur oder die Eigenschaft einzubeziehen. Falls die Spezifikation oder der Anspruch auf „ein“ Element verweist, bedeutet das nicht, dass nur ein Exemplar des Elements vorhanden ist. Falls die Spezifikationen oder Ansprüche auf „ein zusätzliches“ Element verweisen, schließt das nicht aus, dass mehr als ein Exemplar des zusätzlichen Elements vorhanden sind.
  • Es sei darauf hingewiesen, dass, obwohl einige Aspekte in Bezug auf bestimmte Implementierungen beschrieben worden sind, andere Implementierungen gemäß einigen Aspekten möglich sind. Außerdem ist es nicht notwendig, die Anordnung und/oder Reihenfolge von Schaltungselementen oder anderen in den Zeichnungen dargestellten und/oder hierin beschriebenen Merkmalen in der speziellen dargestellten und beschriebenen Weise anzuordnen. Viele andere Anordnungen sind gemäß einigen Aspekten möglich.
  • In jedem in einer Figur gezeigten System können die Elemente in manchen Fällen jeweils die gleiche Bezugsnummer oder eine unterschiedliche Bezugsnummer haben, um anzudeuten, dass die repräsentierten Elemente unterschiedlich und/oder ähnlich sein könnten. Ein Element kann jedoch flexibel genug sein, um unterschiedliche Implementierungen zu haben und mit einigen oder allen der gezeigten oder hierin beschriebenen Systeme zu funktionieren. Die in den Figuren gezeigten verschiedenen Elemente können gleich oder unterschiedlich sein. Welches davon als erstes Element, und welches als zweites Element bezeichnet wird, ist willkürlich.
  • Es versteht sich, dass Besonderheiten in den vorgenannten Beispielen in ein oder mehreren Aspekten überall verwendet werden können. Zum Beispiel können alle optionalen Merkmale der oben beschriebenen Rechenvorrichtung auch in Bezug auf eines der Verfahren oder das hierin beschriebene computerlesbare Medium implementiert werden. Darüber hinaus, obwohl Flussdiagramme und/oder Zustandsdiagramme zum Beschreiben von Aspekten hierin verwendet worden sein können, sind die Techniken nicht auf diese Diagramme oder auf entsprechende Beschreibungen hierin beschränkt. Zum Beispiel muss der Fluss nicht unbedingt durch jeden dargestellten Kasten oder Zustand in genau derselben Reihenfolge, wie hierin dargestellt und beschrieben, gehen.
  • Die vorliegenden Techniken sind nicht auf die hierin aufgelisteten speziellen Details beschränkt. In der Tat wird der Fachmann, der den Nutzen dieser Offenbarung hat, verstehen, dass viele andere Variationen von der vorangegangenen Beschreibung und den Zeichnungen innerhalb des Umfangs der vorliegenden Techniken gemacht werden können. Dementsprechend sind es die folgenden Ansprüche, einschließlich etwaiger Ergänzungen derselben, die den Umfang der vorliegenden Techniken definieren.

Claims (25)

  1. Vorrichtung (628) zum Korrigieren des Blicks in Bildern, Folgendes umfassend: einen Bildempfänger (630) zum Empfangen eines Bilds, das ein Auge und einen auf eine Mitte eingestellten Zielwinkel umfasst; ein bidirektional trainiertes Convolutional Neural Network (CNN) (632), um das Bild und den Zielwinkel von dem Bildempfänger zu empfangen und ein Vektorfeld und eine Helligkeitskarte auf der Basis des Bilds und des Zielwinkels zu erzeugen; und einen Bildkorrektor (634), um ein blickkorrigiertes Bild auf der Basis des Vektorfelds und der Helligkeitskarte zu erzeugen.
  2. Vorrichtung nach Anspruch 1, wobei der Bildkorrektor die Aufgabe hat, das Eingabebild auf der Basis des Vektorfelds zu verzerren, um das blickkorrigierte Bild zu erzeugen.
  3. Vorrichtung nach einer beliebigen Kombination der Ansprüche 1-2, wobei der Bildkorrektor die Aufgabe hat, eine lokale Helligkeit des verzerrten Bilds auf der Basis der Helligkeitskarte einzustellen, um ein verbessertes blickkorrigiertes Bild zu erzeugen.
  4. Vorrichtung nach einer beliebigen Kombination der Ansprüche 1-3, die einen Blickprädiktor (636) umfasst, um eine Blickrichtung und eine Größe auf der Basis des Vektorfelds zu prognostizieren.
  5. Vorrichtung nach einer beliebigen Kombination der Ansprüche 1-4, die einen Blickprädiktor (636) umfasst, um einen mittleren Bewegungsvektor auf der Basis des Vektorfelds zu berechnen.
  6. Vorrichtung nach einer beliebigen Kombination der Ansprüche 1-5, die einen Blickprädiktor (636) umfasst, um eine Richtung eines Bewegungsvektors zu negieren und eine Größe eines mittleren Bewegungsvektors zum Anpassen an einen Bildschirm der Vorrichtung zu skalieren.
  7. Vorrichtung nach einer beliebigen Kombination der Ansprüche 1-6, die einen Blickprädiktor (636) umfasst, um einen geschätzten Eingabeblick auf der Basis eines skalierten mittleren Bewegungsvektors zu erzeugen.
  8. Vorrichtung nach einer beliebigen Kombination der Ansprüche 1-7, die einen zeitlichen Filter aufweist, um die Bewegungsvektoren in dem Vektorfeld, die zum Verzerren der Eingabebilder verwendet werden, zeitlich zu filtern.
  9. Vorrichtung nach einer beliebigen Kombination der Ansprüche 1-8, die ein Stromsparmodul aufweist, um Strom zu sparen, indem ein Bildschirm in Reaktion auf das Erkennen, dass ein Benutzer vom Bildschirm wegschaut, abgeblendet wird.
  10. Vorrichtung nach einer beliebigen Kombination der Ansprüche 1-9, wobei das bidirektional trainierte CNN auf der Basis eines synthetischen Datensatzes trainiert ist, der Brillen unterschiedlicher Größen und Formen umfasst, die auf einige Bildsätze überlagert werden, um die Datensatz-Vielfalt zu erhöhen.
  11. Verfahren (300) zum Korrigieren des Blicks in Bildern, Folgendes umfassend: Empfangen (302), über einen Prozessor, eines Bilds, das ein Auge und einen auf eine Mitte eingestellten Zielwinkel enthält; Senden (304), über den Prozessor, des Zielwinkels und des Eingabebilds zu einem trainierten Netzwerk; Empfangen (306), über den Prozessor, eines Vektorfelds und einer Helligkeitskarte von dem trainierten Netzwerk; und Verzerren (308), über den Prozessor, des Eingabebilds auf der Basis eines Vektorfelds, um ein blickkorrigiertes Bild zu erzeugen.
  12. Verfahren nach Anspruch 11, das bidirektionales Trainieren des Netzwerks umfasst, um Vektorfelder und Helligkeitskarten auf der Basis simulierter Eingabebilder zu erzeugen.
  13. Verfahren nach einer beliebigen Kombination der Ansprüche 11-12, das bidirektionales Trainieren des Netzwerks (500) auf der Basis simulierter Eingabebilder umfasst, die überlagerte Brillen von unterschiedlichen Größen und Formen enthalten.
  14. Verfahren nach einer beliebigen Kombination der Ansprüche 11-13, Anpassen (310), über den Prozessor, einer lokalen Helligkeit des verzerrten Bilds auf der Basis der Helligkeitskarte, um ein verbessertes blickkorrigiertes Bild zu erzeugen.
  15. Verfahren nach einer beliebigen Kombination der Ansprüche 11-14, das Prognostizieren einer Blickrichtung und Größe auf der Basis des Vektorfelds umfasst.
  16. System zum Korrigieren des Blicks in Bildern, Folgendes umfassend: Mittel (630) zum Empfangen eines Bilds, das ein Auge und einen auf eine Mitte eingestellten Zielwinkel umfasst; Mittel (632) zum Erzeugen eines Vektorfelds und einer Helligkeitskarte auf der Basis des Bilds und des Zielwinkels; und Mittel (634) zum Erzeugen eines blickkorrigierten Bilds auf der Basis des Vektorfelds und der Helligkeitskarte.
  17. System nach Anspruch 16, wobei die Mittel zum Erzeugen des blickkorrigierten Bilds die Aufgabe haben, das Eingabebild auf der Basis des Vektorfelds zu verzerren, um das blickkorrigierte Bild zu erzeugen.
  18. System nach einer beliebigen Kombination der Ansprüche 16-17, wobei die Mittel zum Erzeugen des blickkorrigierten Bilds die Aufgabe haben, eine lokale Helligkeit des verzerrten Bilds auf der Basis der Helligkeitskarte einzustellen, um ein verbessertes blickkorrigiertes Bild zu erzeugen.
  19. System nach einer beliebigen Kombination der Ansprüche 16-18, das Mittel (636) umfasst, um eine Blickrichtung und eine Größe auf der Basis des Vektorfelds zu prognostizieren.
  20. System nach einer beliebigen Kombination der Ansprüche 16-19, das Mittel (636) umfasst, um einen mittleren Bewegungsvektor auf der Basis des Vektorfelds zu berechnen.
  21. System nach einer beliebigen Kombination der Ansprüche 16-20, das Mittel (636) umfasst, um eine Richtung eines Bewegungsvektors zu negieren und eine Größe eines mittleren Bewegungsvektors zum Anpassen an einen Bildschirm der Vorrichtung zu skalieren.
  22. System nach einer beliebigen Kombination der Ansprüche 16-21, das Mittel (636) umfasst, um einen geschätzten Eingabeblick auf der Basis eines skalierten mittleren Bewegungsvektors zu erzeugen.
  23. System nach einer beliebigen Kombination der Ansprüche 16-22, das Mittel umfasst, um die Bewegungsvektoren in dem Vektorfeld, die zum Verzerren der Eingabebilder verwendet werden, zeitlich zu filtern.
  24. System nach einer beliebigen Kombination der Ansprüche 16-23, das Mittel umfasst, um Strom zu sparen, indem ein Bildschirm in Reaktion auf das Erkennen, dass ein Benutzer vom Bildschirm wegschaut, abgeblendet wird.
  25. System nach einer beliebigen Kombination der Ansprüche 16-24, wobei die Mittel zum Erzeugen des Vektorfelds und der Helligkeitskarte ein bidirektional trainiertes CNN umfassen, das auf der Basis eines synthetischen Datensatzes trainiert ist, der Brillen von unterschiedlichen Größen und Formen enthält, die auf einige Bildsätze überlagert werden, um die Datensatz-Vielfalt zu erhöhen.
DE102020201787.5A 2019-03-14 2020-02-13 Erzeugen von blickkorrigierten bildern unter verwendung eines bidirektional trainierten netzwerks Pending DE102020201787A1 (de)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201962818255P 2019-03-14 2019-03-14
US62/818,255 2019-03-14
US16/412,994 US11024002B2 (en) 2019-03-14 2019-05-15 Generating gaze corrected images using bidirectionally trained network
US16/412,994 2019-05-15

Publications (1)

Publication Number Publication Date
DE102020201787A1 true DE102020201787A1 (de) 2020-09-17

Family

ID=67685992

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102020201787.5A Pending DE102020201787A1 (de) 2019-03-14 2020-02-13 Erzeugen von blickkorrigierten bildern unter verwendung eines bidirektional trainierten netzwerks

Country Status (3)

Country Link
US (3) US11024002B2 (de)
CN (1) CN111695399A (de)
DE (1) DE102020201787A1 (de)

Families Citing this family (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11024002B2 (en) 2019-03-14 2021-06-01 Intel Corporation Generating gaze corrected images using bidirectionally trained network
US11321865B1 (en) * 2019-03-15 2022-05-03 Nvidia Corporation Synthetic infrared image generation for machine learning of gaze estimation
US11067786B2 (en) * 2019-06-07 2021-07-20 Leica Microsystems Inc. Artifact regulation methods in deep model training for image transformation
CN110648293B (zh) * 2019-09-19 2022-06-24 北京百度网讯科技有限公司 图像修复方法、装置及电子设备
US20210097644A1 (en) * 2019-09-30 2021-04-01 Microsoft Technology Licensing, Llc Gaze adjustment and enhancement for eye images
CN111147924B (zh) * 2019-12-24 2022-10-04 书行科技(北京)有限公司 一种视频增强处理方法及系统
US11687778B2 (en) 2020-01-06 2023-06-27 The Research Foundation For The State University Of New York Fakecatcher: detection of synthetic portrait videos using biological signals
CN111260586B (zh) * 2020-01-20 2023-07-04 北京百度网讯科技有限公司 扭曲文档图像的矫正方法和装置
US11625559B2 (en) 2020-03-27 2023-04-11 Intel Corporation Attenuating visual artifacts of image processing systems using adversarial networks on-the-fly
US20220053168A1 (en) * 2020-05-12 2022-02-17 True Meeting Inc. Method and system for virtual 3d communications having multiple participants per camera
CN112133311B (zh) * 2020-09-18 2023-01-17 科大讯飞股份有限公司 说话人识别方法、相关设备及可读存储介质
US11647158B2 (en) * 2020-10-30 2023-05-09 Microsoft Technology Licensing, Llc Eye gaze adjustment
CN112733794B (zh) * 2021-01-22 2021-10-15 腾讯科技(深圳)有限公司 人脸图像的视线矫正方法、装置、设备及存储介质
US11947717B2 (en) * 2021-01-22 2024-04-02 Blink Technologies Inc. Gaze estimation systems and methods using relative points of regard
CN112733797B (zh) * 2021-01-22 2021-10-08 腾讯科技(深圳)有限公司 人脸图像的视线矫正方法、装置、设备及存储介质
JP7219787B2 (ja) * 2021-04-09 2023-02-08 本田技研工業株式会社 情報処理装置、情報処理方法、学習方法、およびプログラム
US11871147B2 (en) 2021-06-09 2024-01-09 Microsoft Technology Licensing, Llc Adjusting participant gaze in video conferences
CN113343931A (zh) * 2021-07-05 2021-09-03 Oppo广东移动通信有限公司 生成对抗网络的训练方法、图像视线校正方法与装置
US20230045610A1 (en) * 2021-08-03 2023-02-09 Dell Products, L.P. Eye contact correction in a communication or collaboration session using a platform framework
WO2023035007A1 (en) * 2021-09-06 2023-03-09 Kickback Space Inc. Image analysis and gaze redirection using characteristics of the eye
CN116472575A (zh) * 2021-11-18 2023-07-21 瑞仪光电(苏州)有限公司 显示装置、电流校正值的建立方法与电流校正系统
WO2023131932A1 (en) * 2022-01-10 2023-07-13 3M Innovative Properties Company Artificial intelligence techniques for generating a predicted future image of microorganism growth
WO2024085905A1 (en) * 2022-10-20 2024-04-25 Google Llc Gaze tracking for augmented reality devices
CN115393230B (zh) * 2022-10-28 2023-02-03 武汉楚精灵医疗科技有限公司 超声内镜图像标准化方法、装置及其相关装置

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130094866A1 (en) * 2011-10-12 2013-04-18 Research In Motion Limited Wearable accessory for monitoring whether user is looking at portable electronic device
US9993335B2 (en) * 2014-01-08 2018-06-12 Spy Eye, Llc Variable resolution eye mounted displays
CN113358045A (zh) * 2015-11-04 2021-09-07 奇跃公司 光场显示度量
US11024002B2 (en) 2019-03-14 2021-06-01 Intel Corporation Generating gaze corrected images using bidirectionally trained network

Also Published As

Publication number Publication date
US20190266701A1 (en) 2019-08-29
US11024002B2 (en) 2021-06-01
US20210248714A1 (en) 2021-08-12
CN111695399A (zh) 2020-09-22
US11699217B2 (en) 2023-07-11
US20230410266A1 (en) 2023-12-21

Similar Documents

Publication Publication Date Title
DE102020201787A1 (de) Erzeugen von blickkorrigierten bildern unter verwendung eines bidirektional trainierten netzwerks
Ram Prabhakar et al. Deepfuse: A deep unsupervised approach for exposure fusion with extreme exposure image pairs
DE112018007721T5 (de) Aufnehmen und modifizieren von 3D-Gesichtern unter Verwendung neuronaler Bild-und Zeitverfolgungsnetze
DE102020131265A1 (de) Segmentieren von video-rahmen unter verwendung eines neuronalen netzes mit verringerter auflösung und von masken aus vorhergehenden rahmen
DE102018008217A1 (de) Intelligente Anleitung zum Aufnehmen von Digitalbildern, die mit einem Zielbildmodell in Übereinstimmung gebracht sind
US10235571B2 (en) Method for video matting via sparse and low-rank representation
DE102020125207A1 (de) Unbeaufsichtigtes training von neuronalem netz zur bildkompression mit hohem dynamikumfang
DE102011056970A1 (de) Rasterausgabe von rotierten, interpolierten Pixeln, die für digitale Bildstabilisierung optimiert ist
DE102021118479A1 (de) Einbetten von komplexen 3d-objekten in eine erweiterte realitätsszene unter verwendung einer bildsegmentierung
CN108134937B (zh) 一种基于hevc的压缩域显著性检测方法
DE102020133963A1 (de) Systeme und Verfahren zur Abbildrauschunterdrückung unter Verwendung von tiefen gefalteten Netzwerken
DE112020005730T5 (de) Gemeinsame Rolling-Shutter-Korrektur und Bildscharfzeichnung
DE102021109050A1 (de) Durch ein neuronales generative adversarial netzwerk unterstützte videokompression und -übertragung
Yan et al. A novel biologically-inspired method for underwater image enhancement
Zhu et al. Low-light image enhancement network with decomposition and adaptive information fusion
Mostafavi et al. E2sri: Learning to super-resolve intensity images from events
DE102018130083A1 (de) Schätzung der Beleuchtungsfarbigkeit beim automatischen Weißabgleich
DE102021125897A1 (de) History-blockieren zum entrauschen dynamischer raytracing-szenen unter verwendung zeitlicher anhäufung
DE102020134755A1 (de) Verarbeiten von videoframes über neuronales faltungsnetzwerk durch verwenden von statistiken vorhergehender frames
DE102015110882B4 (de) Einstellverfahren und Elektronikgerät
DE102020210030A1 (de) Verfahren und Vorrichtung zur Visualisierung von dreidimensionalen Objekten
CN111161189A (zh) 一种基于细节弥补网络的单幅图像再增强方法
Liu et al. Kinect depth inpainting via graph laplacian with tv21 regularization
DE102020104055A1 (de) Rendern von objekten zur anpassung von dem kamerarauschen
Chen et al. Virtual view quality assessment based on shift compensation and visual masking effect

Legal Events

Date Code Title Description
R082 Change of representative

Representative=s name: HGF EUROPE LLP, DE

Representative=s name: HGF EUROPE LP, DE

R079 Amendment of ipc main class

Free format text: PREVIOUS MAIN CLASS: G06K0009000000

Ipc: G06V0010000000