FrankMocap 是港中文联合 Facebook AI 研究院提出的3D 人体姿态和形状估计算法。
不仅仅是估计人体的运动姿态,甚至连身体的形状,手部的动作都可以一起计算出来。
算法很强大,能够从单目视频同时估计出 3D 人体和手部运动,在一块 GeForce RTX 2080 GPU 上能够达到 9.5 FPS。
缺点就是,速度有点慢,计算量较大,达到实时性有一定难度。
不过随着硬件的快速发展,这都不是问题,「老黄刀法」很给力。
FrankMocap 算法就在这几天,刚刚开源,有 Python 和深度学习基础的朋友,不容错过。
项目地址:
https://github.com/facebookresearch/frankmocap
算法使用 SMPL-X 人体模型。
给定一张彩色图片,通过两个网络模块分别预测手部姿态和人体姿态。
然后再通过整合模块将手和身体组合在一起,得到最终的3D全身模型,整个流程如下图所示:
在具体的各个模块的实现,那就涉及具体的数学公式了。
本文就不多做扩展了,感兴趣的小伙伴,可以直接看论文。
论文地址:
https://arxiv.org/pdf/2008.08324.pdf
论文对每个模块的公式,记录的很详细。
FrankMocap 算法怎么玩?
这里有详细的安装教程:
https://github.com/facebookresearch/frankmocap/blob/master/docs/INSTALL.md
除了常规的第三方库,还需要 Detectron2 用于手部动作捕捉,以及 Pytorch3D 做姿态渲染。
推荐使用 Anaconda 配置,环境配置完毕,就可以开始体验了。
使用方法很简单:
如果只做身体姿态捕捉,可以运行如下命令:
# using a machine with a monitor to show output on screen
python -m demo.demo_bodymocap --input_path ./sample_data/han_short.mp4 --out_dir ./mocap_output
# screenless mode (e.g., a remote server)
xvfb-run -a python -m demo.demo_bodymocap --input_path ./sample_data/han_short.mp4 --out_dir ./mocap_output
运行效果:
如果只做手部姿态捕捉,可以运行如下命令:
# using a machine with a monitor to show outputs on screen
python -m demo.demo_handmocap --input_path ./sample_data/han_hand_short.mp4 --out_dir ./mocap_output
# screenless mode (e.g., a remote server)
xvfb-run -a python -m demo.demo_handmocap --input_path ./sample_data/han_hand_short.mp4 --out_dir ./mocap_output
运行效果:
全身的姿态估计,使用如下指令:
# using a machine with a monitor to show outputs on screen
python -m demo.demo_frankmocap --input_path ./sample_data/han_short.mp4 --out_dir ./mocap_output
# screenless mode (e.g., a remote server)
python -m demo.demo_frankmocap --input_path ./sample_data/han_short.mp4 --out_dir ./mocap_output
运行效果: