# wujh2001/swift4d architecture

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

- Interactive diagram: https://gitdiagram.com/wujh2001/swift4d
- Repository: https://github.com/wujh2001/swift4d

## Overview

Swift4D reconstructs dynamic multi-view scenes as compact, time-varying Gaussian splats. Users prepare DyNeRF or other multi-view data, train a scene model, render selected views and times, then evaluate rendered results. Training combines camera/image loading, Gaussian parameters and temporal deformation; rendering turns that representation into images and auxiliary depth/dynamics maps through a differentiable rasterizer. The README documents the dataset variants, staged training, rendering, and metric evaluation. The source excerpts are partial, so uncertain internal wiring is omitted.

Main entry points: [`train.py`](https://github.com/wujh2001/swift4d/blob/main/train.py) (Training), [`render.py`](https://github.com/wujh2001/swift4d/blob/main/render.py) (Render command), [`metrics.py`](https://github.com/wujh2001/swift4d/blob/main/metrics.py) (Metric evaluation), [`scene/dataset.py`](https://github.com/wujh2001/swift4d/blob/main/scene/dataset.py) (Scene datasets)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_data["Data ingestion"]
  node_dynerf_prep["DyNeRF prep"]
  node_multiview_prep["Multi-view prep"]
  node_dataset_loaders["Dataset loaders<br/>[dataset_readers.py]"]
  node_dataset["Scene datasets<br/>[dataset.py]"]
  node_cameras["Camera views<br/>[cameras.py]"]
end

subgraph group_model["Scene reconstruction"]
  node_configs["Scene configs"]
  node_train["Training<br/>[train.py]"]
  node_gaussian_model["Gaussian model<br/>[gaussian_model.py]"]
  node_deformation["Temporal deformation<br/>[hash_deform.py]"]
  node_regularization["Model regularization<br/>[regulation.py]"]
  node_model_store[("Trained model")]
end

subgraph group_render["Rendering"]
  node_render_entry["Render command<br/>[render.py]"]
  node_renderer["Gaussian renderer<br/>[__init__.py]"]
  node_rasterizer["Differentiable rasterizer<br/>[__init__.py]"]
  node_rendered_output["Rendered outputs"]
end

subgraph group_eval["Evaluation"]
  node_metrics["Metric evaluation<br/>[metrics.py]"]
  node_lpips["LPIPS metric<br/>[__init__.py]"]
  node_metric_output["Evaluation results"]
end

node_user(("Researcher"))

node_user -->|"prepares data"| node_dynerf_prep
node_user -->|"prepares data"| node_multiview_prep
node_dynerf_prep -->|"produces frames"| node_dataset_loaders
node_multiview_prep -->|"produces views"| node_dataset_loaders
node_user -->|"starts training"| node_train
node_train -->|"loads settings"| node_configs
node_train -->|"loads scene"| node_dataset
node_dataset -->|"loads records"| node_dataset_loaders
node_dataset -->|"provides views"| node_cameras
node_train -->|"optimizes"| node_gaussian_model
node_train -->|"trains dynamics"| node_deformation
node_train -->|"applies constraints"| node_regularization
node_train -->|"saves model"| node_model_store
node_user -->|"requests render"| node_render_entry
node_render_entry -->|"loads model"| node_model_store
node_render_entry -->|"renders views"| node_renderer
node_renderer -->|"reads parameters"| node_gaussian_model
node_renderer -->|"rasterizes splats"| node_rasterizer
node_render_entry -->|"writes images"| node_rendered_output
node_user -->|"requests evaluation"| node_metrics
node_metrics -->|"evaluates images"| node_rendered_output
node_metrics -.->|"computes perceptual score"| node_lpips
node_metrics -->|"writes scores"| node_metric_output

click node_dynerf_prep "https://github.com/wujh2001/swift4d/blob/main/scripts/preprocess_dynerf.py"
click node_multiview_prep "https://github.com/wujh2001/swift4d/tree/main/scripts/multiview_data_process"
click node_dataset_loaders "https://github.com/wujh2001/swift4d/blob/main/scene/dataset_readers.py"
click node_dataset "https://github.com/wujh2001/swift4d/blob/main/scene/dataset.py"
click node_cameras "https://github.com/wujh2001/swift4d/blob/main/scene/cameras.py"
click node_configs "https://github.com/wujh2001/swift4d/tree/main/arguments"
click node_train "https://github.com/wujh2001/swift4d/blob/main/train.py"
click node_gaussian_model "https://github.com/wujh2001/swift4d/blob/main/scene/gaussian_model.py"
click node_deformation "https://github.com/wujh2001/swift4d/blob/main/scene/hash_deform.py"
click node_regularization "https://github.com/wujh2001/swift4d/blob/main/scene/regulation.py"
click node_render_entry "https://github.com/wujh2001/swift4d/blob/main/render.py"
click node_renderer "https://github.com/wujh2001/swift4d/blob/main/gaussian_renderer/__init__.py"
click node_rasterizer "https://github.com/wujh2001/swift4d/blob/main/submodules/diff-gaussian-rasterization/diff_gaussian_rasterization/__init__.py"
click node_metrics "https://github.com/wujh2001/swift4d/blob/main/metrics.py"
click node_lpips "https://github.com/wujh2001/swift4d/blob/main/lpipsPyTorch/__init__.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_dynerf_prep,node_multiview_prep,node_dataset_loaders,node_dataset,node_cameras toneBlue
class node_configs,node_train,node_gaussian_model,node_deformation,node_regularization,node_model_store toneAmber
class node_render_entry,node_renderer,node_rasterizer,node_rendered_output toneMint
class node_metrics,node_lpips,node_metric_output toneRose
class node_user toneIndigo
```

## Components

### Data ingestion

- [DyNeRF prep](https://github.com/wujh2001/swift4d/blob/main/scripts/preprocess_dynerf.py): `scripts/preprocess_dynerf.py`
- [Multi-view prep](https://github.com/wujh2001/swift4d/tree/main/scripts/multiview_data_process): `scripts/multiview_data_process`
- [Dataset loaders](https://github.com/wujh2001/swift4d/blob/main/scene/dataset_readers.py): `scene/dataset_readers.py`
- [Scene datasets](https://github.com/wujh2001/swift4d/blob/main/scene/dataset.py): `scene/dataset.py`
- [Camera views](https://github.com/wujh2001/swift4d/blob/main/scene/cameras.py): `scene/cameras.py`

### Scene reconstruction

- [Scene configs](https://github.com/wujh2001/swift4d/tree/main/arguments): `arguments`
- [Training](https://github.com/wujh2001/swift4d/blob/main/train.py): `train.py`
- [Gaussian model](https://github.com/wujh2001/swift4d/blob/main/scene/gaussian_model.py): `scene/gaussian_model.py`
- [Temporal deformation](https://github.com/wujh2001/swift4d/blob/main/scene/hash_deform.py): `scene/hash_deform.py`
- [Model regularization](https://github.com/wujh2001/swift4d/blob/main/scene/regulation.py): `scene/regulation.py`
- **Trained model**

### Rendering

- [Render command](https://github.com/wujh2001/swift4d/blob/main/render.py): `render.py`
- [Gaussian renderer](https://github.com/wujh2001/swift4d/blob/main/gaussian_renderer/__init__.py): `gaussian_renderer/__init__.py`
- [Differentiable rasterizer](https://github.com/wujh2001/swift4d/blob/main/submodules/diff-gaussian-rasterization/diff_gaussian_rasterization/__init__.py): `submodules/diff-gaussian-rasterization/diff_gaussian_rasterization/__init__.py`
- **Rendered outputs**

### Evaluation

- [Metric evaluation](https://github.com/wujh2001/swift4d/blob/main/metrics.py): `metrics.py`
- [LPIPS metric](https://github.com/wujh2001/swift4d/blob/main/lpipsPyTorch/__init__.py): `lpipsPyTorch/__init__.py`
- **Evaluation results**

### Other components

- **Researcher**

## Connections

- Researcher → DyNeRF prep: prepares data
- Researcher → Multi-view prep: prepares data
- DyNeRF prep → Dataset loaders: produces frames
- Multi-view prep → Dataset loaders: produces views
- Researcher → Training: starts training
- Training → Scene configs: loads settings
- Training → Scene datasets: loads scene
- Scene datasets → Dataset loaders: loads records
- Scene datasets → Camera views: provides views
- Training → Gaussian model: optimizes
- Training → Temporal deformation: trains dynamics
- Training → Model regularization: applies constraints
- Training → Trained model: saves model
- Researcher → Render command: requests render
- Render command → Trained model: loads model
- Render command → Gaussian renderer: renders views
- Gaussian renderer → Gaussian model: reads parameters
- Gaussian renderer → Differentiable rasterizer: rasterizes splats
- Render command → Rendered outputs: writes images
- Researcher → Metric evaluation: requests evaluation
- Metric evaluation → Rendered outputs: evaluates images
- Metric evaluation → LPIPS metric: computes perceptual score
- Metric evaluation → Evaluation results: writes scores
