เริ่มต้นอย่างรวดเร็ว
เรียนรู้เพิ่มเติม
คุณสมบัติที่รองรับ
ง่ายเหมือน Plug and Play ด้วย nerfstudio!
Nerfstudio มี API ง่ายๆ ที่ช่วยให้กระบวนการสร้าง ฝึกฝน และทดสอบ NeRF ง่ายดายตั้งแต่ต้นทางถึงปลายทาง ไลบรารีสนับสนุน การใช้งาน NeRF ที่สามารถตีความได้มากขึ้นโดยทำให้แต่ละส่วนประกอบเป็นโมดูล ด้วย NeRF แบบโมดูลาร์ที่มากขึ้น เราหวังว่าจะสร้างประสบการณ์ที่เป็นมิตรต่อผู้ใช้มากขึ้นในการสำรวจเทคโนโลยี
นี่คือ repo ที่เป็นมิตรกับผู้สนับสนุนโดยมีเป้าหมายเพื่อสร้างชุมชนที่ผู้ใช้สามารถต่อยอดการมีส่วนร่วมของกันและกันได้ง่ายขึ้น Nerfstudio เปิดตัวครั้งแรกเป็นโครงการโอเพ่นซอร์สโดยนักศึกษาของ Berkeley ในห้องแล็บ KAIR ที่ Berkeley AI Research (BAIR) ในเดือนตุลาคม 2022 โดยเป็นส่วนหนึ่งของโครงการวิจัย (รายงาน) ปัจจุบันได้รับการพัฒนาโดยนักศึกษาของ Berkeley และผู้มีส่วนร่วมในชุมชน
เรามุ่งมั่นที่จะจัดหาทรัพยากรการเรียนรู้เพื่อช่วยให้คุณเข้าใจพื้นฐานของ (หากคุณเพิ่งเริ่มต้น) และติดตามข่าวสารล่าสุด (หากคุณเป็นทหารผ่านศึกมากประสบการณ์) ทุกสิ่งที่ NeRF ในฐานะนักวิจัย เรารู้ว่าการเริ่มใช้เทคโนโลยีเจเนอเรชั่นถัดไปนี้เป็นเรื่องยากเพียงใด ดังนั้นเราจึงพร้อมให้ความช่วยเหลือเกี่ยวกับบทแนะนำ เอกสาร และอื่นๆ อีกมากมาย!
มีการร้องขอคุณสมบัติ? ต้องการเพิ่มโมเดล NeRF ใหม่ล่าสุดของคุณหรือไม่? มีชุดข้อมูลใหม่หรือไม่? เรายินดีต้อนรับการมีส่วนร่วม! โปรดอย่าลังเลที่จะติดต่อทีม Nerfstudio หากมีคำถามใดๆ ผ่านทาง Discord
มีข้อเสนอแนะ? เราอยากให้คุณกรอกแบบฟอร์มคำติชมของ Nerfstudio หากคุณต้องการแจ้งให้เราทราบว่าคุณเป็นใคร เหตุใดคุณจึงสนใจ Nerfstudio หรือแสดงความคิดเห็นใดๆ!
เราหวังว่า nerfstudio จะช่วยให้คุณสร้างได้เร็วขึ้น ? เรียนรู้ด้วยกันเหรอ? และมีส่วนร่วมในชุมชน NeRF ของเรา ?.
ผู้สนับสนุนงานนี้ ได้แก่ Luma AI และ BAIR Commons
การเริ่มต้นอย่างรวดเร็วจะช่วยให้คุณเริ่มต้นใช้งาน NeRF วานิลลาเริ่มต้นที่ได้รับการฝึกฝนในฉาก Blender Lego สุดคลาสสิก สำหรับการเปลี่ยนแปลงที่ซับซ้อนมากขึ้น (เช่น การรันด้วยข้อมูลของคุณเอง/การตั้งค่ากราฟ NeRF ใหม่) โปรดดูข้อมูลอ้างอิงของเรา
คุณต้องมีการ์ดแสดงผล NVIDIA ที่ติดตั้ง CUDA ไว้ในระบบ ไลบรารีนี้ได้รับการทดสอบกับ CUDA เวอร์ชัน 11.8 คุณสามารถค้นหาข้อมูลเพิ่มเติมเกี่ยวกับการติดตั้ง CUDA ได้ที่นี่
Nerfstudio ต้องใช้ python >= 3.8
เราแนะนำให้ใช้ conda เพื่อจัดการการขึ้นต่อกัน อย่าลืมติดตั้ง Conda ก่อนดำเนินการต่อ
conda สร้าง --name nerfstudio -y python=3.8 conda เปิดใช้งาน nerfstudio การติดตั้ง pip -- อัปเกรด pip
ติดตั้ง PyTorch ด้วย CUDA (repo นี้ได้รับการทดสอบกับ CUDA 11.7 และ CUDA 11.8) และ Tiny-cuda-nn cuda-toolkit
เป็นสิ่งจำเป็นสำหรับการสร้าง tiny-cuda-nn
สำหรับ CUDA 11.8:
pip ติดตั้ง torch==2.1.2+cu118 torchvision==0.16.2+cu118 --extra-index-url https://download.pytorch.org/whl/cu118 conda ติดตั้ง -c "nvidia/label/cuda-11.8.0" cuda-toolkit pip ติดตั้ง ninja git+https://github.com/NVlabs/tiny-cuda-nn/#subdirectory=bindings/torch
ดูการขึ้นต่อกันในเอกสารการติดตั้งสำหรับข้อมูลเพิ่มเติม
ตัวเลือกที่ง่าย:
pip ติดตั้ง nerfstudio
หรือ หากคุณต้องการสิ่งใหม่ล่าสุดและยิ่งใหญ่ที่สุด:
โคลนคอมไพล์ https://github.com/nerfstudio-project/nerfstudio.gitcd nerfstudio pip install --upgrade pip setuptools pip ติดตั้ง -e
หรือ หากคุณต้องการข้ามขั้นตอนการติดตั้งทั้งหมดและเริ่มใช้ nerfstudio โดยตรง ให้ใช้อิมเมจนักเทียบท่า:
ดูการติดตั้ง - ใช้อิมเมจนักเทียบท่า
ต่อไปนี้จะฝึกโมเดล เนอร์แฟคโต ซึ่งเป็นโมเดลที่เราแนะนำสำหรับฉากในโลกแห่งความเป็นจริง
# ดาวน์โหลดข้อมูลการทดสอบบางส่วน:ns-download-data nerfstudio --capture-name=poster# Train modelns-train nerfacto --data data/nerfstudio/poster
หากทุกอย่างได้ผล คุณจะเห็นความคืบหน้าของการฝึกดังต่อไปนี้:
การนำทางไปยังลิงก์ที่ส่วนท้ายของเทอร์มินัลจะโหลดโปรแกรมดูเว็บ หากคุณใช้งานบนเครื่องระยะไกล คุณจะต้องส่งต่อพอร์ตพอร์ต websocket (ค่าเริ่มต้นคือ 7007)
คุณสามารถโหลดโมเดลที่ฝึกไว้ล่วงหน้าได้โดยการรัน
ns-train nerfacto --data data/nerfstudio/poster --load-dir {เอาต์พุต/.../nerfstudio_models}
เมื่อพิจารณาจากจุดตรวจสอบโมเดลที่ได้รับการฝึกไว้แล้ว คุณสามารถเริ่มการดูได้ด้วยการวิ่ง
ns-viewer --load-config {เอาต์พุต/.../config.yml}
เมื่อคุณมีโมเดล NeRF แล้ว คุณสามารถเรนเดอร์วิดีโอหรือส่งออกพอยต์คลาวด์ได้
ก่อนอื่นเราต้องสร้างเส้นทางให้กล้องติดตาม ซึ่งสามารถทำได้ในโปรแกรมดูใต้แท็บ "RENDER" ปรับมุมมอง 3 มิติของคุณไปยังตำแหน่งที่คุณต้องการให้วิดีโอเริ่ม จากนั้นกด "เพิ่มกล้อง" นี่จะตั้งค่าเฟรมคีย์กล้องแรก ดำเนินการต่อไปยังมุมมองใหม่เพิ่มกล้องเพิ่มเติมเพื่อสร้างเส้นทางกล้อง เราจัดเตรียมพารามิเตอร์อื่นๆ เพื่อปรับแต่งเส้นทางกล้องของคุณเพิ่มเติม เมื่อพอใจแล้ว ให้กด "RENDER" ซึ่งจะแสดงโมดอลที่มีคำสั่งที่จำเป็นในการแสดงวิดีโอ ปิดงานฝึกอบรม (หรือสร้างเทอร์มินัลใหม่หากคุณมีคอมพิวเตอร์จำนวนมาก) และรันคำสั่งเพื่อสร้างวิดีโอ
มีตัวเลือกการส่งออกวิดีโออื่นๆ ให้เลือก เรียนรู้เพิ่มเติมด้วยการเรียกใช้
ns-render --help
แม้ว่าโมเดล NeRF จะไม่ได้รับการออกแบบมาให้สร้างพอยต์คลาวด์ แต่ก็ยังเป็นไปได้ ไปที่แท็บ "ส่งออก" ในมุมมอง 3 มิติ และเลือก "POINT CLOUD" หากเลือกตัวเลือกครอบตัด ทุกอย่างในสี่เหลี่ยมสีเหลืองจะถูกส่งออกไปยังพอยต์คลาวด์ แก้ไขการตั้งค่าตามต้องการ จากนั้นรันคำสั่งที่ด้านล่างของแผงในบรรทัดคำสั่งของคุณ
หรือคุณสามารถใช้ CLI โดยไม่มีตัวแสดงได้ เรียนรู้เกี่ยวกับตัวเลือกการส่งออกโดยการเรียกใช้
ns-export pointcloud --help
การใช้ชุดข้อมูลที่มีอยู่เป็นสิ่งที่ดี แต่คุณอาจต้องการใช้ข้อมูลของคุณเอง! เราสนับสนุนวิธีการต่างๆ ในการใช้ข้อมูลของคุณเอง ก่อนที่จะใช้ใน Nerfstudio ได้ จะต้องกำหนดตำแหน่งและการวางแนวของกล้องก่อน จากนั้นจึงแปลงเป็นรูปแบบของเราโดยใช้ ns-process-data
เราใช้เครื่องมือภายนอกสำหรับสิ่งนี้ คำแนะนำและข้อมูลสามารถพบได้ในเอกสารประกอบ
ข้อมูล | อุปกรณ์จับภาพ | ความต้องการ | ns-process-data ความเร็ว |
---|---|---|---|
รูปภาพ | ใดๆ | คอลแมป | |
วีดีโอ | ใดๆ | คอลแมป | |
ข้อมูล 360 | ใดๆ | คอลแมป | |
โพลีแคม | IOS พร้อม LiDAR | แอพโพลีแคม | |
บันทึก3D | IOS พร้อม LiDAR | แอพ Record3D | |
เมตาเชป | ใดๆ | เมตาเชป | |
โอเอ็มเอ็ม | ใดๆ | โอเอ็มเอ็ม | |
อาเรีย | อาเรีย แว่น | โครงการอาเรีย | |
กำหนดเอง | ใดๆ | โพสท่าถ่ายรูป |
เรามีรุ่นอื่นนอกเหนือจาก nerfacto เช่น หากคุณต้องการฝึกโมเดล nerf ดั้งเดิม ให้ใช้คำสั่งต่อไปนี้
ns-train vanilla-nerf --data DATA_PATH
สำหรับรายการรุ่นที่รวมอยู่ทั้งหมดให้รัน ns-train --help
แต่ละรุ่นมีพารามิเตอร์มากมายที่สามารถเปลี่ยนแปลงได้ ซึ่งมากเกินไปที่จะแสดงรายการไว้ที่นี่ ใช้คำสั่ง --help
เพื่อดูรายการตัวเลือกการกำหนดค่าทั้งหมด
ns-train nerfacto --help
เราสนับสนุนวิธีการที่แตกต่างกันสี่วิธีในการติดตามความคืบหน้าของการฝึกอบรม โดยใช้ Viewertensorboard น้ำหนักและอคติ และ Comet คุณสามารถระบุได้ว่าจะใช้วิชวลไลเซอร์ใดโดยการต่อท้าย --vis {viewer, tensorboard, wandb, comet viewer+wandb, viewer+tensorboard, viewer+comet}
เข้ากับคำสั่งการฝึก การใช้เครื่องแสดงควบคู่ไปกับไม้กายสิทธิ์หรือเทนเซอร์บอร์ดพร้อมกันอาจทำให้เกิดปัญหาการพูดติดอ่างในระหว่างขั้นตอนการประเมิน โปรแกรมดูใช้งานได้กับวิธีที่เร็วเท่านั้น (เช่น nerfacto, Instant-ngp) สำหรับวิธีที่ช้ากว่า เช่น NeRF ให้ใช้ตัวบันทึกอื่นๆ
เพียงเท่านี้สำหรับการเริ่มต้นใช้งานพื้นฐานของ nerfstudio
หากคุณสนใจที่จะเรียนรู้เพิ่มเติมเกี่ยวกับวิธีสร้างไปป์ไลน์ของคุณเอง พัฒนาร่วมกับผู้ชม เรียกใช้การวัดประสิทธิภาพ และอื่นๆ โปรดตรวจสอบลิงก์ด่วนด้านล่างหรือไปที่เอกสารประกอบของเราโดยตรง
ส่วน | คำอธิบาย |
---|---|
เอกสารประกอบ | เอกสารและบทช่วยสอน API ฉบับเต็ม |
ผู้ดู | หน้าแรกสำหรับผู้ดูเว็บของเรา |
ทางการศึกษา | |
คำอธิบายรุ่น | คำอธิบายของโมเดลทั้งหมดที่รองรับโดย nerfstudio และคำอธิบายเกี่ยวกับส่วนประกอบต่างๆ |
คำอธิบายส่วนประกอบ | สมุดบันทึกแบบโต้ตอบที่อธิบายโมดูลที่โดดเด่น/ใช้กันทั่วไปในรุ่นต่างๆ |
บทช่วยสอน | |
เริ่มต้นใช้งาน | คำแนะนำเชิงลึกเพิ่มเติมเกี่ยวกับวิธีเริ่มต้นใช้งาน nerfstudio ตั้งแต่การติดตั้งไปจนถึงการมีส่วนร่วม |
การใช้โปรแกรมดู | วิดีโอสาธิตสั้นๆ เกี่ยวกับวิธีการนำทางผู้ชม |
การใช้งาน Record3D | วิดีโอสาธิตวิธีเรียกใช้ nerfstudio โดยไม่ต้องใช้ COLMAP |
สำหรับนักพัฒนา | |
การสร้างท่อ | เรียนรู้วิธีสร้างไปป์ไลน์การเรนเดอร์ระบบประสาทใหม่อย่างง่ายดายโดยใช้และ/หรือปรับใช้โมดูลใหม่ |
การสร้างชุดข้อมูล | มีชุดข้อมูลใหม่หรือไม่? เรียนรู้วิธีใช้งานด้วย nerfstudio |
มีส่วนร่วม | อธิบายวิธีการเริ่มมีส่วนร่วมตอนนี้ |
ความไม่ลงรอยกัน | เข้าร่วมชุมชนของเราเพื่อหารือเพิ่มเติม เราชอบที่จะได้ยินจากคุณ! |
ทวิตเตอร์ | ติดตามเราบน Twitter @nerfstudioteam เพื่อดูการอัปเดตและประกาศเจ๋งๆ |
แบบฟอร์มตอบรับ | เรายินดีรับข้อเสนอแนะใด ๆ ! นี่เป็นโอกาสของเราที่จะเรียนรู้ว่าพวกคุณทุกคนใช้ Nerfstudio เพื่ออะไร |
เราจัดเตรียมโครงสร้างการสนับสนุนต่อไปนี้เพื่อทำให้ชีวิตง่ายขึ้นสำหรับการเริ่มต้นใช้งาน NeRF
หากคุณกำลังมองหาฟีเจอร์ที่ยังไม่รองรับในขณะนี้ โปรดติดต่อทีมงาน Nerfstudio ได้ที่ Discord!
โปรแกรมสร้างภาพบนเว็บที่ช่วยให้คุณ:
เห็นภาพการฝึกอบรมแบบเรียลไทม์ + โต้ตอบกับฉาก
สร้างและเรนเดอร์ฉากด้วยวิถีกล้องแบบกำหนดเอง
ดูเอาต์พุตประเภทต่างๆ
และอีกมากมาย!
รองรับอินเทอร์เฟซการบันทึกหลายรายการ (Tensorboard, Wandb) การทำโปรไฟล์โค้ด และเครื่องมือแก้ไขข้อบกพร่องในตัวอื่นๆ
สคริปต์การวัดประสิทธิภาพที่ใช้งานง่ายบนชุดข้อมูล Blender
การสนับสนุนไปป์ไลน์เต็มรูปแบบ (ด้วย Colmap, Polycam หรือ Record3D) เพื่อเปลี่ยนจากวิดีโอบนโทรศัพท์ของคุณไปสู่การเรนเดอร์ 3D เต็มรูปแบบ
ระบบกำหนดค่าที่ใช้งานง่าย
พัฒนาโดยเบรนท์ยี่
ไลบรารีสำหรับการเร่งการเรนเดอร์ NeRF
พัฒนาโดย Ruilong Li
คุณสามารถค้นหาบทความเขียนของเฟรมเวิร์กได้ใน arXiv
หากคุณใช้ห้องสมุดนี้หรือพบเอกสารที่เป็นประโยชน์สำหรับการวิจัยของคุณ โปรดพิจารณาการอ้างอิง:
@inproceedings{nerfstudio, title = {Nerfstudio: A Modular Framework for Neural Radiance Field Development}, author = { Tancik, Matthew and Weber, Ethan and Ng, Evonne and Li, Ruilong and Yi, Brent and Kerr, Justin and Wang, Terrance and Kristoffersen, Alexander and Austin, Jake and Salahi, Kamyar and Ahuja, Abhik and McAllister, David and Kanazawa, Angjoo }, year = 2023, booktitle = {ACM SIGGRAPH 2023 Conference Proceedings}, series = {SIGGRAPH '23} }