Method and apparatus for corner detection using neural networks and corner detectors
A hybrid method using neural networks and angle detectors efficiently identifies features like corners in head-mounted displays, improving localization accuracy and immersion in augmented reality systems.
Patent Information
- Application Number
- JP2024004488
- Authority / Receiving Office
- JP · JP
- Patent Type
- Patents
- Current Assignee / Owner
- Priority Date
- 2019-05-17
- Filing Date
- 2024-01-16
- Publication Date
- 2025-01-17
- Estimated Expiration
- 2040-05-15
AI Technical Summary
Existing head-mounted image display devices struggle with accurately detecting features like corners in images, especially under low light conditions, leading to challenges in creating precise localization maps for augmented reality experiences.
A hybrid approach combining neural networks and angle detectors is employed to identify feature candidates, particularly corners, by processing images in real-time and using lightweight neural networks to classify and extract relevant features efficiently, even in noisy environments.
The hybrid method effectively identifies corners and other features in real-time, enhancing the precision of localization maps and improving the immersion and realism of augmented reality experiences by accurately aligning virtual content with the real environment.
Smart Images

Figure 0007616796000019 
Figure 0007616796000020 
Figure 0007616796000021
Abstract
Description
[Technical field]
[0001] The present disclosure relates to a head mounted image display device and a method and apparatus for detecting corners in images produced by a head mounted image display device. [Background technology]
[0002] Modern computing and display technologies have facilitated the development of so-called "mixed reality" (MR) systems for "virtual reality" (VR) or "augmented reality" (AR) experiences, in which digitally reproduced images or parts thereof are presented to a user in a manner that appears or can be perceived as real. VR scenarios typically involve the presentation of digital or virtual image information without transparency to real-world visual input. 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 (i.e., transparency to real-world visual input). Thus, AR scenarios involve the presentation of digital or virtual image information with transparency to real-world visual input.
[0003] MR systems can generate and display color data, which increases the realism of the MR scenario. Many of these MR systems display color data by sequentially projecting sub-images in different (e.g., primary) colors or "fields" (e.g., red, green, and blue) corresponding to a color image in rapid succession. Projecting the color sub-images at a sufficiently high rate (e.g., 60 Hz, 120 Hz, etc.) can result in a smooth color MR scenario in the user's memory.
[0004] Various optical systems generate images, including color images, at various depths to display MR (VR and AR) scenarios. MR systems may employ at least a wearable display device (e.g., a head-mounted display, a helmet-mounted display, or smart glasses) that is loosely coupled to the user's head and thus moves as the user's head moves. When the user's head movement is detected by the display device, the displayed data may be updated (e.g., "warped") to account for changes in head pose (i.e., the orientation and / or location of the user's head).
[0005] As an example, when a user wearing a head mounted display device views a virtual representation of a virtual object on the display and walks around the area in which the virtual object appears, the virtual object can be rendered per viewpoint to give the user the perception of walking around an object that occupies real space. When a head mounted display device is used to present multiple virtual objects, head pose measurements can be used to render the scene to match the user's dynamically changing head pose and provide an increased sense of immersion.
[0006] AR-enabling head-mounted display devices provide simultaneous viewing of both real and virtual objects. With an "optical see-through" display, a user can look through a transparent (or semi-transparent) element in the display system and directly view light from real objects in the environment. The transparent element, often referred to as a "combiner," superimposes the light from the display over the user's view of the real world, and the light from the display projects an image of virtual content over the see-through view of the real objects in the environment. A camera may be mounted on the head-mounted display device to capture images or video of the scene being viewed by the user.
[0007] Current optical systems, such as those in MR systems, optically render virtual content. The content is "virtual" in that it does not correspond to actual physical objects located at discrete positions in space. Instead, the virtual content exists only in the brain (e.g., visual centers) of a user of a head-mounted display device when stimulated by light beams directed at the user's eyes.
[0008] In some cases, the head-mounted image display device may display virtual objects relative to the real environment and / or allow the user to place and / or manipulate virtual objects relative to the real environment. In such cases, the image display device may be configured to localize the user relative to the real environment such that the virtual objects may be correctly displaced relative to the real environment. A localization map may be used by the head-mounted image display device to perform the localization. In particular, when performing the localization, the image display device may obtain real-time input images from a camera system of the image display device and match features in the input images with features of the localization map.
[0009] Therefore, feature detection is an important feature for head mounted image display devices. Methods and apparatus are described herein for detecting features such as corners in an image. The detected corners can be utilized as features to create a localization map. Alternatively, corners can be detected as features from an input image for matching with features of the localization map for user localization. Summary of the Invention [Means for solving the problem]
[0010] The present disclosure generally relates to point of interest detection using a combination of neural networks and corner detectors.
[0011] In one embodiment described herein, a hybrid approach (using both neural networks and feature detectors) utilizes hardware and / or software blocks along with neural networks (e.g., lightweight neural networks) to process images in real-time or non-real-time and extract feature (e.g., corner) candidates to efficiently classify and extract areas where good candidates for features (e.g., corners) exist. Good features (e.g., corners) are then selected from the candidates. This technique outperforms existing solutions that suffer from higher image noise (e.g., under low light) and areas where it is difficult to identify features (e.g., corners) because existing solutions are all very local in nature. The advantage of neural networks is that they use the larger context of the image to identify features (e.g., corners) even when it is difficult to do so based only on nearby pixels. The hybrid approach also outperforms other neural networks that are trained to extract features (e.g., corners). In particular, these neural networks consume a lot of computational resources and memory, extract features (e.g., corners) end-to-end, and are not in real time, so they are not nearly as fast and efficient as the hybrid approach described herein.
[0012] The device, configured to be worn on the head by a user, includes a screen configured to present graphics for the user, a camera system configured to view an environment in which the user is located, and a processing unit coupled to the camera system, the processing unit configured to: obtain a location of a feature relative to an image of the environment, the location of the feature being identified by a neural network; determine a region of interest for one of the features in the image, the region of interest having a size less than the size of the image; and perform corner detection using a corner detection algorithm to identify corners in the region of interest.
[0013] The device, configured to be worn on the head by a user, includes a screen configured to present graphics for the user, a camera system configured to view an environment in which the user is located, and a processing unit coupled to the camera system, the processing unit configured to: obtain feature locations for image data associated with the environment, the feature locations being identified by a neural network; determine a region of interest for one of the features in the image, the region of interest having a size less than the size of the image; and perform corner detection using a corner detection algorithm to identify corners in the region of interest.
[0014] Optionally, the processing unit is configured to determine a region of interest having a location based on at least one of the locations identified by the neural network, the location being relative to the image.
[0015] Optionally, the image data is associated with at least one image generated by the camera system and transmitted to the neural network.
[0016] Optionally, the camera system is configured to generate images and transmit the images to the neural network.
[0017] Optionally, the neural network is within a module of the device.
[0018] Optionally, the neural network is implemented in one or more computing devices remote from the apparatus.
[0019] Optionally, the neural network has machine learning capabilities.
[0020] Optionally, the processing unit is configured to obtain the locations of the features by obtaining a heat map generated by the neural network, the heat map indicating the locations of the features.
[0021] Optionally, the region of interest comprises N×N patches, and the processing unit is configured to perform corner detection on the N×N patches, where N is an integer greater than 1.
[0022] Optionally, the region of interest comprises a patch having 144 pixels or less, and the processing unit is configured to perform corner detection on the patch.
[0023] Optionally, the region of interest comprises 8x8 patches and the processing unit is configured to perform corner detection on the 8x8 patches.
[0024] Optionally, the image data includes at least one low resolution image having reduced resolution from at least one high resolution image produced by the camera system.
[0025] Optionally, the image has a first resolution and the location of the feature is identified by a neural network based on another image having a second resolution that is less than the first resolution.
[0026] Optionally, the processing unit is also configured to convert an image with the first resolution into another image with a second resolution.
[0027] Optionally, the first resolution comprises a VGA resolution.
[0028] Optionally, the second resolution comprises a QVGA resolution.
[0029] Optionally, the apparatus further comprises a neural network.
[0030] Optionally, the neural network is trained using a reference data set.
[0031] Optionally, the neural network comprises a convolutional neural network.
[0032] Optionally, the neural network is configured to calculate the interest point locations and the descriptors.
[0033] Optionally, the neural network comprises an encoder configured to spatially downsample the input image.
[0034] Optionally, the neural network also comprises a focus decoder configured to operate on the encoder output from the encoder and produce a score for each pixel in the input image, and a descriptor decoder configured to operate on the encoder output and upsample the encoder output to a higher resolution and produce a vector for each pixel in the input image.
[0035] Optionally, the neural network is configured to use homography fitting to improve the geometric consistency of the interest detector.
[0036] Optionally, the neural network comprises a convolutional neural network configured to train the interest detector.
[0037] Optionally, the neural network is configured to perform image warping and create one or more warped images within the homography fit.
[0038] Optionally, the processing unit is configured to determine a position of the corner in the image based at least in part on a position of the corner in the region of interest.
[0039] Optionally, the apparatus further includes a non-transitory medium configured to store the location of the first corner within the image.
[0040] Optionally, the processing unit is configured to determine a score for each pixel in the region of interest.
[0041] Optionally, the neural network is part of the processing unit.
[0042] Optionally, the apparatus further comprises a neural network, the neural network communicatively coupled to the processing unit.
[0043] A method performed by the head-mounted image display device includes the steps of obtaining a location of a feature in an image, the location of the feature being identified by a neural network; determining a region of interest for one of the features in the image, the region of interest having a size less than the size of the image; and performing corner detection using a corner detection algorithm to identify corners in the region of interest.
[0044] Optionally, the region of interest is determined to have a location based on at least one of the locations identified by the neural network, the location being relative to the image.
[0045] Optionally, the method further comprises generating an image and transmitting the image to a neural network.
[0046] Optionally, the neural network is within a module of the head mounted visual display device.
[0047] Optionally, the neural network is implemented in one or more computing devices remote from the head-mounted visual display device.
[0048] Optionally, the neural network has machine learning capabilities.
[0049] Optionally, the location of the features is obtained by receiving a heat map from the neural network, the heat map indicating the location of the features.
[0050] Optionally, the region of interest comprises N×N patches and corner detection is performed on the N×N patches, where N is an integer greater than 1.
[0051] Optionally, the region of interest comprises a patch having 144 pixels or less, and corner detection is performed on the patch.
[0052] Optionally, the region of interest comprises 8x8 patches and corner detection is performed on the 8x8 patches.
[0053] Optionally, the image has a first resolution and the location of the feature is identified by a neural network based on another image having a second resolution that is less than the first resolution.
[0054] Optionally, the method further comprises converting the image with the first resolution into another image with a second resolution.
[0055] Optionally, the first resolution comprises a VGA resolution.
[0056] Optionally, the second resolution comprises a QVGA resolution.
[0057] Optionally, the method further comprises a neural network.
[0058] Optionally, the neural network is trained using a reference data set.
[0059] Optionally, the neural network comprises a convolutional neural network.
[0060] Optionally, the neural network is configured to calculate the interest point locations and the descriptors.
[0061] Optionally, the neural network comprises an encoder configured to spatially downsample the input image.
[0062] Optionally, the neural network also comprises a focus decoder configured to operate on the encoder output from the encoder and produce a score for each pixel in the input image, and a descriptor decoder configured to operate on the encoder output and upsample the encoder output to a higher resolution and produce a vector for each pixel in the input image.
[0063] Optionally, the neural network is configured to use homography fitting to improve the geometric consistency of the interest detector.
[0064] Optionally, the neural network comprises a convolutional neural network and the interest detector is trained with the convolutional neural network.
[0065] Optionally, the neural network is configured to perform image warping and create one or more warped images within the homography fit.
[0066] Optionally, the method further comprises determining a position of the corner in the image based at least in part on the position of the corner in the region of interest.
[0067] Optionally, the method further comprises storing the location of the first corner in the image in a non-transitory medium.
[0068] Optionally, the method further comprises determining a score for each pixel in the region of interest.
[0069] A method of training and using a neural network for image interest point detection includes generating a reference data set comprising a plurality of reference sets, each of the plurality of reference sets including an image and a set of reference interest points corresponding to the image; for each reference set of the plurality of reference sets, generating a warped image by applying a homography to the image; generating a set of warped reference interest points by applying the homography to the set of reference interest points; the neural network receiving the image as input to calculate a set of calculated interest points and calculated descriptors; and the neural network receiving the warped image as input to calculate the calculated warped interest points and the calculated descriptors. The method includes the steps of: calculating a set of computed warped descriptors; calculating a loss based on the computed set of interest points, the computed descriptors, the computed warped set of interest points, the computed warped descriptor, the set of reference interest points, the warped reference set of interest points, and the homography; and modifying the neural network based on the loss, and the method further includes the steps of obtaining a location of a feature in the input image, the location of the feature being identified by the neural network; determining a region of interest for one of the features in the input image, the region of interest having a size less than the size of the input image; and performing corner detection using a corner detection algorithm to identify corners in the region of interest.
[0070] Optionally, the neural network includes an interest point detector sub-network and a descriptor sub-network, the interest point detector sub-network configured to receive an image as input and to calculate a set of calculated interest points based on the image, and the descriptor sub-network configured to receive an image as input and to calculate a calculated descriptor based on the image.
[0071] Optionally, modifying the neural network based on the losses comprises modifying one or both of the interest detector sub-network and the descriptor sub-network based on the losses.
[0072] Optionally, the method further includes, prior to the step of generating a reference dataset, training a focus detector sub-network using a synthetic dataset comprising a plurality of synthetic images and a plurality of sets of synthetic focus points, and the step of generating a reference dataset includes a step of generating the reference dataset using the focus detector sub-network.
[0073] Optionally, the step of generating the reference dataset includes the steps of: acquiring an image from an unlabeled dataset comprising a plurality of unlabeled images for each of the plurality of reference sets; generating a plurality of warped images by applying a plurality of homographies to the image; calculating a set of a plurality of calculated warped interest points by a neural network receiving the plurality of warped images as input; generating a set of a plurality of calculated interest points by applying a plurality of inverse homographies to the plurality of sets of calculated warped interest points; and aggregating the plurality of sets of calculated interest points to obtain a set of reference interest points.
[0074] Optionally, each of the multiple reference sets further includes a reference descriptor corresponding to the image, and generating the reference dataset includes obtaining an image from an unlabeled dataset comprising a plurality of unlabeled images for each of the multiple reference sets; generating a plurality of warped images by applying a plurality of homographies to the image; calculating the plurality of computed warped descriptors by a neural network receiving the plurality of warped images as input; generating a plurality of computed descriptors by applying a plurality of inverse homographies to the plurality of computed warped descriptors; and aggregating the plurality of computed descriptors to obtain a reference descriptor.
[0075] Optionally, the set of reference interest points is a two-dimensional map with values that correspond to the probability that a particular pixel of the image has an interest point located at that particular pixel.
[0076] The method includes the steps of capturing a first image, capturing a second image, a neural network receiving the first image as an input to thereby compute a first calculated set of points of interest and a first calculated descriptor, a neural network receiving the second image as an input to thereby compute a second calculated set of points of interest and a second calculated descriptor, and determining a homography between the first image and the second image based on the first and second calculated sets of points of interest and the first and second calculated descriptors, wherein the neural network computes the first calculated set of points of interest and the first calculated descriptor. The method includes a focus point detector sub-network configured to calculate a set of focus points and a second set of calculated focus points, and a descriptor sub-network configured to calculate a first calculated descriptor and a second calculated descriptor, and the method further includes a step of obtaining a location of a feature in the input image, the location of the feature being identified by the neural network, a step of determining a region of interest for one of the features in the input image, the region of interest having a size less than the size of the input image, and a step of performing corner detection using a corner detection algorithm to identify corners in the region of interest.
[0077] Optionally, the interest point detector sub-network is configured to calculate the first set of calculated interest points in parallel with the descriptor sub-network calculating the first calculated descriptor, and the interest point detector sub-network is configured to calculate the second set of calculated interest points in parallel with the descriptor sub-network calculating the second calculated descriptor.
[0078] Optionally, the method further includes training the neural network by generating a reference dataset comprising a plurality of reference sets, each of the plurality of reference sets including an image and a set of reference interest points corresponding to the image; for each reference set of the plurality of reference sets, generating a warped image by applying a homography to the image; generating a warped set of reference interest points by applying the homography to the set of reference interest points; calculating the calculated set of interest points and the calculated descriptors by the neural network receiving the image as input; calculating the calculated warped set of interest points and the calculated warped descriptors by the neural network receiving the warped image as input; calculating a loss based on the calculated set of interest points, the calculated descriptor, the calculated warped set of interest points, the calculated warped descriptor, the set of reference interest points, the warped set of reference interest points, and the homography; and modifying the neural network based on the loss.
[0079] Optionally, modifying the neural network based on the losses comprises modifying one or both of the interest detector sub-network and the descriptor sub-network based on the losses.
[0080] Optionally, the method further includes, prior to the step of generating a reference dataset, training a focus detector sub-network using a synthetic dataset comprising a plurality of synthetic images and a plurality of sets of synthetic focus points, and the step of generating a reference dataset includes a step of generating the reference dataset using the focus detector sub-network.
[0081] Optionally, the step of generating the reference dataset includes the steps of: acquiring an image from an unlabeled dataset comprising a plurality of unlabeled images for each of the plurality of reference sets; generating a plurality of warped images by applying a plurality of homographies to the image; calculating a set of a plurality of calculated warped interest points by a neural network receiving the plurality of warped images as input; generating a set of a plurality of calculated interest points by applying a plurality of inverse homographies to the plurality of sets of calculated warped interest points; and aggregating the plurality of sets of calculated interest points to obtain a set of reference interest points.
[0082] Optionally, each of the multiple reference sets further includes a reference descriptor corresponding to the image, and generating the reference dataset includes obtaining an image from an unlabeled dataset comprising a plurality of unlabeled images for each of the multiple reference sets; generating a plurality of warped images by applying a plurality of homographies to the image; calculating the plurality of computed warped descriptors by a neural network receiving the plurality of warped images as input; generating a plurality of computed descriptors by applying a plurality of inverse homographies to the plurality of computed warped descriptors; and aggregating the plurality of computed descriptors to obtain a reference descriptor.
[0083] The optical device includes at least one camera configured to capture a first image and a second image, and is coupled to the camera and configured to perform operations including receiving the first image and the second image from the at least one camera, a neural network using the first image as an input to calculate a first calculated set of points of interest and a first calculated descriptor, a neural network using the second image as an input to calculate a second calculated set of points of interest and a second calculated descriptor, and determining a homography between the first image and the second image based on the first and second calculated sets of points of interest and the first and second calculated descriptors. the neural network includes a point of interest detector sub-network configured to calculate a first set of calculated points of interest and a second set of calculated points of interest, and a descriptor sub-network configured to calculate a first calculated descriptor and a second calculated descriptor, and the one or more processors are configured to obtain locations of features in the input image, the locations of the features identified by the neural network; determine a region of interest for one of the features in the input image, the region of interest having a size less than a size of the image; and perform corner detection using a corner detection algorithm to identify corners in the region of interest.
[0084] Optionally, the interest point detector sub-network is configured to calculate the first set of calculated interest points in parallel with the descriptor sub-network calculating the first calculated descriptor, and the interest point detector sub-network is configured to calculate the second set of calculated interest points in parallel with the descriptor sub-network calculating the second calculated descriptor.
[0085] Optionally, the neural network has been pre-trained by the steps of: generating a reference dataset comprising a plurality of reference sets, each of the plurality of reference sets including an image and a set of reference interest points corresponding to the image; for each reference set of the plurality of reference sets, generating a warped image by applying a homography to the image; generating a warped set of reference interest points by applying the homography to the set of reference interest points; computing the computed set of interest points and the computed descriptors by the neural network receiving the image as input; computing the computed warped set of interest points and the computed warped descriptors by the neural network receiving the warped image as input; computing a loss based on the computed set of interest points, the computed descriptor, the computed warped set of interest points, the computed warped descriptor, the set of reference interest points, the warped set of reference interest points, and the homography; and modifying the neural network based on the loss.
[0086] Optionally, modifying the neural network based on the losses comprises modifying one or both of the interest detector sub-network and the descriptor sub-network based on the losses.
[0087] Optionally, the step of generating the reference dataset includes the steps of: acquiring an image from an unlabeled dataset comprising a plurality of unlabeled images for each of the plurality of reference sets; generating a plurality of warped images by applying a plurality of homographies to the image; calculating a set of a plurality of calculated warped interest points by a neural network receiving the plurality of warped images as input; generating a set of a plurality of calculated interest points by applying a plurality of inverse homographies to the plurality of sets of calculated warped interest points; and aggregating the plurality of sets of calculated interest points to obtain a set of reference interest points.
[0088] Optionally, each of the multiple reference sets further includes a reference descriptor corresponding to the image, and generating the reference dataset includes obtaining an image from an unlabeled dataset comprising a plurality of unlabeled images for each of the multiple reference sets; generating a plurality of warped images by applying a plurality of homographies to the image; calculating the plurality of computed warped descriptors by a neural network receiving the plurality of warped images as input; generating a plurality of computed descriptors by applying a plurality of inverse homographies to the plurality of computed warped descriptors; and aggregating the plurality of computed descriptors to obtain a reference descriptor.
[0089] Additional and other objects, features, and advantages of the present disclosure are set forth in the detailed description, drawings, and claims. The present invention provides, for example, the following: (Item 1) 1. A device configured to be worn on the head by a user, comprising: a screen configured to present graphics for the user; a camera system configured to view an environment in which the user is located; A processing unit coupled to the camera system, the processing unit comprising: obtaining feature locations related to image data associated with the environment, the feature locations being identified by a neural network; and determining a region of interest for one of the features in the image, the region of interest having a size less than a size of the image; performing corner detection using a corner detection algorithm to identify corners within the region of interest; A processing unit configured to An apparatus comprising: (Item 2) 2. The apparatus of claim 1, wherein the processing unit is configured to determine a region of interest having a location based on at least one of the locations identified by the neural network, the location being relative to the image. (Item 3) 2. The apparatus of claim 1, wherein the image data is associated with at least one image, the at least one image being generated by the camera system and transmitted to the neural network. (Item 4) 2. The apparatus of claim 1, wherein the neural network is within a module of the apparatus. (Item 5) 2. The apparatus of claim 1, wherein the neural network is implemented within one or more computing devices remote from the apparatus. (Item 6) 2. The apparatus of claim 1, wherein the neural network has machine learning capabilities. (Item 7) 2. The apparatus of claim 1, wherein the processing unit is configured to obtain the location of the feature by obtaining a heat map generated by the neural network, the heat map indicating the location of the feature. (Item 8) 2. The apparatus of claim 1, wherein the region of interest comprises N×N patches, and the processing unit is configured to perform the corner detection on the N×N patches, where N is an integer greater than 1. (Item 9) 2. The apparatus of claim 1, wherein the region of interest comprises a patch having 144 pixels or less, and the processing unit is configured to perform the corner detection on the patch. (Item 10) Item 1. The apparatus of item 1, wherein the region of interest comprises 8x8 patches, and the processing unit is configured to perform the corner detection on the 8x8 patches. (Item 11) 2. The apparatus of claim 1, wherein the image data includes at least one low-resolution image having reduced resolution from at least one high-resolution image produced by the camera system. (Item 12) Item 12. The apparatus of item 11, wherein the processing unit is also configured to convert an image with the first resolution into another image with the second resolution. (Item 13) Item 12. The apparatus of item 11, wherein the first resolution comprises a VGA resolution. (Item 14) Item 12. The apparatus of item 11, wherein the second resolution comprises QVGA resolution. (Item 15) Item 1, further comprising the neural network. (Item 16) Item 16. The apparatus of item 15, wherein the neural network is trained using a reference data set. (Item 17) Item 16. The apparatus of item 15, wherein the neural network comprises a convolutional neural network. (Item 18) Item 16. The apparatus of item 15, wherein the neural network is configured to calculate point of interest locations and descriptors. (Item 19) Item 16. The apparatus of item 15, wherein the neural network comprises an encoder configured to spatially downsample an input image. (Item 20) The neural network also a point of interest decoder configured to operate on an encoder output from the encoder and to produce a score for each pixel in the input image; a descriptor decoder configured to operate on the encoder output, up-sample the encoder output to a higher resolution, and produce a vector for each pixel in the input image; 20. The apparatus according to item 19, comprising: (Item 21) Item 16. The apparatus of item 15, wherein the neural network is configured to use homography fitting to improve the geometric consistency of the interest point detector. (Item 22) 22. The apparatus of claim 21, wherein the neural network comprises a convolutional neural network configured to train the point of interest detector. (Item 23) 22. The apparatus of claim 21, wherein the neural network is configured to perform image warping and create one or more warped images within the homography fit. (Item 24) Item 10. The apparatus of item 1, wherein the processing unit is configured to determine a position of a corner in the image based, at least in part, on a position of a corner in the region of interest. (Item 25) 25. The apparatus of claim 24, further comprising a non-transitory medium configured to store a position of the first corner within the image. (Item 26) Item 10. The apparatus of item 1, wherein the processing unit is configured to determine a score for each pixel in the region of interest. (Item 27) 2. The apparatus of claim 1, wherein the neural network is part of the processing unit. (Item 28) 2. The apparatus of claim 1, further comprising: a neural network, the neural network being communicatively coupled to the processing unit. (Item 29) 1. A method implemented by a head mounted image display device, comprising: Obtaining a location of a feature in an image, the location of the feature being identified by a neural network; determining a region of interest for one of the features in the image, the region of interest having a size less than a size of the image; performing corner detection using a corner detection algorithm to identify corners within the region of interest; A method comprising: (Item 30) 30. The method of claim 29, wherein the region of interest is determined to have a location based on at least one of the locations identified by the neural network, the location being relative to the image. (Item 31) generating said image; transmitting said image to said neural network; 30. The method of claim 29, further comprising: (Item 32) 30. The method of claim 29, wherein the neural network is within a module of the head-mounted image display device. (Item 33) 30. The method of claim 29, wherein the neural network is implemented in one or more computing devices remote from the head-mounted image display device. (Item 34) 30. The method of claim 29, wherein the neural network has machine learning capabilities. (Item 35) 30. The method of claim 29, wherein the location of the features is obtained by receiving a heat map from the neural network, the heat map indicating the location of the features. (Item 36) 30. The method of claim 29, wherein the region of interest comprises N×N patches and the corner detection is performed on the N×N patches, where N is an integer greater than 1. (Item 37) 30. The method of claim 29, wherein the region of interest comprises a patch having 144 pixels or less, and the corner detection is performed on the patch. (Item 38) 30. The method of claim 29, wherein the region of interest comprises 8x8 patches and the corner detection is performed on the 8x8 patches. (Item 39) 30. The method of claim 29, wherein the image has a first resolution and the location of the feature is identified by the neural network based on another image having a second resolution that is less than the first resolution. (Item 40) 40. The method of claim 39, further comprising converting the image with the first resolution to another image with the second resolution. (Item 41) Item 40. The method of item 39, wherein the first resolution comprises a VGA resolution. (Item 42) Item 40. The method of item 39, wherein the second resolution comprises QVGA resolution. (Item 43) 30. The method of claim 29, further comprising the neural network. (Item 44) Item 44. The method of item 43, wherein the neural network is trained using a reference data set. (Item 45) 44. The method of claim 43, wherein the neural network comprises a convolutional neural network. (Item 46) Item 44. The method of item 43, wherein the neural network is configured to calculate point of interest locations and descriptors. (Item 47) Item 44. The method of item 43, wherein the neural network comprises an encoder configured to spatially downsample an input image. (Item 48) The neural network also a point of interest decoder configured to operate on an encoder output from the encoder and to produce a score for each pixel in the input image; a descriptor decoder configured to operate on the encoder output, up-sample the encoder output to a higher resolution, and produce a vector for each pixel in the input image; Item 48. The method of item 47, comprising: (Item 49) Item 44. The method of item 43, wherein the neural network is configured to use homography fitting to improve the geometric consistency of the interest detector. (Item 50) 50. The method of claim 49, wherein the neural network comprises a convolutional neural network, and the interest detector is trained using the convolutional neural network. (Item 51) 50. The method of claim 49, wherein the neural network is configured to perform image warping and create one or more warped images within the homography fit. (Item 52) 30. The method of claim 29, further comprising determining a position of a corner in the image based, at least in part, on a position of a corner in the region of interest. (Item 53) Item 53. The method of item 52, further comprising storing the location of the first corner in the image in a non-transitory medium. (Item 54) 30. The method of claim 29, further comprising determining a score for each pixel in the region of interest. [Brief description of the drawings]
[0090] The drawings illustrate the design and utility of various embodiments of the present disclosure. It should be noted that the drawings are not drawn to scale, and elements of similar structure or function are represented by similar reference numerals throughout the drawings. In order to better understand how to obtain the foregoing and other advantages and objects of the various embodiments of the present disclosure, a more detailed description of the present disclosure, briefly described above, will be given by reference to specific embodiments thereof as illustrated in the accompanying drawings. With the understanding that these drawings depict only exemplary embodiments of the present disclosure and therefore should not be considered as limiting its scope, the present disclosure will be explained and described with additional specificity and detail through the use of the accompanying drawings.
[0091] [Figure 1] FIG. 1 illustrates determining point correspondences between points of interest in a pair of input images using a neural network, according to some embodiments.
[0092] [Diagram 2] FIG. 2 illustrates the general architecture of a neural network, according to some embodiments.
[0093] [Diagram 3] FIG. 3 illustrates a first training step in which an interest detector sub-network is trained using a synthetic dataset comprising a plurality of synthetic images, according to some embodiments.
[0094] [Figure 4] FIG. 4 illustrates a second training step in which a reference data set is compiled using homography fitting, according to some embodiments.
[0095] [Diagram 5] FIG. 5 illustrates a third training step in which a neural network is trained using a reference data set, according to some embodiments.
[0096] [Figure 6]FIG. 6 illustrates the computation of a homography between two captured images using a neural network, according to some embodiments.
[0097] [Figure 7] FIG. 7 illustrates an example of a synthetic dataset, according to some embodiments.
[0098] [Figure 8] FIG. 8 illustrates an example of an unlabeled data set, according to some embodiments.
[0099] [Figure 9] FIG. 9 illustrates an example architecture of a neural network, according to some embodiments.
[0100] [Figure 10] FIG. 10 illustrates various steps of homography fitting employed during the second training step according to some embodiments.
[0101] [Figure 11] FIG. 11 illustrates certain aspects of random homography generation according to some embodiments.
[0102] [Figure 12] FIG. 12 illustrates a schematic diagram of an AR device that can utilize embodiments described herein.
[0103] [Figure 13] FIG. 13 illustrates a method for training a neural network and using the neural network to perform image interest detection and description, according to some embodiments.
[0104] [Figure 14] FIG. 14 illustrates a method for training a neural network for image interest detection and description, according to some embodiments.
[0105] [Figure 15] FIG. 15 illustrates an image display system having an image display device according to some embodiments.
[0106] [Figure 16] FIG. 16 illustrates another image display system having an image display device according to some embodiments.
[0107] [Figure 17] FIG. 17 illustrates another image display system having an image display device according to some embodiments.
[0108] [Figure 18] FIG. 18 illustrates another image display system having an image display device according to some embodiments.
[0109] [Figure 19] FIG. 19 illustrates an image display device that displays frames at multiple depth planes.
[0110] [Figure 20] FIG. 20 illustrates a method for determining a map to enable an image display device to locate a user of the image display device and / or perform other functions.
[0111] [Figure 21] FIG. 21 illustrates an example of an environment that is divided into multiple cells.
[0112] [Figure 22A] FIG. 22A illustrates a processing unit of an image display device.
[0113] [Figure 22B] FIG. 22B illustrates the signal flow for the processing unit of FIG. 22A.
[0114] [Figure 22C] FIG. 22C illustrates a variation of the processing unit of FIG. 22A.
[0115] [Figure 22D] FIG. 22D illustrates an example of the signal flow described with reference to FIG. 22B.
[0116] [Figure 22E] FIG. 22E illustrates an example of a Harris detection result.
[0117] [Figure 22F] FIG. 22F illustrates an example of a mask compared to the Harris detection results.
[0118] [Figure 22G] FIG. 22G illustrates an example of the results of hybrid angle detection.
[0119] [Diagram 23] 23A-23B illustrate classification of image points using eigenvalues and / or Harris scores.
[0120] [Figure 24] FIG. 24 illustrates a method performed by the processing unit of FIG. 22A.
[0121] [Diagram 25] FIG. 25 illustrates a specialized processing system, according to some embodiments. DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS
[0122] Various embodiments are described below with reference to the figures. It should be noted that the figures are not drawn to scale, and elements of similar structure or function are represented by similar reference numbers throughout the figures. It should also be noted that the figures are intended only to facilitate the description of the embodiments. They are not intended as a comprehensive description of the invention or as limitations on the scope of the invention. In addition, the illustrated embodiment does not necessarily have to have all the aspects or advantages shown. An aspect or advantage described in conjunction with a particular embodiment is not necessarily limited to that embodiment and can be practiced in any other embodiment even if not so illustrated or not so explicitly described.
[0123] The following description relates to illustrative VR, AR, and / or MR systems with which the embodiments described herein may be practiced, however, it should be understood that the embodiments are also suitable for use in other types of display systems (including other types of VR, AR, and / or MR systems), and thus the embodiments are not limited to only the illustrative examples disclosed herein.
[0124] Convolutional neural networks have been shown to outperform hand-engineered representations in almost every task that requires images as input. In particular, fully convolutional neural networks that predict two-dimensional (2D) “feature points” or “landmarks” have been deeply studied for various tasks such as human pose estimation, object detection, and room layout estimation. Some of these techniques utilize large datasets of 2D ground truth locations labeled with human annotations. It seems natural to formulate interest point detection as a large-scale supervised machine learning problem and train modern convolutional neural network architectures to detect them. Unfortunately, the concept of interest point detection is not semantically well defined compared to more semantic tasks such as human body feature point estimation, where networks are trained to detect semantic body parts such as the corners of the mouth or the left ankle. This difficulty makes it nontrivial to train convolutional neural networks with strongly supervised interest points.
[0125] Instead of using human teachers to define points of interest in real images, the embodiments described herein use self-training to result in a self-supervised solution. In the approach of the embodiments described herein, a large dataset of pseudo ground truth points of interest locations in real images is created and supervised by the point of interest detector itself, not human knowledge. To generate pseudo ground truth points of interest, a fully convolutional neural network is first trained on millions of unique examples from a synthetic image dataset. It has been determined that the detection and precise localization of distinct points can be important, since feature extraction is a fundamental step for image matching and tracking in image sequences. These distinct points have been characterized as corners, edges (basic elements for the analysis of polygons), and centers of circular features such as holes, disks, or rings. Confluence points (Y, X, T, L) are also considered essential to detect such distinct points. For example, T-confluence points generally exhibit intervening and therefore depth discontinuity.
[0126] Borrowing these insights, a large dataset of synthetic shapes for large-scale training of interest point detectors can be created that consists of simple geometric shapes, with no ambiguity in interest point locations. Interest point detectors as described herein have been shown to significantly outperform traditional interest point detectors on datasets of synthetic shapes. When applied to real images, interest point detectors perform well, considering that domain matching is a known problem when training on synthetic images. However, the performance of interest point detectors is less consistent compared to classical interest point detectors on a diverse set of image textures and patterns. To bridge the gap in performance on real-world images between interest point detectors and classical detectors, one or more embodiments described herein include a feature (which may be referred to as homography matching herein) that enables multi-scale multi-transformation.
[0127] Homography adaptation enables self-supervised training of the interest detector. In some embodiments, the input image is warped multiple times to help the interest detector see the scene from many different viewpoints and scales. When pseudo ground truth interest points are generated and used in conjunction with the interest detector to improve the performance of the detector, the resulting detections become more reproducible. One step after detecting robust and reproducible interest points is to associate a fixed dimensionality descriptor vector to each point (or every image pixel), which can be used to match interest points across images. Thus, in some embodiments, the interest detector sub-network may be combined with a descriptor sub-network. The resulting network can be used to extract points from a pair of images and establish point correspondences, as shown in FIG. 1.
[0128] According to some embodiments, including self-supervised approaches, an initial interest point detector and homography fitting procedure automatically labels images from the unlabeled domain of the target. The generated labels are then used to train a fully convolutional network that extracts both points and descriptors from the images. Fully convolutional networks can be used in a wide range of applications, especially those involving per-image geometry tasks such as computing a homography between two images. Homographies provide accurate or nearly accurate per-image transformations for scenes with camera motion, large distances to objects, and planar scenes that involve rotations only around the camera center. Since most of the world is reasonably flat, homographies are a good model for what happens when the same three-dimensional (3D) point is viewed from different viewpoints. Because homographies do not require 3D information, they are randomly sampled and can be easily applied to any 2D image, not much different than bilinear interpolation. For these reasons, homographies are utilized in some embodiments.
[0129] FIG 1 illustrates the determination of point correspondences 106 between points of interest in a pair of input images 102 using a neural network 100, according to some embodiments. Specifically, FIG 1 shows two instantiations of neural network 100 (i.e., neural networks 100-1, 100-2), which is a fully convolutional neural network that utilizes point correspondences to compute scale invariant feature transform (SIFT)-like 2D point of interest locations and descriptors in a single forward pass. Upon receiving input images 102-1, 102-2 as input, neural networks 100-1, 100-2 compute sets of computed points of interest 108-1, 108-2 and computed descriptors 110-1, 110-2, respectively, based on input images 102-1, 102-2. Point correspondences 106 are then determined by a comparison between the calculated points of interest 108-1, 108-2, informed by the descriptors associated with each of the points of interest. For example, the descriptors associated with different points of interest may be matched. Points of interest corresponding to different images with the most similar descriptors may be determined to correspond to each other according to one of several possible similarity scoring procedures.
[0130] According to one embodiment, a first point of interest corresponding to the input image 102-1 may be determined to correspond to a second point of interest corresponding to the input image 102-2 by determining that, among the five closest points of interest (according to pixel-to-pixel distance) to the first point of interest, a descriptor associated with the second point of interest is most similar (e.g., determined by using the L2 distance) to the first point of interest compared to the descriptors associated with the five closest points of interest. According to another embodiment, a first point of interest corresponding to the input image 102-1 may be determined to correspond to a second point of interest corresponding to the input image 102-2 by determining that, among all points of interest corresponding to the input image 102-2, a descriptor associated with the second point of interest is most similar to the descriptor associated with the first point of interest compared to the descriptors associated with all points of interest corresponding to the input image 102-2.
[0131] FIG. 2 illustrates a general architecture of a neural network 100 according to some embodiments. The neural network 100 may include an interest detector sub-network 112 and a descriptor sub-network 114, each of which has a single sub-network input 120-1, 120-2 (respectively) and a single sub-network output 122-1, 122-2 (respectively). Although the two sub-networks are illustrated separately, they may share one or more convolutional layers and / or neurons, as described with reference to FIG. 9. In some embodiments, the neural network 100 may include a network input 116 configured to receive an input image 102 as an input. The input image 102 may then be fed to the sub-network inputs 120-1, 120-2. In response to receiving an input image 102 at the sub-network input 120-1, the point of interest detector sub-network 112 may calculate and output a calculated point of interest 108 at the sub-network output 122-1, which is then fed into the network output 118-1. In response to receiving an input image 102 at the sub-network input 120-2, the descriptor sub-network 114 may calculate and output a calculated descriptor 110 at the sub-network output 122-2, which is then fed into the network output 118-2. Thus, the sub-networks 112, 114 can provide different outputs based on the same input and represent different branches of the neural network 100.
[0132] The neural network 100 may operate on full-size images and produce point of interest detections with fixed-length descriptors in a single forward pass. In some embodiments, the input image 102 may have dimensions H×W, where H is the height of the input image 102 in pixels and W is the width of the input image 102 in pixels. In some embodiments, the computed points of interest 108 may be a list of point of interest pixel locations (e.g., a list of coordinate pairs), or additionally or alternatively, the computed points of interest 108 may be a 2D map with dimensions H×W, where each pixel corresponds to a probability "point" for that pixel in the input (i.e., input image 102). In the same embodiment, the computed descriptor 110 may be a set of fixed length descriptors, each of which corresponds to an identified point of interest, or additionally or alternatively, the computed descriptor 110 may have dimensions H×W×D, where D is the length of the descriptor computed at each pixel of the H×W image. Thus, even pixels that have a low probability of containing a point of interest will have a descriptor of length D.
[0133] Training of the neural network 100 may be enabled by the network modifier 126 and / or sub-network modifiers 124-1, 124-2, which may receive error signals, loss signals, and / or correction signals during the training phase and modify the layers and / or neurons of the network. The neural network 100 may be modified such that errors between the network output (computed points of interest 108 and calculated descriptors 110) and ground truth data may be reduced during subsequent launches with the same input image 102 or different images. For example, the neural network 100 may be modified based on error signals / values indicative of differences between the output and ground truth, based on loss signals / values indicative of certain quantities to be minimized, and / or based on correction signals indicative of specific modifications to be made to the neural network 100. Modifying the neural network 100 may include modifying only the points of interest detector sub-network 112, modifying only the descriptor sub-network 114, and / or modifying both sub-networks 112, 114.
[0134] FIG. 3 illustrates a first training step in which the interest detector sub-network 112 is trained using a synthetic data set 128, comprising a plurality of synthetic images, according to some embodiments. The training step illustrated in FIG. 3 may include only the interest detector sub-network 112 and may ignore the descriptor sub-network 114. Since there is no existing large database of interest landmark images, the deep interest detector benefits from the creation of a large synthetic data set consisting of simplified 2D geometric shapes through synthetic data rendering of quadrilaterals, triangles, lines, and ellipses. Examples of these shapes are shown with reference to FIG. 7. In this data set, landmark ambiguity can be removed by modeling the interest points with simple Y-junctions, L-junctions, T-junctions, and centers of compact ellipses and endpoints of line segments.
[0135] Once the synthetic images are rendered, homography warping is applied to each image to increase the number of training examples. The data may be generated in real time, and no example may be seen twice by the network. During a single training iteration, a synthetic image 130 is provided to the interest point detector sub-network 112, which calculates a set of calculated interest points 108. The set of synthetic interest points 132 corresponding to the synthetic image 130 is compared to the calculated interest points 108, and a loss 134 is calculated based on the comparison. The interest point detector sub-network 112 is then modified based on the loss 134. Multiple training iterations are performed until one or more conditions are met, such as the loss 134 being below a predefined threshold and / or the synthetic dataset 128 being used comprehensively.
[0136] Compared to other conventional corner detection approaches such as FAST, Harris angles, and Shi-Tomasi's "Good Features to Track", the interest detector sub-network 112 produces better results on the synthetic dataset 128. Further evaluation of the interest detector sub-network consisted of using simple synthetic geometries that humans can easily label with ground truth corner locations. In one performance evaluation, two different models of interest detector sub-network 112 were used. Both models share the same encoder architecture but differ in the number of neurons per layer, the first model having 64-64-64-64-128-128-128-128-128 neurons per layer and the second model having 9-9-16-16-32-32-32-32-32 neurons per layer. Each detector was given an evaluation dataset along with the synthetic dataset 128 to determine how well they located simple corners. The evaluation demonstrated that the interest detector sub-network 112 outperformed classical detectors in all categories, with the classical detectors having particular difficulty with random inputs.
[0137] 4 illustrates a second training step in which a reference dataset 144 is compiled using homography fitting, according to some embodiments. The reference dataset 144 represents a pseudo ground truth dataset including images obtained from an unlabeled dataset 136, e.g., comprising real-world images, and reference points of interest and reference descriptors. An input image 102 is obtained from the unlabeled dataset 136 and provided to the neural network 100, which calculates a set of computed points of interest 108 and computed descriptors 110 based on the input image 102. The data may be stored as reference sets 142 in the reference dataset 144, each of which includes an input image 102, a computed point of interest 108 corresponding to the input image 102, and a computed descriptor 110 corresponding to the input image 102.
[0138] During a single training iteration, homography adaptation may be employed to use the average response across multiple homography warpings of the input image 102. A homography generator 138 may be used to apply multiple random or pseudo-random homographies to the input image 102 prior to passing the image through the neural network 100. On the other side of the neural network 100, an inverse homography generator 140 may be used to apply multiple inverse homographies to the computed points of interest 108, where the multiple inverse homographies are the inverses of the multiple homographies to unwarp the computed points of interest 108. The process may be repeated for the same input image 102 to obtain multiple unwarped computed points of interest. The multiple unwarped computed points of interest may be aggregated / combined to obtain a set of reference points of interest that are stored in a reference dataset 144 as part of a reference set 142 along with the input image 102 and the reference descriptors.
[0139] Additionally or alternatively, homography adaptation may be employed to improve the descriptors output by the neural network 100. For example, during a single training iteration, a homography generator 138 may be used to apply multiple random or pseudo-random homographies to the input image 102 prior to passing the image through the neural network 100. On the other side of the neural network 100, an inverse homography generator 140 may be used to apply multiple inverse homographies to the computed descriptor 110, where the multiple inverse homographies are the inverses of the multiple homographies, to unwarp the computed descriptor 110. The process may be repeated to obtain multiple unwarped computed descriptors for the same input image 102. The multiple unwarped computed descriptors may be aggregated / combined to obtain a reference descriptor that is stored in a reference dataset 144 as part of a reference set 142 along with the input image 102 and a set of reference interest points.
[0140] The number of homography warpings, Nh, is a hyperparameter of the approach. In some embodiments, the first homography is set equal to identity, so that Nh=1 (meaning no adaptation). In the tests, the range of Nh is varied to try and determine a preferred value, with Nh ranging from small (Nh=10), to medium (Nh=100), and large (Nh=1000) in some embodiments. The results suggest that there are diminishing returns when performing more than 100 homographies. On a holdout set of images from MS-COCO, without any homography adaptation, a recall score of 0.67 was met, with a 21% recall increase when performing Nh=100 transformations and a 22% recall increase when Nh=1,000, fully demonstrating the minimal benefit of using more than 100 homographies.
[0141] When combining interest point response maps or descriptor maps, it may be useful to distinguish between within-scale and across-scale aggregation. Real-world images typically contain features at different scales, as some points that would be considered worthy of interest in high-resolution images are often not even visible in coarser, lower resolution images. However, within a single scale, image transformations such as rotation and translation should not make the interest points appear / disappear. This underlying multi-scale nature of images has different implications for within-scale and across-scale aggregation strategies. Intra-scale aggregation should be similar to computing the intersection of sets, and across-scale aggregation should be similar to the union of sets. The average response across scales can also be used as a multi-scale measure of interest point confidence. The average response across scales is maximized when the interest points are visible across all scales, and these are likely to be the most robust interest points for tracking applications.
[0142] When aggregating across scales, the number of scales considered, Ns, is a hyper-parameter of the approach. Setting Ns=1 corresponds to no multi-scale aggregation (or simply aggregation across only the potentially large image sizes). In some embodiments, for Ns>1, the multi-scale set of images being processed is referred to as a "multi-scale image pyramid." A weighting scheme that weights the levels of the pyramid differently can give greater weight to higher resolution images. This can be important because points of interest detected at lower resolutions have poor localization capabilities and the final aggregated points should be similarly localized. Experimental results have demonstrated that intra-scale aggregation has the greatest effect in terms of reproducibility. In some embodiments, homography matching techniques are applied at training time to improve the generalization capabilities of the sub-networks 112, 114 and the network 100 on real images.
[0143] The theoretical underpinnings for the homography fitting approach are described in the following paragraphs. In some embodiments, the initial interest point function is f θ (·), I (input image), x (resulting points), and H (random homography). x=f θ (I) An ideal interest operator should be covariant with respect to the homography. θ (·) is covariant with H if the output transforms with the input. In other words, a covariant detector will satisfy for all Hx=f θ (H(I)) For clarity, the notation Hx denotes the homography matrix H being applied to the resulting point of interest, and H(I) denotes the entire image I being warped by the homography matrix H. Shifting the homography related term to the right produces: x=H -1 f θ (H(I))
[0144] In practice, interest point detectors do not covary perfectly, and different homographies in the previous equation will result in different interest points x. In some embodiments, this is addressed by performing an empirical sum over a sufficiently large sample of random H. The resulting aggregation over the samples results in a better interest point detector F(·), defined as follows: [ka] In some embodiments, not all matrices will produce good results, not for lack of technical capability, but because not all possible random homographies represent plausible camera transformations. In some embodiments, potential homographies are decomposed into simpler, less representative classes of transformations by sampling for translation, scale, in-plane rotation, and symmetric projective distortions using truncated normal distributions within a given range. These transformations, along with an initial root-centered crop, are configured to help avoid boundary artifacts.
[0145] 5 illustrates a third training step in which the neural network 100 is trained using a reference dataset 144, according to some embodiments. During a single training iteration, a single reference set 142 contained in the reference dataset 144 is retrieved. Each reference set 142 may include an input image 102, a set of reference interest points 148 corresponding to the input image 102, and (optionally) a reference descriptor 150 corresponding to the input image 102. Using one or more homography generators 138, a warped input image 103 is generated by applying a homography to the input image 102, and a warped set of reference interest points 149 is generated by applying the same homography to the reference interest points 148. In sequence or in parallel, neural network 100-1 receives an input image 102 and calculates, based on the input image 102, a set of calculated interest points 108 and a calculated descriptor 110, and neural network 100-2 receives a warped input image 103 and calculates, based on the warped input image 103, a set of calculated warped interest points 109 and a calculated warped descriptor 111.
[0146] A loss L may be calculated based on the computed points of interest 108, the computed descriptor 110, the computed warped points of interest 109, the computed warped descriptor 111, the reference points of interest 148, the warped reference points of interest 149, and / or the homography H, as described below. The neural network 100 may then be modified based on the loss L. Modifying the neural network 100 based on the loss L may include modifying only the points of interest detector sub-network 112, modifying only the descriptor sub-network 114, and / or modifying both sub-networks 112, 114. In some embodiments, the neural network 100 is modified such that the loss L is reduced for subsequent launches using the same criteria set 142. Multiple training iterations are performed until one or more conditions are met, such as the loss L being below a predefined threshold and / or the reference data set 144 being used comprehensively.
[0147] In some embodiments, the loss L is the sum of two intermediate losses: one for the interest point detector Lp and one for the descriptor Ld. Joint loss optimization is enabled due to the availability of pairwise synthetically warped images with both (a) pseudo ground truth interest point locations and (b) ground truth correspondences from a randomly generated homography H that relates the two images. The loss L is balanced as a function of λ by: [ka] where X is (or is associated with) the computed point of interest 108, X' is (or is associated with) the computed warped point of interest 109, Y is (or is associated with) the reference point of interest 148, Y' is (or is associated with) the warped reference point of interest 149, D is (or is associated with) the computed descriptor 110, and D' is (or is associated with) the computed warped descriptor 111. S is a similarity score matrix, which may be determined entirely based on a randomly generated homography H. As illustrated in FIG. 5, either the homography H or the similarity score matrix S may be fed into a loss calculator.
[0148] Focus point detector loss function L p is cell x hw The fully convolutional cross-entropy loss over ∈X. The corresponding ground truth interest labels Y and individual entries are y hw The loss is therefore: [ka] During the ceremony, [ka] The descriptor loss is the number of descriptor cells d from the input image 102. hw ∈D and d' from the warped input image 103 h’w’ ∈D'. The homography-induced correspondence between (h,w) and (h',w') cells can be written as follows: [ka] In the formula, p hw denotes the location of the center pixel within the (h,w) cell, [ka] is the cell location phw Denote by multiplying by the homography H. The complete set of correspondences for a pair of images is S.
[0149] In some embodiments, the weight term λ d helps to balance the presence of positive correspondences over negative ones. The descriptor loss is given by: [ka] During the ceremony, [ka]
[0150] 6 illustrates the computation of a homography H between two captured images 154-1, 154-2 using neural network 100, according to some embodiments. The illustrated embodiment may correspond to a number of systems or devices that utilize neural network 100, such as optical devices, e.g., AR or mixed reality (MR) devices, autonomous vehicles, unmanned aerial vehicles, manned vehicles, robots, among other possibilities.
[0151] After training using the techniques described herein, the neural network 100 may operate in a runtime mode in which captured images 154-1, 154-2 are received from a single camera 152 or from multiple cameras. For example, the captured image 154-1 may be received from a first camera and the captured image 154-2 may be received from a second camera. The captured images 154-1, 154-2 may be captured by different cameras at the same time, or by a single camera, or by different cameras at different times. The neural network 100 may receive the captured images 154-1, 154-2 via the network input 116 and may calculate a set of computed points of interest 108-1 and a computed descriptor 110-1 based on the captured image 154-1, and a set of computed points of interest 108-2 and a computed descriptor 110-2 based on the captured image 154-2.
[0152] In some embodiments, prior to determining the homography H, the point correspondences 106 are determined by a comparison between the calculated points of interest 108-1 and 108-2, informed by the descriptors associated with each of the points of interest. For example, the descriptors associated with different points of interest may be matched. The points of interest corresponding to different images with the most similar descriptors may be determined to correspond to each other according to one of several possible similarity scoring procedures. The homography H may be calculated from the point correspondences 106. For example, the relative pose between the captured images 154-1, 154-2 may be calculated based on the point correspondences 106, and the homography H may be calculated as a matrix representing the camera rotation and translation of the relative pose. Additionally or alternatively, the relative pose may be equal to the homography H.
[0153] 7 illustrates an example of a synthetic dataset 128, according to some embodiments. In some embodiments, the synthetic dataset 128 may contain a plurality of shapes representing numerous shape types with relatively well-defined points of interest, such as circles, triangles, quadrilaterals (e.g., squares, rectangles, rhombus, parallelograms, etc.), pentagons, hexagons, stars, cubes, spheres, ellipsoids, cylinders, cones, prisms, pyramids, lines, etc.
[0154] 8 illustrates an example of an unlabeled dataset 136, according to some embodiments. The unlabeled dataset 136 may contain images of the real world, with variable lighting, noise, camera effects, etc. Real images are much more cluttered and noisy than synthetic images, and contain a variety of visual effects that cannot be easily modeled in the synthetic world.
[0155] 9 illustrates an example architecture of neural network 100, according to some embodiments. In the illustrated embodiment, neural network 100 includes a single shared encoder that processes and reduces the input image dimensionality. Once processed by the encoder, in some embodiments, the architecture splits into two decoder "heads" that learn task-specific weights, one for interest detection and the other for interest description.
[0156] In some embodiments, neural network 100 uses a VGG-style encoder to reduce the dimensionality of the image. The encoder consists of a convolutional layer, spatial downsampling via pooling operations, and a nonlinear activation function. In some embodiments, the encoder consists of three max pooling layers, where for an image I of dimensions H×W, c =H / 8 and W c = W / 8. The pixels in the lower dimensional output are called cells, and the three 2×2 non-overlapping max pooling operations in the encoder result in 8×8 pixel cells. The encoder calculates an input image I∈R Hc×Wc×F and smaller spatial dimensions and larger channel depths (i.e., H c<H、W c <W、およびF> 1) Map the
[0157] In some instances, a network design for dense prediction may involve an encoder-decoder pair, where the spatial resolution is reduced via pooling or strided convolution, and then upsampled back to full resolution via an upward convolution operation. Unfortunately, upsampling layers tend to add high computational overhead and may introduce undesirable checkerboard artifacts, and therefore for some of the embodiments disclosed herein, the interest point detection head utilizes an explicit decoder to reduce model computation. In some embodiments, the interest point detector head calculates a value X∈R Hc×Wc×65 Calculate the tensor size X∈R H×W The 65 channels correspond to locally non-overlapping 8x8 grid regions of pixels plus extra "no-interest" dust bins. After the per-channel softmax function, the dust bin size is removed, R Hc×Wc×64 From R H×W A retransformation function of is performed.
[0158] The descriptor head is D∈R. Hc×Wc×D Calculate the tensor size R H×W×D 9. To output a dense map of L2-regularized fixed-length descriptors, a model similar to UCN may be used to first output a semi-dense grid of descriptors (e.g., one every 8 pixels). Learning the descriptors semi-densely instead of densely reduces training memory and keeps start-up time traceable. The decoder then performs bicubic interpolation of the descriptors and then L2-normalizes the activations to unit length. As depicted in FIG. 9, both decoders operate on a shared and spatially reduced representation of the input. To keep the model fast and easy to train, in some embodiments, both decoders use unlearned upsampling to scale the representation to R H×W Return to.
[0159] In some embodiments, the encoder is a VGG-like architecture with eight 3x3 convolutional layers of size 64-64-64-64-128-128-128-128. Every two layers there is a 2x2 max pooling layer. Each decoder head has a single 3x3 convolutional layer of 256 units followed by a 1x1 convolutional layer with 65 and 256 units for the interest detector and descriptor, respectively. All convolutional layers in the network may be followed by ReLU nonlinear activation and batch norm normalization.
[0160] FIG. 10 illustrates various steps of homography fitting employed during the second training step (described with reference to FIG. 4) according to some embodiments. In step 1002, an unlabeled image (e.g., input image 102) is obtained from the unlabeled dataset 136. In step 1004, several random homographies are sampled in homography generator 138. In step 1006, the random homographies are applied to the unlabeled image to generate several warped images. In step 1008, the warped images are passed through the point of interest detector sub-network 112. In step 1010, several point responses (e.g., set of calculated points of interest 108) are calculated by the point of interest detector sub-network 112. In step 1012, the point responses (i.e., heat maps) are unwarped by applying several inverse homographies (generated by inverse homography generator 140) to the point responses to generate several unwarped heat maps. In step 1014, the unwarped heatmaps are aggregated through one of a variety of available techniques, such as by averaging, summing, or combining.
[0161] FIG. 11 illustrates certain aspects of random homography generation, according to some embodiments. To generate a random realistic homography transformation, the homography can be decomposed into simpler transformations, such as translation, scaling, rotation, and symmetric projection distortion. To help avoid boundary artifacts that occur when the sample region contains pixels outside the original image, the random homography starts with a center crop, as illustrated in FIG. 11. The transformation magnitudes of the simple transformations are random Gaussian and uniform distributions. To generate a final homography transformation, randomly sampled simple transformations are applied successively to obtain the final homography.
[0162] 12 illustrates a schematic diagram of an AR device 1200 that may utilize embodiments described herein. The AR device 1200 may include a left eyepiece 1202A and a right eyepiece 1202B. In some embodiments, the AR device 1200 includes one or more sensors, including, but not limited to, a left front facing world camera 1206A mounted directly or near the left eyepiece 1202A, a right front facing world camera 1206B mounted directly or near the right eyepiece 1202B, a left side facing world camera 1206C mounted directly or near the left eyepiece 1202A, a right side facing world camera 1206D mounted directly or near the right eyepiece 1202B, a left eye tracker positioned to observe the user's left eye, a right eye tracker positioned to observe the user's right eye, and an ambient light sensor, among other possibilities. In some embodiments, the AR device 1200 includes one or more image projection devices, such as a left projector 1214A optically linked to the left eyepiece 1202A and a right projector 1214B optically linked to the right eyepiece 1202B.
[0163] Some or all of the components of the AR device 1200 may be head-mounted such that the projected image may be viewed by the user. In one particular implementation, all of the components of the AR device 1200 shown in FIG. 12 are mounted on a single device (e.g., a single headset) that is wearable by the user. In another implementation, one or more components of the processing module 1250 are physically separate from the other components of the AR device 1200 and communicatively coupled thereto by one or more wired and / or wireless connections. For example, the processing module 1250 may include a local module 1252 that is on the head-mounted portion of the AR device 1200 and a remote module 1256 that is physically separate from the local module 1252 and communicatively linked thereto. The remote module 1256 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-coupled configuration, etc.).
[0164] The processing module 1250 may include a processor and associated 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., which may be operatively coupled to the AR device 1200 or otherwise attached to the user), such as the camera 1206, an ambient light sensor, an eye tracker, a microphone, an inertial measurement unit, an accelerometer, a compass, a GPS unit, a wireless device, and / or a gyroscope. For example, the processing module 1250 may receive an image 1220 from the camera 1206. Specifically, the processing module 1250 may receive the left front image 1220A from the left front facing world camera 1206A, the right front image 1220B from the right front facing world camera 1206B, the left side image 1220C from the left facing world camera 1206C, and the right side image 1220D from the right facing world camera 1206D. In some embodiments, the images 1220 may include a single image, a pair of images, a video comprising a stream of images, a video comprising a stream of paired images, and the like. The images 1220 may be generated and sent to the processing module 1250 periodically while the AR device 1200 is powered on, or may be generated in response to an instruction sent by the processing module 1250 to one or more of the cameras. As another example, the processing module 1250 may receive ambient light information from an ambient light sensor. As another example, the processing module 1250 may receive gaze information from an eye tracker. As another example, the processing module 1250 may receive image information (eg, image brightness values) from one or both of the projectors 1214.
[0165] The eyepieces 1202A, 1202B may each include a transparent or semi-transparent waveguide configured to direct and out-couple light from the projectors 1214A, 1214B. Specifically, the processing module 1250 may cause the left projector 1214A to output a left virtual image light 1222A onto the left eyepiece 1202A, and the right projector 1214B to output a right virtual image light 1222B onto the right eyepiece 1202B. In some embodiments, the eyepieces 1202 may each include multiple waveguides corresponding to different colors and / or different depth planes. The cameras 1206A, 1206B may each 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 the cameras 1206 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 1206A, 1206B may be positioned to align with the internal coupling locations of virtual image lights 1222A, 1222B, respectively. Cameras 1206C, 1206D may be positioned to the side of the user, for example, to capture images within the user's peripheral vision or outside the user's peripheral vision. Images 1220C, 1220D captured using cameras 1206C, 1206D do not necessarily overlap with images 1220A, 1220B captured using cameras 1206A, 1206B.
[0166] 13 illustrates a method 1300 for training a neural network 100 and performing image interest detection and description using the neural network 100, according to some embodiments. One or more steps of the method 1300 may be performed in a different order than shown in the illustrated embodiment, and one or more steps of the method 1300 may be omitted during implementation of the method 1300.
[0167] In step 1302, the neural network 100 is trained. In step 1302-1, the interest detector sub-network 112 of the neural network 100 is trained using a synthetic data set 128. The synthetic data set 128 may include multiple synthetic images and multiple sets of synthetic interest points corresponding to the multiple synthetic images. Step 1302-1 is further described with reference to FIG.
[0168] In step 1302-2, a reference data set 144 is generated using the interest detector sub-network 112 and / or the descriptor sub-network 114. In some embodiments, the reference data set 144 is generated using homography fitting, in which a plurality of warped images are generated by applying a plurality of homographies to the input image 102, and a plurality of calculated interest points 108 are calculated by passing the plurality of warped images through the interest detector sub-network 112. The plurality of calculated interest points 108 are then unwarped and aggregated to obtain a reference interest point set, which is stored in the reference data set 144. Additionally or alternatively, a plurality of calculated descriptors 110 are calculated by passing the plurality of warped images through the descriptor sub-network 114. The plurality of calculated descriptors 110 are then unwarped and aggregated to obtain a reference descriptor, which is stored in the reference data set 144. Step 1302-2 is further described with reference to FIG. 4.
[0169] In step 1302-3, the interest point detector sub-network 112 and the descriptor sub-network 114 are trained in parallel using the reference data set 144. During a single training iteration, a reference set 142 comprising the input image 102, reference interest points 148, and (optionally) reference descriptors 150 is retrieved from the reference data set 144 and used to calculate the loss L. One or both of the interest point detector sub-network 112 and the descriptor sub-network 114 may be modified based on the calculated loss L. Step 1302-3 is further described with reference to FIG. 5.
[0170] In step 1304, image point of interest detection and description is performed using the neural network 100. In some embodiments, a first captured image 154-1 and a second captured image 154-2 are captured using the camera 152 or two different cameras. The captured images 154-1, 154-2 may then be passed through the neural network 100. The calculated points of interest 108-1, 108-2 and the calculated descriptors 110-1, 110-2 may be used to calculate a homography H. In some embodiments, the AR device 1200 may adjust one or both of the virtual image lights 1222A, 1222B based on the homography H. For example, when a user of AR device 1200 turns his / her head while viewing virtual content, which is perceived by the user by viewing virtual image light 1222A, 1222B projected by projectors 1214A, 1214B onto eyepieces 1202A, 1202B, the virtual light will need to be adjusted based on the homography H associated with the new viewing angle. Step 1304 is further described with reference to FIG.
[0171] 14 illustrates a method 1400 of training a neural network 100 for image interest detection and description, according to some embodiments. One or more steps of the method 1400 may be performed in a different order than shown in the illustrated embodiment, and one or more steps of the method 1400 may be omitted during implementation of the method 1400.
[0172] In step 1402, a warped input image 103 is generated by applying the homography to the input image 102. In step 1404, a warped reference point of interest 149 is generated by applying the homography to the reference point of interest 148. In step 1406, a calculated point of interest 108 and a calculated descriptor 110 are calculated by the neural network 100 receiving the input image 102 as input. In step 1408, a calculated warped point of interest 109 and a calculated warped descriptor 111 are calculated by the neural network 100 receiving the warped input image 103 as input.
[0173] In step 1410, a loss L is calculated based on one or more of the calculated point of interest 108, the calculated descriptor 110, the calculated warped point of interest 109, the calculated warped descriptor 111, the reference point of interest 148, the warped reference point of interest 149, and the homography. In some embodiments, the loss L is further calculated based on the homography. In step 1412, the neural network 100 is modified based on the loss L.
[0174] It should be noted that the neural networks that may be used in various embodiments described herein are not limited to the examples described with reference to FIGS. 1-14. In some embodiments, the neural network may be trained differently using other techniques. Also, in some embodiments, a database that includes good and consistent features (e.g., corners) per image may be used as training data. In such a case, the training data includes images and their respective ground truth detections. For example, the training data may include a data structure that stores images associated with detected features (e.g., corners, corner locations, etc.) in each image. Such training data can be used to train the neural network and classify regions (e.g., whether a region in an image has a good feature candidate). In some embodiments, other mechanisms may be used to provide good "ground truth" detection. For example, in some embodiments, any known detector may be used to run on the training data set and the neural network model may be trained with it. In some embodiments, any other database of good features (e.g., corners) may be used to train the neural network model.
[0175] In some embodiments, the neural network described herein may be implemented as part of a head-mounted image display device or as a component in communication with the head-mounted image display device. In some cases, a localization map of the environment is obtained to locate a user of the head-mounted image display device relative to the user's environment. Real-time input images from a camera system of the image display device are then matched against the localization map to locate the user. For example, corner features of the input image may be detected from the input image and matched against the corner features of the localization map. In some embodiments, the neural network described herein may process the input image and identify a set of features that are potential candidates for corners, and then a corner detector is used to identify one or more corners based on the potential candidates for corners identified by the neural network.
[0176] 15-18 illustrate various components of an image display system 1600 in various embodiments. The image display system 1600 includes an image display device 1601 and an apparatus 1700 for providing input for the image display device 1601. The apparatus 1700 will be described in further detail below. The image display device 1601 may be a VR device, an AR device, an MR device, or any other type of display device. The image display device 1601 includes a frame structure 1602 worn by an end user 1550, a display subsystem 1610 carried by the frame structure 1602 such that the display subsystem 1610 is positioned in front of the eyes of the end user 1550, and a speaker 1606 carried by the frame structure 1602 such that the speaker 106 is positioned adjacent to the ear canal of the end user 1550 (optionally, another speaker (not shown) is positioned adjacent the other ear canal of the end user 1550 to provide stereo / adjustable sound control). The display subsystem 1610 is designed to present light patterns to the eyes of the end user 1550 that can be comfortably perceived as an augmentation to physical reality with a high level of image quality and three-dimensional perception, and is also capable of presenting two-dimensional content. The display subsystem 1610 presents a sequence of frames at high frequencies that provide the perception of a single coherent scene.
[0177] In the illustrated embodiment, the display subsystem 1610 employs an "optical see-through" display, through which the user can view light from real objects directly through a transparent (or semi-transparent) element. The transparent element, often referred to as a "combiner," superimposes the light from the display over the user's view of the real world. To this end, the display subsystem 1610 comprises a partially transparent display. The display is positioned within the field of view of the end user 1550 between the eyes of the end user 1550 and the surrounding environment such that direct light from the surrounding environment is transmitted through the display to the eyes of the end user 1550.
[0178] In the illustrated embodiment, the image projection assembly provides light to a partially transparent display, whereby it is combined with direct light from the surrounding environment and transmitted from the display to the user's eye 1550. The projection subsystem may be a fiber optic scanning-based projection device, and the display may be a waveguide-based display into which scanned light from the projection subsystem is injected to produce, for example, an image at a single optical viewing distance closer than infinity (e.g., arm's length), images at multiple discrete optical viewing distances or focal planes, and / or image layers stacked at multiple viewing distances or focal planes to represent a stereoscopic 3D object. These layers in the light field may be stacked close enough together (i.e., one layer is within the perturbation cone of an adjacent layer) to appear persistent to the human accessory visual system. Additionally or alternatively, picture elements may be blended across two or more layers to increase the perceived continuity of the transition between layers in the light field, even when the layers are more sparsely stacked (i.e., one layer is outside the perturbation cone of an adjacent layer). The display subsystem 1610 may be monocular or binocular.
[0179] The image display device 1601 may also include one or more sensors (not shown) mounted to the frame structure 1602 for detecting the position and movement of the end user's 1550 head 1554 and / or the eye position and interocular distance of the end user's 1550. Such sensors may include image capture devices (such as cameras), microphones, inertial measurement units, accelerometers, compasses, GPS units, wireless devices, and / or gyroscopes), or any combination of the foregoing. Many of these sensors operate under the assumption that the frame 1602 onto which they are affixed is, in turn, substantially fixed to the user's head, eyes, and ears.
[0180] The image display device 1601 may also include a user orientation detection module. The user orientation module may detect the instantaneous position of the end user's 1550 head 1554 (e.g., via a sensor coupled to the frame 1602) and predict the position of the end user's 1550 head 1554 based on the position data received from the sensor. Detecting the instantaneous position of the end user's 1550 head 1554 facilitates a determination of a specific real object the end user 1550 is looking at, thereby providing an indication of a specific virtual object to be generated in relation to that real object, and further providing an indication of the location where the virtual object will be displayed. The user orientation module may also track the eyes of the end user 1550 based on tracking data received from the sensor.
[0181] The image display device 1601 may also include a control subsystem, which may take any of a wide variety of forms. The control subsystem may include a number of controllers, such as one or more microcontrollers, microprocessors or central processing units (CPUs), digital signal processors, graphic processing units (GPUs), other integrated circuit controllers such as application specific integrated circuits (ASICs), programmable gate arrays (PGAs), e.g., field PGAs (FPGAs), and / or programmable logic controllers (PLUs).
[0182] The control subsystem of the image display device 1601 may include a central processing unit (CPU), a graphics processing unit (GPU), one or more frame buffers, and a 3D database for storing 3D scene data. The CPU may control the overall operation, while the GPU may render frames (i.e., convert the 3D scene into a 2D image) from the 3D data stored in the 3D database and store these frames in the frame buffer. One or more additional integrated circuits may control the loading of frames into and out of the frame buffer and the operation of the image projection assembly of the display subsystem 1610.
[0183] The various processing components of the image display device 101 may be physically contained within a distributed subsystem. For example, as illustrated in Figures 15-18, the image display device 1601 may include a local processing and data module 1630 operatively coupled to the display subsystem 1610 and sensors, such as by wired leads or wireless connectivity 1636. The local processing and data module 1630 may be mounted in a variety of configurations, such as fixedly attached to a frame structure 1602 (Figure 15), fixedly attached to a helmet or hat 1556 (Figure 16), removably attached to a torso 1558 of an end user 1550 (Figure 17), or removably attached to a waist 1560 of an end user 1550 in a belt-type configuration (Figure 18). The virtual image display device 1601 may also include a remote processing module 1632 and a remote data repository 1634 operably coupled to the local processing and data module 1630 by wired conductors or wireless connectivity 1638, 1640, etc., such that these remote modules 1632, 1634 are operably coupled to each other and available as resources to the local processing and data module 1630.
[0184] The local processing and data module 1630 may comprise a power efficient processor or controller and digital memory such as flash memory, both of which may be utilized to aid in the processing, caching, and storage of data captured from the sensors and / or obtained and / or processed using the remote processing module 1632 and / or the remote data repository 1634, possibly for passage to the display subsystem 1610 after processing or retrieval. The remote processing module 1632 may comprise one or more relatively powerful processors or controllers configured to analyze and process the data and / or image information. The remote data repository 1634 may comprise a relatively large digital data storage facility and may be available through the Internet or other networking configurations in a "cloud" resource configuration. In some embodiments, all data is stored and all calculations are performed in the local processing and data module 1630, allowing for fully autonomous use from any remote module.
[0185] The couplings 1636, 1638, 1640 between the various components described above may include one or more wired interfaces or ports to provide wire or optical communication, or one or more wireless interfaces or ports, such as via RF, microwave, and IR, to provide wireless communication. In some implementations, all communication may be wired, while in other implementations, all communication may be wireless. In still further implementations, the wired and wireless communication options may differ from those illustrated in FIGS. 15-18. Thus, the particular options of wired or wireless communication should not be considered limiting.
[0186] In some embodiments, the user orientation module is contained within the local processing and data module 1630, while the CPU and GPU are contained within the remote processing module. In alternative embodiments, the CPU, GPU, or portions thereof may be contained within the local processing and data module 1630. The 3D database can be associated with the remote data repository 134 or located locally.
[0187] Some image display systems (e.g., VR systems, AR systems, MR systems, etc.) use multiple volume phase holograms, surface relief holograms, or light directing optical elements that incorporate depth plane information to generate images that appear to originate from distinct depth planes. In other words, a diffraction pattern or diffractive optical element ("DOE") may be incorporated into or imprinted / embossed on a light directing optical element ("LOE", e.g., a planar waveguide) such that collimated light (a light beam with a substantially planar wavefront) intersects with the diffraction pattern at multiple locations as it is substantially totally internally reflected along the LOE and exits toward the user's eye. The DOE is configured such that the light exiting the LOE through it is converged to appear to originate from a particular depth plane. The collimated light may be generated using an optical focusing lens ("concentrator").
[0188] For example, a first LOE may be configured to deliver collimated light to the eye that appears to originate from an optical infinity depth plane (0 diopters). Another LOE may be configured to deliver collimated light that appears to originate from a distance of 2 meters (1 / 2 diopters). Yet another LOE may be configured to deliver collimated light that appears to originate from a distance of 1 meter (1 diopters). It should be understood that by using stacked LOE assemblies, multiple depth planes may be created, with each LOE configured to display an image that appears to originate from a particular depth plane. It should be understood that a stack may include any number of LOEs. However, at least N stacked LOEs are required to generate N depth planes. Furthermore, N, 2N, or 3N stacked LOEs may be used to generate RGB color images at N depth planes.
[0189] To present 3D virtual content to a user, the image display system 1600 (e.g., a VR system, an AR system, an MR system, etc.) projects images of the virtual content into the user's eye such that they appear to originate from different depth planes in the Z direction (i.e., orthogonal away from the user's eye). In other words, the virtual content may not only vary in the X and Y directions (i.e., 2D planes orthogonal to the central visual axis of the user's eye), but may also appear to vary in the Z direction such that the user may perceive objects to be very close, or at infinite distance, or any distance in between. In some embodiments, the user may perceive multiple objects at different depth planes at the same time. For example, the user may see a virtual dragon appearing from infinity and running towards the user. Alternatively, the user may see a virtual bird at a distance of 3 meters away from the user and a virtual coffee cup at arm's length (approximately 1 meter) from the user at the same time.
[0190] The multi-plane focusing system creates the perception of variable depth by projecting images onto some or all of multiple depth planes located at separate fixed distances in the Z direction from the user's eyes. Now referring to FIG. 19, it should be understood that the multi-plane focusing system may display frames at fixed depth planes 1650 (e.g., the six depth planes 1650 shown in FIG. 19). Although the MR system may include any number of depth planes 1650, one exemplary multi-plane focusing system has six fixed depth planes 1650 in the Z direction. When generating virtual content at one or more of the six depth planes 1650, a 3D perception is created such that the user perceives one or more virtual objects at variable distances from the user's eyes. Given that the human eye is more sensitive to objects that are close in distance than objects that appear to be far away, more depth planes 1650 are generated closer to the eyes, as shown in FIG. 19. In some embodiments, the depth planes 1650 may be placed at equal distances away from each other.
[0191] The depth plane position 1650 may be measured in diopters, a unit of refractive power equal to the inverse of the focal length measured in meters. For example, in some embodiments, depth plane 1 may be 1 / 3 diopters away, depth plane 2 may be 0.3 diopters away, depth plane 3 may be 0.2 diopters away, depth plane 4 may be 0.15 diopters away, depth plane 5 may be 0.1 diopters away, and depth plane 6 may represent infinity (i.e., 0 diopters away). It should be understood that some embodiments may generate depth planes 1650 at other distances / diopters. Thus, when generating virtual content at strategically placed depth planes 1650, a user may perceive virtual objects in three dimensions. For example, a user may perceive a first virtual object as being close when it is displayed in depth plane 1 while another virtual object appears at infinity at depth plane 6. Alternatively, the virtual object may be displayed first at depth plane 6, then at depth plane 5, and so on until the virtual object appears very close to the user. It should be understood that the above example is significantly simplified for illustrative purposes. In some embodiments, all six depth planes may be centered on a particular focal distance away from the user. For example, if the virtual content to be displayed is a coffee cup 0.5 meters away from the user, all six depth planes may be generated at various cross sections of the coffee cup, giving the user a highly granular 3D view of the coffee cup.
[0192] In some embodiments, image display system 100 (e.g., VR system, AR system, MR system, etc.) may function as a multi-plane focal system. In other words, all six LOEs may be illuminated simultaneously such that images appearing to arise from six fixed depth planes are generated in rapid succession, with the light source rapidly transmitting image information to LOE1, then LOE2, then LOE3, etc. For example, a portion of a desired image, including an image of the sky at optical infinity, may be thrown at time 1, and an LOE that retains collimation of light (e.g., depth plane 6 from FIG. 19) may be utilized. An image of a closer tree branch may then be thrown at time 2, and an LOE configured to create an image that appears to arise from a depth plane 10 meters away (e.g., depth plane 5 from FIG. 19) may be utilized. An image of a pen may then be thrown at time 3, and an LOE configured to create an image that appears to arise from a depth plane 1 meter away may be utilized. This type of paradigm can be repeated in a fast time-sequential (eg, 360 Hz) manner so that the user's eyes and brain (eg, visual cortex) perceive the inputs as all part of the same image.
[0193] The image display system 1600 may project images (i.e., by diverging or converging light beams) that appear to originate from various locations along the Z axis (i.e., depth planes) and generate images for a 3D experience / scenario. As used herein, light beams include, but are not limited to, directional projections of light energy (including visible and invisible light energy) emitted from a light source. Generating images that appear to originate from various depth planes matches the vergence and accommodation of the user's eyes for that image and minimizes or eliminates vergence-accommodation conflicts.
[0194] Location specific map
[0195] FIG. 20 illustrates a method for determining a map to enable the image display device 1601 to locate a user 1550 of the image display device 1601. As shown in the figure, when the user 1550 is using the image display device 1601, the user 1550 can move the image display device 1601 to achieve different viewing locations and / or orientations. For example, the user 1550 can turn his head, turn his body, and / or walk to different locations. In some embodiments, the image display device 1601 includes a forward-facing camera. In some embodiments, the camera can be a visible light camera (e.g., an RGB camera). In some embodiments, the camera can be an infrared light camera (e.g., an IR / depth camera). In some embodiments, the camera can be a full-spectrum camera (e.g., an integrated visible light camera and depth camera). By moving the image display device 1601, the field of view of the forward-facing camera of the image display device 1601 will change accordingly. While the user 1550 is in different poses, the camera of the image display device 1601 generates corresponding images. In the illustrated embodiment, the user 1550 achieves three different poses by turning his head, and the forward-facing camera of the image display device 1601 generates three images 1700a-1700c corresponding to the three poses. The images 1700a-1700c each capture certain objects 1702 in the environment. For example, image 1700b captures objects 1702a-1702d, and image 1700c captures objects 1702b-1702e. Depending on the pose of the user 1550, certain objects in the environment may be captured in multiple images 1700 of the camera, and certain other objects may be captured in only one image 1700. In some embodiments, the processing unit 1630 of the image display device 1601 is configured to obtain the image 1700 from a camera of the image display device 1601, perform image processing, extract features from the image 1700, and create a map.The map may be stored in a non-transitory medium of the image display device 1601 and may be used by the processing unit 1630 to perform localization of the user 1550. Thus, the map functions as a localization map. In the illustrated embodiment, the map is a three-dimensional representation of the environment as detected by different poses of the user 1550.
[0196] In some embodiments, the environment surrounding the user 1550 may be divided into multiple cells. In such cases, the above map-building techniques may be employed for the different cells of the environment. FIG. 21 illustrates an example of an environment divided into multiple cells 1800. Each cell 1800 is a defined three-dimensional space that represents a portion of the environment. Each cell 1800 may have a predefined size and shape. For example, each cell 1800 may have a footprint of 2m by 2m and a height of 2m. Each cell 1800 may have other footprint dimensions and / or other heights in other embodiments. Also, in some embodiments, each cell 1800 may not have the rectangular configuration shown and may have other shapes. In the illustrated embodiment, the cells 1800 all have the same shape and dimensions. In some embodiments, at least two of the cells 1800 may have different individual dimensions and / or shapes.
[0197] In some embodiments, a user 1550 of the image display device 1601 may head to different locations in the environment that correspond to different cells 1800 and may use a camera of the image display device 1601 to scan the space within the corresponding cell and create different maps for the individual cells of the environment. The maps may be stored in a non-transitory medium of the image display device 1601 to enable a processing unit 1630 of the image display device 1601 to perform localization of the user 1550.
[0198] During use of the localization map to locate the user 1550, the camera of the image display device 1601 captures an image of the environment at the current position and orientation of the user 1550. Such camera image serves as a tracking image (tracking map) to enable the processing unit 1630 of the image display device 1601 to track the position of the user 1550. In particular, the processing unit 1630 of the image display device 1601 processes the tracking image from the camera and determines whether features in the tracking image match features in the localization map. If a match is found, the processing unit 1630 may then determine the position and orientation of the user 1550 based on the matched features. In some embodiments, the localization map may contain less information (e.g., features) than the tracking image captured by the camera of the image display device 1601. This is advantageous because it enables the processing unit 1630 to efficiently match features of the tracking image with features in the localization map. In some embodiments, the localization map may be referred to as a "reference map." When performing localization, the processing unit 1630 performs feature extraction, extracting features from the tracking image, and matching the extracted features with features in the reference map. In some embodiments, the processing unit 1630 is configured to find a six degree of freedom transformation between features of the tracking image and features of the reference map to localize the user 1550. In some embodiments, the processing unit 1630 is configured to find a six degree of freedom transformation between the tracking image itself and the reference map itself to localize the user 1550. In some embodiments, once the user 1550 can be successfully localized relative to its environment using the localization map, the processing unit 1630 can then enable the user 1550 to use the localization map to place virtual content relative to the environment, retrieve virtual content from a previous session, share virtual content with other users, etc.
[0199] During use of the image display device 1601, the processing unit 1630 may need to perform feature detection on images provided by the camera system of the image display device 1601. For example, in some embodiments, when using images to create a localization map, the processing unit 1630 may need to detect features such as corners in these images. The detected features may be utilized by the processing unit 1630 as features for constructing the localization map. When using the localization map to perform localization, the processing unit 1630 may need to match features in the tracking images with features of the localization map. Hence, the processing unit 1630 may be configured to detect features in the tracking images. Features such as corners are generally more stable features in the sense that corners are generally detectable from different viewing directions. Thus, the ability to detect corners in an image may not be significantly affected by changes in viewpoint. Thus, corners are good features for matching between tracking images and localization maps. Corners are also good features for use in stereo matching between images generated at different times and different viewing directions. In some embodiments, features other than corners may also be used.
[0200] Feature detection
[0201] 22A illustrates a processing unit 1630, and in particular, components for implementing corner detection. As shown in the figure, the processing unit 1630 includes hardware 1910 and software 1920. The processing unit 1630 also includes a gamma corrector 1912, an image adjuster 1914, an optional neural network 1915, a corner detector 1916, an optional non-maximum suppressor 1922, an optional spatial binning module 1924, and a corner position determiner 1926. In the illustrated embodiment, the gamma corrector 1912, the image adjuster 1914, the neural network 1915, and the corner detector 1916 are implemented using the hardware 1910 of the processing unit 1630. Also, in the illustrated embodiment, the non-maximum suppressor 1922, the spatial binning module 1924, and the corner position determiner 1926 are implemented using the software 1920 of the processing unit 1630. In some embodiments, the gamma corrector 1912 and the image adjuster 1914 may be implemented using the image signal processor 1911. In some embodiments, the processing unit 1630 does not include the neural network 1915. Instead, the processing unit 1630 may be configured to communicate with the neural network 1915.
[0202] In some embodiments, the gamma corrector 1912, the image adjuster 1914, the neural network 1915, the corner detector 1916, or any combination of the foregoing, may be implemented using software 1920 of the processing unit 1630. Also, in some embodiments, the non-maximum suppressor 1922, the spatial binning module 1924, the corner position determiner 1926, or any combination of the foregoing, may be implemented using hardware 1910 of the processing unit 1630.
[0203] In some embodiments, any of the components 1912, 1914, 1915, 1916, 1922, 1924, 1926 within the processing unit 1630 may be implemented using hardware, software, or a combination of both.
[0204] The gamma corrector 1912 is configured to adjust the non-linear relationship between pixel values and luminance. For example, in some embodiments, the gamma corrector 1912 may be configured to adjust the relationship between pixel values and luminance such that the relationship is linear or more linear compared to that in the original raw image.
[0205] The image adjuster 1914 is configured to acquire an image and, optionally, downscale a resolution of the image to provide an adjusted image. In some embodiments, the image adjuster 1914 is configured to acquire a first image having a first resolution, downscale the first image, and acquire a second image with a second resolution that is less than the first resolution. For example, in one case, the first image may have a VGA resolution and the second image may have a QVGA resolution. In such a case, the second image has a number of pixels that is one-quarter of that for the first image. In other examples, the second image may have a number of pixels that is another percentage of that for the first image.
[0206] Neural network 1915 may be any of the neural networks or components therefor described with reference to any of Figures 1-14. Neural network 1915 is configured to process input images (e.g., camera images) from image display device 1601 and identify a set of features in each input image. In some embodiments, the set of features identified in each input image may serve as "hints" of where corners may be detected.
[0207] The corner detector 1916 is configured to detect corners in the image based on one or more criteria. In the illustrated embodiment, the corner detector 1916 is configured to use feature locations identified by the neural network 1915 to determine possible locations of corners, perform corner detection on those locations, and detect corners. In some embodiments, the corner detector 1926 is configured to detect corners in the image using a Harris corner detection technique. Harris corner detection is achieved by calculating the gradient of each pixel. If both absolute gradient values are large (e.g., above a certain threshold) in two directions (e.g., orthogonal directions), the corner detector 1916 may determine the pixel as a corner. In one implementation of the Harris corner detection technique, the following algorithm is employed to calculate a score for each pixel in the image: (1) Calculate the x and y derivatives of the image [ka] In the formula, G x and G y is the first directional derivative. In some cases, G x and G y may be calculated by convolving the grey values and a difference operator in the directions x, y. (2) Calculate the product of derivatives for each pixel [ka] (3) Calculate the sum of the products of the derivatives at each pixel [ka] (4) Define a matrix at each pixel (x,y) [ka] Alternatively, the matrix H may be expressed as: [ka] In the formula, (I x, I y ) is the gradient at (x,y). (5) Calculate the score (Harris response) for each pixel R = Det(H) - k(Trace(H))^2 where Det(H)=λ1λ2 and Trace(H)=λ1+λ2, where λ1 and λ2 are eigenvalues of H.
[0208] In some embodiments, the Harris response R and / or the eigenvalue λ 1, λ2 may be used by the corner detector 1916 in one or more criteria for corner detection. FIG. 23A shows classification of image points using response R and / or eigenvalues according to the Harris scoring function. FIG. 23B shows classification of image points using eigenvalues according to the Shi-Tomasi criterion. In some embodiments, the eigenvalues λ2 may be used by the corner detector 1916 in one or more criteria for corner detection. FIG. 23A shows classification of image points using eigenvalues according to the Shi-Tomasi criterion. In some embodiments, the eigenvalues λ2 may be used by the corner detector 1916 in one or more criteria for corner detection. FIG. 23B shows classification of image points using eigenvalues according to the Shi-Tomasi criterion. In some embodiments, the eigenvalues λ2 may be used by the corner detector 1916 in one or more criteria for corner detection. 1, If both λ and λ are small, the pixel may be part of a flat region. Therefore, the corner detector 1916 may determine, at least in part, that min(λ 1, In some embodiments, as shown in FIGS. 23A-23B, if the larger eigenvalue λ2 is greater than the smaller eigenvalue λ1 by a threshold, the pixel may be part of an object with a linear feature (e.g., a line, an edge, etc.). Thus, corner detector 1916 may be configured to detect corners based, at least in part, on the criterion λ2 / λ1<threshold. In some embodiments, corner detector 1916 may be configured to detect corners based on both of the criteria. (1) min(λ1, λ2)>threshold T1 (2) λ2 / λ1<threshold T2 In some embodiments, the threshold T1 may be set to be 300. In some embodiments, the threshold T1 may have other values different from 300. In some embodiments, the threshold T2 may be set to be 5. In some embodiments, the threshold T2 may have other values different from 5.
[0209] In some embodiments, the above two criteria may be expressed in terms of Det(H) and Trace(H) as follows: [ka] In such a case, the corner detector 1516 may be configured to calculate Det and Trace using two Harris responses with different k (k1, k2) as follows: Harris response based on k1>0 when T2=5, where: [ka] In some embodiments, k2 may be selected to simplify the calculations. For example, equation (5) above may be rewritten as: [ka] In such a case, k2 is the right term ((4T1^2) * (k1-k2) may be selected to be 1, and the evaluation may be simplified based on the left-hand side expression being greater than 1. In some embodiments, k2 may be calculated based on the following formula: [ka] Therefore, if k1 is set to 0.139, then k2 is equal to 0.00478125, based on the above equation.
[0210] It should be noted that k1 and k2 are not limited to have the above values, and in some embodiments may have other values. For example, in some embodiments, k1 may have a value anywhere between 0.1 and 0.2. Also, for example, in some embodiments, k2 may have a value less than 0.001.
[0211] Additionally, it should be noted that as used herein, the term "corner" is not limited to the intersection between two straight lines, but may also refer to any point along a curve that connects two lines (e.g., straight lines), and the curve may have a radius of curvature (so that the smaller the radius of curvature, the sharper the "corner").
[0212] In some embodiments, the corner detector 1916 may be configured to apply Harris corner detection one or more times on a first image and detect a set of corners in the first image based on one or more criteria. The corner detector 1916 may also be configured to apply Harris corner detection one or more times on a second image and detect a set of corners in the second image based on the one or more criteria. The one or more criteria may be selected such that only corners with certain desired characteristics are detected.
[0213] It should also be noted that the corner detector 1916 is not limited to detecting corners based on the example equations and values above, and the corner detector 1916 may be configured to detect corners based on other equations, which may be derivatives, variations, and / or modifications of the above equations. Additionally, in some embodiments, the corner detector 1916 may be configured to detect corners based on other corner detection techniques that differ from the Harris corner detection technique. In some embodiments, features other than corners may also be detected, and one of ordinary skill in the art will understand that the principles disclosed herein would apply.
[0214] Returning to FIG. 22A , the non-max suppressor 1922 is configured to perform non-max suppression for the detected corners such that duplicate detection of the same corner is prevented. In some cases, due to the image resolution of the image and / or the manner in which corner detection is implemented, the same corner may be detected multiple times. For example, the corner detector 1916 may detect the same corner three times in three locations close to each other (when, in fact, all three detected corners relate to the same corner in the image). Thus, as used herein, the term “corner” may refer to a corner or instance of a corner that is detected multiple times. In some embodiments, the non-max suppressor 1922 may be configured to perform 3×3 non-max suppression. In such a case, if there are multiple corners detected within a 3×3 pixel region, the non-max suppressor 1922 will select one of the multiple detected corners in the region as the detected corner. In some implementations, the non-max suppressor 1922 may be configured to determine corner scores for the individual multiple detected corners in the region and select the corner with the highest score as the detected corner for the region. The score may indicate the probability that the detected corner is at the location where it was detected or the accuracy of the location of the detected corner. In some embodiments, approaches other than non-maximum suppression may be used for the detected corners to prevent duplicate detection of the same corner, and one skilled in the art will understand that the principles disclosed herein would apply.
[0215] The spatial binning module 1924 is configured to select some of the detected corners for a given image such that different regions of the image will have a substantially uniform distribution of the detected corners. In particular, after the non-maximum suppressor 422 removes duplicate detected corners, there may still be many detected corners for a given image and / or the remaining detected corners may have different distributions in different regions of the image. The spatial binning module 1924 is configured to select a subset of the detected corners such that different regions of the image will have a certain maximum number of detected corners that meet a certain criterion. In some embodiments, the second image may be divided into two or more regions. For example, the second image may be divided into four regions. The four regions may have different individual numbers of detected corners and individual scores as follows: Region 1: (C1, 0.7), (C2, 0.8), (C3, 0.85), (C4, 0.9) Region 2: (C5, 0.6), (C6, 0.65) Area 3: (C7, 0.66), (C8, 0.82) Region 4: (C9, 0.9), (C10, 0.88), (C11, 0.63) In the above example, region 1 has three detected corners C1-C4, region 2 has two detected corners C5-C6, region 3 has two detected corners C7-C8, and region 4 has three detected corners C9-C11. If the maximum number of corners desired per region is selected to be three, and if the criterion for selecting corners is that the corners must have a score of 0.7 or higher, the spatial binning module 1924 may select the following corners for the different individual regions 1-4: Region 1: C2, C3, C4 (corner C1 has the lowest score in region 1, therefore the three corners with the highest scores in region 1 are selected; note that the spatial binning module 1924 cannot select all four corners C1-C4 because the maximum number of corners is predefined to be 3 in the example). Region 2: No corner is selected (because corners C5 and C6 both have scores that do not meet the minimum score criterion). Region 3: Only corner C8 is selected (because corner C7 has a score that does not meet the minimum score criterion). Region 4: Only corners C9 and C10 are selected (because corner C11 has a score that does not meet the minimum score criterion).
[0216] The corner position determiner 1926 is configured to determine the final position of each detected corner. Because the corners are detected by the detector 1916 based on images whose resolution may be reduced, it may be desirable to refine the positions of these detected corners based on higher resolution images. As discussed, in some embodiments, the image adjuster 1914 is configured to convert the first image with a first resolution to a second image with a second resolution. In some embodiments, the second resolution of the second image used to detect the corners is one-quarter of the first resolution of the first image. According to this example, for each pixel in the second image identified as the position of the detected corner, there are four corresponding pixels in the first image that correspond to the detected corner. Thus, the corner position determiner 1926 may be configured to select one of the four pixels in the first image (corresponding to the pixel of the detected corner in the second image) as the detected corner.
[0217] In some embodiments, the corner position determiner 1926 is configured to select one pixel (from the four pixels in the first image) based on the detected one or more corners in the first image. For example, the corner detector 1916 may detect the presence of two corners in the first image that are closely adjacent to the coordinates (xr,yr) of the corner in the second image. The coordinates of the two corners in the first image may be determined by the corner position determiner 1926 as (x1,y1), (x2,y2). The corner position determiner 1926 then calculates the distance between the respective pixel coordinates of the corner in the first image and the pixel coordinates of the corner in the second image as follows: [ka] The corner position determiner 1926 then selects the coordinates of the pixel in the first image having the smallest corresponding distance D (i.e., min(D1,D2)) as the location of the detected corner.
[0218] In some embodiments, the corner position determiner 1926 may use other techniques to refine the positions of the detected corners (detected from the second image). For example, the positions of the set of corners output by the spatial binning module 1924 (selected by the non-maximum suppressor 1922 and the spatial binning module 424 as a subset of the detected corners in the second image) may be input to the corner detector 1916. The corner detector 1916 then performs a corner detection algorithm to detect corners in the first image at discrete locations corresponding to the positions of the set of corners from the second image. In some embodiments, the corner detector 1916 may perform a Harris corner detection algorithm to detect a set of corners in the first image that correspond to positions for those detected corners in the second image. This technique is advantageous in that the Harris corner detection is not required to be performed on the entire first image, but only on discrete portions of the first image, thereby saving time and computational resources.
[0219] In some embodiments, the gamma corrector 1912, the image adjuster 1914, and the corner detector 1916 may be implemented using specialized hardware specifically designed to perform the functions of these components. As a non-limiting example, the hardware may include one or more FPGA processors, one or more ASIC processors, one or more signal processors, one or more mathematical processors, one or more processors specifically designed to perform matrix operations, or any combination of the above. Also, in some embodiments, the processing unit 1630 may be implemented as separate components communicatively coupled together. For example, the processing unit 1630 may have a first substrate carrying the gamma corrector 1912 and the image adjuster 1914, and another substrate carrying the corner detector 1916. As another example, the processing unit 1630 may have a processor for executing the software 1920, which may be implemented on the same substrate supporting the corner detector 1916 or on a different substrate than for the corner detector 1916. In some embodiments, there may be separate boards carrying processors that respectively run the gamma corrector 1912, the image adjuster 1914, the angle detector 1916, and the software 1920. In some embodiments, any, some, or all of the components of the processing unit 1630 may be implemented in the head mounted frame structure 1602. In some embodiments, any, some, or all of the components of the processing unit 1630 may be implemented in a device separate from the head mounted frame structure 1602, such as a belt clip module, a neck mounted module, a mobile phone, etc.
[0220] FIG. 22B illustrates an example of signal flow into various components of the processing unit 1630 of FIG. 22A. The signal flow will be described with reference to the graphical example shown in FIG. 22D. As shown in FIG. 22B, the processing unit 1630 receives an image from a camera system of the image display device 1601. The image may be a real-time image or an image with a time delay. In some embodiments, the image may be received from a non-transient medium that stores the image. The non-transient medium may be part of the image display device 1601 or an external device such as another image display device, a server, a mobile phone, a media device, etc. The image is first processed by the gamma corrector 1912 of the processing unit 1630. In particular, the gamma corrector 1912 of the processing unit 1630 adjusts the non-linear relationship between pixel values and luminance for pixels in the image. For example, the gamma corrector 1912 may adjust the relationship between pixel values and luminance such that the relationship is linear or more linear compared to that in the original raw image. After the image has been adjusted for gamma correction, the gamma corrector then passes the image 2002 to an image adjuster 1914 .
[0221] The image adjuster 1914 is configured to acquire an image (first image) 2002 at a first resolution, adjust the image 2002, and acquire a second image 2003 at a second resolution lower than the first resolution. For example, the first image 2002 may have a VGA resolution and the second image 2003 may have a QVGA resolution. In such a case, the second image 2003 has a quarter of the number of pixels in the first image 2002. In some embodiments, the first image 2002 may have a resolution different from the VGA resolution and the second image 2003 may have a resolution different from the QVGA resolution. After the second image 2003 is acquired, the image adjuster 1914 then passes the second image 2003 through a neural network 1915. As shown in the example of FIG. 22D, the second image 2003 includes an image of an object with a corner.
[0222] Returning to FIG. 22B, the neural network 1915 processes the second image 2003 to detect a set of features and the locations of the individual features in the second image 2003. For example, the neural network 1915 may utilize any of the techniques described with reference to FIGS. 1-14 to detect a set of features in the second image 2003 and their locations in the second image 2003. In the illustrated embodiment, the neural network 1915 is configured to output information 2004 that identifies a set of locations for the detected features. The information 2004 may be utilized by the corner detector 1916 as possible corner locations. In some cases, the information 2004 may be a heat map. An example of a heat map is illustrated in FIG. 22D. The heat map identifies locations in the image that have features of interest. The neural network 1915 is able to identify features of interest using a global context because of the convolutional layers it has. Thus, the features of interest identified by the neural network 1915 are more relevant.
[0223] As used herein, the term "neural network" refers to any computing device, system, or module consisting of several interconnected processing elements, which processes information by its dynamic state response to inputs. In some embodiments, a neural network may have deep learning capabilities and / or artificial intelligence. In some embodiments, a neural network may simply be any computing element that can be trained using one or more data sets. As non-limiting examples, the neural network may be a perceptron, a feedforward neural network, a radial basis neural network, a deep feedforward neural network, a recurrent neural network, a long / short-term memory neural network, a gated recurrent unit, an autoencoder neural network, a variational autoencoder neural network, a denoising autoencoder neural network, a sparse autoencoder neural network, a Markov chain neural network, a Hopfield neural network, a Boltzmann machine, a restricted Boltzmann machine, a deep belief network, a convolutional network, a deconvolutional network, a deep convolutional inverse graphic network, a generative adversarial network, a liquid state machine, an extreme learning machine, an echo state network, a deep residual network, a Kohonen network, a support vector machine, a neural Turing machine, a modular neural network, a sequence / sequence model, or the like, or any combination of the foregoing.
[0224] Returning to FIG. 22B, the corner detector 1916 detects corners in the second image 2003 using the information 2004 provided by the neural network 1915 as "hints" of possible corner locations. Thus, the corner detector 1916 does not need to perform corner detection on the entire image. In some embodiments, for each feature location identified in the second image 2003 by the neural network 1915, the corner detector 1916 determines a region of interest in the second image 2003 that contains the detected feature. The region of interest may be an 8×8 patch having 64 pixels. In some embodiments, the region of interest for each detected feature may have other patch sizes. Also, in some embodiments, instead of the second image 2003 with reduced resolution, the corner detector 1916 may determine a region of interest in the first image 2002 with original resolution. In the illustrated embodiment, the corner detector 1916 is configured to detect corners in each patch using a corner detection algorithm. For example, the corner detector 1916 may detect corners using a Harris corner detection algorithm or other types of corner detection techniques. In some embodiments, the patches may be identified by a neural network 1915 (instead of the corner detector 1916).
[0225] In some embodiments, the neural network 1915 is configured to assign a score to each of the pixels in the patch. The corner detector 1916 may be configured to identify the pixel with the highest score in the patch and use the location of the identified pixel as a possible corner location.
[0226] After the corner detector 1916 detects corners in each of the patches, the corner detector 1916 then passes the corner detection results 2006 to a non-maximum suppressor 1922. The corner detection results 2006 may include an identifier for the set of detected corners and their individual coordinates. In some embodiments, the corner detection results 2006 may also optionally include a score for each detected corner. The score may indicate the quality of the detected corners, a confidence level of the detected corners, the accuracy of the detected corners, etc.
[0227] The non-max suppressor 1922 is configured to identify and remove duplicate identified corners. For example, the corner detector 1916 may detect two corners that are close to each other (when in fact they are related to the same corner in the image). Hence, the non-max suppressor 422 is employed to perform non-max suppression on the detected corners so that duplicate detection of the same corner is prevented. In some embodiments, the non-max suppressor 1922 utilizes a 3×3 window to ensure that there are no duplicate detected corners in a grid of 3×3 pixels. In some embodiments, the non-max suppressor 1922 may utilize other window sizes to perform non-max suppression. After the non-max suppressor 1922 removes duplicate detected corners, the non-max suppressor 1922 then passes the results 2008 to the spatial binning module 1924. In some embodiments, the results 2008 are a subset of the results 2006 output by the corner detector 1916.
[0228] The spatial binning module 1924 selects some of the detected corners for the image such that different regions of the image will have a substantially uniform distribution of detected corners. The spatial binning module 1924 is advantageous because it ensures that the detected corners are not concentrated within a portion of the image and prevents detecting too many corners for a portion of the image. In some embodiments, the processing unit 1630 may not include the spatial binning module 1924.
[0229] In some embodiments, when the detection of corners by the corner detector 1916 is performed based on the second image 2003 with reduced resolution, it may be desirable to refine the position of the detected corners based on the resolution of the first image 2002 in order to obtain a more accurate position of the detected corners in the result 2010 output by the spatial binning module 1924 (or the result 2006 if the processing unit 1630 does not include the non-maximum suppressor 1922 and the spatial binning module 1924). As shown in FIG. 22B, the corner position determiner 1926 is configured to refine the position of the corners (output by the spatial binning module 1924 / non-maximum suppressor 1922 / corner detector 1916) based on the output 2022 provided by the corner detector 1916. In particular, in some embodiments, the first image 2002 with the first resolution is also processed by the corner detector 1916 to obtain a set of corners. In some embodiments, the first image 2002 may be processed by the corner detector 1916 based on the Harris corner detection technique. In some embodiments, the corner detector 1916 may detect corners in the first image 2002 using different corner detection techniques. The corner position determiner 1926 is configured to refine the positions of the detected corners in the set (results 2006 / 2008 / 2010) based on the detected corners in the first image 2002 to determine the final positions of the detected corners for output 2030. In some embodiments, the corner position determiner 1926 is configured to determine the corners (in output 2022) detected based on the first image 2002 that have the best spatial correspondence with each of the corners in the set output by the spatial binning module 1924 (i.e., in output 2010). For example, to refine the position of a detected corner, if a corner in output 2010 (based on second image 2003) has position (x=83, y=97), and a corner in output 2022 (based on first image 2002) has position (x=84, y=95), which is closest to the position of the corner, then corner position determiner 1926 would use position (x=84, y=95) as the final position for the detected corner.In some embodiments, the corner position determiner 1926 may be configured to examine only corners in discrete regions of the first image 2002 and identify corners that correspond to those in the output 2010. In some embodiments, the output 530 from the corner position determiner 1926 includes the set of detected corners from the spatial binning module 1924 / non-maximum suppressor 1922 / corner detector 1916, but with refined positions for the identified corners.
[0230] In some embodiments, the corner detection by the corner detector 1916, the non-maximum suppression by the non-maximum suppressor 1922, and the spatial binning by the spatial binning module 1924 are all performed based on the second image 2003 with reduced resolution. The technique is advantageous in that it allows these operations to be performed very quickly without significant computational resources. In an example where the first image 2002 has a VGA resolution and the second image 2003 has a QVGA resolution, the processing unit 1630 needs to process only a quarter of the pixels using patches in the second image 2003 in all three stages of processing by the corner detector 1916, the non-maximum suppressor 1922, and the spatial binning module 1924 (compared to a scenario where patches in the first image 2002 are used). In some embodiments, such a technique allows corner features to be extracted from the images very quickly. For example, using the above techniques, a set of corners (after undergoing non-maximum suppression and spatial binning) may be obtained from an image within less than 10 ms, less than 6 ms, less than 4 ms, or less than 2 ms, etc. This is advantageous as it allows for real-time processing of the input camera image.
[0231] In some embodiments, the corner position determiner 1926 may refine the positions of the detected corners (detected from the second image) using other techniques. For example, as shown in FIG. 22C, in some embodiments, the output 2010 by the spatial binning module 1924 (e.g., the positions of the set of corners selected as a subset of the detected corners in the second image by the non-maximum suppressor 1922 and the spatial binning module 1924) may be input to the corner detector 1916. The corner detector 1916 then performs a corner detection algorithm to detect corners in the first image 2002 at discrete locations that correspond to the positions of the set of corners from the second image 2003. In some implementations, the corner detector 1916 may perform a Harris corner detection algorithm to detect a set of corners in the first image 2002 that correspond to positions relative to those detected corners in the second image 2003. This technique is advantageous in that the Harris corner detection is not required to be performed on the entire first image 2002, but only on discrete portions of the first image 2002, thereby further saving time and computational resources. In such a case, the corner detector 1916 may provide an output 2030 that includes a set of corners with refined positions for use as features / map points for the image.
[0232] In some embodiments, the processing unit 1630 may not include the non-maximum suppressor 1922 and / or the spatial binning module 1924. In such cases, the corner detector 1916 may provide its output 2006 directly to a corner position determiner 1926, which determines the position of the identified corner.
[0233] In some embodiments, the processing unit 1630 may not include the non-maximum suppressor 1922, the spatial binning module 1924, and the corner position determiner 1926. In such cases, the corner detector 1916 may output the positions of the identified corners (e.g., information 2030).
[0234] In some embodiments, instead of the second image 2003 with reduced resolution, the corner detector 1916 may be configured to detect corners in the first image 2002 (with the original higher resolution) using the information 2004 provided by the neural network 1915 as "hints" of possible corner locations. In some embodiments, for each location of a feature identified in the second image 2003 by the neural network 1915, the corner detector 1916 determines a region of interest at a corresponding location in the first image 2002 that contains the detected feature. The region of interest may be an 8x8 patch having 64 pixels with the original resolution. In other embodiments, the region of interest for each detected feature may have other patch sizes. For example, in other embodiments, the patch may be an NxN patch, where N is any integer greater than 1. In further embodiments, the patch may have 144 pixels or less, with the pixels arranged in a square shape or a non-square (e.g., rectangular) shape. In the illustrated embodiment, the corner detector 1916 is configured to detect corners in each patch in the first image 2002 using a corner detection algorithm. For example, the corner detector 1916 may detect corners using the Harris corner detection algorithm or other types of corner detection techniques. Having the corner detector 1916 operate on the first image 2002 with the original resolution is advantageous because it removes the need to make fine adjustments to the determined positions of the detected corners (which may be required if the corner detector 1916 operates on the second image 2003 with the reduced resolution).
[0235] In some embodiments, the processing unit 1630 may not include the gamma corrector 1912. In such cases, the image is input directly to the image adjuster 1914.
[0236] In some embodiments, the processing unit 1630 may not include the image conditioner 1914. In such cases, both the neural network 1915 and the corner detector 1916 are configured to perform their operations using images with the original resolution.
[0237] In some embodiments, one or more of the components in the processing unit 1630 may be combined. For example, in some embodiments, the non-maximum suppressor 1922, the spatial binning module 1924, the corner position determiner 1926, or any combination of the foregoing may be implemented as part of the corner detector 1916. In some embodiments, the gamma corrector 1912 and / or the image adjuster 1914 may be implemented as part of the neural network 1915.
[0238] In some embodiments, corner detection may be performed by processing unit 1630 to process real-time input images from a camera system of image display device 1601. For example, the input images may be provided by the camera system, and processing unit 1630 may determine a set of corners from the input images. The set of corners may be used as a set of features for the input images to match corresponding features with a localization map to locate a user of image display device 1601.
[0239] In some embodiments, corner detection may be performed by processing unit 1630 to process images from a camera system of image display device 1601 to create a localization map. For example, a sequence of images may be provided by the camera system, and processing unit 1630 may determine a set of corners from each of the images in the sequence. The images may be acquired by the camera system when a user of image display device 1601 has different head poses such that the images correspond to different viewing directions of the user. Processing unit 1630 may also perform stereo matching, matching a corner in one image in the sequence with a corner in another image in the sequence to create a 3D map point for that corner. The 3D map point is then included as part of the localization map.
[0240] It should be noted that using a hybrid technique (i.e., neural network + corner detector) to detect corners is advantageous over a technique that utilizes only a corner detector without any neural network. This is because the hybrid technique produces corner detection results with fewer false positives and enables extraction of "weak" corners. Also, the hybrid technique is capable of extracting weak corners (which may otherwise be undetectable using only Harris corner detection). In some embodiments, the neural network gives a hint that a corner may be inside the patch, and the system uses the strongest response to detect the corner. For example, see FIG. 22D, where an ImgVGA patch is very difficult to identify a corner, but the neural network processes a larger portion of the image and may tell that a corner is present (see, e.g., "VGA detection" in FIG. 22D). The neural network outputs a rough area that is expected to be a good feature (e.g., a corner).
[0241] FIG. 22E illustrates an example of results obtained using Harris corner detection without the benefit of a neural network. As shown in the figure, the corner detector identifies many points in the image as corners when many of the points are false positives (i.e., they are not corners). As shown in FIG. 22F, the heat map provided by the neural network may act as a mask to eliminate many of the false positives. As a result, the hybrid technique identifies a more accurate set of corners in the image. As shown in FIG. 22G, the number of corners identified in the image using the hybrid technique is less compared to that shown in FIG. 22E.
[0242] It is also advantageous to use the neural network 1915 to provide a heat map for use as a "hint" by the corner detector 1916. The heat map provides a classification of the patch, i.e., whether a feature of interest is present in the patch. Thus, the output of the neural network 1915 turns the corner detection problem into a simple classification problem (i.e., a "yes" or "no" classification). Based on the classification, the corner detector 1916 then checks whether, in fact, a corner is present at the location in the patch.
[0243] A hybrid technique that combines a neural network and a corner detector is also advantageous because it works well for detecting corners in images with low light. The neural network 1915 uses a global context to identify features of interest, allowing the corner detector 1916 to identify corners using the heat map provided by the neural network 1915, even in low light situations.
[0244] Methods implemented by a processing unit and / or an application within a processing unit
[0245] FIG. 24 illustrates a method 2600 according to some embodiments. The method 2600 may be implemented by a device configured to be worn on the head by a user, the device having a screen configured to present graphics for the user, a camera system configured to view an environment in which the user is located, and a processing unit. In some embodiments, the method 2600 may be implemented by any of the image display devices 1601 shown in FIGS. 15-18. For example, the method 2600 may be implemented by the processing unit 1630 of the image display device 1601. The method 2600 includes a step of obtaining a location of a feature in an image, the location of the feature being identified by a neural network (item 2602), a step of determining a region of interest for one of the features in the image, the region of interest having a size less than the size of the image (item 2604), and a step of performing corner detection using a corner detection algorithm to identify a corner in the region of interest (item 2606).
[0246] Optionally, in method 2600, the region of interest is determined based on at least one of the locations identified by the neural network.
[0247] Optionally, the method 2600 further includes generating an image and transmitting the image to a neural network.
[0248] Optionally, in method 2600, the neural network is within a module of the head mounted visual display device.
[0249] Optionally, in method 2600, the neural network is implemented in one or more computing devices remote from the head mounted visual display device.
[0250] Optionally, in method 2600, the neural network has machine learning capabilities.
[0251] Optionally, in method 2600, the location of the features is obtained by receiving a heat map from the neural network, the heat map indicating the location of the features.
[0252] Optionally, in method 2600, the region of interest comprises N×N patches and corner detection is performed on the N×N patches, where N is an integer greater than one.
[0253] Optionally, in method 2600, the region of interest comprises a patch having 144 pixels or less, and corner detection is performed on the patch.
[0254] Optionally, in method 2600, the region of interest comprises 8x8 patches and corner detection is performed on the 8x8 patches.
[0255] Optionally, in method 2600, an image has a first resolution and feature locations are identified by a neural network based on another image having a second resolution that is less than the first resolution.
[0256] Optionally, in the method 2600, the method further comprises converting the image with the first resolution into another image with a second resolution.
[0257] Optionally, in the method 2600, the first resolution comprises a VGA resolution.
[0258] Optionally, in the method 2600, the second resolution comprises a QVGA resolution.
[0259] Optionally, in method 2600, the method further includes a neural network.
[0260] Optionally, in method 2600, the neural network is trained using a reference data set.
[0261] Optionally, in method 2600, the neural network comprises a convolutional neural network.
[0262] Optionally, in method 2600, a neural network is configured to calculate the point of interest locations and descriptors.
[0263] Optionally, in method 2600, the neural network comprises an encoder configured to spatially downsample the input image.
[0264] Optionally, in method 2600, the neural network also comprises a focus decoder configured to operate on the encoder output from the encoder and produce a score for each pixel in the input image, and a descriptor decoder configured to operate on the encoder output and upsample the encoder output to a higher resolution and produce a vector for each pixel in the input image.
[0265] Optionally, in method 2600, the neural network is configured to use homography fitting to improve the geometric consistency of the interest point detector.
[0266] Optionally, in method 2600, the neural network comprises a convolutional neural network and the interest detector is trained using the convolutional neural network.
[0267] Optionally, in method 2600, the neural network is configured to perform image warping and create one or more warped images within the homography fit.
[0268] Optionally, the method 2600 further includes determining a position of the corner in the image based, at least in part, on the position of the corner in the patch.
[0269] Optionally, the method 2600 further includes storing the location of the first corner in the image in a non-transitory medium.
[0270] Optionally, the method 2600 further includes determining a score for each pixel in the region of interest.
[0271] Special Processing Systems
[0272] It will be apparent to those skilled in the art that substantial variations can be made according to specific requirements. For example, customized hardware could also be used and / or particular elements could be implemented in hardware, software, including portable software such as applets, or both. Furthermore, connections to other computing devices, such as network input / output devices, could be employed.
[0273] FIG. 25 is a block diagram illustrating an embodiment of a specialized processing system 3100 that may be used to implement various features described herein. For example, in some embodiments, the processing system 3100 may be used to implement an image display device 3101. The processing system 3100 includes a bus 3102 or other communication mechanism for communicating information, and a processor 3104 coupled with the bus 3102 for processing information. The processor system 3100 also includes a main memory 3106, such as a random access memory (RAM) or other dynamic storage device, coupled to the bus 3102 for storing information and instructions to be executed by the processor 3104. The main memory 3106 may also be used to store temporary variables or other intermediate information during execution of instructions to be executed by the processor 3104. The processor system 3100 further includes a read only memory (ROM) 3108 or other static storage device coupled to the bus 3102 for storing static information and instructions for the processor 3104. A data storage device 3110, such as a magnetic disk, solid state disk, or optical disk, is provided and coupled to bus 3102 for storing information and instructions.
[0274] The processor system 3100 may be coupled to a display 3112, such as a screen, via the bus 3102 to display information to a user. In some cases, if the processing system 3100 is part of a device that includes a touch screen, the display 3112 may be a touch screen. An input device 3114, including alphanumeric and other keys, is coupled to the bus 3102 to communicate information and command selections to the processor 3104. Another type of user input device is a cursor control 3116, such as a mouse, trackball, or cursor direction keys, for communicating directional information and command selections to the processor 3104 and for controlling cursor movement on the display 3112. This input device typically has two degrees of freedom in two axes, a first axis (e.g., x) and a second axis (e.g., y), that allow the device to define a position in a plane. In some cases, if the processing system 3100 is part of a device that includes a touch screen, the input device 3114 and cursor control may be a touch screen. Another type of input device used is an optical camera and / or a depth-sensing camera that is configured to detect hand gestures. Such a user input device does not require the user to touch anything and commands by the user may be interpreted based on the hand gestures.
[0275] In some embodiments, the processor system 3100 can be used to perform various functions described herein. According to some embodiments, such use is provided by the processor system 3100 in response to the processor 3104 executing one or more sequences of one or more instructions contained in the main memory 3106. Those skilled in the art will know how to prepare such instructions based on the functions and methods described herein. Such instructions may be read into the main memory 3106 from another processor-readable medium, such as the storage device 3110. Execution of the sequences of instructions contained in the main memory 3106 causes the processor 3104 to perform the process steps described herein. One or more processors in a multi-processing arrangement may also be employed to execute the sequences of instructions contained in the main memory 3106. In alternative embodiments, hard-wired circuitry may be used in place of, or in combination with, software instructions to implement various embodiments described herein. Thus, the embodiments are not limited to any specific combination of hardware circuitry and software.
[0276] The term "processor-readable medium," as used herein, refers to any medium that participates in providing instructions to the processor 3104 for execution. Such media may take many forms, including, but not limited to, non-volatile media, volatile media, and transmission media. Non-volatile media include, for example, optical, solid-state, or magnetic disks, such as the storage devices 3110. Non-volatile media may be considered an example of non-transitory media. Volatile media includes dynamic memory, such as the main memory 3106. Volatile media may be considered an example of non-transitory media. Transmission media include coaxial cables, copper wire, and fiber optics, including the wires that comprise the bus 3102. Transmission media may also take the form of acoustic or light waves, such as those generated during radio wave and infrared data communications.
[0277] Common forms of processor-readable media include, for example, a floppy disk, a hard disk, a magnetic tape or any other magnetic medium, a CD-ROM, any other optical medium, any other physical medium with a pattern of holes, RAM, PROM, and EPROM, FLASH-EPROM, a solid-state disk, any other memory chip or cartridge, a carrier wave as described hereinafter, or any other medium from which a processor can read.
[0278] Various forms of processor-readable media may be involved in carrying one or more sequences of one or more instructions to the processor 3104 for execution. For example, the instructions may initially be carried on a magnetic disk or solid-state disk of a remote computer. The remote computer may load the instructions into its dynamic memory and transmit the instructions over a network, such as the Internet. The processing system 3100 may receive data over a network line. The bus 3102 carries the data to the main memory 3106, from which the processor 3104 reads and executes the instructions. The instructions received by the main memory 3106 may optionally be stored on a storage device 3110 either before or after execution by the processor 3104.
[0279] The processing system 3100 also includes a communication interface 3118 coupled to the bus 3102. The communication interface 3118 provides a two-way data communication coupling to a network link 3120 that is connected to a local network 3122. For example, the communication interface 3118 may be a local area network (LAN) card to provide a data communication connection to a compatible LAN. A wireless link may also be implemented. In any such implementation, the communication interface 3118 sends and receives electrical, electromagnetic, or optical signals that carry data streams representing various types of information.
[0280] The network link 3120 typically provides data communication through one or more networks to other devices. For example, the network link 3120 may provide a connection through a local network 3122 to a host computer 3124 or a device 3126. Data streams transported via the network link 3120 may include electrical, electromagnetic, or optical signals. The signals through the various networks and the signals on the network link 3120 and through the communication interface 3118, which carry the data to and from the processing system 3100, are exemplary forms of carrier waves transporting information. The processing system 3100 can send messages and receive data, including program code, through the networks, the network link 3120, and the communication interface 3118.
[0281] In one aspect, some embodiments may employ a processing system 3100 to perform methods in accordance with various embodiments of the present technology. According to one set of embodiments, some or all of the procedures of such methods are performed by the processing system 3100 in response to the processing system 310 executing one or more sequences of one or more instructions embedded in an operating system and / or other code, such as an application program, contained within the memory of the processing system 3100. Such instructions may be read into the memory from another computer-readable medium, such as one or more of the storage devices. By way of example only, execution of a sequence of instructions contained within the memory may cause the processing system 3100 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.
[0282] In some embodiments, the method 2600 described herein may be performed by the processing system 3100 executing an application or by the application. The application may contain a set of instructions. The processing system 3100 may also be an example of the processing unit 1630. In one implementation, a specialized processing system may be provided having a non-transitory medium that stores a set of instructions for an application. Execution of the instructions by the processing unit 1630 of the image display device 1601 will cause the processing unit 1630 to implement the features described herein.
[0283] In some embodiments, image display device 1601 may also be considered a specialized processing system. In particular, image display device 1601 is a specialized processing system in that it contains instructions stored in its non-transitory medium for execution by processing unit 1630 to provide unique tangible effects in the real world. The features provided by image display device 1601 (as a result of processing unit 1630 executing the instructions) provide improvements in the art of corner detection, localization map creation, and image-based localization.
[0284] It should be noted that the term "image," as used herein, may refer to an image that is displayed and / or an image that is not in a displayed form (e.g., an image or image data that is stored in a medium or is being processed).
[0285] Additionally, as used herein, the term "apparatus" may refer to a single device or component, or multiple devices or components that may or may not be physically connected together and / or may or may not be located in the same geographic area. For example, two or more devices or components that communicate wirelessly with each other may collectively be considered an "apparatus." As another example, an apparatus may comprise two devices in different geographic areas that communicate with each other. Furthermore, an apparatus may be software, hardware, or a combination of both. In some embodiments, an apparatus includes at least some hardware, such as an integrated circuit (e.g., a processor).
[0286] Furthermore, as used herein, the term "processing unit" may refer to hardware, software, or a combination of both. As non-limiting examples, a processing unit may be one or more software modules, one or more applications, an integrated circuit (one or more processors, one or more hardware components, etc.), or a combination of the above.
[0287] Exemplary aspects of the present disclosure have been described above, together with details regarding material selection and manufacturing. As for other details of the present disclosure, these can be understood in conjunction with the above-referenced patents and publications, and are generally known or can be understood by those skilled in the art. The same can be true with respect to the method-based aspects of the present disclosure in terms of additional actions as generally or logically adopted.
[0288] In addition, the present disclosure has been described with reference to several embodiments, optionally incorporating various features, but the present disclosure is not limited to those described or illustrated as each variation of the disclosure is considered. Various modifications may be made to the present disclosure as described, and equivalents (whether listed herein or not included for purposes of some brevity) may be substituted without departing from the true spirit and scope of the present disclosure. In addition, when a range of values is provided, it is to be understood that all intervening values between the upper and lower limits of the range, and any other stated value or intervening values within the stated range, are encompassed within the present disclosure.
[0289] It is also contemplated that any optional features of the described inventive variations may be set forth and claimed independently or in combination with any one or more of the features described herein. Reference to a singular item includes the possibility that there are multiple identical items present. More specifically, as used in this specification and the claims associated therewith, the singular forms "a," "an," "said," and "the" include plural references unless specifically stated otherwise. Furthermore, it is noted that any claim may be drafted to exclude any optional element. Thus, this language is intended to serve as a predicate for the use of exclusive terminology such as "solely," "only," and the like in connection with the recitation of claim elements, or the use of a "negative" limitation.
[0290] The scope of the present disclosure should not be limited to the examples provided and / or the present specification, but rather should be limited only by the scope of the terms of the claims associated with this disclosure.
[0291] In the foregoing specification, the present disclosure has been described with reference to specific embodiments thereof. However, it will be apparent that various modifications and changes may be made therein without departing from the broader spirit and scope of the present disclosure. For example, the foregoing process flows are described with reference to a particular order of process actions. However, the order of many of the described process actions may be changed without affecting the scope or operation of the present disclosure. The specification and drawings are therefore to be regarded in an illustrative rather than a restrictive sense.
Claims
1. A method of training and using a neural network for image interest detection, the method comprising: generating a reference data set comprising a plurality of reference sets, each of the plurality of reference sets comprising: Images, a set of reference interest points corresponding to said images; and For each criterion set of the plurality of criterion sets, generating a warped image by applying a homography to the image; generating a set of warped reference interest points by applying the homography to the set of reference interest points; said neural network receiving as input said image thereby computing a set of computed interest points and computed descriptors; said neural network receiving as input said warped image, thereby computing a set of computed warped interest points and a computed warped descriptor; calculating a loss based on the calculated set of interest points, the calculated descriptor, the calculated warped set of interest points, the calculated warped descriptor, the set of reference interest points, the warped set of reference interest points, and the homography; and Modifying the neural network based on the loss. To carry out Including, The method further includes obtaining locations of features in an input image, the locations of the features identified by the neural network; determining a region of interest for one of the features in the input image, the region of interest having a size less than a size of the input image; and performing corner detection using a corner detection algorithm to identify corners in the region of interest.
2. The neural network includes an interest detector sub-network and a descriptor sub-network, the interest point detector sub-network is configured to receive the image as an input and to calculate the set of calculated interest points based on the image; The method of claim 1 , wherein the descriptor sub-network is configured to receive the image as an input and to compute the computed descriptor based on the image.
3. The method of claim 1, wherein modifying the neural network based on the losses includes modifying one or both of the focal point detector sub-network and the descriptor sub-network based on the losses.
4. Prior to generating the reference data set, the method further comprises training the interest detector sub-network using a synthetic data set including a plurality of synthetic images and a plurality of sets of synthetic interest points; The method of claim 1 , wherein generating the reference data set comprises using the interest point detector sub-network to generate the reference data set.
5. Generating the reference data set comprises: For each criterion set of the plurality of criterion sets, acquiring the image from an unlabeled dataset comprising a plurality of unlabeled images; generating a plurality of warped images by applying a plurality of homographies to the image; said neural network receiving as input said warped images to compute a set of a plurality of computed warped interest points; applying a plurality of inverse homographies to the plurality of sets of calculated warped interest points to generate a plurality of sets of calculated interest points; aggregating the set of calculated interest points to obtain the set of reference interest points; The method of claim 1 , comprising performing:
6. Each of the plurality of reference sets further includes a reference descriptor corresponding to the image, and generating the reference data set includes: For each criterion set of the plurality of criterion sets, acquiring the image from an unlabeled dataset comprising a plurality of unlabeled images; generating a plurality of warped images by applying a plurality of homographies to the image; computing a plurality of computed warped descriptors by said neural network receiving as input the plurality of warped images; generating a plurality of computed descriptors by applying a plurality of inverse homographies to the plurality of computed warped descriptors; aggregating the plurality of calculated descriptors to obtain the reference descriptor; and The method of claim 1 , comprising performing:
7. The method of claim 1, wherein the set of reference interest points is a two-dimensional map having values corresponding to the probability that a particular pixel of the image has a interest point located at that particular pixel.
8. A method, comprising: Capturing a first image; Capturing a second image; a neural network receiving the first image as an input to calculate a first set of calculated interest points and a first calculated descriptor; said neural network receiving as input said second image to compute a second set of computed points of interest and a second computed descriptor; determining a homography between the first image and the second image based on the first and second calculated sets of interest points and the first and second calculated descriptors; Including, the neural network includes an interest point detector sub-network configured to calculate the first calculated set of interest points and the second calculated set of interest points, and a descriptor sub-network configured to calculate the first calculated descriptors and the second calculated descriptors; The method further comprises: obtaining locations of features in an input image, the locations of the features being identified by the neural network; and determining a region of interest for one of the features in the input image, the region of interest having a size less than a size of the input image; performing corner detection using a corner detection algorithm to identify corners within the region of interest; A method comprising:
9. The interest point detector sub-network is configured to calculate the first set of calculated interest points in parallel with the descriptor sub-network calculating the first calculated descriptor; The method of claim 8 , wherein the interest point detector sub-network is configured to calculate the second set of calculated interest points in parallel with the descriptor sub-network calculating the second calculated descriptors.
10. Training the neural network by generating a reference data set comprising a plurality of reference sets, each of the plurality of reference sets including an image and a set of reference interest points corresponding to the image; For each criterion set of the plurality of criterion sets, generating a warped image by applying a homography to the image; generating a set of warped reference interest points by applying the homography to the set of reference interest points; said neural network receiving as input said image thereby computing a set of computed interest points and computed descriptors; said neural network receiving as input said warped image, thereby computing a set of computed warped interest points and a computed warped descriptor; calculating a loss based on the calculated set of interest points, the calculated descriptor, the calculated warped set of interest points, the calculated warped descriptor, the set of reference interest points, the warped set of reference interest points, and the homography; and Modifying the neural network based on the loss. To carry out The method of claim 8 , further comprising:
11. The method of claim 10, wherein modifying the neural network based on the losses includes modifying one or both of the interest detector sub-network and the descriptor sub-network based on the losses.
12. The method of claim 11, further comprising, prior to generating the reference data set, training the interest detector sub-network using a synthetic data set including a plurality of synthetic images and a plurality of sets of synthetic interest points; The method of claim 10 , wherein generating the reference data set comprises using the interest point detector sub-network to generate the reference data set.
13. Generating the reference data set comprises: For each criterion set of the plurality of criterion sets, acquiring the image from an unlabeled dataset comprising a plurality of unlabeled images; generating a plurality of warped images by applying a plurality of homographies to the image; said neural network receiving as input said warped images to compute a set of a plurality of computed warped interest points; applying a plurality of inverse homographies to the plurality of sets of calculated warped interest points to generate a plurality of sets of calculated interest points; aggregating the set of calculated interest points to obtain the set of reference interest points; The method of claim 10, comprising performing:
14. Each of the plurality of reference sets further includes a reference descriptor corresponding to the image, and generating the reference data set includes: For each criterion set of the plurality of criterion sets, acquiring the image from an unlabeled dataset comprising a plurality of unlabeled images; generating a plurality of warped images by applying a plurality of homographies to the image; computing a plurality of computed warped descriptors by said neural network receiving as input the plurality of warped images; generating a plurality of computed descriptors by applying a plurality of inverse homographies to the plurality of computed warped descriptors; aggregating the plurality of calculated descriptors to obtain the reference descriptor; and The method of claim 10, comprising performing:
15. An optical device, comprising: at least one camera configured to capture a first image and a second image; one or more processors coupled to the camera; Equipped with The one or more processors: receiving the first image and the second image from the at least one camera; calculating a first set of computed points of interest and a first computed descriptor by a neural network using the first image as an input; said neural network using said second image as input to calculate a second set of computed interest points and a second computed descriptor; determining a homography between the first image and the second image based on the first and second calculated sets of interest points and the first and second calculated descriptors; configured to perform operations including: The neural network comprises: a point of interest detector sub-network configured to calculate the first calculated set of points of interest and the second calculated set of points of interest; a descriptor sub-network configured to calculate the first calculated descriptor and the second calculated descriptor; Including, The one or more processors: obtaining locations of features in an input image, the locations of the features being identified by the neural network; and determining a region of interest for one of the features in the input image, the region of interest having a size less than a size of the image; performing corner detection using a corner detection algorithm to identify corners within the region of interest; 13. An optical device configured to perform the steps of:
16. The point of interest detector sub-network configured to calculate the first set of calculated points of interest in parallel with the descriptor sub-network calculating the first calculated descriptor; The optical device of claim 15 , wherein the point of interest detector sub-network is configured to calculate the second set of calculated points of interest in parallel with the descriptor sub-network calculating the second calculated descriptor.
17. The neural network comprises: generating a reference data set comprising a plurality of reference sets, each of the plurality of reference sets including an image and a set of reference interest points corresponding to the image; For each criterion set of the plurality of criterion sets, generating a warped image by applying a homography to the image; generating a set of warped reference interest points by applying the homography to the set of reference interest points; said neural network receiving as input said image thereby computing a set of computed interest points and computed descriptors; said neural network receiving as input said warped image, thereby computing a set of computed warped interest points and a computed warped descriptor; calculating a loss based on the calculated set of interest points, the calculated descriptor, the calculated warped set of interest points, the calculated warped descriptor, the set of reference interest points, the warped set of reference interest points, and the homography; and Modifying the neural network based on the loss. To carry out The optical device of claim 15, which is pre-trained by
18. The optical device of claim 17, wherein modifying the neural network based on the loss includes modifying one or both of the interest detector sub-network and the descriptor sub-network based on the loss.
19. Generating the reference data set comprises: For each criterion set of the plurality of criterion sets, acquiring the image from an unlabeled dataset comprising a plurality of unlabeled images; generating a plurality of warped images by applying a plurality of homographies to the image; said neural network receiving as input said warped images to compute a set of a plurality of computed warped interest points; applying a plurality of inverse homographies to the plurality of sets of calculated warped interest points to generate a plurality of sets of calculated interest points; aggregating the set of calculated interest points to obtain the set of reference interest points; The optical device of claim 17 , further comprising:
Citation Information
Patent Citations
Fully convolutional interest point detection and description via homographic adaptation
US20190147341A1