Skip to content

Commit 3737cf6

Browse files
committedApr 30, 2020
add demo image & fix typo
1 parent 0c18902 commit 3737cf6

File tree

4 files changed

+43
-2
lines changed

4 files changed

+43
-2
lines changed
 

‎README.md

+42-1
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,40 @@
11
# Minimal-IK
22

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.
44

55
Briefly, given joint coordinates (and optional other keypoints), the solver gives the corresponding model parameters.
66

77
Levenberg–Marquardt algorithm is used, the energy is simply the L2 distance between the keypoints.
88

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+
938
## Usage
1039

1140
### Models
@@ -23,3 +52,15 @@ Levenberg–Marquardt algorithm is used, the energy is simply the L2 distance be
2352
### Dependencies
2453

2554
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.

‎body.png

161 KB
Loading

‎hand.png

63 KB
Loading

‎models.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ def __init__(self, model_path, armature, scale=1):
1414
model_path : str
1515
Path to the model to be loaded.
1616
armature : object
17-
An armature class from `aramatures.py`.
17+
An armature class from `armatures.py`.
1818
scale : int, optional
1919
Scale of the model to make the solving easier, by default 1
2020
"""

0 commit comments

Comments
 (0)
Please sign in to comment.