当前位置: 欣欣网 > 码农

InstantMesh:单一图像构建三维世界模型,腾讯最新开源,训练代码也公开了

2024-05-18码农

项目简介

InstantMesh 是一个高效的三维网格生成框架,能够从单张图片生成三维模型。该项目基于 LRM/Instant3D 架构,支持大范围稀疏视图重建。它提供了几种不同的模型变体,并支持通过命令行或 Gradio 演示生成三维网格。此外,InstantMesh 提供了模型训练代码,使得研究者可以进一步开发和优化技术。

扫码加入交流群

获得更多技术支持和交流

(请注明自己的职业)

DEMO

依赖和安装

推荐使用 Python>=3.10, PyTorch>=2.1.0 和 CUDA>=12.1

conda create --name instantmesh python=3.10conda activate instantmeshpip install -U pip# Ensure Ninja is installedconda install Ninja# Install the correct version of CUDAconda install cuda -c nvidia/label/cuda-12.1.0# Install PyTorch and xformers# You may need to install another xformers version if you use a different PyTorch versionpip install torch==2.1.0 torchvision==0.16.0 torchaudio==2.1.0 --index-url https://download.pytorch.org/whl/cu121pip install xformers==0.0.22.post7# For Linux users: Install Triton pip install triton# For Windows users: Use the prebuilt version of Triton provided here:pip install https://huggingface.co/r4ziel/xformers_pre_built/resolve/main/triton-2.0.0-cp310-cp310-win_amd64.whl# Install other requirementspip install -r requirements.txt

使用

1.下载模型

在模型卡中提供了4种稀疏视图重建模型变体和一个定制的 Zero123++ UNet 用于白底图像生成。

推理脚本将自动下载模型。或者,你也可以手动下载模型,并将它们放在 ckpts/ 目录下。

默认情况下,使用 instant-mesh-large 重建模型变体。

2.启动本地 gradio 演示

要在本地机器上启动 gradio 演示,只需运行:

python app.py

如果你的机器中有多个 GPU,演示应用程序将自动在两个 GPU 上运行以节省内存。也可以强制它在单个 GPU 上运行:

CUDA_VISIBLE_DEVICES=0 python app.py

另外,你也可以使用 docker 运行演示。请按照 docker 目录中的说明操作。

3.通过命令行运行

要通过命令行从图像生成3D网格,只需运行:

python run.py configs/instant-mesh-large.yaml examples/hatsune_miku.png --save_video

使用 rembg 来分割前景对象。如果输入图像已经有一个透明遮罩,请指定 no_rembg 标志:

python run.py configs/instant-mesh-large.yaml examples/hatsune_miku.png --save_video --no_rembg

默认情况下,脚本会导出带有顶点颜色的 .obj 网格,如果你希望导出带有纹理映射的网格,请指定 --export_texmap 标志(这将花费更长时间):

python run.py configs/instant-mesh-large.yaml examples/hatsune_miku.png --save_video --export_texmap

如果你希望使用其他重建模型变体,请在 configs 目录中使用不同的 .yaml 配置文件。例如,使用 instant-nerf-large 模型进行生成:

python run.py configs/instant-nerf-large.yaml examples/hatsune_miku.png --save_video

注意:在使用 NeRF 模型变体进行图像到3D生成时,通过指定 --export_texmap 导出带有纹理映射的网格可能会在 UV 展开步骤中花费较长时间,因为默认的等值面提取分辨率为256。你可以在配置文件中设置较低的等值面提取分辨率。

训练

要训练稀疏视图重建模型,请运行:

# Training on NeRF representationpython train.py --base configs/instant-nerf-large-train.yaml --gpus 0,1,2,3,4,5,6,7 --num_nodes 1# Training on Mesh representationpython train.py --base configs/instant-mesh-large-train.yaml --gpus 0,1,2,3,4,5,6,7 --num_nodes 1

还提供了 Zero123++ 的微调代码,因为它经常被请求。运行命令是:

python train.py --base configs/zero123plus-finetune.yaml --gpus 0,1,2,3,4,5,6,7 --num_nodes 1

项目链接

https://github.com/TencentARC/InstantMesh

关注「 开源AI项目落地 」公众号

与AI时代更靠近一点