这是指令-nerf2nerf的官方实施。

consend-nerf2nerf建立在nerfstudio上,因此具有相同的依赖性重新点。需要特定的pytorch和tinycudann。
请按照此链接上的说明来创建环境并安装依赖项。仅遵循命令到Tinycudann。安装依赖项后,请返回此处。
完成安装依赖项后,您可以使用以下命令安装Denterment-nerf2nerf:
pip install git+https://github.com/ayaanzhaque/instruct-nerf2nerf可选:如果您想直接使用代码,请克隆,然后安装回购:
git clone https://github.com/ayaanzhaque/instruct-nerf2nerf.git
cd instruct-nerf2nerf
pip install --upgrade pip setuptools
pip install -e . 以下命令应包括in2n作为一种选项:
ns-train -h
要编辑NERF,您必须首先使用数据训练常规的nerfacto场景。要处理您的自定义数据,请参阅此文档。
拥有自定义数据后,您可以使用以下命令训练初始NERF:
ns-train nerfacto --data {PROCESSED_DATA_DIR}有关培训NERF的更多详细信息,请参见Nerfstudio文档。
一旦您对场景进行了充分的训练,检查站将被保存到outputs目录。将路径复制到nerfstudio_models文件夹。
要开始培训编辑NERF,请运行以下命令:
ns-train in2n --data {PROCESSED_DATA_DIR} --load-dir {outputs/.../nerfstudio_models} --pipeline.prompt { " prompt " } --pipeline.guidance-scale 7.5 --pipeline.image-guidance-scale 1.5 {PROCESSED_DATA_DIR}必须与训练原始nerf中使用的路径相同。使用CLI命令,您可以选择指令Pix2pix的提示和指导量表。
训练NERF后,您可以使用标准的Nerfstudio工作流程渲染NERF。
重要的是,请注意,在大于512的分辨率的图像上训练NERF可能会导致consendpix2pix丢弃OOM错误。此外,在较高分辨率的图像上,ConcentPix2Pix的性能似乎明显较差。我们建议使用分辨率约为512(最大维度)的培训,因此,将以下标签添加到nerfacto和in2n培训命令的末尾: nerfstudio-data --downscale-factor {2,4,6,8}到ns-train命令的末尾。另外,您可以自己降低数据集并更新您的transforms.json 。
我们建议使用来自Polycam的图像捕获数据,因为较小的数据集使用我们的方法更快,更快地工作。
如果您有多个GPU,则可以通过将ConstressPix2Pix放在单独的GPU上来加速培训。为此,添加--pipeline.ip2p-device cuda:{device-number}到您的培训命令。
我们的方法使用〜16K射线和LPIP,但并非所有GPU都有足够的内存来运行此配置。结果,我们提供了两种替代配置,它们使用较少的内存,但要注意这些配置会导致性能下降。差异是用于IntructPix2Pix的精度以及是否使用LPIP(需要更多4倍射线)。下表中提供了每个配置的详细信息。
| 方法 | 描述 | 记忆 | 质量 |
|---|---|---|---|
in2n | 完整型号,纸 | 〜15GB | 最好的 |
in2n-small | 半精度模型 | 〜12GB | 好的 |
in2n-tiny | 一半精度没有LPIP | 〜10GB | 好的 |
目前,我们将in2n培训的最大迭代次数设置为15K Iteratios。大多数情况下,在〜10k迭代后,编辑看起来不错。如果您想训练更长的时间,只需重新加载您的最后一个in2n检查站,然后继续训练或更改--max-num-iterations 30000 。
如果您的编辑无法按照您的要求工作,则很可能是因为CundertPix2Pix在图像上挣扎并提示。我们建议您使用您的培训视图之一,并尝试在2D中首先使用Constermpix2Pix进行编辑,这可以在此HuggingFace空间中完成。可以在此处找到有关获得良好编辑的更多提示。
我们建立了用于高斯分裂的指令 - nerf2nerf的扩展名,称为centerment-gs2gs。它们的存储库可以用作如何基于Constract-nerf2nerf构建未来项目的示例。
请为您遇到的任何安装/使用问题打开GitHub问题。我们试图支持尽可能广泛的GPU,但可能有必要提供更低的低英寸印刷版本。请做出任何更改以改善内存使用情况!
为了构建Constract-nerf2nerf,我们提供了核心代码组件的解释。
in2n_datamanager.py :此文件几乎与base_datamanager.py在nerfstudio中相同。主要区别在于,整个数据集张量是在setup_train方法中预先计算的,而不是每次在next_train方法中采样。
in2n_pipeline.py :此文件构建在nerfstudio的管道模块上。 get_train_loss_dict方法示例图像,并将编辑的图像放回数据集中。
ip2p.py :此文件包含consendpix2pix模型(使用diffusers实现)。 edit_image方法是使用扩散模型对图像进行剥落的位置,并且该文件也包含多种辅助方法。
in2n.py :我们覆盖使用LPIPS损失和L1LOSS get_loss_dict方法。
您可以在Arxiv上找到我们的论文。
如果您发现此代码或发现该论文对您的研究有用,请考虑引用:
@inproceedings{instructnerf2023,
author = {Haque, Ayaan and Tancik, Matthew and Efros, Alexei and Holynski, Aleksander and Kanazawa, Angjoo},
title = {Instruct-NeRF2NeRF: Editing 3D Scenes with Instructions},
booktitle = {Proceedings of the IEEE/CVF International Conference on Computer Vision},
year = {2023},
}