Closed Rookienovice closed 2 years ago
您好,ROMP中采用的弱透视投影相机,不需要求解translation,直接进行尺度变化和x-y平移就好。 BEV采用的透视相机,同时也估计了translation,存在npz文件中,cam_trans对应的就是
作者您好,我还是有点困惑,请问translation 是表示root点相对于相机坐标原点的平移吗?为什么弱透视相机下不用将root-relative pose平移到绝对位置,而直接进行尺度变化和x-y平移就好?
是的,translation 是表示root点相对于相机坐标原点的平移。
作者您好,我看了代码还是没有理解为什么弱透视投影不用计算translation,只通过尺度和平移就可以对齐到原图。(我理解的是SMPL输出的人体是根对齐的,不是空间中真实位置,应该要加上translation才能到真实位置,然后投影到图像中,不知道我理解的对不对),而透视相机是不是要加上translation,才能通过内参投影到平面。 为什么ROMP采用弱透视投影方案,而BEV中改用了透视投影,是有什么好处吗?
Hi 弱透视投影可以去参考一下相关学习资料。
BEV是想要在单目多人深度估计上进行优化,所以用透视投影更好一点。
谢谢作者的解答,我去学习学习。 还有作者,您在这里也估计了cam_trans,请问它的作用是什么?
就是人在相机空间的位移
作者您好,是不是SMPL输出的是root-relative mesh,要想得到真实的位置,都需要估计出cam_trans,而BEV计算方式是您论文中提出的算法,ROMP计算方式是pnp算法。这里的cam_trans作用是 verts += cam_trans,得出人在相机空间中的真实位置,不知道我理解的对不对。
@Rookienovice 是的,没错,是这样的。
谢谢作者的解答,请问这里设置 focal_length=443.4,是有什么依据吗?是任意假定的吗?那这样估计的出的cam_trans应该不准确吧?
@Rookienovice focal length的计算过程在这里 https://github.com/Arthur151/ROMP/blob/43a02af85f52d08da9cb065f3784314206056de9/romp/lib/config.py#L58 这里,我们是假设相机FOV = 60 degree 我们的task设定是,给定任意相机未标定的图片进行估计,相机内参是未知的。 因为BEV研究的问题是多人之间的相对深度关系,而不是真实世界的绝对空间深度。 为了简化问题,我们这里省略的估计相机精准内参的过程,也就是假设所有图片都是由一个FOV=60,无畸变的相机拍摄的。 但我们研究发现,这样的设定已经足够用来学习多人之间的相对深度关系了。
当然,如果可以在训练过程中使用精准的相机内参,可能会结果更好。但因为很难要求输入的图片是带相机内参的,所以,我们这里做出这样的设计。
感谢作者的解答!也就是说,使用假设的focal_length估计出的cam_trans,只能表示人体在空间中粗略的真实位置,但此时图像中所有人体相对深度已经可以被表示的很好了。那如果我只想估计单人在相机空间中的绝对位置,可不可以采用ROMP的方法,采用弱透视投影对齐2D pose用于训练root-relative mesh,然后根据estimate_translation的PNP算法,求出粗略的cam_trams,最终verts += cam_trans,获得人体在相机空间中粗略的绝对位置。
@Rookienovice 是的,没错。如果有相机内参,替换当前PnP解算过程的相机参数,用估计的3D pose和2Dpose,就可以获得真实相机空间的绝对坐标值。。
作者您好,我是新研究这个领域的,有个困惑想请教您一下,请问设置 root_align=True 后,得到的是root-relative mesh吧,然后经过SMPL映射矩阵得到的3D pose 也是root-relative 3d pose吗?弱透视投影应该是将绝对的 3D human pose 投影到图片中与2D pose对齐的吧,应该是要加上root position的坐标吧? 那是怎么得出相机空间中绝对的 root position的?