NoPoSplat ทำนาย 3D Gaussians ในพื้นที่บัญญัติจากรูปภาพกระจัดกระจายที่ไม่ได้เปิดเผย
ช่วยให้สามารถสังเคราะห์มุมมองใหม่คุณภาพสูงและการประมาณท่าทางที่แม่นยำ
การติดตั้ง
จุดตรวจที่ได้รับการฝึกอบรมล่วงหน้า
อนุสัญญากล้อง
ชุดข้อมูล
การรันโค้ด
รับทราบ
การอ้างอิง
โค้ดของเราใช้ Python 3.10+ และได้รับการพัฒนาโดยใช้ PyTorch 2.1.2 และ CUDA 11.8 แต่ควรทำงานกับเวอร์ชัน Pytorch/CUDA ที่สูงกว่าได้เช่นกัน
โคลน NoPoSplat
โคลนคอมไพล์ https://github.com/cvg/NoPoSplatcd NoPoSplat
สร้างสภาพแวดล้อม ที่นี่เราจะแสดงตัวอย่างการใช้ conda
conda สร้าง -y -n noposplat หลาม = 3.10 conda เปิดใช้งาน noposplat pip ติดตั้ง torch==2.1.2 torchvision==0.16.2 torchaudio==2.1.2 --index-url https://download.pytorch.org/whl/cu118 pip ติดตั้ง -r ข้อกำหนด.txt
ไม่บังคับ ให้คอมไพล์เคอร์เนล cuda สำหรับ RoPE (เช่นเดียวกับใน CroCo v2)
# NoPoSplat อาศัยการฝังตำแหน่ง RoPE ซึ่งคุณสามารถคอมไพล์เคอร์เนล cuda บางตัวเพื่อรันไทม์ที่เร็วขึ้น cd src/model/encoder/backbone/croco/curope/ หลาม setup.py build_ext --inplacecd ../../../../../..
โมเดลของเราโฮสต์บน Hugging Face ?
ชื่อรุ่น | มติการฝึกอบรม | ข้อมูลการฝึกอบรม |
---|---|---|
re10k.ckpt | 256x256 | รี10k |
กรด.ckpt | 256x256 | กรด |
mixRe10kDl3dv.ckpt | 256x256 | re10k, dl3dv |
mixRe10kDl3dv_512x512.ckpt | 512x512 | re10k, dl3dv |
เราถือว่าตุ้มน้ำหนักที่ดาวน์โหลดอยู่ในไดเร็กทอรี pretrained_weights
ระบบกล้องของเราเหมือนกับ pixelSplat เมทริกซ์ภายในของกล้องถูกทำให้เป็นมาตรฐาน (แถวแรกหารด้วยความกว้างของภาพ และแถวที่สองหารด้วยความสูงของภาพ) เมทริกซ์ภายนอกของกล้องคือเมทริกซ์แบบกล้องสู่โลกสไตล์ OpenCV ( +X ขวา, +Y ลง, +Z กล้องมองเข้าไปในหน้าจอ)
โปรดดูที่ DATASETS.md สำหรับการเตรียมชุดข้อมูล
จุดเริ่มต้นหลักคือ src/main.py
โทรผ่าน:
# 8 GPU โดยแต่ละขนาดแบตช์ = 16 ลบอาร์กิวเมนต์สองตัวสุดท้ายออกหากคุณไม่ต้องการใช้ wandb สำหรับการบันทึกpython -m src.main +experiment=re10k wandb.mode=online wandb.name=re10k
การกำหนดค่าการฝึกเริ่มต้นนี้ต้องใช้ GPU 8x โดยมีขนาดแบตช์ 16 บน GPU แต่ละตัว (>=หน่วยความจำ 80GB) การฝึกอบรมจะใช้เวลาประมาณ 6 ชั่วโมงจึงจะเสร็จสิ้น คุณสามารถปรับขนาดแบตช์ให้พอดีกับฮาร์ดแวร์ของคุณได้ แต่โปรดทราบว่าการเปลี่ยนขนาดแบตช์ทั้งหมดอาจจำเป็นต้องปรับเปลี่ยนอัตราการเรียนรู้เริ่มต้นเพื่อรักษาประสิทธิภาพ คุณสามารถดู re10k_1x8 สำหรับการฝึกบน A6000 GPU 1 ตัว (หน่วยความจำ 48GB) ซึ่งจะให้ประสิทธิภาพที่ใกล้เคียงกัน
# RealEstate10Kpython -m src.main +experiment=re10k mode=test wandb.name=re10k dataset/[email protected]_sampler=evalue dataset.re10k.view_sampler.index_path=assets/eficial_index_re10k.json checkpointing.load=./pretrained_weights /re10k.ckpt test.save_image=true# RealEstate10Kpython -m src.main +experiment=acid mode=test wandb.name=acid dataset/[email protected]_sampler=ชุดข้อมูลการประเมินผล.re10k.view_sampler.index_path=assets/evalue_index_acid .json checkpointing.load=./pretrained_weights/acid.ckpt test.save_image=true
คุณสามารถตั้งค่า wandb.name=SAVE_FOLDER_NAME
เพื่อระบุเส้นทางการบันทึก
ในการประเมินประสิทธิภาพการประมาณค่าท่าทาง คุณสามารถรันคำสั่งต่อไปนี้:
# RealEstate10Kpython -m src.eval_pose +experiment=re10k +evalue=eval_pose checkpointing.load=./pretrained_weights/mixRe10kDl3dv.ckpt dataset/[email protected]_sampler=evaliation dataset.re10k.view_sampler.index_path=assets/evaluesment_index_re10k json.json # ACIDpython -m src.eval_pose +การทดลอง=กรด +การประเมินผล=eval_pose checkpointing.load=./pretrained_weights/mixRe10kDl3dv.ckpt ชุดข้อมูล/[email protected]_sampler=ชุดข้อมูลการประเมินผล.re10k.view_sampler.index_path=assets/eformation_index_acid.json # ScanNet-1500python -m src.eval_pose +experiment=scannet_pose +evalue=eval_pose checkpointing.load=./pretrained_weights/mixRe10kDl3dv.ckpt
โปรดทราบว่าที่นี่เราแสดงการประเมินโดยใช้แบบจำลองแบบผสมที่ได้รับการฝึกบน RealEstate10K และ DL3DV คุณสามารถแทนที่เส้นทางจุดตรวจด้วยโมเดลที่ผ่านการฝึกอบรมอื่นๆ ได้
โปรเจ็กต์นี้ได้รับการพัฒนาด้วย repos ที่ยอดเยี่ยมมากมาย: pixelSplat, DUSt3R และ CroCo เราขอขอบคุณผู้เขียนต้นฉบับสำหรับผลงานที่ยอดเยี่ยมของพวกเขา เราขอขอบคุณความช่วยเหลืออย่างกรุณาของ David Charatan สำหรับการจัดเตรียมโค้ดการประเมินและแบบจำลองที่ได้รับการฝึกอบรมสำหรับวิธีการบางอย่างก่อนหน้านี้
@article{ye2024noposplat, title = {No Pose, No Problem: Surprisingly Simple 3D Gaussian Splats from Sparse Unposed Images}, author = {Ye, Botao and Liu, Sifei and Xu, Haofei and Xueting, Li and Pollefeys, Marc and Yang, Ming-Hsuan and Songyou, Peng}, journal = {arXiv preprint arXiv:xxxx.xxxx}, year = {2024} }