deep-motion-editing icon indicating copy to clipboard operation
deep-motion-editing copied to clipboard

代码与原论文有所出入

Open zzzark opened this issue 1 year ago • 3 comments

@PeizhuoLi 您好!关于end-effectors的loss,源代码实现方式为: https://github.com/DeepMotionEditing/deep-motion-editing/blob/master/retargeting/models/architecture.py#L116 ee = get_ee(pos, self.dataset.joint_topologies[i], self.dataset.ee_ids[i], velo=self.args.ee_velo, from_root=self.args.ee_from_root) height = self.models[i].height[offset_idx] height = height.reshape((height.shape[0], 1, height.shape[1], 1)) ee /= height 其中height为 “左脚---左手” 这一条路径长度。 然而,论文中关于 End-Effectors Loss 部分如下: hAe, hBe are the lengths of the kinematic chains from the root to the end-effector e, in each of the skeletons SA and SB. 描述的是 “根节点---端点” 的路径,与代码有出入,不知我的理解是否有误,还望解答,感谢!

zzzark avatar Aug 05 '22 13:08 zzzark

你好,height应该是“左脚--头”这一路径的长度,即身高的定义。你所提到论文中这句话对应的实现是在get_ee函数中,代码是与论文中说法一致的。

这里height只是将其大小根据角色身高归一化,以免不同高度的角色会有不同大小量度的ee_loss从而影响训练。

希望有所帮助!

PeizhuoLi avatar Aug 23 '22 13:08 PeizhuoLi

你好,height应该是“左脚--头”这一路径的长度,即身高的定义。你所提到论文中这句话对应的实现是在get_ee函数中,代码是与论文中说法一致的。

这里height只是将其大小根据角色身高归一化,以免不同高度的角色会有不同大小量度的ee_loss从而影响训练。

希望有所帮助!

@PeizhuoLi 您好,非常感谢您耐心的回复! height 是“左脚--头”这一路径的长度,而不是“左脚---左手”,这是我的疏忽。

关于 get_ee 函数,我个人的理解如下: Snipaste_2022-09-07_16-34-42

也就是 get_ee 函数里面并没有实现各个 end-effectors 除以 “根节点--左手”、“根节点--右手”、“根节点--左脚”、“根节点--右脚”、“根节点--头部”,只是返回了各个 end-effectors 在世界坐标系中的速度。

因此,符合论文的伪代码应该如下:

Snipaste_2022-09-07_16-56-50

如果以上有任何错误的地方,还请指出,感谢~

zzzark avatar Sep 07 '22 08:09 zzzark

您好,抱歉一开始没理解具体的问题。您提到的伪代码是正确的写法。论文中提到的hAe/hBe主要是为了一些特殊情况(如高度非对称,图12)设计的。在release的版本中的确没有包含使用hAe和hBe进行normalize的代码,而是简化的使用高度进行normalize。只使用高度进行normalize的好处是可以让减少模型对lambda ee的敏感度。希望能解决疑惑。

PeizhuoLi avatar Sep 10 '22 06:09 PeizhuoLi