# davidbriandimapilis/cpecogfinalproj architecture

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

- Interactive diagram: https://gitdiagram.com/davidbriandimapilis/cpecogfinalproj
- Repository: https://github.com/davidbriandimapilis/cpecogfinalproj

## Overview

This repository is a motorcycle helmet-detection experiment: it converts annotation classes, trains YOLO models, evaluates predictions, and runs frame-by-frame video detection with optional image capture. The README identifies the source dataset but does not describe the application workflow. Source excerpts support the training, evaluation, and capture paths; dataset contents and the referenced run outputs are not present in the tree, so their internal wiring is shown only where explicit.

Main entry points: [`train_median.py`](https://github.com/davidbriandimapilis/cpecogfinalproj/blob/main/train_median.py) (Median preprocessing), [`testYolo.py`](https://github.com/davidbriandimapilis/cpecogfinalproj/blob/main/testYolo.py) (Test evaluation), [`captureanddetect.py`](https://github.com/davidbriandimapilis/cpecogfinalproj/blob/main/captureanddetect.py) (Video detection), [`data.yaml`](https://github.com/davidbriandimapilis/cpecogfinalproj/blob/main/data.yaml) (Dataset config)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_labels["Dataset preparation"]
  node_dataset[("Helmet dataset")]
  node_classmerge["Merge classes<br/>[merge_classes.py]"]
  node_config["Dataset config<br/>[data.yaml]"]
end

subgraph group_training["Model training"]
  node_medianprep["Median preprocessing<br/>[train_median.py]"]
  node_bilateralprep["Bilateral preprocessing<br/>[train_bilateral.py]"]
  node_train["YOLO training<br/>[trainYolo.py]"]
  node_models[("Saved model weights")]
end

subgraph group_evaluation["Evaluation"]
  node_evaluate["Test evaluation<br/>[testYolo.py]"]
  node_predictions[("Annotated predictions")]
end

subgraph group_inference["Video detection"]
  node_capture["Video detection"]
  node_captures[("Captured frames")]
end

node_maintainer(("Dataset maintainer"))
node_yolo["Ultralytics YOLO"]
node_video(("Video input"))

node_maintainer -->|"provides"| node_dataset
node_classmerge -->|"rewrites labels"| node_dataset
node_medianprep -->|"reads images"| node_dataset
node_medianprep -->|"trains with"| node_config
node_medianprep -->|"trains model"| node_yolo
node_train -->|"trains with"| node_config
node_train -->|"trains model"| node_yolo
node_bilateralprep -.->|"trains model"| node_yolo
node_evaluate -->|"validates and predicts"| node_yolo
node_evaluate -->|"evaluates with"| node_config
node_evaluate -->|"saves results"| node_predictions
node_video -->|"provides frames"| node_capture
node_capture -->|"runs inference"| node_yolo
node_capture -->|"saves frames"| node_captures

click node_classmerge "https://github.com/davidbriandimapilis/cpecogfinalproj/blob/main/merge_classes.py"
click node_config "https://github.com/davidbriandimapilis/cpecogfinalproj/blob/main/data.yaml"
click node_medianprep "https://github.com/davidbriandimapilis/cpecogfinalproj/blob/main/train_median.py"
click node_bilateralprep "https://github.com/davidbriandimapilis/cpecogfinalproj/blob/main/train_bilateral.py"
click node_train "https://github.com/davidbriandimapilis/cpecogfinalproj/blob/main/trainYolo.py"
click node_models "https://github.com/davidbriandimapilis/cpecogfinalproj/tree/main/models"
click node_evaluate "https://github.com/davidbriandimapilis/cpecogfinalproj/blob/main/testYolo.py"
click node_capture "https://github.com/davidbriandimapilis/cpecogfinalproj/blob/main/captureanddetect.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_dataset,node_classmerge,node_config toneBlue
class node_medianprep,node_bilateralprep,node_train,node_models toneAmber
class node_evaluate,node_predictions toneMint
class node_capture,node_captures toneRose
class node_maintainer,node_yolo,node_video toneIndigo
```

## Components

### Dataset preparation

- **Helmet dataset**
- [Merge classes](https://github.com/davidbriandimapilis/cpecogfinalproj/blob/main/merge_classes.py): `merge_classes.py`
- [Dataset config](https://github.com/davidbriandimapilis/cpecogfinalproj/blob/main/data.yaml): `data.yaml`

### Model training

- [Median preprocessing](https://github.com/davidbriandimapilis/cpecogfinalproj/blob/main/train_median.py): `train_median.py`
- [Bilateral preprocessing](https://github.com/davidbriandimapilis/cpecogfinalproj/blob/main/train_bilateral.py): `train_bilateral.py`
- [YOLO training](https://github.com/davidbriandimapilis/cpecogfinalproj/blob/main/trainYolo.py): `trainYolo.py`
- [Saved model weights](https://github.com/davidbriandimapilis/cpecogfinalproj/tree/main/models): `models`

### Evaluation

- [Test evaluation](https://github.com/davidbriandimapilis/cpecogfinalproj/blob/main/testYolo.py): `testYolo.py`
- **Annotated predictions**

### Video detection

- [Video detection](https://github.com/davidbriandimapilis/cpecogfinalproj/blob/main/captureanddetect.py): `captureanddetect.py`
- **Captured frames**

### Other components

- **Dataset maintainer**
- **Ultralytics YOLO**
- **Video input**

## Connections

- Dataset maintainer → Helmet dataset: provides
- Merge classes → Helmet dataset: rewrites labels
- Median preprocessing → Helmet dataset: reads images
- Median preprocessing → Dataset config: trains with
- Median preprocessing → Ultralytics YOLO: trains model
- YOLO training → Dataset config: trains with
- YOLO training → Ultralytics YOLO: trains model
- Bilateral preprocessing → Ultralytics YOLO: trains model
- Test evaluation → Ultralytics YOLO: validates and predicts
- Test evaluation → Dataset config: evaluates with
- Test evaluation → Annotated predictions: saves results
- Video input → Video detection: provides frames
- Video detection → Ultralytics YOLO: runs inference
- Video detection → Captured frames: saves frames
