Mathux/TEMOS

About non-rescaled version

Closed this issue · 5 comments

Hello, I would like to use the non-scaled version suggested in your paper.

I'm reading the code and using it, but I wanna ask if it's right to do it the way below.

  1. in temos/model/metrics/compute.py,
    force_in_meter: bool = True,

    I changed the parameter force_in_meter to False
  2. in /temos/transforms/rots2joints/smplh.py,
    if jointstype == "mmm":
    from temos.info.joints import smplh_to_mmm_scaling_factor
    data *= smplh_to_mmm_scaling_factor

    I removed these codes when I use smpl data

Is this the correct way to proceed non-scaled version with smpl data?

Thanks!

Hello,

The "non-scaled version" suggested in the paper corresponds to:

  • Joints regressed by a smpl layer, with the "mmm indexing" (which correspond roughly to MMM skeletons)
  • Without the rescaling (multiplying by smplh_to_mmm_scaling_factor). (with this option, it rescale the average SMPL body to MMM: it actually also convert from meters to millimeters).
  • With the change of axis (X Y Z => Y Z X), and with the right/left swap I did for MMM. I keep doing this, in order to use the same code for computing metrics (as the metric computation code depends on the axis order, and right/left swap does not matter [as it is the same transformation for GT]).
  1. Yes you are right about this, as by default I am doing rescaling to meter in the metrics for MMM. Without the rescaling, it is already in meters, so we need to disable this.

  2. In theory you could remove this bloc of lines and it will work fine. But actually, you only need to choose jointstype=mmmns which means (mmm-non-scaled). If you look at the code, it will not do the scaling:

    if jointstype == "mmm":

    and it will still do the rest:
    elif jointstype in ["mmm", "mmmns"]:

Thank you for the reply.

I saw your comment before you edited it, and in fact you are right. I updated the code accordingly to allow the usage of "mmmns" in rifke.py (so indirectly in the metric calculation).

if jointstype not in ["mmm", "mmmns"]:

There might be some mistakes like that in the code, as I did not carefully re-tested this setting during the preparation of the code release.

I may put more explanation in the README.md at some point.

Thanks for pointing this.

We also need to edit the below codes.

assert jointstype == "mmm"

assert jointstype == "mmm"

Yes true, I just did it thanks 👍