更好玩的是,由于它可以自动生成一个标准格式的3D模型文件 (.obj),你还可以用它来进一步进行动作绘制,制作各种奇奇怪怪的视频……
我挑了一张自己不太标致的半侧身照片,试着跑了下代码(后附教程),效果虽不完美,重建的3D模型有明显噪音,脚部处理的不太好,而且跟本人长得也不算太像……不过模型的还是很令人惊喜,而且用 Google Colab 生成模型只用了三分钟:
在计算机视觉技术的范畴里,对人体进行3D模型重建有好几种方向。
最经典的方法是采用多台相机,从多个角度拍摄对象的照片,以及采用手持的结构光扫描设备,进行全方位的扫描,再在专业的软件中进行拼贴重建。2014年史密森学会制作前美国总统奥巴马的3D肖像,就是用的这种方法:
如果用机器学习的思路,用参数模型回归能够比较准确地提取人体模型,但是往往只能提取出来“裸体”的模型,人体自有的外观,包括面部特征、服装、发型等等,都被舍弃掉了。
另一种方向是无模型学习,可以还原人体的表面细节,但是模型本身的还原度很低,而且对计算资源的依赖太大。
这篇 PIFuHD 论文的目标,是对单张照片上穿着衣服的人进行高细节的3D重建,分辨率足以识别手指、面部特征、衣服褶皱等详细的信息。
基于该团队之前开发的 PIFu(像素对齐隐式函数)算法,分成两个原理相同,但功能不同的模块:
第一个模块对输入图像进行下采样,进行粗糙推理,输出一个低分辨率的三维模型;第二个模块从输入图像读取更精确的表面细节,并且引入第一个模块的结果,(这也是这篇论文标题中 Multi-Level PIFu 的来源)。
结合两个 PIFu 模块的结果,PIFuHD 实现了其目标,从一张照片中得到了高清晰度、细节丰富的3D重建模型,并且对于内存等计算资源的依赖更少,还其它已知3D重建算法直接对高清输入图像重建出1024*1024分辨率的3D模型。以及,其它方法经常出现的“假象”,在这一新方法中也有效避免。论文作者很体贴地在 Google Colab(一个免费、在线、无需配置的 Python 开发环境)上提供了代码,任何人只要可以访问 Google 都可以进行测试。
在这里我们提供一个简单的教程,即使你不会写代码也可以轻松制作自己的3D模型:
首先访问论文的展示页面 https://shunsukesaito.github.io/PIFuHD/,点击"Demo"链接,进入 Google Colab;点击下图中这个按钮:Google Colab 是一个既可以写代码,又可以添加文字、图片和视频等各种注释内容的平台,不过我们关注代码块就好了。
每个代码块的左上角都会有一个运行的按钮,就像播放键一样。接下来你需要按从第一个到第四个代码块的运行按钮,跳过第五个代码块,选择第六个代码块,先不要按播放。
点击页面左边的文件夹,点击刷新,上传你的图片文件(最好是.png,实测.jpg等其他格式偶尔报错),然后把上传好的文件拖拽到 /pifuhd/sample_images 文件夹里
然后回到右边刚才选定的代码块,把你上传的输入图像的文件名写到下图中高亮位置:
然后,点击菜单栏的代码执行程序 (Runtime),选择“运行当前单元格以及其后的所有单元格”,或者用键盘快捷键输入/Ctrl+F10即可。
然后看着代码运行就好了。
一般重建3D模型的工作只用三五分钟。完成后你可以在左侧文件夹的 pifuhd/results/pifuhd_final/recon 路径里找到并下载生成的模型文件(.obj 格式) 和一张特征图(.png 格式,没什么用)。
你会发现程序仍然在跑余下的代码块,因为剩下的时间主要是在等渲染,程序会把输入图像和重建3D模型拼接到一起,生成一条可以下载的视频。
Colab 毕竟是一个免费的工具,图像处理的输入和输出尺寸也有限制。我自己测试后发现,在 Colab 上重建的模型,脸部细节和衣服还原真实程度比研究者自己做出来的差多了。
往期精彩文章推荐
长按关注
品玩官方公众号
科技创新者的每日必读