# prathamd69/kidney-tumor-detection architecture

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

- Interactive diagram: https://gitdiagram.com/prathamd69/kidney-tumor-detection
- Repository: https://github.com/prathamd69/kidney-tumor-detection

## Overview

Kidney Tumor Detection provides two related workflows: a reproducible training/evaluation pipeline for binary and four-class CT-image classification, and a web API for image upload and inference. In the API, startup initializes both predictors; requests select screening or detailed diagnosis, with class descriptions added to the latter. Training components construct datasets and models, while optimization exports lightweight TFLite models. Some training and multiclass evaluation relationships are documented but their implementations were not excerpted, so those connections are marked unverified.

Main entry points: [`src/components/model_factory.py`](https://github.com/prathamd69/kidney-tumor-detection/blob/main/src/components/model_factory.py) (Model pipeline factory), [`app.py`](https://github.com/prathamd69/kidney-tumor-detection/blob/main/app.py) (FastAPI service), [`src/prediction/prediction.py`](https://github.com/prathamd69/kidney-tumor-detection/blob/main/src/prediction/prediction.py) (Binary predictor), [`src/utils/file_utils.py`](https://github.com/prathamd69/kidney-tumor-detection/blob/main/src/utils/file_utils.py) (File and config I/O)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_serving["Inference service"]
  node_api["FastAPI service<br/>[app.py]"]
  node_webui["Web interface<br/>[index.html]"]
  node_imageproc["Image preprocessing<br/>[prediction.py]"]
  node_binarypred["Binary predictor<br/>[prediction.py]"]
  node_multipred["Multiclass predictor<br/>[prediction.py]"]
  node_classinfo["Class descriptions"]
end

subgraph group_training["Training and evaluation"]
  node_dataprep["Data processing<br/>[data_processing.py]"]
  node_datasets["Dataset streaming<br/>[build_datasets.py]"]
  node_binarytrain["Binary training"]
  node_multitrain["Multiclass training"]
  node_binaryeval["Binary evaluation"]
  node_multieval["Multiclass evaluation"]
end

subgraph group_models["Model construction"]
  node_litebinary["Binary TFLite model<br/>[binarymodel.tflite]"]
  node_litemulti["Multiclass TFLite model<br/>[multimodel.tflite]"]
  node_factory["Model pipeline factory<br/>[model_factory.py]"]
  node_base["Base model builder<br/>[build_basemodel.py]"]
  node_optimizer["TFLite optimizer"]
end

subgraph group_shared["Shared utilities"]
  node_fileutils["File and config I/O<br/>[file_utils.py]"]
  node_logger["Logging<br/>[logger.py]"]
end

node_user(("Image uploader"))

node_user -->|"uploads image"| node_api
node_api -->|"serves page"| node_webui
node_api -->|"dispatches screening"| node_binarypred
node_api -->|"dispatches diagnosis"| node_multipred
node_api -->|"loads descriptions"| node_classinfo
node_binarypred -->|"preprocesses image"| node_imageproc
node_multipred -->|"preprocesses image"| node_imageproc
node_binarypred -->|"loads model"| node_litebinary
node_multipred -->|"loads model"| node_litemulti
node_factory -->|"builds datasets"| node_datasets
node_factory -->|"builds model"| node_base
node_factory -->|"loads data"| node_fileutils
node_optimizer -->|"configures model"| node_factory
node_binaryeval -->|"requests test components"| node_factory
node_binarytrain -.->|"uses training pipeline"| node_factory
node_multitrain -.->|"uses training pipeline"| node_factory
node_multieval -.->|"uses evaluation pipeline"| node_factory
node_dataprep -.->|"uses file utilities"| node_fileutils

click node_api "https://github.com/prathamd69/kidney-tumor-detection/blob/main/app.py"
click node_webui "https://github.com/prathamd69/kidney-tumor-detection/blob/main/templates/index.html"
click node_imageproc "https://github.com/prathamd69/kidney-tumor-detection/blob/main/src/prediction/prediction.py"
click node_binarypred "https://github.com/prathamd69/kidney-tumor-detection/blob/main/src/prediction/prediction.py"
click node_multipred "https://github.com/prathamd69/kidney-tumor-detection/blob/main/src/prediction/prediction.py"
click node_classinfo "https://github.com/prathamd69/kidney-tumor-detection/blob/main/class_descriptions.json"
click node_litebinary "https://github.com/prathamd69/kidney-tumor-detection/blob/main/litemodels/binarymodel.tflite"
click node_litemulti "https://github.com/prathamd69/kidney-tumor-detection/blob/main/litemodels/multimodel.tflite"
click node_dataprep "https://github.com/prathamd69/kidney-tumor-detection/blob/main/src/components/data_processing.py"
click node_datasets "https://github.com/prathamd69/kidney-tumor-detection/blob/main/src/components/build_datasets.py"
click node_factory "https://github.com/prathamd69/kidney-tumor-detection/blob/main/src/components/model_factory.py"
click node_base "https://github.com/prathamd69/kidney-tumor-detection/blob/main/src/components/build_basemodel.py"
click node_binarytrain "https://github.com/prathamd69/kidney-tumor-detection/blob/main/src/binaryclassification/binaryclass_training.py"
click node_multitrain "https://github.com/prathamd69/kidney-tumor-detection/blob/main/src/multiclassification/multiclass_training.py"
click node_binaryeval "https://github.com/prathamd69/kidney-tumor-detection/blob/main/src/binaryclassification/binarymodel_evaluation.py"
click node_multieval "https://github.com/prathamd69/kidney-tumor-detection/blob/main/src/multiclassification/multimodel_evaluation.py"
click node_optimizer "https://github.com/prathamd69/kidney-tumor-detection/blob/main/src/components/model_optimization.py"
click node_fileutils "https://github.com/prathamd69/kidney-tumor-detection/blob/main/src/utils/file_utils.py"
click node_logger "https://github.com/prathamd69/kidney-tumor-detection/blob/main/src/utils/logger.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_api,node_webui,node_imageproc,node_binarypred,node_multipred,node_classinfo toneBlue
class node_dataprep,node_datasets,node_binarytrain,node_multitrain,node_binaryeval,node_multieval toneAmber
class node_litebinary,node_litemulti,node_factory,node_base,node_optimizer toneMint
class node_fileutils,node_logger toneRose
class node_user toneIndigo
```

## Components

### Inference service

- [FastAPI service](https://github.com/prathamd69/kidney-tumor-detection/blob/main/app.py): `app.py`
- [Web interface](https://github.com/prathamd69/kidney-tumor-detection/blob/main/templates/index.html): `templates/index.html`
- [Image preprocessing](https://github.com/prathamd69/kidney-tumor-detection/blob/main/src/prediction/prediction.py): `src/prediction/prediction.py`
- [Binary predictor](https://github.com/prathamd69/kidney-tumor-detection/blob/main/src/prediction/prediction.py): `src/prediction/prediction.py`
- [Multiclass predictor](https://github.com/prathamd69/kidney-tumor-detection/blob/main/src/prediction/prediction.py): `src/prediction/prediction.py`
- [Class descriptions](https://github.com/prathamd69/kidney-tumor-detection/blob/main/class_descriptions.json): `class_descriptions.json`

### Training and evaluation

- [Data processing](https://github.com/prathamd69/kidney-tumor-detection/blob/main/src/components/data_processing.py): `src/components/data_processing.py`
- [Dataset streaming](https://github.com/prathamd69/kidney-tumor-detection/blob/main/src/components/build_datasets.py): `src/components/build_datasets.py`
- [Binary training](https://github.com/prathamd69/kidney-tumor-detection/blob/main/src/binaryclassification/binaryclass_training.py): `src/binaryclassification/binaryclass_training.py`
- [Multiclass training](https://github.com/prathamd69/kidney-tumor-detection/blob/main/src/multiclassification/multiclass_training.py): `src/multiclassification/multiclass_training.py`
- [Binary evaluation](https://github.com/prathamd69/kidney-tumor-detection/blob/main/src/binaryclassification/binarymodel_evaluation.py): `src/binaryclassification/binarymodel_evaluation.py`
- [Multiclass evaluation](https://github.com/prathamd69/kidney-tumor-detection/blob/main/src/multiclassification/multimodel_evaluation.py): `src/multiclassification/multimodel_evaluation.py`

### Model construction

- [Binary TFLite model](https://github.com/prathamd69/kidney-tumor-detection/blob/main/litemodels/binarymodel.tflite): `litemodels/binarymodel.tflite`
- [Multiclass TFLite model](https://github.com/prathamd69/kidney-tumor-detection/blob/main/litemodels/multimodel.tflite): `litemodels/multimodel.tflite`
- [Model pipeline factory](https://github.com/prathamd69/kidney-tumor-detection/blob/main/src/components/model_factory.py): `src/components/model_factory.py`
- [Base model builder](https://github.com/prathamd69/kidney-tumor-detection/blob/main/src/components/build_basemodel.py): `src/components/build_basemodel.py`
- [TFLite optimizer](https://github.com/prathamd69/kidney-tumor-detection/blob/main/src/components/model_optimization.py): `src/components/model_optimization.py`

### Shared utilities

- [File and config I/O](https://github.com/prathamd69/kidney-tumor-detection/blob/main/src/utils/file_utils.py): `src/utils/file_utils.py`
- [Logging](https://github.com/prathamd69/kidney-tumor-detection/blob/main/src/utils/logger.py): `src/utils/logger.py`

### Other components

- **Image uploader**

## Connections

- Image uploader → FastAPI service: uploads image (evidence: `app.py`)
- FastAPI service → Web interface: serves page (evidence: `app.py`)
- FastAPI service → Binary predictor: dispatches screening (evidence: `app.py`)
- FastAPI service → Multiclass predictor: dispatches diagnosis (evidence: `app.py`)
- FastAPI service → Class descriptions: loads descriptions (evidence: `app.py`)
- Binary predictor → Image preprocessing: preprocesses image (evidence: `src/prediction/prediction.py`)
- Multiclass predictor → Image preprocessing: preprocesses image (evidence: `src/prediction/prediction.py`)
- Binary predictor → Binary TFLite model: loads model (evidence: `src/prediction/prediction.py`)
- Multiclass predictor → Multiclass TFLite model: loads model (evidence: `src/prediction/prediction.py`)
- Model pipeline factory → Dataset streaming: builds datasets (evidence: `src/components/model_factory.py`)
- Model pipeline factory → Base model builder: builds model (evidence: `src/components/model_factory.py`)
- Model pipeline factory → File and config I/O: loads data (evidence: `src/components/model_factory.py`)
- TFLite optimizer → Model pipeline factory: configures model (evidence: `src/components/model_optimization.py`)
- Binary evaluation → Model pipeline factory: requests test components (evidence: `src/binaryclassification/binarymodel_evaluation.py`)
- Binary training → Model pipeline factory: uses training pipeline
- Multiclass training → Model pipeline factory: uses training pipeline
- Multiclass evaluation → Model pipeline factory: uses evaluation pipeline
- Data processing → File and config I/O: uses file utilities
