# dhritij27/structural-damage-recognition architecture

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

- Interactive diagram: https://gitdiagram.com/dhritij27/structural-damage-recognition
- Repository: https://github.com/dhritij27/structural-damage-recognition

## Overview

This is a structural-damage image-classification project: users train classical and transfer-learning models on labeled building images, then assess predictions and compare performance. `main.py` owns dataset loading, preprocessing, model training, and in-process evaluation; `evaluate.py` provides a separate saved-model evaluation and dataset-inspection CLI. `utility.py` contains visualization and prediction-analysis helpers. The README documents broader capabilities, but the sampled `evaluate.py` imports `utils` (not present in the tree), so no connection from it to `utility.py` is asserted.

Main entry points: [`main.py`](https://github.com/dhritij27/structural-damage-recognition/blob/main/main.py) (Training Entry), [`evaluate.py`](https://github.com/dhritij27/structural-damage-recognition/blob/main/evaluate.py) (Saved-Model Evaluation), [`utility.py`](https://github.com/dhritij27/structural-damage-recognition/blob/main/utility.py) (Analysis Visualizations)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_training["Training"]
  node_train_entry["Training Entry<br/>[main.py]"]
  node_data_prep["Load and Split<br/>[main.py]"]
  node_classical["Classical Models<br/>[main.py]"]
  node_mobilenet["MobileNet Training<br/>[main.py]"]
  node_inception["InceptionV3 Training<br/>[main.py]"]
  node_train_eval["Model Metrics<br/>[main.py]"]
  node_history["Training History<br/>[main.py]"]
  node_comparison["Model Comparison<br/>[main.py]"]
end

subgraph group_evaluation["Evaluation"]
  node_eval_cli["Evaluation CLI<br/>[evaluate.py]"]
  node_saved_eval["Saved-Model Evaluation<br/>[evaluate.py]"]
  node_sample_inspection["Dataset Inspection<br/>[evaluate.py]"]
end

subgraph group_analysis["Analysis"]
  node_visualization["Analysis Visualizations<br/>[utility.py]"]
  node_prediction_export["Prediction Export<br/>[utility.py]"]
end

node_user(("User"))
node_dataset[("Labeled Images")]
node_pretrained[("ImageNet Weights")]

node_user -->|"runs training"| node_train_entry
node_dataset -->|"provides images"| node_data_prep
node_train_entry -->|"loads and splits"| node_data_prep
node_train_entry -->|"trains models"| node_classical
node_train_entry -->|"trains model"| node_mobilenet
node_train_entry -->|"trains model"| node_inception
node_mobilenet -.->|"loads weights"| node_pretrained
node_inception -.->|"loads weights"| node_pretrained
node_train_entry -->|"evaluates models"| node_train_eval
node_train_entry -->|"plots history"| node_history
node_train_entry -->|"compares models"| node_comparison
node_user -->|"runs evaluation"| node_eval_cli
node_eval_cli -->|"dispatches evaluation"| node_saved_eval
node_eval_cli -->|"dispatches samples"| node_sample_inspection
node_saved_eval -->|"loads classifier"| node_train_entry
node_saved_eval -.-> node_visualization
node_saved_eval -.-> node_prediction_export

click node_train_entry "https://github.com/dhritij27/structural-damage-recognition/blob/main/main.py"
click node_data_prep "https://github.com/dhritij27/structural-damage-recognition/blob/main/main.py"
click node_classical "https://github.com/dhritij27/structural-damage-recognition/blob/main/main.py"
click node_mobilenet "https://github.com/dhritij27/structural-damage-recognition/blob/main/main.py"
click node_inception "https://github.com/dhritij27/structural-damage-recognition/blob/main/main.py"
click node_train_eval "https://github.com/dhritij27/structural-damage-recognition/blob/main/main.py"
click node_history "https://github.com/dhritij27/structural-damage-recognition/blob/main/main.py"
click node_comparison "https://github.com/dhritij27/structural-damage-recognition/blob/main/main.py"
click node_eval_cli "https://github.com/dhritij27/structural-damage-recognition/blob/main/evaluate.py"
click node_saved_eval "https://github.com/dhritij27/structural-damage-recognition/blob/main/evaluate.py"
click node_sample_inspection "https://github.com/dhritij27/structural-damage-recognition/blob/main/evaluate.py"
click node_visualization "https://github.com/dhritij27/structural-damage-recognition/blob/main/utility.py"
click node_prediction_export "https://github.com/dhritij27/structural-damage-recognition/blob/main/utility.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_train_entry,node_data_prep,node_classical,node_mobilenet,node_inception,node_train_eval,node_history,node_comparison,node_user toneBlue
class node_eval_cli,node_saved_eval,node_sample_inspection,node_dataset,node_pretrained toneAmber
class node_visualization,node_prediction_export toneMint
```

## Components

### Training

- [Training Entry](https://github.com/dhritij27/structural-damage-recognition/blob/main/main.py): `main.py`
- [Load and Split](https://github.com/dhritij27/structural-damage-recognition/blob/main/main.py): `main.py`
- [Classical Models](https://github.com/dhritij27/structural-damage-recognition/blob/main/main.py): `main.py`
- [MobileNet Training](https://github.com/dhritij27/structural-damage-recognition/blob/main/main.py): `main.py`
- [InceptionV3 Training](https://github.com/dhritij27/structural-damage-recognition/blob/main/main.py): `main.py`
- [Model Metrics](https://github.com/dhritij27/structural-damage-recognition/blob/main/main.py): `main.py`
- [Training History](https://github.com/dhritij27/structural-damage-recognition/blob/main/main.py): `main.py`
- [Model Comparison](https://github.com/dhritij27/structural-damage-recognition/blob/main/main.py): `main.py`

### Evaluation

- [Evaluation CLI](https://github.com/dhritij27/structural-damage-recognition/blob/main/evaluate.py): `evaluate.py`
- [Saved-Model Evaluation](https://github.com/dhritij27/structural-damage-recognition/blob/main/evaluate.py): `evaluate.py`
- [Dataset Inspection](https://github.com/dhritij27/structural-damage-recognition/blob/main/evaluate.py): `evaluate.py`

### Analysis

- [Analysis Visualizations](https://github.com/dhritij27/structural-damage-recognition/blob/main/utility.py): `utility.py`
- [Prediction Export](https://github.com/dhritij27/structural-damage-recognition/blob/main/utility.py): `utility.py`

### Other components

- **User**
- **Labeled Images**
- **ImageNet Weights**

## Connections

- User → Training Entry: runs training (evidence: `README.md`)
- Labeled Images → Load and Split: provides images (evidence: `main.py`)
- Training Entry → Load and Split: loads and splits (evidence: `main.py`)
- Training Entry → Classical Models: trains models (evidence: `main.py`)
- Training Entry → MobileNet Training: trains model (evidence: `main.py`)
- Training Entry → InceptionV3 Training: trains model (evidence: `main.py`)
- MobileNet Training → ImageNet Weights: loads weights
- InceptionV3 Training → ImageNet Weights: loads weights
- Training Entry → Model Metrics: evaluates models (evidence: `main.py`)
- Training Entry → Training History: plots history (evidence: `main.py`)
- Training Entry → Model Comparison: compares models (evidence: `main.py`)
- User → Evaluation CLI: runs evaluation (evidence: `README.md`)
- Evaluation CLI → Saved-Model Evaluation: dispatches evaluation (evidence: `evaluate.py`)
- Evaluation CLI → Dataset Inspection: dispatches samples (evidence: `evaluate.py`)
- Saved-Model Evaluation → Training Entry: loads classifier (evidence: `evaluate.py`)
- Saved-Model Evaluation → Analysis Visualizations
- Saved-Model Evaluation → Prediction Export
