Ini adalah implementasi resmi dari Instruct-Nerf2nerf.

Instruct-nerf2nerf dibangun di atas nerfstudio dan karenanya memiliki reqirements ketergantungan yang sama. Diperlukan khusus Pytorch dan Tinycudann.
Ikuti instruksi di tautan ini untuk membuat lingkungan dan menginstal dependensi. Hanya ikuti perintah hingga Tinycudann. Setelah dependensi diinstal, kembali ke sini.
Setelah selesai menginstal dependensi, Anda dapat menginstal Instruct-Nerf2nerf menggunakan perintah berikut:
pip install git+https://github.com/ayaanzhaque/instruct-nerf2nerfOpsional : Jika Anda ingin bekerja dengan kode secara langsung, klon kemudian instal repo:
git clone https://github.com/ayaanzhaque/instruct-nerf2nerf.git
cd instruct-nerf2nerf
pip install --upgrade pip setuptools
pip install -e . Perintah berikut harus menyertakan in2n sebagai salah satu opsi:
ns-train -h
Untuk mengedit nerf, Anda harus terlebih dahulu melatih adegan nerfacto biasa menggunakan data Anda. Untuk memproses data khusus Anda, silakan merujuk ke dokumentasi ini.
Setelah Anda memiliki data khusus, Anda dapat melatih nerf awal Anda dengan perintah berikut:
ns-train nerfacto --data {PROCESSED_DATA_DIR}Untuk detail lebih lanjut tentang pelatihan nerf, lihat dokumentasi nerfstudio.
Setelah Anda sepenuhnya melatih adegan Anda, pos pemeriksaan akan disimpan ke direktori outputs . Salin jalur ke folder nerfstudio_models .
Untuk memulai pelatihan untuk mengedit NERF, jalankan perintah berikut:
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} harus merupakan jalur yang sama seperti yang digunakan dalam melatih NERF asli. Menggunakan perintah CLI, Anda dapat memilih prompt dan skala panduan yang digunakan untuk InstructPix2pix.
Setelah NERF dilatih, Anda dapat membuat NERF menggunakan alur kerja NERFStudio standar, ditemukan di sini.
Penting Harap dicatat bahwa melatih NERF pada gambar dengan resolusi yang lebih besar dari 512 kemungkinan akan menyebabkan instruksipix2pix untuk melempar kesalahan OOM. Selain itu, tampaknya Instrukturpix2pix berkinerja lebih buruk secara signifikan pada gambar pada resolusi yang lebih tinggi. Kami menyarankan pelatihan dengan resolusi yang sekitar 512 (dimensi maks), jadi tambahkan tag berikut ke akhir perintah pelatihan nerfacto dan in2n Anda: nerfstudio-data --downscale-factor {2,4,6,8} ke akhir perintah ns-train Anda. Atau, Anda dapat menurunkan dataset sendiri dan memperbarui file transforms.json Anda (skala turun w, h, fl_x, fl_y, cx, cy), atau Anda dapat menggunakan skala gambar yang lebih kecil yang disediakan oleh nerfstudio.
Kami merekomendasikan untuk menangkap data menggunakan gambar dari Polycam, karena dataset yang lebih kecil bekerja lebih baik dan lebih cepat dengan metode kami.
Jika Anda memiliki beberapa GPU, pelatihan dapat dipercepat dengan menempatkan Instrukturpix2pix pada GPU terpisah. Untuk melakukannya, tambahkan --pipeline.ip2p-device cuda:{device-number} ke perintah pelatihan Anda.
Metode kami menggunakan ~ Sinar 16K dan LPIPS, tetapi tidak semua GPU memiliki cukup memori untuk menjalankan konfigurasi ini. Akibatnya, kami telah menyediakan dua konfigurasi alternatif yang menggunakan lebih sedikit memori, tetapi perlu diketahui bahwa konfigurasi ini menyebabkan penurunan kinerja. Perbedaannya adalah presisi yang digunakan untuk inTtructpix2pix dan apakah LPIPS digunakan (yang membutuhkan 4x lebih banyak sinar). Rincian setiap konfigurasi disediakan dalam tabel di bawah ini.
| Metode | Keterangan | Ingatan | Kualitas |
|---|---|---|---|
in2n | Model lengkap, digunakan dalam kertas | ~ 15GB | Terbaik |
in2n-small | Model setengah presisi | ~ 12GB | Bagus |
in2n-tiny | Setengah presisi tanpa lpips | ~ 10GB | Oke |
Saat ini, kami menetapkan jumlah maksimal iterasi untuk pelatihan in2n menjadi 15k iteratios. Paling sering, edit akan terlihat bagus setelah ~ 10k iterasi. Jika Anda ingin berlatih lebih lama, cukup muat ulang pos pemeriksaan in2n terakhir Anda dan lanjutkan pelatihan, atau ubah --max-num-iterations 30000 .
Jika pengeditan Anda tidak berfungsi sesuai keinginan Anda, kemungkinan karena Instrukturpix2pix berjuang dengan gambar dan prompt Anda. Kami merekomendasikan untuk mengambil salah satu pandangan pelatihan Anda dan mencoba mengeditnya di 2D terlebih dahulu dengan Instrukturpix2pix, yang dapat dilakukan di ruang pelukan ini. Lebih banyak tips tentang mendapatkan edit yang bagus dapat ditemukan di sini.
Kami membangun perpanjangan instruksi-nerf2nerf untuk percikan Gaussian yang disebut instruks-GS2GS. Repositori mereka dapat digunakan sebagai contoh bagaimana membangun proyek masa depan berdasarkan instruksi-nerf2nerf.
Harap buka masalah GitHub untuk setiap masalah instalasi/penggunaan yang Anda temui. Kami telah mencoba untuk mendukung rentang GPU sebesar mungkin, tetapi mungkin perlu untuk memberikan versi yang lebih rendah. Harap berkontribusi dengan perubahan apa pun untuk meningkatkan penggunaan memori!
Untuk membangun instruksi-nerf2nerf, kami memberikan penjelasan tentang komponen kode inti.
in2n_datamanager.py : File ini hampir identik dengan base_datamanager.py di nerfstudio. Perbedaan utama adalah bahwa seluruh Dataset Tensor sudah dikomputasi dalam metode setup_train sebagai lawan sampel dalam metode next_train setiap kali.
in2n_pipeline.py : File ini dibangun di atas modul pipa di nerfstudio. Metode get_train_loss_dict mengambil sampel gambar dan tempat yang diedit kembali ke dalam dataset.
ip2p.py : File ini menampung model Instrukturpix2pix (menggunakan implementasi diffusers ). Metode edit_image adalah tempat gambar di -denoised menggunakan model difusi, dan berbagai metode pembantu terkandung dalam file ini juga.
in2n.py : Kami menimpa metode get_loss_dict untuk menggunakan LPIPS Loss dan L1Loss.
Anda dapat menemukan kertas kami di Arxiv.
Jika Anda menemukan kode ini atau menemukan makalah yang berguna untuk penelitian Anda, silakan pertimbangkan mengutip:
@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},
}