M3DLayout: A Multi-Source Dataset of 3D Indoor Layouts and Structured Descriptions for 3D Generation
Yiheng Zhang1*, Zhuojiang Cai2*, Mingdao Wang1*, Meitong Guo1, Tianxiao Li1, Li Lin3, Yuwang Wang1†
1 Tsinghua University | 2 Beihang University | 3 Migu Beijing Research Institute
* Equal contribution | † Corresponding author
We have fully released our Dataset (Scene & Layout & Rendering), Inference & Training and Data Curation (Object Retrieval & Rendering & Description Generation), come and try it!!!
- Release Object Retrieval code of M3DLayout
- Release rendering code of layouts and scenes
- Release inference code of M3DLayout
- Release M3DLayout dataset
- Provide training instruction for M3DLayout
- Provide Data curation instruction for M3DLayout's three data resources (3D-Front, Matterport3D, Infinigen)
conda create -n m3dlayout python=3.10 -y
conda activate m3dlayout
conda install cuda -c nvidia/label/cuda-12.1.0 -y
pip install torch torchvision --index-url https://download.pytorch.org/whl/cu121
pip install -r requirements.txt --use-pep517 --no-build-isolationPlease download our processed dataset from Baidu Netdisk or Huggingface.
The dataset is separated into 3 parts:
| Type | Description | Content | Size |
|---|---|---|---|
scene_dataset |
Origin scene with separated object geometries and textures | • Infinigen (8392 rooms with normal object density + 7607 rooms with relatively low object density = 15999 rooms): scene.blend, scene with segemented objects and textures. • Matterport3D (90 houses): Postprocessed by segmenting each house into separated ply objects, you can import each subdir as a whole to Blender to receive a complete scene. • 3D-Front (5173 rooms): Since we have not applied any additional processing, you can download the original 3D-FRONT dataset directly from 3D-Front official link |
3T before uncompress |
rendering_dataset |
Rendered Images from scene | • Infinigen (15864 rooms): Floor masks, Oblique-view scene renderings, Top-down scene renderings, Text descriptions, Detailed per-scene JSON • Matterport3D (90 houses + 4 json files + 1 README.md): Floor masks for each room, Top-down layout renderings for each room, Multi-Level Detailed per-scene JSON • 3D-Front (5173 rooms): Floor masks, Top-down scene renderings |
250GB before uncompress |
layout_dataset |
Layout extracted from scene | <data_source>_train.json, <data_source>_test.json, and <data_source>_val.json for Infinigen & Matterport3D & 3D-Front. Including object count, category, location, bbox size, rotation, multi-level detailed description, etc. |
31MB before uncompress |
To be simple,
If you want to do Scene Generation/Understanding/Reconstruction, Embodied AI and so on, you can directly download the scene_dataset. Moreover, you can extract point cloud or do further Detection, Segmentation or Editing tasks since all objects in the scene are clearly separated.
If you want to do some image/text to layout/scene or some 2D tasks, you can download rendering_dataset.
If you want to utilize the intermediate scene layout for your downstream research, you can download layout_dataset.
We have provided abundant functions in render.py, util.py and visualization_mlayout.py from Object-Retrieval-Layout2Scene to postprocess (visualize/filter/rendering etc. ) the infinigen scene data.
Please download the model weights from Google Drive or Baidu Netdisk, and place them in the ./weights directory.
To run the Gradio demo for 3d layout generation from arbitrary text:
python gradio_demo.pyFor batch inference from prompt text files (default: 3 files, 1500 prompts total):
python example.py # Default: AutoregressiveUseful options:
# Enable viz3dl GIF rendering and saving
python example.py --render-gif
# Use diffusion model
python example.py --model diffusion
# Customize output directory
python example.py --output-dir outputs/my_batch_runNotes:
- One input txt file produces one output json file.
- The 1500 prompts are the test prompt set used in the original M3DLayout paper.
Place layout dataset JSON files under data/m3dlayout/ (as referenced by config/m3dlayout_*.yaml).
Train autoregressive model:
python scripts/train_autoregressive.py \
--config_file config/m3dlayout_autoregressive.yaml \
--experiment_tag m3dlayout_autoregressiveTrain diffusion model:
python scripts/train_diffusion.py \
--config_file config/m3dlayout_diffusion.yaml \
--experiment_tag m3dlayout_diffusionWe provide complete processing pipelines for the 3D-Front, Matterport3D, and Infinigen datasets. We hope these tools will help the community scale up the dataset with additional computing and storage resources.
If you find our work helpful, please consider citing:
@article{zhang2025m3dlayout,
title={M3DLayout: A Multi-Source Dataset of 3D Indoor Layouts and Structured Descriptions for 3D Generation},
author={Yiheng, Zhang and Zhuojiang, Cai and Mingdao, Wang and Meitong, Guo and Tianxiao, Li and Li, Lin and Yuwang, Wang},
journal={arXiv preprint arXiv:2509.23728},
year={2025},
url={https://arxiv.org/abs/2509.23728},
}Our code borrows from ATISS and DiffuScene. We thank them for their excellent work. Please follow their licenses when using this part of the code.

