| Project Members | Department |
|---|---|
| C21147354M | |
| C21145681W | |
| C21147799W | |
| C21145989W | |
| C21147067J | |
| C21145793S | |
| C21146707O | |
| C21146057T |
This repository contains research artifacts and a prototype Human-Machine Interface (HMI) for a computer vision system codenamed "Uzziah". The HMI is a Flask + Socket.IO app that displays a live video feed and overlays tracking/prediction results streamed from a backend detection/prediction pipeline.
Key components:
- Human Machine Interface (HMI): Flask server with a web UI, receives processed frames over Socket.IO and renders them in the browser.
- Detection/Prediction Engines: Background threads that read camera frames, run object detection + tracking, and emit processed frames to the HMI.
- Research materials: Design docs, tutorials, and resources used during development.
uzziah/
├─ projectproposal.pdf
├─ ReadMe.md (this file)
└─ research/
├─ algorithm design/
├─ documentation/
├─ hardware design/
│ └─ sketches/
└─ sofware design/
├─ Detection Engine/
│ ├─ README.md
│ └─ requirements.txt
├─ Human Machine Interface/
│ ├─ app.py
│ ├─ requirements.txt
│ ├─ templates/
│ │ └─ index.html
│ └─ static/
│ ├─ style.css
│ └─ script.js
│ └─ utils/
│ ├─ detection_engine.py
│ └─ prediction_engine.py
├─ ReadMe.MD
├─ resources/
│ └─ weights.pt
└─ tutorials/
├─ SORT.ipynb
├─ fronted_streaming_connection.ipynb
└─ how_to_track_objects_with_sort_tracker.ipynb
-
Navigate to the HMI directory:
cd "research/sofware design/Human Machine Interface" -
Create and activate a virtual environment (recommended):
python -m venv .venv .\.venv\Scripts\Activate.ps1 -
Install dependencies:
python -m pip install -r requirements.txt
-
Run the app:
python app.py
-
Open the UI in your browser at:
The UI shows a tactical HUD-style page. A background thread starts the detection engine and another thread emits frames to the frontend via Socket.IO. Use the "NEUTRALIZE" button to test a POST action to /neutralize.
-
Entry point:
research/sofware design/Human Machine Interface/app.py- Spawns two daemon threads:
utils.detection_engine.detection_engine(frame_queue, result_queue)utils.prediction_engine.prediction_engine(result_queue, hmi_socket)
- Spawns two daemon threads:
-
Detection engine (
utils/detection_engine.py):- Reads frames from a camera, runs YOLO for detection, then SORT for tracking.
- Publishes
(frame, tracks)tuples intoresult_queue.
-
Prediction engine (
utils/prediction_engine.py):- Consumes
(frame, tracks), applies overlays, encodes frames as JPEG base64. - Emits frames to the web client via Socket.IO (
video_frameevent).
- Consumes
HMI (research/sofware design/Human Machine Interface/requirements.txt):
- Flask, Flask-SocketIO, OpenCV, inference-gpu, trackers, supervision==0.27.0rc1
Detection Engine (research/sofware design/Detection Engine/requirements.txt):
-
ultralytics(YOLO) and aSORTTrackerimplementation are imported inutils/detection_engine.pybut are not listed in the HMI requirements. You may need to install them manually:python -m pip install ultralytics
- If Socket.IO events are not reaching the browser, verify the app is started via
SocketIO.run(already configured inapp.py) and that the client loads the correct Socket.IO script. - Check the console output for background thread exceptions.
- Open issues or PRs for improvements.