Wonder3D图片转3D扩散
Wonder3D 只需 2 ∼ 3 分钟即可从单视图图像重建高度详细的纹理网格。
Wonder3D首先通过跨域扩散模型生成一致的多视图法线图和相应的彩色图像,然后利用新颖的法线融合方法实现快速、高质量的重建。
1、推理准备
首先安装requirements.txt中的软件包。
Linux系统:
conda create -n wonder3d
conda activate wonder3d
pip install -r requirements.txt
pip install git+https://github.com/NVlabs/tiny-cuda-nn/#subdirectory=bindings/torch
Windows系统:
conda create --name venv_wonder3d -y python=3.8
pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118
conda install -c "nvidia/label/cuda-11.8.0" cuda-toolkit
pip install fire diffusers==0.19.3 transformers bitsandbytes accelerate gradio rembg segment_anything
pip install einops omegaconf pytorch-lightning==1.9.5 torch_efficient_distloss nerfacc==0.3.3 PyMCubes trimesh
pip install https://download.pytorch.org/whl/cu118/xformers-0.0.22.post4%2Bcu118-cp38-cp38-manylinux2014_x86_64.whl
pip install ninja git+https://github.com/NVlabs/tiny-cuda-nn/#subdirectory=bindings/torch
然后下载检查点并放入根文件夹中。
2、Wonder3D推理
首先确保你拥有以下模型:
Wonder3D
|-- ckpts
|-- unet
|-- scheduler.bin
...
接下来预测前景蒙版作为 Alpha 通道。 我们使用 Clipdrop 交互式地分割前景对象。 你还可以使用 rembg 删除背景。
# !pip install rembg
import rembg
result = rembg.remove(result)
result.show()
运行 Wonder3d 来生成多视图一致的法线贴图和彩色图像。 然后可以在文件夹 ./outputs
中检查结果。
我们使用 rembg 来去除结果的背景,但分割并不总是完美的。可以考虑使用 Clipdrop 来获取生成的法线贴图和彩色图像的蒙版,因为蒙版的质量将显着影响重建的网格质量。
accelerate launch --config_file 1gpu.yaml test_mvdiffusion_seq.py \
--config mvdiffusion-joint-ortho-6views.yaml
或者:
bash run_test.sh
最后提取网格:
cd ./instant-nsr-pl
bash run.sh output_folder_path scene_name
我们生成的法线和彩色图像是在正交视图中定义的,因此重建的网格也在正交相机空间中。 如果使用 MeshLab 查看网格,你可以单击“视图”选项卡中的“切换正交相机”。
3、常见问题
生成的视图的仰角和方位角是多少?
A:与Zero123、SyncDreamer和One2345等之前的作品采用对象世界系统不同,我们的视图是在输入图像的相机系统中定义的。 这六个视图位于输入图像的相机系统中具有0仰角的平面内。 因此我们不需要估计输入图像的高程。 六个视图的方位角分别为0、45、90、180、-90、-45。
生成的视图的焦距是多少?
答:我们假设输入图像是由正交相机捕获的,因此生成的视图也在正交空间中。 这种设计使我们的模型能够对非真实图像保持很强的概括性,但有时它可能会受到真实捕获图像的焦距镜头畸变的影响。
原文链接:Diffusion model for 3D reconstruction from a single image
BimAnt翻译整理,转载请标明出处