想象一下在未来,我们在远程通话的时候,通过全息投影可以让你感觉到说话的人就在你面前。而现在,一种基于计算机视觉的类似应用已经产生了。
在过去的十年里,许多计算机视觉研究方向的重要团部队在 3D 人脸重建以及人脸对齐方面取得了很多令人兴奋的进展。其中最主要的是将卷积神经网络作为一种人工神经网络应用于这方面。然而,由于用于映射的人脸 3D 模型的不完善,重建后的空间具有局限性,这就导致大部分人脸 3D 重建放方法的效果并不理想。
上图是 PRN 的结构,绿色的矩形表示残差块,蓝色的矩形表示转置卷积层
在最近的一篇论文中,Yao Feng 团队提出一种端到端的方法——位置映射地图网络 (PRN),该方法将稠密对齐和重建 3D 形状联合起来解决。在人脸 3D 对齐和重建方面,该方法在多个数据库上都远超之前的方法。
更详细地说,他们设计了一种 UV 位置映射(https://en.wikipedia.org/wiki/UV_mapping ),它是一种记录了所有面部点云三维坐标的二维图像,在每个 UV 多边形中都保留了语义信息。然后使用一种加权损失训练一个简单的编码 - 解码网络,这个网络从单张 2D 面部图像得到 UV 位置映射。
上图是该方法的部分结果,奇数行是人脸对齐结果 (仅显示 68 点),偶数行是 3d 重建结果
这篇论文的贡献主要在这些方面:
-
首次使用端到端的方式解决了人脸对齐和三维人脸重建的问题,该方法不受低维空间的限制。
-
为了直接得到 3D 人脸结构和稠密对齐,我们开发了一种名为 UV 位置面的表示方法,它记录了 3D 人脸的位置信息,并提供与 UV 空间上每个点所对应的语义信息。
-
在训练阶段,我们提出了一种权重 mask,它为位置图上每个点分配不同的权重,并计算权重损失。实验表明,这种设计有助于提升网络的性能。
-
最后,我们提供了一种轻量级的框架能够达到 100fps,这个框架可以直接从单张 2D 人脸图像获得人脸的 3D 重建结果。
-
在 AFLW2000-3D 数据库和 Florence 数据库上,相比于目前最好的方法,该方法在 3D 人脸重建和稠密面部对齐上都相对获得了 25% 提升。
该方法的代码使用 Tensorflow 的 python 接口完成。该项目的官方网址为:
https://github.com/YadiraF/PRNet
。如果你想测试一下人脸重建的效果,你需要安装以下环境:
-
Python 2.7(包括 numpy,skimage,scipy 库)
-
Tensorflow 版本需大于等于 1.4
-
dlib(用于人脸检测,如果能够提供人脸的边界框则不需要安装该扩展)
-
opencv2(用于显示测试结果)
训练好的模型可以在这里下载:百度网盘(
https://pan.baidu.com/s/10vuV7m00OHLcsihaC-Adsw
),谷歌网盘(
https://drive.google.com/file/d/1UoE-XuW1SDLUjZmJPkIZ1MLxvQFgmTFH/view?usp=sharing
),目前这个代码仍在开发过程中,该团队将会不断完善并在未来提供更多灵活的功能。