# liz003-ziz1010/activity-recognition architecture

> Architecture diagram of the GitHub repository liz003-ziz1010/activity-recognition, 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/liz003-ziz1010/activity-recognition
- Repository: https://github.com/liz003-ziz1010/activity-recognition

## Overview

The repository contains two related but distinct gesture projects: a Flask app for capturing labeled hand images and predicting gestures, and a webcam-motion toolkit for recording, preparing, and classifying action videos. The toolkit also includes standalone landmark recording and pose-processing workflows. The map follows the sampled Flask, training, dataset, inference, motion-detection, and pose-processing code; wiring for other files is not inferred from their names alone.

Main entry points: [`hand_gesture_app/app.py`](https://github.com/liz003-ziz1010/activity-recognition/blob/main/hand_gesture_app/app.py) (Flask routes), [`webcam-motion2.0/train_classifier.py`](https://github.com/liz003-ziz1010/activity-recognition/blob/main/webcam-motion2.0/train_classifier.py) (Classifier training), [`webcam-motion2.0/inference_classifier.py`](https://github.com/liz003-ziz1010/activity-recognition/blob/main/webcam-motion2.0/inference_classifier.py) (Video inference), [`hand_gesture_app/train.py`](https://github.com/liz003-ziz1010/activity-recognition/blob/main/hand_gesture_app/train.py) (Image training)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_web["Hand Gesture Web App"]
  node_flask["Flask routes<br/>[app.py]"]
  node_image_store[("Captured images")]
  node_image_training["Image training<br/>[train.py]"]
  node_hand_model["Hand CNN<br/>[model.py]"]
end

subgraph group_video["Video Action Classification"]
  node_motion_detector["Motion detector<br/>[webcam-motion.py]"]
  node_video_clips[("Action clips<br/>[data]")]
  node_video_dataset["Video dataset<br/>[video_dataset.py]"]
  node_video_training["Classifier training"]
  node_video_model["Video classifier"]
  node_weights["Saved weights"]
  node_video_inference["Video inference"]
end

subgraph group_pose["Pose And Landmark Tools"]
  node_landmark_tool["Landmark recorder<br/>[gesture.py]"]
  node_landmark_model_tool["Gesture recorder and predictor<br/>[gestures_saved.py]"]
  node_pose_extractor["Pose extraction<br/>[pose_extractor.py]"]
  node_pose_skeleton["Pose and skeleton processing"]
end

node_browser(("Browser user"))
node_webcam(("Webcam"))
node_motion_user(("Motion-tool user"))

node_browser -->|"uses routes"| node_flask
node_flask -->|"reads frames"| node_webcam
node_flask -->|"saves captures"| node_image_store
node_flask -->|"starts training"| node_image_training
node_image_training -->|"loads images"| node_image_store
node_image_training -->|"trains"| node_hand_model
node_flask -->|"predicts frame"| node_hand_model
node_motion_user -->|"starts capture"| node_motion_detector
node_motion_detector -->|"reads frames"| node_webcam
node_motion_detector -->|"records clips"| node_video_clips
node_video_training -->|"loads samples"| node_video_dataset
node_video_dataset -->|"reads clips"| node_video_clips
node_video_training -->|"trains"| node_video_model
node_video_training -->|"saves weights"| node_weights
node_video_inference -->|"runs classification"| node_video_model
node_video_inference -->|"infers classes"| node_video_dataset
node_video_inference -->|"loads weights"| node_weights
node_motion_user -->|"records or replays"| node_landmark_tool
node_landmark_tool -->|"reads frames"| node_webcam
node_motion_user -->|"runs gesture tool"| node_landmark_model_tool
node_landmark_model_tool -->|"reads frames"| node_webcam
node_motion_user -->|"processes video"| node_pose_extractor
node_motion_user -->|"processes video"| node_pose_skeleton

click node_flask "https://github.com/liz003-ziz1010/activity-recognition/blob/main/hand_gesture_app/app.py"
click node_image_training "https://github.com/liz003-ziz1010/activity-recognition/blob/main/hand_gesture_app/train.py"
click node_hand_model "https://github.com/liz003-ziz1010/activity-recognition/blob/main/hand_gesture_app/model.py"
click node_motion_detector "https://github.com/liz003-ziz1010/activity-recognition/blob/main/webcam-motion2.0/webcam-motion.py"
click node_video_clips "https://github.com/liz003-ziz1010/activity-recognition/tree/main/webcam-motion2.0/data"
click node_video_dataset "https://github.com/liz003-ziz1010/activity-recognition/blob/main/webcam-motion2.0/video_dataset.py"
click node_video_training "https://github.com/liz003-ziz1010/activity-recognition/blob/main/webcam-motion2.0/train_classifier.py"
click node_video_model "https://github.com/liz003-ziz1010/activity-recognition/blob/main/webcam-motion2.0/action_classifier.py"
click node_weights "https://github.com/liz003-ziz1010/activity-recognition/blob/main/webcam-motion2.0/action_classifier_model.pth"
click node_video_inference "https://github.com/liz003-ziz1010/activity-recognition/blob/main/webcam-motion2.0/inference_classifier.py"
click node_landmark_tool "https://github.com/liz003-ziz1010/activity-recognition/blob/main/webcam-motion2.0/gesture.py"
click node_landmark_model_tool "https://github.com/liz003-ziz1010/activity-recognition/blob/main/webcam-motion2.0/gestures_saved.py"
click node_pose_extractor "https://github.com/liz003-ziz1010/activity-recognition/blob/main/webcam-motion2.0/pose_extractor.py"
click node_pose_skeleton "https://github.com/liz003-ziz1010/activity-recognition/blob/main/webcam-motion2.0/pose_segment_and_skeleton.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_flask,node_image_store,node_image_training,node_hand_model,node_browser,node_motion_user toneBlue
class node_motion_detector,node_video_clips,node_video_dataset,node_video_training,node_video_model,node_weights,node_video_inference toneAmber
class node_landmark_tool,node_landmark_model_tool,node_pose_extractor,node_pose_skeleton toneMint
class node_webcam toneIndigo
```

## Components

### Hand Gesture Web App

- [Flask routes](https://github.com/liz003-ziz1010/activity-recognition/blob/main/hand_gesture_app/app.py): `hand_gesture_app/app.py`
- **Captured images**
- [Image training](https://github.com/liz003-ziz1010/activity-recognition/blob/main/hand_gesture_app/train.py): `hand_gesture_app/train.py`
- [Hand CNN](https://github.com/liz003-ziz1010/activity-recognition/blob/main/hand_gesture_app/model.py): `hand_gesture_app/model.py`

### Video Action Classification

- [Motion detector](https://github.com/liz003-ziz1010/activity-recognition/blob/main/webcam-motion2.0/webcam-motion.py): `webcam-motion2.0/webcam-motion.py`
- [Action clips](https://github.com/liz003-ziz1010/activity-recognition/tree/main/webcam-motion2.0/data): `webcam-motion2.0/data`
- [Video dataset](https://github.com/liz003-ziz1010/activity-recognition/blob/main/webcam-motion2.0/video_dataset.py): `webcam-motion2.0/video_dataset.py`
- [Classifier training](https://github.com/liz003-ziz1010/activity-recognition/blob/main/webcam-motion2.0/train_classifier.py): `webcam-motion2.0/train_classifier.py`
- [Video classifier](https://github.com/liz003-ziz1010/activity-recognition/blob/main/webcam-motion2.0/action_classifier.py): `webcam-motion2.0/action_classifier.py`
- [Saved weights](https://github.com/liz003-ziz1010/activity-recognition/blob/main/webcam-motion2.0/action_classifier_model.pth): `webcam-motion2.0/action_classifier_model.pth`
- [Video inference](https://github.com/liz003-ziz1010/activity-recognition/blob/main/webcam-motion2.0/inference_classifier.py): `webcam-motion2.0/inference_classifier.py`

### Pose And Landmark Tools

- [Landmark recorder](https://github.com/liz003-ziz1010/activity-recognition/blob/main/webcam-motion2.0/gesture.py): `webcam-motion2.0/gesture.py`
- [Gesture recorder and predictor](https://github.com/liz003-ziz1010/activity-recognition/blob/main/webcam-motion2.0/gestures_saved.py): `webcam-motion2.0/gestures_saved.py`
- [Pose extraction](https://github.com/liz003-ziz1010/activity-recognition/blob/main/webcam-motion2.0/pose_extractor.py): `webcam-motion2.0/pose_extractor.py`
- [Pose and skeleton processing](https://github.com/liz003-ziz1010/activity-recognition/blob/main/webcam-motion2.0/pose_segment_and_skeleton.py): `webcam-motion2.0/pose_segment_and_skeleton.py`

### Other components

- **Browser user**
- **Webcam**
- **Motion-tool user**

## Connections

- Browser user → Flask routes: uses routes
- Flask routes → Webcam: reads frames
- Flask routes → Captured images: saves captures
- Flask routes → Image training: starts training
- Image training → Captured images: loads images
- Image training → Hand CNN: trains
- Flask routes → Hand CNN: predicts frame
- Motion-tool user → Motion detector: starts capture
- Motion detector → Webcam: reads frames
- Motion detector → Action clips: records clips
- Classifier training → Video dataset: loads samples
- Video dataset → Action clips: reads clips
- Classifier training → Video classifier: trains
- Classifier training → Saved weights: saves weights
- Video inference → Video classifier: runs classification
- Video inference → Video dataset: infers classes
- Video inference → Saved weights: loads weights
- Motion-tool user → Landmark recorder: records or replays
- Landmark recorder → Webcam: reads frames
- Motion-tool user → Gesture recorder and predictor: runs gesture tool
- Gesture recorder and predictor → Webcam: reads frames
- Motion-tool user → Pose extraction: processes video
- Motion-tool user → Pose and skeleton processing: processes video
