Это официальная реализация документа CommonScenes: Создание 3D-сцен в помещении CommonSense с помощью диффузии графа сцены . На основе модели диффузии мы предлагаем метод создания всей 3D-сцены из графов сцены, целостно охватывающий ее макет и 3D-геометрию.
Веб-сайт | Арксив
Гуанъяо Чжай *, Эвин Пынар Орнек *, Шун-Ченг Ву, Ян Ди, Федерико Томбари, Насир Наваб и Бенджамин Бусам. (*Равный вклад.)
НейрИПС 2023
Загрузите код и перейдите в папку.
git clone 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 active commonscenespip install -r require.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 установить
Загрузите набор данных 3D-FRONT с их официального сайта.
Предварительная обработка набора данных после ATISS.
Скачать 3D-БУДУЩЕЕ-SDF. Это обрабатывается нами на сетках 3D-FUTURE с использованием инструментов 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
, дополнительные реконструированные сетки и коды 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
: по умолчанию установлено значение False
. True
означает более конкретные категории.
Здесь мы приводим три примера: Graph-to-3D (версия DeepSDF), Graph-to-Box, CommonScenes. Рекомендуемый графический процессор — один 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
.
После получения сеток объектов запустите 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. Мы благодарим авторов за то, что они предоставили свой код.
Усталые студенты в напряженные дни доделывали трубопровод...