1
1
# Minimal-IK
2
2
3
- A simple and naive inverse kinematics solver for MANO hand model, SMPL body model, and SMPLH body+hand model.
3
+ A simple and naive inverse kinematics solver for MANO hand model, SMPL body model, and SMPL-H body+hand model.
4
4
5
5
Briefly, given joint coordinates (and optional other keypoints), the solver gives the corresponding model parameters.
6
6
7
7
Levenberg–Marquardt algorithm is used, the energy is simply the L2 distance between the keypoints.
8
8
9
+ ## Results
10
+
11
+ ### Qualitative
12
+
13
+ This is the example result on the SMPL body model.
14
+ The left is the ground truth, and the right one is the estimation.
15
+ You can notice the minor difference between the right hands.
16
+
17
+ ![ ] ( body.png )
18
+
19
+ Below is the example result of the MANO hand model.
20
+ Left for ground truth, and right for estimation.
21
+
22
+ ![ ] ( hand.png )
23
+
24
+ ### Quantitative
25
+
26
+ We test this approach on the [ AMASS dataset] ( https://amass.is.tue.mpg.de/ ) .
27
+
28
+ | | Mean Joint Error (mm) | Mean Vertex Error (mm) |
29
+ | ---------- | --------------------- | ---------------------- |
30
+ | SMPL (body) | 8.717 | 14.136 |
31
+
32
+
33
+ In the test on AMASS, we assume that the global rotation is known.
34
+ This is because this optimization based approach cannot handle large global rotations.
35
+
36
+ (We'll update the hand results soon.)
37
+
9
38
## Usage
10
39
11
40
### Models
@@ -23,3 +52,15 @@ Levenberg–Marquardt algorithm is used, the energy is simply the L2 distance be
23
52
### Dependencies
24
53
25
54
Every required package is available via ` pip install ` .
55
+
56
+ ### Limitations
57
+
58
+ Again, we note that this approach cannot handle large global rotations (R0) due to the high non-convexity.
59
+ For example, when the subject keeps the T pose but faces backwards.
60
+
61
+ In such cases, a good initialization, at least for R0, is necessary.
62
+
63
+ ## Credits
64
+
65
+ * @yxyyyxxyy for the quantitative test on the AMASS dataset.
66
+ * @zjykljf for the starter code of the LM solver.
0 commit comments