ECCV2020论文研读与代码实践|NormalGAN:单张RGB-D图像重建包含纹理的3D人体
1 算法流程
2 前视图矫正
3 后视图预测
4 训练细节
5 优点总结
6 代码实践
Project Page
paper
supplementary materials
1 算法流程
input
- 512*424 depth map without background
- 512*424 color map aligned to depth map and without background
- depth camera intrinsic matrix
output
- rectified front depth map with colors and RGB map from perspective to orthogonal projection
- predicted back depth map with colors and RGB map
- predicted human mesh
2 前视图矫正
深度图矫正
- 相机拍摄的深度图为透视投影的结果,因为视椎体的原因,拍摄的人体没有正前方的一半,因此先将RGBD图像通过相机内参矩阵转换为3D点云,然后通过正交投影,生成新的人体前视深度图和RGB图;
- 再通过UNet生成对抗网络生成透视投影丢失的一部分前视图点云,得到完整的前视图前正面人体的深度图和RGB图;
- 为了防止传统CNN深度去噪对几何细节的过平滑处理,以及复杂的纹理经常导致错误的几何细节,作者使用了基于normal map的鉴别器来进行深度图去噪,加强每个点的邻接关系,然后引导生成器生成高质量几何细节的前视图深度图。
RGB图矫正
- 使用UNet 去除的阴影信息:阴影信息对推断不可见纹理有很大的影响。为了去除阴影效果,我们从精细的深度图像中编码由spherical harmonics functions (球谐函数 SH bases)[31]计算的阴影信息,并将其与张量连接起来。
3 后视图预测
- 使用、联合 、分别预测深度图和彩色图。
- 通过normal map 引导生成看起来合理的后视图几何细节
- 通过ground truth color 引导生成看似可信的后视图颜色
4 训练细节
- 先单独训练4个生成器,以加快收敛
- 收敛后,再和4个判别器一起训练
5 优点总结
- 基于生成对抗网络,learning details from normal maps,可以对前视图降噪,且预测出包含细节的后视图
- 透视转正交投影对前视图修正,在前视图和后视图融合时能够得到更合理的边界,并且该方法可以延伸用在相关领域
- 对前视图的RGB图像进行shading remove,能够提高后视图texture map的预测质量
- 速度快:20FPS (Generating a 3D human model takes 50 ms on average using a RTX Titan.)
6 代码实践
代码可以跑通,我使用azure kinect采集了RGB-D图像,进行了相应测试,效果基本还算OK,论文中具体demo视频讲解与演示如下:
论文里面的一些思想还是很值得借鉴的。有问题欢迎一起讨论。如果您看了有收获,还请点个在看,分享给更多人,一起成长进步!