# deekshithreddykh/vaisiri-emotion-reader architecture

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

- Interactive diagram: https://gitdiagram.com/deekshithreddykh/vaisiri-emotion-reader
- Repository: https://github.com/deekshithreddykh/vaisiri-emotion-reader

## Overview

Vaisiri Emotion Reader is a desktop webcam application that captures video, detects and crops the largest face, classifies its emotion, smooths predictions, and updates a live GUI. The README documents neutral fallback, confidence display, pause/resume, and optional gallery imagery; the excerpts show the inference, smoothing, and display-update logic. Several UI and camera details are documented but not fully sampled, so uncertain internal wiring is omitted.

Main entry points: [`vaisiri_emotion_reader.py`](https://github.com/deekshithreddykh/vaisiri-emotion-reader/blob/main/vaisiri_emotion_reader.py) (Desktop app)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_runtime["Application runtime"]
  node_app["Desktop app"]
  node_model_init["Model initialization"]
end

subgraph group_vision["Vision and inference"]
  node_camera_worker["Camera worker"]
  node_face_detection["Face detection"]
  node_face_crop["Face crop"]
  node_smoothing["Prediction smoothing"]
  node_neutral_fallback["Neutral fallback"]
end

subgraph group_experience["User experience"]
  node_gui["Live GUI"]
  node_emotion_card["Emotion display"]
  node_controls["Pause/resume controls"]
end

node_user(("User"))
node_webcam(("Webcam"))
node_deepface["DeepFace"]

node_user -->|"launches"| node_app
node_app -->|"creates"| node_gui
node_app -->|"starts"| node_model_init
node_model_init -->|"warms model"| node_deepface
node_app -->|"starts worker"| node_camera_worker
node_webcam -->|"supplies frames"| node_camera_worker
node_camera_worker -->|"detects faces"| node_face_detection
node_face_detection -->|"selects largest"| node_face_crop
node_face_crop -->|"analyzes crop"| node_deepface
node_deepface -->|"returns scores"| node_smoothing
node_smoothing -->|"schedules update"| node_gui
node_neutral_fallback -->|"resets display"| node_gui
node_gui -->|"renders emotion"| node_emotion_card
node_user -->|"pauses or resumes"| node_controls
node_controls -->|"changes detection"| node_app

click node_app "https://github.com/deekshithreddykh/vaisiri-emotion-reader/blob/main/vaisiri_emotion_reader.py"
click node_model_init "https://github.com/deekshithreddykh/vaisiri-emotion-reader/blob/main/vaisiri_emotion_reader.py"
click node_camera_worker "https://github.com/deekshithreddykh/vaisiri-emotion-reader/blob/main/vaisiri_emotion_reader.py"
click node_face_detection "https://github.com/deekshithreddykh/vaisiri-emotion-reader/blob/main/vaisiri_emotion_reader.py"
click node_face_crop "https://github.com/deekshithreddykh/vaisiri-emotion-reader/blob/main/vaisiri_emotion_reader.py"
click node_smoothing "https://github.com/deekshithreddykh/vaisiri-emotion-reader/blob/main/vaisiri_emotion_reader.py"
click node_neutral_fallback "https://github.com/deekshithreddykh/vaisiri-emotion-reader/blob/main/vaisiri_emotion_reader.py"
click node_gui "https://github.com/deekshithreddykh/vaisiri-emotion-reader/blob/main/vaisiri_emotion_reader.py"
click node_emotion_card "https://github.com/deekshithreddykh/vaisiri-emotion-reader/blob/main/vaisiri_emotion_reader.py"
click node_controls "https://github.com/deekshithreddykh/vaisiri-emotion-reader/blob/main/vaisiri_emotion_reader.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_app,node_model_init,node_user toneBlue
class node_camera_worker,node_face_detection,node_face_crop,node_smoothing,node_neutral_fallback toneAmber
class node_gui,node_emotion_card,node_controls toneMint
class node_webcam,node_deepface toneIndigo
```

## Components

### Application runtime

- [Desktop app](https://github.com/deekshithreddykh/vaisiri-emotion-reader/blob/main/vaisiri_emotion_reader.py): `vaisiri_emotion_reader.py`
- [Model initialization](https://github.com/deekshithreddykh/vaisiri-emotion-reader/blob/main/vaisiri_emotion_reader.py): `vaisiri_emotion_reader.py`

### Vision and inference

- [Camera worker](https://github.com/deekshithreddykh/vaisiri-emotion-reader/blob/main/vaisiri_emotion_reader.py): `vaisiri_emotion_reader.py`
- [Face detection](https://github.com/deekshithreddykh/vaisiri-emotion-reader/blob/main/vaisiri_emotion_reader.py): `vaisiri_emotion_reader.py`
- [Face crop](https://github.com/deekshithreddykh/vaisiri-emotion-reader/blob/main/vaisiri_emotion_reader.py): `vaisiri_emotion_reader.py`
- [Prediction smoothing](https://github.com/deekshithreddykh/vaisiri-emotion-reader/blob/main/vaisiri_emotion_reader.py): `vaisiri_emotion_reader.py`
- [Neutral fallback](https://github.com/deekshithreddykh/vaisiri-emotion-reader/blob/main/vaisiri_emotion_reader.py): `vaisiri_emotion_reader.py`

### User experience

- [Live GUI](https://github.com/deekshithreddykh/vaisiri-emotion-reader/blob/main/vaisiri_emotion_reader.py): `vaisiri_emotion_reader.py`
- [Emotion display](https://github.com/deekshithreddykh/vaisiri-emotion-reader/blob/main/vaisiri_emotion_reader.py): `vaisiri_emotion_reader.py`
- [Pause/resume controls](https://github.com/deekshithreddykh/vaisiri-emotion-reader/blob/main/vaisiri_emotion_reader.py): `vaisiri_emotion_reader.py`

### Other components

- **User**
- **Webcam**
- **DeepFace**

## Connections

- User → Desktop app: launches
- Desktop app → Live GUI: creates
- Desktop app → Model initialization: starts
- Model initialization → DeepFace: warms model
- Desktop app → Camera worker: starts worker
- Webcam → Camera worker: supplies frames
- Camera worker → Face detection: detects faces
- Face detection → Face crop: selects largest
- Face crop → DeepFace: analyzes crop
- DeepFace → Prediction smoothing: returns scores
- Prediction smoothing → Live GUI: schedules update
- Neutral fallback → Live GUI: resets display
- Live GUI → Emotion display: renders emotion
- User → Pause/resume controls: pauses or resumes
- Pause/resume controls → Desktop app: changes detection
