
conda create - n echoscene python = 3.8
conda activate echoscenePytorch 1.11.0、Cuda 11.3、Pytorch3dでUbuntu 20.04でテストしました。
pip install - r requirements . txt
pip install einops omegaconf tensorboardx open3d(注:Pyyamlの問題に遭遇した場合は、このリンクを参照してください。)
MMCV-Det3d(オプション)をインストールしてください:
mim install mmengine
mim install mmcv
mim install mmdet
mim install mmdet3dクリップのインストール:
pip install ftfy regex tqdm
pip install git + https : //github.com/openai/CLIP.gitI. 3D-Future-SDFをダウンロードします。これは、SDFusionのツールを使用して、3D-Futureメッシュで自分で処理されます。
ii。このページをフォローして、SG-Frontデータセットをダウンロードし、詳細情報にアクセスしてください。
iii。オプション
公式サイトから3D-FRONTデータセットをダウンロードします。
Atissに続くデータセットを事前に処理します。
IV。 FRONTという名前のフォルダーを作成し、すべてのファイルをコピーします。
構造は次のように似ている必要があります。
FRONT
|--3D-FUTURE-SDF
|--All SG-FRONT files (.json and .txt)
|--3D-FRONT (optional)
|--3D-FRONT-texture (optional)
|--3D-FUTURE-model (optional)
|--3D-FUTURE-scene (optional)
|--3D-FRONT_preprocessed (optional, by ATISS)
|--threed_front.pkl (optional, by ATISS)
必須:ここから前提条件のVQ-Vaeモデルをフォルダーscripts/checkpointにダウンロードします。
オプション: 2つの訓練されたモデルを提供しています。ここで利用可能なEchoLayoutとEchoSceneこちらから入手できます。
モデルをトレーニングするには、実行します。
cd scripts
python train_3dfront.py --exp /path/to/exp_folder --room_type all --dataset /path/to/dataset --residual True --network_type echoscene --with_SDF True --with_CLIP True --batchSize 64 --workers 8 --loadmodel False --nepoch 10000 --large False --use_scene_rels True
--exp :訓練されたモデルとログが保存されるパス。
--room_type :「リビングルーム」、「ダイニングルーム」、「寝室」、「すべて」をトレーニングする客室。実装ではすべての部屋を一緒にトレーニングします。
--network_type :トレーニングするネットワーク。 echosceneはEchoscene、 echolayoutはEcholayout(検索方法、単一レイアウト生成ブランチ)です。
--with_SDF :eChoSceneを列車の場合はTrueに設定します。
--batch_size :レイアウトブランチトレーニングのバッチサイズ。
--large :デフォルトはFalse 、 Trueより具体的なカテゴリを意味します。
モデルの実行を評価するには:
cd scripts
python eval_3dfront.py --exp /path/to/trained_model --dataset /path/to/dataset --epoch 2050 --visualize True --room_type all --render_type echoscene --gen_shape True
--exp :モデルが保存される場所。提供されたモデルをロードしたい場合、パスは
--gen_shape :シェイプブランチを機能させたい場合は、 Trueを設定します。
このメトリックは、シーンレベルの忠実度を評価することを目的としています。 FID/KIDを評価するには、最初に検索方法のトップダウンGTレンダリング画像をダウンロードする必要があり、SDFレンダリング画像は生成collect_gt_sdf_images.py用にレンダリングを収集します。私たちの実験では、flag without_lampがTrueに設定されていることに注意してください。
次に、生成されたシーンのレンダリングは、 eval_3dfront.py内で取得できます。
グラウンドトゥルース画像と生成されたシーンレンダリングの両方を取得した後、 compute_fid_scores_3dfront.pyを実行します。
このメトリックは、オブジェクトレベルの忠実度を評価することを目的としています。これを評価するには、最初にここからグラウンドトゥルースオブジェクトメッシュを取得する必要があります(〜5g)。
第二に、生成されたシーンに生成されたオブジェクトごとに保存します。これは、 eval_3dfront.pyで実行できます。オブジェクトメッシュを取得したら、 compute_mmd_cov_1nn.pyのパスを変更し、結果を実行するために実行します。
このメトリックは、面取り距離に基づいています。 2つの同一のオブジェクトの生成された形状が互いにどのように似ているかをチェックします。これを評価するには、ここから一貫性情報をダウンロードし、 consistency_check.pyのパスを変更し、このスクリプトを実行する必要があります。
関連する作業: Graph-to-3D、Commonscenes、Diffuscene、Instructscene、scenetex。
免責事項:これは参照のみのコードリポジトリです。矛盾の場合、論文が勝つものとする。
Diffusceneの著者Jiapeng TangとInstructsceneの著者Chenguo Linにコードと有益な議論を提供してくれEchoSceneことに感謝します。