Papers › CommonScenes: Generating Commonsense 3D Indoor Scenes with Scene Graph Diffusion

CommonScenes: Generating Commonsense 3D Indoor Scenes with Scene Graph Diffusion

25 May 2023NeurIPS 2023 11arXiv:2305.16283archive 2025-07-28

Guangyao Zhai, Evin Pınar Örnek, Shun-Cheng Wu, Yan Di, Federico Tombari, Nassir Navab, Benjamin Busam

Controllable scene synthesis aims to create interactive environments for various industrial use cases. Scene graphs provide a highly suitable interface to facilitate these applications by abstracting the scene context in a compact manner. Existing methods, reliant on retrieval from extensive databases or pre-trained shape embeddings, often overlook scene-object and object-object relationships, leading to inconsistent results due to their limited generation capacity. To address this issue, we present CommonScenes, a fully generative model that converts scene graphs into corresponding controllable 3D scenes, which are semantically realistic and conform to commonsense. Our pipeline consists of two branches, one predicting the overall scene layout via a variational auto-encoder and the other generating compatible shapes via latent diffusion, capturing global scene-object and local inter-object relationships in the scene graph while preserving shape diversity. The generated scenes can be manipulated by editing the input scene graph and sampling the noise in the diffusion model. Due to lacking a scene graph dataset offering high-quality object-level meshes with relations, we also construct SG-FRONT, enriching the off-the-shelf indoor dataset 3D-FRONT with additional scene graph labels. Extensive experiments are conducted on SG-FRONT where CommonScenes shows clear advantages over other methods regarding generation consistency, quality, and diversity. Codes and the dataset will be released upon acceptance.

PaperPDFConference PDFCodeCode Syntology ran

In Syntology Open this paper in Syntology's Atlas, the map of the papers in Syntology's graph and their citations.

For agents, Syntology's MCP tool lists every function and class Syntology harvested from this paper and whether it ran (how to connect): get_harvested_code_for_paper(arxiv_id="2305.16283")

Code

Syntology Ran 11 of 25 code samples harvested from 1 repository linked to this paper; 14 have no recorded run. Of those that ran: 1 ran · honoured contract; 1 ran · our draft was wrong; 1 ran · fixture could not drive it; 8 ran with no contract checked.

By repository: official repository: 25 samples from 1 repository, 11 ran. The run record, sample by sample. “Ran” means executed on a synthesized input, not that the code is correct or reproduces the paper.

ymxlzgy/commonscenes officialmentioned on GitHubpytorch report

Repository list and official/mentioned flags are the archive's, frozen 2025-07-28. Reachability, where shown, is from one Syntology probe window (2026-09-16 to 2026-09-18); repositories not probed show nothing. GitHub stars are not tracked.

Code Syntology ran Syntology

25 samples harvested; 11 ran; 1 honoured the contract we drafted; 14 have no recorded run. Read from Syntology's graph 2026-09-24; that is when this build read the record, not when the samples ran.

1ran · honoured contract
1ran · our draft was wrong
1ran · fixture could not drive it
8ran
14unverified

Licence: 25 of the 25 samples are pointer only, meaning Syntology does not serve that copy's text. This page shows no code text for any sample; each one links to its file in the repository.

Harvested from ymxlzgy/commonscenes. “Ran” means the sample executed on a synthesized input. It does not mean the output is correct, and nothing here reproduces the paper's results. “Honoured” and “violated” refer to a contract Syntology drafted from the code itself; “our draft was wrong” and “fixture could not drive it” are failures of Syntology's instrument, not of the code.

Each sample ends with its code_sha256, Syntology's identity for that exact code. An agent fetches the stored sample with Syntology's MCP tool get_code(code_sha256="…") (how to connect); click an identity to copy that call.

Repository labels, per sample. official repository: The archive marks this repository official for the paper. named in the paper: The archive records that the paper mentions this repository; it is not marked official. community (archive-listed): In the archive's code links for this paper, not marked official and not recorded as mentioned in the paper. found in paper text by Syntology: Syntology found this repository in the paper's own text; whether it is the authors' implementation is not asserted. community: Not in the archive's code links for this paper; a community repository Syntology harvested. Samples from a repository marked official are listed first. Licence labels name the repository's licence as recorded at harvest. “Pointer only” means Syntology does not serve that copy's text, for one of four reasons: no licence file was found; the licence was not identified; the licence is recorded as permissive but that copy's record is not marked cleared; or the licence is outside the permissive list Syntology serves text under (MIT, Apache-2.0, BSD and similar). Some licences outside that list permit redistribution, such as WTFPL, and GPL-3.0 under its conditions; they are simply not on the list. Hover a licence label for the reason. File links open the file on GitHub at the default branch, which may have changed since the harvest.

BasicTransformerBlock ymxlzgy/commonscenes/model/networks/diffusion_networks/sg_diff.py official repository ran · metamorphic tier: deterministic no licence file found · pointer only · 0d3d0643f8f2a574 · report
CrossAttention ymxlzgy/commonscenes/model/networks/diffusion_networks/sg_diff.py official repository ran · metamorphic tier: deterministic no licence file found · pointer only · feb6629ec7db268f · report
Downsample ymxlzgy/commonscenes/model/networks/diffusion_networks/sg_diff.py official repository ran · metamorphic tier: deterministic fingerprinted no licence file found · pointer only · d30cfba3625bdc96 · report
FeedForward ymxlzgy/commonscenes/model/networks/diffusion_networks/sg_diff.py official repository ran · metamorphic tier: deterministic no licence file found · pointer only · 3a6e3f85e7f062a1 · report
GEGLU ymxlzgy/commonscenes/model/networks/diffusion_networks/sg_diff.py official repository ran · metamorphic tier: deterministic fingerprinted no licence file found · pointer only · 6ed2a5bef43f4482 · report
QKVAttention ymxlzgy/commonscenes/model/networks/diffusion_networks/sg_diff.py official repository ran no licence file found · pointer only · 064ef8dd5a9701ed · report
QKVAttentionLegacy ymxlzgy/commonscenes/model/networks/diffusion_networks/sg_diff.py official repository ran no licence file found · pointer only · d6ede9e76b7e5eef · report
Upsample ymxlzgy/commonscenes/model/networks/diffusion_networks/sg_diff.py official repository ran · metamorphic tier: deterministic fingerprinted no licence file found · pointer only · d640984e3a59551c · report
normalization ymxlzgy/commonscenes/model/networks/diffusion_networks/sg_diff.py official repository ran · our draft was wrong no licence file found · pointer only · c87e65165f123ae3 · report
normalize ymxlzgy/commonscenes/scripts/eval_3dfront.py official repository ran · honoured contract fingerprinted no licence file found · pointer only · f89be01bb146a6f6 · report
timestep_embedding ymxlzgy/commonscenes/model/networks/diffusion_networks/sg_diff.py official repository ran · fixture could not drive it no licence file found · pointer only · b4f50214c2d0199b · report
AttentionBlock ymxlzgy/commonscenes/model/networks/diffusion_networks/sg_diff.py official repository unverified no licence file found · pointer only · f056c6622e5fcfdb · report
DiffusionUNet ymxlzgy/commonscenes/model/networks/diffusion_networks/sg_diff.py official repository unverified no licence file found · pointer only · fa833533f282d17b · report
ResBlock ymxlzgy/commonscenes/model/networks/diffusion_networks/sg_diff.py official repository unverified no licence file found · pointer only · 44fbf9fa0b2cf4ac · report
SpatialTransformer ymxlzgy/commonscenes/model/networks/diffusion_networks/sg_diff.py official repository unverified no licence file found · pointer only · 3c85d9c6a2542bd3 · report
SpatialTransformer3D ymxlzgy/commonscenes/model/networks/diffusion_networks/sg_diff.py official repository unverified no licence file found · pointer only · 80fd2577c9d84f27 · report
TimestepBlock ymxlzgy/commonscenes/model/networks/diffusion_networks/sg_diff.py official repository unverified no licence file found · pointer only · d6657445a1114767 · report
TimestepEmbedSequential ymxlzgy/commonscenes/model/networks/diffusion_networks/sg_diff.py official repository unverified no licence file found · pointer only · d72478273c76d0a8 · report
UNet3DModel ymxlzgy/commonscenes/model/networks/diffusion_networks/sg_diff.py official repository unverified no licence file found · pointer only · db84682088e94737 · report
conv_nd ymxlzgy/commonscenes/model/networks/diffusion_networks/sg_diff.py official repository unverified no licence file found · pointer only · fc3a8da734d7ed8d · report
convert_module_to_f16 ymxlzgy/commonscenes/model/networks/diffusion_networks/sg_diff.py official repository unverified no licence file found · pointer only · c4acebba15ea2346 · report
convert_module_to_f32 ymxlzgy/commonscenes/model/networks/diffusion_networks/sg_diff.py official repository unverified no licence file found · pointer only · 0e6d7f37a0b062f2 · report
init_weights ymxlzgy/commonscenes/model/networks/diffusion_networks/sg_diff.py official repository unverified no licence file found · pointer only · 7a23d0d554f85e3b · report
parse_data ymxlzgy/commonscenes/scripts/train_3dfront.py official repository unverified no licence file found · pointer only · 97aa4e594bf780bb · report
sg_diff ymxlzgy/commonscenes/model/networks/diffusion_networks/sg_diff.py official repository unverified no licence file found · pointer only · af0d816a80ef466d · report

Tasks

DiversityObjectScene Generation

Datasets

Introduced by this paper, per the archive.

SG-FRONT

Results from the paper archive 2025-07-28

No leaderboard rows for this paper in the archive.

Methods

DiffusionGCN

Report a problem or propose a change · a person checks every report against the paper or source before anything changes; decisions are listed on /corrections