File size: 2,717 Bytes
97e3689
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
<h2 align="center">Build Machine Learning Model</h2>

Brief overview about the methodology of building models for exercise pose detection.
To go in depth on each exercise, click the link below:

-   [Bicep Curl](./bicep_model/README.md)
-   [Plank](./plank_model/README.md)
-   [Basic Squat](./squat_model/README.md)
-   [Lunge](./lunge_model/README.md)

### 1. Simple error detection

For some simple errors (for example, the feet placement error in squat), the detection method is either measuring the distance/angle between different joints during the exercise with the coordinate outputs from MediaPipe Pose.

-   **_Distance Calculation_**
    Assume there are 2 points with the following coordinates: Point 1 (x1,y1) and Point 2 (x2,y2), below is the formula to calculate the distance between 2 points.

    ```
    distance= √((x1-x2)^2 +(y1-y2) ^2 )
    ```

-   **_Angle Calculation_**
    Assume there are 3 points with the following coordinates: Point 1 (x1,y1), Point 2 (x2,y2) and Point 3 (x3,y3), below is the formula to calculate the angle created by 3 points.
    ```
    angle_in_radian =arctan2⁡(y3-y2,x3-x2) -arctan2(y1-y2,x1-x2)
    angle_in_degree=(angle_in_rad \* 180)/Π
    ```

### 2. Model Training for Error Detection

#### 1. Pick important landmarks

For each exercise, there will be different poses/body’s position, therefore it is essential to identify which parts (shoulder, hip, …) of a body are contribute to the exercise. The important landmarks identified for each exercise are utilized to extract body part’s position while exercising using MediaPipe.

#### 2. Data Processing

 <p align="center"><img src="../images/data_processing.png" alt="Logo" width="70%" style="background-color:#f5f5f5"></p>

#### 3. Model training

There are 2 methods used in this thesis for model training. For each exercise, the models trained for each method will be compared and the best model will be chosen.

-   Classification with Scikit-learn. (Decision Tree/Random Forest (RF), K-Nearest Neighbors (KNN), C-Support Vector (SVC), Logistic Regression classifier (LR) and Stochastic Gradient Descent classifier (SGDC)).
-   Building a Neural Network for classification with Keras.

### 3. Evaluation results of all models

1. Bicep Curl - _lean back error_
 <p align="center"><img src="../images/bicep_curl_eval_3.png" alt="Logo" width="70%"></p>

2. Plank - _all errors_
 <p align="center"><img src="../images/plank_eval_3.png" alt="Logo" width="70%"></p>

3. Basic Squat - _stage_
 <p align="center"><img src="../images/squat_eval_3.png" alt="Logo" width="70%"></p>

4. Lunge - _knee over toe error_
 <p align="center"><img src="../images/lunge_eval_3.png" alt="Logo" width="70%"></p>