Patent Description:
Human pose estimation from video plays a critical role in various applications such as quantifying physical exercises, sign language recognition, and full-body gesture control. For example, it can form the basis for fitness applications.

Human Pose Estimation (HPE) is a way of identifying and classifying the joints in the human body. Essentially, it is a way to capture a set of coordinates for each joint (arm, head, torso, etc.,) which is known as a key point that can describe a pose of a person. The connection between these points is known as a pair. The connection formed between the points has to be significant, which means not all points can form a pair. From the outset, the aim of HPE is to form a skeleton-like representation of a human body and then process it further for task-specific applications. Human pose estimation is usually performed based on swallow machine learning algorithms or deep-learning.

Even though plenty of HPE algorithms are state-of-the-art, there is no solution available for generating and displaying a digital twin of a user in augmented, virtual, and mixed reality, wherein the digital twin mimics the poses of the user in real-time.

The underlying problem of the present invention can therefore be regarded as how to create a system and method for generating an identical digital twin of a user, wherein the digital twin mimics the body movements of the user in real time.

In accordance with the invention, said problem is solved by a system and method according to an apparatus as claimed in claim <NUM> and a method as claimed in claim <NUM>.

Document <NPL>, discloses a method for estimating human pose and shape without markers.

Document <NPL>, discloses a method for estimating the position and rotation of skeletal joints, using single-frame RGB images.

Document <NPL>, discloses a framework that recovers human mesh from a single image.

Document<NPL>, discloses a method for shape and pose estimation from a group of multiple images of a human subject.

Document <NPL> discloses a system that performs 3D human sensing for fitness training.

Document <NPL>, discloses a skinned multi-person linear model of human shape to recover the 3D human pose from 2D images using pose estimation and human mesh recovery approaches.

Document <NPL> discloses a system based on 3D pose estimation using a residual neural network with input from a RGB camera, which captures the motion of a trainer.

Document <NPL> discloses a method for capturing user body pose in virtual reality experiences.

Document <CIT> discloses methods and systems for multi-player training of body-eye coordination using mobile computing devices each having a camera.

Document <CIT> discloses a device for imaging a body.

Document <NPL>discloses a 3D pose and shape estimation of multiple people in monocular images.

A summary of various aspects of the present disclosure is hereinafter presented to provide a basic understanding of these aspects and their associated advantages. Further aspects and technical details are covered in the subsequent chapter entitled "detailed description".

The present disclosure is directed to provide a system for processing, transferring and accurately displaying human pose and movement data within augmented, virtual, and mixed reality using head-mounted displays in real-time. The dependent claims define embodiments of the invention.

According to one aspect a system for monitoring a body pose of a user comprises: a data processing module, which is configured to perform in real-time or quasi real-time the steps of: receiving 2D (i.e. two dimensional) image data of the user performing the body pose, optionally detecting the body of the user on the 2D image data, extracting 2D key point coordinates of the detected body from the 2D image data using machine learning algorithms, estimating 3D (i.e. three dimensional) key point coordinates from the extracted 2D key point coordinates using machine learning algorithms, transforming the estimated 3D key point coordinates into a rotation-based representation, and outputting the rotation-based representation.

This system desirably generates and outputs the rotation-based representation of the user in real-time. The rotation-based rendering contains the rotation information of the joints in compact form and enables the transmission of the information in real time. The information necessary to render the avatar representation on a rendering machine like a displaying module is contained in a single file comprising the rotation-based representation. Moreover, said information is advantageously already in a form which corresponds to an anatomically realistic skeleton form. Therefore, rendering a digital twin (i.e. reconstructing a virtual avatar) requires less computational resources (i.e. computing power), and is thus possible on a displaying module which is an end user device (e.g. s smartphone). Anyway, in spite of such limited computational resources, the whole procedure (i.e. from receiving the 2D image data until displaying a virtual avatar) may be performed in real-time or quasi real-time. The term "quasi real-time" processing may be understood as a processing operation which comprises a very short delay, e.g. a few milli seconds due to data transmission, which however is not perceivable for a user. Anyway, also the term "real-time" processing may be understood covering such very short delays.

According to another aspect, the 2D image data may be provided by a camera that takes 2D images of the user.

This has the advantage that the system can also be run on any computing device with an HD webcam as long as the system requirements are met.

According to another aspect the estimated 3D key point coordinates may form a first set of 3D key point coordinates. The data processing module may be further configured to perform the step of transposing the first set of 3D key point coordinates into a second set of 3D key point coordinates. Accordingly, in the step of transforming the second set of estimated 3D key point coordinates may be transformed into the rotation-based representation of the user.

The first set of estimated 3D key point coordinates may represent motion capture (mocap) key points. The second set of 3D key point coordinates may represent more anatomical key points, i.e. anatomically more realistic (or more suitable) representation of the user. Hence, the step of transposing has the advantage that also the outputted rotation-based representation of the user becomes closer to the real anatomy of the user. As a consequence, reconstructing a realistic virtual avatar (i.e. a virtual twin) of the user becomes computationally less expensive, in particular on the side of the displaying module (i.e. an end user device, as e.g. a smartphone, tablet, AR glasses, or other mobile device). The real-time (or quasi real-time) requirement can thus be fulfilled.

The term "transposing" may be understood as transferring the points of the first set to the context of the second set (i.e. a more anatomical representation of the user).

According to another aspect, the data processing module may be further configured to send the rotation-based representation over a network to a displaying module using a real-time or quasi real-time capable data transfer protocol.

This ensures that the rotation-based representation can be further processed in real-time or quasi real-time.

According to another aspect, the displaying module may be configured to perform in real-time or quasi real-time the steps of: receiving the rotation-based representation sent by the data processing module, reconstructing a virtual avatar representation of the user performing the body pose of the user based on the rotation-based representation received, and displaying the virtual avatar representation of the user in a virtual environment of the user.

According to another aspect, the virtual avatar representation of the user may be a to scale virtual twin of the user.

This makes it easier for the user to put himself in the virtual avatar's place, so that he/she can, for example, follow the exercises in fitness applications in a more targeted manner.

According to another aspect, the displaying module can be an AR headset worn by the user, and wherein the virtual environment is generated in AR.

According to another aspect, the 2D key point coordinates can be joint locations of the body of the user.

According to another aspect, transforming of the estimated 3D key point coordinates into a rotation-based representation comprises: determining 3D joint rotations from the estimated 3D key point coordinates, and storing the 3D joint rotations as a list.

This transformation of the key point coordinates into a rotation-based representation unambiguously describes the pose of the user and allows the system to transfer the information in real-time or quasi real-time to the displaying module. The displaying module can reconstruct an avatar for displaying in a particularly fast and efficient manner from the information transformed and obtained in this manner.

According to another aspect, the displaying module may be further configured to perform the steps of: providing a user interface, receiving a selection of a target pose, which is selected by the user on the user interface, sending an identifier to the processing module, wherein the identifier identifies the selected target pose.

According to another aspect, the processing module is further configured to perform in real-time or quasi real-time the steps of: receiving the identifier, loading a rotation-based representation corresponding to the target pose identified by the identifier from a memory, comparing the target rotation-based representation corresponding to the target pose with the rotation-based representation of the user, generating feedback data from the comparison; sending the feedback data to the displaying module, wherein the displaying module displays the feedback data to the user.

According to another aspect, the displaying module may further perform the steps of: reconstructing a virtual avatar representation of an instructor performing the target pose based on the rotation-based representation corresponding to the target pose sent by the processing module, and displaying the virtual avatar representation of the instructor in the virtual environment of the user.

Displaying the instructor avatar next to the user's self-avatar gives the user an idea of how far or close the user is from mimicking the target pose.

According to another aspect, the displaying module may be further configured to perform the steps of: receiving the feedback data, wherein the feedback data comprises suggestions for modifications of the pose of the user and the rotation-based representation corresponding to the target pose, and displaying the feedback data to the user.

This provides the user with information on how to improve the body pose in a very targeted way.

According to another aspect, the comparison is based at least on one of: comparing joint locations of the target pose with joint locations of the body pose and generating a score from their distances; calculating global rotations of joints; calculating local rotations of joints of the target pose and the body pose and comparing their differences; and/or calculating bone vectors of the target pose and the body pose and comparing their differences.

According to another aspect a method for monitoring a body pose of a user in real-time or quasi real-time, comprises the steps of: receiving, by a data processing module, 2D image data of the user performing the body pose, detecting, by a data processing module, the body of the user on the 2D image data, extracting, by a data processing module, 2D key point coordinates of the detected body from the 2D image data using machine learning algorithms, estimating, by a data processing module, 3D key point coordinates from the extracted 2D key point coordinates using machine learning algorithms, transforming, by a data processing module, the estimated 3D key point coordinates into a rotation-based representation, outputting, by a data processing module, the rotation-based representation.

It is intended that combinations of the above-described elements and those within the specification may be made, except where otherwise contradictory.

It is to be understood that both the foregoing general description and the following detailed description are exemplary and explanatory only, are provided for illustration purposes and are not restrictive of the disclosure, as claimed.

The accompanying drawings, which are incorporated in and constitute a part of this specification, illustrate examples of the disclosure and together with the description, and serve to support and illustrate the principles thereof.

The foregoing summary and the following detailed description of preferred embodiments will be more readily understood if read in conjunction with the accompanying drawing. To illustrate the invention, the drawing shows exemplary details of the embodiments described. The information shown in the drawing is exemplary and explanatory only and does not limit the claimed invention.

The present invention is described in detail below with reference to the accompanying drawing:.

Reference will now be made in detail to examples of the disclosure, examples of which are illustrated in the accompanying drawings.

The present invention relates to a system and method for processing human pose estimation data into accurate avatar representation and animation file format. The invention processes, transfers and accurately displays human pose and movement data in a virtual environment of the user. The virtual twin of the user is displayed in accurate size and mimics the body motion of the user in real-time.

The purpose of the system is to demonstrate full body poses using a virtual human avatar (from here on the instructor) that is displayed in real life size using augmented reality (AR) glasses in conjunction with a single camera motion capture approach that tracks the user's posture in real time and provides feedback through rendering a mirror image (from here on self-avatar) of the user, also in real life size through the AR glasses.

A pose describes the body's position at one moment in time with a set of skeletal landmark points. The landmarks correspond to different body parts such as the shoulders and hips. The relative positions of landmarks can be used to distinguish one pose from another. By pose the configuration of human bones in order to reconstruct a 3D skeleton representing the 3D posture of the detected human is meant.

The fundamental process is as follows: A target pose is selected, and the AR glasses render instructor in the pose over the existing surrounding of the user. The user can study the target pose and, if space permits, walk around the instructor to investigate the pose. When the user returns to its original position, a self-avatar will be rendered which displays the users' movements in real time like a mirror image. As the user moves and adjusts its posture, so does the self-avatar. The purpose of the self-avatar is to give the user an idea of how close or far he is from mimicking the instructor. Using the instructor and the self-avatar, the task for the user is now to approximate the instructors pose through changes to his body posture as closely as possible. In the background, a continuous loop will evaluate and compare the posture of the user, in particular the skeleton of the extracted self-avatar, to the instructor. This loop will also feed all the information that is required for rendering the self-avatar to the AR glasses through creating a file with all necessary information. If the chosen metric of success is reached at any point in time or for a specified length of time, the pose will be counted as executed successful and feedback will be provided through a pop-up in the AR environment of the user's field of view. Additional feedback could be rendered.

Options to compare the posture of the user and the instructor include (a) comparing the absolute distances between joint centers and deriving a proximity score from them, (b) comparing the local rotations of joints, so the relationship between one bone and the next between the two skeletons to evaluate how individual bones are angled differently between the instructor and the user, and (c) comparing the global rotations which define the total orientation relative to the global coordinate system.

<FIG> is an example block chart of a method <NUM> for generating an avatar representation of the user and comparing the body pose of the user and self-avatar to a target or desired posture.

The method starts when both the AR headset, the displaying module, and the standalone device, the processing device, are turned on with the apps running and are connected to the same local wifi, then the AR headset will launch a loading screen <NUM> and main menu <NUM>, while the standalone system launches the camera feed and binds to the set wifi socket <NUM>. The standalone system then applies <NUM> the pose estimation algorithm to the camera feed and stores <NUM> the subsequent data of the joints in a string which is then sent <NUM> via User Datagram Protocol (UDP) to the headset, this is done multiple times per second. The headset application is constantly checking <NUM> the input socket for the data string, which then applies and displays <NUM> to the user experience followed by sending <NUM> a data string back to the standalone device (UDP) of the desired pose position. The standalone system then checks <NUM> the pose of the person is the same as the desired pose through comparing their joint rotations and generates feedback from this data. All of this can be seen in <FIG>. The comparison and feedback generation is performed based on (a) comparing joint locations in 3D space and generating a score from their distances, (b) calculating global rotations of joints, and/or (c) calculating local rotations of joints and comparing their differences.

Preferably a method for monitoring a body pose of a user in real-time or quasi-real time performs the following steps:.

Receiving, by a data processing module, 2D image data of the user performing the body pose, wherein the 2D image data is generated for example by a HD webcam.

Detecting, by a data processing module, the body of the user on the 2D image data.

Extracting, by the data processing module, 2D key point coordinates of the detected body from the 2D image data using machine learning algorithm(s). For example, the machine learning algorithm(s) may comprise a Neural Network , in particular a Convolutional Neural Network (CNN). The machine learning algorithm may be trained to identify the key points or features in the 2D space of the image. The key points are for example joint locations and/or facial features like mouth, ears, and eyes.

Estimating, by the data processing module, corresponding 3D key point coordinates from the extracted 2D key point coordinates of the image using machine learning algorithms or any other state-of-the-art algorithm. For example, the 3D key points or 3D coordinates corresponding to the identified 2D key points may be obtained by statistically fitting a (predefined) synthetic human shape model to the 2D key points. The 3D key point coordinates may form a skeleton of the user. The 3D key point coordinates may also be extracted by using a single machine learning algorithm for example based on a neural network like a CNN.

Transforming, by a data processing module, the estimated 3D key point coordinates into a rotation-based representation. This involves calculating rotations from the extracted 3D coordinates. Given any three <NUM>-D points X, Y, Z which are connected by vectors XY and YZ, a rotation matrix R can be calculated which when applied to XY rotates the vector to the same orientation as YZ.

R may be calculated as follows: <MAT> <MAT> <MAT> <MAT> <MAT> <MAT> <MAT>.

From the rotation matrix R other rotation-based formats like quaternions or Euler rotations ca be derived easily. As such, the described process can be used to extract rotations from any set of three <NUM>-D coordinate points. A caveat to note is that the described equation for R works unless a = - b since this would result in a division by zero. In the practical application of this system, this edge case can never be encountered as it would mean that one bone is inversely pointing into the previous one (which should naturally be regarded as an anatomical impossibility).

Outputting, by a data processing module, the rotation-based representation. The output from the data processing module is the rotation-based skeleton, which reflects the posture of the user in real time. In essence, this is a list of rotations for each joint and coordinates of each key point, which unambiguously describes the body pose of the user and can be used to reconstruct an avatar to take the same pose. The specific format in which those are transferred can be in either a raw data string or a more structured file format like FBX or glTF.

The list of rotation-based representation may contain one entry for each joint in the target skeleton of the human. This rotation may for example describe the change required relative to the previous bone to accurately mimic the pose of the tracked avatar. As such, the rotations and bone lengths alone can be used to accurately reconstruct the entire pose of the skeleton.

The method may further comprise the step of sending, by the data processing module, the rotation-based representation of the user over a network to a displaying module using a real-time or quasi real-time capable data transfer protocol. Such a protocol is for example UDP, which has a comparative speed relative to TCP/IP. However, other protocols would be suitable as long as the overhead delay is kept low to enable real time applications.

In response to receiving the rotation-based representation of the user sent by the data processing module over the network, the displaying module may perform in real-time or quasi real-time the steps of:.

Reconstructing a virtual avatar representation of the user performing the body pose of the user based on the rotation-based representation of the user received. For example, this is done by applying the rotations, which is the quasi representation of the movement, to a rigged avatar model in a standard pose. The skeleton may be manipulated by setting the bones in relation to each other according to the joint rotations contained in the rotation-based representation. As such, the skeleton of the avatar will accurately reflect the pose recorded by the rotations. The model will adjust its outer appearance through the simulation of its surface according to its underlying skeleton.

Displaying the virtual avatar representation of the user in a virtual environment of the user. The virtual avatar rendered in the virtual environment of the user is a self-avatar of the user displaying the users' movements in real time like a mirror image. As the user moves and adjusts its posture, so does the self-avatar. Preferably the self-avatar has the same body proportions as the user. The virtual environment is generated in augmented reality (AR), extended reality (MX), or virtual reality (VR).

In a further embodiment, the displaying module is further configured to additionally perform the steps of:
Providing a user interface on the displaying module, wherein the user interface comprises a choice of different target poses and/or a choice of different fitness programs and workouts. The target pose is a posture that the user intends to imitate.

Receiving a selection of a target pose, wherein the user selects the target pose on the user interface. It is also an option for the system to select target postures on its own, depending on whether a particular fitness program is being performed. If a pose counts as successfully performed by the user, the system may automatically select the next pose according to the chosen workout or if a set number of repetitions of an exercise is reached.

Sending an identifier to the processing module, wherein the identifier identifies the selected target pose.

The processing module may then in response to receiving the identifier perform the following steps:
Loading a rotation-based representation corresponding to the target pose identified by the identifier from a memory.

Comparing the target rotation-based representation corresponding to the target pose with the rotation-based representation of the user. The focus is on comparing the joint rotations between the observed user pose and the target pose. The FBX file format is a structured rotation-based representation for animations. Individual joint rotations can be extracted from the file and compared to raw data. Comparing both 3D models is based on at least one of comparing joint locations of the target pose with joint locations of the body pose and generating a score from their distances, calculating global rotations of joints, calculating local rotations of joints of the target pose and the body pose and comparing their differences, and/or calculating bone vectors of the target pose and the body pose and comparing their differences.

An angle comparison in degrees or radians to match the desired silhouettes angles with a buffer of fixed values on either side of each joint angle is the best generic technique. Local rotations in Euler angles can be used in a 3D rendering engine to accomplish this. Any method of generating a posture in the 3D rendering engine can be used to achieve the required stance (e.g. FBX file format). There is another technique to compare poses in general terms, which is to compare joint locations rather than angles. There are a number of ways to do either of these. However, some 3D rendering systems use snap boxes to compare an object's location until it falls within a particular range. This is commonly utilized in augmented reality, virtual reality, and video games.

Based on the comparison of the rotation-based representations, the processing module continues by generating feedback data from the comparison. Options for feedback include the visual discrepancy between the target pose skeleton and the users skeleton; color highlighting of individual joints and bones; visual highlighting of target angle ranges; as well as textual information on required angle adjustments of individual bones.

Finally, sending the feedback data to the displaying module, wherein the displaying module displays the feedback data to the user.

In one embodiment the processing module sends the rotation-based representation that corresponds to the selected target pose to the displaying module. The displaying module reconstructs a virtual avatar of an instructor performing the selected target pose from the rotation-based representation selected by the user. The instructor avatar can be rendered next to the user's self-avatar or instructor avatar and self-avatar can be overlaid depending on user preference.

<FIG> shows an example diagram of the system setup.

The system <NUM> includes a displaying module <NUM>, which in this example is a VR/AR headset worn by the user <NUM>, and a processing module (not shown). A camera <NUM> captures images of the user <NUM>, which are then processed by the processing module as previously described and sent to the display module <NUM>. The display module <NUM> renders a self-avatar representation of the user <NUM> in a virtual environment of the user <NUM> based on the data it receives from the processing module. The processing module may be configured to carry out the method of the present disclosure. In particular, it may be configured to execute a machine learning algorithm and generate the rotation-based representation of extracted 3D key point coordinates, as described above. The processing model may have or be connected to a data storage which stores the machine learning algorithm.

<FIG> is an example of a first set of 3D key point coordinates according to the present disclosure showing an exemplary skeleton of a user.

<FIG> is second set of 3D key point coordinates according to the present disclosure showing the exemplary skeleton of fig. 3a according to a first exemplary visual representation.

<FIG> is second set of 3D key point coordinates according to the present disclosure showing the exemplary skeleton of fig. 3a according to a second exemplary visual representation.

The comparison between <FIG> with <FIG> and <FIG> highlights the discrepancy between the utilized key points in a MOCAP system (cf. the first set) and the required key points for the displaying and animation of the virtual avatar on a displaying module.

The first set (i.e. a Machine Learning tracking point list for body of the user) may comprise at least (or at least some of) the following key points <NUM> (cf. also <FIG>):.

In comparison, the second set (i.e. an Animation Skeleton structure for body of the user) may comprise at least (or at least some of) the following key points <NUM> (cf. also <FIG>, <FIG>):.

Accordingly, for example separate point lists exist for the head and hands. While the head differs as well, the hand tracking may be generally very similar. Key differences for the body tracking are found in the presence of only a four-point body box between two shoulders and two hip points while the animation requires a more detailed representation of multiple points along the spine as well as a centre hip point to reflect anatomical changes along the spine. The transposition (or translation) between the two sets, e.g. by triangulating and fitting the spine, is one of the key achievements of the system of the present disclosure.

Furthermore, transposing the first set (of tracked features from the Mocap application) to the second set (of features used in e.g. known animation engines) in real-time or quasi real-time is a further key achievements of the system of the present disclosure.

Although the present disclosure herein has been described with reference to particular examples, it is to be understood that these examples are merely illustrative of the principles and applications of the present disclosure.

Claim 1:
A system (<NUM>) for monitoring a body pose of a user (<NUM>), the system (<NUM>) comprising:
a data processing module, which is configured to perform in real-time or quasi real-time the steps of:
receiving 2D image data of the user (<NUM>) performing the body pose;
extracting 2D key point coordinates of a detected body from the 2D image data using machine learning, wherein the 2D key point coordinates are joint locations of the body of the user;
estimating 3D key point coordinates from the extracted 2D key point coordinates using machine learning;
transforming the estimated 3D key point coordinates into a rotation-based representation of the user (<NUM>), which is a list containing one entry for each joint, each entry comprising a 3D joint rotation of the joint and the 3D coordinates of the joint;
outputting the rotation-based representation of the user;
further comprising a displaying module which is configured to perform the steps of:
providing a user interface;
receiving a selection of a target pose, which is selected by the user on the user interface; and
sending an identifier to the data processing module, wherein the identifier identifies the selected target pose; and
wherein the data processing module is further configured to perform in real-time or quasi real-time the steps of:
receiving the identifier;
loading a rotation-based representation corresponding to the target pose identified by the identifier from a memory;
comparing the rotation-based representation corresponding to the target pose with the rotation-based representation of the user, wherein the comparison includes:
comparing 3D joint coordinates of the target pose with the 3D joint coordinates of the body pose and generating a score from their distances; and
comparing 3D joint rotations of the target pose with the 3D joint rotations of the body pose;
generating feedback data from the comparison, the feedback data representing a discrepancy between the target pose and the body pose of the user and, wherein the feedback data provides feedback by:
color highlighting of individual joints and bones; and/or
highlighting of target angle ranges;
sending the feedback data to the displaying module, wherein the displaying module displays the feedback data to the user.