volfiros commited on
Commit Β·
ef2ebbc
1
Parent(s): ec0371b
docs: refine README and Hugging Face configuration
Browse files- .github/README.md +64 -0
- README.md +2 -1
.github/README.md
ADDED
|
@@ -0,0 +1,64 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<div align="center">
|
| 2 |
+
<img src="../assets/banner.svg" alt="PulseCam Banner" width="100%" />
|
| 3 |
+
|
| 4 |
+
[](https://huggingface.co/spaces/agaroth/pulsecam)
|
| 5 |
+
[](../LICENSE)
|
| 6 |
+
</div>
|
| 7 |
+
|
| 8 |
+
## π― The Problem
|
| 9 |
+
Measuring heart rate traditionally requires dedicated hardware like smartwatches, chest straps, or pulse oximeters. This limits accessibility for quick, everyday health monitoring, especially for telehealth integrations or fitness apps where users might not have specialized devices on hand.
|
| 10 |
+
|
| 11 |
+
## β¨ What PulseCam Does
|
| 12 |
+
PulseCam turns your standard webcam into a contactless heart rate monitor. Using remote photoplethysmography (rPPG), it detects micro-variations in skin color caused by blood flow with each heartbeat.
|
| 13 |
+
|
| 14 |
+
Simply sit in front of your camera, and PulseCam tracks your face, isolates the optimal regions of interest (cheeks), and processes the subtle color changes in real-time to calculate your heart rate (BPM).
|
| 15 |
+
|
| 16 |
+
## π οΈ Tech Stack & Core Libraries
|
| 17 |
+
- **Frontend:** React, TypeScript, Vite, Framer Motion, WebGL (for stunning shader backgrounds)
|
| 18 |
+
- **Backend:** Python, FastAPI, WebSockets
|
| 19 |
+
- **Core Models & Algorithms:**
|
| 20 |
+
- **MediaPipe FaceLandmarker:** Real-time facial landmark detection to isolate stable regions of interest (ROI).
|
| 21 |
+
- **SciPy & NumPy:** Advanced signal processing, bandpass filtering, Welch's method, and autocorrelation to extract the heart rate signal from noisy RGB data.
|
| 22 |
+
|
| 23 |
+
## π Live Demo
|
| 24 |
+
Try it out directly in your browser without installing anything!
|
| 25 |
+
π **[PulseCam on Hugging Face](https://agaroth-pulsecam.hf.space)** (or [view the Space](https://huggingface.co/spaces/agaroth/pulsecam))
|
| 26 |
+
|
| 27 |
+
## βοΈ Installation & Local Setup
|
| 28 |
+
|
| 29 |
+
### Prerequisites
|
| 30 |
+
- Node.js (via Bun or npm)
|
| 31 |
+
- Python 3.11+
|
| 32 |
+
|
| 33 |
+
### Steps
|
| 34 |
+
1. **Clone the repository:**
|
| 35 |
+
```bash
|
| 36 |
+
git clone git@github.com:volfiros/pulsecam.git
|
| 37 |
+
cd pulsecam
|
| 38 |
+
```
|
| 39 |
+
|
| 40 |
+
2. **Start the Backend:**
|
| 41 |
+
```bash
|
| 42 |
+
cd backend
|
| 43 |
+
python -m venv .venv
|
| 44 |
+
source .venv/bin/activate
|
| 45 |
+
pip install -r requirements.txt
|
| 46 |
+
uvicorn main:app --reload
|
| 47 |
+
```
|
| 48 |
+
|
| 49 |
+
3. **Start the Frontend:**
|
| 50 |
+
```bash
|
| 51 |
+
cd frontend
|
| 52 |
+
bun install
|
| 53 |
+
bun run dev
|
| 54 |
+
```
|
| 55 |
+
|
| 56 |
+
4. Open `http://localhost:5173` in your browser.
|
| 57 |
+
|
| 58 |
+
## π Future Improvements
|
| 59 |
+
- **Lighting Compensation:** Improve robustness against uneven or flickering lighting conditions.
|
| 60 |
+
- **Motion Artifact Reduction:** Implement better independent component analysis (ICA) to separate motion from the pulse signal.
|
| 61 |
+
- **Mobile Optimization:** Enhance camera access and processing efficiency on mobile devices.
|
| 62 |
+
- **HRV (Heart Rate Variability):** Extract inter-beat intervals to measure stress levels.
|
| 63 |
+
|
| 64 |
+
See the [Architecture Document](../ARCHITECTURE.md) for a deep dive into how the signal processing pipeline works.
|
README.md
CHANGED
|
@@ -1,11 +1,12 @@
|
|
| 1 |
---
|
| 2 |
-
title:
|
| 3 |
emoji: π
|
| 4 |
colorFrom: indigo
|
| 5 |
colorTo: purple
|
| 6 |
sdk: docker
|
| 7 |
pinned: false
|
| 8 |
license: mit
|
|
|
|
| 9 |
---
|
| 10 |
|
| 11 |
<div align="center">
|
|
|
|
| 1 |
---
|
| 2 |
+
title: PulseCam
|
| 3 |
emoji: π
|
| 4 |
colorFrom: indigo
|
| 5 |
colorTo: purple
|
| 6 |
sdk: docker
|
| 7 |
pinned: false
|
| 8 |
license: mit
|
| 9 |
+
short_description: Contactless heart rate monitoring via webcam
|
| 10 |
---
|
| 11 |
|
| 12 |
<div align="center">
|