นี่คือการดำเนินการอย่างเป็นทางการของรายงาน CommonScenes: การสร้างฉากในร่ม Commonsense 3D ด้วยการกระจายกราฟฉาก จากแบบจำลองการแพร่กระจาย เราเสนอวิธีการสร้างฉาก 3 มิติทั้งหมดจากกราฟฉาก โดยครอบคลุมเค้าโครงและเรขาคณิต 3 มิติแบบองค์รวม
เว็บไซต์ | อาร์ซิฟ
กวงเหยา ไจ*, เอวิน ปินาร์ เออร์เน็ก *, ชุน-เฉิง วู, ยาน ดี, เฟเดริโก ทอมบารี, นาสซีร์ นาอับ และเบนจามิน บูซัม (*ผลงานที่เท่าเทียมกัน)
ประสาทไอพีเอส 2023
ดาวน์โหลดโค้ดและไปที่โฟลเดอร์
git clone https://github.com/ymxlzgy/commonscenescd เรื่องธรรมดา
เราได้ทดสอบบน Ubuntu 20.04 ด้วย Python 3.8, PyTorch 1.11.0, CUDA 11.3 และ Pytorch3D
conda create -n commonscenes python=3.8conda เปิดใช้งาน commonscenespip ติดตั้ง -r ข้อกำหนด.txt pip ติดตั้ง einops omegaconf tensorboardx open3d
หากต้องการติดตั้ง CLIP ให้ทำตาม repo OpenAI CLIP นี้:
pip ติดตั้ง ftfy regex tqdmpip ติดตั้ง git+https://github.com/openai/CLIP.git
ตั้งค่าการคำนวณระยะทาง Chamfer เพิ่มเติมสำหรับการประเมิน:
cd ./extensionpython setup.py ติดตั้ง
ดาวน์โหลดชุดข้อมูล 3D-FRONT จากเว็บไซต์อย่างเป็นทางการ
ประมวลผลชุดข้อมูลล่วงหน้าตาม ATISS
ดาวน์โหลด 3D-FUTURE-SDF สิ่งนี้ถูกประมวลผลด้วยตัวเองบน 3D-FUTURE mesh โดยใช้เครื่องมือใน SDFusion
ติดตามหน้านี้เพื่อดาวน์โหลด SG-FRONT และเข้าถึงข้อมูลเพิ่มเติม
สร้างโฟลเดอร์ชื่อ FRONT
และคัดลอกไฟล์ทั้งหมดลงไป
โครงสร้างควรจะคล้ายกันดังนี้:
FRONT |--3D-FRONT |--3D-FRONT_preprocessed (by ATISS) |--threed_front.pkl (by ATISS) |--3D-FRONT-texture |--3D-FUTURE-model |--3D-FUTURE-scene |--3D-FUTURE-SDF |--All SG-FRONT files (.json and .txt)
สิ่งสำคัญ: ดาวน์โหลดโมเดล VQ-VAE ที่ได้รับการฝึกล่วงหน้าจากที่นี่ไปยังโฟลเดอร์ scripts/checkpoint
ตัวเลือกเสริม: เรามี CommonScenes รุ่นที่ได้รับการฝึกอบรมสองรุ่นอยู่ที่นี่
หากต้องการฝึกโมเดล ให้รัน:
cd scripts python train_3dfront.py --exp /media/ymxlzgy/Data/graphto3d_models/balancing/all --room_type livingroom --dataset /path/to/FRONT --residual True --network_type v2_full --with_SDF True --with_CLIP True --batchSize 4 --workers 4 --loadmodel False --nepoch 10000 --large False
--room_type
: ห้องสำหรับฝึก เช่น ห้องนั่งเล่น ห้องรับประทานอาหาร ห้องนอน และอื่นๆ ทั้งหมด เราฝึกอบรมทุกห้องร่วมกันในการดำเนินการ
--network_type
: เครือข่ายที่จะฝึกอบรม v1_box
คือ Graph-to-Box, v1_full
คือ Graph-to-3D (เวอร์ชัน DeepSDF), v2_box
คือสาขาโครงร่างของ CommonScenes และ v2_full
คือ CommonScenes (หมายเหตุ: หากคุณต้องการฝึก v1_full
ควรดาวน์โหลด mesh และโค้ดที่สร้างขึ้นใหม่เพิ่มเติมโดย DeepSDF จากที่นี่ และคัดลอกไปที่ FRONT
ด้วย)
--with_SDF
: ตั้งค่าเป็น True
หากฝึก v2_full
--with_CLIP
: ตั้งค่าเป็น True
หากฝึก v2_box หรือ v2_full และไม่ได้ใช้ในกรณีอื่น
--batch_size
: ขนาดแบทช์สำหรับการฝึกอบรมสาขาโครงร่าง ( หมายเหตุ: ขนาดสำหรับสาขารูปร่างอยู่ใน v2_full.yaml
และ v2_full_concat.yaml
ความหมายของแต่ละขนาดแบตช์สามารถพบได้ในวัสดุเสริม G.1)
--large
: default คือ False
, True
หมายถึงหมวดหมู่ที่เป็นรูปธรรมมากขึ้น
เรามีสามตัวอย่างที่นี่: Graph-to-3D (เวอร์ชัน DeepSDF), Graph-to-Box, CommonScenes GPU ที่แนะนำคือ A100 ตัวเดียวสำหรับ CommonScenes แม้ว่า 3090 จะสามารถฝึกเครือข่ายด้วยขนาดแบตช์ที่ต่ำกว่าในสาขารูปร่างได้
ในการประเมินโมเดลให้รัน:
cd scripts python eval_3dfront.py --exp /media/ymxlzgy/Data/graphto3d_models/balancing/all --epoch 180 --visualize False --evaluate_diversity False --num_samples 5 --gen_shape False --no_stool True
--exp
: ตำแหน่งที่คุณจัดเก็บโมเดล
--gen_shape
: ตั้งค่าเป็น True
หากคุณต้องการให้สาขารูปร่างตามการแพร่กระจายทำงานได้
--evaluate_diversity
: ตั้งค่าเป็น True
หากคุณต้องการคำนวณความหลากหลาย การดำเนินการนี้ใช้เวลาสักครู่ ดังนั้นจึงปิดใช้งานตามค่าเริ่มต้น
--num_samples
: จำนวนรอบการทดสอบ เมื่อประเมินความหลากหลาย
เมตริกนี้มีจุดมุ่งหมายเพื่อประเมินความถูกต้องระดับฉาก ในการประเมิน FID/KID ก่อนอื่นคุณต้องดาวน์โหลดรูปภาพที่เรนเดอร์ gt จากบนลงล่างสำหรับวิธีการดึงข้อมูล และรูปภาพที่เรนเดอร์ sdf สำหรับวิธีการกำเนิด หรือรวบรวมการเรนเดอร์โดยการแก้ไขและเรียกใช้ collect_gt_sdf_images.py
โปรดทราบว่าการตั้งค่าสถานะ without_lamp
ถูกตั้งค่าเป็น True
ในการทดสอบของเรา
ตรวจสอบให้แน่ใจว่าคุณดาวน์โหลดไฟล์ทั้งหมดและประมวลผล 3D-FRONT ล่วงหน้า สามารถรับการเรนเดอร์ของฉากที่สร้างขึ้นได้ภายใน eval_3dfront.py
หลังจากได้รับทั้งภาพความจริงภาคพื้นดินและสร้างการเรนเดอร์ฉากแล้ว ให้รัน compute_fid_scores_3dfront.py
เมตริกนี้มีจุดมุ่งหมายเพื่อประเมินความถูกต้องระดับออบเจ็กต์ โปรดติดตามการใช้งานใน PointFlow ในการประเมินสิ่งนี้ คุณจะต้องจัดเก็บวัตถุทีละวัตถุในฉากที่สร้างขึ้น ซึ่งสามารถทำได้ใน eval_3dfront.py
หลังจากได้รับ object mesh แล้ว ให้รัน compute_mmd_cov_1nn.py
เพื่อให้ได้ผลลัพธ์
หากคุณพบว่างานนี้มีประโยชน์ในการวิจัยของคุณ โปรดอ้างอิง
@inproceedings{ zhai2023commonscenes, title={CommonScenes: Generating Commonsense 3D Indoor Scenes with Scene Graph Diffusion}, author={Zhai, Guangyao and {"O}rnek, Evin P{i}nar and Wu, Shun-Cheng and Di, Yan and Tombari, Federico and Navab, Nassir and Busam, Benjamin}, booktitle={Thirty-seventh Conference on Neural Information Processing Systems}, year={2023}, url={https://openreview.net/forum?id=1SF2tiopYJ} }
พื้นที่เก็บข้อมูลนี้อิงตาม Graph-to-3D และ SDFusion เราขอขอบคุณผู้เขียนที่ทำให้โค้ดของพวกเขาพร้อมใช้งาน
นักเรียนที่เหนื่อยล้าทำท่อเสร็จในวันที่วุ่นวาย...