這是指令-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},
}