การเพิ่มประสิทธิภาพร่วมกันของโทโพโลยีวัสดุและแสงจากการสังเกตภาพหลายมุมมองตามที่อธิบายไว้ในกระดาษที่สกัดแบบจำลอง 3D รูปสามเหลี่ยมวัสดุและแสงจากภาพ
สำหรับ Tetrahedons ที่มีความแตกต่างกันเราได้ดัดแปลงรหัสจาก Kaolin ของ Nvidia: ห้องสมุด Pytorch สำหรับเร่งการวิจัยการเรียนรู้ลึก 3 มิติ
2023-10-20 : เราเพิ่มเวอร์ชันของห้องสมุด RenderUtils ที่เขียนด้วยความผิดพลาดเพื่อใช้ประโยชน์จากความสามารถอัตโนมัติของคำสแลงแทนที่จะเป็นส่วนขยายของ CUDA ด้วยการทำด้วยตนเองไปข้างหน้าและย้อนหลังผ่าน สิ่งนี้ทำให้รหัสง่ายขึ้นอย่างมากด้วยประสิทธิภาพการทำงานแบบรันไทม์เช่นเดียวกับก่อน รุ่นนี้มีอยู่ในสาขา slang ของ repo นี้
2023-09-15 : เราเพิ่มการสนับสนุนสำหรับเทคนิค isosurfacing flexicubes โปรดดู configs/bob_flexi.json สำหรับตัวอย่างการใช้งานและอ้างอิงเอกสาร Flexicubes สำหรับรายละเอียด
@inproceedings{Munkberg_2022_CVPR,
author = {Munkberg, Jacob and Hasselgren, Jon and Shen, Tianchang and Gao, Jun and Chen, Wenzheng
and Evans, Alex and M"uller, Thomas and Fidler, Sanja},
title = "{Extracting Triangular 3D Models, Materials, and Lighting From Images}",
booktitle = {Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition (CVPR)},
month = {June},
year = {2022},
pages = {8280-8290}
}
ลิขสิทธิ์© 2022, Nvidia Corporation สงวนลิขสิทธิ์
งานนี้มีให้ภายใต้ใบอนุญาตซอร์สโค้ด NVIDIA
สำหรับการสอบถามทางธุรกิจกรุณาเยี่ยมชมเว็บไซต์ของเราและส่งแบบฟอร์ม: Nvidia Research Licensing
ต้องใช้ Python 3.6+, VS2019+, CUDA 11.3+ และ Pytorch 1.10+
ทดสอบใน Anaconda3 ด้วย Python 3.9 และ Pytorch 1.10
ติดตั้งชุดเครื่องมือ CUDA (จำเป็นต้องสร้างส่วนขยาย Pytorch) เราสนับสนุน Cuda 11.3 ขึ้นไป เลือกรุ่นที่เหมาะสมของ Pytorch ที่เข้ากันได้กับชุดเครื่องมือ CUDA ที่ติดตั้ง ด้านล่างเป็นตัวอย่างของ cuda 11.6
conda create -n dmodel python=3.9
activate dmodel
conda install pytorch torchvision torchaudio cudatoolkit=11.6 -c pytorch -c conda-forge
pip install ninja imageio PyOpenGL glfw xatlas gdown
pip install git+https://github.com/NVlabs/nvdiffrast/
pip install --global-option="--no-networks" git+https://github.com/NVlabs/tiny-cuda-nn#subdirectory=bindings/torch
imageio_download_bin freeimage
activate dmodel
วิธีการของเราได้รับการออกแบบมาสำหรับ Nvidia GPU ระดับสูงที่มีหน่วยความจำจำนวนมาก ในการทำงานบน GPU ระดับกลางให้ลดพารามิเตอร์ขนาดแบทช์ในไฟล์. json
สกุล Simple 1 การฟื้นฟูตัวอย่าง:
python train.py --config configs/bob.json
แสดงภาพความคืบหน้าการฝึกอบรม (รองรับบน Windows เท่านั้น):
python train.py --config configs/bob.json --display-interval 20
ตัวอย่าง Multi GPU (Linux เท่านั้น การทดลอง: ผลลัพธ์ทั้งหมดในกระดาษถูกสร้างขึ้นโดยใช้ GPU เดียว ) โดยใช้ Pytorch DDP
torchrun --nproc_per_node=4 train.py --config configs/bob.json
ด้านล่างเราแสดงจุดเริ่มต้นและผลลัพธ์สุดท้าย การอ้างอิงทางด้านขวา


ผลลัพธ์จะถูกเก็บไว้ในโฟลเดอร์ out แบบจำลองจุดและบ๊อบถูกสร้างขึ้นและปล่อยสู่โดเมนสาธารณะโดย Keenan Crane
ตัวอย่างรวม
spot.json - การแยกโมเดล 3 มิติของโมเดลสปอต เรขาคณิตวัสดุและแสงจากการสังเกตภาพspot_fixlight.json - เหมือนกับข้างบน แต่สมมติว่าสภาพแวดล้อมที่รู้จักกันดีspot_metal.json - ตัวอย่างการเรียนรู้ร่วมกันของวัสดุและแสงสภาพแวดล้อมความถี่สูงเพื่อแสดงผลรวมแยกbob.json - ตัวอย่างง่ายๆของรุ่น 1 นอกจากนี้เรายังรวมถึง configs ( nerf_*.json , nerd_*.json ) เพื่อทำซ้ำผลลัพธ์หลักของกระดาษ เราพึ่งพาชุดข้อมูลของบุคคลที่สามซึ่งได้รับความอนุเคราะห์จากผู้เขียนของพวกเขา โปรดทราบว่าใบอนุญาตแต่ละใบมีผลบังคับใช้กับแต่ละชุดข้อมูล หากต้องการดาวน์โหลดและประมวลผลชุดข้อมูลทั้งหมดโดยอัตโนมัติให้เรียกใช้ script.py download_datasets.py :
activate dmodel
cd data
python download_datasets.py
ด้านล่างดังต่อไปนี้ข้อมูลเพิ่มเติมและคำแนะนำเกี่ยวกับวิธีการติดตั้งชุดข้อมูลด้วยตนเอง (ในกรณีที่สคริปต์อัตโนมัติล้มเหลว)
ชุดข้อมูลสังเคราะห์ NERF ผลลัพธ์การแก้ไขมุมมองของเราใช้ชุดข้อมูลสังเคราะห์จากกระดาษ NERF ดั้งเดิม ในการติดตั้งด้วยตนเองให้ดาวน์โหลดชุดข้อมูล NERF Synthetic เก็บถาวรและคลายซิปลงในโฟลเดอร์ nvdiffrec/data สิ่งนี้จำเป็นสำหรับการเรียกใช้ nerf_*.json configs
ชุดข้อมูล NERD เราใช้ชุดข้อมูลจาก Nerd Paper ซึ่งมีโฟโตแกรมในโลกแห่งความเป็นจริงและมาสก์เซกเมนต์การแบ่งส่วนที่ไม่ถูกต้อง โคลนชุดข้อมูล NERD โดยใช้ GIT และ rescale พวกเขาไปที่ความละเอียด 512 x 512 พิกเซลโดยใช้สคริปต์ scale_images.py สิ่งนี้จำเป็นสำหรับการเรียกใช้ nerd_*.json configs
activate dmodel
cd nvdiffrec/data/nerd
git clone https://github.com/vork/ethiopianHead.git
git clone https://github.com/vork/moldGoldCape.git
python scale_images.py
cd docker
./make_image.sh nvdiffrec:v1
เริ่มคอนเทนเนอร์ Docker แบบโต้ตอบ: docker run --gpus device=0 -it --rm -v /raid:/raid -it nvdiffrec:v1 bash
Docker เดี่ยว: docker run --gpus device=1 -d -v /raid:/raid -w=[path to the code] nvdiffrec:v1 python train.py --config configs/bob.json