ROMP介绍
ROMP同时估计了3D人体网格和相机参数,
从3D人体网格,我们可以回归出3D pose,也就是三维骨架,然后利用估计的相机参数,将三维骨架投影回图片中,就可以获得2D姿态了。
ROMP就是要恢复图片中人体的大部分信息,可以说2D姿态是ROMP的副产物。
问答1:
我这里用一样的配置文件,在1070Ti上都能跑到24FPS,你看demo就可以看出来。
请check几件事情,可能限制了速度:
你的摄像头是不是支持在你的运行环境中采集超过20帧每秒,因为大多数一般的摄像头都不支持高帧率采集的。
你的软硬件配置,包括一些用于深度学习计算加速的库有没有安装,例如MKL等。
可能在不同的硬件系统下三维渲染速度会有差异,你可以去掉可视化的部分看一下模型出结果的部分的速度。因为比较FPS的时候是不包括可视化的,因为确实不同设备对可视化的支持程度不一样,而且这部分对速度影响挺大的。
问答2:
对于漏检,可以考虑适当降低lib/config.py中的centermap_conf_thresh, 比如降到0.1.
我这里使用HigherHRNet-32作为预训练模型,用其他2D pose训好的mobilenet开始也可以,但因为ROMP的图片处理方式不太一样,所以也要训一段时间,但应该不会陷入不收敛的情况。
还有一种简洁高效的思路,就是模型蒸馏,直接蒸大模型的输出就好了,我试过蒸小模型,很有效,很快就能训好。
有这方面的问题,可以及时问我,我后面也想蒸一个可以cpu上实时跑的模型用。
关于偏移的问题,只是配置的问题,训练的时候设置的smpl_mesh_root_align=True,测试的时候也要这样设置,就好了。
可能还是lr=0.00005, bs=64比较好训,batch size也不是越大越好的,训练也需要一定的随机性才能跳出局部极值。
问答3
result_parser是将模型输出的Center heatmap 和 parameter map转化成多人mesh结果,就是一个后处理过程。
问答4
单目深度的模糊性在半身的时候会更加明显,导致深度估计的不稳定,可以强化translation的smooth coefficient,来增强稳定性,强制稳定。比如,{‘cam’: OneEuroFilter(3., .0)…}
问答5
- The “SMPL param gts” come from Human3.6M. MPI-INF-3DHP doesn’t have the SMPL parameters provided.
- The evaluation protocol 1 (Tab. 1) uses the entire 3DPW dataset.
- ROMP takes the entire image are input (not the cropped image patches). We don’t need any gts during inference.