InspirationAccessing cardiovascular metrics typically requires physical hardware or wearable oximeters. BioVision ML was created to eliminate physical devices by transforming ambient webcams into non-invasive bio-sensors using pure Python.What it doesExtracts real-time Heart Rate (BPM) and Heart Rate Variability (SDNN) from webcam feeds using Remote Photoplethysmography (rPPG).Plots live systolic pulse waveforms in a dark-mode dashboard.Classifies physiological stress states using a Scikit-Learn Random Forest model.Operates locally with zero hardware or API dependencies.How we built itopencv-python: Captures webcam frames and tracks the forehead Region of Interest (ROI).scipy.signal: Filters raw light signals using a 3rd-order Butterworth Bandpass Filter ($0.75 - 3.0\text{ Hz}$).scikit-learn: Runs Random Forest classification on extracted $RR$-intervals and SDNN features.streamlit & plotly: Powers the interactive web dashboard and real-time waveform plotting.Challenges we ran intoEliminating lighting noise and motion artifacts from raw optical feeds.Fixing OpenCV environment assertions (!empty()) with a fallback XML loader.Synchronizing real-time camera frames with Streamlit session buffers without UI lag.Accomplishments that we're proud ofBuilt a zero-hardware cardiovascular monitor running entirely in Python.Achieved low-latency, real-time peak detection and waveform plotting.What we learnedAdvanced digital signal filtering (rPPG) and time-series extraction.Handling real-time streaming data and state management in Streamlit.What's next for BioVision MLUpgrading to MediaPipe Face Mesh for precise facial tracking.Adding CHROM/POS algorithms to reduce lighting reflections.Expanding to estimate respiratory rates and $SpO_2$ proxies.

Built With

Share this project:

Updates

Submission history