Motion tracking with multi-task neural network

A multi-task neural network addresses the inefficiencies and inaccuracies of current motion tracking techniques by simultaneously processing 2D and 3D features from monocular videos, achieving improved efficiency and accuracy in 3D motion tracking.

WO2025118238A1PCT designated stage expired Publication Date: 2025-06-12INTEL CORP +5
View PDF 5 Cites 0 Cited by

Patent Information

Application Number
PCT/CN2023/137099
Authority / Receiving Office
WO · WO
Patent Type
Applications
Current Assignee / Owner
Filing Date
2023-12-07
Publication Date
2025-06-12

AI Technical Summary

Technical Problem

Current motion tracking techniques using bundle-adjustment-based algorithms for 3D human pose estimation from monocular videos suffer from high computational costs, low efficiency, and poor prediction accuracy due to the use of multiple AI models and reliance on temporal consistency, which can result in unstable and depth-inconsistent motion tracking results.

Method used

A multi-task neural network (DNN) is employed to process monocular videos, simultaneously extracting 2D and 3D features for motion tracking. The network includes branches for 2D key points detection, 3D pose estimation, and object segmentation, with an optimization module that processes these outputs to achieve spatial-time consistency and stabilize 3D motion tracking.

Benefits of technology

The proposed approach improves motion tracking efficiency by reducing computational costs and increases accuracy by fusing 2D and 3D predictions from the multi-task DNN, providing stable and consistent 3D motion tracking results with minimal need for camera calibration or prior knowledge.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN2023137099_12062025_PF_FP_ABST
    Figure CN2023137099_12062025_PF_FP_ABST
Patent Text Reader

Abstract

A three-dimensional motion (3D) of an object may be determined using a multi-task deep neural network (DNN). Frames in a video capturing the object may be cropped and input into the neural network. The DNN's backbone may extract features of the object from a cropped frame and output a feature map. The feature map may be processed in the DNN's first branch to compute a heat map representing 2D key points on the object. The feature map and the heat map may be processed in the DNN's second branch to compute a pose tensor that includes 3D pose parameters of the object. The feature map may also be processed in the DNN's third branch to compute one or more masks representing a segmented part of the object. The heat maps, pose tensors, and masks of the cropped frames may be processed together to determine the 3D motion of the object.
Need to check novelty before this filing date? Find Prior Art

Description

MOTION TRACKING WITH MULTI-TASK NEURAL NETWORKTechnical Field

[0001] This disclosure relates generally to neural networks (also referred to as “deep neural networks” or “DNNs” ) , and more specifically, to motion tracking with multi-task DNNs.Background

[0002] The last decade has witnessed a rapid rise in AI (artificial intelligence) based data processing, particularly based on DNNs. DNNs are widely used in the domains of image recognition, video understanding, image or video generation, machine translation, mathematical reasoning, and so on.Brief Description of the Drawings

[0003] Embodiments will be readily understood by the following detailed description in conjunction with the accompanying drawings. To facilitate this description, like reference numerals designate like structural elements. Embodiments are illustrated by way of example, and not by way of limitation, in the figures of the accompanying drawings.

[0004] FIG. 1 is a block diagram of a motion tracking system, in accordance with various embodiments.

[0005] FIG. 2 is a block diagram of a multi-task network module, in accordance with various embodiments.

[0006] FIG. 3 is a block diagram of an optimization module, in accordance with various embodiments.

[0007] FIG. 4 illustrates an example motion tracking pipeline, in accordance with various embodiments.

[0008] FIG. 5 illustrates an example multi-task DNN, in accordance with various embodiments.

[0009] FIGS. 6A and 6B illustrate three-dimensional (3D) motion tracking with reconstructed 3D ground plane, in accordance with various embodiments.

[0010] FIG. 7 illustrates an example motion analysis for physical fitness, in accordance with various embodiments.

[0011] FIG. 8 illustrates an example avatar animation generated based on motion tracking, in accordance with various embodiments.

[0012] FIG. 9 illustrates an example CNN, in accordance with various embodiments.

[0013] FIG. 10 illustrates an example convolution, in accordance with various embodiments.

[0014] FIG. 11 is a flowchart showing a method of motion tracking, in accordance with various embodiments.

[0015] FIG. 12 is a block diagram of an example computing device, in accordance with various embodiments.Detailed Description

[0016] Overview

[0017] A DNN typically includes a sequence of layers. A DNN layer may include one or more deep learning operations (also referred to as “neural network operations” ) , such as convolution, pooling, elementwise operation, linear operation, nonlinear operation, and so on. A DL operation in a DNN may be performed on one or more internal parameters of the DNNs (e.g., weights) , which are determined during the training phase, and one or more activations. An activation may be a data point (also referred to as “data elements” or “elements” ) . Activations or weights of a DNN layer may be elements of a tensor of the DNN layer. A tensor is a data structure having multiple elements across one or more dimensions. Example tensors include a vector, which is a one-dimensional tensor, and a matrix, which is a two-dimensional tensor. There can also be three-dimensional tensors and even higher dimensional tensors. A DNN layer may have an input tensor (also referred to as “input feature map (IFM) ” ) including one or more input activations (also referred to as “input elements” ) and a weight tensor including one or more weights. A weight is an element in the weight tensor. A weight tensor of a convolution may be a kernel, a filter, or a group of filters. The output data of the DNN layer may be an output tensor (also referred to as “output feature map (OFM) ” ) that includes one or more output activations (also referred to as “output elements” ) .

[0018] Currently available techniques can provide 3D human pose estimation from a monocular image or video. However, the tracking accuracy and robustness of these techniques cannot be well achieved due to the inevitable challenges, such as depth  ambiguity, self-occlusion and so on. A currently available approach is based on a bundle-adjustment-based algorithm using temporal context for 3D human pose estimation from monocular videos. This approach uses a two-dimensional (2D) pose detector to predict 2D key points for a single person for each video frame, then uses a 3D pose network to produce the initial SMPL (skinned multi-person linear model) parameters, and finally jointly optimizes the SMPL parameters and camera parameters over an entire video sequence by considering the reprojection error, temporal consistency constraint and 3D pose prior.

[0019] However, the bundle-adjustment-based algorithm suffers from multiple disadvantages. For instance, this approach usually uses two AI models to respectively detect 2D key points and predict 3D parameters. The utilization of multiple AI models can cause high cost and low efficiency. For instance, more time and computational resources are typically required to train and run multiple AI models. Also, the utilization of separate models can result in poor prediction accuracy. Moreover, this approach usually uses the temporal consistency between adjacent frames to achieve visually smooth results but can have strong depth inconsistency across the action sequence. In an example where people crouch down and up while his / her feet are motionless, this approach would provide motion tracking results with undesirable instability and depth shifting.

[0020] Embodiments of the present disclosure may improve on at least some of the challenges and issues described above by using a multi-task DNN for tracking 3D motions of objects. Examples of the objects may include a person, animal, machine, vehicle, robot, or other types of movable objects. The multi-task DNN may process a monocular video capturing a moving object and produce both 2D and 3D motion tracking results. For instance, the multi-task DNN may include a branch, which can extract 2D features for 2D key points detection, and another branch, which can extract 3D features for 3D pose detection. The multi-task DNN may include yet another branch that can segment a part of the object (e.g., a foot of a person) from the moving object. The outputs of the multi-task DNN may be processed together, e.g., by a optimization module that can exploit the spatial-time consistency across the entire video sequence. The join optimization module can eliminate the front-back depth shifting and provide stable 3D motion tracking results.

[0021] In various embodiments of the present disclosure, frames of a monocular video capturing a movement of the object may be cropped and then input into the multi-task DNN.  The cropping of the frames may be based on a detection of the object in the first frame of the video. The detection of the object may not be needed in the other frames of the video. The multi-task DNN may process the frames separately. A backbone of the multi-task DNN may extract features of the object from a cropped frame and output a feature map. The backbone may be a network that includes one or more convolutional layers. The feature map computed by the backbone may be processed in a first branch of the multi-task DNN to compute a heat map that represents 2D key points on the object. The feature map and the heat map may be processed in a second branch of the neural network to compute a pose tensor that includes 3D pose parameters of the object. In some embodiments, the pose tensor may be a one-dimensional tensor, and the pose tensor is also referred to as a pose vector. In other embodiments, the pose tensor may be a two-dimensional tensor, and the pose tensor is also referred to as a pose matrix. The feature map may also be processed in a third branch of the neural network to compute one or more masks that represent a segmented part of the object.

[0022] The heat maps, pose tensors, and masks of the cropped frames may be processed together to determine the 3D motion of the object. For instance, one or more filters may be applied to smooth the 2D key points extracted from the heat maps, pose tensors, and masks. Also, the motion of a root point on the object in a 3D camera space may be determined based on the heat maps and the pose tensors. For instance, a position parameter representing the motion of the root point may be generated. The masks may be used to refine the position parameter. Also, the position parameter and pose tensor may be optimized using an objective function. After the optimization or refinement, the position parameter and pose tensor may be used to determine the 3D motion of the object.

[0023] Compared with currently available approach utilizing multiple models, the present disclosure provides a 3D motion tracking approach that can improve the motion tracking efficiency by reducing computational costs during training and inference and can also increase 3D motion tracking accuracy by fusing the 2D and 3D predictions of the muti-task DNN. The 3D motion tracking approach may require little or even no camera calibration or human priori. 3D skeleton motion in 3D space can be automatically computed. The 3D motion tracking approach can be practical and robust for many application scenarios, such as animation generation, sports analysis, fitness assistance, film and game production, and  so on.

[0024] For purposes of explanation, specific numbers, materials and configurations are set forth in order to provide a thorough understanding of the illustrative implementations. However, it will be apparent to one skilled in the art that the present disclosure may be practiced without the specific details or / and that the present disclosure may be practiced with only some of the described aspects. In other instances, well known features are omitted or simplified in order not to obscure the illustrative implementations.

[0025] Further, references are made to the accompanying drawings that form a part hereof, and in which is shown, by way of illustration, embodiments that may be practiced. It is to be understood that other embodiments may be utilized, and structural or logical changes may be made without departing from the scope of the present disclosure. Therefore, the following detailed description is not to be taken in a limiting sense.

[0026] Various operations may be described as multiple discrete actions or operations in turn, in a manner that is most helpful in understanding the claimed subject matter. However, the order of description should not be construed as to imply that these operations are necessarily order dependent. In particular, these operations may not be performed in the order of presentation. Operations described may be performed in a different order from the described embodiment. Various additional operations may be performed or described operations may be omitted in additional embodiments.

[0027] For the purposes of the present disclosure, the phrase “A or B” or the phrase "A and / or B" means (A) , (B) , or (A and B) . For the purposes of the present disclosure, the phrase “A, B, or C” or the phrase "A, B, and / or C" means (A) , (B) , (C) , (A and B) , (A and C) , (B and C) , or (A, B, and C) . The term "between, " when used with reference to measurement ranges, is inclusive of the ends of the measurement ranges.

[0028] The description uses the phrases "in an embodiment" or "in embodiments, " which may each refer to one or more of the same or different embodiments. The terms "comprising, " "including, " "having, " and the like, as used with respect to embodiments of the present disclosure, are synonymous. The disclosure may use perspective-based descriptions such as "above, " "below, " "top, " "bottom, " and "side" to explain various features of the drawings, but these terms are simply for ease of discussion, and do not imply a desired or required orientation. The accompanying drawings are not necessarily drawn to  scale. Unless otherwise specified, the use of the ordinal adjectives “first, ” “second, ” and “third, ” etc., to describe a common object, merely indicates that different instances of like objects are being referred to and are not intended to imply that the objects so described must be in a given sequence, either temporally, spatially, in ranking or in any other manner.

[0029] In the following detailed description, various aspects of the illustrative implementations will be described using terms commonly employed by those skilled in the art to convey the substance of their work to others skilled in the art.

[0030] The terms “substantially, ” “close, ” “approximately, ” “near, ” and “about, ” generally refer to being within + / -20%of a target value as described herein or as known in the art. Similarly, terms indicating orientation of various elements, e.g., “coplanar, ” “perpendicular, ” “orthogonal, ” “parallel, ” or any other angle between the elements, generally refer to being within + / -5-20%of a target value as described herein or as known in the art.

[0031] In addition, the terms “comprise, ” “comprising, ” “include, ” “including, ” “have, ” “having” or any other variation thereof, are intended to cover a non-exclusive inclusion. For example, a method, process, device, or DNN accelerator that comprises a list of elements is not necessarily limited to only those elements but may include other elements not expressly listed or inherent to such method, process, device, or DNN accelerators. Also, the term “or” refers to an inclusive “or” and not to an exclusive “or. ”

[0032] The systems, methods and devices of this disclosure each have several innovative aspects, no single one of which is solely responsible for all desirable attributes disclosed herein. Details of one or more implementations of the subject matter described in this specification are set forth in the description below and the accompanying drawings.

[0033] Example Motion Tracking System

[0034] FIG. 1 is a block diagram of a motion tracking system 100, in accordance with various embodiments. The motion tracking system 100 estimates and tracks motions of objects using videos that capture the objects. The motion tracking system 100 includes an interface module 110, an object detection module 120, a multi-task network module 130, a optimization module 140, an application module 150, and a datastore 160. In other embodiments, alternative configurations, different or additional components may be included in the motion tracking system 100. Further, functionality attributed to a component of the motion tracking system 100 may be accomplished by a different component included  in the motion tracking system 100 or by a different module.

[0035] The interface module 110 facilitates communications of the motion tracking system 100 with other systems, devices, or modules. For example, the interface module 110 may receive videos from other systems or cameras. The videos may include monocular videos. A video may include a sequence of frames. A frame may be an image. Different frames may be associated with different time stamps. Some or all frames in a video may capture one or more objects. As another example, the interface module 110 may receive one or more training datasets for the multi-task network module 130 to train a multi-task DNN. Yet another example, the interface module 110 may transmit data generated by the motion tracking system 100 to other systems, devices, or modules. For instance, the interface module 110 may transmit estimated 3D motions of objects, animations of objects, motion analysis results, or other types of motion tracking information to other systems, devices, or modules.

[0036] The object detection module 120 detects objects in videos. In some embodiments, the object detection module 120 may detect an object in a video based on a frame in the video. The frame may be the first frame in the video or the first frame in a portion of the video. In some embodiments, to detect an object ( “target object” ) from a video frame, the object detection module 120 may determine or receive a class of the target object. Examples of the class of the target object may include person, car, truck, robot, dog, cat, and so on. The object detection module 120 may also classify one or more objects in the frame and determine whether any of the objects fall into the class of the target object. The object detection module 120 may use a trained model to classify objects. For instance, the object detection module 120 may input the frame into the trained model, and the trained model may output the classes of the objects in the frame. The trained model may be a DNN, such as a CNN.

[0037] After the object detection module 120 detects the object, the object detection module 120 may generate a bounding box based on the detection of the object. The bounding box may be a 2D bounding box that surrounds an image of the object in the frame. The object detection module 120 may use the bounding box to extract the image of the object from the frame. The image of the object may be at least part of the frame. In some embodiments, the object detection module 120 may detect the object in every frame of the  video and extract images of the objects from the frames based on the object detection. In other embodiments, instead of detecting the object in every frame, the object detection module 120 may use 2D key points of the object that are predicted using one frame (e.g., the first frame) in the video to extract images of the object from other frames in the video. For instance, the 2D key points of the object may be predicted by a multi-task DNN using the first frame. The object detection module 120 may generate bounding boxes for the other frames based on the 2D key points and use the bounding boxes to extract the images of the object from other frames.

[0038] The multi-task network module 130 generates multi-task DNNs. In some embodiments, the multi-task network module 130 may define the architecture of a multi-task DNN used for 3D motion tracking. The multi-task network module 130 may define a backbone network in the multi-task DNN. For instance, the multi-task network module 130 may determine layers in the backbone network, data flow between the layers, and so on. The multi-task network module 130 may also define branches in the multi-task DNN based on tasks to be performed by the multi-task DNN. In some embodiments, the multi-task network module 130 may determine a branch for a particular task and determine different branches for different tasks. For each branch, the multi-task network module 130 may determine one or more layers in the branch and data flow between the one or more layers, and so on. An example of multi-task DNNs generated by multi-task network module 130 is the multi-task DNN 500 in FIG. 5.

[0039] The multi-task network module 130 may train the multi-task DNN. Values of internal parameters of the multi-task DNN may be determined through training. The multi-task network module 130 may also validate the accuracy of the multi-task DNN. After the multi-task DNN is trained or validated, the multi-task network module 130 may deploy the multi-task DNN to extract 2D and 3D features from images for predictions of 2D key points, 3D pose parameters, and ground part segmentation. Images input to the multi-task DNN may be images of objects. The images of objects may be images extracted by the object detection module 120 from video frames. In some embodiments, the multi-task network module 130 may input images into the muti-task DNN one by one. For each cropped frame, the multi-task DNN may generate multiple outputs. Certain aspects of the multi-task network module 130 are described below in conjunction with FIG. 2.

[0040] The optimization module 140 optimizes 2D key points and 3D pose parameters computed by the multi-task DNN. In some embodiments, the optimization module 140 may remove at least some noises in the 2D key points and 3D pose parameters. The optimization module 140 may apply one or more filters on the heat map to remove noises in the heat map. For instance, the optimization module 140 may extract 2D key points from the heat map and apply one or more filters on the 2D key points. The optimization module 140 may also apply one or more filters on the pose tensor to remove noises in the pose tensor. In some embodiments, the optimization module 140 may also estimate the motion of a root point of the object. The root point may be one of the key points of the object. The optimization module 140 may generate a position parameter that represents the estimated motion of the root point in a 3D camera space. The optimization module 140 may optimize the pose tensor and the position parameter using an objective function. In some embodiments, the optimization module may further refine the estimated motion of the root point using the one or more masks representing the ground part. The optimization module 140 may generate the 3D motion tracking result using the estimated root point motion and the optimized 3D pose parameters.

[0041] In some embodiments, the optimization module 140 may exploit global spatial-temporal consistency constraints for coherent 3D motion tracking over an entire video sequence. The optimization module 140 may eliminate the front-back shifting in depth that. In some embodiments, depth uncertainty may be present in monocular reconstruction and may be counteracted by penalizing large variations in depth between not only the neighboring frames but also all the possible frame pairs. When the segmented ground part regions in two frames have a very high overlap rate, the optimized key point positions of the 3D ground part for the two frames should be very close. In some embodiments, the optimization module 140 may use optional part-ground contacting constraints for the optimization to further improve the position-tracking stability. Certain aspects of the optimization module 140 are described below in conjunction with FIG. 3.

[0042] The application module 150 generates files associated with motions for various applications. The motions may be 3D determined by the optimization module 140. The files may include images, videos, audios, text, symbols, other types of information, or some combination thereof. In some embodiments, the application module 150 may receive a  request for one or more motion files, e.g., from a client device associated with a user, a third-party system, a device, and so on. The request may include information indicating the application of the one or more files. The application module 150 may generate the one or more motion files based on information in the request. In an example, the request may be a request for an animation showing motion of an object. The application module 150 may generate one or more animation files based on a 3D motion determined by the optimization module 140. In another example, the request may be a request for descriptions of movements of a person in a video. The application module 150 may generate a text file that describes the person’s movements. In other examples, the application module 150 may generate other types of files. In some embodiments, the application module 150 may generate files that can be input into and processed by graphics software to make animation or other types of files.

[0043] The datastore 160 stores data associated with the motion tracking system 100, such as data received, generated, or used by components of the motion tracking system 100. For instance, the datastore 160 may store parameters (e.g., internal parameters, hyperparameters, etc. ) of the multi-task DNN. The datastore 160 may also store training sets and validation sets used to train and validate the multi-task DNN. The datastore 160 may further store videos received by the interface module 110, outputs of the multi-task DNN, 3D motion tracking results output from the optimization module 140, motion files generated by the application module 150, and so on. In some embodiments, the motion tracking system 100 may include or be associated with more than one datastore. The datastore 160 may be implemented as a random-access memory (RAM) , such as a static RAM (SRAM) , disk storage, nearline storage, online storage, offline storage, and so on.

[0044] FIG. 2 is a block diagram of a multi-task network module 200, in accordance with various embodiments. The multi-task network module 200 uses a multi-task DNN to process video frames and predict 2D key points and 3D pose parameters. The multi-task network module 200 may be an example of the multi-task network module 130 in FIG. 1. In the embodiments of FIG. 2, the multi-task network module 200 includes a training module 210, a validating module 220, a multi-task neural network 230, and a deployment module 240. In other embodiments, alternative configurations, different or additional components may be included in the multi-task network module 200. Further, functionality attributed to a  component of the multi-task network module 200 may be accomplished by a different component included in the multi-task network module 200 or by a different module.

[0045] The training module 210 trains the multi-task neural network 230 by using one or more training datasets. In some embodiments, the training module 210 forms the one or more training dataset. The training dataset includes training samples and ground-truth labels of the training samples. A training sample may be an image, e.g., a cropped frame of a video. A ground-truth label may include verified or known 2D key points, 3D pose parameters, or masks of the corresponding training sample. In some embodiments, a part of the training dataset may be used to initially train the multi-task neural network 230, and the rest of the training dataset may be held back as a validation subset used by the validating module 220 to validate performance of the multi-task neural network 230 after being trained. The portion of the training dataset not including the validation subset may be used to train the multi-task neural network 230.

[0046] In some embodiments, the training module 210 also determines hyperparameters for training the multi-task neural network 230. Hyperparameters may be variables specifying the training process. Hyperparameters may be different from parameters inside the multi-task neural network 230 (e.g., weights) . In some embodiments, hyperparameters include variables determining the architecture of the multi-task neural network 230, such as number of layers in backbone, types of layers in backbone, number of layers in branches, types of layers in branches, connections between backbone and branches, connections between branches, and so on.

[0047] Hyperparameters also include variables which determine how the multi-task neural network 230 is trained, such as batch size, number of epochs, etc. A batch size defines the number of training samples to work through before updating the parameters of the multi-task neural network 230. The batch size is the same as or smaller than the number of samples in the training dataset. The training dataset can be divided into one or more batches. The number of epochs defines how many times the entire training dataset is passed forward and backwards through the entire network. The number of epochs defines the number of times that the deep learning algorithm works through the entire training dataset. One epoch means that each training sample in the training dataset has had an opportunity to update the parameters inside the DNN. An epoch may include one or more batches. The  number of epochs may be 1, 5, 10, 50, 100, 500, 1000, or even larger.

[0048] The training module 210 may define the architecture of the DNN, e.g., based on some of the hyperparameters. The architecture of the multi-task neural network 230 may include a backbone and a plurality of branches associated with the backbone. The backbone may be a network that includes an input layer, an output layer, and a plurality of hidden layers. The input layer may include tensors (e.g., a multidimensional array) specifying attributes of the input image, such as the height of the input image, the width of the input image, and the depth of the input image (e.g., the number of bits specifying the color of a pixel in the input image) . The output layer includes labels of objects in the input layer. The hidden layers are layers between the input layer and output layer. The hidden layers include one or more convolutional layers and one or more other types of layers, such as pooling layers, fully-connected layers, normalization layers, SoftMax or logistic layers, and so on. The output layer may include an OFM representing features extracted by the backbone. In the process of defining the architecture of the DNN, the training module 210 may also add an activation function to a hidden layer or the output layer. An activation function of a layer transforms the weighted sum of the input of the layer to an output of the layer. The activation function may be, for example, a rectified linear unit (ReLU) activation function, a tangent activation function, or other types of activation functions. The training module 210 may define one or more attributes of tensors computed in the backbone, such as spatial size, datatype, and so on.

[0049] After the training module 210 defines the architecture of the multi-task neural network 230, the training module 210 may input a training dataset into the multi-task neural network 230. The training module 210 may modify the parameters inside the multi-task neural network 230 ( “internal parameters of the multi-task neural network 230” ) to minimize the error between labels of the training samples that are generated by the multi-task neural network 230 and the ground-truth labels of the training samples. In some embodiments, the training module 210 uses a cost function to minimize the error.

[0050] The training module 210 may train the multi-task neural network 230 for a predetermined number of epochs. The number of epochs is a hyperparameter that defines the number of times that the deep learning algorithm will work through the entire training dataset. One epoch means that each sample in the training dataset has had an opportunity  to update internal parameters of the multi-task neural network 230. After the training module 210 finishes the predetermined number of epochs, the training module 210 may stop updating the parameters in the multi-task neural network 230.

[0051] The validating module 220 verifies accuracy of the multi-task neural network 230 after it is trained by the training module 210. In some embodiments, the validating module 220 inputs samples in a validation dataset into the multi-task neural network 230 and uses the outputs of the multi-task neural network 230 to determine the model accuracy. In some embodiments, a validation dataset may be formed of some or all the samples in the training dataset. Additionally or alternatively, the validation dataset includes additional samples, other than those in the training sets. In some embodiments, the validating module 220 may determine an accuracy score measuring the precision, recall, or a combination of precision and recall of the DNN. The validating module 220 may use the following metrics to determine the accuracy score: Precision = TP  /  (TP + FP) and Recall = TP  /  (TP + FN) , where precision may be how many the multi-task neural network 230 correctly predicted (TP or true positives) out of the total it predicted (TP + FP or false positives) , and recall may be how many the multi-task neural network 230 correctly predicted (TP) out of the total number of objects that did have the property in question (TP + FN or false negatives) . The F-score (F-score = 2 *PR  /  (P + R) ) unifies precision and recall into a single measure.

[0052] The validating module 220 may compare the accuracy score with a threshold score. In an example where the validating module 220 determines that the accuracy score of the multi-task neural network 230 is less than the threshold score, the validating module 220 instructs the training module 210 to re-train the multi-task neural network 230. In one embodiment, the training module 210 may iteratively re-train the multi-task neural network 230 until the occurrence of a stopping condition, such as the accuracy measurement indication that the multi-task neural network 230 may be sufficiently accurate, or a number of training rounds having taken place.

[0053] The multi-task neural network 230 is DNN that can perform multiple tasks. In some embodiments, the multi-task neural network 230 is trained to receive an input, process the input using various layers in the multi-task neural network 230 and generates multiple outputs, each of which may constitute the result of performing a predetermined task. In some embodiments, the multi-task neural network 230 may include a backbone and  multiple branches coupled to the backbone. In some embodiments, the backbone of the multi-task DNN may include one or more convolutional layers that can extract features from an input image and output a feature map. The feature map may represent the object. The feature map from the backbone may be provided to some or all the branches. Each branch may be used to perform a particular task. With multiple branches, the multi-task neural network 230 can perform multiple tasks at the same time using the same input. Examples of the tasks may include 2D key points prediction, 3D pose prediction, ground part segmentation, other tasks for 3D motion tracking, or some combination thereof. An example of the multi-task neural network 230 is the multi-task DNN 500 in FIG. 5.

[0054] The deployment module 240 deploys the multi-task neural network 230 to perform 3D motion tracking tasks. The deployment module 240 may input images into the multi-task neural network 230. An image may be a cropped frame from a video. The deployment module 240 may input the images into the multi-task neural network 230 one by one. For each input image, the deployment module 240 may obtain multiple outputs of the multi-task neural network 230. In some embodiments, the deployment module 240 may transmit the outputs of the multi-task neural network 230 to optimization module 140 for estimating 3D motions.

[0055] FIG. 3 is a block diagram of an optimization module 300, in accordance with various embodiments. The optimization module 300 processes heat maps, pose tensors, and masks generated from a video capturing an object to determine a 3D motion of the object. The optimization module 300 may be an example of the optimization module 140 in FIG. 1. In the embodiments of FIG. 3, the optimization module 300 includes a filtering module 310, a root motion module 320, a global consistency module 330, and a refinement module 340. In other embodiments, alternative configurations, different or additional components may be included in the optimization module 300. Further, functionality attributed to a component of the optimization module 300 may be accomplished by a different component included in the optimization module 300 or by a different module.

[0056] The filtering module 310 applies filters on 2D key points extracted from heat maps, 3D pose parameters in pose tensors, and masks generated from video frames. The heat maps, pose tensors, and masks may be generated by a multi-task DNN. In some embodiments, the filtering module 310 may generate or receive a filter and apply the filter  on the 2D key points from the heat maps, pose tensors, or masks to reduce or even eliminate noise in the heat maps, pose tensors, or masks. The filtering module 310 may generate smoothed 2D key points, 3D pose parameters, or masks that have less noise than the 2D key points, 3D pose parameters, or masks predicted by the multi-task DNN. Examples of the filters include box filter, gaussian filter, and so on.

[0057] In some embodiments, the filtering module 310 may generate or receive a 6DOF (Quaternion) block. The 6DOF block may implement quaternion representation of six-degrees-of-freedom equations of motion with respect to body axes. The filtering module 310 may apply the 6DoF continuous representation for 3D rotations to temporally filter 3D pose parameters in a pose tensor to smooth the pose tensor.

[0058] The root motion module 320 determines the motion of a root point on the object in a 3D camera space. In some embodiments, for each frame It, the root motion module 320 computes the root point’s motion represented by a position parameter in the 3D camera space by minimizing the objective function.  may also be referred to as the initial position parameter of the root point. The motion of the root join may include a translation. An example of the translation may be a motion of the object in a straight line. The root point may be the key point that has a higher hierarchy than the other key points on the object. In an example where the object is a person, the root point may be a key point on the body of the person, e.g., a joint, navel, head, and so on. The root motion module 320 may define the root point. For instance, the root motion module 320 may select one of the key points as the root point. The root point may be a key point that is connected to some or all the other key points.

[0059] In some embodiments, the object function may be defined as where represents the 3D joint positions in the camera space, Kt represents the heat map, and represents the initial pose tensor, e.g., the pose tensor generated by the multi-task DNN.  represents a forward kinematics operation to produce root-relative 3D joint positions from joint rotations and PT may represent a predefined 3D structural template (e.g., a 3D skeleton template) . Π is pinhole projection function from the 3D camera space to a 2D image plane using the camera’s intrinsic parameters (fx, fy, cx, cx) , where fx, fy are the focal lengths in x, y directions, cx, cy are the x and y coordinates of the optical center in the image plane. In an example  where the video has a resolution represented by (w, h) ,  fx=fy=max (w, h) .

[0060] In some embodiments, applying per-frame 3D pose and root translation on a video may not exploit and ensure spatial-temporal consistency of motion, which may lead to temporal jitter and unacceptable artifact for some applications. Further optimization or refinement may be conducted to address the temporal jitter and unacceptable artifact.

[0061] The global consistency module 330 optimizes the global consistency of the object’s motion determined using the video. For instance, the global consistency module 330 may optimize the pose tensor and the position parameter for the root point. In some embodiments, the global consistency module 330 may combine multiple constraints into a joint minimal optimization over the entire video sequence to seek for an optimal pose tensor θ= {θt} , d= {dt} using the initial pose tensor and the initial position parameter The objective function for the global optimization is defined:

[0062] E (θ, d) =Eproj (θ, d) +Espatial-tem (d) +Etemporal (θ, d) +Eprior (θ) +Ereg (θ, d)

[0063] Eproj (θ, d) =λ1Σt‖Π (Pt) -Kt‖2,

[0064] Espatial-tempo (d) =λ2Σ (t1, t2) ∈s (|| (Pt1) foot- (Pt2) foot||2) ,

[0065] Etemporal (θ, d) =λ3Σt‖Pt-Pt-1‖2+‖Pt-Pt+1‖2,

[0066] Eprior (θ) =-λ4log (G (θ; μθ, Σ) ) , and

[0067]

[0068] where Eproj represents a measured distance between the projection of 3D joint positions Pt=f (θt, PT) +dt and the detected 2D key points Kt. Espatial-tempo is used for spatial-temporal consistency of the 3D motion tracking result. With Espatial-tempo , the overall stability and robustness can be improved. In some embodiments, when the overlap of the segmented foot Mt1 in frame t1 and the segmented foot Mt2 in frame t2 is larger than a threshold, which means the foot can almost keep still between the two frames, the 3D foot joint position (Pt1) foot for frame t1 should be sufficiently close with the 3D foot joint position (Pt2) foot for frame t2. S are all possible pairs {t1, t2} that have the high segmented foot overlap. Etemporal encourages smooth motion for adjacent frames in temporal domain. Eprior is a prior term to favor realistic and natural poses over implausible ones. Ereg measures the similarity between the optimized parameters and the initial ones. To easily  solve the optimization problem, for implementation details, we use the two-stage strategy, the first stage is using per-frame terms like Eproj, Eprior, Ereg, and in the second stage we use all terms to reach the optimal solution in a quick converging manner.

[0069] The refinement module 340 refines the root motion determined by the root motion module 320. The root motion refinement may be optional. In some embodiments, the refinement module 340 may estimate a 3D ground plane that represents a ground on which the object carries out the motion. The 3D ground plane may be represented by: Ax+By+Cz+D=0. In some embodiments, when the object moves on the ground, there may be at least one part of the object touching the ground. For instance, when the object is a person, at least one foot of the object may touch the ground at some or all moments during the object’s motion. The refinement module 340 may fit the 3D ground plane equation to a set of 3D body joints {Qi} , which are considered as touching points. In an example the object is a person, when one foot of the person is in contact with the ground plane, it would have a small velocity at that moment. The refinement module 340 may track the foot part temporally and compute the velocity in the 2D image space using the overlap of the segmented masks in adjacent frames. In some embodiments, when the velocity is smaller than the predefined threshold, the corresponding foot can be assigned to be the touching point. After the 3D ground plane is determined, the refinement module 340 may adjust the optimized root motion dt for each frame so that each assigned 3D foot joint is on the 3D ground plane.

[0070] Example Motion Tracking

[0071] FIG. 4 illustrates an example motion tracking pipeline 400, in accordance with various embodiments. The motion tracking pipeline 400 may be performed by the motion tracking system 100 in FIG. 1. In the embodiments of FIG. 4, the motion tracking pipeline 400 starts with an input stage 401. In the input stage 401, a plurality of frames is received by the motion tracking system 100. The frames may be arranged in a sequence, e.g., based on the timestamps associated with the frames. The frames may be from a video.

[0072] The frames are processed separately in an AI prediction stage 402. The first frame may be used for object detection, key points detection, pose parameters regression, and ground part segmentation. Each of the subsequent frames may be used for key points detection, pose parameters regression, and ground part segmentation. Object detection is  not performed on the subsequent frames in the AI prediction stage 402 as the key points detection, pose parameters regression, and ground part segmentation for the subsequent frames can be conducted based on object detection using the first frame.

[0073] The outputs of the AI prediction stage 402 are processed in a global processing stage 403, in which the outputs generated from the frames in the AI prediction stage 402 may be processed together. In the embodiments of FIG. 4, the global processing stage 403 includes four steps: smoothing, root translation initiation, global consistency optimization, and root translation refinement. The smoothing step may be done by the filtering module 310 using one or more filters. The root translation initiation step may be done by the root motion module 320 to identify a root point and estimate motion of the root point in a 3D camera space. The global consistency optimization step may be done by the global consistency module 330 for global and spatial-temporal consistency over the entire sequence of frames. The root translation refinement step may be done by the refinement module 340 to counteract depth uncertainty in reconstruction of videos, e.g., monocular videos. In the root translation refinement step, large variations in depth between frame pairs, including neighboring frames pairs and non-neighboring frame pairs, may be penalized. A neighboring frame pair may include frames that are arranged right next to each other in the video. A non-neighboring frame pair may include frames that have one or more other frames between them in the video.

[0074] The global processing stage 403 is followed by a result stage 404, where the estimated 3D motion result is available. The estimated 3D motion result may be output by the optimization module 140. The result stage 404 is followed by an application stage 405 which may be done by the application module 150 to use the estimated 3D motion result to generate one or more files for particular applications.

[0075] FIG. 5 illustrates an example multi-task DNN 500, in accordance with various embodiments. The multi-task DNN 500 may be an example of the multi-task neural network 230 in FIG. 2. In the embodiments of FIG. 5, the multi-task DNN 500 includes a CNN backbone 510, convolutional layers 520, 530, and 540, a concatenation layer 550, and a regression layer 560. The convolutional layer 520 may constitute a branch of the multi-task DNN 500. The convolutional layer 530 may constitute another branch of the multi-task DNN 500. The convolutional layer 540, the concatenation layer 550, and the regression layer 560  may constitute yet another branch of the multi-task DNN 500. In other embodiments, the multi-task DNN 500 may include different, fewer, or more layers. Also, one or more layers in the multi-task DNN 500 may be arranged differently. For the purpose of illustration, the multi-task DNN 500 receives an input image 501 and generates three outputs: a ground part mask 502, a heat map 503, and a pose tensor 504.

[0076] The CNN backbone 510 receives the input image 501. The input image 501 may be an image of an object that is extracted from a frame in a video capturing the object. For instance, the input image 501 may be a cropped frame that may be generated by cropping the video frame using a 2D bounding box. The CNN backbone 510 may extract features from the input image 501 and generate a feature map. In some embodiments, the CNN backbone 510 may include a plurality of convolutional layers. The CNN backbone 510 may also include one or more activation function layers, pooling layers, fully-connected layers, other types of layers, or some combination thereof. An example of the CNN backbone 510 may be the CNN 900 in FIG. 9 or be at part of the CNN 900. The feature map generated by the CNN backbone 510 may be an OFM of the last layer of the CNN backbone 510.

[0077] The convolutional layer 520 receives the feature map from the CNN backbone 510 and generates a ground part mask 502. In some embodiments, the convolution layer 520 may segment a ground part of the object from the object based on the feature map from the CNN backbone 510. The ground part mask 502 may represent the segmented ground part. The ground part may be a part of the object that is considered to be on the ground during the object’s movement. In an example where the object is a person, the ground part may be a foot of the person. In some embodiments, the convolutional layer 520 may segment multiple ground parts of the object from the object and generate multiple ground part masks. Each of the ground part masks may represent a different one of the segmented ground parts.

[0078] The convolutional layer 530 processes the feature map from the CNN backbone 510 to compute the heat map 503. The heat map 503 represents 2D key points on the object. The heat map 503 may be an OFM of the convolutional layer 530. The heat map 503 is represented by a rectangular prism in FIG. 5. In an example, the heat map 503may be a 3D tensor denoted as F∈RH×W× (J+1) having a spatial size of H×W× (J+1) , where H is the height of the heat map, W is the width of the heat map, and J+1 is the depth of the heat  map 503. The depth of the heat map 503 may be in the channel dimension of the heat map 503, and the heat map 503 may have J+1 channels. The heat map 503 may model J key points and 1 background mask. Each key point may be represented by a 2D tensor denoted as F′∈RH×W. Each data element in the 2D tensor may be a pixel having an index (h, w) that indicates the position of the pixel in the 2D tensor. For instance, h may indicate which column of the 2D tensor the pixel is located at, and w may indicate which row of the 2D tensor the pixel is located. A pixel may encode the likelihood of a portion of the object belonging to a key point j. In an example where the object is a person, the key points may be body joints.

[0079] The convolutional layer 540 receives the feature map from the CNN backbone 510 and generates a new feature map by applying a convolution on the feature map from the CNN backbone 510. The feature map generated by the convolutional layer 540 and the heat map 503 generated by the convolutional layer 530 are input into the concatenation layer 550. The concatenation layer 550 may also be referred to as a concatenator. The concatenation layer 550 concatenates the two feature maps in one of the dimensions. For instance, the concatenation layer 550 may concatenate the two feature map in the channel dimension. The concatenation layer 550 may stack the feature map generated by the convolutional layer 540 and the heat map 503 in the channel dimension to generate a new feature map. In an example where the heat map 503 includes J+1 channels and the feature map generated by the convolutional layer 540 has K channels, the feature map generated the concatenation layer 550 may have J+1+K channels.

[0080] In some embodiments, the spatial size of the feature map generated by the convolutional layer 540 in a single channel may equal the spatial size of the heat map 503 in a single channel. In the example where the heat map 503 has the spatial size of H×W× (J+1) , the feature map generated by the convolutional layer 540 may has the same height H and the same width W. Also, the spatial size of the feature map generated by the concatenation layer 550 in a single channel may equal the spatial size of the heat map 503 in a single channel. In the example where the heat map 503 has the spatial size of H×W× (J+1) , the feature map generated by the concatenation layer 550 may has the same height H and the same width W.

[0081] The regression layer 560 receives the feature map generated by the concatenation  layer 550 and generates the pose tensor 504. The pose tensor 504 includes 3D pose parameters. The regression layer 560 may change values of data elements in the feature map generated by the concatenation layer 550 to compute the 3D pose parameters. In some embodiments, the regression layer 560 may apply regression on the feature map generated by the concatenation layer 550. The regression may be linear regression, nonlinear regression, etc. In some embodiments, the regression layer 560 may use one or more pose and shape parameters as the regression target for computing the 3D pose parameters. In some embodiments, the regression layer 560 may include a fully-connected layer.

[0082] FIGS. 6A and 6B illustrate 3D motion tracking with reconstructed 3D ground plane 610, in accordance with various embodiments. The reconstructed 3D ground plane 610 has a checkboard pattern in FIGS. 6A and 6B. In other embodiments, the reconstructed 3D ground plane 610 may have different patterns. FIGS. 6A and 6B show a result of 3D motion tracking based on two frames 620A and 620B. The frames 620A and 620B may be frames in the same video, e.g., a video that captures the movement of a person. FIG. 6A shows the estimated 3D motion of the person captured by the frame 620A. FIG. 6B shows the estimated 3D motion of the person captured by the frame 620B. The 3D motions may be estimated by the motion tracking system 100 in FIG. 1 using the video.

[0083] FIGS. 6A and 6B each show a graphic representation 630 of the person. The graphic representation 630 makes the estimated 3D motion. The graphic representation 630 includes a plurality of key points 640, individually referred to as key point 640. The key points 640 are circled with dashed circles in FIG. 6A. Even though the graphic representation 630 includes 16 key points 640, the graphic representation 630 may include a different number of key points 640 in other embodiments. A key point 640 may represent a body part of the person, e.g., bone joint, head, foot, naval, and so on. In some embodiments, one of the key points 640 may be selected as a root point. For instance, the key point 640 representing the navel of the person may be selected as the root point. The motion of the root point may be estimated, and the estimated motion of the root point may be used to estimate the 3D motion of the person. The key points 640 may be determined by a multi-task DNN, e.g., the multi-task neural network 230 or the multi-task DNN 500. The two key points 640 touching the reconstructed 3D ground plane 610 in FIG. 6A may correspond to the two feet of the person. The multi-task DNN may generate two masks based on foot  segmentation.

[0084] FIG. 7 illustrates an example motion analysis for physical fitness, in accordance with various embodiments. The motion analysis may be based on a 3D motion of a person 710 that is estimated using a video capturing the person 710 running on a treadmill 720. The motion analysis may be done by the motion tracking system 100 in FIG. 1. FIG. 7 shows key points 715 of the person 710. For the purpose of illustration, FIG. 7 shows eight key points 715. In other embodiments, a different number of key points 715 may be used for estimating the 3D motion. The estimated 3D motion may be used to monitor or evaluate the running exercise of the person 710. For instance, the estimated 3D motion may be used to determine the running speed of the person 710, measuring consumed calories, evaluate pose of the person 710 during the running, monitor health conditions of the person 710, provide recommendations for physical fitness, and so on.

[0085] FIG. 8 illustrates an example avatar animation 810 generated based on motion tracking, in accordance with various embodiments. The avatar animation 810 may be generated by the motion tracking system 100 using a video 820. For the purpose of illustration, FIG. 8 shows a frame of the avatar animation 810 and a frame of the video 820. The video 820 captures a person playing basketball. The person’s 3D motion is estimated. The estimated 3D motion is used to generate the motion of the avatar in the avatar animation 810. The avatar may be a graphic representation of the person. As shown in FIG. 8, the avatar in the avatar animation 810 is making the same or substantially similar movement as the person in the video 820.

[0086] Example CNN

[0087] FIG. 9 illustrates an example CNN 900, in accordance with various embodiments. The CNN 900 (or part of the CNN 900) may be an example of the CNN backbone 510 in FIG. 5. The CNN 900 is trained to receive images of objects and OFM representing extracted features of the objects. In the embodiments of FIG. 9, the CNN 900 includes a sequence of layers comprising a plurality of convolutional layers 910 (individually referred to as “convolutional layer 910” ) , a plurality of pooling layers 920 (individually referred to as “pooling layer 920” ) , and a plurality of fully-connected layers 930 (individually referred to as “fully-connected layer 930” ) . In other embodiments, the CNN 900 may include fewer, more, or different layers. In an inference of the CNN 900, the layers of the CNN 900 execute tensor  computation that includes many tensor operations, such as convolution (e.g., multiply-accumulate (MAC) operations, etc. ) , pooling operations, elementwise operations (e.g., elementwise addition, elementwise multiplication, etc. ) , other types of tensor operations, or some combination thereof.

[0088] The convolutional layers 910 summarize the presence of features in the input to the CNN 900. The convolutional layers 910 function as feature extractors. The first layer of the CNN 900 is a convolutional layer 910. In an example, a convolutional layer 910 performs a convolution on an input tensor 940 (also referred to as IFM 940) and a filter 950. As shown in FIG. 9, the IFM 940 is represented by a 7×7×3 three-dimensional (3D) matrix. The IFM 940 includes 3 input channels, each of which is represented by a 7×7 two-dimensional (2D) matrix. The 7×7 2D matrix includes 7 input elements (also referred to as input points) in each row and seven input elements in each column. The filter 950 is represented by a 3×3×3 3D matrix. The filter 950 includes 3 kernels, each of which may correspond to a different input channel of the IFM 940. A kernel is a 2D matrix of weights, where the weights are arranged in columns and rows. A kernel can be smaller than the IFM. In the embodiments of FIG. 9, each kernel is represented by a 3×3 2D matrix. The 3×3 kernel includes 3 weights in each row and three weights in each column. Weights can be initialized and updated by backpropagation using gradient descent. The magnitudes of the weights can indicate importance of the filter 950 in extracting features from the IFM 940.

[0089] The convolution includes MAC operations with the input elements in the IFM 940 and the weights in the filter 950. The convolution may be a standard convolution 963 or a depthwise convolution 983. In the standard convolution 963, the whole filter 950 slides across the IFM 940. All the input channels are combined to produce an output tensor 960 (also referred to as OFM 960) . The OFM 960 is represented by a 5×5 2D matrix. The 5×5 2D matrix includes 5 output elements (also referred to as output points) in each row and five output elements in each column. For the purpose of illustration, the standard convolution includes one filter in the embodiments of FIG. 9. In embodiments where there are multiple filters, the standard convolution may produce multiple output channels in the OFM 960.

[0090] The multiplication applied between a kernel-sized patch of the IFM 940 and a kernel may be a dot product. A dot product is the elementwise multiplication between the kernel-sized patch of the IFM 940 and the corresponding kernel, which is then summed, always  resulting in a single value. Because it results in a single value, the operation is often referred to as the “scalar product. ” Using a kernel smaller than the IFM 940 is intentional as it allows the same kernel (set of weights) to be multiplied by the IFM 940 multiple times at different points on the IFM 940. Specifically, the kernel is applied systematically to each overlapping part or kernel-sized patch of the IFM 940, left to right, top to bottom. The result from multiplying the kernel with the IFM 940 one time is a single value. As the kernel is applied multiple times to the IFM 940, the multiplication result is a 2D matrix of output elements. As such, the 2D output matrix (i.e., the OFM 960) from the standard convolution 963 is referred to as an OFM.

[0091] In the depthwise convolution 983, the input channels are not combined. Rather, MAC operations are performed on an individual input channel and an individual kernel and produce an output channel. As shown in FIG. 9, the depthwise convolution 983 produces a depthwise output tensor 980. The depthwise output tensor 980 is represented by a 5×5×3 3D matrix. The depthwise output tensor 980 includes 3 output channels, each of which is represented by a 5×5 2D matrix. The 5×5 2D matrix includes 5 output elements in each row and five output elements in each column. Each output channel is a result of MAC operations of an input channel of the IFM 940 and a kernel of the filter 950. For instance, the first output channel (patterned with dots) is a result of MAC operations of the first input channel (patterned with dots) and the first kernel (patterned with dots) , the second output channel (patterned with horizontal strips) is a result of MAC operations of the second input channel (patterned with horizontal strips) and the second kernel (patterned with horizontal strips) , and the third output channel (patterned with diagonal stripes) is a result of MAC operations of the third input channel (patterned with diagonal stripes) and the third kernel (patterned with diagonal stripes) . In such a depthwise convolution, the number of input channels equals the number of output channels, and each output channel corresponds to a different input channel. The input channels and output channels are referred to collectively as depthwise channels. After the depthwise convolution, a pointwise convolution 993 is then performed on the depthwise output tensor 980 and a 9×1×3 tensor 990 to produce the OFM 960.

[0092] The OFM 960 is then passed to the next layer in the sequence. In some embodiments, the OFM 960 is passed through an activation function. An example activation function is ReLU. ReLU is a calculation that returns the value provided as input directly, or  the value zero if the input is zero or less. The convolutional layer 910 may receive several images as input and calculate the convolution of each of them with each of the kernels. This process can be repeated several times. For instance, the OFM 960 is passed to the subsequent convolutional layer 910 (i.e., the convolutional layer 910 following the convolutional layer 910 generating the OFM 960 in the sequence) . The subsequent convolutional layers 910 perform a convolution on the OFM 960 with new kernels and generate a new feature map. The new feature map may also be normalized and resized. The new feature map can be kernelled again by a further subsequent convolutional layer 910, and so on.

[0093] In some embodiments, a convolutional layer 910 has four hyperparameters: the number of kernels, the size F kernels (e.g., a kernel is of dimensions F×F×D pixels) , the S step with which the window corresponding to the kernel is dragged on the image (e.g., a step of one means moving the window one pixel at a time) , and the zero-padding P (e.g., adding a black contour of P pixels thickness to the input image of the convolutional layer 910) . The convolutional layers 910 may perform various types of convolutions, such as 2-dimensional convolution, dilated or atrous convolution, spatial separable convolution, depthwise separable convolution, transposed convolution, and so on. The CNN 900 includes 96 convolutional layers 910. In other embodiments, the CNN 900 may include a different number of convolutional layers.

[0094] The pooling layers 920 down-sample feature maps generated by the convolutional layers, e.g., by summarizing the presence of features in the patches of the feature maps. A pooling layer 920 is placed between two convolution layers 910: a preceding convolutional layer 910 (the convolution layer 910 preceding the pooling layer 920 in the sequence of layers) and a subsequent convolutional layer 910 (the convolution layer 910 subsequent to the pooling layer 920 in the sequence of layers) . In some embodiments, a pooling layer 920 is added after a convolutional layer 910, e.g., after an activation function (e.g., ReLU, etc. ) has been applied to the OFM 960.

[0095] A pooling layer 920 receives feature maps generated by the preceding convolution layer 910 and applies a pooling operation to the feature maps. The pooling operation reduces the size of the feature maps while preserving their important characteristics. Accordingly, the pooling operation improves the efficiency of the CNN and avoids over- learning. The pooling layers 920 may perform the pooling operation through average pooling (calculating the average value for each patch on the feature map) , max pooling (calculating the maximum value for each patch of the feature map) , or a combination of both. The size of the pooling operation is smaller than the size of the feature maps. In various embodiments, the pooling operation is 2×2 pixels applied with a stride of two pixels, so that the pooling operation reduces the size of a feature map by a factor of 2, e.g., the number of pixels or values in the feature map is reduced to one quarter the size. In an example, a pooling layer 920 applied to a feature map of 6×6 results in an output pooled feature map of 3×3. The output of the pooling layer 920 is inputted into the subsequent convolution layer 910 for further feature extraction. In some embodiments, the pooling layer 920 operates upon each feature map separately to create a new set of the same number of pooled feature maps.

[0096] The fully-connected layers 930 are the last layers of the CNN. The fully-connected layers 930 may be convolutional or not. The fully-connected layers 930 may also be referred to as linear layers. In some embodiments, a fully-connected layer 930 (e.g., the first fully-connected layer in the CNN 900) may receive an input operand. The input operand may define the output of the convolutional layers 910 and pooling layers 920 and includes the values of the last feature map generated by the last pooling layer 920 in the sequence. The fully-connected layer 930 may apply a linear transformation to the input operand through a weight matrix. The weight matrix may be a kernel of the fully-connected layer 930. The linear transformation may include a tensor multiplication between the input operand and the weight matrix. The result of the linear transformation may be an output operand. In some embodiments, the fully-connected layer may further apply a nonlinear transformation (e.g., by using a nonlinear activation function) on the result of the linear transformation to generate an output operand. The output operand may contain as many elements as there are classes: element i represents the probability that the image belongs to class i. Each element is therefore between 0 and 9, and the sum of all is worth one. These probabilities are calculated by the last fully-connected layer 930 by using a logistic function (binary classification) or a SoftMax function (multi-class classification) as an activation function.

[0097] FIG. 10 illustrates an example convolution, in accordance with various embodiments. The convolution may be a deep learning operation in a convolutional layer, e.g., a convolutional layer in the backbone 510, the convolutional layer 520, the convolutional layer  530, the convolutional layer 540, or one of the convolutional layers 910. The convolution can be executed on an input tensor 1010 and filters 1020 (individually referred to as “filter 1020” ) . The result of the convolution is an output tensor 1030. In some embodiments, the convolution is performed by a DNN accelerator. An example of the DNN accelerator may be the DNN accelerator 302 in FIG. 3.

[0098] In the embodiments of FIG. 10, the input tensor 1010 includes activations (also referred to as “input activations, ” “elements, ” or “input elements” ) arranged in a 3D matrix. An input element is a data point in the input tensor 1010. The input tensor 1010 has a spatial size Hin×Win×Cin, where Hin is the height of the 3D matrix (i.e., the length along the Y axis, which indicates the number of activations in a column in the 3D matrix of each input channel) , Win is the width of the 3D matrix (i.e., the length along the X axis, which indicates the number of activations in a row in the 3D matrix of each input channel) , and Cin is the depth of the 3D matrix (i.e., the length along the Z axis, which indicates the number of input channels) . For the purpose of simplicity and illustration, the input tensor 1010 has a spatial size of 7×7×3, i.e., the input tensor 1010 includes three input channels and each input channel has a 7×7 2D matrix. Each input element in the input tensor 1010 may be represented by a (X, Y, Z) coordinate. In other embodiments, the height, width, or depth of the input tensor 1010 may be different.

[0099] Each filter 1020 includes weights arranged in a 3D matrix. The values of the weights may be determined through training the DNN. A filter 1020 has a spatial size Hf×Wf×Cf, where Hf is the height of the filter (i.e., the length along the Y axis, which indicates the number of weights in a column in each kernel) , Wf is the width of the filter (i.e., the length along the X axis, which indicates the number of weights in a row in each kernel) , and Cf is the depth of the filter (i.e., the length along the Z axis, which indicates the number of channels) . In some embodiments, Cf equals Cin. For purpose of simplicity and illustration, each filter 1020 in FIG. 10 has a spatial size of 10×3×3, i.e., the filter 1020 includes 10 convolutional kernels with a spatial size of 3×3. In other embodiments, the height, width, or depth of the filter 1020 may be different. The spatial size of the convolutional kernels is smaller than the spatial size of the 2D matrix of each input channel in the input tensor 1010.

[0100] An activation or weight may take one or more bytes in a memory. The number of bytes for an activation or weight may depend on the data format. For example, when the  activation or weight has an INT8 format, the activation takes one byte. When the activation or weight has a FP16 format, the activation or weight takes two bytes. Other data formats may be used for activations or weights.

[0101] In the convolution, each filter 1020 slides across the input tensor 1010 and generates a 2D matrix for an output channel in the output tensor 1030. In the embodiments of FIG. 10, the 2D matrix has a spatial size of 5×5. The output tensor 1030 includes activations (also referred to as “output activations, ” “elements, ” or “output element” ) arranged in a 3D matrix. An output activation is a data point in the output tensor 1030. The output tensor 1030 has a spatial size Hout×Wout×Cout, where Hout is the height of the 3D matrix (i.e., the length along the Y axis, which indicates the number of output activations in a column in the 2D matrix of each output channel) , Wout is the width of the 3D matrix (i.e., the length along the X axis, which indicates the number of output activations in a row in the 2D matrix of each output channel) , and Cout is the depth of the 3D matrix (i.e., the length along the Z axis, which indicates the number of output channels) . Cout may equal the number of filters 1020 in the convolution. Hout and Wout may depend on the heights and weights of the input tensor 1010 and each filter 1020.

[0102] As a part of the convolution, MAC operations can be performed on a 3×3×3 subtensor 1015 (which is highlighted with a dotted pattern in FIG. 10) in the input tensor 1010 and each filter 1020. The result of the MAC operations on the subtensor 1015 and one filter 1020 is an output activation. In some embodiments (e.g., embodiments where the convolution is an integral convolution) , an output activation may include eight bits, e.g., one byte. In other embodiments (e.g., embodiments where the convolution is a floating-point convolution) , an output activation may include more than one byte. For instance, an output element may include two bytes.

[0103] After the MAC operations on the subtensor 1015 and all the filters 1020 are finished, a vector 1035 is produced. The vector 1035 is highlighted with slashes in FIG. 10. The vector 1035 includes a sequence of output activations, which are arranged along the Z axis. The output activations in the vector 1035 have the same (X, Y) coordinate, but the output activations correspond to different output channels and have different Z coordinates. The dimension of the vector 1035 along the Z axis may equal the total number of output channels in the output tensor 1030. After the vector 1035 is produced, further MAC  operations are performed to produce additional vectors till the output tensor 1030 is produced.

[0104] In some embodiments, the output activations in the output tensor 1030 may be further processed based on one or more activation functions before they are stored or inputted into the next layer of the CNN. The processing based on the one or more activation functions may be at least part of the post processing of the convolution. In some embodiments, the post processing may include one or more other computations, such as offset computation, bias computation, and so on. The results of the post processing may be stored in a local memory of the compute block and be used as input to the next layer. In some embodiments, the input activations in the input tensor 1010 may be results of post processing of the previous layer. Even though the input tensor 1010, filters 1020, and output tensor 1030 are 3D tensors in FIG. 10, the input tensor 1010, a filter 1020, or the output tensor 1030 may be a 2D tensor in other embodiments.

[0105] Example Method of Motion Tracking

[0106] FIG. 11 is a flowchart showing a method 1100 of motion tracking, in accordance with various embodiments. The method 1100 may be performed by the motion tracking system 100 in FIG. 1. Although the method 1100 is described with reference to the flowchart illustrated in FIG. 11, many other methods for motion tracking may alternatively be used. For example, the order of execution of the steps in FIG. 11 may be changed. As another example, some of the steps may be changed, eliminated, or combined.

[0107] The motion tracking system 100 extracts 1110 an image from a frame of a video based on detection of an object in the frame. The image captures the object. In some embodiments, the video captures a movement of the object.

[0108] The motion tracking system 100 generates 1120, by a backbone in a neural network using the image, a feature map of the object. The neural network further comprises a first branch and a second branch that are coupled to the backbone. In some embodiments, the backbone includes one or more convolutional layers.

[0109] The motion tracking system 100 generates 1130, by the first branch using the feature map, a heat map comprising one or more pixels. A pixel encodes a likelihood of a point on the object being a key point on the object. In some embodiments, the heat map is a 3D tensor comprising a number of 2D matrix. A 2D matrix comprises pixels arranged in rows and  columns. The number of 2D matrix is determined based on a number of key points on the object.

[0110] The motion tracking system 100 generates 1140, by the second branch using the feature map and the heat map. A pose tensor comprises one or more parameters that represent a 3D pose of the object in the frame. In some embodiments, the second branch comprises a convolutional layer, a concatenate layer, and a regression layer.

[0111] The motion tracking system 100 determines 1150 a 3D motion of the object based on the heat map and the pose tensor. In some embodiments, the video includes a sequence of frames. The frame is the first frame in the sequence. The motion tracking system 100 extracts a second image from a second frame in the sequence. The motion tracking system 100 generates, by the neural network using the second image, a second heat map and a second pose tensor. The three-dimensional motion of the object is determined further based on the second heat map and the second pose tensor.

[0112] In some embodiments, the motion tracking system 100 segments, by a third branch in the neural network using the feature map, a part of the object from the object. The motion tracking system 100 generates, by the third branch, one or more masks representing the segmented part. The 3D motion of the object is determined further based on the one or more masks. In some embodiments, the motion tracking system 100 constructs a 3D ground plane based on the one or more masks. The 3D ground plane represents a ground on which the 3D motion of the object is carried out.

[0113] In some embodiments, the motion tracking system 100 applies a first filter on the heat map to generate a smoothed heat map. The motion tracking system 100 applies a second filter on the one or more 3D pose parameters to generate one or more smoothed 3D pose parameters. The motion tracking system 100 determines the 3D motion of the object based on the smoothed key points and the one or more smoothed 3D pose parameters.

[0114] Example Computing Device

[0115] FIG. 12 is a block diagram of an example computing device 1200, in accordance with various embodiments. In some embodiments, the computing device 1200 can be used as at least part of the motion tracking system 100. A number of components are illustrated in FIG. 12 as included in the computing device 1200, but any one or more of these components may be omitted or duplicated, as suitable for the application. In some embodiments, some or all  of the components included in the computing device 1200 may be attached to one or more motherboards. In some embodiments, some or all of these components are fabricated onto a single system on a chip (SoC) die. Additionally, in various embodiments, the computing device 1200 may not include one or more of the components illustrated in FIG. 12, but the computing device 1200 may include interface circuitry for coupling to the one or more components. For example, the computing device 1200 may not include a display device 1206, but may include display device interface circuitry (e.g., a connector and driver circuitry) to which a display device 1206 may be coupled. In another set of examples, the computing device 1200 may not include an audio input device 1218 or an audio output device 1208, but may include audio input or output device interface circuitry (e.g., connectors and supporting circuitry) to which an audio input device 1218 or audio output device 1208 may be coupled.

[0116] The computing device 1200 may include a processing device 1202 (e.g., one or more processing devices) . The processing device 1202 processes electronic data from registers and / or memory to transform that electronic data into other electronic data that may be stored in registers and / or memory. The computing device 1200 may include a memory 1204, which may itself include one or more memory devices such as volatile memory (e.g., DRAM) , nonvolatile memory (e.g., read-only memory (ROM) ) , high bandwidth memory (HBM) , flash memory, solid state memory, and / or a hard drive. In some embodiments, the memory 1204 may include memory that shares a die with the processing device 1202. In some embodiments, the memory 1204 includes one or more non-transitory computer-readable media storing instructions executable to perform operations for motion tracking, e.g., the method 1100 described above in conjunction with FIG. 11 or some operations performed by the motion tracking system 100. The instructions stored in the one or more non-transitory computer-readable media may be executed by the processing device 1202.

[0117] In some embodiments, the computing device 1200 may include a communication chip 1212 (e.g., one or more communication chips) . For example, the communication chip 1212 may be configured for managing wireless communications for the transfer of data to and from the computing device 1200. The term "wireless" and its derivatives may be used to describe circuits, devices, systems, methods, techniques, communications channels, etc., that may communicate data through the use of modulated electromagnetic radiation  through a nonsolid medium. The term does not imply that the associated devices do not contain any wires, although in some embodiments they might not.

[0118] The communication chip 1212 may implement any of a number of wireless standards or protocols, including but not limited to Institute for Electrical and Electronic Engineers (IEEE) standards including Wi-Fi (IEEE 802.10 family) , IEEE 802.16 standards (e.g., IEEE 802.16-2005 Amendment) , Long-Term Evolution (LTE) project along with any amendments, updates, and / or revisions (e.g., advanced LTE project, ultramobile broadband (UMB) project (also referred to as "3GPP2" ) , etc. ) . IEEE 802.16 compatible Broadband Wireless Access (BWA) networks are generally referred to as WiMAX networks, an acronym that stands for worldwide interoperability for microwave access, which is a certification mark for products that pass conformity and interoperability tests for the IEEE 802.16 standards. The communication chip 1212 may operate in accordance with a Global System for Mobile Communication (GSM) , General Packet Radio Service (GPRS) , Universal Mobile Telecommunications System (UMTS) , High Speed Packet Access (HSPA) , Evolved HSPA (E-HSPA) , or LTE network. The communication chip 1212 may operate in accordance with Enhanced Data for GSM Evolution (EDGE) , GSM EDGE Radio Access Network (GERAN) , Universal Terrestrial Radio Access Network (UTRAN) , or Evolved UTRAN (E-UTRAN) . The communication chip 1212 may operate in accordance with Code-division Multiple Access (CDMA) , Time Division Multiple Access (TDMA) , Digital Enhanced Cordless Telecommunications (DECT) , Evolution-Data Optimized (EV-DO) , and derivatives thereof, as well as any other wireless protocols that are designated as 3G, 4G, 5G, and beyond. The communication chip 1212 may operate in accordance with other wireless protocols in other embodiments. The computing device 1200 may include an antenna 1222 to facilitate wireless communications and / or to receive other wireless communications (such as AM or FM radio transmissions) .

[0119] In some embodiments, the communication chip 1212 may manage wired communications, such as electrical, optical, or any other suitable communication protocols (e.g., the Ethernet) . As noted above, the communication chip 1212 may include multiple communication chips. For instance, a first communication chip 1212 may be dedicated to shorter-range wireless communications such as Wi-Fi or Bluetooth, and a second communication chip 1212 may be dedicated to longer-range wireless communications such  as global positioning system (GPS) , EDGE, GPRS, CDMA, WiMAX, LTE, EV-DO, or others. In some embodiments, a first communication chip 1212 may be dedicated to wireless communications, and a second communication chip 1212 may be dedicated to wired communications.

[0120] The computing device 1200 may include battery / power circuitry 1214. The battery / power circuitry 1214 may include one or more energy storage devices (e.g., batteries or capacitors) and / or circuitry for coupling components of the computing device 1200 to an energy source separate from the computing device 1200 (e.g., AC line power) .

[0121] The computing device 1200 may include a display device 1206 (or corresponding interface circuitry, as discussed above) . The display device 1206 may include any visual indicators, such as a heads-up display, a computer monitor, a projector, a touchscreen display, a liquid crystal display (LCD) , a light-emitting diode display, or a flat panel display, for example.

[0122] The computing device 1200 may include an audio output device 1208 (or corresponding interface circuitry, as discussed above) . The audio output device 1208 may include any device that generates an audible indicator, such as speakers, headsets, or earbuds, for example.

[0123] The computing device 1200 may include an audio input device 1218 (or corresponding interface circuitry, as discussed above) . The audio input device 1218 may include any device that generates a signal representative of a sound, such as microphones, microphone arrays, or digital instruments (e.g., instruments having a musical instrument digital interface (MIDI) output) .

[0124] The computing device 1200 may include a GPS device 1216 (or corresponding interface circuitry, as discussed above) . The GPS device 1216 may be in communication with a satellite-based system and may receive a location of the computing device 1200, as known in the art.

[0125] The computing device 1200 may include another output device 1210 (or corresponding interface circuitry, as discussed above) . Examples of the other output device 1210 may include an audio codec, a video codec, a printer, a wired or wireless transmitter for providing information to other devices, or an additional storage device.

[0126] The computing device 1200 may include another input device 1220 (or corresponding  interface circuitry, as discussed above) . Examples of the other input device 1220 may include an accelerometer, a gyroscope, a compass, an image capture device, a keyboard, a cursor control device such as a mouse, a stylus, a touchpad, a bar code reader, a Quick Response (QR) code reader, any sensor, or a radio frequency identification (RFID) reader.

[0127] The computing device 1200 may have any desired form factor, such as a handheld or mobile computer system (e.g., a cell phone, a smart phone, a mobile internet device, a music player, a tablet computer, a laptop computer, a netbook computer, an ultrabook computer, a personal digital assistant (PDA) , an ultramobile personal computer, etc. ) , a desktop computer system, a server or other networked computing component, a printer, a scanner, a monitor, a set-top box, an entertainment control unit, a vehicle control unit, a digital camera, a digital video recorder, or a wearable computer system. In some embodiments, the computing device 1200 may be any other electronic device that processes data.

[0128] Select Examples

[0129] The following paragraphs provide various examples of the embodiments disclosed herein.

[0130] Example 1 provides a computer-implemented method, including extracting an image from a frame of a video based on detection of an object in the frame, the image capturing the object; generating, by a backbone in a neural network using the image, a feature map of the object, the neural network further including a first branch and a second branch that are coupled to the backbone; generating, by the first branch using the feature map, a heat map including one or more pixels, a pixel encoding a likelihood of a point on the object being a key point on the object; generating, by the second branch using the feature map and the heat map, a pose tensor including one or more parameters that represent a three-dimensional (3D) pose of the object in the frame; and determining a 3D motion of the object based on the heat map and the pose tensor.

[0131] Example 2 provides the computer-implemented method of example 1, in which the video includes a sequence of frames, the frame is a first frame in the sequence, and the computer-implemented method further includes extracting a second image from a second frame in the sequence based on the heat map for the first frame; and generating, by the neural network using the second image, a second heat map and a second pose tensor, in which the three-dimensional motion of the object is determined further based on the  second heat map and the second pose tensor.

[0132] Example 3 provides the computer-implemented method of example 1 or 2, further including segmenting, by a third branch in the neural network using the feature map, a part of the object from the object; and generating, by the third branch, one or more masks representing the segmented part, in which the 3D motion of the object is determined further based on the one or more masks.

[0133] Example 4 provides the computer-implemented method of example 3, further including constructing a 3D ground plane based on the one or more masks, the 3D ground plane representing a ground on which the 3D motion of the object is carried out.

[0134] Example 5 provides the computer-implemented method of any one of examples 1-4, in which the heat map is a 3D tensor including a number of 2D matrix, a 2D matrix includes pixels arranged in rows and columns, and the number of 2D matrix is determined based on a number of key points on the object.

[0135] Example 6 provides the computer-implemented method of any one of examples 1-5, in which the second branch includes a convolutional layer, a concatenate layer, and a regression layer.

[0136] Example 7 provides the computer-implemented method of any one of examples 1-6, in which determining the 3D motion of the object including applying a first filter on key points extracted from the heat map to generate smoothed key points; applying a second filter on the one or more 3D pose parameters to generate one or more smoothed 3D pose parameters; and determining the 3D motion of the object based on the smoothed key points and the one or more smoothed 3D pose parameters.

[0137] Example 8 provides the computer-implemented method of any one of examples 1-7, in which determining the 3D motion of the object includes determining positions of key points on the object in a 3D camera space based on the pose tensor, the key points including a root point and one or more other key points connected to the root point; converting the positions of the key points in the 3D camera space to positions of the key points in a 2D plane of the video by projecting the 3D camera space to the 2D plane based on a resolution of the video; generating a position parameter representing a motion of the root point in the 3D camera space based on the pose tensor and the positions of the key points in the 2D plane; and determining the 3D motion of the object based on the motion of the root point in  the 3D camera space.

[0138] Example 9 provides the computer-implemented method of example 8, in which determining the 3D motion of the object further includes optimizing the position parameter and the pose tensor based on an objective function; and determining the 3D motion of the object based on the optimized position parameter and the optimized pose tensor.

[0139] Example 10 provides the computer-implemented method of any one of examples 1-9, further including generating a 3D animation that illustrates the 3D motion of the object, in which the video is a monocular video.

[0140] Example 11 provides one or more non-transitory computer-readable media storing instructions executable to perform operations, the operations including extracting an image from a frame of a video based on detection of an object in the frame, the image capturing the object; generating, by a backbone in a neural network using the image, a feature map of the object, the neural network further including a first branch and a second branch that are coupled to the backbone; generating, by the first branch using the feature map, a heat map including one or more pixels, a pixel encoding a likelihood of a point on the object being a key point on the object; generating, by the second branch using the feature map and the heat map, a pose tensor including one or more parameters that represent a three-dimensional (3D) pose of the object in the frame; and determining a 3D motion of the object based on the heat map and the pose tensor.

[0141] Example 12 provides the one or more non-transitory computer-readable media of example 11, in which the video includes a sequence of frames, the frame is a first frame in the sequence, and the operations further include extracting a second image from a second frame in the sequence based on the heat map for the first frame; and generating, by the neural network using the second image, a second heat map and a second pose tensor, in which the three-dimensional motion of the object is determined further based on the second heat map and the second pose tensor.

[0142] Example 13 provides the one or more non-transitory computer-readable media of example 11 or 12, in which the operations further include segmenting, by a third branch in the neural network using the feature map, a part of the object from the object; and generating, by the third branch, one or more masks representing the segmented part, in which the 3D motion of the object is determined further based on the one or more masks.

[0143] Example 14 provides the one or more non-transitory computer-readable media of example 13, in which the operations further include constructing a 3D ground plane based on the one or more masks, the 3D ground plane representing a ground on which the 3D motion of the object is carried out.

[0144] Example 15 provides the one or more non-transitory computer-readable media of any one of examples 11-14, in which the heat map is a 3D tensor including a number of 2D matrix, a 2D matrix includes pixels arranged in rows and columns, and the number of 2D matrix is determined based on a number of key points on the object.

[0145] Example 16 provides the one or more non-transitory computer-readable media of any one of examples 11-15, in which the second branch includes a convolutional layer, a concatenate layer, and a regression layer.

[0146] Example 17 provides the one or more non-transitory computer-readable media of any one of examples 11-16, in which determining the 3D motion of the object includes determining positions of key points on the object in a 3D camera space based on the pose tensor, the key points including a root point and one or more other key points connected to the root point; converting the positions of the key points in the 3D camera space to positions of the key points in a 2D plane of the video by projecting the 3D camera space to the 2D plane based on a resolution of the video; generating a position parameter representing a motion of the root point in the 3D camera space based on the pose tensor and the positions of the key points in the 2D plane; and determining the 3D motion of the object based on the motion of the root point in the 3D camera space.

[0147] Example 18 provides an apparatus, including a computer processor for executing computer program instructions; and a non-transitory computer-readable memory storing computer program instructions executable by the computer processor to perform operations including extracting an image from a frame of a video based on detection of an object in the frame, the image capturing the object, generating, by a backbone in a neural network using the image, a feature map of the object, the neural network further including a first branch and a second branch that are coupled to the backbone, generating, by the first branch using the feature map, a heat map including one or more pixels, a pixel encoding a likelihood of a point on the object being a key point on the object, generating, by the second branch using the feature map and the heat map, a pose tensor including one or more  parameters that represent a three-dimensional (3D) pose of the object in the frame, and determining a 3D motion of the object based on the heat map and the pose tensor.

[0148] Example 19 provides the apparatus of example 18, in which the video includes a sequence of frames, the frame is a first frame in the sequence, and the operations further include extracting a second image from a second frame in the sequence based on the heat map for the first frame; and generating, by the neural network using the second image, a second heat map and a second pose tensor, in which the three-dimensional motion of the object is determined further based on the second heat map and the second pose tensor.

[0149] Example 20 provides the apparatus of example 19, in which determining the 3D motion of the object includes determining positions of key points on the object in a 3D camera space based on the pose tensor, the key points including a root point and one or more other key points connected to the root point; converting the positions of the key points in the 3D camera space to positions of the key points in a 2D plane of the video by projecting the 3D camera space to the 2D plane based on a resolution of the video; generating a position parameter representing a motion of the root point in the 3D camera space based on the pose tensor and the positions of the key points in the 2D plane; and determining the 3D motion of the object based on the motion of the root point in the 3D camera space.

[0150] The above description of illustrated implementations of the disclosure, including what is described in the Abstract, is not intended to be exhaustive or to limit the disclosure to the precise forms disclosed. While specific implementations of, and examples for, the disclosure are described herein for illustrative purposes, various equivalent modifications are possible within the scope of the disclosure, as those skilled in the relevant art will recognize. These modifications may be made to the disclosure in light of the above detailed description.

Claims

1.A computer-implemented method, comprising:extracting an image from a frame of a video based on detection of an object in the frame, the image capturing the object;generating, by a backbone in a neural network using the image, a feature map of the object, the neural network further comprising a first branch and a second branch that are coupled to the backbone;generating, by the first branch using the feature map, a heat map comprising one or more pixels, a pixel encoding a likelihood of a point on the object being a key point on the object;generating, by the second branch using the feature map and the heat map, a pose tensor comprising one or more parameters that represent a three-dimensional (3D) pose of the object in the frame; anddetermining a 3D motion of the object based on the heat map and the pose tensor.2.The computer-implemented method of claim 1, wherein the video includes a sequence of frames, the frame is a first frame in the sequence, and the computer-implemented method further comprises:extracting a second image from a second frame in the sequence based on the heat map for the first frame; andgenerating, by the neural network using the second image, a second heat map and a second pose tensor,wherein the 3D motion of the object is determined further based on the second heat map and the second pose tensor.3.The computer-implemented method of claim 1, further comprising:segmenting, by a third branch in the neural network using the feature map, a part of the object from the object; andgenerating, by the third branch, one or more masks representing the segmented part,wherein the 3D motion of the object is determined further based on the one or more masks.4.The computer-implemented method of claim 3, further comprising:constructing a 3D ground plane based on the one or more masks, the 3D ground plane representing a ground on which the 3D motion of the object is carried out.5.The computer-implemented method of claim 1, wherein the heat map is a 3D tensor comprising a number of 2D matrix, a 2D matrix comprises pixels arranged in rows and columns, and the number of 2D matrix is determined based on a number of key points on the object.6.The computer-implemented method of claim 1, wherein the second branch comprises a convolutional layer, a concatenate layer, and a regression layer.7.The computer-implemented method of claim 1, wherein determining the 3D motion of the object comprising:applying a first filter on key points extracted from the heat map to generate smoothed key points;applying a second filter on the one or more 3D pose parameters to generate one or more smoothed 3D pose parameters; anddetermining the 3D motion of the object based on the smoothed key points and the one or more smoothed 3D pose parameters.8.The computer-implemented method of claim 1, wherein determining the 3D motion of the object comprises:determining positions of key points on the object in a 3D camera space based on the pose tensor, the key points comprising a root point and one or more other key points connected to the root point;converting the positions of the key points in the 3D camera space to positions of the key points in a 2D plane of the video by projecting the 3D camera space to the 2D plane based on a resolution of the video;generating a position parameter representing a motion of the root point in the 3D camera space based on the pose tensor and the positions of the key points in the 2D plane; anddetermining the 3D motion of the object based on the motion of the root point in the 3D camera space.9.The computer-implemented method of claim 8, wherein determining the 3D motion of the object further comprises:optimizing the position parameter and the pose tensor based on an objective function; anddetermining the 3D motion of the object based on the optimized position parameter and the optimized pose tensor.10.The computer-implemented method of claim 1, further comprising:generating a 3D animation that illustrates the 3D motion of the object,wherein the video is a monocular video.11.One or more non-transitory computer-readable media storing instructions executable to perform operations, the operations comprising:extracting an image from a frame of a video based on detection of an object in the frame, the image capturing the object;generating, by a backbone in a neural network using the image, a feature map of the object, the neural network further comprising a first branch and a second branch that are coupled to the backbone;generating, by the first branch using the feature map, a heat map comprising one or more pixels, a pixel encoding a likelihood of a point on the object being a key point on the object;generating, by the second branch using the feature map and the heat map, a pose tensor comprising one or more parameters that represent a three-dimensional (3D) pose of the object in the frame; anddetermining a 3D motion of the object based on the heat map and the pose tensor.12.The one or more non-transitory computer-readable media of claim 11, wherein the video includes a sequence of frames, the frame is a first frame in the sequence, and the operations further comprise:extracting a second image from a second frame in the sequence based on the heat map for the first frame; andgenerating, by the neural network using the second image, a second heat map and a second pose tensor,wherein the 3D motion of the object is determined further based on the second heat map and the second pose tensor.13.The one or more non-transitory computer-readable media of claim 11, wherein the operations further comprise:segmenting, by a third branch in the neural network using the feature map, a part of the object from the object; andgenerating, by the third branch, one or more masks representing the segmented part,wherein the 3D motion of the object is determined further based on the one or more masks.14.The one or more non-transitory computer-readable media of claim 13, wherein the operations further comprise:constructing a 3D ground plane based on the one or more masks, the 3D ground plane representing a ground on which the 3D motion of the object is carried out.15.The one or more non-transitory computer-readable media of claim 11, wherein the heat map is a 3D tensor comprising a number of 2D matrix, a 2D matrix comprises pixels arranged in rows and columns, and the number of 2D matrix is determined based on a number of key points on the object.16.The one or more non-transitory computer-readable media of claim 11, wherein the second branch comprises a convolutional layer, a concatenate layer, and a regression layer.17.The one or more non-transitory computer-readable media of claim 11, wherein determining the 3D motion of the object comprises:determining positions of key points on the object in a 3D camera space based on the pose tensor, the key points comprising a root point and one or more other key points connected to the root point;converting the positions of the key points in the 3D camera space to positions of the key points in a 2D plane of the video by projecting the 3D camera space to the 2D plane based on a resolution of the video;generating a position parameter representing a motion of the root point in the 3D camera space based on the pose tensor and the positions of the key points in the 2D plane; anddetermining the 3D motion of the object based on the motion of the root point in the 3D camera space.18.An apparatus, comprising:a computer processor for executing computer program instructions; anda non-transitory computer-readable memory storing computer program instructions executable by the computer processor to perform operations comprising:extracting an image from a frame of a video based on detection of an object in the frame, the image capturing the object,generating, by a backbone in a neural network using the image, a feature map of the object, the neural network further comprising a first branch and a second branch that are coupled to the backbone,generating, by the first branch using the feature map, a heat map comprising one or more pixels, a pixel encoding a likelihood of a point on the object being a key point on the object,generating, by the second branch using the feature map and the heat map, a pose tensor comprising one or more parameters that represent a three-dimensional (3D) pose of the object in the frame, anddetermining a 3D motion of the object based on the heat map and the pose tensor.19.The apparatus of claim 18, wherein the video includes a sequence of frames, the frame is a first frame in the sequence, and the operations further comprise:extracting a second image from a second frame in the sequence based on the heat map for the first frame; andgenerating, by the neural network using the second image, a second heat map and a second pose tensor,wherein the 3D motion of the object is determined further based on the second heat map and the second pose tensor.20.The apparatus of claim 19, wherein determining the 3D motion of the object comprises:determining positions of key points on the object in a 3D camera space based on the pose tensor, the key points comprising a root point and one or more other key points connected to the root point;converting the positions of the key points in the 3D camera space to positions of the key points in a 2D plane of the video by projecting the 3D camera space to the 2D plane based on a resolution of the video;generating a position parameter representing a motion of the root point in the 3D camera space based on the pose tensor and the positions of the key points in the 2D plane; anddetermining the 3D motion of the object based on the motion of the root point in the 3D camera space.

Citation Information

Patent Citations

  • Human body three-dimensional joint estimation frame based on depth network and positioning method thereof

    CN109087329A

  • Real-time face detection and head pose estimation method based on multi-task learning

    CN112766186A

  • Three-dimensional voxel gesture attitude estimation method based on multi-task information complementation

    CN113095262A

  • Real-time multi-person body three-dimensional posture estimation and tracking method based on deep learning

    CN114066932A

  • Optimizations for dynamic object instance detection, segmentation, and structure mapping

    EP3493104A1