
conda create - n echoscene python = 3.8
conda activate echosceneTestamos no Ubuntu 20.04 com Pytorch 1.11.0, CUDA 11.3 e Pytorch3d.
pip install - r requirements . txt
pip install einops omegaconf tensorboardx open3d(Nota: se encontrar um problema com Pyyaml, consulte este link.)
Instale o MMCV-DET3D (Opcional):
mim install mmengine
mim install mmcv
mim install mmdet
mim install mmdet3dInstalar clipe:
pip install ftfy regex tqdm
pip install git + https : //github.com/openai/CLIP.gitI. Faça o download do 3D-FUTURE-SDF. Isso é processado por nós mesmos nas malhas de força 3D usando ferramentas no sdfusion.
Ii. Siga esta página para baixar o conjunto de dados SG-Front e acessar mais informações.
Iii. Opcional
Faça o download do conjunto de dados de frente 3D em seu site oficial.
Pré -processo o conjunto de dados seguindo o ATISS.
4. Crie uma pasta chamada FRONT e copie todos os arquivos para ele.
A estrutura deve ser semelhante assim:
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)
Essential: Baixe o modelo vq-vae pré-terenciado daqui para os scripts/checkpoint da pasta.
Opcional: Fornecemos dois modelos treinados: EchoLayout disponível aqui e EchoScene disponível aqui.
Para treinar os modelos, execute:
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 : O caminho onde modelos e logs treinados gostariam de ser armazenados.
--room_type : quartos para treinar, por exemplo, 'sala de estar', 'sala de jantar', 'quarto' e 'all'. Treinamos todos os quartos juntos na implementação.
--network_type : a rede a ser treinada. echoscene é o Echosceno, echolayout é o Echolayout (método de recuperação, ramo de geração de layout único).
--with_SDF : defina como True se Echosceno do trem.
--batch_size : o tamanho do lote para o treinamento da filial de layout.
--large : o padrão é False , True significa mais categorias concretas.
Para avaliar os modelos executados:
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 : onde os modelos são armazenados. Se alguém quiser carregar nossos modelos fornecidos, o caminho deve ser alinhado com
--gen_shape : Defina True se alguém quiser fazer o Shape Branch funcionar.
Essa métrica visa avaliar a fidelidade no nível da cena. Para avaliar o FID/Kid, primeiro você precisa baixar imagens renderizadas GT de cima para baixo para obter métodos de recuperação e imagens renderizadas por SDF para métodos generativos ou coletar renderizações modificando e executando collect_gt_sdf_images.py . Observe que o sinalizador without_lamp está definido como True em nosso experimento.
Em seguida, as renderizações de cenas geradas podem ser obtidas dentro de eval_3dfront.py .
Depois de obter imagens da verdade em terra e cenas geradas, execute compute_fid_scores_3dfront.py .
Essa métrica visa avaliar a fidelidade no nível do objeto. Para avaliar isso, você precisa primeiro obter as malhas de objeto de verdade do solo a partir daqui (~ 5g).
Em segundo lugar, armazenar um objeto gerado nas cenas geradas, que podem ser feitas em eval_3dfront.py . Após a obtenção de malhas de objeto, modifique o caminho em compute_mmd_cov_1nn.py e execute -o para ter os resultados.
Essa métrica é baseada na distância de chanfro. que verifica como as formas geradas de dois objetos idênticos são semelhantes entre si. Para avaliar isso, você precisa baixar as informações de consistência daqui, modificar os caminhos em consistency_check.py e executar este script.
Trabalho relevante: gráfico para 3D, Commonscenes, difsusceno, InstructScene, SceneTex.
Isenção de responsabilidade: este é um repositório de código apenas para referência; Em caso de discrepâncias, o artigo prevalecerá.
Agradecemos ao autor do Difusceno, Jiapeng Tang, e pelo autor da InstructScene, Chenguo Lin, por fornecer o código e as discussões úteis e, além disso, agradeça ao Mahdi Saleh por titular o artigo como EchoScene , que é vívido e cativante :)