Views
No views yet
| file | what |
|---|---|
rppg_physnet_ubfc.pt | PyTorch checkpoint (PhysNet, width=32), UBFC fine-tuned |
VisionCardioHR.mlpackage | Core ML model for iOS 16+ (same weights, traced) |
| stage | HR MAE (vs contact-PPG) |
|---|---|
| zero-shot (SCAMPS only) on UBFC | 5.63 bpm |
| after UBFC fine-tune (val) | 2.80 bpm |
input "clip" : (1, 3, T=128, H=112, W=112) float, RGB, [0,1] normalized
output "waveform" : (1, 128) predicted rPPG pulse
HR = FFT peak in [0.7, 3.0] Hz, fs = clip_frames / clip_seconds = 128 / 20 = 6.4 Hzclip_frames, clip_size, clip_seconds, fs, hr_band_hz
so the app stays in sync automatically.1import torch
2from ml.physnet import PhysNet, hr_from_wave # repo: PFSV/ByeongYeok_RnD_NLP (vision_cardio)
3ck = torch.load("rppg_physnet_ubfc.pt", map_location="cpu")
4m = PhysNet(width=ck["width"]); m.load_state_dict(ck["state_dict"]); m.eval()
5wave = m(clip)[0].numpy() # clip: (1,3,128,112,112) in [0,1]
6bpm = hr_from_wave(wave, fs=6.4)PFSV/ByeongYeok_RnD_NLP, branch vision-cardio-ubfc-app
→ TUTORIAL_DRILL/neuro-nlp/vision_cardio.