# gangweix/fast-acvnet architecture

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

- Interactive diagram: https://gitdiagram.com/gangweix/fast-acvnet
- Repository: https://github.com/gangweix/fast-acvnet

## Overview

Fast-ACVNet is a stereo-matching research application: it trains and evaluates disparity-estimation models on Scene Flow and KITTI, and provides benchmark-output and Middlebury evaluation paths. The main training scripts coordinate dataset selection, model execution, loss and metrics, and experiment logging; the README documents staged attention-only then complete-network training. Dataset loaders also cover ETH3D and KITTI raw data. Some subsystem paths and links come from the README or source index rather than inspected implementation, so uncertain runtime connections are omitted.

Main entry points: [`main_kitti.py`](https://github.com/gangweix/fast-acvnet/blob/main/main_kitti.py) (KITTI training), [`main_sceneflow.py`](https://github.com/gangweix/fast-acvnet/blob/main/main_sceneflow.py) (Scene Flow training), [`test_mid.py`](https://github.com/gangweix/fast-acvnet/blob/main/test_mid.py) (Middlebury evaluation), [`models/Fast_ACV_plus.py`](https://github.com/gangweix/fast-acvnet/blob/main/models/Fast_ACV_plus.py) (Fast-ACVNet+)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_workflow["Training workflow"]
  node_sceneflow_train["Scene Flow training<br/>[main_sceneflow.py]"]
  node_kitti_train["KITTI training<br/>[main_kitti.py]"]
end

subgraph group_data["Stereo data"]
  node_scene_data["Scene Flow loader"]
  node_kitti_data["KITTI loader"]
  node_data_io["Image and PFM I/O<br/>[data_io.py]"]
  node_transforms["Flow transforms<br/>[flow_transforms.py]"]
  node_other_data["Other datasets"]
end

subgraph group_models["Disparity models"]
  node_fast_acv["Fast-ACVNet<br/>[Fast_ACV.py]"]
  node_fast_plus["Fast-ACVNet+<br/>[Fast_ACV_plus.py]"]
  node_model_ops["Model building blocks<br/>[submodule.py]"]
  node_loss["Training loss<br/>[loss.py]"]
end

subgraph group_support["Evaluation and output"]
  node_metrics["Stereo metrics<br/>[metrics.py]"]
  node_experiment["Experiment utilities<br/>[experiment.py]"]
  node_visualization["Visualization<br/>[visualization.py]"]
  node_misc["Runtime utilities<br/>[misc.py]"]
  node_middlebury["Middlebury evaluation<br/>[test_mid.py]"]
  node_disparity_output["Benchmark disparity output<br/>[save_disp.py]"]
end

node_engineer(("Researcher"))

node_engineer -->|"starts training"| node_sceneflow_train
node_engineer -->|"starts training"| node_kitti_train
node_sceneflow_train -->|"loads batches"| node_scene_data
node_kitti_train -->|"loads batches"| node_kitti_data
node_kitti_data -->|"reads images"| node_data_io
node_scene_data -->|"reads images"| node_data_io
node_middlebury -->|"augments samples"| node_transforms
node_middlebury -->|"uses transforms"| node_data_io
node_middlebury -.->|"evaluates"| node_other_data
node_sceneflow_train -->|"runs model"| node_fast_acv
node_kitti_train -->|"runs model"| node_fast_plus
node_fast_acv -->|"uses blocks"| node_model_ops
node_fast_plus -->|"uses blocks"| node_model_ops
node_sceneflow_train -.->|"computes loss"| node_loss
node_kitti_train -->|"computes loss"| node_loss
node_kitti_train -->|"computes metrics"| node_metrics
node_kitti_train -->|"logs results"| node_experiment
node_experiment -.->|"renders images"| node_visualization
node_kitti_train -.->|"initializes runtime"| node_misc
node_engineer -->|"requests benchmark output"| node_disparity_output
node_engineer -->|"evaluates generalization"| node_middlebury
node_disparity_output -.->|"loads predictions"| node_fast_plus

click node_sceneflow_train "https://github.com/gangweix/fast-acvnet/blob/main/main_sceneflow.py"
click node_kitti_train "https://github.com/gangweix/fast-acvnet/blob/main/main_kitti.py"
click node_scene_data "https://github.com/gangweix/fast-acvnet/blob/main/datasets/sceneflow_dataset.py"
click node_kitti_data "https://github.com/gangweix/fast-acvnet/blob/main/datasets/kitti_dataset_1215.py"
click node_data_io "https://github.com/gangweix/fast-acvnet/blob/main/datasets/data_io.py"
click node_transforms "https://github.com/gangweix/fast-acvnet/blob/main/datasets/flow_transforms.py"
click node_other_data "https://github.com/gangweix/fast-acvnet/tree/main/datasets"
click node_fast_acv "https://github.com/gangweix/fast-acvnet/blob/main/models/Fast_ACV.py"
click node_fast_plus "https://github.com/gangweix/fast-acvnet/blob/main/models/Fast_ACV_plus.py"
click node_model_ops "https://github.com/gangweix/fast-acvnet/blob/main/models/submodule.py"
click node_loss "https://github.com/gangweix/fast-acvnet/blob/main/models/loss.py"
click node_metrics "https://github.com/gangweix/fast-acvnet/blob/main/utils/metrics.py"
click node_experiment "https://github.com/gangweix/fast-acvnet/blob/main/utils/experiment.py"
click node_visualization "https://github.com/gangweix/fast-acvnet/blob/main/utils/visualization.py"
click node_misc "https://github.com/gangweix/fast-acvnet/blob/main/utils/misc.py"
click node_middlebury "https://github.com/gangweix/fast-acvnet/blob/main/test_mid.py"
click node_disparity_output "https://github.com/gangweix/fast-acvnet/blob/main/save_disp.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_sceneflow_train,node_kitti_train toneBlue
class node_scene_data,node_kitti_data,node_data_io,node_transforms,node_other_data toneAmber
class node_fast_acv,node_fast_plus,node_model_ops,node_loss toneMint
class node_metrics,node_experiment,node_visualization,node_misc,node_middlebury,node_disparity_output toneRose
class node_engineer toneIndigo
```

## Components

### Training workflow

- [Scene Flow training](https://github.com/gangweix/fast-acvnet/blob/main/main_sceneflow.py): `main_sceneflow.py`
- [KITTI training](https://github.com/gangweix/fast-acvnet/blob/main/main_kitti.py): `main_kitti.py`

### Stereo data

- [Scene Flow loader](https://github.com/gangweix/fast-acvnet/blob/main/datasets/sceneflow_dataset.py): `datasets/sceneflow_dataset.py`
- [KITTI loader](https://github.com/gangweix/fast-acvnet/blob/main/datasets/kitti_dataset_1215.py): `datasets/kitti_dataset_1215.py`
- [Image and PFM I/O](https://github.com/gangweix/fast-acvnet/blob/main/datasets/data_io.py): `datasets/data_io.py`
- [Flow transforms](https://github.com/gangweix/fast-acvnet/blob/main/datasets/flow_transforms.py): `datasets/flow_transforms.py`
- [Other datasets](https://github.com/gangweix/fast-acvnet/tree/main/datasets): `datasets`

### Disparity models

- [Fast-ACVNet](https://github.com/gangweix/fast-acvnet/blob/main/models/Fast_ACV.py): `models/Fast_ACV.py`
- [Fast-ACVNet+](https://github.com/gangweix/fast-acvnet/blob/main/models/Fast_ACV_plus.py): `models/Fast_ACV_plus.py`
- [Model building blocks](https://github.com/gangweix/fast-acvnet/blob/main/models/submodule.py): `models/submodule.py`
- [Training loss](https://github.com/gangweix/fast-acvnet/blob/main/models/loss.py): `models/loss.py`

### Evaluation and output

- [Stereo metrics](https://github.com/gangweix/fast-acvnet/blob/main/utils/metrics.py): `utils/metrics.py`
- [Experiment utilities](https://github.com/gangweix/fast-acvnet/blob/main/utils/experiment.py): `utils/experiment.py`
- [Visualization](https://github.com/gangweix/fast-acvnet/blob/main/utils/visualization.py): `utils/visualization.py`
- [Runtime utilities](https://github.com/gangweix/fast-acvnet/blob/main/utils/misc.py): `utils/misc.py`
- [Middlebury evaluation](https://github.com/gangweix/fast-acvnet/blob/main/test_mid.py): `test_mid.py`
- [Benchmark disparity output](https://github.com/gangweix/fast-acvnet/blob/main/save_disp.py): `save_disp.py`

### Other components

- **Researcher**

## Connections

- Researcher → Scene Flow training: starts training (evidence: `README.md`)
- Researcher → KITTI training: starts training (evidence: `README.md`)
- Scene Flow training → Scene Flow loader: loads batches (evidence: `main_sceneflow.py`)
- KITTI training → KITTI loader: loads batches (evidence: `main_kitti.py`)
- KITTI loader → Image and PFM I/O: reads images (evidence: `datasets/kitti_dataset_1215.py`)
- Scene Flow loader → Image and PFM I/O: reads images (evidence: `datasets/sceneflow_dataset.py`)
- Middlebury evaluation → Flow transforms: augments samples
- Middlebury evaluation → Image and PFM I/O: uses transforms
- Middlebury evaluation → Other datasets: evaluates
- Scene Flow training → Fast-ACVNet: runs model (evidence: `main_sceneflow.py`)
- KITTI training → Fast-ACVNet+: runs model (evidence: `main_kitti.py`)
- Fast-ACVNet → Model building blocks: uses blocks (evidence: `models/Fast_ACV.py`)
- Fast-ACVNet+ → Model building blocks: uses blocks (evidence: `models/Fast_ACV_plus.py`)
- Scene Flow training → Training loss: computes loss
- KITTI training → Training loss: computes loss (evidence: `main_kitti.py`)
- KITTI training → Stereo metrics: computes metrics (evidence: `main_kitti.py`)
- KITTI training → Experiment utilities: logs results (evidence: `main_kitti.py`)
- Experiment utilities → Visualization: renders images
- KITTI training → Runtime utilities: initializes runtime
- Researcher → Benchmark disparity output: requests benchmark output (evidence: `README.md`)
- Researcher → Middlebury evaluation: evaluates generalization (evidence: `README.md`)
- Benchmark disparity output → Fast-ACVNet+: loads predictions
