Bernhard Kerbl*, Georgios Kopanas*, Thomas Leimkühler, George Drettakis (* หมายถึงการมีส่วนร่วมที่เท่าเทียมกัน)
- หน้าเว็บ | บทความฉบับเต็ม | วิดีโอ | สิ่งตีพิมพ์ GRAPHDECO อื่นๆ | หน้าโครงการ FUNGRAPH |
- T&T+DB COLMAP (650MB) | โมเดลที่ผ่านการฝึกอบรมล่วงหน้า (14 GB) | โปรแกรมดูสำหรับ Windows (60MB) | รูปภาพการประเมินผล (7 GB) |
พื้นที่เก็บข้อมูลนี้ประกอบด้วยการใช้งานอย่างเป็นทางการของผู้เขียนที่เกี่ยวข้องกับรายงาน "3D Gaussian Splatting for Real-Time Radiance Field Rendering" ซึ่งสามารถพบได้ที่นี่ นอกจากนี้ เรายังจัดเตรียมรูปภาพอ้างอิงที่ใช้ในการสร้างตัววัดข้อผิดพลาดที่รายงานในรายงาน ตลอดจนแบบจำลองที่ผ่านการฝึกอบรมล่วงหน้าที่สร้างขึ้นล่าสุด
บทคัดย่อ: วิธีการ Radiance Field ได้ปฏิวัติการสังเคราะห์มุมมองแบบใหม่ของฉากที่ถ่ายด้วยภาพถ่ายหรือวิดีโอหลายภาพ อย่างไรก็ตาม การบรรลุคุณภาพของภาพระดับสูงยังคงต้องใช้โครงข่ายประสาทเทียมซึ่งมีค่าใช้จ่ายสูงในการฝึกอบรมและเรนเดอร์ ในขณะที่วิธีการที่เร็วกว่าเมื่อเร็วๆ นี้ย่อมต้องแลกความเร็วกับคุณภาพอย่างหลีกเลี่ยงไม่ได้ สำหรับฉากที่ไม่จำกัดและสมบูรณ์ (แทนที่จะเป็นวัตถุที่แยกออกจากกัน) และการเรนเดอร์ความละเอียด 1080p ไม่มีวิธีใดในปัจจุบันที่สามารถรับอัตราการแสดงผลแบบเรียลไทม์ เราแนะนำองค์ประกอบหลักสามประการที่ช่วยให้เราได้รับคุณภาพของภาพที่ล้ำสมัยในขณะที่ยังคงรักษาเวลาการฝึกซ้อมที่แข่งขันได้ และที่สำคัญช่วยให้สามารถสังเคราะห์มุมมองใหม่แบบเรียลไทม์คุณภาพสูง (≥ 30 fps) ที่ความละเอียด 1080p ประการแรก เริ่มต้นจากจุดกระจัดกระจายที่เกิดขึ้นระหว่างการปรับเทียบกล้อง เรานำเสนอฉากด้วย 3D Gaussians ที่จะรักษาคุณสมบัติที่ต้องการของฟิลด์การแผ่รังสีเชิงปริมาตรต่อเนื่องเพื่อการปรับฉากให้เหมาะสม ในขณะเดียวกันก็หลีกเลี่ยงการคำนวณที่ไม่จำเป็นในพื้นที่ว่าง ประการที่สอง เราทำการเพิ่มประสิทธิภาพ/การควบคุมความหนาแน่นแบบอินเทอร์ลีฟของ 3D Gaussians โดยเฉพาะอย่างยิ่งการปรับความแปรปรวนร่วมแบบแอนไอโซทรอปิกให้เหมาะสมเพื่อให้ได้การแสดงฉากที่แม่นยำ ประการที่สาม เราพัฒนาอัลกอริธึมการเรนเดอร์ที่รับรู้การมองเห็นที่รวดเร็ว ซึ่งรองรับการสาดแบบแอนไอโซทรอปิก และทั้งเร่งการฝึกอบรมและอนุญาตการเรนเดอร์แบบเรียลไทม์ เราแสดงให้เห็นถึงคุณภาพของภาพที่ล้ำสมัยและการเรนเดอร์แบบเรียลไทม์บนชุดข้อมูลที่สร้างขึ้นหลายชุด
@Article{kerbl3Dgaussians, author = {Kerbl, Bernhard and Kopanas, Georgios and Leimk{"u}hler, Thomas and Drettakis, George}, title = {3D Gaussian Splatting for Real-Time Radiance Field Rendering}, journal = {ACM Transactions on Graphics}, number = {4}, volume = {42}, month = {July}, year = {2023}, url = {https://repo-sam.inria.fr/fungraph/3d-gaussian-splatting/} }
งานวิจัยนี้ได้รับทุนสนับสนุนจาก ERC Advanced Grant FUNGRAPH No 788065 ผู้เขียนรู้สึกขอบคุณ Adobe สำหรับการบริจาคอย่างเอื้อเฟื้อ โครงสร้างพื้นฐาน OPAL จาก Université Côte d'Azur และทรัพยากร HPC จาก GENCI–IDRIS (Grant 2022-AD011013409) ผู้เขียนขอขอบคุณผู้วิจารณ์ที่ไม่ระบุชื่อสำหรับคำติชมอันมีค่า P. Hedman และ A. Tewari สำหรับการพิสูจน์อักษรร่างก่อนหน้านี้ รวมถึง T. Müller, A. Yu และ S. Fridovich-Keil ที่ช่วยในการเปรียบเทียบ
เรามีทรัพยากรที่จำกัดสำหรับการบำรุงรักษาและอัปเดตโค้ด อย่างไรก็ตาม เราได้เพิ่มคุณสมบัติใหม่บางอย่างนับตั้งแต่เปิดตัวครั้งแรก ซึ่งได้รับแรงบันดาลใจจากผลงานอันยอดเยี่ยมที่นักวิจัยคนอื่นๆ หลายคนทำใน 3DGS เราจะเพิ่มคุณสมบัติอื่น ๆ ภายในความสามารถของทรัพยากรของเรา
อัปเดตเดือนตุลาคม 2024 : เราได้รวมการเร่งความเร็วการฝึกอบรมและทำให้เข้ากันได้กับการปรับความลึก การลบรอยหยัก และการชดเชยแสง เราได้ปรับปรุงโปรแกรมดูแบบเรียลไทม์ของ SIBR ด้วยการแก้ไขจุดบกพร่องและเพิ่มคุณสมบัติในมุมมองด้านบนที่ช่วยให้มองเห็นภาพอินพุตและกล้องของผู้ใช้ได้
อัปเดตฤดูใบไม้ผลิปี 2024 : Orange Labs ได้เพิ่มการรองรับ OpenXR สำหรับการรับชม VR
Jonathan Stephens ได้สร้างบทช่วยสอนทีละขั้นตอนที่ยอดเยี่ยมสำหรับการตั้งค่า Gaussian Splatting บนเครื่องของคุณ พร้อมด้วยคำแนะนำในการสร้างชุดข้อมูลที่ใช้งานได้จากวิดีโอ หากคำแนะนำด้านล่างแห้งเกินไปสำหรับคุณ โปรดลองดูที่นี่
ผู้ใช้ Camenduru ใจดีพอที่จะจัดเตรียมเทมเพลต Colab ที่ใช้แหล่งที่มาของที่เก็บนี้ (สถานะ: สิงหาคม 2023!) เพื่อให้เข้าถึงวิธีการได้อย่างรวดเร็วและง่ายดาย โปรดตรวจสอบที่นี่
ที่เก็บมีโมดูลย่อย ดังนั้นโปรดตรวจสอบด้วย
# โคลน SSHgit [email protected]:graphdeco-inria/gaussian-splatting.git --recursive
หรือ
# โคลน HTTPSgit https://github.com/graphdeco-inria/gaussian-splatting --recursive
Codebase มี 4 องค์ประกอบหลัก:
เครื่องมือเพิ่มประสิทธิภาพที่ใช้ PyTorch เพื่อสร้างโมเดลเกาส์เซียน 3 มิติจากอินพุต SfM
โปรแกรมดูเครือข่ายที่ช่วยให้สามารถเชื่อมต่อและแสดงภาพกระบวนการเพิ่มประสิทธิภาพได้
โปรแกรมดูแบบเรียลไทม์ที่ใช้ OpenGL เพื่อเรนเดอร์โมเดลที่ผ่านการฝึกอบรมแบบเรียลไทม์
สคริปต์ที่จะช่วยคุณเปลี่ยนรูปภาพของคุณเองให้เป็นชุดข้อมูล SfM ที่พร้อมเพิ่มประสิทธิภาพ
ส่วนประกอบต่างๆ มีข้อกำหนดที่แตกต่างกันทั้งด้านฮาร์ดแวร์และซอฟต์แวร์ ได้รับการทดสอบบน Windows 10 และ Ubuntu Linux 22.04 คำแนะนำในการตั้งค่าและใช้งานแต่ละรายการมีอยู่ในส่วนด้านล่าง
เครื่องมือเพิ่มประสิทธิภาพใช้ส่วนขยาย PyTorch และ CUDA ในสภาพแวดล้อม Python เพื่อสร้างโมเดลที่ได้รับการฝึกอบรม
GPU ที่พร้อมใช้งาน CUDA พร้อมความสามารถในการคำนวณ 7.0+
VRAM 24 GB (เพื่อฝึกฝนคุณภาพการประเมินกระดาษ)
โปรดดูคำถามที่พบบ่อยสำหรับการกำหนดค่า VRAM ที่เล็กกว่า
Conda (แนะนำสำหรับการติดตั้งง่าย)
คอมไพเลอร์ C++ สำหรับส่วนขยาย PyTorch (เราใช้ Visual Studio 2019 สำหรับ Windows)
CUDA SDK 11 สำหรับส่วนขยาย PyTorch ติดตั้ง หลังจาก Visual Studio (เราใช้ 11.8 ปัญหาที่ทราบกับ 11.6 )
คอมไพเลอร์ C++ และ CUDA SDK ต้องเข้ากันได้
วิธีการติดตั้งตามค่าเริ่มต้นของเราจะขึ้นอยู่กับแพ็คเกจ Conda และการจัดการสภาพแวดล้อม:
SET DISTUILS_USE_SDK=1 # Windows onlyconda env สร้าง --fileสภาพแวดล้อม.yml conda เปิดใช้งาน gaussian_splatting
โปรดทราบว่ากระบวนการนี้จะถือว่าคุณได้ติดตั้ง CUDA SDK 11 แล้ว ไม่ใช่ 12 สำหรับการแก้ไข โปรดดูด้านล่าง
เคล็ดลับ: การดาวน์โหลดแพ็คเกจและการสร้างสภาพแวดล้อมใหม่ด้วย Conda อาจต้องใช้พื้นที่ดิสก์จำนวนมาก ตามค่าเริ่มต้น Conda จะใช้ฮาร์ดไดรฟ์ระบบหลัก คุณสามารถหลีกเลี่ยงปัญหานี้ได้โดยการระบุตำแหน่งการดาวน์โหลดแพ็คเกจอื่นและสภาพแวดล้อมบนไดรฟ์อื่น:
conda config -- เพิ่ม pkgs_dirs <ไดรฟ์>/conda env สร้าง --fileสภาพแวดล้อม.yml --คำนำหน้า <ไดรฟ์>/ /gaussian_splatting conda เปิดใช้งาน <ไดรฟ์>/ /gaussian_splatting
หากคุณสามารถซื้อพื้นที่ดิสก์ได้ เราขอแนะนำให้ใช้ไฟล์สภาพแวดล้อมของเราเพื่อตั้งค่าสภาพแวดล้อมการฝึกอบรมที่เหมือนกับของเรา หากคุณต้องการทำการแก้ไข โปรดทราบว่าการเปลี่ยนแปลงเวอร์ชันหลักอาจส่งผลต่อผลลัพธ์ของวิธีการของเรา อย่างไรก็ตาม การทดลอง (จำกัด) ของเราแนะนำว่าโค้ดเบสทำงานได้ดีในสภาพแวดล้อมที่ทันสมัยกว่า (Python 3.8, PyTorch 2.0.0, CUDA 12) ตรวจสอบให้แน่ใจว่าได้สร้างสภาพแวดล้อมที่ PyTorch และเวอร์ชันรันไทม์ CUDA ตรงกัน และ CUDA SDK ที่ติดตั้งไม่มีความแตกต่างระหว่างเวอร์ชันหลักกับเวอร์ชัน CUDA ของ PyTorch
ผู้ใช้บางรายประสบปัญหาในการสร้างโมดูลย่อยบน Windows ( cl.exe: File not found
หรือคล้ายกัน) โปรดพิจารณาวิธีแก้ปัญหาสำหรับปัญหานี้จากคำถามที่พบบ่อย
หากต้องการเรียกใช้เครื่องมือเพิ่มประสิทธิภาพ เพียงใช้
python train.py -s <เส้นทางไปยังชุดข้อมูล COLMAP หรือ NeRF Synthetic>
พาธไปยังไดเร็กทอรีต้นทางที่มีชุดข้อมูล COLMAP หรือ Synthetic NeRF
เส้นทางที่ควรจัดเก็บโมเดลที่ได้รับการฝึก ( output/
โดยค่าเริ่มต้น)
ไดเรกทอรีย่อยทางเลือกสำหรับรูปภาพ COLMAP ( images
ตามค่าเริ่มต้น)
เพิ่มแฟล็กนี้เพื่อใช้การแยกการฝึก/การทดสอบสไตล์ MipNeRF360 สำหรับการประเมินผล
ระบุความละเอียดของภาพที่โหลดก่อนการฝึก หากระบุ 1, 2, 4
หรือ 8
ให้ใช้ความละเอียดดั้งเดิม 1/2, 1/4 หรือ 1/8 ตามลำดับ สำหรับค่าอื่นๆ ทั้งหมด ให้ปรับขนาดความกว้างใหม่เป็นตัวเลขที่กำหนดโดยยังคงรักษาขนาดของรูปภาพไว้ หากไม่ได้ตั้งค่าและความกว้างของภาพที่อินพุตเกิน 1.6K พิกเซล อินพุตจะถูกปรับขนาดใหม่เป็นเป้าหมายนี้โดยอัตโนมัติ
ระบุตำแหน่งที่จะวางข้อมูลอิมเมจต้นฉบับ โดยค่าเริ่มต้น cuda
แนะนำให้ใช้ cpu
หากการฝึกบนชุดข้อมูลขนาดใหญ่/ความละเอียดสูง จะลดการใช้ VRAM แต่จะทำให้การฝึกช้าลงเล็กน้อย ขอบคุณ HrsPythonix
เพิ่มแฟล็กนี้เพื่อใช้พื้นหลังสีขาวแทนสีดำ (ค่าเริ่มต้น) เช่น สำหรับการประเมินชุดข้อมูล NeRF Synthetic
ลำดับฮาร์โมนิคทรงกลมที่จะใช้ (ไม่เกิน 3) 3
โดยค่าเริ่มต้น
ตั้งค่าสถานะเพื่อให้ไปป์ไลน์คำนวณไปข้างหน้าและข้างหลังของ SH ด้วย PyTorch แทนที่จะเป็นของเรา
ตั้งค่าสถานะเพื่อทำให้ไปป์ไลน์คำนวณไปข้างหน้าและข้างหลังของความแปรปรวนร่วม 3 มิติด้วย PyTorch แทนที่จะเป็นของเรา
เปิดใช้งานโหมดแก้ไขข้อบกพร่องหากคุณพบข้อผิดพลาด หากแรสเตอร์ไรเซอร์ล้มเหลว ไฟล์ dump
จะถูกสร้างขึ้นโดยคุณสามารถส่งต่อปัญหาให้เราได้ เพื่อให้เราตรวจสอบต่อไป
การดีบักทำได้ ช้า คุณสามารถระบุการวนซ้ำ (เริ่มจาก 0) หลังจากนั้นการดีบักข้างต้นจะเริ่มทำงาน
จำนวนการวนซ้ำทั้งหมดเพื่อฝึก 30_000
โดยค่าเริ่มต้น
IP เพื่อเริ่มเซิร์ฟเวอร์ GUI 127.0.0.1
โดยค่าเริ่มต้น
พอร์ตที่จะใช้สำหรับเซิร์ฟเวอร์ GUI 6009
เป็นค่าเริ่มต้น
การวนซ้ำแบบแยกช่องว่างซึ่งสคริปต์การฝึกอบรมคำนวณ L1 และ PSNR เหนือชุดทดสอบ โดยค่าเริ่มต้นคือ 7000 30000
การวนซ้ำแบบแยกช่องว่างซึ่งสคริปต์การฝึกจะบันทึกแบบจำลองเกาส์เซียน 7000 30000
โดยค่าเริ่มต้น
การวนซ้ำแบบแยกช่องว่างเพื่อจัดเก็บจุดตรวจสอบเพื่อดำเนินการต่อในภายหลัง บันทึกในไดเร็กทอรีโมเดล
เส้นทางไปยังจุดตรวจที่บันทึกไว้เพื่อฝึกต่อ
ตั้งค่าสถานะเพื่อละเว้นข้อความใดๆ ที่เขียนลงในไปป์มาตรฐาน
ฮาร์โมนิคทรงกลมมีอัตราการเรียนรู้ 0.0025
ตามค่าเริ่มต้น
อัตราการเรียนรู้ความทึบ 0.05
โดยค่าเริ่มต้น
อัตราการเรียนรู้การปรับขนาด 0.005
โดยค่าเริ่มต้น
อัตราการเรียนรู้การหมุน 0.001
โดยค่าเริ่มต้น
จำนวนขั้นตอน (ตั้งแต่ 0) โดยที่อัตราการเรียนรู้ตำแหน่งตั้งแต่ initial
ไปจนถึง final
30_000
โดยค่าเริ่มต้น
อัตราการเรียนรู้ตำแหน่ง 3D เริ่มต้น 0.00016
โดยค่าเริ่มต้น
อัตราการเรียนรู้ตำแหน่ง 3D สุดท้าย 0.0000016
โดยค่าเริ่มต้น
ตัวคูณอัตราการเรียนรู้ตำแหน่ง (เทียบกับ Plenoxels) 0.01
โดยค่าเริ่มต้น
การวนซ้ำที่เริ่มต้นการเพิ่มความหนาแน่น 500
โดยค่าเริ่มต้น
การวนซ้ำเมื่อหยุดความหนาแน่น 15_000
โดยค่าเริ่มต้น
ขีดจำกัดที่ตัดสินใจว่าจุดควรจะมีความหนาแน่นตามการไล่ระดับตำแหน่ง 2D หรือไม่ โดยค่าเริ่มต้นคือ 0.0002
ความถี่ในการเพิ่มความหนาแน่น 100
(ทุกๆ 100 รอบ) โดยค่าเริ่มต้น
ความถี่ในการรีเซ็ตความทึบ 3_000
โดยค่าเริ่มต้น
อิทธิพลของ SSIM ต่อการสูญเสียทั้งหมดตั้งแต่ 0 ถึง 1, 0.2
โดยค่าเริ่มต้น
เปอร์เซ็นต์ของขอบเขตฉาก (0--1) จุดต้องเกินจึงจะบังคับให้มีความหนาแน่นได้ โดยค่าเริ่มต้นคือ 0.01
โปรดทราบว่าคล้ายกับ MipNeRF360 เรากำหนดเป้าหมายรูปภาพที่ความละเอียดในช่วงพิกเซล 1-1.6K เพื่อความสะดวก สามารถส่งอินพุตที่มีขนาดที่กำหนดเองได้ และจะถูกปรับขนาดโดยอัตโนมัติหากความกว้างเกิน 1600 พิกเซล เราขอแนะนำให้คงพฤติกรรมนี้ไว้ แต่คุณอาจบังคับให้ฝึกใช้รูปภาพที่มีความละเอียดสูงกว่าได้โดยการตั้งค่า -r 1
ฉาก MipNeRF360 จัดทำโดยผู้เขียนบทความที่นี่ คุณสามารถค้นหาชุดข้อมูล SfM สำหรับ Tanks&Temples และ Deep Blending ได้ที่นี่ หากคุณไม่ได้ระบุไดเร็กทอรีโมเดลเอาต์พุต ( -m
) โมเดลที่ผ่านการฝึกอบรมจะถูกเขียนลงในโฟลเดอร์ที่มีชื่อเฉพาะแบบสุ่มภายในไดเร็กทอรี output
ณ จุดนี้ โมเดลที่ได้รับการฝึกแล้วสามารถดูได้ด้วยโปรแกรมดูแบบเรียลไทม์ (ดูเพิ่มเติมด้านล่าง)
ตามค่าเริ่มต้น โมเดลที่ผ่านการฝึกอบรมจะใช้รูปภาพที่มีอยู่ทั้งหมดในชุดข้อมูล หากต้องการฝึกอบรมพวกเขาในขณะที่ระงับชุดการทดสอบสำหรับการประเมิน ให้ใช้แฟล็ก --eval
ด้วยวิธีนี้ คุณสามารถเรนเดอร์ชุดการฝึก/การทดสอบ และสร้างตัววัดข้อผิดพลาดได้ดังต่อไปนี้:
python train.py -s--eval # Train with train/test splitpython render.py -m # Generate renderingspython metrics.py -m # การวัดข้อผิดพลาดในการคำนวณในการเรนเดอร์
หากคุณต้องการประเมินโมเดลที่ได้รับการฝึกอบรมล่วงหน้าของเรา คุณจะต้องดาวน์โหลดชุดข้อมูลต้นฉบับที่เกี่ยวข้อง และระบุตำแหน่งของชุดข้อมูลดังกล่าวเพื่อ render.py
พร้อมด้วยแฟล็ก --source_path/-s
เพิ่มเติม หมายเหตุ: โมเดลที่ได้รับการฝึกล่วงหน้าถูกสร้างขึ้นด้วยรหัสรีลีส ฐานโค้ดนี้ได้รับการล้างข้อมูลแล้วและมีการแก้ไขข้อบกพร่องด้วย ดังนั้นตัวชี้วัดที่คุณได้รับจากการประเมินจะแตกต่างจากตัวชี้วัดในรายงาน
python render.py -m-s python metrics.py -m
เส้นทางไปยังไดเร็กทอรีโมเดลที่ได้รับการฝึกที่คุณต้องการสร้างการเรนเดอร์
ตั้งค่าสถานะเพื่อข้ามการเรนเดอร์ชุดการฝึก
ตั้งค่าสถานะเพื่อข้ามการเรนเดอร์ชุดทดสอบ
ตั้งค่าสถานะเพื่อละเว้นข้อความใดๆ ที่เขียนลงในไปป์มาตรฐาน
พารามิเตอร์ด้านล่างจะถูกอ่านโดยอัตโนมัติจากพาธโมเดล โดยขึ้นอยู่กับสิ่งที่ใช้สำหรับการฝึก อย่างไรก็ตาม คุณสามารถแทนที่ได้โดยระบุอย่างชัดเจนในบรรทัดคำสั่ง
พาธไปยังไดเร็กทอรีต้นทางที่มีชุดข้อมูล COLMAP หรือ Synthetic NeRF
ไดเรกทอรีย่อยทางเลือกสำหรับรูปภาพ COLMAP ( images
ตามค่าเริ่มต้น)
เพิ่มแฟล็กนี้เพื่อใช้การแยกการฝึก/การทดสอบสไตล์ MipNeRF360 สำหรับการประเมินผล
เปลี่ยนความละเอียดของภาพที่โหลดก่อนการฝึก หากระบุ 1, 2, 4
หรือ 8
ให้ใช้ความละเอียดดั้งเดิม 1/2, 1/4 หรือ 1/8 ตามลำดับ สำหรับค่าอื่นๆ ทั้งหมด ให้ปรับขนาดความกว้างใหม่เป็นตัวเลขที่กำหนดโดยยังคงรักษาขนาดของรูปภาพไว้ 1
โดยค่าเริ่มต้น
เพิ่มแฟล็กนี้เพื่อใช้พื้นหลังสีขาวแทนสีดำ (ค่าเริ่มต้น) เช่น สำหรับการประเมินชุดข้อมูล NeRF Synthetic
ตั้งค่าสถานะเพื่อสร้างไปป์ไลน์เรนเดอร์ด้วย SH ที่คำนวณจาก PyTorch แทนที่จะเป็นของเรา
ตั้งค่าสถานะเพื่อสร้างการเรนเดอร์ไปป์ไลน์ด้วยความแปรปรวนร่วม 3 มิติที่คำนวณจาก PyTorch แทนที่จะเป็นของเรา
รายการเส้นทางโมเดลที่คั่นด้วยช่องว่างที่ควรคำนวณเมตริก
นอกจากนี้เรายังมีสคริปต์ full_eval.py
เพิ่มเติมอีกด้วย สคริปต์นี้ระบุกิจวัตรที่ใช้ในการประเมินของเรา และสาธิตการใช้พารามิเตอร์เพิ่มเติมบางอย่าง เช่น --images (-i)
เพื่อกำหนดไดเร็กทอรีรูปภาพอื่นภายในชุดข้อมูล COLMAP หากคุณดาวน์โหลดและแตกข้อมูลการฝึกอบรมทั้งหมดแล้ว คุณสามารถเรียกใช้ได้ดังนี้:
python full_eval.py -m360 <โฟลเดอร์ mipnerf360> -tat <โฟลเดอร์ tanks and Temples> -db <โฟลเดอร์ผสมแบบลึก>
ในเวอร์ชันปัจจุบัน กระบวนการนี้ใช้เวลาประมาณ 7 ชั่วโมงสำหรับเครื่องอ้างอิงของเราที่มี A6000 หากคุณต้องการประเมินโมเดลที่ได้รับการฝึกอบรมล่วงหน้าอย่างเต็มรูปแบบ คุณสามารถระบุตำแหน่งการดาวน์โหลดและข้ามการฝึกอบรมได้
python full_eval.py -o <ไดเรกทอรีพร้อมโมเดลที่ผ่านการฝึกอบรม> --skip_training -m360 <โฟลเดอร์ mipnerf360> -tat <โฟลเดอร์ถังและวัด> -db <โฟลเดอร์ผสมลึก>
หากคุณต้องการคำนวณหน่วยเมตริกบนรูปภาพประเมินผลกระดาษของเรา คุณสามารถข้ามการเรนเดอร์ได้ ในกรณีนี้ ไม่จำเป็นต้องจัดเตรียมชุดข้อมูลต้นทาง คุณสามารถคำนวณหน่วยเมตริกสำหรับชุดรูปภาพหลายชุดในคราวเดียว
python full_eval.py -m <ไดเรกทอรีพร้อมรูปภาพการประเมินผล>/garden ... --skip_training --skip_rendering
เรามีผู้ชมแบบโต้ตอบสองรายสำหรับวิธีการของเรา: ระยะไกลและเรียลไทม์ โซลูชันการรับชมของเราใช้กรอบงาน SIBR ซึ่งพัฒนาโดยกลุ่ม GRAPHDECO สำหรับโครงการสังเคราะห์มุมมองใหม่หลายโครงการ
GPU และไดรเวอร์ที่พร้อมใช้งาน OpenGL 4.5 (หรือซอฟต์แวร์ MESA ล่าสุด)
แนะนำให้ใช้ VRAM 4 GB
GPU ที่พร้อมใช้งาน CUDA พร้อมความสามารถในการคำนวณ 7.0+ (สำหรับโปรแกรมดูแบบเรียลไทม์เท่านั้น)
Visual Studio หรือ g++ ไม่ใช่ Clang (เราใช้ Visual Studio 2019 สำหรับ Windows)
CUDA SDK 11 ติดตั้ง หลังจาก Visual Studio (เราใช้ 11.8)
CMake (เวอร์ชั่นล่าสุดเราใช้ 3.24)
7zip (เฉพาะบน Windows)
เรามีไบนารีที่สร้างไว้ล่วงหน้าสำหรับ Windows ที่นี่ เราขอแนะนำให้ใช้บน Windows เพื่อการตั้งค่าที่มีประสิทธิภาพ เนื่องจากการสร้าง SIBR เกี่ยวข้องกับการพึ่งพาภายนอกหลายอย่างที่ต้องดาวน์โหลดและคอมไพล์ได้ทันที
หากคุณโคลนด้วยโมดูลย่อย (เช่น การใช้ --recursive
) ซอร์สโค้ดสำหรับผู้ดูจะพบใน SIBR_viewers
โปรแกรมดูเครือข่ายทำงานภายในกรอบงาน SIBR สำหรับแอปพลิเคชันการเรนเดอร์ตามรูปภาพ
CMake ควรดูแลการพึ่งพาของคุณ
ซีดี SIBR_viewers cmake -Bbuild .cmake --build build --target ติดตั้ง --config RelWithDebInfo
คุณสามารถระบุการกำหนดค่าอื่นได้ เช่น Debug
หากคุณต้องการการควบคุมที่มากขึ้นในระหว่างการพัฒนา
คุณจะต้องติดตั้งการขึ้นต่อกันบางอย่างก่อนที่จะรันการตั้งค่าโปรเจ็กต์
# การพึ่งพา sudo apt ติดตั้ง -y libglew-dev libassimp-dev libboost-all-dev libgtk-3-dev libopencv-dev libglfw3-dev libavdevice-dev libavcodec-dev libeigen3-dev libxxf86vm-dev libembree-dev# การตั้งค่าโครงการ cd SIBR_viewers cmake -Bbuild . -DCMAKE_BUILD_TYPE=ปล่อย # เพิ่ม -G Ninja เพื่อสร้าง cmake ที่เร็วขึ้น --build build -j24 --การติดตั้งเป้าหมาย
ความเข้ากันได้แบบย้อนหลังกับ Focal Fossa ยังไม่ได้รับการทดสอบอย่างสมบูรณ์ แต่การสร้าง SIBR ด้วย CMake ยังคงใช้งานได้หลังจากการเรียกใช้
git ชำระเงิน fossa_compatibility
อินเทอร์เฟซ SIBR มีวิธีการนำทางฉากหลายวิธี ตามค่าเริ่มต้น คุณจะเริ่มต้นด้วยตัวนำทาง FPS ซึ่งคุณสามารถควบคุมด้วย W, A, S, D, Q, E
สำหรับการแปลด้วยกล้อง และ I, K, J, L, U, O
สำหรับการหมุน หรือคุณอาจต้องการใช้เครื่องนำทางแบบแทร็กบอล (เลือกจากเมนูลอย) คุณยังสามารถสแนปไปที่กล้องจากชุดข้อมูลด้วยปุ่ม Snap to
หรือค้นหากล้องที่ใกล้ที่สุดโดยใช้ Snap to closest
เมนูแบบลอยยังช่วยให้คุณเปลี่ยนความเร็วในการนำทางได้ คุณสามารถใช้ Scaling Modifier
เพื่อควบคุมขนาดของ Gaussians ที่แสดง หรือแสดงคลาวด์จุดเริ่มต้น
หลังจากแยกหรือติดตั้งวิวเวอร์แล้ว คุณสามารถรันแอป SIBR_remoteGaussian_app[_config]
ที่คอมไพล์แล้วได้ใน
เช่น:
.//bin/SIBR_remoteGaussian_app
โปรแกรมดูเครือข่ายช่วยให้คุณสามารถเชื่อมต่อกับกระบวนการฝึกอบรมที่กำลังดำเนินการอยู่บนเครื่องเดียวกันหรือเครื่องอื่นได้ หากคุณกำลังฝึกอบรมบนเครื่องและระบบปฏิบัติการเดียวกัน ไม่จำเป็นต้องมีพารามิเตอร์บรรทัดคำสั่ง: เครื่องมือเพิ่มประสิทธิภาพจะสื่อสารตำแหน่งของข้อมูลการฝึกอบรมไปยังผู้ดูเครือข่าย ตามค่าเริ่มต้น เครื่องมือเพิ่มประสิทธิภาพและผู้ดูเครือข่ายจะพยายามสร้างการเชื่อมต่อบน localhost บนพอร์ต 6009 คุณสามารถเปลี่ยนลักษณะการทำงานนี้ได้โดยจัดเตรียมพารามิเตอร์ --ip
และ --port
ที่ตรงกันให้กับทั้งเครื่องมือเพิ่มประสิทธิภาพและผู้ดูเครือข่าย หากผู้ดูเครือข่ายไม่สามารถเข้าถึงเส้นทางที่ใช้โดยเครื่องมือเพิ่มประสิทธิภาพเพื่อค้นหาข้อมูลการฝึกอบรมได้ (เช่น เนื่องจากเส้นทางเหล่านั้นทำงานบนเครื่อง (เสมือน) ที่แตกต่างกัน) คุณอาจระบุตำแหน่งแทนที่ให้กับผู้ดูได้โดยใช้ -s
อาร์กิวเมนต์เพื่อแทนที่เส้นทางของโมเดลไปยังชุดข้อมูลต้นทาง
IP ที่จะใช้สำหรับการเชื่อมต่อกับสคริปต์การฝึกอบรมที่กำลังรันอยู่
พอร์ตที่จะใช้สำหรับเชื่อมต่อกับสคริปต์การฝึกอบรมที่กำลังรันอยู่
ใช้ตัวเลขที่คั่นด้วยช่องว่างสองช่องเพื่อกำหนดความละเอียดในการแสดงผลเครือข่าย ซึ่งก็คือความกว้าง 1200
ตามค่าเริ่มต้น โปรดทราบว่าในการบังคับใช้ลักษณะที่แตกต่างจากภาพที่ป้อนเข้า คุณต้อง --force-aspect-ratio
ด้วย
ตั้งค่าสถานะเพื่อโหลดรูปภาพชุดข้อมูลต้นฉบับที่จะแสดงในมุมมองด้านบนของกล้องแต่ละตัว
หลังจากแยกหรือติดตั้งวิวเวอร์แล้ว คุณสามารถรันแอป SIBR_gaussianViewer_app[_config]
ที่คอมไพล์แล้วได้ใน
เช่น:
.//bin/SIBR_gaussianViewer_app -m <เส้นทางไปยังโมเดลที่ได้รับการฝึก>
ควรเพียงพอที่จะจัดเตรียมพารามิเตอร์ -m
ที่ชี้ไปยังไดเร็กทอรีโมเดลที่ได้รับการฝึก หรือคุณสามารถระบุตำแหน่งแทนที่สำหรับข้อมูลอินพุตการฝึกโดยใช้ -s
หากต้องการใช้ความละเอียดเฉพาะนอกเหนือจากที่เลือกอัตโนมัติ ให้ระบุ --rendering-size
รวมกับ --force-aspect-ratio
หากคุณต้องการความละเอียดที่แน่นอนและไม่ต้องกังวลเรื่องความผิดเพี้ยนของภาพ
หากต้องการปลดล็อคอัตราเฟรมเต็ม โปรดปิดการใช้งาน V-Sync บนเครื่องของคุณและในแอปพลิเคชันด้วย (เมนู → จอภาพ) ในระบบที่มี GPU หลายตัว (เช่น แล็ปท็อป) OpenGL/Display GPU ของคุณควรเหมือนกับ CUDA GPU ของคุณ (เช่น โดยการตั้งค่าการตั้งค่า GPU ของแอปพลิเคชันบน Windows โปรดดูด้านล่าง) เพื่อประสิทธิภาพสูงสุด นอกเหนือจากเมฆจุดเริ่มต้นและจุดแล้ว คุณยังมีตัวเลือกในการแสดงภาพ Gaussians โดยแสดงผลเป็นรูปวงรีจากเมนูลอย SIBR มีฟังก์ชันอื่นๆ มากมาย โปรดดูเอกสารประกอบสำหรับรายละเอียดเพิ่มเติมเกี่ยวกับตัวแสดง ตัวเลือกการนำทาง ฯลฯ นอกจากนี้ยังมีมุมมองด้านบน (มีให้จากเมนู) ที่แสดงตำแหน่งของกล้องอินพุตและพอยต์คลาวด์ SfM ดั้งเดิม โปรดทราบว่า Top View จะทำให้การเรนเดอร์ช้าลงเมื่อเปิดใช้งาน โปรแกรมดูแบบเรียลไทม์ยังใช้การคัดสรรที่รวดเร็วและดุดันมากขึ้นเล็กน้อย ซึ่งสามารถสลับได้ในเมนูลอย หากคุณเคยพบปัญหาที่สามารถแก้ไขได้ด้วยการปิดการคัดเลือกอย่างรวดเร็ว โปรดแจ้งให้เราทราบ
ตัวโหลด COLMAP ของเราคาดหวังโครงสร้างชุดข้อมูลต่อไปนี้ในตำแหน่งเส้นทางต้นทาง:
|---images | |--- | |--- | |---... |---sparse |---0 |---cameras.bin |---images.bin |---points3D.bin
สำหรับการแรสเตอร์ กล้องรุ่นต้องเป็นกล้อง SIMPLE_PINHOLE หรือ PINHOLE เรามีสคริปต์ตัวแปลงไฟล์ convert.py
เพื่อแยกรูปภาพที่ไม่ถูกบิดเบือนและข้อมูล SfM จากรูปภาพที่ป้อน หรือคุณสามารถใช้ ImageMagick เพื่อปรับขนาดภาพที่ไม่ถูกบิดเบือนได้ การลดขนาดนี้คล้ายกับ MipNeRF360 กล่าวคือ สร้างรูปภาพที่มีความละเอียดดั้งเดิม 1/2, 1/4 และ 1/8 ในโฟลเดอร์ที่เกี่ยวข้อง หากต้องการใช้งาน โปรดติดตั้ง COLMAP เวอร์ชันล่าสุด (ขับเคลื่อนด้วย CUDA) และ ImageMagick เวอร์ชันล่าสุด ใส่รูปภาพที่คุณต้องการใช้ในไดเร็กทอรี
|---input |--- |--- |---...
หากคุณมี COLMAP และ ImageMagick บนเส้นทางระบบของคุณ คุณก็สามารถเรียกใช้ได้
python Convert.py -s[--resize] #หากไม่ปรับขนาดก็ไม่จำเป็นต้องใช้ ImageMagick
หรือคุณสามารถใช้พารามิเตอร์เสริม --colmap_executable
และ --magick_executable
เพื่อชี้ไปยังเส้นทางที่เกี่ยวข้อง โปรดทราบว่าบน Windows ไฟล์ปฏิบัติการควรชี้ไปที่ไฟล์ COLMAP .bat
ที่ดูแลการตั้งค่าสภาพแวดล้อมการดำเนินการ เมื่อเสร็จแล้ว
จะมีโครงสร้างชุดข้อมูล COLMAP ที่คาดหวัง พร้อมด้วยรูปภาพอินพุตที่ปรับขนาดและไม่มีการบิดเบี้ยว นอกเหนือจากรูปภาพต้นฉบับของคุณและข้อมูลชั่วคราว (บิดเบี้ยว) บางส่วนในไดเร็กทอรี distorted
หากคุณมีชุดข้อมูล COLMAP ของคุณเองโดยไม่มีการบิดเบือน (เช่น การใช้กล้อง OPENCV
) คุณสามารถลองเรียกใช้ส่วนสุดท้ายของสคริปต์ได้: ใส่รูปภาพใน input
และข้อมูล COLMAP ในไดเรกทอรีย่อย distorted
:
|---input | |--- | |--- | |---... |---distorted |---database.db |---sparse |---0 |---...
จากนั้นจึงวิ่ง
python Convert.py -s--skip_matching [--resize] #หากไม่ปรับขนาดก็ไม่จำเป็นต้องใช้ ImageMagick
ตั้งค่าสถานะเพื่อหลีกเลี่ยงการใช้ GPU ใน COLMAP
ตั้งค่าสถานะเพื่อระบุว่ามีข้อมูล COLMAP สำหรับรูปภาพ
ตำแหน่งของอินพุต
กล้องรุ่นใดที่จะใช้สำหรับขั้นตอนการจับคู่เบื้องต้น OPENCV
เป็นค่าเริ่มต้น
ตั้งค่าสถานะสำหรับการสร้างรูปภาพอินพุตในเวอร์ชันที่ปรับขนาดแล้ว
เส้นทางไปยังไฟล์ปฏิบัติการ COLMAP ( .bat
บน Windows)
เส้นทางไปยังปฏิบัติการ ImageMagick
เราได้รวมการทดแทนแบบดรอปอินจาก Taming-3dgs 1 เข้ากับ ssim ที่หลอมรวมเข้ากับโค้ดเบสดั้งเดิมเพื่อเร่งเวลาการฝึกอบรม เมื่อติดตั้งแล้ว โปรแกรมแรสเตอร์ไรเซอร์แบบเร่งจะส่งไฟล์ --optimizer_type default
และ --optimizer_type sparse_adam
หากต้องการได้รับเวลาการฝึกอบรมที่เร็วขึ้น คุณต้องติดตั้งแรสเตอร์ไรเซอร์แบบเร่งลงในสภาพแวดล้อมของคุณก่อน:
pip ถอนการติดตั้ง diff-gaussian-rasterization -ycd submodules / diff-gaussian-rasterization rm -r สร้าง git ชำระเงิน 3dgs_accel การติดตั้ง pip
จากนั้นคุณสามารถเพิ่มพารามิเตอร์ต่อไปนี้เพื่อใช้เครื่องมือเพิ่มประสิทธิภาพ sparse adam เมื่อรัน train.py
:
--optimizer_type sparse_adam
โปรดทราบว่าแรสเตอร์ไลเซอร์ที่กำหนดเองนี้มีลักษณะการทำงานที่แตกต่างจากเวอร์ชันดั้งเดิม สำหรับรายละเอียดเพิ่มเติมเกี่ยวกับเวลาการฝึก โปรดดูสถิติสำหรับเวลาการฝึก
1. Mallick และ Goel และคณะ 'ฝึกฝน 3DGS: สนาม Radiance คุณภาพสูงพร้อมทรัพยากรที่จำกัด' เอกสารการประชุม SIGGRAPH Asia 2024, 2024, https://doi.org/10.1145/3680528.3687694, github
เพื่อให้ฉากที่สร้างขึ้นใหม่ดีขึ้น เราใช้แผนที่เชิงลึกเป็นตัวสำคัญในระหว่างการปรับให้เหมาะสมกับภาพที่นำเข้าแต่ละภาพ ใช้งานได้ดีที่สุดกับชิ้นส่วนที่ไม่มีพื้นผิว เช่น ถนน และสามารถถอดโฟลตได้ เอกสารหลายฉบับได้ใช้แนวคิดที่คล้ายคลึงกันเพื่อปรับปรุงแง่มุมต่างๆ ของ 3DGS; (เช่น DepthRegularizedGS, SparseGS, DNGaussian) การปรับความลึกให้เป็นมาตรฐานที่เรารวมเข้าด้วยกันคือสิ่งที่ใช้ในรายงาน 3DGS แบบลำดับชั้นของเรา แต่นำไปใช้กับ 3DGS ดั้งเดิม สำหรับบางฉาก (เช่น ฉาก DeepBlending) จะปรับปรุงคุณภาพอย่างมีนัยสำคัญ สำหรับคนอื่นๆ อาจสร้างความแตกต่างเล็กน้อยหรืออาจแย่กว่านั้นก็ได้ ตัวอย่างเช่น ผลลัพธ์ที่แสดงประโยชน์ที่เป็นไปได้และสถิติด้านคุณภาพ โปรดดูที่นี่: สถิติสำหรับการปรับความลึกให้เป็นมาตรฐาน
เมื่อฝึกชุดข้อมูลสังเคราะห์ สามารถสร้างแผนที่เชิงลึกได้ และไม่จำเป็นต้องใช้การประมวลผลเพิ่มเติมในวิธีการของเรา
สำหรับชุดข้อมูลในโลกแห่งความเป็นจริง ควรสร้างแผนที่เชิงลึกสำหรับภาพที่นำเข้าแต่ละภาพ โปรดดำเนินการดังต่อไปนี้:
โคลนความลึกอะไรก็ได้ v2:
git clone https://github.com/DepthAnything/Depth-Anything-V2.git
ดาวน์โหลดตุ้มน้ำหนักจาก Depth-Anything-V2-Large และวางไว้ใต้ Depth-Anything-V2/checkpoints/
สร้างแผนที่เชิงลึก:
python Depth-Anything-V2/run.py --encoder vitl --pred-only --grayscale --img-path--outdir
สร้างไฟล์ depth_params.json
โดยใช้:
python utils/make_depth_scale.py --base_dir--depths_dir
ควรตั้งค่าพารามิเตอร์ใหม่เมื่อฝึกหากคุณต้องการใช้การปรับความลึกให้เป็นมาตรฐาน -d
เพื่อชดเชยการเปลี่ยนแปลงการรับแสงในภาพอินพุตต่างๆ เราได้ปรับการแปลงความสัมพันธ์สำหรับแต่ละภาพให้เหมาะสม เช่นเดียวกับใน 3dgs แบบลำดับชั้น
วิธีนี้สามารถปรับปรุงผลลัพธ์ของการสร้างภาพ "ในป่า" ได้อย่างมาก เช่น ด้วยสมาร์ทโฟน เมื่อการตั้งค่าการเปิดรับแสงของกล้องไม่คงที่ ตัวอย่างเช่น ผลลัพธ์ที่แสดงประโยชน์ที่เป็นไปได้และสถิติเกี่ยวกับคุณภาพ โปรดดูที่นี่: สถิติสำหรับการชดเชยการสัมผัส
เพิ่มพารามิเตอร์ต่อไปนี้เพื่อเปิดใช้งาน:
--exposure_lr_init 0.001 --exposure_lr_final 0.0001 --exposure_lr_delay_steps 5000 --exposure_lr_delay_mult 0.001 --train_test_exp
บทความดีๆ อื่นๆ ก็ใช้แนวคิดที่คล้ายกัน เช่น NeRF-W, URF
เราได้เพิ่มตัวกรอง EWA จาก Mip Splatting ในโค้ดเบสของเราเพื่อลบนามแฝง มันถูกปิดใช้งานโดยค่าเริ่มต้น แต่คุณสามารถเปิดใช้งานได้โดยการเพิ่ม --antialiasing
เมื่อฝึกในฉากโดยใช้ train.py
หรือการเรนเดอร์โดยใช้ render.py
การลดรอยหยักสามารถสลับได้ในโปรแกรมดู SIBR ซึ่งจะถูกปิดใช้งานตามค่าเริ่มต้น แต่คุณควรเปิดใช้งานเมื่อดูฉากที่ฝึกฝนโดยใช้ --antialiasing
ฉากนี้ได้รับการฝึกฝนโดยใช้ --antialiasing
Views > Top view
Top view
เรนเดอร์ SfM point cloud ในอีกมุมมองหนึ่งด้วยกล้องอินพุตที่เกี่ยวข้องและกล้องของผู้ใช้ Point view
ช่วยให้เห็นภาพว่าผู้ดูอยู่ห่างจากกล้องอินพุตมากเพียงใด
เป็นมุมมอง 3 มิติเพื่อให้ผู้ใช้สามารถนำทางผ่านได้เช่นเดียวกับใน Point view
(โหมดที่ใช้งานได้: FPS, แทร็กบอล, วงโคจร)
มีตัวเลือกในการปรับแต่งมุมมองนี้ สามารถปิดใช้/เปิดใช้งานเมช และปรับขนาดได้
ฟังก์ชันเพิ่มเติมที่มีประโยชน์คือการย้ายไปยังตำแหน่งของภาพที่นำเข้า และค่อย ๆ จางหายไปที่มุมมองจุด SfM ในตำแหน่งนั้น (เช่น เพื่อตรวจสอบการจัดตำแหน่งกล้อง) มุมมองจากกล้องอินพุตสามารถแสดงใน Top view
( โปรดทราบว่าต้องตั้งค่า --images-path
ในบรรทัดคำสั่ง ) เราสามารถสแนปกล้อง Top view
ไปยังกล้องอินพุตที่ใกล้ที่สุดจากกล้องของผู้ใช้ใน Point view
โดยคลิก Top view settings > Cameras > Snap to closest
OpenXR ได้รับการสนับสนุนในสาขา gaussian_code_release_openxr
ภายในสาขานั้น คุณสามารถดูเอกสารสำหรับการรองรับ VR ได้ที่นี่
ฉันจะหาชุดข้อมูล เช่น ชุดข้อมูลที่อ้างอิงใน full_eval.py
ได้ที่ไหน ชุดข้อมูล MipNeRF360 จัดทำโดยผู้เขียนบทความต้นฉบับบนเว็บไซต์โครงการ โปรดทราบว่าชุดข้อมูลสองชุดไม่สามารถแบ่งปันอย่างเปิดเผยได้ และคุณต้องปรึกษาผู้เขียนโดยตรง สำหรับ Tanks&Temples และ Deep Blending โปรดใช้ลิงก์ดาวน์โหลดที่อยู่ด้านบนของหน้า หรือคุณสามารถเข้าถึงข้อมูลโคลน (สถานะ: สิงหาคม 2023!) จาก HuggingFace
ฉันจะใช้สิ่งนี้กับชุดข้อมูลที่มีขนาดใหญ่กว่ามาก เช่น เขตเมือง ได้อย่างไร วิธีการปัจจุบันไม่ได้ออกแบบมาสำหรับสิ่งเหล่านี้ แต่เมื่อได้รับหน่วยความจำเพียงพอ ก็ควรจะได้ผล อย่างไรก็ตาม วิธีการนี้อาจพบปัญหาในฉากที่มีรายละเอียดหลายขนาด (ภาพระยะใกล้สุดขีด ผสมกับภาพระยะไกล) โดยปกติจะเป็นกรณีนี้ในชุดข้อมูลการขับขี่ (รถยนต์อยู่ใกล้ อาคารที่อยู่ห่างไกล) สำหรับฉากดังกล่าว คุณสามารถลด --position_lr_init
, --position_lr_final
และ --scaling_lr
(x0.3, x0.1, ...) ได้ ยิ่งฉากมีความกว้างมาก ค่าเหล่านี้ควรยิ่งต่ำลง ด้านล่าง เราใช้อัตราการเรียนรู้เริ่มต้น (ซ้าย) และ --position_lr_init 0.000016 --scaling_lr 0.001"
(ขวา)
ฉันใช้ Windows และฉันไม่สามารถสร้างโมดูลย่อยได้ ฉันควรทำอย่างไร? ลองทำตามขั้นตอนต่างๆ ในวิดีโอสอนการใช้งานที่ยอดเยี่ยมที่นี่ หวังว่าขั้นตอนเหล่านี้จะช่วยได้ ลำดับขั้นตอนการทำเป็นสิ่งสำคัญ! หรือพิจารณาใช้เทมเพลต Colab ที่ลิงก์ไว้
มันยังใช้งานไม่ได้ มันบอกอะไรบางอย่างเกี่ยวกับ cl.exe
ฉันจะทำอย่างไร? ผู้ใช้ Henry Pearce พบวิธีแก้ปัญหา คุณสามารถลองเพิ่มเส้นทาง Visual Studio ให้กับตัวแปรสภาพแวดล้อมของคุณได้ (หมายเลขเวอร์ชันของคุณอาจแตกต่างกัน) C:Program Files (x86)Microsoft Visual Studio2019CommunityVCToolsMSVC14.29.30133binHostx64x64
จากนั้นตรวจสอบให้แน่ใจว่าคุณเริ่ม conda prompt ใหม่และ cd ไปยังตำแหน่ง repo ของคุณแล้วลองทำสิ่งนี้
conda activate gaussian_splatting cd/gaussian-splatting pip install submodulesdiff-gaussian-rasterization pip install submodulessimple-knn
ฉันใช้ macOS/Puppy Linux/Greenhat และฉันไม่สามารถสร้างได้ ฉันควรทำอย่างไร? ขออภัย เราไม่สามารถให้การสนับสนุนแพลตฟอร์มนอกเหนือจากที่เราระบุไว้ใน README นี้ พิจารณาใช้เทมเพลต Colab ที่ลิงก์ไว้
ฉันไม่มี VRAM ขนาด 24 GB สำหรับการฝึก ฉันควรทำอย่างไร? ปริมาณการใช้ VRAM จะถูกกำหนดโดยจำนวนจุดที่ได้รับการปรับให้เหมาะสม ซึ่งจะเพิ่มขึ้นเมื่อเวลาผ่านไป หากคุณต้องการฝึกซ้ำถึง 7,000 ครั้ง คุณจะต้องการน้อยลงอย่างมาก หากต้องการดำเนินกิจวัตรการฝึกอบรมแบบเต็มและหลีกเลี่ยงไม่ให้หน่วยความจำหมด คุณสามารถเพิ่ม --densify_grad_threshold
, --densification_interval
หรือลดค่าของ --densify_until_iter
อย่างไรก็ตาม โปรดทราบว่าสิ่งนี้จะส่งผลต่อคุณภาพของผลลัพธ์ ลองตั้งค่า --test_iterations
เป็น -1
เพื่อหลีกเลี่ยงไม่ให้หน่วยความจำพุ่งสูงในระหว่างการทดสอบ หาก --densify_grad_threshold
สูงมาก ก็ไม่ควรเกิดความหนาแน่นขึ้น และการฝึกอบรมควรเสร็จสิ้นหากโหลดฉากได้สำเร็จ
VRAM ขนาด 24 GB สำหรับการฝึกอบรมคุณภาพอ้างอิงยังมีอีกมาก! เราทำน้อยลงไม่ได้เหรอ? ใช่เป็นไปได้มากที่สุด โดยแคลิฟอร์เนียของเรา