# mdzaheerjk/object-detection-with-fasterrcnn-using-dvc-pipelines-dvc-data-versioning-tensorboard-fastapi architecture

> Architecture diagram of the GitHub repository mdzaheerjk/object-detection-with-fasterrcnn-using-dvc-pipelines-dvc-data-versioning-tensorboard-fastapi, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-25). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/mdzaheerjk/object-detection-with-fasterrcnn-using-dvc-pipelines-dvc-data-versioning-tensorboard-fastapi
- Repository: https://github.com/mdzaheerjk/object-detection-with-fasterrcnn-using-dvc-pipelines-dvc-data-versioning-tensorboard-fastapi

## Overview

This repository is a gun-detection application: its documented workflow covers dataset ingestion and versioned training, then serves Faster R-CNN inference through a browser UI and JSON/image API. The graph includes the sampled ingestion, preprocessing, training, and inference code; DVC pipeline wiring and some documented capabilities are represented only where supported by the README and tree. TensorBoard logging is visible in the training source; its UI is an external integration.

Main entry points: [`src/model_training.py`](https://github.com/mdzaheerjk/object-detection-with-fasterrcnn-using-dvc-pipelines-dvc-data-versioning-tensorboard-fastapi/blob/main/src/model_training.py) (Training loop), [`src/data_ingestion.py`](https://github.com/mdzaheerjk/object-detection-with-fasterrcnn-using-dvc-pipelines-dvc-data-versioning-tensorboard-fastapi/blob/main/src/data_ingestion.py) (Dataset ingestion), [`main.py`](https://github.com/mdzaheerjk/object-detection-with-fasterrcnn-using-dvc-pipelines-dvc-data-versioning-tensorboard-fastapi/blob/main/main.py) (Detection and rendering), [`dvc.yaml`](https://github.com/mdzaheerjk/object-detection-with-fasterrcnn-using-dvc-pipelines-dvc-data-versioning-tensorboard-fastapi/blob/main/dvc.yaml) (DVC pipeline)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_data["Dataset preparation"]
  node_ingest["Dataset ingestion<br/>[data_ingestion.py]"]
  node_source["Dataset source"]
  node_rawdata["Raw images and labels"]
  node_dataset["Paired dataset loader<br/>[data_processing.py]"]
end

subgraph group_training["Model training"]
  node_dvc["DVC pipeline<br/>[dvc.yaml]"]
  node_trainer["Training loop<br/>[model_training.py]"]
  node_architecture["Model architecture"]
  node_tensorboard["TensorBoard"]
end

subgraph group_serving["Inference service"]
  node_api["FastAPI routes<br/>[main.py]"]
  node_inference["Detection and rendering<br/>[main.py]"]
  node_detector["Faster R-CNN<br/>[main.py]"]
  node_weights["Model weights"]
end

subgraph group_client["Browser experience"]
  node_browser["Browser UI<br/>[index.html]"]
  node_clientlogic["Upload and results<br/>[script.js]"]
end

node_user(("User"))
node_externaldata(("Kaggle dataset"))

node_user -->|"uses"| node_browser
node_browser -->|"loads"| node_clientlogic
node_clientlogic -->|"uploads image"| node_api
node_api -->|"invokes"| node_inference
node_inference -->|"runs inference"| node_detector
node_detector -->|"loads weights"| node_weights
node_inference -->|"returns detections"| node_api
node_dvc -.->|"orchestrates"| node_ingest
node_dvc -.->|"orchestrates"| node_trainer
node_ingest -->|"reads config"| node_source
node_ingest -.->|"downloads if needed"| node_externaldata
node_ingest -->|"writes dataset"| node_rawdata
node_trainer -->|"loads samples"| node_dataset
node_dataset -->|"reads images and labels"| node_rawdata
node_trainer -->|"initializes model"| node_architecture
node_trainer -->|"saves weights"| node_weights
node_trainer -.->|"writes metrics"| node_tensorboard

click node_browser "https://github.com/mdzaheerjk/object-detection-with-fasterrcnn-using-dvc-pipelines-dvc-data-versioning-tensorboard-fastapi/blob/main/templates/index.html"
click node_clientlogic "https://github.com/mdzaheerjk/object-detection-with-fasterrcnn-using-dvc-pipelines-dvc-data-versioning-tensorboard-fastapi/blob/main/static/js/script.js"
click node_api "https://github.com/mdzaheerjk/object-detection-with-fasterrcnn-using-dvc-pipelines-dvc-data-versioning-tensorboard-fastapi/blob/main/main.py"
click node_inference "https://github.com/mdzaheerjk/object-detection-with-fasterrcnn-using-dvc-pipelines-dvc-data-versioning-tensorboard-fastapi/blob/main/main.py"
click node_detector "https://github.com/mdzaheerjk/object-detection-with-fasterrcnn-using-dvc-pipelines-dvc-data-versioning-tensorboard-fastapi/blob/main/main.py"
click node_weights "https://github.com/mdzaheerjk/object-detection-with-fasterrcnn-using-dvc-pipelines-dvc-data-versioning-tensorboard-fastapi/tree/main/artifacts/models"
click node_dvc "https://github.com/mdzaheerjk/object-detection-with-fasterrcnn-using-dvc-pipelines-dvc-data-versioning-tensorboard-fastapi/blob/main/dvc.yaml"
click node_ingest "https://github.com/mdzaheerjk/object-detection-with-fasterrcnn-using-dvc-pipelines-dvc-data-versioning-tensorboard-fastapi/blob/main/src/data_ingestion.py"
click node_source "https://github.com/mdzaheerjk/object-detection-with-fasterrcnn-using-dvc-pipelines-dvc-data-versioning-tensorboard-fastapi/blob/main/config/data_ingestion_config.py"
click node_rawdata "https://github.com/mdzaheerjk/object-detection-with-fasterrcnn-using-dvc-pipelines-dvc-data-versioning-tensorboard-fastapi/tree/main/artifacts/raw"
click node_dataset "https://github.com/mdzaheerjk/object-detection-with-fasterrcnn-using-dvc-pipelines-dvc-data-versioning-tensorboard-fastapi/blob/main/src/data_processing.py"
click node_trainer "https://github.com/mdzaheerjk/object-detection-with-fasterrcnn-using-dvc-pipelines-dvc-data-versioning-tensorboard-fastapi/blob/main/src/model_training.py"
click node_architecture "https://github.com/mdzaheerjk/object-detection-with-fasterrcnn-using-dvc-pipelines-dvc-data-versioning-tensorboard-fastapi/blob/main/src/model_architecture.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_ingest,node_source,node_rawdata,node_dataset,node_user toneBlue
class node_dvc,node_trainer,node_architecture,node_tensorboard toneAmber
class node_api,node_inference,node_detector,node_weights toneMint
class node_browser,node_clientlogic toneRose
class node_externaldata toneIndigo
```

## Components

### Dataset preparation

- [Dataset ingestion](https://github.com/mdzaheerjk/object-detection-with-fasterrcnn-using-dvc-pipelines-dvc-data-versioning-tensorboard-fastapi/blob/main/src/data_ingestion.py): `src/data_ingestion.py`
- [Dataset source](https://github.com/mdzaheerjk/object-detection-with-fasterrcnn-using-dvc-pipelines-dvc-data-versioning-tensorboard-fastapi/blob/main/config/data_ingestion_config.py): `config/data_ingestion_config.py`
- [Raw images and labels](https://github.com/mdzaheerjk/object-detection-with-fasterrcnn-using-dvc-pipelines-dvc-data-versioning-tensorboard-fastapi/tree/main/artifacts/raw): `artifacts/raw`
- [Paired dataset loader](https://github.com/mdzaheerjk/object-detection-with-fasterrcnn-using-dvc-pipelines-dvc-data-versioning-tensorboard-fastapi/blob/main/src/data_processing.py): `src/data_processing.py`

### Model training

- [DVC pipeline](https://github.com/mdzaheerjk/object-detection-with-fasterrcnn-using-dvc-pipelines-dvc-data-versioning-tensorboard-fastapi/blob/main/dvc.yaml): `dvc.yaml`
- [Training loop](https://github.com/mdzaheerjk/object-detection-with-fasterrcnn-using-dvc-pipelines-dvc-data-versioning-tensorboard-fastapi/blob/main/src/model_training.py): `src/model_training.py`
- [Model architecture](https://github.com/mdzaheerjk/object-detection-with-fasterrcnn-using-dvc-pipelines-dvc-data-versioning-tensorboard-fastapi/blob/main/src/model_architecture.py): `src/model_architecture.py`
- **TensorBoard**

### Inference service

- [FastAPI routes](https://github.com/mdzaheerjk/object-detection-with-fasterrcnn-using-dvc-pipelines-dvc-data-versioning-tensorboard-fastapi/blob/main/main.py): `main.py`
- [Detection and rendering](https://github.com/mdzaheerjk/object-detection-with-fasterrcnn-using-dvc-pipelines-dvc-data-versioning-tensorboard-fastapi/blob/main/main.py): `main.py`
- [Faster R-CNN](https://github.com/mdzaheerjk/object-detection-with-fasterrcnn-using-dvc-pipelines-dvc-data-versioning-tensorboard-fastapi/blob/main/main.py): `main.py`
- [Model weights](https://github.com/mdzaheerjk/object-detection-with-fasterrcnn-using-dvc-pipelines-dvc-data-versioning-tensorboard-fastapi/tree/main/artifacts/models): `artifacts/models`

### Browser experience

- [Browser UI](https://github.com/mdzaheerjk/object-detection-with-fasterrcnn-using-dvc-pipelines-dvc-data-versioning-tensorboard-fastapi/blob/main/templates/index.html): `templates/index.html`
- [Upload and results](https://github.com/mdzaheerjk/object-detection-with-fasterrcnn-using-dvc-pipelines-dvc-data-versioning-tensorboard-fastapi/blob/main/static/js/script.js): `static/js/script.js`

### Other components

- **User**
- **Kaggle dataset**

## Connections

- User → Browser UI: uses
- Browser UI → Upload and results: loads
- Upload and results → FastAPI routes: uploads image
- FastAPI routes → Detection and rendering: invokes
- Detection and rendering → Faster R-CNN: runs inference
- Faster R-CNN → Model weights: loads weights
- Detection and rendering → FastAPI routes: returns detections
- DVC pipeline → Dataset ingestion: orchestrates
- DVC pipeline → Training loop: orchestrates
- Dataset ingestion → Dataset source: reads config
- Dataset ingestion → Kaggle dataset: downloads if needed
- Dataset ingestion → Raw images and labels: writes dataset
- Training loop → Paired dataset loader: loads samples
- Paired dataset loader → Raw images and labels: reads images and labels
- Training loop → Model architecture: initializes model
- Training loop → Model weights: saves weights
- Training loop → TensorBoard: writes metrics
