# spiderforest/mixercseg architecture

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

## Overview

MixerCSeg is a crack-image segmentation system: it loads labeled images, trains a multi-stage mixer encoder and refinement decoder, produces pixel-level predictions, and evaluates saved results. The README also describes benchmark/checkpoint inference, while the provided tree does not include the referenced test.py. Some model and orchestration source is unsampled, so the graph omits uncertain wiring rather than inferring a complete call chain.

Main entry points: [`engine.py`](https://github.com/spiderforest/mixercseg/blob/main/engine.py) (Epoch trainer), [`models/segmentor/MixerCSeg.py`](https://github.com/spiderforest/mixercseg/blob/main/models/segmentor/MixerCSeg.py) (MixerCSeg), [`models/encoder/vss_block.py`](https://github.com/spiderforest/mixercseg/blob/main/models/encoder/vss_block.py) (VSS encoder), [`eval/evaluate.py`](https://github.com/spiderforest/mixercseg/blob/main/eval/evaluate.py) (Metric evaluation)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_workflow["Training and evaluation"]
  node_main["Training runner<br/>[main.py]"]
  node_engine["Epoch trainer<br/>[engine.py]"]
  node_evaluation["Metric evaluation<br/>[evaluate.py]"]
  node_eval_io["Evaluation I/O<br/>[data_io.py]"]
  node_loss["Segmentation loss<br/>[main.py]"]
  node_optimizer["Optimizer and scheduler<br/>[main.py]"]
  node_predictions["Prediction results"]
end

subgraph group_data["Crack data"]
  node_dataset_base["Dataset transforms<br/>[base_dataset.py]"]
  node_crack_dataset["Crack dataset loader<br/>[crack_dataset.py]"]
  node_image_folder["Folder image loader<br/>[image_folder.py]"]
end

subgraph group_network["Segmentation model"]
  node_segmentor["MixerCSeg<br/>[MixerCSeg.py]"]
  node_encoder["VSS encoder<br/>[vss_block.py]"]
  node_patch_embed["Patch embedding<br/>[patch_embed.py]"]
  node_inception["Inception branches<br/>[inception.py]"]
  node_edge_gate["HoG edge gate<br/>[hog_edge.py]"]
  node_decoder["SRF decoder<br/>[SRF.py]"]
end

subgraph group_kernels["State-space compute"]
  node_vmamba["VMamba scan<br/>[vmamba.py]"]
  node_scan_kernel["Selective scan kernels<br/>[selective_scan.h]"]
end

node_researcher(("Researcher"))
node_crack_data[("Crack dataset")]

node_researcher -->|"configures training"| node_main
node_crack_data -->|"provides samples"| node_crack_dataset
node_crack_data -->|"provides images"| node_image_folder
node_crack_dataset -->|"uses transforms"| node_dataset_base
node_main -->|"runs epochs"| node_engine
node_engine -->|"forwards batches"| node_segmentor
node_engine -->|"computes loss"| node_loss
node_engine -->|"updates weights"| node_optimizer
node_segmentor -->|"extracts features"| node_encoder
node_encoder -->|"embeds images"| node_patch_embed
node_encoder -->|"gates edges"| node_edge_gate
node_encoder -->|"runs state-space mixing"| node_vmamba
node_segmentor -->|"mixes features"| node_inception
node_segmentor -->|"refines features"| node_decoder
node_vmamba -.->|"dispatches scan"| node_scan_kernel
node_evaluation -->|"loads result data"| node_eval_io
node_evaluation -->|"scores predictions"| node_predictions
node_researcher -->|"requests metrics"| node_evaluation

click node_main "https://github.com/spiderforest/mixercseg/blob/main/main.py"
click node_engine "https://github.com/spiderforest/mixercseg/blob/main/engine.py"
click node_evaluation "https://github.com/spiderforest/mixercseg/blob/main/eval/evaluate.py"
click node_eval_io "https://github.com/spiderforest/mixercseg/blob/main/eval/data_io.py"
click node_dataset_base "https://github.com/spiderforest/mixercseg/blob/main/datasets/base_dataset.py"
click node_crack_dataset "https://github.com/spiderforest/mixercseg/blob/main/datasets/crack_dataset.py"
click node_image_folder "https://github.com/spiderforest/mixercseg/blob/main/datasets/image_folder.py"
click node_segmentor "https://github.com/spiderforest/mixercseg/blob/main/models/segmentor/MixerCSeg.py"
click node_encoder "https://github.com/spiderforest/mixercseg/blob/main/models/encoder/vss_block.py"
click node_patch_embed "https://github.com/spiderforest/mixercseg/blob/main/models/layers/patch_embed.py"
click node_inception "https://github.com/spiderforest/mixercseg/blob/main/models/inception.py"
click node_edge_gate "https://github.com/spiderforest/mixercseg/blob/main/models/layers/hog_edge.py"
click node_decoder "https://github.com/spiderforest/mixercseg/blob/main/models/decoder/SRF.py"
click node_vmamba "https://github.com/spiderforest/mixercseg/blob/main/VMamba/models/vmamba.py"
click node_scan_kernel "https://github.com/spiderforest/mixercseg/blob/main/VMamba/models/kernels/selective_scan/csrc/selective_scan/selective_scan.h"
click node_loss "https://github.com/spiderforest/mixercseg/blob/main/main.py"
click node_optimizer "https://github.com/spiderforest/mixercseg/blob/main/main.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_main,node_engine,node_evaluation,node_eval_io,node_loss,node_optimizer,node_predictions toneBlue
class node_dataset_base,node_crack_dataset,node_image_folder,node_crack_data toneAmber
class node_segmentor,node_encoder,node_patch_embed,node_inception,node_edge_gate,node_decoder toneMint
class node_vmamba,node_scan_kernel toneRose
class node_researcher toneIndigo
```

## Components

### Training and evaluation

- [Training runner](https://github.com/spiderforest/mixercseg/blob/main/main.py): `main.py`
- [Epoch trainer](https://github.com/spiderforest/mixercseg/blob/main/engine.py): `engine.py`
- [Metric evaluation](https://github.com/spiderforest/mixercseg/blob/main/eval/evaluate.py): `eval/evaluate.py`
- [Evaluation I/O](https://github.com/spiderforest/mixercseg/blob/main/eval/data_io.py): `eval/data_io.py`
- [Segmentation loss](https://github.com/spiderforest/mixercseg/blob/main/main.py): `main.py`
- [Optimizer and scheduler](https://github.com/spiderforest/mixercseg/blob/main/main.py): `main.py`
- **Prediction results**

### Crack data

- [Dataset transforms](https://github.com/spiderforest/mixercseg/blob/main/datasets/base_dataset.py): `datasets/base_dataset.py`
- [Crack dataset loader](https://github.com/spiderforest/mixercseg/blob/main/datasets/crack_dataset.py): `datasets/crack_dataset.py`
- [Folder image loader](https://github.com/spiderforest/mixercseg/blob/main/datasets/image_folder.py): `datasets/image_folder.py`

### Segmentation model

- [MixerCSeg](https://github.com/spiderforest/mixercseg/blob/main/models/segmentor/MixerCSeg.py): `models/segmentor/MixerCSeg.py`
- [VSS encoder](https://github.com/spiderforest/mixercseg/blob/main/models/encoder/vss_block.py): `models/encoder/vss_block.py`
- [Patch embedding](https://github.com/spiderforest/mixercseg/blob/main/models/layers/patch_embed.py): `models/layers/patch_embed.py`
- [Inception branches](https://github.com/spiderforest/mixercseg/blob/main/models/inception.py): `models/inception.py`
- [HoG edge gate](https://github.com/spiderforest/mixercseg/blob/main/models/layers/hog_edge.py): `models/layers/hog_edge.py`
- [SRF decoder](https://github.com/spiderforest/mixercseg/blob/main/models/decoder/SRF.py): `models/decoder/SRF.py`

### State-space compute

- [VMamba scan](https://github.com/spiderforest/mixercseg/blob/main/VMamba/models/vmamba.py): `VMamba/models/vmamba.py`
- [Selective scan kernels](https://github.com/spiderforest/mixercseg/blob/main/VMamba/models/kernels/selective_scan/csrc/selective_scan/selective_scan.h): `VMamba/models/kernels/selective_scan/csrc/selective_scan/selective_scan.h`

### Other components

- **Researcher**
- **Crack dataset**

## Connections

- Researcher → Training runner: configures training
- Crack dataset → Crack dataset loader: provides samples
- Crack dataset → Folder image loader: provides images
- Crack dataset loader → Dataset transforms: uses transforms
- Training runner → Epoch trainer: runs epochs
- Epoch trainer → MixerCSeg: forwards batches
- Epoch trainer → Segmentation loss: computes loss
- Epoch trainer → Optimizer and scheduler: updates weights
- MixerCSeg → VSS encoder: extracts features
- VSS encoder → Patch embedding: embeds images
- VSS encoder → HoG edge gate: gates edges
- VSS encoder → VMamba scan: runs state-space mixing
- MixerCSeg → Inception branches: mixes features
- MixerCSeg → SRF decoder: refines features
- VMamba scan → Selective scan kernels: dispatches scan
- Metric evaluation → Evaluation I/O: loads result data
- Metric evaluation → Prediction results: scores predictions
- Researcher → Metric evaluation: requests metrics
