Method and system for hand gesture-based control of a device - Patents.com

The system addresses hand gesture recognition challenges in complex environments by using a virtual gesture space and a trained neural network for improved detection and classification, enhancing accuracy and efficiency in devices like smartphones and smart TVs.

JP7626523B2Active Publication Date: 2025-02-04HUAWEI TECH CO LTD
View PDF 5 Cites 0 Cited by

Patent Information

Application Number
JP2022556503
Authority / Receiving Office
JP · JP
Patent Type
Patents
Current Assignee / Owner
Filing Date
2020-03-20
Publication Date
2025-02-04
Estimated Expiration
2040-03-20

AI Technical Summary

Technical Problem

Existing hand gesture recognition systems face challenges in complex environments, such as long distances, low lighting, and multiple users, leading to high computational costs and inaccurate gesture detection with false positives and negatives.

Method used

An end-to-end system using a virtual gesture space defined around the user's face to detect and track hands, combined with a trained joint neural network for bounding box refinement and gesture classification, and adaptive image adjustments to improve accuracy and efficiency.

Benefits of technology

Enhances gesture detection and recognition in challenging conditions by reducing processing costs and improving accuracy, allowing for efficient and reliable hand gesture control in devices like smartphones and smart TVs.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure 0007626523000020
    Figure 0007626523000020
  • Figure 0007626523000021
    Figure 0007626523000021
  • Figure 0007626523000022
    Figure 0007626523000022
Patent Text Reader

Abstract

A method and system for gesture-based control of a device is described. A virtual gesture space is determined within received input frames. The virtual gesture space is associated with a primary user from a ranked user list of users. The received input frames are processed solely within the virtual gesture space to detect and track hands. A hand bounding box generated by detecting and tracking the hands is used to perform gesture classification to determine gesture inputs associated with the hands. A command input associated with the determined gesture input is processed. The device may be a smart TV, smartphone, tablet, etc.
Need to check novelty before this filing date? Find Prior Art

Description

[Technical field]

[0001] The present disclosure relates to the detection and recognition of hand gestures and using hand gestures to control devices such as televisions or smartphones. [Background technology]

[0002] Remote control of such devices (e.g., smartphones, tablets, televisions, etc.) using machine vision-based detection (commonly referred to in the art as computer vision) of hand gestures in a sequence of frames of digital video captured by the device's camera is of interest to provide an improved user experience. Existing solutions for performing gesture detection and recognition in a sequence of frames of digital video are based on video action classification (i.e., classification of hand movements detected and tracked across multiple frames of the sequence of frames of digital video). This typically requires performing gesture segmentation and recognition on a sequence of frames digital video. However, performing gesture segmentation and recognition on a sequence of digital images typically incurs significant computational cost, yet still provides relatively low accuracy.

[0003] Apart from the challenges of performing gesture segmentation and recognition on a sequence of frames of a digital video, hand detection in real-life applications also faces challenges. For example, performing gesture detection on a sequence of frames of a digital video is typically difficult in complex backgrounds (e.g., within the user's living space, which may be cluttered), when there is a long distance from the user to the device (e.g., when the user is controlling a device mounted on a wall), or in low light environments (e.g., at night). Performing gesture detection and recognition on a sequence of frames of a digital video under such conditions often results in an unacceptably high occurrence of false positives and false negatives. Challenges also arise when there are multiple people within the detection zone, which can create confusion in detecting and recognizing gestures.

[0004] Machine learning-based approaches for performing segmentation and recognition on sequences of frames of digital video also face certain challenges. For example, to obtain satisfactory accuracy, gesture detectors and classifiers configured to perform gesture detection and segmentation may be trained using large and deep convolutional neural networks, which typically require high computational resources. Furthermore, to detect smaller hands at greater distances, the frames of the digital video need to have high resolution, which results in a significant increase in computational costs. Another challenge is that the bounding boxes generated by the gesture (or hand) detectors may not be of a size that matches the expected input of the subsequent classifier.

[0005] It would therefore be useful to provide a more accurate and less computationally expensive machine learning based method and system for detecting and recognizing gestures in a sequence of frames of digital video captured by a device's camera for remote control of the device, even in non-ideal real-life environments. Summary of the Invention

[0006] In various examples, the present disclosure describes an end-to-end system for hand gesture detection and recognition. The disclosed systems and methods enable real-time detection and recognition of hand gestures. Various examples described herein may enable detection and recognition of hand gestures with higher accuracy than existing approaches in long-distance and / or low-lighting scenarios.

[0007] In some examples, the present disclosure describes a method for processing gesture inputs, the method including: determining a virtual gesture space defined within received input frames, the virtual gesture space being associated with a primary user from a ranked user list of one or more users; processing the received input frames only within the virtual gesture space to detect and track a hand; performing gesture classification to determine a gesture input associated with the hand using a hand bounding box generated by detecting and tracking the hand; and outputting the determined gesture input to trigger processing of a command input associated with the determined gesture input.

[0008] In any of the above examples, determining the virtual gesture space may include: processing the input frames to detect one or more users; generating a ranked user list based on the detected one or more users, wherein a primary user is identified as the highest ranked user in the ranked user list; and generating the virtual gesture space based on detected anatomical features of the primary user.

[0009] In any of the above examples, processing the input frame may include selecting a region of interest (ROI) for processing the input frame, the ROI defining an area smaller than the entire area of ​​the input frame, the ROI being selected from a defined ROI sequence, the ROI sequence defining a plurality of ROIs for processing a respective one of a plurality of sequentially received input frames.

[0010] In any of the above examples, determining the virtual gesture space may include determining an invalid gesture input associated with the hand detected in the virtual gesture space associated with the primary user; selecting the next highest ranked user in the ranked user list as the new primary user; and repeating the method using the new primary user.

[0011] In any of the above examples, processing the input frames solely within the virtual gesture space may include determining low light conditions associated with the received input frames; and automatically performing image adjustments to automatically adjust pixel values ​​of the received input frames in response to the low light conditions.

[0012] In any of the above examples, the input frames may be processed to detect and track hands using a trained joint neural network, which may include a trained gesture classification convolutional neural network having a side branch connection to a trained bounding box refinement convolutional neural network.

[0013] In any of the above examples, performing gesture classification may include: identifying a gesture class associated with a hand detected in the received input frame; determining a state transition from a previous gesture state associated with the previous input frame to a current gesture state, the state transition being determined based on the identified gesture class; and determining a gesture input associated with the current gesture state.

[0014] In any of the above examples, the received input frames may be received and processed less frequently than the frame capture frequency of the image capture device used to capture the received input frames.

[0015] In some examples, the disclosure describes an apparatus that includes a processing device coupled to a memory that stores machine-executable instructions that, when executed by the processing device, cause the apparatus to perform any of the methods described above.

[0016] In any of the above examples, the apparatus may be a gesture control device.

[0017] In any of the above examples, the device may include a camera for capturing input frames.

[0018] In any of the above examples, the gesture control device may be one of a television, a smartphone, a tablet, a vehicle-coupled device, an Internet of Things device, a synthetic reality device, or a virtual reality device.

[0019] In some examples, the present disclosure describes a computer-readable medium having machine-executable instructions stored thereon that, when executed by a processing device of an apparatus, cause the apparatus to perform any of the methods described above.

[0020] Examples disclosed herein may enable more efficient and / or accurate detection of gesture inputs by only detecting gesture inputs from a primary user (from a ranked user list). Adaptive ROI techniques are also described, which may enable better performance by trained face or hand classifiers. Adaptive ROI may also help reduce processor demands. Automatic image adjustment techniques are also described to improve hand detection by adjusting lighting when low light conditions are detected. In some examples, joint neural networks are described, which may help improve gesture classification by refining bounding boxes of detected hands. [Brief description of the drawings]

[0021] Reference will now be made to the accompanying drawings which illustrate, by way of example, exemplary embodiments of the present application.

[0022] [Figure 1] FIG. 2 is a block diagram illustrating a user interacting with an exemplary gesture control device.

[0023] [Diagram 2] FIG. 2 is a block diagram illustrating some components of an exemplary gesture control device.

[0024] [Figure 3A] FIG. 2 illustrates some example gesture classes that can be detected and recognized by an example gesture control device. [Figure 3B] FIG. 2 illustrates some example gesture classes that can be detected and recognized by an example gesture control device. [Figure 3C] FIG. 2 illustrates some example gesture classes that can be detected and recognized by an example gesture control device. [Figure 3D] FIG. 2 illustrates some example gesture classes that can be detected and recognized by an example gesture control device. [Figure 3E]FIG. 2 illustrates some example gesture classes that can be detected and recognized by an example gesture control device. [Figure 3F] FIG. 2 illustrates some example gesture classes that can be detected and recognized by an example gesture control device. [Figure 3G] FIG. 2 illustrates some example gesture classes that can be detected and recognized by an example gesture control device. [Figure 3H] FIG. 2 illustrates some example gesture classes that can be detected and recognized by an example gesture control device.

[0025] [Figure 4A] 1A-1C are diagrams illustrating some example dynamic gestures that can be detected and recognized by an example gesture control device. [Figure 4B] 1A-1C are diagrams illustrating some example dynamic gestures that can be detected and recognized by an example gesture control device. [Figure 4C] 1A-1C are diagrams illustrating some example dynamic gestures that can be detected and recognized by an example gesture control device.

[0026] [Diagram 5] 1 is a block diagram illustrating some details of an example adaptive gesture sensing system that may be implemented within an example gesture control device.

[0027] [Figure 6] 1 is a flowchart illustrating an exemplary method of hand detection using a virtual gesture space.

[0028] [Figure 7] FIG. 2 illustrates an example virtual gesture space, including defined subspaces for implementing a virtual mouse.

[0029] [Figure 8A] FIG. 1 illustrates examples of 2D and 3D virtual gesture spaces. [Figure 8B] FIG. 1 illustrates examples of 2D and 3D virtual gesture spaces.

[0030] [Figure 9] 1 is a flowchart illustrating an example method for hand detection and virtual gesture space redefinition based on the detected hands.

[0031] [Figure 10A] FIG. 10 illustrates an exemplary implementation of the method of FIG. [Figure 10B] FIG. 10 illustrates an exemplary implementation of the method of FIG.

[0032] [Figure 11] 1 is a flowchart illustrating an example method for hand detection using a virtual gesture space with implementation of a user list.

[0033] [Figure 12] 11 is a flowchart illustrating an example method for performing detection using an adaptive ROI.

[0034] [Figure 13] FIG. 13 illustrates an exemplary ROI sequence that may be used in the method of FIG. 12.

[0035] [Figure 14] FIG. 1 is a block diagram illustrating an example collaborative network that may be used for gesture recognition.

[0036] [Figure 15] FIG. 15 illustrates some exemplary training data samples that may be used to train the collaboration network of FIG. [Figure 16] FIG. 15 illustrates some exemplary training data samples that may be used to train the collaboration network of FIG.

[0037] [Figure 17]1 is a flowchart illustrating an example method for gesture recognition.

[0038] [Figure 18] FIG. 2 is a state diagram illustrating an example of state-based gesture recognition.

[0039] [Figure 19] 1 is a flowchart illustrating an exemplary method for hand detection including image alignment.

[0040] [Figure 20] 11 is a graph illustrating an example of image adjustment based on pixel intensity.

[0041] [Figure 21A] FIG. 13 illustrates an example of image adjustment including adding a lighting section to the displayed content. [Figure 21B] FIG. 13 illustrates an example of image adjustment including adding a lighting section to the displayed content.

[0042] Similar reference numbers may be used in different figures to indicate similar components. DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS

[0043] In various examples, the present disclosure describes methods and systems that enable gesture-based control of a device. For example, the gesture-controlled device may be a television (e.g., a smart TV), a mobile communication device (e.g., a smartphone), a tablet device, a desktop device, a vehicle-based device (e.g., a dashboard device), or a smart speaker, among other possibilities. The gesture-based control described herein may be used to enable user interaction with any user interface provided by the gesture-controlled device, including user interfaces with or without a display output. Examples of the present disclosure may also be implemented for augmented reality (AR), virtual reality (VR), or video game applications, among other possibilities.

[0044] For brevity, this disclosure describes examples in the context of a gesture-controlled device having a display output (e.g., a smart TV, a smartphone, or a tablet) and describes gesture-based control for interacting with video playback, however, it should be understood that this application is not limited to such embodiments and may be used for gesture-based control of a variety of devices in a variety of applications.

[0045] FIG. 1 illustrates an example of a user 10 interacting with a gesture control device 100. In this simplified diagram, the gesture control device 100 includes a camera 102 that captures a sequence of frames (e.g., digital images) within a field-of-view (FOV) 20, where the sequence of frames includes a gesture input. The FOV 20 may include at least a portion of the user 10, in particular the face and hands of the user 10, as described further below. Of note, in practical use (e.g., outside of a laboratory environment), the FOV 20 typically includes more than just the user 10. For example, the FOV 20 may also include other objects, a background scene, or possibly other people. Instead of the camera 102, the gesture control device 100 may have another sensor capable of sensing gesture input from the user 10, for example, any image capture device / sensor (e.g., an infrared image sensor) that captures a sequence of frames (e.g., infrared images) including the gesture input within the FOV 20 of the image capture device / sensor. The gesture control device 100 also includes a display 104 that provides output, such as video. The gesture control device 100 includes a camera 102 in the embodiment shown in FIG. 1, but in other embodiments, the camera 102 may be a peripheral device that communicates with the gesture control device 100.

[0046] 2 is a block diagram illustrating some components of the gesture control device 100. Although an exemplary embodiment of the gesture control device 100 is shown and described below, other embodiments may be used to implement the examples disclosed herein, which may include different components than those shown. Although FIG. 2 shows a single instance of each component, there may be multiple instances of each component shown.

[0047] The gesture control device 100 includes one or more processing devices 202, such as a processor, a microprocessor, an application specific integrated circuit (ASIC), a field programmable gate array (FPGA), a dedicated logic circuit, a dedicated artificial intelligence processor unit, or a combination thereof. The gesture control device 100 also includes one or more input / output (I / O) interfaces 204, which interface with input devices, such as the camera 102, and output devices, such as the display 104. The gesture control device 100 may include other input devices (e.g., buttons, microphones, touch screens, keyboards, etc.) and other output devices (e.g., speakers, vibrating units, etc.). The camera 102 (or other input devices) may be capable of capturing a sequence of frames that include gesture inputs. The captured frames may be provided by the I / O interface 204 to a memory 208 for storage (e.g., buffering therein) and provided to the processing device 202 for processing in real time or near real time (e.g., within 10 ms).

[0048] The gesture control device 100 may include one or more optional network interfaces 206 for wired or wireless communication with a network (e.g., an intranet, the Internet, a P2P network, a WAN, and / or a LAN) or other nodes. The network interface 206 may include wired links (e.g., an Ethernet cable) and / or wireless links (e.g., one or more antennas) for intranetwork and / or internetwork communication.

[0049] The gesture control device 100 includes one or more memories 208, which may include volatile or non-volatile memory (e.g., flash memory, random access memory (RAM) and / or read-only memory (ROM)). The non-transient memory 208 may store instructions for execution by the processing device 202 to perform embodiments described in this disclosure. For example, the memory 208 may include instructions for executing the adaptive gesture sensing system 300. The memory 208 may include other software instructions, such as for implementing an operating system and other applications / functions. The memory 208 may also include data 210, such as video content files, which may be provided as output via the display 104.

[0050] In some examples, the gesture control device 100 may also include one or more electronic storage units (not shown), such as a solid state drive, a hard disk drive, a magnetic disk drive, and / or an optical disk drive. In some examples, one or more data sets and / or modules may be provided by an external memory (e.g., an external drive in wired or wireless communication with the gesture control device 100) or may be provided by a temporary or non-transitory computer readable medium. Examples of non-transitory computer readable media include RAM, ROM, erasable programmable ROM (EPROM), electrically erasable programmable ROM (EEPROM), flash memory, CD-ROM, or other portable memory storage. The components of the gesture control device 100 may communicate with each other, for example, via a bus.

[0051] To aid in understanding the present disclosure, a discussion of gestures is first provided. In this disclosure, a hand gesture is generally defined as a distinct hand shape that can be recognized by the gesture control device 100 as a specific command input. Hand gestures can have different shapes and movements. For example, a hand gesture can be recognized by the gesture control device 100 as belonging to one of the classes shown in FIGS. 3A-3H. A hand gesture such as that shown in FIGS. 3A-3H that is present in a sequence of frames (e.g., images) captured by the camera 102 is referred to as a gesture input.

[0052] Figure 3A shows an "open hand" gesture 30, Figure 3B shows a "fist" (or "closed hand") gesture 32, Figure 3C shows a "pinch open" gesture 34, Figure 3D shows a "pinch closed" gesture 36, Figure 3E shows a "mute" (or "quiet") gesture 38, Figure 3F shows a "like" (or "approve") gesture 40, Figure 3G shows an "other" (or "next") gesture 42, and Figure 3H shows a "touch" (or "select") gesture 44. Other gesture classes may be recognized by the gesture control device 100.

[0053] Based on such gesture classes, hand gestures may be classified as static or dynamic. A static gesture is defined by a single gesture class and is generally held in a fixed position (e.g., within a defined region that allows some margin of error) for at least a defined period (e.g., 1 second) or at least a defined number of consecutive frames (e.g., 100 frames) in a sequence of frames captured by the camera 102. For example, a static open hand gesture 30 may be recognized by the gesture control device 100 (e.g., the adaptive gesture sensing system 300) and may be interpreted as a pause command input in the context of video playback. A static clenched fist gesture 32 may be recognized by the gesture control device 100 and may be interpreted as a stop command input in the context of video playback.

[0054] A dynamic gesture is defined by a combination of one or more gesture classes, positions and / or movements. For example, a dynamic gesture may be a single gesture class that changes position over time (e.g., detected at different positions across a sequence of frames captured by the camera 102). An open hand gesture 30 that changes position may be recognized by the gesture control device 100 (e.g., the adaptive gesture sensing system 300) and interpreted as a command to drag or move an interface object, such as a displayed icon.

[0055] 4A illustrates another type of dynamic gesture that may be a combination of gesture classes. In FIG. 4A, the dynamic gesture includes a combination of a touch gesture 44 followed by a fist gesture 32. This dynamic gesture may be recognized by the gesture control device 100 (e.g., the adaptive gesture sensing system 300 operating in the gesture control device 100) and interpreted as a command input equivalent to selecting and then clicking an interface object using a mouse device. In another example, a pinch closed gesture 36 followed by a pinch open gesture 34 together may be recognized as a "pinching" dynamic gesture, which may be recognized by the gesture control device 100 and interpreted as a zoom out command input.

[0056] More complex dynamic gestures may include both a combination of gesture classes and changes in position. For example, in FIG. 4A, if touch gesture 44 is detected as a change in position over time (e.g., detected at different positions in a sequence of frames captured by camera device 102) and is followed by fist gesture 32, gesture control device 100 (e.g., adaptive gesture sensing system 300 operating in gesture control device 100) may interpret the complex dynamic gesture upon detection of fist gesture 32 as a command input to move a displayed cursor in a manner that mirrors the change in position of touch gesture 44 followed by a click command.

[0057] Another example is the pinch open gesture. 34 followed by a pinch closed gesture 36 followed by a pinch closed gesture 36 Change in position of the screen followed by a pinch open gesture 34may also be recognized together as a dynamic "pinch drag release" gesture by the gesture control device 100 (e.g., an adaptive gesture sensing system 300 operating on the gesture control device 100). Note that dynamic gestures that include changes in position may be interpreted as different inputs depending on the specific change in position. For example, as shown in FIG. 4B, a pinch closed gesture 36 A pinch-drag-release gesture accompanied by a vertical change 46 in the position of the finger (or a vertical "drag") may be interpreted in the context of video playback as a command input to change the volume. In contrast, a pinch-closed gesture, as shown in FIG. 36 A pinch-drag release gesture accompanied by a horizontal change 48 in the position of the pinch-drag may be interpreted in the context of video playback as a command input to move forward or backward in the video. Such a pinch-drag release dynamic gesture may provide an intuitive and convenient way for a user to interact with the gesture control device 100, and may also enable the gesture input to be detected and recognized with a relatively high degree of accuracy by the gesture control device 100 (e.g., an adaptive gesture sensing system 300 operating on the gesture control device 100). In particular, a pinch-drag release dynamic gesture may be used to distinguish the dynamic gesture from its static gesture components (e.g., a pinch open gesture). 34 followed by a pinch closed gesture 36 , followed by another pinch open gesture 34 ) can be detected and recognized.

[0058] Some conventional existing computer vision techniques for hand gesture recognition perform hand detection, hand shape classification and gesture recognition based on hand shapes and positions in a sequence of frames (e.g., digital images) captured by the camera 102. Gesture segmentation and recognition are generally computationally expensive. Furthermore, when the sequence of frames is captured by the camera 102 of the gesture control device 100 in an uncontrolled and potentially complex environment (e.g., with a cluttered background, when the user is at a large distance from the device, in a low light environment, or when there are multiple people within the FOV), it is often difficult to process the sequence of frames captured by the camera 102 to detect and recognize hand gestures (whether static or dynamic).

[0059] In various examples, the present disclosure describes solutions that enable more accurate and efficient gesture detection and recognition in a sequence of frames captured by a camera of a gesture control device. In some examples, the present disclosure describes an adaptive gesture detection system that utilizes a virtual gesture space to reduce the area in each frame of a sequence of frames captured by a camera that must be processed for gesture detection. In some examples, the present disclosure also describes a state-based (instead of motion-based) approach to recognizing dynamic gestures. It will be appreciated that the present disclosure includes additional aspects and features.

[0060] This disclosure describes the use of a virtual gesture space, defined as the space surrounding the user's face at least initially, to process each frame of the sequence of frames captured by the camera to detect hand gestures within the sequence of frames. The virtual gesture space must be smaller than the FOV 20 captured by the camera 102. Only hand gestures (e.g., gesture inputs) detected and recognized within the virtual gesture space may be considered valid hand gestures (e.g., gesture inputs). The use of the virtual gesture space may enable a reduction in false positives (e.g., especially in complex backgrounds) in the detection of hand gestures within the sequence of frames, may make it easier to associate hand gestures with a particular user, and may enable more efficient processing of the sequence of frames to detect and recognize hand gestures (e.g., gesture inputs).

[0061] 5 is a block diagram illustrating some example subsystems of the adaptive gesture sensing system 300. In this example, the adaptive gesture sensing system 300 may be implemented using a virtual gesture space subsystem 310 and a gesture analysis subsystem 320. In the following examples, the adaptive gesture sensing system 300 will be described as including or providing the functionality of both subsystems 310, 320. However, in other examples, the adaptive gesture sensing system 300 may include (or provide the functionality of) only one of the subsystems 310, 320. For example, the adaptive gesture sensing system 300 may only provide adaptive generation of a virtual gesture space (e.g., using the virtual gesture space subsystem 310) and detection of hand gestures in a sequence of frames captured by the camera 102 of the gesture control device 100 that are within the virtual gesture space, and gesture recognition and analysis may be performed by another component of the gesture control device 100 (e.g., using any suitable existing gesture recognition technology). In another example, the adaptive gesture sensing system 300 may only provide gesture recognition and management for multiple users (e.g., using the gesture analysis subsystem 320), and gesture detection may be performed by another component of the gesture control device 100 (e.g., using any suitable existing gesture detection technology).

[0062] In some examples, the adaptive gesture sensing system 300 may not include separate subsystems 310, 320. Instead, sub-blocks of the subsystems 310, 320 may be considered sub-blocks of the adaptive gesture sensing system 300 itself. Thus, implementation of the adaptive gesture sensing system 300 using separate subsystems 310, 320 is optional.

[0063] The adaptive gesture sensing system 300 includes a face detection and tracking subsystem 312, a virtual gesture space generation subsystem 314, a hand detection and tracking subsystem 316, a gesture recognition subsystem 322, and a user list 324. The face detection and tracking subsystem 312, the virtual gesture space generation subsystem 314, and the hand detection and tracking subsystem 316 may be part of a virtual gesture space subsystem 310, and the gesture recognition subsystem 322 and the user list 324 may be part of a gesture analysis subsystem 320.

[0064] In some examples, instead of or in addition to the face detection and tracking subsystem 312, another subsystem (not shown) may be used for detection and tracking of a different anatomical feature (e.g., an entire human body or a human torso) in a sequence of frames captured by the camera 102. As discussed further below, a different anatomical feature may be used instead of or in addition to a human face as a basis for generating a virtual gesture space. For simplicity, this disclosure focuses on the use of face detection and tracking in a sequence of frames captured by the camera 102, but it should be understood that this is not intended to be limiting.

[0065] The frames of the sequence of frames captured by the camera 102 are received as input frames to the adaptive gesture sensing system 300. The face detection and tracking subsystem 312 performs face detection on the input frames. The face detection and tracking subsystem 312 may use any suitable face detection technique to detect faces in the input frames and generate a bounding box for the detected face. The bounding box may be a two-dimensional (2D) or three-dimensional (3D) box centered around the face detected in the input frames and surrounding the face.

[0066] The bounding box generated for the face detected in the input frame is used by the virtual gesture space generation subsystem 314 to define a virtual gesture space. In this disclosure, virtual gesture space (or simply gesture space) refers to a 2D or 3D space defined in the input frame and mapping to a virtual space in the real-life environment of the user 10, in which hand gestures (e.g., gesture inputs) can be detected. In other words, the user 10 can make hand gestures in a virtually defined 2D or 3D virtual gesture space to provide command inputs to the gesture control device 100. Gestures performed outside the virtual gesture space may not be detected and may not be recognized as command inputs by the gesture control device 100. The dimensions of the virtual gesture space may or may not match the dimensions of the face bounding box (e.g., the face bounding box may be 2D and the virtual gesture space may be 3D).

[0067] The virtual gesture space defined by the virtual gesture space generation subsystem 314 is used by the hand detection and tracking subsystem 316 to perform hand detection and tracking in the sequence of frames captured by the camera. In particular, the hand detection and tracking subsystem 316 may analyze only the defined virtual gesture space in the input frames and each subsequent frame in the sequence of frames to detect and track hands in the sequence of frames. The hand detection and tracking subsystem 316 may use any suitable hand detection technique to detect hands in the input frames and define 2D or 3D bounding boxes for the detected hands.

[0068] In some examples, the face detection and tracking subsystem 312 may include a trained neural network configured to perform face detection. Similarly, the hand detection and tracking subsystem 316 may include another trained neural network configured to perform hand detection. For example, a suitable trained neural network configured for face or hand detection may be a trained object detector such as one using YoloV3 (e.g., as described in Redmon et al., "Yolov3: An incremental improvement," arXiv preprint arXiv:1804.02767, 2018) based on a residual neural network (ResNet) architecture such as ResNet34 (e.g., as described in He, Kaiming et al., "Deep residual learning for image recognition," Proceedings of the IEEE conference on computer vision and pattern recognition. 2016). Another example of a suitable trained neural network configured for face or hand detection may be a trained single shot detector (SSD) such as multibox SSD (e.g., as described in Liu et al., "Ssd: Single shot multibox detector," European conference on computer vision. Springer, Cham, 2016) based on a convolutional neural network (CNN) architecture such as MobileNetV2 (e.g., as described in Sandler et al., "Mobilenetv2: Inverted residuals and linear bottlenecks," Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition. 2018).Face and hand tracking may be performed by the face detection and tracking subsystem 312 and the hand detection and tracking subsystem 316, respectively, using the Lucas-Kanade optical flow technique (described in Lucas et al., “An iterative image registration technique with an application to stereo vision.” Proceedings of Imaging Understanding Workshop, 1981).

[0069] The bounding box defined for the detected hand is used by the gesture recognition subsystem 322 to perform identification and classification of the detected hand shape as a gesture class. The gesture recognition subsystem 322 may classify the detected hand shape as a particular gesture class using any suitable classification technique. For example, the gesture recognition subsystem 322 may include a neural network (e.g., CNN) trained to classify gestures according to a set of predefined gesture classes. The neural network is trained using known machine learning algorithms to learn the parameters (e.g., weights) of the neural network. The trained neural network receives the bounding box for the detected hand gesture and predicts a particular gesture class corresponding to the bounding box from the set of predefined gesture classes. The gesture class predicted by the gesture recognition subsystem 322 may be output (e.g., as a label) from the adaptive gesture sensing system 300.

[0070] A software application (e.g., an operating system) of the gesture control device 100 may convert the gesture classes output by the adaptive gesture sensing system 300 into command inputs. The conversion of gesture classes into command inputs may be application dependent. For example, a given gesture class may be converted into a first command input when a first application is active, but converted into a second command input (or may be considered invalid) when a second application is active.

[0071] In some examples, the adaptive gesture sensing system 300 stores and maintains a user list 324 to keep track of the primary user. For example, multiple humans may be present within the FOV 20 of the camera 102. Thus, the face detection and tracking subsystem 312 may detect and track multiple human faces in a sequence of frames captured by the camera 102 within the FOV 20. Each detected face may belong to a human who is potentially a user who can provide input to the gesture control device 100. Thus, each detected human may be considered a user (or a potential user) even if the detected human is not currently providing a recognized hand gesture (e.g., gesture input). The user list 324 keeps track of all detected users and ranks the detected users according to some predetermined criteria (e.g., based on the size of the user, the distance of the user from the gesture control device 100, whether the user's gaze is directed toward the gesture control device 100, etc.). The highest ranking user in the user list 324 may be considered the primary user. A hand gesture (e.g., gesture input) in a sequence of frames associated with a primary user may be prioritized over any other hand gesture (e.g., gesture input) detected in a sequence of frames associated with other detected users. In some examples, only authorized or pre-registered users may be included in the user list 324. For example, a user profile may be associated with an authorized or pre-registered user, and the user profile may include data (e.g., biometric data) that allows the authorized or pre-registered user to be identified by the gesture control device 100 (e.g., using suitable facial recognition technology). Such facial recognition of authorized or pre-registered users may be performed by the adaptive gesture sensing system 300 or by a separate facial recognition system of the gesture control device 100. By restricting the user list 324 to include only authorized or pre-registered users, unauthorized gesture-based control of the device 100 may be avoided. In addition, false positive detection of gesture input may be reduced.

[0072] Although the adaptive gesture sensing system 300 is illustrated as having different sub-blocks (or subsystems), it should be understood that this is not intended to be limiting. For example, the adaptive gesture sensing system 300 may be implemented using a greater or lesser number of sub-blocks (or subsystems) or may not require any sub-blocks (or subsystems). Furthermore, functionality described herein as being performed by a particular sub-block (or subsystem) may instead be performed by another sub-block (or subsystem).

[0073] In general, the functionality of the adaptive gesture sensing system 300 may be implemented in a variety of suitable ways and is within the scope of this disclosure.

[0074] An example of the operation of the adaptive gesture sensing system 300 will now be described.

[0075] 6 is a flow chart illustrating an example method 600 that may be performed by the adaptive gesture sensing system 300, for example, using the virtual gesture space subsystem 310 (and subsystems 312, 314, 316). The method 600 may be performed by a software routine or subroutine executed by the processing device 202 of the gesture control device 100. Coding software to execute such routines or subroutines is well within the scope of one of ordinary skill in the art in view of this disclosure. The method 600 may include additional or fewer steps or operations than those shown and described, and may be performed in a different order. For example, computer readable code executable by the processing device 202 may be stored on a computer readable medium.

[0076] At 602, an input frame in a sequence of frames is received. Typically, the input frame and each subsequent frame to the input frame in the sequence of frames are received one at a time in real time or near real time. The input frame (and each subsequent frame) may be a raw, unprocessed digital image captured by the camera 102 or may be a minimally processed (e.g., normalized) digital image.

[0077] At 604, the adaptive gesture sensing system 300 detects distinguishing anatomical features in the input frame. The entire input frame may be processed at step 604. A distinguishing anatomical feature may be any part of a user's body that can be easily detected and distinguished from the background. An example is the detection of a human face (e.g., using the face detection and tracking subsystem 312). In some situations, it may be difficult to detect a face, in which case a different anatomical feature (e.g., the entire human body or the human torso) may be detected instead. As mentioned above, the anatomical feature may be detected using any suitable approach, including using any suitable computer vision technique. Detecting the distinguishing anatomical feature may include determining the location of the anatomical feature (e.g., represented by a bounding box or coordinates).

[0078] At 606, a virtual gesture space is generated (e.g., using the virtual gesture space generation subsystem 314) based on the detected distinct anatomical features (e.g., detected faces). In some examples, multiple instances of the distinct anatomical features may be detected (e.g., multiple faces may be detected if multiple people are present in the input frame captured by the camera 102 within the FOV 20), in which case one virtual gesture space may be generated for each detected instance of the distinct anatomical feature. As discussed further below, in some examples, when multiple instances of the distinct anatomical features are detected, only one virtual gesture space may be generated, or the generation of the virtual gesture space may be based on a ranking or prioritization of the detected instances of the distinct anatomical features.

[0079] The virtual gesture space may be generated using predefined equations that relate the positions of each anatomical feature detected in the input frames. For example, the virtual gesture space may be generated by calculating a rectangular space for a bounding box of the detected face. Some example equations are provided further below.

[0080] Optionally, at 608, information about the generated virtual gesture space may be provided by the adaptive gesture sensing system 300 to enable the gesture control device 100 to provide feedback to the user 10 regarding the generated virtual gesture space. For example, the adaptive gesture sensing system 300 may provide information indicative of coordinates or other parameters of the virtual gesture space to enable the gesture control device 100 to render a representation of the virtual gesture space to the user 10 on the display 104 (e.g., as an overlay on top of a live camera image). In another example, the virtual gesture space may be represented to the user 10 by having an inset or auxiliary window rendered by the gesture control device 100 on the display 104 to show only the FOV corresponding to the virtual gesture space. Other methods of providing feedback to the user 10 may also be appropriate.

[0081] At 610, a hand is detected in the input frame in the generated virtual gesture space (e.g., using the hand detection and tracking subsystem 316). The detected hand may be associated (e.g., labeled) with the respective virtual gesture space in which it was detected in the input frame. If there are multiple generated virtual gesture spaces, an attempt may be made to detect a hand in each generated virtual gesture space in the input frame. If a hand is not detected in a given virtual gesture space in the input frame, the given virtual gesture space may be ignored or discarded.

[0082] If no hands are detected in any of the generated virtual gesture spaces in the input frames, it may be determined that no hand gestures (e.g., gesture inputs) are found in the input frames, and method 600 may return to step 602 to receive the next input frame in the sequence of frames. Assuming that at least one hand is detected in at least one virtual gesture space, method 600 proceeds to optional step 612.

[0083] Optionally, at 612, if more than one hand is detected in the given virtual gesture space in the input frame, one primary hand may be identified in the given virtual gesture space. The primary hand may be identified based on, for example, the largest hand in the given virtual gesture space in the input frame; the detected hand that is closest to a detected distinct anatomical feature (e.g., face) in the given virtual gesture space in the input frame; or the detected hand that is closest in lighting and / or hue to a detected distinct anatomical feature (e.g., face) in the given virtual gesture space in the input frame, among other possibilities. If only one hand is detected in the given virtual gesture space in the input frame, that one hand may be assumed to be the primary hand.

[0084] At 614, the detected hand (or primary hand) is tracked (e.g., using the hand detection and tracking subsystem 316) in a respective virtual gesture space in subsequent frames relative to the input frame of the sequence of frames. Tracking of the detected hand (or primary hand) is performed by processing each subsequent frame. Information from the detection and tracking of the hand (or primary hand) in each subsequent frame is provided for further analysis and analysis. For example, a bounding box and any identifiers may be generated to track the detected hand in subsequent frames. The bounding box (and any identifiers) may then be provided (e.g., to the gesture recognition subsystem 322) for analysis and analysis.

[0085] In some examples, the method 600 may be implemented by the adaptive gesture sensing system 300 using only the virtual gesture space subsystem 310. Instead of outputting a gesture class (as shown in FIG. 5 ), the adaptive gesture sensing system 300 may output information about the tracked hand (e.g., a bounding box) to a conventional gesture recognition system, which may perform hand classification and gesture recognition on the information (e.g., the bounding box).

[0086] Instead of directly detecting the user's hands, the above example first detects distinctive anatomical features (e.g., the user's face) in the input frames and generates a virtual gesture space (smaller than the FOV in the input frames) based on the detected features. Hand detection is then performed on the input frames only in the virtual gesture space. The user's face can be used as a distinctive anatomical feature to generate the virtual gesture space because face detection is typically more accurate and reliable than hand detection. By restricting hand detection to the virtual gesture space, the processing required to process subsequent frames for hand detection can be simplified, false positives can be reduced, and it can be easier to identify the primary hand in subsequent frames for gesture input.

[0087] In some examples, the method 600 may be used to process every frame captured by the camera 102. In other examples, the method 600 may be used only when gesture input is expected. For example, the method 600 may be initiated in response to receiving input (e.g., via keyboard input, mouse input, or voice input). In some examples, the method 600 may be initiated based on detection of human attention. For example, the gesture control device 100 may use attention detection technology (e.g., may run eye tracking software) to determine whether a human is looking directly at the gesture control device 100, and the method 600 may be initiated only when direct human gaze is detected at the gesture control device 100. Initiating the method 600 in response to detected human attention may be useful to avoid false positives or erroneous interpretations of gesture input.

[0088] 7 illustrates an example implementation of method 600 in which a virtual gesture space is generated based on a detected face. In this example, it is assumed that a primary user's face 12 is detected at 604 and the face 12 is used as a distinguishing anatomical feature as a basis for generating a virtual gesture space at 606.

[0089] Bounding box 702 may be generated for face 12 using any suitable face detection technique, including computer vision based techniques such as those described above. In this example, bounding box 702 is generated using the values ​​{x f ,y f ,w f ,h f}, where x f and y f define the x and y coordinates (in the frame of reference defined by the adaptive gesture sensing system 300) of the anchor point (e.g., center) of the bounding box 702, respectively, and w f and h f respectively define the width and height of the bounding box 702. Based on the bounding box 702, a virtual gesture space 704 is generated (e.g., in step 606) and the values ​​{x g ,y g ,w g ,h g}, where x g and y g define the x and y coordinates (in the frame of reference defined in the adaptive gesture sensing system 300) of the anchor point (e.g., center) of the virtual gesture space 704, respectively, and w g and h g respectively define the width and height of virtual gesture space 704. For example, the following equations may be used to generate virtual gesture space 704:

[0090]

number

[0091]

number

[0092]

number

[0093] h g =β h f

[0094] Here, (Δ x ,Δ y ) is a predetermined relative position parameter, (outside 1) TIFF0007626523000004.tif1622 is a given scale parameter. The parameter (Δ x ,Δ y ) and (outside 2) TIFF0007626523000005.tif1324 may be predefined (e.g., by the user 10 or by the manufacturer of the gesture control device 100) to result in a desired size of the virtual gesture space 704 and a desired positioning of the bounding box 702 within the virtual gesture space 704. Note that in some examples, the virtual gesture space 704 may be generated such that the bounding box 702 of the face 12 is partially or entirely outside the virtual gesture space 704. That is, while the face 12 may be used as a basis for generating the virtual gesture space 704, the virtual gesture space 704 does not necessarily need to include the face 12.

[0095] 7, the virtual gesture space 704 is generated as a 2D space having a rectangular shape. However, it should be understood that the virtual gesture space 704 may be generated as a 2D or 3D space and may be generated to have any geometric shape (e.g., square, rectangle, circle, etc.), regular or irregular.

[0096] In some examples, the virtual gesture space 704 may further define one or more subspaces 706, 708, which may be used to implement a particular input function. The subspaces 706, 708 may be defined (e.g., by the virtual gesture space generation subsystem 314) based on the features of the detected face 12. For example, a left subspace 706 and a right subspace 708 may be defined in the virtual gesture space corresponding to a lower left portion and a lower right portion of the detected face 12 based on the detected eye and nose positions of the face 12. Detection of a touch (or point) gesture in the left subspace 706 may be interpreted as a left mouse button click input. Similarly, detection of a touch (or point) gesture in the right subspace 708 may be interpreted as a right mouse button click input. In this manner, the virtual gesture space 704 with the defined subspaces 706, 708 may be used to implement a virtual mouse. In some examples, the dynamic gesture illustrated in FIG. 4A may be detected as a gesture input to implement a virtual cursor. A virtual cursor may be moved (and represented via a visual overlay displayed to the user 10) as touch (or point) gestures 44 are tracked, and a mouse click input may be detected when a closed hand gesture 32 is detected. In this manner, a virtual mouse may be implemented.

[0097] 8A and 8B show another example of a virtual gesture space 704 generated based on the face 12 of the user 10 detected in an input frame in a sequence of frames captured by the camera 102. In FIG. 8A, the virtual gesture space 704 is a 2D space and has a rectangular shape that includes both the face 12 and hands 14 of the user 10 (e.g., similar to the example of FIG. 7). In FIG. 8B, the virtual gesture space 704 is a 3D space that includes both the face 12 and hands 14 of the user 10. The virtual gesture space 704 can be generated as a 3D space when depth information is available. For example, the depth information can be calculated from the sequence of frames using video analysis techniques. For example, the gesture control device 100 may use two cameras 102 to calculate depth information (e.g., using computer stereo vision techniques), or the camera 102 may be an RGB depth (RGBD) camera capable of generating depth information (in addition to conventional RGB image information), or the gesture control device 100 may include a time-of-flight (ToF) camera in addition to the conventional camera 102 to obtain RGB image information and additional corresponding depth information. In some examples, the depth information may be captured using a sensor (e.g., an infrared sensor) capable of capturing depth information in addition to the camera 102. The use of the 3D virtual gesture space 704 may be useful to enable a depth-based gesture input (e.g., moving a hand closer or farther away from the gesture control device 100) to be detected and recognized as a command input.

[0098] In some examples, the virtual gesture space may be first generated based on a distinguishing anatomical feature (e.g., a face) detected in an input frame in a sequence of frames, and then redefined or updated based on a hand detected in a subsequent frame to the input frame in the sequence of frames. In this way, the virtual gesture space can follow the position of the detected hand even if the hand moves away from the distinguishing anatomical feature.

[0099] 9 is a flow chart illustrating an example method 900 that may be performed by the adaptive gesture sensing system 300, for example, using the virtual gesture space subsystem 310 (and subsystems 312, 314, 316). 900 may be performed by a software routine or subroutine executed by the processing device 202 of the gesture control device 100. Coding software to perform such routines or subroutines is well within the purview of those skilled in the art in view of this disclosure. 900 may include additional or fewer steps or operations than those shown and described, and may be performed in a different order. For example, computer readable code executable by processing device 202 may be stored on a computer readable medium. Method 900 may include similar steps as described for method 600 above, in which case similar steps may not be described again in detail.

[0100] At 902, an input frame of a sequence of frames is received. This step may be similar to step 602 described above.

[0101] At 904, the adaptive gesture sensing system 300 detects distinct anatomical features in the input frame. This step may be similar to step 604 described above.

[0102] At 906, a virtual gesture space is generated (e.g., using the virtual gesture space generation subsystem 314) based on the detected distinct anatomical features (e.g., a detected face) in the input frame. This step may be similar to step 606 described above. Optionally, information representative of the virtual gesture space may be provided (e.g., so that feedback may be provided to the user 10). For simplicity, the following description of the method 900 assumes that only one virtual gesture space is generated. However, it should be understood that the method 900 may be adapted to the case where multiple virtual gesture spaces are generated (e.g., based on multiple detected instances of distinct anatomical features in the input frame).

[0103] At 908, a hand is detected in the virtual gesture space in the input frame (e.g., using the hand detection and tracking subsystem 316) and associated with the detected virtual gesture space. This step may be similar to step 610 described above. Optionally, a primary hand may be identified and associated with the virtual gesture space.

[0104] At 910, the virtual gesture space is redefined based on the detected hand. Redefining the virtual gesture space may include recalculating the position and / or dimensions of the virtual gesture space in a subsequent frame relative to the input frame using predefined equations related to the detected hand (rather than related to the detected anatomical features). For example, the virtual gesture space may be redefined such that it is centered on a bounding box of the detected hand. Some example equations are described further below.

[0105] At 912, the redefined virtual gesture space is stored, which allows the redefined virtual gesture space (redefined based on the detected hands) to be used as the basis for hand detection and tracking in subsequent frames relative to the input frame instead of the originally generated virtual gesture space (originally generated based on detected distinct anatomical features in the input frames, such as a detected face).

[0106] At 914, the hand (or primary hand) detected in the input frame is tracked in subsequent frames to the input frame in the redefined virtual gesture space (e.g., using the hand detection and tracking subsystem 316). This step may be similar to step 614 described above. The bounding box (and any identifiers) may be provided (e.g., to the gesture recognition subsystem 322 or other hand classifier) ​​for analysis and parsing the gesture input.

[0107] Method 900 allows the virtual gesture space to be redefined based on the hand detected in the input frame, so that the hand may continue to be tracked and detected in each subsequent frame to the input frame, even if the hand is moved further away from a distinctive anatomical feature. After the virtual gesture space is redefined based on the detected hand, the subsequent frames may be processed using the redefined virtual gesture space. The redefined virtual gesture space may be continuously redefined in each subsequent frame as the hand changes position in space, such that as the hand moves, the virtual gesture space remains centered on the detected hand. For example, subsequent frames to an input frame in a sequence of frames may be processed using a variation of method 900 in which steps 904 and 906 are omitted.

[0108] In some examples, if a hand is no longer detected in the redefined virtual gesture space in a subsequent frame, the virtual gesture space may be regenerated based on the detected distinctive anatomical features in the input frame. In other words, the distinctive anatomical features may be used as an anchor or default basis for defining the virtual gesture space. In some examples, this reversion to using distinctive anatomical features as the default basis for the virtual gesture space may be performed only if a hand cannot be detected in the redefined virtual gesture space for more than a predetermined number of subsequent frames (e.g., at least 10 frames following the input frame).

[0109] 10A and 10B show an example implementation of the method 900 in which a virtual gesture space 704 is first generated based on a face 12 of a user 10 detected in an input frame in a sequence of frames, and then redefined based on a hand 14 of the user 10 detected in the input frame. In FIG. 10A, the virtual gesture space 704 is a 2D space having a rectangular shape (e.g., similar to the example of FIG. 7) that is generated based on a bounding box 702 of the face 12 detected in the input frame. The hand 14 is detected in the virtual gesture space 704 in the input frame, and a bounding box 706 for the hand 14 is defined. In FIG. 10B, the virtual gesture space 704b is redefined based on the bounding box 706 of the hand 14.

[0110] For example, the bounding box 706 of the hand 14 is bounded by the values ​​{x h ,y h ,w h ,h h}, where x h and y h define the x and y coordinates (in the frame of reference defined by the adaptive gesture sensing system 300) of the anchor point (e.g., center) of the bounding box 706, respectively, and w h and h hrespectively define the width and height of bounding box 706. Based on bounding box 706, virtual gesture space 704b is redefined (e.g., in step 910). For example, the following equations may be used to redefine virtual gesture space 704b:

[0111]

number

[0112]

number

[0113]

number

[0114] h g =β h h f

[0115] where {x h ,y h ,w h ,h h} are parameters that define the virtual gesture space 704b, as described above, and (Δ xh , Δ yh ) is a predetermined relative position parameter, (Outside 3) TIFF0007626523000009.tif1229 is the predetermined scale parameter for the detected hand. The parameter (Δ xh , Δ yh ) and (outside 4) TIFF0007626523000010.tif1329 may be predefined (e.g., by the user 10 or by the manufacturer of the gesture control device 100) to result in a desired size of the redefined virtual gesture space 704b and a desired positioning of the bounding box 706 within the redefined virtual gesture space 704b. Notably, as shown in the example of FIG. 10B, the face 12 may be partially or entirely excluded from the redefined virtual gesture space 704b.

[0116] In some examples, when multiple humans are detected in the input frame (e.g., multiple faces are detected by the face detection and tracking subsystem 312), the adaptive gesture sensing system 300 may implement a user list 324 to rank the detected humans and identify one human as the primary user (or primary controller). A virtual gesture space may be generated only for the primary user.

[0117] FIG. 11 is a flow chart illustrating an example method 1100 that may be performed by the adaptive gesture sensing system 300, for example, using the virtual gesture space subsystem 310 and the gesture analysis subsystem 320 (and subsystems 312, 314, 316, 322, 324). The method 1100 may be performed by a software routine or subroutine executed by the processing device 202 of the gesture control device 100. Coding software to execute such routines or subroutines is well within the scope of one of ordinary skill in the art in view of this disclosure. The method 1100 may include additional or fewer steps or operations than those shown and described, and may be performed in a different order. For example, computer readable code executable by the processing device 202 may be stored on a computer readable medium. The method 1100 may include steps similar to those described for the method 600 above, in which case similar steps may not be described again in detail.

[0118] At 1102, an input frame in a sequence of frames is received. This step may be similar to step 602 described above.

[0119] At 1104, it is determined whether a primary user has already been identified and selected. For example, the primary user may have been identified and selected from analyzing a previous input frame in the sequence of frames. If a primary user has already been selected, method 1100 proceeds to step 1106; otherwise, method 1100 proceeds to step 1108.

[0120] At 1106, a distinguishing anatomical feature (e.g., face) of the primary user is detected in the input frame (e.g., using face detection and tracking subsystem 312) and tracked in subsequent frames relative to the input frame in the sequence of frames. If the primary user was identified in a previous input frame, a virtual gesture space may already be defined for the primary user. In such a case, detection and tracking of anatomical features in the input frame and subsequent frames of the input frame may be performed by processing each subsequent frame only within the already defined virtual gesture space. Tracking of anatomical features is performed by processing all subsequent frames, although detection may be performed less frequently (e.g., skipping one or more subsequent frames). Detection of anatomical features may be performed to correct for tracking errors (e.g., tracking errors may accumulate when tracking over many subsequent frames). It should be noted that while this discussion is in the context of detecting and tracking distinctive anatomical features (e.g., the face) of a primary user, if the virtual gesture space is redefined based on hands detected in the input frames (e.g., as described above with respect to Figures 10A and 10B), modifications of step 1106 may be made to process the input frames and subsequent frames to detect and track the hands of the primary user.

[0121] At 1108, if a primary user has not been previously selected, the entire input frame may be processed to detect instances of distinctive anatomical features (e.g., all instances of human faces), for example, using the face detection and tracking subsystem 312. Bounding boxes and identifiers may be generated for each detected anatomical feature. If no instances of distinctive anatomical features are detected in the input frame, method 1100 may return to 1102 to process the next input frame in the sequence of frames.

[0122] At 1110, a ranked user list 324 is generated based on the detected instances of the anatomical features. Each detected instance may be associated with a respective detected user. The user list 324 may be ranked by further analyzing the detected anatomical features (e.g., using any suitable face analysis technique, such as any eye tracking technique) according to a predefined ranking criterion. For example, if the anatomical features are faces, the ranking criterion may specify that larger faces (assumed to be closer to the gesture control device 100) are ranked higher than smaller faces; faces that are directed towards the gesture control device 100 are ranked higher than faces that are directed away from the gesture control device 100; or faces whose eyes are gazing at the gesture control device 100 may be ranked higher than faces whose eyes are looking away from the gesture control device 100. Other ranking criteria may be used. If only one instance of a distinct anatomical feature is detected, the one instance may be ranked at the top of the list by default.

[0123] At 1112, the highest ranking user in the ranked user list 324 is selected as the primary user. If there is only one user in the user list 324, that user may be selected as the primary user by default. The method 1100 then proceeds to step 1106, where it tracks anatomical features of the primary user in the sequence of frames captured by the camera 102.

[0124] At 1114, a virtual gesture space is generated for the primary user. If a virtual gesture space has been previously defined (based on an analysis of previous frames captured by camera 102), the already defined virtual gesture space may be used instead of generating a virtual gesture space. Otherwise, the virtual gesture space is generated based on distinctive anatomical features (e.g., face) of the primary user detected within an input frame of the sequence of frames (e.g., similar to step 606 above). Optionally, information representative of the virtual gesture space may be provided (e.g., so that feedback may be provided to the primary user).

[0125] At 1116, a hand is detected in the virtual gesture space in an input frame in the sequence of frames (e.g., using the hand detection and tracking subsystem 316). This step may be similar to step 610 described above. Optionally, if more than one hand is detected in the virtual gesture space in the input frame, a primary hand may be identified (e.g., based on some predetermined criteria such as hand size) and associated with the virtual gesture space. Optionally, the virtual gesture space may be redefined based on the hand detected in the input frame (similar to that described above for FIG. 9). If the virtual gesture space was redefined in a frame subsequent to the input frame based on the hand detected in the input frame, detection and tracking may have already been performed in step 1106 and this step may not be required.

[0126] At 1118, gesture recognition is performed (e.g., using the gesture recognition subsystem 322) on the hands that are detected and tracked (e.g., as defined by bounding boxes) in the sequence of frames for the input frame to predict a gesture class for the detected hands. The predicted gesture class (if a valid gesture is identified) is output for conversion into, e.g., a command input for a software application. All non-primary users in the user list 324 are discarded (i.e., keeping only the primary users) and method 1100 returns to 1102 to receive and process the next input frame in the sequence of frames captured by camera 102.

[0127] If the gesture recognition cannot predict a valid gesture (e.g., the hand shape cannot be classified into any predefined gesture class) or if the gesture is not a valid gesture for the currently active software application (e.g., the software application reports an invalid input to the adaptive gesture sensing system 300), method 1100 proceeds to step 1120.

[0128] At 1120 , the currently selected primary user is discarded from the user list 324 .

[0129] At 1122, it is determined whether there are any other users in the user list 324. If there is at least one remaining user in the user list 324, then at step 1112, the highest ranked remaining user in the user list 324 is selected as the primary user and the method 1100 proceeds to step 1106 as described above. If there are no remaining users in the user list 324, the method 1100 returns to step 1102 to receive and process the next input frame in the sequence of frames.

[0130] The user list 324 enables the adaptive gesture detection system 300 to analyze and process gesture inputs with reduced false positives, even when multiple people are present within the FOV 20 of the camera 102. The user list 324 can be a relatively efficient way to accommodate the presence of multiple people, although, as discussed above, other techniques may be used instead of or in addition to the user list 324.

[0131] In some examples described above, detection of distinctive anatomical features (e.g., human faces) may be performed by processing the entire input frame. In other examples, as described below, detection of distinctive anatomical features may be performed by processing only a region of interest (ROI) within the input frame. For example, in step 1108 described above, an adaptive ROI approach may be used (e.g., as may be implemented for face detection by face detection and tracking subsystem 312).

[0132] An adaptive ROI, in the context of this disclosure, refers to an ROI whose size and / or location is adaptive to, for example, a face detector (e.g., a face detection and tracking system). Sub 312), the resolution of the input frame, or processing efficiency. For example, machine learning-based (e.g., computer vision-based) face and hand detectors are typically trained to process square input images. Thus, for improved performance in face and hand detection, the ROI for performing detection should be square. For similar reasons, the virtual gesture space for hand detection may be defined as a square.

[0133] 12 is a flow chart illustrating an example method 1200 of using an adaptive ROI to detect distinctive anatomical features in an input frame in a sequence of frames captured by camera 102. Method 1200 may be used as part of step 1108 described above. For example, method 1200 may be implemented by face detection and tracking subsystem 312. It should be understood that method 1100 may be implemented using other techniques for step 1108, and that an adaptive ROI may or may not be used.

[0134] At 1202, it is detected whether an anatomical feature was detected in the previous input frame. If so, the ROI used to detect the anatomical feature (e.g., a face) in the previous input frame is selected to be used again in the current input frame at 1204. In general, the ROI for detection of an anatomical feature should be smaller than the entire input frame and may be square (based on how the detection algorithm was trained or designed).

[0135] If the anatomical feature was not detected in the previous input frame (or there is no previous input frame), then at 1206, an ROI is selected from the ROI sequence. If a ROI from the ROI sequence was used in the previous input frame, then the next ROI in the ROI sequence may be selected for use in the current input frame. The ROI sequence may be predefined (e.g., predefined in the face detection and tracking subsystem 312). The ROI sequence defines a sequence of different ROIs to be used to process successive input frames. For example, if the ROI sequence is a sequence of eight different ROIs (e.g., having different positions and / or sizes), then each ROI in the sequence is selected in turn to perform detection of the anatomical feature in the sequence of eight input frames. The ROI sequence may then cycle back to the first ROI in the sequence.

[0136] FIG. 13 shows an example ROI sequence with eight different ROIs 1302, 1304, 1306, 1308, 1310, 1312, 1314, 1316. The eight ROIs 1302-1316 may be cycled over a sequence of eight different input frames and applied to input frames of different resolutions. For example, the six ROIs 1302-1312 may be applied to the original resolution 1300 of the input frame and designed to enable detection of smaller anatomical features (e.g., when the user 10 is further away from the gesture control device 100). The two ROIs 1314, 1316 may be applied to a miniaturized version 1350 of the input frame (having a lower resolution) and designed to enable detection of larger anatomical features (e.g., when the user 10 is closer to the gesture control device 100). Using compacted versions of the input frame for some ROIs 1314, 1316 may be useful to allow for less computationally expensive processing of larger regions of the input frame.

[0137] Note that the sequence of ROIs is cycled through the sequence of frames captured by camera 102 such that each input frame is processed using only one selected ROI (instead of processing the same input frame using two or more ROIs). Because the input frames captured by camera 102 are typically captured at a high frequency, the time difference between adjacent frames is likely to be small enough that no (or very little) information is lost by processing the frames with the sequence of ROIs in this manner.

[0138] There may be different ROI sequences predefined (e.g., stored in the face detection and tracking subsystem 312). The ROI sequence used may be selected by the user 10, or there may be a predefined order for cycling through the different ROI sequences (i.e., there may be a predefined sequence of ROI sequences to use). Additionally, although the example of FIG. 13 shows each ROI in the ROI sequence being used once in the sequence, in some examples, the ROI sequence may be defined to use a given ROI more than once in the ROI sequence. Other such variations may be possible.

[0139] At 1208, detection of distinctive anatomical features in a selected ROI (either an ROI selected in the previous input frame at step 1204 or an ROI selected from the ROI sequence at step 1206) is performed using the selected ROI.

[0140] The use of adaptive ROIs to perform detection of distinctive anatomical features (eg, faces) may allow for reduced computational cost and / or improved performance of the trained detector.

[0141] In some examples, the adaptive ROI technique may be used to process every frame captured by the camera 102 when gesture detection is activated (or when gesture detection is used by default). In other examples, the adaptive ROI technique may be used to process every N (where N>1) frames. As previously mentioned, in some examples, the hand detection and tracking subsystem 316 may output a bounding box to be used by the gesture recognition subsystem 322 for gesture recognition. In some embodiments, the gesture recognition subsystem 322 may implement a model constructed using a machine learning algorithm. In some embodiments, the gesture recognition subsystem 322 may include a trained neural network (hereinafter referred to as a trained gesture classification network) configured to perform gesture classification. The trained gesture classification network is trained using known machine learning algorithms to learn the parameters (e.g., weights) of the neural network. The trained gesture classification receives a bounding box for a detected hand gesture and predicts a particular gesture class from a predefined set of gesture classes that correspond to the bounding box.

[0142] Typically, the accuracy of gesture classification achieved by a trained neural network configured to perform gesture classification degrades as the hand image is cropped (e.g., when the bounding box has a large offset from the ground truth). An example of bounding box adjustment is described in U.S. Patent Application No. 16 / 355,665, filed March 15, 2019, entitled "ADAPTIVE IMAGE CROPPING FOR FACE RECOGNITION," which is incorporated by reference in its entirety. A similar approach for bounding box adjustment that helps improve gesture recognition is described herein.

[0143] 14 is a block diagram illustrating an example implementation of a gesture classification network that may be used in the gesture recognition subsystem 322. The gesture classification network 1400 may be implemented with a side branch to a bounding box refinement network 1450. The gesture classification network 1400 performs gesture classification on hand images defined by bounding boxes in input frames, and the bounding box refinement network 1450 performs refinement of the bounding boxes used by the gesture classification network 1400.

[0144] An input frame is received as input data to the gesture classification network 1400. The input data may be a cropped version of the input frame (e.g., based on a defined bounding box for the hand). In some embodiments, the input data may be a batch of images, such as for batch-based training of the network 1400, 1450, or to allow gesture classification based on a sequence of frames. The gesture classification network 1400 includes a series of convolution blocks 1402 (implemented, for example, using a ResNet design). For simplicity, three such convolution blocks 1402 are shown, but there may be more or fewer convolution blocks 1402 in the gesture classification network 1400. The series of convolution blocks 1402 output to a gesture classification fully connected network (FCN) 1404, which outputs a determined gesture class. The gesture classification FCN 1404 receives as input a vector output from the last convolution block 1402 in the series of convolution blocks 1402. The gesture classifier FCN 1404 uses feature embedding to determine a gesture class for the hand defined by the bounding box and outputs the determined gesture class as a label. In some examples, the gesture classifier FCN 1404 outputs a vector including a probability distribution for the possible gesture classes. That is, the output of the gesture classifier network 1400 may be probabilities for different gesture classes instead of one final determined gesture class. In some examples, the gesture classifier FCN 1404 includes a softmax function in the final output layer, which serves to normalize the output probability distribution for the possible gesture classes.

[0145] Each convolution block 1402 also outputs to a side branch 1452 that belongs to a bounding box refinement network 1450. Each side branch 1452 outputs to a bounding box refinement FCN 1454. Each side branch 1452 may independently include an optional max pooling layer, an optional resizing layer, and a convolution block. The outputs of the side branches 1452 are concatenated into a combined output vector, which may be flattened by a 1×1 convolution block (not shown) before being input to the bounding box refinement FCN 1454. The output of the bounding box refinement FCN 1454 is information (e.g., in the form of coordinate information for the bounding box) that adjusts or refines the size and position of a bounding box that defines the hand in the input frame.

[0146] Training of the collaborative networks 1400, 1450 is discussed below. As mentioned above, the gesture classification FCN 1404 may include a softmax layer. The gesture classification FCN 1404 may further calculate and output a cross-entropy loss, which may be thought of as a measure of the difference between the output probability distribution and the original probability distribution in the model. This cross-entropy loss may be used as a loss function for the softmax layer and may therefore also be referred to as a softmax loss. Similarly, a bounding box loss may be output from the bounding box refinement FCN 1454. The softmax loss and the bounding box loss may be combined for a total loss function that may be used for training 1456 of the collaborative networks 1400, 1450. The training 1456 using the softmax loss, bounding box loss and total loss function may only be used during training of the networks 1400, 1450 and may not be required during inference.

[0147] During training of the network 1400, 1450, training data samples may be generated with randomly cropped hand images based on the perimeter of a ground truth hand bounding box.

[0148] Some examples are shown in Figure 15, where a ground truth 1502 defines an optimized bounding box for a hand image, and other randomly cropped hand images are generated as training data samples 1504. Note that the training data samples 1504 may not only shift the position of the bounding box, but may also change the size of the bounding box (so that the hand image within the bounding box may appear larger or smaller). The offset of the bounding box of each training data sample 1504 relative to the ground truth 1502 is used as a label to train the bounding box refinement.

[0149] The collaborative networks 1400, 1450 are trained by minimizing an overall loss function, which in this example is a linear combination of a classification loss function (softmax loss) and a bounding box loss function. We next discuss an example of the bounding box loss function.

[0150] Consider the simplified example of Figure 16, which illustrates a ground truth bounding box 1602 defined around an object, and a cropped training data sample bounding box 1604. {(x1,y1),(x1,y2),(x2,y1),(x2,y2)} are coordinates that define the location (in this example, the four corners) of the training data sample bounding box 1604,

number

number

[0151] We can define the bounding box loss function as follows:

number

[0152] where λ is a regularization parameter.

[0153] During inference, the bounding boxes defining the hand images in the input frames can be iteratively corrected until the offset predicted by the bounding box refinement network 1450 is close to zero. A final gesture classification score can be calculated by combining all the individual gesture classification scores obtained at each iteration as follows:

number

[0154] Here, s m is the classification score (e.g., softmax output) of the mth iteration, (outside 5) TIFF0007626523000015.tif1219 is the corresponding weights (e.g., IoU (intersection over union)) of the mth bounding box and the final refinement bounding box.

[0155] During inference, iterative classification is applied to input hand images (defined by bounding boxes applied to the input images) using the gesture classification network 1400. At each iteration, an input image to the gesture classification network 1400 is obtained based on the previous input image corrected by the output bounding box refinement parameters of the previous iteration.

[0156] Thus, the bounding box refinement network 1450 and the gesture classification network 1400 work together to provide feedback to refine the bounding boxes that define the hand images in the input frames to help improve the performance of the gesture classification network 1400.

[0157] 17 is a flow chart illustrating an example method 1700 using bounding box refinement (e.g., using the collaborative networks 1400, 1450 described above) to perform gesture recognition. The method 1700 may be used as part of step 1118 described above. For example, the method 1700 may be implemented by the gesture recognition subsystem 322. It should be understood that the method 1100 may be implemented using other techniques for step 1118, and that bounding box refinement may or may not be used.

[0158] At 1702, an input frame and bounding boxes defining detected hands (eg, output by the hand detection and tracking subsystem 316) are received.

[0159] At 1704, a gesture classification network with a collaborative bounding box refinement network (described above) can be used to perform gesture classification using bounding box refinement.

[0160] Optionally, gesture analysis may be performed across multiple input frames at 1706. For example, the gesture recognition subsystem 322 may store a buffer of previous input frames and perform gesture analysis by considering the previous input frames.

[0161] A buffer (e.g., implemented within the adaptive gesture sensing system 300) may be used to store a predetermined number of previous input frames. The number of previous input frames stored in the buffer may be relatively small (e.g., 10-30 previous input frames) for more efficient use of memory resources. In some examples, the buffer may additionally or alternatively store results of gesture analysis performed on a smaller number of previous input frames.

[0162] For a single static gesture to be recognized, the gesture recognition subsystem 322 may require that the same gesture class be detected a predetermined minimum number of times (K) over a predetermined number of previous input frames (N), where K≧1 and K≦N. This requirement may help improve detection accuracy and reduce false positives. In some examples, the same gesture class may need to be detected over K consecutive input frames over the N previous input frames. The predetermined minimum number K may be selected to be a relatively small number (e.g., 10) to enable better detection and still achieve near real-time gesture recognition. Static gestures that may be detected using this approach may include, for example, a mute gesture (e.g., a mute or unmute command) or an open hand gesture (e.g., a play or pause command). The N previous input frames may be stored in a buffer and used as a sliding window for detecting gestures to help reduce false positives.

[0163] A dynamic gesture may be recognized by the gesture recognition subsystem 322 based on a combination of two or more static gestures. For example, a complete dynamic gesture may be separated into different states, where the transitions between the states are the result of the detection of the static gestures. The gesture recognition subsystem 322 may implement a set of predefined state transition rules for state-based recognition of a dynamic gesture.

[0164] 18 is a state diagram illustrating an example of state-based recognition of dynamic gestures that may be implemented by the gesture recognition subsystem 322. A neutral state 1802 may be the initial state by default when a gesture input is first activated or when no current valid gesture is detected.

[0165] A swipe dynamic gesture may be detected when a clenched fist gesture is first detected, transitioning to a swipe ready state 1804, followed by detection of an open hand gesture, transitioning to a swipe state 1806. Upon reaching the swipe state 1806, the gesture recognition subsystem 322 recognizes the gesture input as a dynamic swipe gesture. Thus, recognition of a static clenched fist gesture followed by a static open hand gesture (in the appropriate sequence) results in recognition of a dynamic swipe gesture. Furthermore, a change in position between the detected clenched fist gesture and the detected open hand gesture may be required to positively detect a dynamic swipe gesture (e.g., to distinguish a swipe gesture from another dynamic gesture without a change in position). The change in position of the detected gesture may be calculated based on the change in the coordinates of the hand bounding box. Upon reaching the swipe state 1806, the gesture recognition subsystem 322 may generate an output indicative of the recognized gesture (e.g., a gesture class label) and may further provide an output indicative of the change in position between the detection of the swipe-ready state 1804 and the swipe state 1806.

[0166] A vertical or horizontal dynamic drag gesture may be detected as a combination of pinch open, pinch closed, and pinch open static gestures. For example, from the neutral state 1802, a transition occurs to a pinch prep state 1808 after detection of a pinch open static gesture. From the pinch prep state 1808, detection of a pinch closed static gesture causes a transition to a pinch activated state 1810. From the pinch activated state 1810, upon remaining in a pinch closed static gesture, a change in vertical position (e.g., a change above a predefined threshold) causes a transition to a vertical drag state 1812. Similarly, from the pinch activated state 1810, upon remaining in a pinch closed static gesture, a change in horizontal position (e.g., a change above a predefined threshold) causes a transition to a horizontal drag state 1814. If the change in position is a combination of vertical and horizontal changes (e.g., a diagonal change in position), the larger magnitude change may be used to determine the state transition. Alternatively, if the change in position is a combination of vertical and horizontal change, the state transition may not be recognized. Upon reaching the vertical drag state 1812 or the horizontal drag state 1814, the gesture recognition subsystem 322 may generate an output indicative of the recognized gesture (e.g., a gesture class label) and may further provide an output indicative of the vertical or horizontal position change. For example, the gesture recognition subsystem 322 may calculate a distance (e.g., based on coordinates defined in the input frame) and output this value. The distance value may be used to map the dynamic drag gesture to a drag command input. From the vertical drag state 1812 or the horizontal drag state 1814, detection of a pinch open static gesture causes a transition to the pinch ready state 1808. Returning to the pinch ready state 1808 may be recognized as an end of the dynamic drag gesture.

[0167] For dynamic gestures involving position changes, the gesture recognition subsystem 322 may implement predefined rules based on laws of physics and / or expected human movement to further eliminate possible false positives. For example, the predefined rule may be that a detected hand should not exhibit a position change greater than a predefined threshold (e.g., a change of more than 100 pixels) between successive input frames.

[0168] The use of state-based gesture recognition may be advantageous over motion-based gesture segmentation and recognition. For example, significantly more processing resources may be required to detect and process gesture motions compared to detecting static gestures. Furthermore, state-based gesture recognition may be less prone to false positives.

[0169] In some examples, the present disclosure describes a method for hand detection in an input frame within a sequence of frames captured by the camera 102, including performing image adjustment to help improve image quality. In general, performance of gesture recognition tends to degrade in low light scenarios. For example, if the gesture control device 100 is a smart TV being viewed in a dark room, the screen of the smart TV may be the only significant source of illumination when the sequence of frames is captured by the camera 102 of the gesture control device 100. In the present invention, we propose three methods to solve this problem. Several exemplary techniques for image adjustment are described below, each of which may be implemented by, for example, the hand detection and tracking subsystem 316, and may be used in combination.

[0170] 19 is a flow chart illustrating an example method 1900 for performing hand detection and tracking, including performing image alignment on a sequence of frames captured by camera 102. Method 1900 may be used as part of step 1116 described above. For example, method 1900 may be implemented by hand detection and tracking subsystem 316. 1900may be implemented using other techniques for step 1116, and may or may not use image adjustments as described below.

[0171] The method 1900 begins after a virtual gesture space has been defined (eg, by the virtual gesture space generation subsystem 314 in step 1114).

[0172] At 1902, it is determined whether a hand has already been detected in a previous input frame in the sequence of frames captured by the camera 102. If a hand has already been detected, the method 1900 may proceed to step 1908. For example, if a hand has already been successfully detected in a previous input frame, a bounding box generated from the successful detection of the hand in the previous input frame may be used as a starting point for tracking the hand in a current input frame in the sequence of frames (e.g., based on an assumption that the time between successive frames is short enough that the hand is still at least partially within the previous bounding box). Furthermore, if a hand has been successfully detected in a previous input frame in the sequence of frames, the lighting in the environment may be deemed sufficient (e.g., based on an assumption that the light level in the environment does not change significantly in a short time between successive frames) and no image adjustment is required.

[0173] If a hand has not yet been detected in a previous input frame in the sequence of frames captured by the camera 102 , the method 1900 proceeds to step 1904 .

[0174] Optionally, at 1904, image adjustments are performed. In some examples, image adjustments may be performed only if it is determined that image adjustments are necessary. For example, a light sensor of the gesture control device 100 may be used to detect ambient light levels and determine whether the light levels are low enough to require image adjustments. In some examples, an analysis of at least a portion of the input image (e.g., over the entire input image, over only the virtual gesture space, or over only the bounding box of the hand) may be performed to determine whether image adjustments are required (e.g., to determine overall pixel intensity levels).

[0175] In some examples, image adjustments may be performed by default without first determining whether an image adjustment is needed. In such cases, performing an image adjustment (e.g., gamma correction) may result in little or no change to an image if the image is already well illuminated.

[0176] Various techniques for image adjustment may be used, particularly to correct for low-light conditions.

[0177] In some examples, image adjustment may include adjusting the lighting of the image using a face detected in a previous frame in the sequence of frames as a reference (where a human face is a distinct anatomical feature). Assuming a face is detected in the previous frame (e.g., using the face detection and tracking subsystem 312), the detected face may be used as a reference to perform lighting adjustments in the input frame.

[0178] (outside 6) TIFF0007626523000016.tif1326 and (outer 7) TIFF0007626523000017.tif1326 shall show predetermined (e.g., empirically determined via calibration or pre-coded) mean values ​​and standard deviations of pixel intensities for face images captured under low light and good lighting conditions, respectively.

[0179] FIG. 20 is a graph showing a representative histogram 2002 of pixel intensity values ​​when an image containing a face is captured in low light and a representative histogram 2004 of pixel intensity values ​​when an image containing a face is captured in favorable lighting conditions.

[0180] The mapping from low light pixels to good illumination pixels can be calculated using the following equation:

number

[0181] Using this equation, we find all pixels x in the virtual gesture space defined in the input frame. i By using the above mapping formula for better hand detection, the adjusted pixel y i While the above discussion discusses lighting adjustments to correct for low light conditions, it should be understood that similar lighting adjustments may be used to correct for over-light conditions.

[0182] In some examples, the image adjustment may include performing gamma correction (which may be considered a form of illumination correction). Various gamma correction techniques may be used. For example, i Let be the pixel value of a single channel of the input frame. Then, the gamma transformation can be calculated as follows:

[0183]

number

[0184] where y iis the adjusted pixel value, and γ is the standard parameter of the gamma transformation.

[0185] In some examples, the image adjustment may include modifying the display of the gesture control device 100. This approach may be useful in situations where the screen of the gesture control device 100 is the source of illumination in the environment (e.g., the gesture control device 100 is a television, a smartphone, or a tablet). In such an approach, the low light condition may first be detected using any suitable technique. For example, the low light condition may be detected using a light sensor that may be part of the gesture control device 100. The low light condition may also be detected by analyzing pixel intensities of the input frames, and a low light condition may be determined if a majority of the pixels are below a predetermined intensity threshold.

[0186] After a low light condition is detected, the display content and / or brightness of the screen of the gesture control device 100 may be controlled so that the screen becomes a stronger light source to capture a better quality image. An output from the adaptive gesture sensing system 300 may be communicated to indicate that the input frame was analyzed to have insufficient illumination, and the processing device 202 may control the display 104 to change the display content and / or brightness of the screen accordingly. In some examples, if the detection of the low light condition is not based on image analysis (e.g., using a light sensor of the gesture control device 100), the processing device 202 may control the display 104 accordingly without any information from the adaptive gesture sensing system 300.

[0187] In some examples, controlling the displayed content and / or brightness in this manner may be performed after a low light condition is detected and after a gesture input is initiated (e.g., the user 10 manually provides an input to activate a gesture-based command input or a recognized hand gesture is first detected). In some examples, the screen of the gesture control device 100 may be controlled to change the screen background lighting to be brighter. In some examples, the screen of the gesture control device 100 may be controlled to add a lighting section to the displayed content. The lighting section may be a brighter section of the display (e.g., an all-white section).

[0188] For example, FIG. 21A shows a normal image 2102 that may be displayed under normal lighting conditions or when no gesture input is initiated on the display 104 of a gesture control device such as a television or smartphone. After a low light condition is detected and a gesture input is initiated, the displayed content may be adjusted to that of FIG. 21B. In FIG. 21B, the image 2102 is reduced in size and an illumination section 2104 is added. In this example, the illumination section 2104 is a border along all four sides of the display. In other sections, the illumination section 2104 may be along only one side, two sides, or three sides, or may include discontinuous sections along one or more sides of the display. The brightness, hue, and / or size (e.g., thickness and length) of the illumination section 2104 may be automatically adjusted based on the detected low light condition. For example, there may be different low illumination levels at a predefined threshold (e.g., based on detected pixel intensity or based on output from a light sensor), and different parameters for the illumination section 2104 may be predefined at different low illumination levels. In general, lower lighting levels may require larger and / or brighter lighting sections 2104.

[0189] Returning to Figure 19, at 1906, hand detection is performed within the virtual gesture space (e.g., using the hand detection and tracking subsystem 316). The hand detection and tracking subsystem 316, as described above, 2102 A successful hand detection by the hand detection and tracking subsystem 316 using the trained neural network may output a bounding box defined for the detected hand in the virtual gesture space.

[0190] At 1908, hand tracking is performed using the hand detection and tracking subsystem 316 based on the bounding boxes defined for the detected hands. The bounding boxes may be updated based on the tracking.

[0191] Information from the hand detection and tracking (e.g., bounding boxes defined for the hands) can then be provided for gesture recognition (e.g., by the gesture recognition subsystem 322).

[0192] In various examples, the present disclosure describes systems and methods to help improve the accuracy and efficiency for detecting and recognizing gesture inputs, which may be useful for detecting and recognizing gesture inputs in complex environments and / or for long-distance detection of gestures.

[0193] Using one or more of the above-mentioned methods (e.g., adaptive ROI techniques, bounding box refinement collaborative networks, virtual gesture space, image alignment, state-based gesture recognition) may enable more robust detection and recognition of gesture inputs even in complex real-life scenarios. Improved accuracy of gesture detection may enable more efficient processing of captured input frames. In some examples, input frames may be processed less frequently than the rate of image capture. For example, instead of processing all input frames, all N (N>1) frames are processed for face (or other distinguishing anatomical features) and hand detection and tracking. N may be a user-selected parameter, may be pre-programmed, or may be automatically selected by the gesture control device 100 (e.g., N may be 1 when images are captured at a rate below a predetermined threshold; N may be 2 or more when images are captured above a predetermined threshold; N may be 1 when image quality is poor or low resolution; N may be 1 when image resolution is high). By processing all N (N>1) frames, gesture detection and recognition can still be performed in near real-time with good accuracy, reducing the processing resources required from the gesture control device.

[0194] This disclosure describes an example implementation of using neural networks for face and hand detection. An example joint neural network is described that enables refinement of hand bounding boxes to help improve the accuracy of gesture classification and recognition.

[0195] In some examples, a virtual gesture space is described, which may be defined based on a detected human face (or other distinguishing anatomical features). By using the defined virtual gesture space for hand detection, more accurate and / or efficient detection of hand gestures may be achieved. In some examples, the virtual gesture space may be further defined with subspaces where gesture inputs into a particular subspace may be mapped to mouse inputs. Thus, the virtual gesture space may be used as a virtual mouse.

[0196] Although the embodiments have been described in the context of a gesture-controlled device having a display and a camera (such as a smart TV, smartphone, or tablet), the present disclosure may relate to other gesture-controlled devices that may or may not include a display and / or a camera. For example, the present disclosure may relate to smart speakers, smart appliances, Internet of Things (IoT) devices, dashboard devices (e.g., installed in vehicles), or devices with low computational resources.

[0197] The examples described herein may be applicable to artificial reality (AR), virtual reality (VR) and / or video game applications.

[0198] Although this disclosure describes methods and processes having a particular order of steps, one or more steps of the methods and processes may be omitted or modified, if desired. One or more steps may be performed in an order other than the order in which they are described, if desired.

[0199] Although the present disclosure is described, at least in part, in terms of a method, those skilled in the art will understand that the present disclosure is directed to various components for performing at least some of the aspects and features of the described method, which may be a method by hardware components, software, or any combination of the two. Thus, the technical solutions of the present disclosure may be embodied in the form of a software product. A suitable software product may be stored in a pre-recorded storage device or other similar non-volatile or non-transitory computer-readable medium, including, for example, a DVD, a CD-ROM, a USB flash disk, a removable hard disk, or other storage media. The software product includes instructions tangibly stored thereon that enable a processing device (e.g., a personal computer, a server, or a network device) to perform the method examples disclosed herein.

[0200] The present disclosure may be embodied in other specific forms without departing from the subject matter of the claims. The described exemplary embodiments should be considered in all respects as merely illustrative and not restrictive. Selected features from one or more of the above-described embodiments may be combined to create alternative embodiments not expressly described, and features suitable for such combinations are understood to be within the scope of the present disclosure.

[0201] All values ​​and subranges within the disclosed ranges are also disclosed. Also, while the systems, devices, and processes disclosed and illustrated herein may include a particular number of elements / components, the systems, devices, and assemblies may be modified to include additional or fewer elements / components. For example, while any of the disclosed elements / components may be referred to as being in the singular, the embodiments disclosed herein may be modified to include a plurality of such elements / components. The subject matter described herein is intended to cover and encompass all appropriate modifications in technology.

Claims

1. 1. A method for processing gesture input, the method being performed by a gesture control device, comprising: determining a virtual gesture space defined within the received input frames, the virtual gesture space being smaller than a field of view within the received input frames, the virtual gesture space being associated with a primary user from a ranked user list of one or more users; processing the received input frames solely within the virtual gesture space to detect and track hands; performing gesture classification using a hand bounding box generated by detecting and tracking the hand to determine a gesture input associated with the hand; outputting the determined gesture input to cause processing of a command input associated with the determined gesture input; Including, The performing of the gesture classification includes: identifying a gesture class associated with the hand detected in the received input frames; determining a state transition from a previous gesture-state associated with a previous input frame to a current gesture-state, the state transition being determined based on the identified gesture class; determining the gesture input based on a predefined rule set associated with the determined state transition; A method comprising:

2. The step of determining a virtual gesture space includes: processing the input frames to detect the one or more users; generating the ranked user list based on the detected one or more users, wherein the primary user is identified as the highest ranked user in the ranked user list; generating the virtual gesture space based on detected anatomical features of the primary user; The method of claim 1 , comprising:

3. Processing the input frames includes: selecting a region of interest (ROI) for processing the input frame, the ROI defining an area that is smaller than an entire area of ​​the input frame; the ROI is selected from a defined ROI sequence, the ROI sequence defining a plurality of ROIs for processing a respective plurality of sequentially received input frames; The method of claim 2.

4. The step of determining a virtual gesture space includes: determining an invalid gesture input associated with the hand detected within the virtual gesture space associated with the primary user; selecting the next highest ranked user in the ranked user list as a new primary user; repeating the method using the new primary user; The method of any one of claims 1 to 3, comprising:

5. The step of processing the input frames only within the virtual gesture space comprises: determining a low light condition associated with the received input frame; automatically performing an image adjustment to automatically adjust pixel values ​​of the received input frames in response to the low light conditions; The method of any one of claims 1 to 4, comprising:

6. The input frames are processed to detect and track the hands using a trained joint neural network, the trained joint neural network including a trained gesture classification convolutional neural network having a side branch connection to a trained bounding box refinement convolutional neural network. The method of any one of claims 1 to 5, comprising:

7. the received input frames are received and processed at a frequency that is less than a frame capture frequency of an image capture device used to capture the received input frames; 7. The method according to any one of claims 1 to 6.

8. 1. An apparatus comprising: A processing device coupled to a memory storing machine-executable instructions that, when executed by the processing device, cause the apparatus to: determining a virtual gesture space defined within the received input frames, the virtual gesture space being smaller than a field of view within the received input frames, the virtual gesture space being associated with a primary user from a ranked user list of one or more users; processing the received input frames solely within the virtual gesture space to detect and track hands; performing gesture classification using a hand bounding box generated by detecting and tracking the hand to determine a gesture input associated with the hand; carrying out a method comprising: the determined gesture input triggers processing of a command input associated with the determined gesture input; The instructions further include: identifying a gesture class associated with the hand detected in the received input frames; determining a state transition from a previous gesture-state associated with a previous input frame to a current gesture-state, the state transition being determined based on the identified gesture class; determining the gesture input based on a predefined rule set associated with the determined state transition; performing the gesture classification by Device.

9. The instructions further include: processing the input frames to detect the one or more users; generating the ranked user list based on the detected one or more users, wherein the primary user is identified as the highest ranked user in the ranked user list; generating the virtual gesture space based on detected anatomical features of the primary user; determining the virtual gesture space by 9. The apparatus of claim 8.

10. The instructions further include: selecting a region of interest (ROI) for processing the input frames; wherein the ROI defines an area that is smaller than the entire area of ​​the input frame; the ROI is selected from a defined ROI sequence, the ROI sequence defining a plurality of ROIs for processing a respective plurality of sequentially received input frames; 10. The apparatus of claim 9.

11. The instructions further include: determining an invalid gesture input associated with the hand detected within the virtual gesture space associated with the primary user; selecting the next highest ranked user in the ranked user list as a new primary user; repeating the method using the new primary user; and determining the virtual gesture space by 11. Apparatus according to any one of claims 8 to 10.

12. The instructions further include: determining a low light condition associated with the received input frame; automatically performing an image adjustment to automatically adjust pixel values ​​of the received input frames in response to the low light conditions; causing the input frames to be processed solely within the virtual gesture space by 12. Apparatus according to any one of claims 8 to 11.

13. The input frames are processed to detect and track the hands using a trained joint neural network, the trained joint neural network including a trained gesture classification convolutional neural network having a side branch connection to a trained bounding box refinement convolutional neural network.

13. Apparatus according to any one of claims 8 to 12.

14. the received input frames are received and processed at a frequency that is less than a frame capture frequency of an image capture device used to capture the received input frames; 14. Apparatus according to any one of claims 8 to 13.

15. The apparatus is a gesture control device.

15. Apparatus according to any one of claims 8 to 14.

16. a camera for capturing the input frames; 16. The apparatus of claim 15.

17. The gesture control device comprises: tv set, Smartphone, tablet, Vehicle Coupling Device Internet of Things devices, An artificial reality device, or Virtual reality devices, 17. The device according to claim 15 or 16, wherein

18. A computer readable medium having machine executable instructions stored thereon, the instructions, when executed by a processing device of an apparatus, causing the apparatus to perform the method of any one of claims 1 to 7.

Citation Information

Patent Citations

  • Imaging device and program for imaging device

    JP2011078009A

  • Hand recognition device

    JP2011086052A

  • Gesture recognition device, control method thereof, display equipment, and control program

    JP2014048937A

  • Input device and image display device

    JP2014215634A

  • Multi-user interactive display system

    US20130201104A1