无论它被你以何种方式唤醒,你只是释放了已有的想象力 — David 9
从一张普通的2D图片建立一个活生生的3D人物运动模型,或许是曾经神笔马良擅长的事。现在,在AR的人物动画3D重建领域似乎也不足为奇:
华盛顿大学与Facebook的研究人员已经公布了他们的这套图像人物“唤醒”方法。注意:这套方法仅限于帮助“人物”走出屏幕,不适用于动物或交通工具等等。
当然,甚至是毕加索的四维抽象人物也是适用的:
背后的原理这里David 9带大家理一下,首先总体框架如下:
论文核心贡献集中在上图的中间红色区域,所以简单起见我们可以先看一头一尾,
头部工作主要是把一张普通2D图片中的人物检测出来:
检测出来做两件事,一是用Mask R-CNN把人物扣取出来,二是用卷积姿势预测器(Convolutional Pose Machines)把姿势(2D pose)预测出来。
尾部工作,是对最后拿到的骨骼蒙皮(Rigged mesh)半成品做后期处理,主要也是两件事,一,把之前扣取的背景图片补齐,二,为骨骼蒙皮加上纹理和动画效果:
关键的难点在于中间部分,如何拿到人物的2D pose后,重建一个真实可用的3D骨骼蒙皮(Rigged mesh)?看看文章提出的方法:
首先我们可以用现成的SMPL模型在刚才的2D pose姿势上构建一个初步的骨骼蒙皮。注意,SMPL骨骼蒙皮只是赤裸的、根据其他数据经验得到的,和2D输入图片的场景大不相同。但是SMPL模型支持maya、unity等常用3D软件,支持python,并且对蒙皮皱褶等处理较好:
有了SMPL模型后,文章创新地先把这个SMPL模型降维成两个2D图map(Normal Map和Skinning Map)其中1. 找到符合原始2D图片的深度图(在深度z轴上重建,Normal Map),2. 找到符合原始人物皮肤的蒙皮(Skinning Map),每个skinning区域的顶点可以看做一个分组。
再把这两个SMPL得到的2D映射图变形(warp)对齐(align)到真实扣取的2D人物。值得强调的是所做的变形都是先在2D空间上进行的(而不是在3D蒙皮上直接修改并变形)
但是,2D上的变形终究要归结到3D的变形。
所以还有个关键点是找到SMPL模型与真实3D模型的轮廓映射。
而3D蒙皮是以至少3个顶点为一个平面,大概这样的:
这样,一个2D的像素点就可以对应许多个3D平面的顶点,如论文中所说:
要找到一个这样的较好的映射关系,首先要保证对应于原始2D图像不失真(3D对应顶点和2D对应像素点距离接近),其次要保证3D模型的光滑(较少的跳跃点):
其中D就是距离函数,T即加入的保证“光滑”的约束。
好了,到了这里知道了如何把2D的变形映射到3D蒙皮的变形,也知道要利用3D蒙皮降维到2D进行warp,最后的工作就是重复这个操作优化3D蒙皮。在2D上做对齐变形还有许多小技巧,包括防止影响人体肢体运动(闭塞锁)而做的肢体label等等David在这里就不一一赘述了:
参考文献:
- Photo Wake-Up: 3D Character Animation from a Single Photo
- http://smpl.is.tue.mpg.de/
- 简书:SMPL: A Skinned Multi-Person Linear Model
- Keep it SMPL: Automatic Estimation of 3D Human Pose and Shape from a Single Image
- https://www.youtube.com/watch?v=G63goXc5MyU
- http://cinemagraphs.com/
本文采用署名 – 非商业性使用 – 禁止演绎 3.0 中国大陆许可协议进行许可。著作权属于“David 9的博客”原创,如需转载,请联系微信: david9ml,或邮箱:yanchao727@gmail.com
或直接扫二维码:
David 9
Latest posts by David 9 (see all)
- 修订特征已经变得切实可行, “特征矫正工程”是否会成为潮流? - 27 3 月, 2024
- 量子计算系列#2 : 量子机器学习与量子深度学习补充资料,QML,QeML,QaML - 29 2 月, 2024
- “现象意识”#2:用白盒的视角研究意识和大脑,会是什么景象?微意识,主体感,超心智,意识中层理论 - 16 2 月, 2024
好厉害