# hova88/vggt architecture

> Architecture diagram of the GitHub repository hova88/vggt, 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/hova88/vggt
- Repository: https://github.com/hova88/vggt

## Overview

VGGT is a feed-forward scene-reconstruction model: a user supplies one or more images, the model aggregates visual tokens, and prediction heads produce camera parameters, depth, point maps, and tracks. Geometry utilities support conversion between depth and 3D coordinates. The repository also includes a finetuning workflow with CO3D and VKITTI datasets, training, loss calculation, and checkpoint handling, plus a documented COLMAP export demo. Edges reflect the README workflow and sampled source; demo and unsampled subsystem wiring is shown only where documented.

Main entry points: [`vggt/models/vggt.py`](https://github.com/hova88/vggt/blob/main/vggt/models/vggt.py) (VGGT model), [`training/trainer.py`](https://github.com/hova88/vggt/blob/main/training/trainer.py) (Trainer), [`training/data/composed_dataset.py`](https://github.com/hova88/vggt/blob/main/training/data/composed_dataset.py) (Dataset composition), [`demo_colmap.py`](https://github.com/hova88/vggt/blob/main/demo_colmap.py) (COLMAP export demo)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_inference["Inference"]
  node_preprocess["Image preprocessing<br/>[load_fn.py]"]
  node_vggt["VGGT model<br/>[vggt.py]"]
  node_aggregator["Token aggregation<br/>[aggregator.py]"]
  node_vit["Vision transformer"]
end

subgraph group_predictions["Prediction heads"]
  node_camera["Camera head<br/>[camera_head.py]"]
  node_dpt["Depth and point heads<br/>[dpt_head.py]"]
  node_track_head["Track head<br/>[track_head.py]"]
  node_predictions_out["Scene predictions"]
end

subgraph group_geometry["Geometry and tracking"]
  node_geometry["Geometry utilities<br/>[geometry.py]"]
  node_pose_encoding["Pose conversion<br/>[pose_enc.py]"]
  node_track_predict["Track prediction<br/>[track_predict.py]"]
  node_colmap_demo["COLMAP export demo<br/>[demo_colmap.py]"]
end

subgraph group_training["Finetuning"]
  node_launch["Training launcher<br/>[launch.py]"]
  node_trainer["Trainer<br/>[trainer.py]"]
  node_datasets["Dataset composition"]
  node_co3d["Co3D dataset<br/>[co3d.py]"]
  node_vkitti["Virtual KITTI dataset<br/>[vkitti.py]"]
  node_dataloader["Dynamic dataloader"]
  node_loss["Training loss<br/>[loss.py]"]
  node_checkpoint["Checkpoint handling<br/>[checkpoint.py]"]
end

node_user(("Image user"))

node_user -->|"provides images"| node_preprocess
node_preprocess -->|"supplies images"| node_vggt
node_vggt -->|"aggregates inputs"| node_aggregator
node_aggregator -->|"processes tokens"| node_vit
node_vggt -->|"predicts cameras"| node_camera
node_vggt -->|"predicts maps"| node_dpt
node_vggt -->|"predicts tracks"| node_track_head
node_camera -->|"decodes pose"| node_pose_encoding
node_pose_encoding -->|"returns camera matrices"| node_predictions_out
node_dpt -->|"returns depth and points"| node_predictions_out
node_track_head -->|"returns tracks"| node_predictions_out
node_geometry -->|"unprojects depth"| node_predictions_out
node_track_predict -.->|"predicts 3D tracks"| node_predictions_out
node_launch -->|"starts training"| node_trainer
node_trainer -->|"instantiates data"| node_datasets
node_datasets -->|"selects dataset"| node_co3d
node_datasets -->|"selects dataset"| node_vkitti
node_trainer -->|"loads batches"| node_dataloader
node_trainer -->|"trains model"| node_vggt
node_trainer -->|"computes loss"| node_loss
node_trainer -->|"saves state"| node_checkpoint
node_colmap_demo -->|"runs inference"| node_vggt
node_colmap_demo -->|"exports reconstruction"| node_predictions_out

click node_preprocess "https://github.com/hova88/vggt/blob/main/vggt/utils/load_fn.py"
click node_vggt "https://github.com/hova88/vggt/blob/main/vggt/models/vggt.py"
click node_aggregator "https://github.com/hova88/vggt/blob/main/vggt/models/aggregator.py"
click node_vit "https://github.com/hova88/vggt/blob/main/vggt/layers/vision_transformer.py"
click node_camera "https://github.com/hova88/vggt/blob/main/vggt/heads/camera_head.py"
click node_dpt "https://github.com/hova88/vggt/blob/main/vggt/heads/dpt_head.py"
click node_track_head "https://github.com/hova88/vggt/blob/main/vggt/heads/track_head.py"
click node_geometry "https://github.com/hova88/vggt/blob/main/vggt/utils/geometry.py"
click node_pose_encoding "https://github.com/hova88/vggt/blob/main/vggt/utils/pose_enc.py"
click node_track_predict "https://github.com/hova88/vggt/blob/main/vggt/dependency/track_predict.py"
click node_launch "https://github.com/hova88/vggt/blob/main/training/launch.py"
click node_trainer "https://github.com/hova88/vggt/blob/main/training/trainer.py"
click node_datasets "https://github.com/hova88/vggt/blob/main/training/data/composed_dataset.py"
click node_co3d "https://github.com/hova88/vggt/blob/main/training/data/datasets/co3d.py"
click node_vkitti "https://github.com/hova88/vggt/blob/main/training/data/datasets/vkitti.py"
click node_dataloader "https://github.com/hova88/vggt/blob/main/training/data/dynamic_dataloader.py"
click node_loss "https://github.com/hova88/vggt/blob/main/training/loss.py"
click node_checkpoint "https://github.com/hova88/vggt/blob/main/training/train_utils/checkpoint.py"
click node_colmap_demo "https://github.com/hova88/vggt/blob/main/demo_colmap.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_preprocess,node_vggt,node_aggregator,node_vit,node_user toneBlue
class node_camera,node_dpt,node_track_head,node_predictions_out toneAmber
class node_geometry,node_pose_encoding,node_track_predict,node_colmap_demo toneMint
class node_launch,node_trainer,node_datasets,node_co3d,node_vkitti,node_dataloader,node_loss,node_checkpoint toneRose
```

## Components

### Inference

- [Image preprocessing](https://github.com/hova88/vggt/blob/main/vggt/utils/load_fn.py): `vggt/utils/load_fn.py`
- [VGGT model](https://github.com/hova88/vggt/blob/main/vggt/models/vggt.py): `vggt/models/vggt.py`
- [Token aggregation](https://github.com/hova88/vggt/blob/main/vggt/models/aggregator.py): `vggt/models/aggregator.py`
- [Vision transformer](https://github.com/hova88/vggt/blob/main/vggt/layers/vision_transformer.py): `vggt/layers/vision_transformer.py`

### Prediction heads

- [Camera head](https://github.com/hova88/vggt/blob/main/vggt/heads/camera_head.py): `vggt/heads/camera_head.py`
- [Depth and point heads](https://github.com/hova88/vggt/blob/main/vggt/heads/dpt_head.py): `vggt/heads/dpt_head.py`
- [Track head](https://github.com/hova88/vggt/blob/main/vggt/heads/track_head.py): `vggt/heads/track_head.py`
- **Scene predictions**

### Geometry and tracking

- [Geometry utilities](https://github.com/hova88/vggt/blob/main/vggt/utils/geometry.py): `vggt/utils/geometry.py`
- [Pose conversion](https://github.com/hova88/vggt/blob/main/vggt/utils/pose_enc.py): `vggt/utils/pose_enc.py`
- [Track prediction](https://github.com/hova88/vggt/blob/main/vggt/dependency/track_predict.py): `vggt/dependency/track_predict.py`
- [COLMAP export demo](https://github.com/hova88/vggt/blob/main/demo_colmap.py): `demo_colmap.py`

### Finetuning

- [Training launcher](https://github.com/hova88/vggt/blob/main/training/launch.py): `training/launch.py`
- [Trainer](https://github.com/hova88/vggt/blob/main/training/trainer.py): `training/trainer.py`
- [Dataset composition](https://github.com/hova88/vggt/blob/main/training/data/composed_dataset.py): `training/data/composed_dataset.py`
- [Co3D dataset](https://github.com/hova88/vggt/blob/main/training/data/datasets/co3d.py): `training/data/datasets/co3d.py`
- [Virtual KITTI dataset](https://github.com/hova88/vggt/blob/main/training/data/datasets/vkitti.py): `training/data/datasets/vkitti.py`
- [Dynamic dataloader](https://github.com/hova88/vggt/blob/main/training/data/dynamic_dataloader.py): `training/data/dynamic_dataloader.py`
- [Training loss](https://github.com/hova88/vggt/blob/main/training/loss.py): `training/loss.py`
- [Checkpoint handling](https://github.com/hova88/vggt/blob/main/training/train_utils/checkpoint.py): `training/train_utils/checkpoint.py`

### Other components

- **Image user**

## Connections

- Image user → Image preprocessing: provides images
- Image preprocessing → VGGT model: supplies images
- VGGT model → Token aggregation: aggregates inputs
- Token aggregation → Vision transformer: processes tokens
- VGGT model → Camera head: predicts cameras
- VGGT model → Depth and point heads: predicts maps
- VGGT model → Track head: predicts tracks
- Camera head → Pose conversion: decodes pose
- Pose conversion → Scene predictions: returns camera matrices
- Depth and point heads → Scene predictions: returns depth and points
- Track head → Scene predictions: returns tracks
- Geometry utilities → Scene predictions: unprojects depth
- Track prediction → Scene predictions: predicts 3D tracks
- Training launcher → Trainer: starts training
- Trainer → Dataset composition: instantiates data
- Dataset composition → Co3D dataset: selects dataset
- Dataset composition → Virtual KITTI dataset: selects dataset
- Trainer → Dynamic dataloader: loads batches
- Trainer → VGGT model: trains model
- Trainer → Training loss: computes loss
- Trainer → Checkpoint handling: saves state
- COLMAP export demo → VGGT model: runs inference
- COLMAP export demo → Scene predictions: exports reconstruction
