這是論文CommonScenes: Generating Commonsense 3D Indoor Scenes with Scene Graph Diffusion的官方實作。基於擴散模型,我們提出了一種從場景圖產生整個 3D 場景的方法,全面涵蓋其佈局和 3D 幾何形狀。
網站 | Arxiv
Guangyao Zhai *、Evin Pınar Örnek *、Shun-Cheng Wu、Yan Di、Federico Tombari、Nassir Navab 和 Benjamin Busam。 (*同等貢獻。)
神經IPS 2023
下載程式碼並進入資料夾。
git克隆 https://github.com/ymxlzgy/commonscenescd commonscenes
我們已經在 Ubuntu 20.04 上使用 Python 3.8、PyTorch 1.11.0、CUDA 11.3 和 Pytorch3D 對其進行了測試。
conda create -n commonscenes python=3.8conda activate commonscenespip install -rrequirements.txt pip install einops omegaconf tensorboardx open3d
若要安裝 CLIP,請遵循此 OpenAI CLIP 儲存庫:
pip install ftfy regex tqdmpip install git+https://github.com/openai/CLIP.git
設定額外的倒角距離計算以進行評估:
cd ./extensionpython setup.py install
從其官方網站下載 3D-FRONT 資料集。
按照 ATISS 預處理資料集。
下載 3D-FUTURE-SDF。這是我們自己使用 SDFusion 中的工具在 3D-FUTURE 網格上處理的。
請按照此頁面下載 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
,也應該從這裡下載 DeepSDF 的附加重建網格和程式碼,並複製到FRONT
)。
--with_SDF
:如果訓練 v2_full,則設定為True
。
--with_CLIP
:如果訓練 v2_box 或 v2_full,則設定為True
,其他情況下不使用。
--batch_size
:佈局分支訓練的批次大小。 (注意:形狀分支位於v2_full.yaml
和v2_full_concat.yaml
。每個批量大小的含義可以在補充資料 G.1 中找到。)
--large
:預設為False
, True
表示更具體的類別。
我們在這裡提供三個範例:Graph-to-3D(DeepSDF 版本)、Graph-to-Box、CommonScenes。對於 CommonScenes,建議的 GPU 是單一 A100,儘管 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
中完成。
取得物件網格後,執行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。我們感謝作者提供他們的程式碼。
疲憊的同學們在忙碌的日子裡完成了管道…