# gauravsrc/drishti-disaster-ai architecture

> Architecture diagram of the GitHub repository gauravsrc/drishti-disaster-ai, 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/gauravsrc/drishti-disaster-ai
- Repository: https://github.com/gauravsrc/drishti-disaster-ai

## Overview

Drishti turns uploaded aerial images into disaster classifications, confidence-aware alerts, visual explanations, and area maps. The main user workflow runs through the Gradio interface and inference engine; the engine loads a trained checkpoint, classifies images, and supports Grad-CAM and tiled scans. A separate documented notebook trains and evaluates models on AIDER and exports weights for the app. Response guidance and uncertain-case review are part of the result. The notebook’s internal stages are documented in the README but its source was not sampled, so those details are not expanded.

Main entry points: [`app/app.py`](https://github.com/gauravsrc/drishti-disaster-ai/blob/main/app/app.py) (Gradio app), [`app/drishti_core.py`](https://github.com/gauravsrc/drishti-disaster-ai/blob/main/app/drishti_core.py) (Inference engine), [`notebooks/drishti-training.ipynb`](https://github.com/gauravsrc/drishti-disaster-ai/blob/main/notebooks/drishti-training.ipynb) (Model training pipeline), [`app/model/drishti_model.pt`](https://github.com/gauravsrc/drishti-disaster-ai/blob/main/app/model/drishti_model.pt) (Trained weights)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_interface["User interface"]
  node_app["Gradio app<br/>[app.py]"]
  node_image_prep["Image preparation<br/>[app.py]"]
end

subgraph group_inference["Inference and analysis"]
  node_engine["Inference engine<br/>[drishti_core.py]"]
  node_checkpoint["Trained weights<br/>[drishti_model.pt]"]
  node_classifier["CNN classifier<br/>[drishti_core.py]"]
  node_calibration["Confidence calibration<br/>[drishti_core.py]"]
  node_gradcam["Grad-CAM<br/>[drishti_core.py]"]
  node_heatmap["Heatmap overlay<br/>[drishti_core.py]"]
  node_tile_scan["Tile scan<br/>[drishti_core.py]"]
  node_scan_map["Scan map<br/>[drishti_core.py]"]
end

subgraph group_training["Training and evaluation"]
  node_training["Model training pipeline"]
  node_aider[("AIDER dataset")]
  node_evaluation["Model evaluation"]
end

subgraph group_response["Response guidance"]
  node_alert["Alert card<br/>[drishti_core.py]"]
  node_playbook["Response playbook<br/>[drishti_core.py]"]
end

node_user(("Analyst"))
node_reviewer(("Human analyst"))
node_responders(("Emergency responders"))

node_user -->|"uploads image"| node_app
node_app -->|"prepares input"| node_image_prep
node_app -->|"initializes"| node_engine
node_app -->|"requests prediction"| node_engine
node_app -->|"requests explanation"| node_gradcam
node_app -->|"requests scan"| node_tile_scan
node_app -->|"renders explanation"| node_heatmap
node_app -->|"renders scan"| node_scan_map
node_app -->|"builds alert"| node_alert
node_app -->|"presents uncertain cases"| node_reviewer
node_engine -->|"loads weights"| node_checkpoint
node_engine -->|"runs inference"| node_classifier
node_engine -.->|"calibrates probabilities"| node_calibration
node_engine -->|"computes explanations"| node_gradcam
node_engine -.->|"classifies tiles"| node_tile_scan
node_tile_scan -.->|"provides tile predictions"| node_scan_map
node_alert -->|"uses response guidance"| node_playbook
node_playbook -->|"recommends actions"| node_responders
node_aider -->|"trains on"| node_training
node_training -->|"evaluates models"| node_evaluation
node_training -->|"exports weights"| node_checkpoint

click node_app "https://github.com/gauravsrc/drishti-disaster-ai/blob/main/app/app.py"
click node_image_prep "https://github.com/gauravsrc/drishti-disaster-ai/blob/main/app/app.py"
click node_engine "https://github.com/gauravsrc/drishti-disaster-ai/blob/main/app/drishti_core.py"
click node_checkpoint "https://github.com/gauravsrc/drishti-disaster-ai/blob/main/app/model/drishti_model.pt"
click node_classifier "https://github.com/gauravsrc/drishti-disaster-ai/blob/main/app/drishti_core.py"
click node_calibration "https://github.com/gauravsrc/drishti-disaster-ai/blob/main/app/drishti_core.py"
click node_gradcam "https://github.com/gauravsrc/drishti-disaster-ai/blob/main/app/drishti_core.py"
click node_heatmap "https://github.com/gauravsrc/drishti-disaster-ai/blob/main/app/drishti_core.py"
click node_tile_scan "https://github.com/gauravsrc/drishti-disaster-ai/blob/main/app/drishti_core.py"
click node_scan_map "https://github.com/gauravsrc/drishti-disaster-ai/blob/main/app/drishti_core.py"
click node_alert "https://github.com/gauravsrc/drishti-disaster-ai/blob/main/app/drishti_core.py"
click node_playbook "https://github.com/gauravsrc/drishti-disaster-ai/blob/main/app/drishti_core.py"
click node_training "https://github.com/gauravsrc/drishti-disaster-ai/blob/main/notebooks/drishti-training.ipynb"
click node_evaluation "https://github.com/gauravsrc/drishti-disaster-ai/blob/main/notebooks/drishti-training.ipynb"

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_app,node_image_prep toneBlue
class node_engine,node_checkpoint,node_classifier,node_calibration,node_gradcam,node_heatmap,node_tile_scan,node_scan_map toneAmber
class node_training,node_aider,node_evaluation toneMint
class node_alert,node_playbook toneRose
class node_user,node_reviewer,node_responders toneIndigo
```

## Components

### User interface

- [Gradio app](https://github.com/gauravsrc/drishti-disaster-ai/blob/main/app/app.py): `app/app.py`
- [Image preparation](https://github.com/gauravsrc/drishti-disaster-ai/blob/main/app/app.py): `app/app.py`

### Inference and analysis

- [Inference engine](https://github.com/gauravsrc/drishti-disaster-ai/blob/main/app/drishti_core.py): `app/drishti_core.py`
- [Trained weights](https://github.com/gauravsrc/drishti-disaster-ai/blob/main/app/model/drishti_model.pt): `app/model/drishti_model.pt`
- [CNN classifier](https://github.com/gauravsrc/drishti-disaster-ai/blob/main/app/drishti_core.py): `app/drishti_core.py`
- [Confidence calibration](https://github.com/gauravsrc/drishti-disaster-ai/blob/main/app/drishti_core.py): `app/drishti_core.py`
- [Grad-CAM](https://github.com/gauravsrc/drishti-disaster-ai/blob/main/app/drishti_core.py): `app/drishti_core.py`
- [Heatmap overlay](https://github.com/gauravsrc/drishti-disaster-ai/blob/main/app/drishti_core.py): `app/drishti_core.py`
- [Tile scan](https://github.com/gauravsrc/drishti-disaster-ai/blob/main/app/drishti_core.py): `app/drishti_core.py`
- [Scan map](https://github.com/gauravsrc/drishti-disaster-ai/blob/main/app/drishti_core.py): `app/drishti_core.py`

### Training and evaluation

- [Model training pipeline](https://github.com/gauravsrc/drishti-disaster-ai/blob/main/notebooks/drishti-training.ipynb): `notebooks/drishti-training.ipynb`
- **AIDER dataset**
- [Model evaluation](https://github.com/gauravsrc/drishti-disaster-ai/blob/main/notebooks/drishti-training.ipynb): `notebooks/drishti-training.ipynb`

### Response guidance

- [Alert card](https://github.com/gauravsrc/drishti-disaster-ai/blob/main/app/drishti_core.py): `app/drishti_core.py`
- [Response playbook](https://github.com/gauravsrc/drishti-disaster-ai/blob/main/app/drishti_core.py): `app/drishti_core.py`

### Other components

- **Analyst**
- **Human analyst**
- **Emergency responders**

## Connections

- Analyst → Gradio app: uploads image (evidence: `app/app.py`)
- Gradio app → Image preparation: prepares input (evidence: `app/app.py`)
- Gradio app → Inference engine: initializes (evidence: `app/app.py`)
- Gradio app → Inference engine: requests prediction (evidence: `app/app.py`)
- Gradio app → Grad-CAM: requests explanation (evidence: `app/app.py`)
- Gradio app → Tile scan: requests scan (evidence: `app/app.py`)
- Gradio app → Heatmap overlay: renders explanation (evidence: `app/app.py`)
- Gradio app → Scan map: renders scan (evidence: `app/app.py`)
- Gradio app → Alert card: builds alert (evidence: `app/app.py`)
- Gradio app → Human analyst: presents uncertain cases (evidence: `app/app.py`)
- Inference engine → Trained weights: loads weights (evidence: `app/drishti_core.py`)
- Inference engine → CNN classifier: runs inference (evidence: `app/drishti_core.py`)
- Inference engine → Confidence calibration: calibrates probabilities (evidence: `app/drishti_core.py`)
- Inference engine → Grad-CAM: computes explanations (evidence: `app/drishti_core.py`)
- Inference engine → Tile scan: classifies tiles (evidence: `app/drishti_core.py`)
- Tile scan → Scan map: provides tile predictions (evidence: `app/drishti_core.py`)
- Alert card → Response playbook: uses response guidance (evidence: `app/drishti_core.py`)
- Response playbook → Emergency responders: recommends actions (evidence: `app/drishti_core.py`)
- AIDER dataset → Model training pipeline: trains on (evidence: `README.md`)
- Model training pipeline → Model evaluation: evaluates models (evidence: `README.md`)
- Model training pipeline → Trained weights: exports weights (evidence: `README.md`)
