Method and system for performing eye tracking using an off-axis camera - Patents.com

JP7645041B2Active Publication Date: 2025-03-13MAGIC LEAP INC
View PDF 2 Cites 0 Cited by

Patent Information

Application Number
JP2020570526
Authority / Receiving Office
JP · JP
Patent Type
Patents
Current Assignee / Owner
Priority Date
2018-06-22
Filing Date
2019-06-24
Publication Date
2025-03-13
Estimated Expiration
2039-06-24

AI Technical Summary

Benefits of technology

、当業者に容易に明白となるであろう。 本発明は、例えば、以下を提供する。 (項目1) 光学デバイスのユーザのための視線ベクトルを推定する方法であって、前記方法は、 前記光学デバイスに搭載されるカメラから前記ユーザの眼の入力画像を受信することと、 前記ユーザの眼の入力画像をニューラルネットワークに提供することであって、前記ニューラルネットワークは、複数の訓練入力画像を使用して事前に訓練されている、ことと、 前記ニューラルネットワークを使用して、ネットワーク出力データを生成することと、 前記ネットワーク出力データに基づいて、前記ユーザの眼に対応する視線ベクトルを算出することと を含む、方法。 (項目2) 前記ネットワーク出力データは、 2次元(2D)瞳孔データ、 眼セグメント化データ、または 角膜中心データ のうちの1つ以上のものを含む、項目1に記載の方法。 (項目3) 前記2D瞳孔データは、2D瞳孔中心を含む、項目2に記載の方法。 (項目4) 前記眼セグメント化データは、背景領域、強膜領域、瞳孔領域、または虹彩領域のうちの1つ以上のものを含む複数の領域への前記ユーザの眼のセグメント化を含む、項目2に記載の方法。 (項目5) 前記角膜中心データは、2Dまたは3D角膜中心を含む、項目2に記載の方法。 (項目6) 前記2D瞳孔データおよび前記眼セグメント化データに基づいて、3次元(3D)瞳孔中心を算出することをさらに含む、項目2に記載の方法。 (項目7) 前記3D瞳孔中心および前記角膜中心データに基づいて、前記ユーザの眼と関連付けられる光学軸を算出することをさらに含む、項目6に記載の方法。 (項目8) 光学軸と、ユーザに対応する較正角度とに基づいて、前記ユーザの眼と関連付けられる視線ベクトルを算出することをさらに含む、項目7に記載の方法。 (項目9) 前記ニューラルネットワークは、 前記複数の訓練入力画像の訓練入力画像毎に、 前記訓練入力画像を前記ニューラルネットワークに提供することと、 前記ニューラルネットワークを使用して、訓練ネットワーク出力データを生成することと、 グラウンドトゥルース(GT)データを受信することと、 前記訓練ネットワーク出力データと前記GTデータとの間の差異に基づいて、誤差データを算出することと、 前記誤差データに基づいて、前記ニューラルネットワークを修正することと を行うことによって事前に訓練されている、項目1に記載の方法。 (項目10) 前記訓練ネットワーク出力データは、 訓練2D瞳孔中心データ、 訓練眼セグメント化データ、 訓練閃光検出データ、または 訓練角膜中心データ のうちの1つ以上のものを含む、項目9に記載の方法。 (項目11) 前記GTデータは、 2D瞳孔中心GTデータ、 眼セグメント化GTデータ、または 閃光検出GTデータ のうちの1つ以上のものを含む、項目10に記載の方法。 (項目12) 前記眼セグメント化GTデータは、訓練背景領域、訓練強膜領域、訓練瞳孔領域、および訓練虹彩領域のうちの1つ以上のものを含む複数の訓練領域への手動で作成された前記ユーザの眼のセグメント化を含む、項目11に記載の方法。 (項目13) 前記閃光検出GTデータは、閃光場所の手動で作成された識別を含む、項目11に記載の方法。 (項目14) 前記誤差データは、 前記訓練2D瞳孔中心データと前記2D瞳孔中心GTデータとの間の差異、 前記訓練眼セグメント化データと前記眼セグメント化GTデータとの間の差異、 前記訓練閃光検出データと前記閃光検出GTデータとの間の差異、または 前記訓練角膜中心データおよび1つ以上の幾何学的制約に基づく誤差 のうちの1つ以上のものを含む、項目11に記載の方法。 (項目15) 光学デバイスであって、 カメラと、 前記カメラに通信可能に結合されたプロセッサであって、前記プロセッサは、 前記カメラからユーザの眼の入力画像を受信することと、 前記ユーザの眼の入力画像をニューラルネットワークに提供することであって、前記ニューラルネットワークは、複数の訓練入力画像を使用して事前に訓練されている、ことと、 前記ニューラルネットワークを使用して、ネットワーク出力データを生成することと、 前記ネットワーク出力データに基づいて、前記ユーザの眼に対応する視線ベクトルを算出することと を含む動作を実施するように構成される、プロセッサと を備える、光学デバイス。 (項目16) 複数の赤外線(IR)発光ダイオード(LED)をさらに備える、項目15に記載の光学デバイス。 (項目17) 前記ネットワーク出力データは、 2次元(2D)瞳孔データ、 眼セグメント化データ、または 角膜中心データ のうちの1つ以上のものを含む、項目15に記載の光学デバイス。 (項目18) 前記2D瞳孔データは、2D瞳孔中心を含む、項目17に記載の光学デバイス。 (項目19) 前記眼セグメント化データは、背景領域、強膜領域、瞳孔領域、または虹彩領域のうちの1つ以上のものを含む複数の領域への前記ユーザの眼のセグメント化を含む、項目17に記載の光学デバイス。 (項目20) 前記ニューラルネットワークは、 複数の訓練入力画像の訓練入力画像毎に、 前記訓練入力画像を前記ニューラルネットワークに提供することと、 前記ニューラルネットワークを使用して、訓練ネットワーク出力データを生成することと、 グラウンドトゥルース(GT)データを受信することと、 前記訓練ネットワーク出力データと前記GTデータとの間の差異に基づいて、誤差データを算出することと、 前記誤差データに基づいて、前記ニューラルネットワークを修正することと を行うことによって事前に訓練されている、項目15に記載の光学デバイス。

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure 0007645041000001
    Figure 0007645041000001
  • Figure 0007645041000002
    Figure 0007645041000002
  • Figure 0007645041000003
    Figure 0007645041000003
Patent Text Reader

Abstract

A system and method for estimating a gaze vector of an eye using a trained neural network. An input image of the eye may be received from a camera. The input image may be provided to a neural network. Network output data may be generated using the neural network. The network output data may include two-dimensional (2D) pupil data, eye segmentation data, and / or corneal center data. The gaze vector may be calculated based on the network output data. The neural network may be pre-trained by providing training input images to the neural network, generating training network output data, receiving ground truth (GT) data, calculating error data based on differences between the training network output data and the GT data, and modifying the neural network based on the error data.
Need to check novelty before this filing date? Find Prior Art

Description

[Technical field]

[0001] (CROSS REFERENCE TO RELATED APPLICATIONS) This application claims the benefit of priority to U.S. Provisional Patent Application No. 62 / 688,983, filed June 22, 2018, and entitled “METHOD AND SYSTEM FOR PERFORMING EYE TRACKING USING AN OFF-AXIS CAMERA,” the contents of which are incorporated herein by reference in their entirety. [Background technology]

[0002] Modern computing and display technologies have facilitated the development of systems for so-called "virtual reality" or "augmented reality" experiences, in which digitally reproduced images or portions thereof are presented to a user in a manner that appears or may be perceived as real. Virtual reality, or "VR", scenarios typically involve the presentation of digital or virtual image information without transparency to other actual real-world visual inputs. Augmented reality, or "AR", scenarios typically involve the presentation of digital or virtual image information as an extension to the visualization of the real world around the user.

[0003] Despite the advances made in these display technologies, there remains a need in the art for improved methods, systems, and devices relating to augmented reality systems, and particularly display systems. Summary of the Invention [Means for solving the problem]

[0004] The present disclosure generally relates to systems and methods for eye tracking. More specifically, embodiments of the present disclosure provide systems and methods for implementing eye tracking for gaze estimation in head-mounted virtual reality (VR), mixed reality (MR), and / or augmented reality (AR) devices. Embodiments of the present invention enable the use of energy- and bandwidth-efficient rendering of content to drive multi-focal displays in an effective and non-obtrusive manner to user needs. Although the present invention is described with reference to AR devices, the present disclosure is applicable to various applications in computer vision and image display systems.

[0005] In one aspect of the invention, a method of estimating a gaze vector using a neural network is provided. The method may include receiving an input image of an eye from a camera. The method may also include providing the input image of the eye to a neural network. The method may further include generating network output data using the neural network. The method may further include calculating a gaze vector corresponding to the eye based on the network output data. In some embodiments, the network output data includes one or more of two-dimensional (2D) pupil data, eye segmentation data, and corneal center data. In some embodiments, the 2D pupil data includes a 2D pupil center. In some embodiments, the eye segmentation data includes a segmentation of the eye into a plurality of regions including one or more of a background region, a sclera region, a pupil region, and an iris region. In some embodiments, the corneal center data includes a 2D or 3D corneal center.

[0006] In some embodiments, the method further includes calculating a three-dimensional (3D) pupil center based on the 2D pupil data and the eye segmentation data. In some embodiments, the method further includes calculating an optical axis associated with the eye based on the 3D pupil center and corneal center data. In some embodiments, the method further includes calculating a gaze vector associated with the eye based on the optical axis and a calibration angle corresponding to the user. In some embodiments, the neural network is pre-trained by, for each training input image of a plurality of training input images, providing the training input image to the neural network, generating training network output data using the neural network, receiving ground truth (GT) data, calculating error data based on a difference between the training network output data and the GT data, and modifying the neural network based on the error data.

[0007] In some embodiments, the training network output data includes one or more of training eye segmentation data, training flash detection data, and training corneal center data. In some embodiments, the GT data includes one or more of 2D pupil center GT data, eye segmentation GT data, and flash detection GT data. In some embodiments, the eye segmentation GT data includes a manually created segmentation of the eye into a plurality of training regions, including one or more of a training background region, a training sclera region, a training pupil region, and a training iris region. In some embodiments, the flash detection GT data includes a manually created identification of a glint location.

[0008] In some embodiments, the error data includes one or more of a difference between the training 2D pupil center data and the 2D pupil center GT data, a difference between the training eye segmentation data and the eye segmentation GT data, a difference between the training flash detection data and the flash detection GT data, and an error based on the training corneal center data and one or more geometric constraints. In some embodiments, the method further includes calculating one or more geometric constraints based on one or more of the emitter location data, the camera intrinsic parameters, the flash detection data, and the corneal center data. In some embodiments, the emitter location data includes a plurality of emitter locations. In some embodiments, the plurality of training input images are captured by the camera.

[0009] In another aspect of the present invention, an optical device, such as an AR device, is provided. The optical device may include a camera, a plurality of infrared (IR) light emitting diodes (LEDs) (when the device is worn) that are directed toward a user's eye, and a processor communicatively coupled to the camera and configured to perform operations including receiving an input image of the eye from the camera, providing the input image of the eye to a neural network, generating network output data using the neural network, and calculating a gaze vector corresponding to the eye based on the network output data. The processor may further be configured to perform any of the operations described with reference to the method above.

[0010] A number of advantages over conventional techniques are achieved by the method of the present disclosure. First, the estimates using the trained network work well in conjunction with classical eye tracking pipelines. It has been demonstrated that the estimates using the trained network can be incorporated into a geometric eye tracking system to improve its overall robustness and accuracy. Second, the results from the multi-stage eye tracking model described herein can drive other essential applications in AR / VR / MR. For example, corneal predictions can be used for foveated rendering, and eye segmentation is useful for rendering eyes in avatar-based social suite apps. Third, while collecting persistent gaze target GT data for a large number of subjects can be both imprecise and difficult, data collection herein is significantly simplified by decoupling the training of intermediate predictions (pupil and corneal estimation) from the final 3D gaze vector estimation pipeline. Fourth, errors in end-to-end deep networks can be difficult to interpret, but the intermediate estimates made at each stage using trained networks aid in interpretability. Other advantages of the present disclosure will be readily apparent to those skilled in the art. The present invention provides, for example, the following: (Item 1) 1. A method of estimating a gaze vector for a user of an optical device, the method comprising: receiving an input image of the user's eye from a camera mounted on the optical device; providing an input image of the user's eye to a neural network, the neural network having been pre-trained using a plurality of training input images; and using the neural network to generate network output data; calculating a gaze vector corresponding to the user's eye based on the network output data; A method comprising: (Item 2) The network output data is Two-dimensional (2D) pupil data, Eye segmentation data, or Corneal Center Data The method according to item 1, comprising one or more of the following: (Item 3) 3. The method of claim 2, wherein the 2D pupil data includes a 2D pupil center. (Item 4) 3. The method of claim 2, wherein the eye segmentation data includes a segmentation of the user's eye into a plurality of regions including one or more of a background region, a sclera region, a pupil region, or an iris region. (Item 5) 3. The method of claim 2, wherein the corneal center data includes a 2D or 3D corneal center. (Item 6) 3. The method of claim 2, further comprising calculating a three-dimensional (3D) pupil center based on the 2D pupil data and the eye segmentation data. (Item 7) 7. The method of claim 6, further comprising calculating an optical axis associated with the user's eye based on the 3D pupil center and the corneal center data. (Item 8) 8. The method of claim 7, further comprising calculating a gaze vector associated with an eye of the user based on the optical axis and a calibration angle corresponding to the user. (Item 9) The neural network comprises: For each training input image of the plurality of training input images, providing the training input images to the neural network; using said neural network to generate training network output data; receiving ground truth (GT) data; calculating error data based on a difference between the training network output data and the GT data; modifying the neural network based on the error data; and The method according to item 1, wherein the substrate is pre-trained by performing (Item 10) The training network output data is training 2D pupil center data, training eye segmentation data, Training flash detection data, or Training corneal center data 10. The method according to item 9, comprising one or more of the following: (Item 11) The GT data is 2D pupil center GT data, Eye segmented GT data, or Flash detection GT data 11. The method according to claim 10, comprising one or more of the following: (Item 12) Item 12. The method of item 11, wherein the eye segmented GT data includes a manually created segmentation of the user's eye into a plurality of training regions including one or more of a training background region, a training sclera region, a training pupil region, and a training iris region. (Item 13) 12. The method of claim 11, wherein the flash detection GT data includes a manually created identification of a flash location. (Item 14) The error data is the difference between the training 2D pupil-centered data and the 2D pupil-centered GT data; a difference between the training eye segmentation data and the eye segmentation GT data; a difference between the training flash detection data and the flash detection GT data; or an error based on the training corneal center data and one or more geometric constraints 12. The method according to claim 11, comprising one or more of the following: (Item 15) 1. An optical device comprising: A camera and A processor communicatively coupled to the camera, the processor comprising: receiving an input image of a user's eye from the camera; providing an input image of the user's eye to a neural network, the neural network having been pre-trained using a plurality of training input images; and using the neural network to generate network output data; calculating a gaze vector corresponding to the user's eye based on the network output data; a processor configured to perform operations including: An optical device comprising: (Item 16) Item 16. The optical device of item 15, further comprising a plurality of infrared (IR) light emitting diodes (LEDs). (Item 17) The network output data is Two-dimensional (2D) pupil data, Eye segmentation data, or Corneal Center Data Item 16. The optical device according to item 15, comprising one or more of: (Item 18) 18. The optical device of claim 17, wherein the 2D pupil data includes a 2D pupil center. (Item 19) Item 18. The optical device of item 17, wherein the eye segmentation data includes a segmentation of the user's eye into a plurality of regions including one or more of a background region, a sclera region, a pupil region, or an iris region. (Item 20) The neural network comprises: For each training input image of the plurality of training input images, providing the training input images to the neural network; using said neural network to generate training network output data; receiving ground truth (GT) data; calculating error data based on a difference between the training network output data and the GT data; modifying the neural network based on the error data; and Item 16. The optical device according to item 15, wherein the optical device has been pre-trained by performing the steps of [Brief description of the drawings]

[0011] A further understanding of the nature and advantages of the various embodiments may be realized by reference to the following figures. In the accompanying figures, similar components or features may have the same reference label. Furthermore, various components of the same type may be distinguished by following the reference label with a dash and a second label that distinguishes between the similar components. If only a first reference label is used herein, the description is applicable to any one of the similar components having the same first reference label, regardless of the second reference label.

[0012] [Figure 1] FIG. 1 illustrates an augmented reality (AR) scene as viewed through a wearable AR device according to an embodiment described herein.

[0013] [Diagram 2] FIG. 2 illustrates various features of an AR device in accordance with the present invention.

[0014] [Diagram 3] FIG. 3 illustrates the standard double spherical model of the human eye.

[0015] [Figure 4] FIG. 4 illustrates a schematic diagram of an AR device in accordance with the present invention.

[0016] [Diagram 5] FIG. 5 illustrates a schematic diagram of a network configuration.

[0017] [Figure 6] FIG. 6 illustrates a schematic diagram of the various inputs and outputs of the network.

[0018] [Figure 7] FIG. 7 illustrates a schematic diagram of an AR device operating in training mode.

[0019] [Figure 8]FIG. 8 illustrates a schematic diagram of an AR device operating in runtime mode.

[0020] [Figure 9] FIG. 9 illustrates one possible structure of the network.

[0021] [Figure 10] FIG. 10 illustrates a recurrent neural network (RNN) that produces eyeblink predictions.

[0022] [Figure 11] FIG. 11 illustrates a method for estimating gaze vectors using a network.

[0023] [Figure 12] FIG. 12 illustrates a method for training a network to estimate gaze vectors.

[0024] [Figure 13] FIG. 13 illustrates a simplified computer system according to an embodiment described herein. DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS

[0025] Eye tracking for gaze estimation is a key component for the current and future generation of head-mounted virtual and mixed reality devices. It enables the use of energy- and bandwidth-efficient rendering of content, drives multifocal displays for more realistic rendering of content, and acts as an effective and unobtrusive modality of understanding the user's needs. The process of estimating accurate gaze involves appearance-based computation (segmentation, feature point detection, e.g., pupil center, phosphenes), followed by model / geometry-based computation (e.g., estimating the cornea, pupil center, and gaze vector in three dimensions). Current eye trackers use classical computer vision techniques (without learning) to estimate pupil borders / centers, and then calculate gaze based on those estimates. Estimation using the trained network described herein is significantly more accurate than classical techniques. According to the present invention, a single deep network is trained to estimate multiple quantities related to the eye and gaze estimation, both for off-axis eye images.

[0026] FIG. 1 illustrates an augmented reality (AR) scene as viewed through a wearable AR device according to an embodiment described herein. An AR scene 100 is depicted in which a user of the AR technology sees a real-world park-like setting 106 featuring people, trees, buildings in the background, and a concrete platform 120. In addition to these items, the user of the AR technology also perceives that they "see" a robotic figure 110 standing on the real-world platform 120 and a flying cartoon-like avatar character 102 that appears to be an anthropomorphic bumblebee, although these elements (the character 102 and the figure 110) do not exist in the real world. Due to the significant complexity of the human visual perception and nervous system, it is difficult to produce virtual reality (VR) or AR technology that promotes a comfortable, natural-feeling, rich presentation of virtual image elements among other virtual or real-world image elements.

[0027] FIG. 2 illustrates various features of an AR device 200 in accordance with the present invention. In some embodiments, the AR device 200 may include a projector 214 configured to project light onto the eyepiece 202 such that a virtual image 222 is perceived by the user along with a world object 230. The AR device 200 may also include an off-axis camera 240 and one or more emitters 262 mounted on the AR device 200 and directed toward the user's eye. The emitters 262 may comprise infrared (IR) light-emitting diodes (LEDs) that transmit light that is invisible to the user's eye but detectable by the off-axis camera 240. In some embodiments, the emitters 262 may comprise LEDs that transmit light that is visible to the user's eye, such that the off-axis camera 240 need not have the ability to detect light in the IR spectrum. Thus, the off-axis camera 240 may be a camera with or without IR detection capabilities.

[0028] During operation of the AR device 200, the off-axis camera 240 may detect information (e.g., capture images) that leads to an estimation of a gaze vector 238 corresponding to the user's eye. The gaze vector 238 may be calculated for each image frame and, in various embodiments, may be represented as a two-dimensional (2D) or three-dimensional (3D) value. For example, as illustrated in FIG. 2, the gaze vector 238 may be represented using a spherical coordinate system with a polar angle θ and an azimuth angle φ. Alternatively, or in addition, the gaze vector 238 may be represented using a 3D Cartesian coordinate system with X, Y, and Z values. The gaze vector 238 may intersect with the eyepiece 202 at an intersection 239, which may be calculated based on the location of the user's eye, the location of the eyepiece 202, and the gaze vector 238. In some instances, the projector 214 may adjust the virtual image 222 to improve image brightness and / or clarity around the intersection 239 in favor of other areas of the field of view.

[0029] FIG. 3 illustrates a standard double spherical model 300 of the human eye. According to the model 300, the eye globe 302 may completely or partially encompass the inner corneal sphere 304. The corneal center 306 may be the geometric center of the corneal sphere 304. The pupil center 308 may correspond to the pupillary opening or center of the pupil of the eye and may be encompassed by the corneal sphere 304. The optical axis 310 of the eye may be a vector formed by connecting the corneal center 306 and the pupil center 308. The gaze vector 238 (alternatively referred to as the visual axis) may be formed by connecting the corneal center 306 and the fovea 312 at the back of the eye. Because the fovea 312 is generally unknown and difficult to estimate, the gaze vector 238 may be calculated using the optical axis 310 and a user-specific calibration angle κ. The calibration angle κ may be a one-dimensional (1D), 2D, or 3D value and may be calibrated for a particular user during a calibration phase when the AR device 200 is first operated by the user. Once the calibration angle κ is calculated for a particular user, it is assumed to be fixed. Thus, estimating the optical axis 310 using the corneal center 306 and the pupil center 308 is a key problem underlying eye tracking.

[0030] 4 illustrates a schematic diagram of an AR device 200 in accordance with the present invention. The AR device 200 may include a left eyepiece 202A, a right eyepiece 202B, a left front facing world camera 206A mounted directly on or near the left eyepiece 202A, a right front facing world camera 206B mounted directly on or near the right eyepiece 202B, a left facing world camera 206C, a right facing world camera 206D, and a processing module 250. The emitters 262 may be mounted on one or both of the eyepieces 202, and in some embodiments may be separated (e.g., mounted to the frame of the AR device 200) into a left emitter 262A mounted directly on or near the left eyepiece 202A and a right emitter 262B mounted directly on or near the right eyepiece 202B. In some instances, the AR device 200 may include a single or multiple off-axis cameras 260, such as a centrally positioned off-axis camera 260, or as illustrated in FIG. 4, a left off-axis camera 260A mounted directly on or near the left eyepiece 202A, and a right off-axis camera 260A mounted directly on or near the right eyepiece 202B.

[0031] Some or all of the components of the AR device 200 may be mounted on the head so that the projected image can be viewed by the user. In one particular implementation, all of the components of the AR device 200 shown in FIG. 4 are mounted on a single device (e.g., a single headset) that can be worn by the user. In another implementation, the processing module 250 is physically separate from the other components of the AR device 200 and is communicatively coupled by wired or wireless connectivity. For example, the processing module 250 may be mounted in various configurations, such as fixedly attached to a frame, fixedly attached to a helmet or hat worn by the user, built into headphones, or otherwise removably attached to the user (e.g., in a backpack configuration, in a belt-connected configuration, etc.).

[0032] The processing module 250 may include a processor 252 and digital memory, such as non-volatile memory (e.g., flash memory), both of which may be utilized to aid in processing, caching, and storing data. The data may include data captured from sensors (e.g., operatively coupled to the AR device 200), such as image capture devices (e.g., camera 206 and off-axis camera 260), microphones, inertial measurement units, accelerometers, compasses, GPS units, wireless devices, and / or gyroscopes. For example, the processing module 250 may receive images 220 from the camera 206, more specifically, a left front image 220A from a left front facing world camera 206A, a right front image 220B from a right front facing world camera 206B, a left side image 220C from a left side facing world camera 206C, and a right side image 220D from a right side facing world camera 206D. In some embodiments, the images 220 (or those received from the off-axis cameras 260) may include a single image, a pair of images, a video including a stream of images, a video including a stream of paired images, and the like. The images 220 (or those received from the off-axis cameras 260) may be generated periodically while the AR device 200 is powered on and sent to the processing module 250, or may be generated in response to instructions sent by the processing module 250 to one or more of the cameras.

[0033] Eyepieces 202A and 202B may comprise transparent or semi-transparent waveguides configured to direct light from projectors 214A and 214B, respectively. Specifically, processing module 250 may cause left projector 214A to output left projected image 222A to left eyepiece 202A, and right projector 214B to output right projected image 222B to right eyepiece 202B. In some embodiments, eyepieces 202 may comprise multiple waveguides, each corresponding to a different color and / or different depth planes.

[0034] Cameras 206A and 206B may be positioned to capture images that substantially overlap the field of view of the user's left and right eyes, respectively. Thus, the placement of cameras 206A and 206B may be near the user's eyes, but not so close as to obscure the user's field of view. Alternatively or in addition, cameras 206A and 206B may be positioned to align with the internal binding locations of projected images 222A and 222B, respectively. Cameras 206C and 206D may be positioned to capture images to the side of the user, e.g., within the user's peripheral vision or outside the user's peripheral vision. Images 220C and 220D captured using cameras 206C and 206D do not necessarily overlap with images 220A and 220B captured using cameras 206A and 206B. Cameras 260A and 260B may be positioned to capture images to the user's left and right eyes, respectively. The image captured by camera 260 may show the user's eye in its entirety or a portion of the user's eye.

[0035] During operation of the AR device 200, the processing module 250 may estimate the gaze vector 238 using a neural network 256. The neural network 256 may be an artificial neural network, a convolutional neural network, or any type of computing system that may gradually "learn" by processing examples. For example, the neural network 256 may be trained by processing manually prepared training data that represents ground truth (GT) data. After processing each of the training data, the neural network 256 may generate an output that more closely approximates the GT data. In some embodiments, the neural network 256 comprises a collection of connected nodes that are capable of transmitting signals from one node to another. The training and use of the neural network 256 is further described below.

[0036] FIG. 5 illustrates a schematic diagram of the configuration of the neural network 256. An input image I(x,y,c) captured by an off-axis camera 260 may be provided as an input to the neural network 256. The input image I(x,y,c) may have dimensions of H×W×C, where H is the number of pixels in the vertical direction, W is the number of pixels in the horizontal direction, and C is the number of channels of the image (e.g., for an RGB image, equal to 3, and for a grayscale image, equal to 1). The neural network 256 may process the input image I(x,y,c) and generate network output data 264 based on the input image I(x,y,c). When the AR device 200 is operating in a runtime mode, the network output data 264 may be used in conjunction with the calibration angle κ to calculate the gaze vector 238. In some embodiments, a post-processing block 266 may perform one or more operations to calculate the gaze vector 238. In other embodiments, or in the same embodiment, the calibration angle κ may be provided as an input to the neural network 256 along with the input image I(x,y,c), and the gaze vector 238 may be included directly in the network output data 264 or may be calculated based on the network output data 264.

[0037] When the AR device 200 is operating in training mode, the network output data 264 may be compared to the GT data 268. Error data 270 may be calculated based on the comparison and, in some embodiments, may represent a difference between the network output data 264 and the GT data 268, such that a magnitude of the error data 270 may be proportional to the difference between the network output data 264 and the GT data 268. The neural network 256 may be modified (e.g., using a corrector 272) based on the error data 270. In some embodiments, the magnitude of the modification to the neural network 256 may be proportional to the magnitude of the error data 270, such that a larger difference between the network output data 264 and the GT data 268 may correspond to a larger modification to the neural network 256.

[0038] 6 illustrates a schematic diagram of various inputs and outputs of the neural network 256. The network output data 264 may include one or more of the types of data shown in FIG. 6. Based on whether the AR device operates in a training mode or a runtime mode, one or more of the types of data may not be utilized in subsequent processing. Alternatively, based on whether the AR device 200 operates in a training mode or a runtime mode, one or more of the types of data may not be generated by the neural network 256 to conserve processing power.

[0039] In some embodiments, the network output data 264 may include 2D pupil center data 274. In some embodiments, the 2D pupil center data 274 may include 2D pupil centers represented as 2D values. For example, the 2D pupil centers may include X and Y values ​​in a frame of input images I(x,y,c) that correspond to a calculated location of the center of the pupil (e.g., pupil center 308). Alternatively, or in addition, the 2D pupil center data 274 may include a matrix, having dimensions H×W, comprising binary values ​​of 0 or 1 (where a value of 1 corresponds to the calculated location of the center of the pupil).

[0040] In some embodiments, the network output data 264 may include eye segmentation data 276. The eye segmentation data 276 may include a segmentation of the eye into a number of regions. In one particular implementation, the regions may include a background region, a sclera region, a pupil region, and an iris region. In another particular implementation, the regions may include a pupil region and a non-pupillary region. In another particular implementation, the regions may include a pupil region, an eye region (including parts of the eye that are not part of the pupil region), and a background region. In some embodiments, the eye segmentation data 276 may include a matrix having dimensions H×W with a finite set of values ​​such as 0, 1, 2, and 3 (e.g., corresponding to the background region, the sclera region, the pupil region, and the iris region, respectively). In some embodiments, the eye segmentation data 276 includes an assignment of all pixels of the input image I(x,y,c) to a set of classes including background, sclera, pupil, and iris, which in some embodiments may be obtained by taking the last layer of the (decoder) neural network 256 and upsampling it to the same resolution as the input image I(x,y,c) using deconvolution, which is then fed into a softmax cross-entropy loss across the feature channels, where each feature channel represents the probability of the pixel belonging to a certain class.

[0041] In some embodiments, the network output data 264 may include flash detection data 278. In some embodiments, the flash detection data 278 includes one or more flash locations represented as 2D or 3D values. For example, if only a single flash location is detected, the flash detection data 278 may include a single 2D value, or if four flash locations are detected, the flash detection data 278 may include four 2D values. In some embodiments, the flash detection data 278 may include X and Y values ​​in a frame of input image I(x,y,c) that correspond to the calculated location of the detected flash. Alternatively, or in addition, the flash detection data 278 may include a matrix, having dimensions H×W, that comprises binary values ​​of 0 or 1 (a value of 1 corresponds to the location of the detected flash).

[0042] In some embodiments, the network output data 264 may include corneal center data 280. In some embodiments, the corneal center data 280 may include a 2D corneal center represented as a 2D value or a 3D corneal center represented as a 3D value. For example, the 2D corneal center may include X and Y values ​​in a frame of input images I(x,y,c) that correspond to a calculated location of the center of the cornea (e.g., corneal center 306). Alternatively or additionally, the corneal center data 280 may include a matrix, having dimensions H×W, with binary values ​​of 0 or 1 (a value of 1 corresponds to the calculated location of the center of the cornea).

[0043] In some embodiments, the network output data 264 may include a flash and pupil indicator 282. In some embodiments, the flash and pupil indicator 282 comprises a binary value of 0 or 1, with a value of 1 corresponding to successful flash or pupil center detection and a value of 0 corresponding to unsuccessful detection. In alternative embodiments, a value of 1 may correspond to a flash or pupil center occlusion. In one particular implementation, the flash and pupil indicator 282 may comprise five binary values, with the first four binary values ​​corresponding to four flashes and the last binary value corresponding to the pupil center. In some embodiments, the flash and pupil indicator 282 may alternatively be generated based on the 2D pupil center data 274 and the flash detection data 278. In some embodiments, the phosphene and pupil indicators 282 may be obtained by taking the last layer of the encoder (where all features are shared in a common block), reshaping and adding two fully connected layers, and producing a 5×2 probability as a binary classification of whether some of the 4 phosphenes and 1 pupil center are missing.

[0044] 7 and 8 illustrate schematic diagrams of the AR device 200 operating in training and runtime modes, respectively. When the AR device 200 is operating in training mode, the network output data 264 includes eye segmentation data 276, glimmer detection data 278, and corneal center data 280. The particular input images I(x,y,c) used to generate these network outputs may also be manually inspected by one or more individuals, who may prepare the GT data 268 prior to, subsequent to, or in parallel with the generation of the network output data 264 by the neural network 256. For example, an individual may inspect a displayed version of the input images I(x,y,c) on an electronic device, such as a personal computer or smartphone. A program or application on the electronic device may ask the individual a set of questions related to the input images I(x,y,c), and the individual may enter their responses using an input device, such as a mouse, keyboard, touch screen, or the like.

[0045] When observing and inspecting the input image I(x,y,c), an individual may prepare 2D pupil center GT data 283 by identifying the outline of the pupil using an input device. This may include the individual placing an elliptical boundary over the pupil and having the pupil center automatically calculated based on the placed elliptical boundary. The 2D pupil center GT data 283 may be prepared to have the same format and dimensions (e.g., X and Y values) as the 2D pupil center data 274. In addition, when observing and inspecting the input image I(x,y,c), an individual may prepare eye segmentation GT data 284 by determining that a first region of the image should be assigned as a background region, a second region as a sclera region, a third region as a pupil region, and a fourth region as an iris region. The eye segmentation GT data 284 may be prepared to have the same format and dimensions as the eye segmentation data 276 (e.g., a matrix having dimensions H×W with a finite set of values ​​such as 0, 1, 2, and 3 corresponding to different regions).

[0046] Additionally, upon observing and inspecting the input image I(x,y,c), the individual may prepare flash detection GT data 286 by determining the number and respective locations of flash locations present within the input image I(x,y,c). The flash detection GT data 286 may be prepared to have the same format and dimensions (e.g., a set of 2D values) as the flash detection data 278, or if a certain number of flash locations are detected (e.g., four), the flash detection GT data 286 may include that number of 2D values. In some embodiments, the flash detection GT data 286 may include X and Y values ​​within the frame of the input image I(x,y,c) that correspond to the calculated locations of the detected flashes. Alternatively, or in addition, the flash detection GT data 286 may include a matrix, having dimensions H×W, with binary values ​​of 0 or 1 (a value of 1 corresponds to the location of the detected flash).

[0047] In one particular implementation, GT data 268 may be acquired by having an individual or group of individuals face a 3x3 grid of points at two distinct depths, a near depth at, for example, 3 meters, and a farther plane at, for example, 6 meters. In response to a given cue, the individual is asked to focus their gaze on one of these 18 3D points, which allows GT data 268 related to gaze vector 238 to be collected frame by frame (to later determine overall accuracy). Captured images of the individual's eyes (using the camera of the AR device worn by the individual) may be analyzed, allowing the GT data 268 to include eye segmentation and phosphene location information. Because there are diminishing returns in annotating segmentation, phosphenes, and pupil center for every frame in a 30 or 60 Hz recording, a number (e.g., 200) of left or right eye image frames may be uniformly sampled for each individual and manually annotated with segmentation, phosphene presence or absence, phosphene 2D, and pupil 2D location. In one particular experimental run, every 87,000 annotated images were used in the dataset to train a neural network256 and validate its performance.

[0048] In some embodiments, the error data 270 may include a first error data 270A calculated based on a difference between the 2D pupil center data 274 and the 2D pupil center GT data, a second error data 270B calculated based on a difference between the eye segmentation data 276 and the eye segmentation GT data 284, a third error data 270C based on a difference between the flash detection data 278 and the flash detection GT data 286, and a fourth error data 270C generated by a geometric constraint engine 288. Inputs to the geometric constraint engine 288 include one or more of the corneal center data 280, the flash detection data 278, the emitter location data 290, and the camera intrinsic parameters 291. The emitter location data 290 may include a fixed location of the emitter 262 and / or an emission direction of the emitter 262. The emitter location data 290 may be determined during manufacturing of the AR device 200 and / or during a calibration phase. The camera intrinsic parameters 291 may include, among other possibilities, the optical center and / or focal length of the off-axis camera 260. The camera intrinsic parameters 291 may be determined during manufacturing and / or a calibration phase of the off-axis camera 260.

[0049] The geometric constraint engine 288 may perform various operations to evaluate different consistencies between the generated data (phosphene detection data 278 and corneal center data 280) and the calibrated data (emitter location data 290), and the output of the geometric constraint engine 288, the fourth error data 270D, may be inversely proportional to the likelihood or consistency parameter. In some instances, the corneal sphere 304 is reconstructed using the phosphene detection data 278 and the emitter location data 290, and the fourth error data 270D is set to the calculated distance between the center of the reconstructed sphere and the corneal center as indicated by the corneal center data 280.

[0050] In some embodiments, the training of the neural network 256 is improved by sequentially training using only certain outputs of the neural network 256 during different training iterations. In a first training step, only the eye segmentation data 276 is used to train the neural network 256. This may be accomplished by modifying the neural network 256 using only the second error data 270B. Once the neural network 256 is sufficiently trained (i.e., sufficiently accurate) for eye segmentation, a second training step is performed by additionally training the neural network 256 using the glimmer detection data 278. This may be accomplished by modifying the neural network 256 using only the second error data 270B and the third error data 270C. Once the neural network 256 is sufficiently trained for eye segmentation and glimmer detection, a third training step is performed by additionally training the neural network 256 using the corneal center data 280. This may be accomplished by using all of the error data 270 to modify the neural network 256. In some instances, the same training images and GT data may be used during different training steps. In some embodiments, the AR device 200 remains in training mode until an accuracy threshold is met or a maximum iteration threshold is met (i.e., the number of training images used meets the maximum iteration threshold).

[0051] When the AR device 200 is operating in runtime mode, the network output data 264 includes 2D pupil center data 274, eye segmentation data 276, and corneal center data 280. These outputs may be used in conjunction with the calibration angle κ to calculate the gaze vector 238 using a post-processing block 266. In some embodiments, the post-processing block 266 may be separated into a first post-processing block 266A, a second post-processing block 266B, and a third post-processing block 266C. The first post-processing block 266A receives the 2D pupil center data 274 and the eye segmentation data 276 as inputs and calculates the 3D pupil center 292. The second post-processing block 266B receives the 3D pupil center 292 and the corneal center data 280 as inputs and calculates the optical axis 310. The third post-processing block 266C receives the optical axis 310 and the calibration angle κ as inputs and calculates the gaze vector 238.

[0052] FIG. 9 illustrates one possible structure of the neural network 256, which comprises multiple layers 257. Each layer 257 may represent one or more operations performed on the input image I(x,y,c). In some embodiments, the neural network 256 may consist of a feature encoding based network and five task branches. As shown, some outputs of the neural network 256 may be obtained earlier and with fewer operations performed than other outputs of the neural network 256. For example, the phosphene and pupil indicator 282 and the corneal center data 280 may be obtained with fewer calculations than other outputs, and the eye segmentation data 276 is obtained with more calculations than other outputs. Thus, an advantage of initially using the eye segmentation data 276 to train the neural network 256 is that some layers used only for the calculation of the eye segmentation data 276 can be fine-tuned without being influenced by feedback from other outputs.

[0053] FIG. 10 illustrates a recurrent neural network (RNN) 1000 that derives features from the neural network 256 and produces an eyeblink prediction. More specifically, the RNN 1000 derives features (e.g., output) for several consecutive frames from the neural network 256 (the neural network 256 may produce features for each frame) and predicts whether an eyeblink will occur in the next 1, 2, and / or 3 frames (probability) based on the motion and flow of the features. In some embodiments, the RNN 1000 derives features only from the consecutive frames output by the neural network 256 instead of the input image I(x,y,c) itself. The RNN 1000 has the advantage of predicting a time series or sequence of data (motion, tracking, etc.). The RNN 1000 may have an internal memory state with the output, unlike a convolutional neural network (CNN), which feeds back on itself and forms a cycle to process sequence input data. In this way, the RNN 1000 "remembers" the history of events that occurred as a sequence, and can therefore better predict the next outcome. t-1 , X t , and X t+1 corresponds to the features for successive frames from the neural network, O t-1 , O t , and O t+1 is the probability that there will be an eyeblink event in the next frame. The RNN 1000 may be considered as an additional post-processing step that may be included to improve the performance of the AR device 200 because it takes advantage of the high-level features produced by the neural network 256.

[0054] 11 illustrates a method 1100 of estimating a gaze vector using a neural network. The steps of method 1100 do not have to be performed in the order shown, and one or more steps of method 1100 may be omitted during performance of method 1100. In some embodiments, one or more steps of method 1100 may be performed by processing module 250 or some other component of AR device 200.

[0055] In step 1102, an input image of a user's eye (e.g., input image I(x,y,c)) is received. In some embodiments, the input image is received from a camera (e.g., off-axis camera 260). The camera may be mounted on and / or a component of an optical device. In some embodiments, method 1100 includes capturing the input image of the user's eye using the camera. In some embodiments, method 1100 includes transmitting the input image from the camera to a processing module (e.g., processing module 250).

[0056] In step 1104, an input image of the eye is provided to a neural network (e.g., neural network 256). In some embodiments, the input image is provided to a processor that implements the neural network. The processor may be a special purpose processor (e.g., a neural network processor) having an architecture that allows certain operations commonly performed by neural networks (e.g., convolution, matrix multiplication) to be performed faster than with a general purpose processor. For example, the special purpose processor may include a systolic array having multiple processing elements for performing various arithmetic operations in parallel or simultaneously on different pixels of the input image.

[0057] In step 1106, network output data (e.g., network output data 264) is generated using the neural network. The network output data may include data corresponding to the overall output of the neural network and to outputs of intermediate layers of the neural network. For example, the network output data may include some data (e.g., eye segmentation data 276) derived from the overall output of the neural network and some data (e.g., phosphene and pupil indicator 282 and corneal center data 280) derived from outputs of intermediate layers of the neural network. Additionally or alternatively, the network output data may include some data (e.g., phosphene detection data 278 and 2D pupil center data 274) derived from outputs of different intermediate layers of the neural network and one or more additional layers not involved in processing the overall output of the neural network.

[0058] In step 1108, a 3D pupil center (e.g., 3D pupil center 292) is calculated based on the network output data. In some embodiments, the 3D pupil center is calculated based on the 2D pupil data and the eye segmentation data.

[0059] In step 1110, an optical axis associated with the user's eye (e.g., optical axis 310) is calculated based on the network output data. In some embodiments, the optical axis is calculated based on the 3D pupil center and some data of the network output data (e.g., corneal center data 280).

[0060] In step 1112, a gaze vector corresponding to the eye (e.g., gaze vector 238) is calculated based on the network output data. In some embodiments, the gaze vector is calculated using only certain components of the network output data (e.g., 2D pupil center data 274, eye segmentation data 276, and corneal center data 280), while other components of the network output data (e.g., flash detection data 278) are not used in the calculation. In some embodiments, calculating the gaze vector may include one or more post-processing steps. For example, a 3D pupil center (e.g., 3D pupil center 292) may first be calculated based on one or more components of the network output data (e.g., 2D pupil center data 274 and eye segmentation data 276). Second, an optical axis (e.g., optical axis 310) may be calculated based on the 3D pupil center and an additional component of the network output data (e.g., corneal center data 280). Then, the gaze vector may be calculated based on the optical axis and a calibration angle corresponding to the user.

[0061] 12 illustrates a method 1200 of training a neural network. The steps of method 1200 do not have to be performed in the order shown, and one or more steps of method 1200 may be omitted during performance of method 1200. In some embodiments, one or more steps of method 1200 may be performed by processing module 250 or some other component of AR device 200.

[0062] In step 1202, a plurality of training input images (e.g., input image I(x,y,c)) are received. The plurality of training input images may be received from a camera (e.g., off-axis camera 260) or may be artificially generated or retrieved for training purposes. Each of the plurality of training images may be an image of an eye. Step 1202 may be similar to step 1102.

[0063] Steps 1204-1212 may be performed for each training input image of the plurality of training input images. In step 1204, the training input images are provided to a neural network (e.g., neural network 256). Step 1204 may be similar to step 1104.

[0064] In step 1206, training network output data (e.g., network output data 264) is generated using the neural network. Step 1206 may be similar to step 1106.

[0065] In step 1208, GT data (e.g., GT data 268) is received from a user input device. The GT data may include one or more components (e.g., 2D pupil center GT data 283, eye segmentation GT data 284, flash detection GT data 286) that correspond to one or more components of the training network output data.

[0066] In step 1210, error data (e.g., error data 270) is calculated based on the difference between the training network output data and the GT data. The error data may include one or more components (e.g., first error data 270A, second error data 270B, third error data 270C, fourth error data 270D) corresponding to one or more components of the GT data and / or the training network output data.

[0067] In step 1212, the neural network is modified based on the error data. In some embodiments, the magnitude of the modifications to the neural network is proportional to the magnitude of the error data, such that a larger difference between the training network output data and the GT data may correspond to a larger modification to the neural network. In some embodiments, the neural network may be trained using a back-propagation algorithm that calculates one or more weight updates to the weights of the neural network.

[0068] FIG. 13 illustrates a simplified computer system 1300 according to an embodiment described herein. The computer system 1300 as illustrated in FIG. 13 may be incorporated into a device such as an AR device 200 as described herein. FIG. 13 provides a schematic illustration of one embodiment of a computer system 1300 that may perform some or all of the steps of the method provided by various embodiments. It should be noted that FIG. 13 is intended only to provide a generalized illustration of various components, any or all of which may be utilized as desired. FIG. 13 thus broadly illustrates a situation in which individual system elements may be implemented in a relatively separated manner or in a relatively more integrated manner.

[0069] Computer system 1300 is shown to comprise hardware elements that may be electrically coupled via a bus 1305 or may otherwise communicate as needed. The hardware elements may include one or more processors 1310, including one or more general purpose processors and / or one or more special purpose processors, such as, but not limited to, digital signal processing chips, graphic acceleration processors, and / or the like, one or more input devices 1315, which may include, but are not limited to, a mouse, a keyboard, a camera, and / or the like, and one or more output devices 1320, which may include, but are not limited to, a display device, a printer, and / or the like.

[0070] The computer system 1300 may further include and / or communicate with one or more non-transitory storage devices 1325, which may comprise, but are not limited to, local and / or network accessible storage devices and / or may include, but are not limited to, disk drives, drive arrays, optical storage devices, solid-state storage devices such as random access memory ("RAM"), and / or read-only memory ("ROM"), which may be programmable, flash updatable, and / or the like. Such storage devices may be configured to implement any suitable data storage, including, but not limited to, various file systems, database structures, and / or the like.

[0071] The computer system 1300 may also include a communication subsystem 1330, which may include, but is not limited to, a modem, a network card (wireless or wired), an infrared communication device, a wireless communication device, and / or a chipset, such as, but not limited to, a Bluetooth device, an 802.11 device, a WiFi device, a WiMax device, a cellular communication facility, and / or the like. The communication subsystem 1330 may include one or more input and / or output communication interfaces, allowing data to be exchanged with a network, such as a network described below to give as an example, another computer system, a television, and / or any other device described herein. Depending on the desired functionality and / or other implementation concerns, a portable electronic device or similar device may communicate images and / or other information via the communication subsystem 1330. In other embodiments, a portable electronic device, e.g., a first electronic device, may be incorporated into the computer system 1300, e.g., an electronic device, as an input device 1315. In some embodiments, the computer system 1300 further comprises a working memory 1335, which may include a RAM or ROM device as described above.

[0072] Computer system 1300 may also include software elements, shown as currently residing in working memory 1335, including operating system 1340, device drivers, executable libraries, and / or other code, such as one or more application programs 1345, that may comprise computer programs provided by various embodiments and / or that may be designed to implement methods and / or configure systems provided by other embodiments as described herein. Simply by way of example, one or more procedures described with respect to the methods discussed above may be implemented as code and / or instructions executable by a computer or a processor within a computer, and in certain aspects such code and / or instructions may then be used to configure and / or adapt a general-purpose computer or other device to perform one or more operations in accordance with the methods described.

[0073] A set of these instructions and / or code may be stored on a non-transitory computer-readable storage medium, such as storage device 1325 described above. In some cases, the storage medium may be incorporated within a computer system, such as computer system 1300. In other embodiments, the storage medium may be separate from the computer system, e.g., a removable medium, such as a compact disc, and / or may be provided within an installation package, such that the storage medium may be used to program, configure, and / or adapt a general-purpose computer with the instructions / code stored thereon. These instructions may take the form of executable code that is executable by computer system 1300, and / or may take the form of source and / or installable code that, upon compilation and / or installation on computer system 1300 using, for example, any of a variety of commonly available compilers, installation programs, compression / decompression utilities, and the like, then takes the form of executable code.

[0074] It will be apparent to those skilled in the art that substantial variations may be made according to specific requirements. For example, customized hardware may also be used and / or particular elements may be implemented in hardware, software, including portable software such as applets, or both. Furthermore, connection to other computing devices, such as network input / output devices, may also be employed.

[0075] As noted above, in one aspect, some embodiments may employ a computer system, such as computer system 1300, to perform methods according to various embodiments of the present technology. According to one set of embodiments, some or all of the procedures of such methods are performed by computer system 1300 in response to processor 1310 executing one or more sequences of one or more instructions, which may be embedded in operating system 1340, and / or other code, such as application program 1345, contained in working memory 1335. Such instructions may be read into working memory 1335 from another computer-readable medium, such as one or more of storage devices 1325. By way of example only, execution of a sequence of instructions contained in working memory 1335 may cause processor 1310 to perform one or more procedures of the methods described herein. Additionally or alternatively, some of the methods described herein may be performed through specialized hardware.

[0076] The terms "machine-readable medium" and "computer-readable medium" as used herein refer to any medium involved in providing data that causes a machine to operate in a tangible manner. In an embodiment implemented using computer system 1300, various computer-readable media may be involved in providing instructions / code to processor 1310 for execution and / or may be used to store and / or carry such instructions / code. In many implementations, computer-readable media are physical and / or tangible storage media. Such media may take the form of non-volatile or volatile media. Non-volatile media include, for example, optical and / or magnetic disks, such as storage device 1325. Volatile media include dynamic memory, such as, but not limited to, working memory 1335.

[0077] Common forms of physical and / or tangible computer readable media include, for example, a floppy disk, a flexible disk, a hard disk, magnetic tape or any other magnetic medium, a CD-ROM, any other optical medium, punch cards, paper tape, any other physical medium with a pattern of holes, RAM, PROM, EPROM, FLASH-EPROM, any other memory chip or cartridge, or any other medium from which a computer can read instructions and / or code.

[0078] Various forms of computer-readable media may be involved in carrying one or more sequences of one or more instructions to the processor 1310 for execution. By way of example only, the instructions may initially be carried on a magnetic and / or optical disk of a remote computer. The remote computer may load the instructions into its dynamic memory and send the instructions as signals over a transmission medium to be received and / or executed by the computer system 1300.

[0079] The communications subsystem 1330 and / or its components generally receive signals and the bus 1305 may then convey the signals and / or the data, instructions, etc. carried by the signals to the working memory 1335, from which the processor 1310 retrieves and executes the instructions. The instructions received by the working memory 1335 may optionally be stored on a non-transitory storage device 1325 either before or after execution by the processor 1310.

[0080] The methods, systems, and devices discussed above are examples. Various configurations may omit, substitute, or add various procedures or components, as appropriate. For example, in alternative configurations, the method may be performed in a different order than described, and / or various steps may be added, omitted, and / or combined. Also, features described with respect to one configuration may be combined in various other configurations. Different aspects and elements of the configurations may be combined in a similar manner. Also, technology evolves, and thus many of the elements are examples and do not limit the scope of the disclosure or the claims.

[0081] Specific details are given in the description to provide a thorough understanding of the example configurations, including the implementation. However, the configurations may be practiced without these specific details. For example, well-known circuits, processes, algorithms, structures, and techniques are shown without unnecessary detail to avoid obscuring the configurations. This description provides only example configurations and does not limit the scope, applicability, or configuration of the claims. Rather, the foregoing description of the configurations will provide those skilled in the art with an effective description for implementing the described techniques. Various changes may be made in the function and arrangement of elements without departing from the spirit or scope of the present disclosure.

[0082] Also, the configurations may be described as processes, depicted as schematic flow charts or block diagrams. Although the operations may be described as sequential processes, many of the operations may be performed in parallel or simultaneously. In addition, the order of the operations may be rearranged. The processes may have additional steps not included in the figures. Furthermore, embodiments of the method may be implemented by hardware, software, firmware, middleware, microcode, hardware description languages, or any combination thereof. When implemented in software, firmware, middleware, or microcode, the program code or code segments for performing the necessary tasks may be stored in a non-transitory computer-readable medium, such as a storage medium. A processor may perform the tasks described.

[0083] Although several example configurations have been described, various modifications, alternative constructions, and equivalents may be used without departing from the spirit of the disclosure. For example, the aforementioned elements may be components of a larger system, and other rules may take precedence over or otherwise modify the application of the present technology. Also, some steps may take place before, during, or after the aforementioned elements are discussed. Thus, the foregoing description is not intended to be binding on the scope of the claims.

[0084] As used in this specification and the appended claims, the singular forms "a," "an," and "the" include plural references unless the context clearly dictates otherwise. Thus, for example, reference to a "user" includes a plurality of such users, reference to a "processor" includes reference to one or more processors and equivalents thereof known to those skilled in the art, and so forth.

[0085] Additionally, the words "comprise," "comprising," "contains," "containing," "include," "including," and "includes," when used in this specification and the claims that follow, are intended to specify the presence of stated features, integers, components, or steps, but they do not exclude the presence or addition of one or more other features, integers, components, steps, acts, or groups.

[0086] It should also be understood that the examples and embodiments described herein are for illustrative purposes only, and that various modifications or changes in light thereof will be suggested to those skilled in the art and are within the spirit and scope of the present application and the appended claims.

Claims

1. 1. A method of estimating a gaze vector for a user of an optical device, the method comprising: receiving an input image of the user's eye from a camera mounted on the optical device; providing an input image of the user's eye to a neural network, the neural network having a plurality of layers, the neural network having been pre-trained using a plurality of training input images; using the neural network to generate network output data, the network output data including two-dimensional (2D) pupil data and corneal center data, a first subset of the plurality of layers is used to generate the 2D pupil data and a second subset of the plurality of layers is used to generate the corneal center data, the first subset and the second subset share at least two common layers, and each of the first subset and the second subset includes at least two unique layers; calculating a gaze vector corresponding to the user's eye based on the network output data; A method comprising:

2. The method of claim 1 , wherein the network output data further comprises eye segmentation data.

3. The method of claim 1 , wherein the 2D pupil data includes a 2D pupil center.

4. The method of claim 2 , wherein the eye segmentation data comprises a segmentation of the user's eye into a plurality of regions including one or more of a background region, a sclera region, a pupil region, or an iris region.

5. The method of claim 2 , wherein the corneal center data includes a 2D or 3D corneal center.

6. The method further comprises: generating a three-dimensional image based on the 2D pupil data and the eye segmentation data. The method of claim 2 further comprising calculating a (3D) pupil center.

7. The method of claim 6 , further comprising calculating an optical axis associated with the user's eye based on the 3D pupil center and the corneal center data.

8. The method of claim 7 , further comprising calculating a gaze vector associated with an eye of the user based on an optical axis and a calibration angle corresponding to the user.

9. The neural network comprises: For each training input image of the plurality of training input images, providing the training input images to the neural network; using said neural network to generate training network output data; Receiving ground truth (GT) data; calculating error data based on a difference between the training network output data and the GT data; modifying the neural network based on the error data; and The method of claim 1 , wherein the subject is pre-trained by performing

10. The training network output data is Training 2D pupil center data, training eye segmentation data, Training flash detection data, or Training corneal center data The method of claim 9 , comprising one or more of:

11. The GT data is 2D pupil center GT data, Eye segmented GT data, or Flash detection GT data The method of claim 10, comprising one or more of the following:

12. The method of claim 11 , wherein the eye segmented GT data comprises a manually created segmentation of the user's eye into a plurality of training regions including one or more of a training background region, a training sclera region, a training pupil region, and a training iris region.

13. The method of claim 11 , wherein the flash detection GT data includes a manually created identification of a flash location.

14. The error data is the difference between the training 2D pupil center data and the 2D pupil center GT data; a difference between the training eye segmentation data and the eye segmentation GT data; a difference between the training flash detection data and the flash detection GT data; or an error based on the training corneal center data and one or more geometric constraints The method of claim 11 , comprising one or more of:

15. An optical device, comprising: A camera and a processor communicatively coupled to the camera; Equipped with The processor, receiving an input image of a user's eye from the camera; providing an input image of the user's eye to a neural network, the neural network having a plurality of layers, the neural network having been pre-trained using a plurality of training input images; using the neural network to generate network output data, the network output data including two-dimensional (2D) pupil data and corneal center data, a first subset of the plurality of layers is used to generate the 2D pupil data and a second subset of the plurality of layers is used to generate the corneal center data, the first subset and the second subset share at least two common layers, and each of the first subset and the second subset includes at least two unique layers; calculating a gaze vector corresponding to the user's eye based on the network output data; 16. An optical device configured to perform operations including:

16. The optical device of claim 15 , further comprising a plurality of infrared (IR) light emitting diodes (LEDs).

17. The optical device of claim 15 , wherein the network output data further comprises eye segmentation data.

18. The optical device of claim 15 , wherein the 2D pupil data includes a 2D pupil center.

19. 20. The optical device of claim 17, wherein the eye segmentation data comprises a segmentation of the user's eye into a plurality of regions including one or more of a background region, a sclera region, a pupil region, or an iris region.

20. The neural network comprises: For each training input image of the plurality of training input images, providing the training input images to the neural network; using said neural network to generate training network output data; Receiving ground truth (GT) data; calculating error data based on a difference between the training network output data and the GT data; modifying the neural network based on the error data; and The optical device of claim 15, which has been pre-trained by performing

Citation Information

Patent Citations

  • Information processing device, information processing method, and recording medium

    JP2017211891A

  • Augmented reality display device with deep learning sensors

    WO2018039269A1