นี่คือการดำเนินการอย่างเป็นทางการของ Instruct-Nerf2nerf

Instruct-Nerf2nerf ถูกสร้างขึ้นบน nerfstudio และดังนั้นจึงมีการพึ่งพาการพึ่งพาเดียวกัน จำเป็นต้องใช้ pytorch และ tinycudann
ทำตามคำแนะนำที่ลิงค์นี้เพื่อสร้างสภาพแวดล้อมและติดตั้งการพึ่งพา ทำตามคำสั่งจนถึง tinycudann เท่านั้น หลังจากติดตั้งการพึ่งพาแล้วกลับมาที่นี่
เมื่อคุณติดตั้งการพึ่งพาเสร็จแล้วคุณสามารถติดตั้ง Instruct-Nerf2Nerf โดยใช้คำสั่งต่อไปนี้:
pip install git+https://github.com/ayaanzhaque/instruct-nerf2nerfตัวเลือก : หากคุณต้องการทำงานกับรหัสโดยตรงให้ใช้โคลนแล้วติดตั้ง repo:
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 คุณสามารถเลือกพรอมต์และเครื่องชั่งคำแนะนำที่ใช้สำหรับ InstructPix2Pix
หลังจากได้รับการฝึกฝน NERF คุณสามารถแสดงผล NERF โดยใช้เวิร์กโฟลว์ Nerfstudio มาตรฐานได้ที่นี่
ที่สำคัญ โปรดทราบว่าการฝึกอบรม NERF บนภาพที่มีความละเอียดที่มีขนาดใหญ่กว่า 512 อาจทำให้ InstructPix2Pix โยนข้อผิดพลาด oom ยิ่งไปกว่านั้นดูเหมือนว่า cordspix2pix จะทำงานได้แย่ลงอย่างมากในภาพที่ความละเอียดสูงกว่า เราขอแนะนำการฝึกอบรมด้วยความละเอียดที่อยู่ที่ประมาณ 512 (มิติสูงสุด) ดังนั้นเพิ่มแท็กต่อไปนี้ไปที่ส่วนท้ายของทั้ง nerfacto และ in2n Training Command ของคุณ: nerfstudio-data --downscale-factor {2,4,6,8} จนถึงตอนท้ายของคำสั่ง ns-train ของคุณ หรือคุณสามารถลดชุดข้อมูลของคุณด้วยตัวเองและอัปเดตไฟล์ transforms.json ของคุณ (ลดขนาด W, H, FL_X, FL_Y, CX, CY) หรือคุณสามารถใช้มาตราส่วนภาพขนาดเล็กที่จัดทำโดย NerfStudio
เราขอแนะนำให้เก็บข้อมูลโดยใช้รูปภาพจาก Polycam เนื่องจากชุดข้อมูลขนาดเล็กทำงานได้ดีขึ้นและเร็วขึ้นด้วยวิธีการของเรา
หากคุณมี GPU หลายตัวการฝึกอบรมสามารถเร่งความเร็วได้โดยการวาง InthedPix2Pix บน GPU แยกต่างหาก ในการทำเช่นนั้นให้เพิ่ม --pipeline.ip2p-device cuda:{device-number} ไปยังคำสั่งการฝึกอบรมของคุณ
วิธีการของเราใช้รังสี ~ 16K และ LPIPS แต่ไม่ใช่ GPU ทั้งหมดที่มีหน่วยความจำเพียงพอที่จะเรียกใช้การกำหนดค่านี้ เป็นผลให้เราได้จัดทำการกำหนดค่าทางเลือกสองแบบซึ่งใช้หน่วยความจำน้อยลง แต่โปรดทราบว่าการกำหนดค่าเหล่านี้นำไปสู่ประสิทธิภาพที่ลดลง ความแตกต่างคือความแม่นยำที่ใช้สำหรับ IntructPix2Pix และใช้ LPIPS หรือไม่ (ซึ่งต้องใช้รังสีมากกว่า 4 เท่า) รายละเอียดของแต่ละการกำหนดค่ามีอยู่ในตารางด้านล่าง
| วิธี | คำอธิบาย | หน่วยความจำ | คุณภาพ |
|---|---|---|---|
in2n | รุ่นเต็มใช้ในกระดาษ | ~ 15GB | ดีที่สุด |
in2n-small | โมเดลความแม่นยำครึ่งหนึ่ง | ~ 12GB | ดี |
in2n-tiny | ความแม่นยำครึ่งหนึ่งโดยไม่มี LPIPS | ~ 10GB | ตกลง |
ขณะนี้เราตั้งค่าจำนวนสูงสุดของการทำซ้ำสำหรับการฝึกอบรม in2n เป็น 15K iteratios บ่อยครั้งที่การแก้ไขจะดูดีหลังจากการทำซ้ำ ~ 10K หากคุณต้องการฝึกอบรมนานขึ้นเพียงแค่โหลดจุดตรวจสอบ in2n สุดท้ายของคุณใหม่และฝึกอบรมต่อหรือเปลี่ยน --max-num-iterations 30000
หากการแก้ไขของคุณไม่ทำงานตามที่คุณต้องการอาจเป็นเพราะ cordspix2pix ต้องดิ้นรนกับรูปภาพและพร้อมท์ของคุณ เราขอแนะนำให้ใช้หนึ่งในมุมมองการฝึกอบรมของคุณและพยายามแก้ไขใน 2D ก่อนด้วย InstructPix2Pix ซึ่งสามารถทำได้ที่พื้นที่ HuggingFace นี้ เคล็ดลับเพิ่มเติมเกี่ยวกับการแก้ไขที่ดีสามารถพบได้ที่นี่
เราสร้างส่วนขยายของคำสั่ง-NNEF2NERF สำหรับการแยกแบบเกาส์ที่เรียกว่าคำแนะนำ -GS2GS พื้นที่เก็บข้อมูลของพวกเขาสามารถใช้เป็นตัวอย่างของวิธีการสร้างโครงการในอนาคตตามคำสั่ง-NNERF2NERF
โปรดเปิดปัญหา GitHub สำหรับปัญหาการติดตั้ง/การใช้งานที่คุณพบ เราได้พยายามสนับสนุน GPU ที่หลากหลายที่สุดเท่าที่จะเป็นไปได้ แต่อาจจำเป็นต้องให้รุ่นที่มีเท้าต่ำมากขึ้น โปรดมีส่วนร่วมกับการเปลี่ยนแปลงใด ๆ เพื่อปรับปรุงการใช้หน่วยความจำ!
ในการสร้างคำแนะนำ-NNERF2NERF เราให้คำอธิบายเกี่ยวกับส่วนประกอบรหัสหลัก
in2n_datamanager.py : ไฟล์นี้เกือบจะเหมือนกับ base_datamanager.py ใน nerfstudio ความแตกต่างที่สำคัญคือเทนเซอร์ชุดข้อมูลทั้งหมดถูกคำนวณล่วงหน้าในวิธี setup_train ซึ่งตรงข้ามกับการสุ่มตัวอย่างในวิธี next_train ในแต่ละครั้ง
in2n_pipeline.py : ไฟล์นี้สร้างบนโมดูลไปป์ไลน์ใน nerfstudio วิธีการ get_train_loss_dict ตัวอย่างภาพและสถานที่ที่แก้ไขภาพกลับเข้าไปในชุดข้อมูล
ip2p.py : ไฟล์นี้เป็นที่ตั้งของโมเดล crendspix2pix (ใช้การใช้งาน diffusers ) วิธี edit_image เป็นที่ที่ภาพถูก denoised โดยใช้โมเดลการแพร่กระจายและวิธีการของผู้ช่วยที่หลากหลายมีอยู่ในไฟล์นี้เช่นกัน
in2n.py : เราเขียนทับวิธี get_loss_dict เพื่อใช้ LPIPS Loss และ L1Loss
คุณสามารถค้นหากระดาษของเราบน 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},
}