# quan-meng/seen2scene architecture

> Architecture diagram of the GitHub repository quan-meng/seen2scene, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-28). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/quan-meng/seen2scene
- Repository: https://github.com/quan-meng/seen2scene

## Overview

Seen2Scene prepares real or synthetic scene data, trains a sparse-grid VAE and flow-matching models, and evaluates generated or completed 3D scenes. The graph preserves the documented export, training, conditioning, and evaluation branches; some links are based on README descriptions because their implementation was not sampled.

Main entry points: [`seen2scene/models/trainer/train_gen.py`](https://github.com/quan-meng/seen2scene/blob/github/seen2scene/models/trainer/train_gen.py) (Generator trainer), [`seen2scene/main.py`](https://github.com/quan-meng/seen2scene/blob/github/seen2scene/main.py) (Training entry point), [`seen2scene/dataset/dataset.py`](https://github.com/quan-meng/seen2scene/blob/github/seen2scene/dataset/dataset.py) (Scene dataset), [`seen2scene/models/trainer/train_vae.py`](https://github.com/quan-meng/seen2scene/blob/github/seen2scene/models/trainer/train_vae.py) (VAE trainer)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_data["Scene data"]
  node_front3d["3D-FRONT export<br/>[export_front3d.py]"]
  node_arkit["ARKitScenes export"]
  node_scannet["ScanNet++ export"]
  node_fusion["FRONT-3D fusion<br/>[integrate.py]"]
  node_scene_store[("Prepared scene files")]
  node_dataset["Scene dataset<br/>[dataset.py]"]
end

subgraph group_models["Learning models"]
  node_vae["Sparse VAE<br/>[sparse_vae.py]"]
  node_fields["TSDF scene fields<br/>[fields.py]"]
  node_flow["Flow matching<br/>[flow_matching.py]"]
  node_controlnet["ControlNet<br/>[controlnet.py]"]
  node_sparse_transformer["Sparse transformer<br/>[dit.py]"]
  node_layout["Hierarchical layout"]
end

subgraph group_runtime["Training and generation"]
  node_config["Training configs<br/>[opt.py]"]
  node_main["Training entry point<br/>[main.py]"]
  node_vae_trainer["VAE trainer<br/>[train_vae.py]"]
  node_gen_trainer["Generator trainer<br/>[train_gen.py]"]
  node_base_trainer["Trainer base<br/>[base.py]"]
  node_generated[("Generated scenes")]
end

subgraph group_evaluation["Evaluation"]
  node_eval_runner["Evaluation tools"]
  node_metric_tools["Scene metrics<br/>[metrics.py]"]
  node_fid_eval["FID and DINO evaluation"]
  node_uni3d_eval["Uni3D evaluation<br/>[compute_uni3d.py]"]
end

node_researcher(("Researcher"))
node_rawdata[("Raw scene data")]

node_researcher -->|"starts training"| node_main
node_rawdata -->|"exports scenes"| node_front3d
node_rawdata -->|"exports scenes"| node_arkit
node_rawdata -->|"exports scenes"| node_scannet
node_front3d -->|"integrates scans"| node_fusion
node_front3d -->|"writes scenes"| node_scene_store
node_fusion -->|"writes TSDF"| node_scene_store
node_arkit -->|"writes scenes"| node_scene_store
node_scannet -->|"writes scenes"| node_scene_store
node_researcher -.->|"requests layout"| node_layout
node_layout -.->|"conditions generation"| node_gen_trainer
node_config -->|"configures run"| node_main
node_main -->|"configures splits"| node_dataset
node_scene_store -->|"loads scenes"| node_dataset
node_dataset -->|"supplies batches"| node_vae_trainer
node_dataset -->|"supplies batches"| node_gen_trainer
node_main -->|"dispatches VAE"| node_vae_trainer
node_main -->|"dispatches tasks"| node_gen_trainer
node_vae_trainer -->|"extends trainer"| node_base_trainer
node_gen_trainer -->|"extends trainer"| node_base_trainer
node_vae_trainer -->|"trains encoder"| node_vae
node_gen_trainer -->|"encodes latents"| node_vae
node_gen_trainer -->|"trains and samples"| node_flow
node_gen_trainer -->|"conditions completion"| node_controlnet
node_flow -->|"runs backbone"| node_sparse_transformer
node_controlnet -->|"uses backbone"| node_sparse_transformer
node_vae -->|"encodes TSDF"| node_fields
node_gen_trainer -->|"writes predictions"| node_generated
node_generated -->|"reads meshes"| node_eval_runner
node_eval_runner -->|"computes metrics"| node_metric_tools
node_generated -->|"evaluates images"| node_fid_eval
node_generated -->|"evaluates scenes"| node_uni3d_eval

click node_front3d "https://github.com/quan-meng/seen2scene/blob/github/seen2scene/data/export_front3d.py"
click node_arkit "https://github.com/quan-meng/seen2scene/blob/github/seen2scene/data/export_arkitscenes.py"
click node_scannet "https://github.com/quan-meng/seen2scene/blob/github/seen2scene/data/export_scannetpp.py"
click node_fusion "https://github.com/quan-meng/seen2scene/blob/github/seen2scene/data/front3d/integrate.py"
click node_dataset "https://github.com/quan-meng/seen2scene/blob/github/seen2scene/dataset/dataset.py"
click node_config "https://github.com/quan-meng/seen2scene/blob/github/seen2scene/configs/opt.py"
click node_main "https://github.com/quan-meng/seen2scene/blob/github/seen2scene/main.py"
click node_vae_trainer "https://github.com/quan-meng/seen2scene/blob/github/seen2scene/models/trainer/train_vae.py"
click node_gen_trainer "https://github.com/quan-meng/seen2scene/blob/github/seen2scene/models/trainer/train_gen.py"
click node_base_trainer "https://github.com/quan-meng/seen2scene/blob/github/seen2scene/models/trainer/base.py"
click node_vae "https://github.com/quan-meng/seen2scene/blob/github/seen2scene/models/fvdb/sparse_vae.py"
click node_fields "https://github.com/quan-meng/seen2scene/blob/github/seen2scene/models/fields.py"
click node_flow "https://github.com/quan-meng/seen2scene/blob/github/seen2scene/models/backbone/flow_matching.py"
click node_controlnet "https://github.com/quan-meng/seen2scene/blob/github/seen2scene/models/backbone/controlnet.py"
click node_sparse_transformer "https://github.com/quan-meng/seen2scene/blob/github/seen2scene/models/sparse/dit.py"
click node_layout "https://github.com/quan-meng/seen2scene/blob/github/seen2scene/models/layout/get_layout_hierarchical.py"
click node_eval_runner "https://github.com/quan-meng/seen2scene/blob/github/seen2scene/eval/compute_iou_l1_l2_tmd.py"
click node_metric_tools "https://github.com/quan-meng/seen2scene/blob/github/seen2scene/tools/metrics.py"
click node_fid_eval "https://github.com/quan-meng/seen2scene/blob/github/seen2scene/eval/compute_fid_dino.py"
click node_uni3d_eval "https://github.com/quan-meng/seen2scene/blob/github/seen2scene/eval/compute_uni3d.py"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_front3d,node_arkit,node_scannet,node_fusion,node_scene_store,node_dataset toneBlue
class node_vae,node_fields,node_flow,node_controlnet,node_sparse_transformer,node_layout,node_rawdata toneAmber
class node_config,node_main,node_vae_trainer,node_gen_trainer,node_base_trainer,node_generated toneMint
class node_eval_runner,node_metric_tools,node_fid_eval,node_uni3d_eval toneRose
class node_researcher toneIndigo
```

## Components

### Scene data

- [3D-FRONT export](https://github.com/quan-meng/seen2scene/blob/github/seen2scene/data/export_front3d.py): `seen2scene/data/export_front3d.py`
- [ARKitScenes export](https://github.com/quan-meng/seen2scene/blob/github/seen2scene/data/export_arkitscenes.py): `seen2scene/data/export_arkitscenes.py`
- [ScanNet++ export](https://github.com/quan-meng/seen2scene/blob/github/seen2scene/data/export_scannetpp.py): `seen2scene/data/export_scannetpp.py`
- [FRONT-3D fusion](https://github.com/quan-meng/seen2scene/blob/github/seen2scene/data/front3d/integrate.py): `seen2scene/data/front3d/integrate.py`
- **Prepared scene files**
- [Scene dataset](https://github.com/quan-meng/seen2scene/blob/github/seen2scene/dataset/dataset.py): `seen2scene/dataset/dataset.py`

### Learning models

- [Sparse VAE](https://github.com/quan-meng/seen2scene/blob/github/seen2scene/models/fvdb/sparse_vae.py): `seen2scene/models/fvdb/sparse_vae.py`
- [TSDF scene fields](https://github.com/quan-meng/seen2scene/blob/github/seen2scene/models/fields.py): `seen2scene/models/fields.py`
- [Flow matching](https://github.com/quan-meng/seen2scene/blob/github/seen2scene/models/backbone/flow_matching.py): `seen2scene/models/backbone/flow_matching.py`
- [ControlNet](https://github.com/quan-meng/seen2scene/blob/github/seen2scene/models/backbone/controlnet.py): `seen2scene/models/backbone/controlnet.py`
- [Sparse transformer](https://github.com/quan-meng/seen2scene/blob/github/seen2scene/models/sparse/dit.py): `seen2scene/models/sparse/dit.py`
- [Hierarchical layout](https://github.com/quan-meng/seen2scene/blob/github/seen2scene/models/layout/get_layout_hierarchical.py): `seen2scene/models/layout/get_layout_hierarchical.py`

### Training and generation

- [Training configs](https://github.com/quan-meng/seen2scene/blob/github/seen2scene/configs/opt.py): `seen2scene/configs/opt.py`
- [Training entry point](https://github.com/quan-meng/seen2scene/blob/github/seen2scene/main.py): `seen2scene/main.py`
- [VAE trainer](https://github.com/quan-meng/seen2scene/blob/github/seen2scene/models/trainer/train_vae.py): `seen2scene/models/trainer/train_vae.py`
- [Generator trainer](https://github.com/quan-meng/seen2scene/blob/github/seen2scene/models/trainer/train_gen.py): `seen2scene/models/trainer/train_gen.py`
- [Trainer base](https://github.com/quan-meng/seen2scene/blob/github/seen2scene/models/trainer/base.py): `seen2scene/models/trainer/base.py`
- **Generated scenes**

### Evaluation

- [Evaluation tools](https://github.com/quan-meng/seen2scene/blob/github/seen2scene/eval/compute_iou_l1_l2_tmd.py): `seen2scene/eval/compute_iou_l1_l2_tmd.py`
- [Scene metrics](https://github.com/quan-meng/seen2scene/blob/github/seen2scene/tools/metrics.py): `seen2scene/tools/metrics.py`
- [FID and DINO evaluation](https://github.com/quan-meng/seen2scene/blob/github/seen2scene/eval/compute_fid_dino.py): `seen2scene/eval/compute_fid_dino.py`
- [Uni3D evaluation](https://github.com/quan-meng/seen2scene/blob/github/seen2scene/eval/compute_uni3d.py): `seen2scene/eval/compute_uni3d.py`

### Other components

- **Researcher**
- **Raw scene data**

## Connections

- Researcher → Training entry point: starts training
- Raw scene data → 3D-FRONT export: exports scenes
- Raw scene data → ARKitScenes export: exports scenes
- Raw scene data → ScanNet++ export: exports scenes
- 3D-FRONT export → FRONT-3D fusion: integrates scans
- 3D-FRONT export → Prepared scene files: writes scenes
- FRONT-3D fusion → Prepared scene files: writes TSDF
- ARKitScenes export → Prepared scene files: writes scenes
- ScanNet++ export → Prepared scene files: writes scenes
- Researcher → Hierarchical layout: requests layout
- Hierarchical layout → Generator trainer: conditions generation
- Training configs → Training entry point: configures run
- Training entry point → Scene dataset: configures splits
- Prepared scene files → Scene dataset: loads scenes
- Scene dataset → VAE trainer: supplies batches
- Scene dataset → Generator trainer: supplies batches
- Training entry point → VAE trainer: dispatches VAE
- Training entry point → Generator trainer: dispatches tasks
- VAE trainer → Trainer base: extends trainer
- Generator trainer → Trainer base: extends trainer
- VAE trainer → Sparse VAE: trains encoder
- Generator trainer → Sparse VAE: encodes latents
- Generator trainer → Flow matching: trains and samples
- Generator trainer → ControlNet: conditions completion
- Flow matching → Sparse transformer: runs backbone
- ControlNet → Sparse transformer: uses backbone
- Sparse VAE → TSDF scene fields: encodes TSDF
- Generator trainer → Generated scenes: writes predictions
- Generated scenes → Evaluation tools: reads meshes
- Evaluation tools → Scene metrics: computes metrics
- Generated scenes → FID and DINO evaluation: evaluates images
- Generated scenes → Uni3D evaluation: evaluates scenes
