VisageFuture 智颜未来:AI + 赝复产业
主要业务是:用 AI 技术对残缺的人脸进行建模和修补,然后使用 3D 打印技术打印人面部的假体。

这个项目是我在 港科广 参加 红鸟挑战营 时用三天时间完成的。由于本人没有计算机视觉方面的经验,所以技术部分大多是对现有技术的堆砌。

VisageFuture App UI Design
VisageFuture App UI Design

Visage Future Technical Presentation
Visage Future Technical Presentation

2D 面部修补 - Stable Diffusion + ControlNet

我们使用 Stable Diffusion 对 2D 的图像输入进行修复,使患者的 2D 面部形象正常。

主要技术点:

  • Inpaint 覆盖缺陷部分
  • ControlNet 使用 OpenPose 对面部五官准确定位
  • 少量提示词
实现细节待后续补充
Nose Restoration Preview
Nose Restoration Preview
Stable Diffusion for Restoration
Stable Diffusion for Restoration

基于 2D 图像的 3D 重建 - DECA

DECA 是德国马普所提出的一个基于 2D 图像重建 3D 头部的模型。他还具备表情的迁移功能(可用于换脸)。

3D Head Reconstruction from 2D Image
3D Head Reconstruction from 2D Image

由于 DECA 是 2021 年发表的,官方公布的 Demo 配置存在一些问题,在部署时踩了一些坑,在这里总结一下。

基础环境

  • Windows 11 x64 (需要安装好最新的 Nvidia 驱动以及 CUDA,实测 CUDA 12 可用)
  • WSL 2 (Debian / Ubuntu 应该都可)
  • Miniconda (在 WSL 2 中安装)

环境配置

  1. 在 Windows 上安装驱动和 WSL 比较简单,请参考微软文档。
  2. 安装 Conda。请参考 Miniconda — conda documentation 根据 Linux 内的 Python 版本决定下载哪个安装包。下载后直接运行即可。
  3. 拉取 DECA 仓库到本地。

    git clone https://github.com/yfeng95/DECA.git
  4. 创建虚拟环境

    conda create -n deca python=3.8.10
    conda install pytorch==1.8.0 torchvision==0.9.0 torchaudio==0.8.0 cudatoolkit=11.1 -c pytorch -c conda-forge
    conda install -c fvcore -c iopath -c conda-forge fvcore iopath
    conda install pytorch3d -c pytorch3d
  5. 继续使用 pip 安装剩余的依赖
    创建一个依赖列表,例如 alter_requirements.txt
    打开该文件,写入:

    numpy==1.23.0
    scipy
    chumpy
    scikit-image
    opencv-python
    scikit-image
    PyYAML
    face-alignment==1.3.4
    yacs
    kornia==0.5.0
    ninja

    然后使用 pip 安装所有依赖:

    pip install -r alter_requirements.txt
  6. 下载模型文件。仓库提供了脚本用于下载并安装模型文件,但是需要注册。请根据脚本的提示到指定网站注册。

    bash fetch_data.sh
  7. 测试安装情况。

    python demos/demo_reconstruct.py -i TestSamples/examples --saveDepth True --saveObj True --rasterizer_type=pytorch3d

    如果运行完毕中没有错误,并且在提示的输出文件夹中有运行的结果(深度信息图片、.obj 3D 模型)即为安装成功。

模型使用

由于我对计算机视觉领域并不熟悉,因此就仅对 DECA 提供的 Demo 脚本进行讲解。

主要的功能有两个:头部重建和表情迁移。

具体的文档可以在 yfeng95/DECA: DECA: Detailed Expression Capture and Animation (SIGGRAPH 2021) (github.com) 找到。

头部重建的脚本为:

python demos/demo_reconstruct.py --help

请根据 --help 打印出的帮助信息调整参数,获得需要的效果。

表情迁移的脚本为:

python demos/demo_transfer.py

模型生成的 .obj 文件,可以下载 MeshLab 进行查看和编辑。也可以使用微软在 Windows 商店中提供的 3D Builder 查看。

其他

为了将 OBJ 模型放到 PPT 中展示,我探索了如何将其转换为 GIF 图。

方法是用 3D Builder 打开 OBJ,选择另存为 3MF (一种 3D 打印格式)。然后再使用 Windows 内置的画图 3D 打开,继续选择另存为,此时会出现”视频“选项,选择视频再选择 GIF 格式即可。

另外画图 3D 中可以设置 GIF 中展示模型的角度和动画,非常方便。


感谢三位队友宝贵的意见和建议!

本文章中采用的所有图片均来自公开报道资料,若利益相关人需要撤下,欢迎随时联系。