Free3D
效果展示
https://github.com/lyndonzheng/Free3D/assets/8929977/d4888ad6-1a1d-41ee-bc26-35b394a4dfd7
本仓库实现了Free3D的训练和测试工具,该项目由牛津大学VGG小组的郑传霞和Andrea Vedaldi完成。给定单视图图像,提出的Free3D可以合成正确的新视角,无需显式的3D表示。
使用方法
安装
# 创建环境
conda create --name free3d python=3.9
conda activate free3d
# 安装pytorch
conda install pytorch torchvision torchaudio pytorch-cuda=11.8 -c pytorch -c nvidia
# 其他依赖
pip install -r requirements.txt
数据集
- Objaverse: 用于Objaverse的训练/评估(7,729个测试实例),请从zero-1-to-3下载渲染数据集。他们提供的原始命令是:
解压数据文件并在wget https://tri-ml-public.s3.amazonaws.com/datasets/views_release.tar.gz
configs/objaverse.yaml
中更改root_dir
。 - OmniObject3D: 用于OmniObject3d的评估(5,275个实例),请参考OmniObject3D Github,并在
configs/omniobject3d
中更改root_dir
。由于我们没有在此数据集上训练模型,我们直接在训练集上进行评估。 - GSO: 用于Google Scanned Objects(GSO,1,030个实例)的评估,请下载完整的3D模型,并使用zero-1-to-3的渲染代码为每个场景生成25个视图。然后,将
configs/googlescan.yaml
中的root_dir
更改为相应位置。我们的渲染文件可在Google Drive上获取。
推理
- 批量测试以获取定量结果
python batch_test.py \ --resume [模型目录路径] \ --config [configs/*.yaml] \ --save_path [保存目录路径]
- 单图测试以获取定性结果
# 对于真实示例,请下载segment anything检查点 wget https://dl.fbaipublicfiles.com/segment_anything/sam_vit_h_4b8939.pth # 运行单图测试命令 python test.py \ --resume [模型目录路径] \ --sam_path [sam检查点路径] \ --img_path [图像路径] \ --gen_type ['image'或'video'] \ --save_path [保存目录路径]
- 通用指标评估方法:
cd evaluations python evaluation.py --gt_path [真实图像路径] --g_path [生成的NVS图像路径]
训练
- 射线条件归一化(RCN)用于提高姿态准确性,使用以下命令进行训练:
# 下载lambda labs发布的图像条件稳定扩散检查点 # 此训练在4个a6000(48G)上大约需要9天 wget https://cv.cs.columbia.edu/zero123/assets/sd-image-conditioned-v2.ckpt # 或下载zero-1-t-3发布的检查点 # 此训练在4个60000(48G)上大约需要2天 wget https://cv.cs.columbia.edu/zero123/assets/105000.ckpt # 更改train.sh中的finetune_from,然后运行命令 sh train.sh
- 伪3D注意力用于平滑一致性,使用相同的命令进行训练(在4个A6000上需要1天),但参数不同:
# 修改configs/objaverse.yaml如下 views: 4 use_3d_transformer: True # 将train.sh中的finetune_from修改为你的第一阶段模型 finetune_from [RCN训练模型]
预训练模型
- 不带伪3D注意力的RCN模型可在huggingface上获取。
相关工作
- Stable Video Diffusion微调图像到视频扩散模型以生成多视角。
- Efficient-3DiM使用更强大的视觉transformer DINO v2微调稳定扩散模型。
- Consistent-1-to-3应用极线注意力为扩散模型提取粗略结果。
- One-2-3-45和One-2-3-45++使用2D生成器的输出训练额外的3D网络。
- MVDream、Consistent123和Wonder3D也训练多视角扩散模型,但仍需要后处理进行视频渲染。
- SyncDreamer和ConsistNet将3D表示引入潜在扩散模型。
引用
如果您觉得我们的代码有帮助,请引用我们的论文:
@article{zheng2023free3D,
author = {Zheng, Chuanxia and Vedaldi, Andrea},
title = {Free3D: Consistent Novel View Synthesis without 3D Representation},
journal = {arXiv},
year = {2023},
致谢
非常感谢VGG的Stanislaw Szymanowicz、Edgar Sucar和Luke Melas-Kyriazi的深刻讨论,以及VGG的Ruining Li、Eldar Insafutdinov和Yash Bhalgat的有益反馈。我们还要感谢Zero-1-to-3和Objaverse-XL的作者们的有益讨论。