# ldkong1205/transvae architecture

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

## Overview

TranSVAE is a research framework for unsupervised video domain adaptation in action recognition. Its user workflow prepares video datasets or uses extracted features, then trains a model on source and unlabeled target domains and evaluates target-domain action recognition. The model separates domain-related and temporal/semantic latent factors to support reconstruction and cross-domain transfer. The tree and excerpts support the training, model, and feature-extraction components; wiring details for unsampled dataset loaders and experiment variants are therefore kept conservative.

Main entry points: [`exp/TranSVAE.py`](https://github.com/ldkong1205/transvae/blob/main/exp/TranSVAE.py) (TranSVAE video model), [`exp/dataset.py`](https://github.com/ldkong1205/transvae/blob/main/exp/dataset.py) (Training datasets), [`exp/train_hmdb_ucf.py`](https://github.com/ldkong1205/transvae/blob/main/exp/train_hmdb_ucf.py) (UCF-HMDB trainer), [`exp/train_sprites.py`](https://github.com/ldkong1205/transvae/blob/main/exp/train_sprites.py) (Sprites trainer)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_prep["Data preparation"]
  node_splits["Dataset splitting<br/>[dataset2split.py]"]
  node_lists["List generation"]
  node_i3d["I3D features"]
  node_epic_i3d["Epic features"]
  node_i3d_backbone["I3D backbone<br/>[pytorch_i3d.py]"]
end

subgraph group_training["Adaptation training"]
  node_loader["Training datasets<br/>[dataset.py]"]
  node_ucf_hmdb["UCF-HMDB trainer<br/>[train_hmdb_ucf.py]"]
  node_jester["Jester trainer<br/>[train_jester.py]"]
  node_epic["Epic trainer"]
  node_sprites["Sprites trainer<br/>[train_sprites.py]"]
  node_losses["Training objectives<br/>[utils.py]"]
end

subgraph group_model["TranSVAE model"]
  node_model["TranSVAE video model<br/>[TranSVAE.py]"]
  node_temporal["Temporal aggregation<br/>[TRNmodule.py]"]
  node_image_model["Image encoders<br/>[dcgan_64.py]"]
  node_model_base["Model primitives<br/>[base.py]"]
end

subgraph group_data["Data and results"]
  node_lists_store["Dataset lists"]
  node_features[("Video features")]
  node_target_result["Target predictions"]
  node_transfer_result["Transferred videos"]
end

node_researcher(("Researcher"))
node_video_data[("Video datasets")]

node_researcher -->|"prepares data"| node_splits
node_researcher -->|"creates lists"| node_lists
node_researcher -->|"starts training"| node_ucf_hmdb
node_video_data -->|"input videos"| node_splits
node_video_data -->|"indexes videos"| node_lists
node_video_data -->|"video frames"| node_i3d
node_video_data -->|"video frames"| node_epic_i3d
node_splits -->|"writes splits"| node_lists_store
node_lists -->|"writes lists"| node_lists_store
node_i3d -->|"extracts with"| node_i3d_backbone
node_epic_i3d -->|"extracts with"| node_i3d_backbone
node_i3d -->|"writes features"| node_features
node_epic_i3d -->|"writes features"| node_features
node_lists_store -->|"loads samples"| node_loader
node_features -->|"loads features"| node_loader
node_loader -->|"supplies batches"| node_ucf_hmdb
node_loader -->|"supplies batches"| node_jester
node_loader -->|"supplies batches"| node_epic
node_loader -->|"supplies batches"| node_sprites
node_ucf_hmdb -->|"trains model"| node_model
node_jester -->|"trains model"| node_model
node_epic -->|"trains model"| node_model
node_sprites -->|"trains model"| node_model
node_ucf_hmdb -->|"computes objectives"| node_losses
node_jester -->|"computes objectives"| node_losses
node_epic -->|"computes objectives"| node_losses
node_sprites -->|"computes objectives"| node_losses
node_model -->|"uses aggregation"| node_temporal
node_model -->|"predicts actions"| node_target_result
node_model -->|"reconstructs domains"| node_transfer_result
node_image_model -.->|"supports images"| node_sprites
node_researcher -.->|"experiments with"| node_image_model

click node_splits "https://github.com/ldkong1205/transvae/blob/main/dataset_preparation/dataset2split.py"
click node_lists "https://github.com/ldkong1205/transvae/blob/main/dataset_preparation/video_dataset2list.py"
click node_i3d "https://github.com/ldkong1205/transvae/blob/main/dataset_preparation/video2I3D_ucf_hmdb.py"
click node_epic_i3d "https://github.com/ldkong1205/transvae/blob/main/dataset_preparation/video2I3D_epic_kitchens.py"
click node_i3d_backbone "https://github.com/ldkong1205/transvae/blob/main/dataset_preparation/pytorch_i3d.py"
click node_lists_store "https://github.com/ldkong1205/transvae/tree/main/dataset"
click node_features "https://github.com/ldkong1205/transvae/tree/main/dataset"
click node_loader "https://github.com/ldkong1205/transvae/blob/main/exp/dataset.py"
click node_ucf_hmdb "https://github.com/ldkong1205/transvae/blob/main/exp/train_hmdb_ucf.py"
click node_jester "https://github.com/ldkong1205/transvae/blob/main/exp/train_jester.py"
click node_epic "https://github.com/ldkong1205/transvae/blob/main/exp/train_epic_kitchens.py"
click node_sprites "https://github.com/ldkong1205/transvae/blob/main/exp/train_sprites.py"
click node_model "https://github.com/ldkong1205/transvae/blob/main/exp/TranSVAE.py"
click node_temporal "https://github.com/ldkong1205/transvae/blob/main/exp/TRNmodule.py"
click node_image_model "https://github.com/ldkong1205/transvae/blob/main/models/dcgan_64.py"
click node_model_base "https://github.com/ldkong1205/transvae/blob/main/models/base.py"
click node_losses "https://github.com/ldkong1205/transvae/blob/main/exp/utils.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_splits,node_lists,node_i3d,node_epic_i3d,node_i3d_backbone toneBlue
class node_loader,node_ucf_hmdb,node_jester,node_epic,node_sprites,node_losses,node_video_data toneAmber
class node_model,node_temporal,node_image_model,node_model_base toneMint
class node_lists_store,node_features,node_target_result,node_transfer_result toneRose
class node_researcher toneIndigo
```

## Components

### Data preparation

- [Dataset splitting](https://github.com/ldkong1205/transvae/blob/main/dataset_preparation/dataset2split.py): `dataset_preparation/dataset2split.py`
- [List generation](https://github.com/ldkong1205/transvae/blob/main/dataset_preparation/video_dataset2list.py): `dataset_preparation/video_dataset2list.py`
- [I3D features](https://github.com/ldkong1205/transvae/blob/main/dataset_preparation/video2I3D_ucf_hmdb.py): `dataset_preparation/video2I3D_ucf_hmdb.py`
- [Epic features](https://github.com/ldkong1205/transvae/blob/main/dataset_preparation/video2I3D_epic_kitchens.py): `dataset_preparation/video2I3D_epic_kitchens.py`
- [I3D backbone](https://github.com/ldkong1205/transvae/blob/main/dataset_preparation/pytorch_i3d.py): `dataset_preparation/pytorch_i3d.py`

### Adaptation training

- [Training datasets](https://github.com/ldkong1205/transvae/blob/main/exp/dataset.py): `exp/dataset.py`
- [UCF-HMDB trainer](https://github.com/ldkong1205/transvae/blob/main/exp/train_hmdb_ucf.py): `exp/train_hmdb_ucf.py`
- [Jester trainer](https://github.com/ldkong1205/transvae/blob/main/exp/train_jester.py): `exp/train_jester.py`
- [Epic trainer](https://github.com/ldkong1205/transvae/blob/main/exp/train_epic_kitchens.py): `exp/train_epic_kitchens.py`
- [Sprites trainer](https://github.com/ldkong1205/transvae/blob/main/exp/train_sprites.py): `exp/train_sprites.py`
- [Training objectives](https://github.com/ldkong1205/transvae/blob/main/exp/utils.py): `exp/utils.py`

### TranSVAE model

- [TranSVAE video model](https://github.com/ldkong1205/transvae/blob/main/exp/TranSVAE.py): `exp/TranSVAE.py`
- [Temporal aggregation](https://github.com/ldkong1205/transvae/blob/main/exp/TRNmodule.py): `exp/TRNmodule.py`
- [Image encoders](https://github.com/ldkong1205/transvae/blob/main/models/dcgan_64.py): `models/dcgan_64.py`
- [Model primitives](https://github.com/ldkong1205/transvae/blob/main/models/base.py): `models/base.py`

### Data and results

- [Dataset lists](https://github.com/ldkong1205/transvae/tree/main/dataset): `dataset`
- [Video features](https://github.com/ldkong1205/transvae/tree/main/dataset): `dataset`
- **Target predictions**
- **Transferred videos**

### Other components

- **Researcher**
- **Video datasets**

## Connections

- Researcher → Dataset splitting: prepares data
- Researcher → List generation: creates lists
- Researcher → UCF-HMDB trainer: starts training
- Video datasets → Dataset splitting: input videos
- Video datasets → List generation: indexes videos
- Video datasets → I3D features: video frames
- Video datasets → Epic features: video frames
- Dataset splitting → Dataset lists: writes splits
- List generation → Dataset lists: writes lists
- I3D features → I3D backbone: extracts with
- Epic features → I3D backbone: extracts with
- I3D features → Video features: writes features
- Epic features → Video features: writes features
- Dataset lists → Training datasets: loads samples
- Video features → Training datasets: loads features
- Training datasets → UCF-HMDB trainer: supplies batches
- Training datasets → Jester trainer: supplies batches
- Training datasets → Epic trainer: supplies batches
- Training datasets → Sprites trainer: supplies batches
- UCF-HMDB trainer → TranSVAE video model: trains model
- Jester trainer → TranSVAE video model: trains model
- Epic trainer → TranSVAE video model: trains model
- Sprites trainer → TranSVAE video model: trains model
- UCF-HMDB trainer → Training objectives: computes objectives
- Jester trainer → Training objectives: computes objectives
- Epic trainer → Training objectives: computes objectives
- Sprites trainer → Training objectives: computes objectives
- TranSVAE video model → Temporal aggregation: uses aggregation
- TranSVAE video model → Target predictions: predicts actions
- TranSVAE video model → Transferred videos: reconstructs domains
- Image encoders → Sprites trainer: supports images
- Researcher → Image encoders: experiments with
