## 3 Methods and Materials
### Joint Topology Detection Backbone Network  
One of the industry standards for human posture estimation is _COCO_, which consists of 17 joints tracked on the human body. However, these points are not enough for a certain posture estimation, as they lack scale and orientation information for the limbs that are vital for applications trying to evaluate fitness. For this reason, the inclusion of additional trackable keypoints is crucial for detecting bad human posture and estimating pose. Our solution involves a total of 33 human body keypoints as a superset for the COCO skeleton topology, allowing for more accurate posture detection. All subjects have the same skeleton topology, and suitable bone lengths are computed per subject (by automatically scaling a reference skeleton based on the person's known height). For pose estimation, a two-stage detector-tracker pipeline was used, where the detector locates the region-of-interest (RoI) for the given image, while the trackers predict the joints within the given RoI. In our model, we establish a series of IMU track targets, each of which is associated to a bone and has the IMU's rotational and translational offsets. IMU orientation readings and derived acceleration measurements are used to express the rotational transform between each IMU reference frame and the global coordinates. The estimation and tracking of joint location estimation, depicted in Figure 1, is performed by training the network on top of the combination of BlazePose and BlazeFace models [47]. Reusing the BlazeFace model allowed us to have a baseline that could be used to track the orientation and position of the human, whereas the joint position baseline was based on that of the BlazePose model. Our network further augments these technologies by substituting missing angles from the original skeletons calculated from the depth data (we used three RealSense depth cameras at different angles). As some of the joints that the network predicts are redundant, e.g., fingers or toes, the reduced joint input is passed into the neural network as an input. However, to bind human joints to a skeleton, their position in 3D space is insufficient. This task requires calculating the joint orientation based on its parent joints, with the complexity increasing with each additional joint, thus requiring the development of a dedicated deep learning-based inverse kinematic model. To obtain real-time performance, each network component must be suitable for real-time applications. To achieve this, the assertion is made that the best recognizable feature of the human torso direction is its face. This assertion allows the solution to simplify pose estimation by using a face detection network capable of real-time performance. Based on the link between the human torso and human head, we can extrapolate the radius of the human body, which enables faster detection of key features such as body center rotation and scale, which are required to estimate complicated poses. The architecture of the backbone network adapted for our system is given in Figure 2. It takes a 256 \(\times\) 256 RGB image as input and outputs 33 tracked joint 3D locations along with their visibility. Unlike other methods, which use computationally prohibitive heatmap predictions, this backbone only uses supervised learning combined with heatmap/offset prediction during the training process. The acquired keypoints can then be processed and  
Figure 1: Pose estimation pipeline. used in tasks dependent on their location, for example, detecting the performed action or evaluating its deviation from the baseline. Using joints, we extrapolate other required features for posture evaluation, these include: the top and base of the spine; top and base of the neck, and combine them into the final skeleton.