元经纪 - 元宇宙与人工智能领域相关产品与服务一站式采购平台

400-6166692

PRNet:基于python的3D 面部重建和密集对齐方法

分类:开源 时间:2023-04-11 07:11 浏览:1026
概述
内容

概述

使用位置图回归网络的联合 3D 面部重建和密集对齐 。

这是PRN的官方python实现。

PRN 是一种以端到端方式联合回归密集对齐和 3D 面部形状的方法。更多关于Multi-PIE和300VW的例子可以在YouTube上看到。

主要特点是:

  • 端到端,我们的方法可以直接从单个图像中回归3D面部结构和密集对齐绕过3DMM拟合。

  • 多任务通过回归位置图,可以获得3D几何形状以及语义。因此,我们可以毫不费力地完成密集对齐、单目 3D 面部重建、姿势估计等任务。

  • 比实时更快该方法可以以超过 100fps(使用 GTX 1080)的速度运行以回归位置图。

  • 强大的在不受约束的条件下对面部图像进行了测试。我们的方法对姿势、照明和遮挡都很稳健。

开始

先决条件

  • Python 2.7 (numpy, skimage, scipy)

  • TensorFlow >= 1.4

    自选:

  • [hidecontent type="logged" desc="隐藏内容:登录后可查看"]

    • DLIB(用于检测人脸。如果可以提供边界框信息,则不必安装。)

    • OpenCV2(用于显示结果)

    强烈建议使用 GPU。GPU(GeForce GTX 0)的运行时间为~01.1080秒,CPU(Intel(R)至强(R)CPU E0-2 v5 @ 2640.4GHz)的运行时间为~2.40秒。

    用法

    1. 克隆存储库
    git clone https://github.com/YadiraF/PRNet
    cd PRNet
    1. 百度驱动器GoogleDrive上下载PRN训练模型,并将其放入Data/net-data

    2. 运行测试代码。(测试 AFLW2000 图像)

      python run_basics.py #Can run only with python and tensorflow

    3. 使用您自己的映像运行

      python demo.py -i <inputDir> -o <outputDir> --isDlib True

      运行以获取更多详细信息。python demo.py --help

    4. 对于纹理编辑应用程序:

      python demo_texture.py -i image_path_1 -r image_path_2 -o output_path

      运行以获取更多详细信息。python demo_texture.py --help

    训练

    本文的核心思想是:

    使用位置图来表示面部几何和对齐信息,然后通过编码器-解码器网络进行学习。

    因此,训练步骤:

    1. 生成位置图地面实况。

      生成300W_LP数据集位置图的示例可以在generate_posmap_300WLP中看到

    2. 一个编码器-解码器网络,用于学习从RGB图像到位置图的映射。

      重量掩码可以在文件夹中找到Data/uv-data

    您可以自定义的内容:

    1. 位置贴图的 UV 空间。

      您可以更改参数化方法,或更改 UV 空间的分辨率。

    2. 编码器-解码器网络的支柱

      此演示使用残差块。VGG,移动网络也可以。

    3. 重量面罩

      您可以更改权重以更多地关注项目需要更多部分。

    4. 训练数据

      如果您扫描过3D面部,最好使用自己的数据训练PRN。在此之前,您可能需要使用 ICP 来对齐您的面网格。

    FQA

    1. 如何加速

      A. 网络推理部分

      您可以训练较小的网络或使用较小的位置映射作为输入。

      B. 渲染部分

      您可以参考 C++ 版本

      C.其他部分,如检测人脸,书写对象

      最好的方法是用 C++ 重写它们。

    2. 如何提高精度

      a. 几何精度。

      由于训练数据的限制,本演示中重建人脸的精度几乎没有细节。您可以使用自己的详细数据训练网络,也可以进行后处理(如阴影形状)以添加细节。

      b. 纹理精度。

      我刚刚添加了一个选项来指定纹理大小。当纹理大小>原始图像中的面部大小,并使用纹理映射渲染新的面部图像时,将几乎没有重新采样错误。

    [/hidecontent]

     
微信客服
返回顶部