compressionkit-ppg-4x-v1.0
A PPG signal compression codec using Residual Vector Quantization (RVQ), optimized for edge and wearable devices.
Model Details
- Modality: PPG
- Sample Rate: 64 Hz
- Compression Ratio: 4x
- Quantization: INT8
- RVQ Levels: 4
- Codebook Size: 256 entries ร 16D
- Encoder Input:
[None, 1, 320, 1] - Encoder Output:
[None, 1, 80, 16]
Quality Metrics
Fidelity & Robustness
Both fidelity yardsticks are reported so the codec is judged fairly: faithfulness is PRD vs the recorded (still-noisy) input, while truth fidelity is PRD vs clean ground truth. Lower is better.
| Metric | Value |
|---|---|
| Truth PRD vs clean (%) | 1.14 |
| Truth PRD at native noise (%) | 34.36 |
| Faithful PRD vs input (%) | 3.44 |
| PRD degradation slope (PRD%/dB) | 4.40 |
| PRD at 0 dB SNR (%) | 75.92 |
| PRD at -6 dB SNR (%) | 104.75 |
| Pure-noise imprint autocorr | 0.2853 |
Time Domain
PRD here is faithfulness (vs the recorded input); see Fidelity & Robustness above for the clean-truth and noise-regime view.
| Metric | Mean | Median | P90 |
|---|---|---|---|
| PRD vs input โ faithfulness (%) | 3.4358 | 1.3207 | 4.2732 |
| RMSE | 0.0183 | 0.0131 | 0.0318 |
| Cosine Similarity | 0.9959 | 0.9999 | 0.9999 |
Spectral
- Band Total Relative Error (median): 0.0065
Bitrate
Encoder Precision Parity
Difference from FP32 reconstruction on a disjoint real-data holdout; lower is better.
| Encoder | P90 PRD | Worst PRD | Status |
|---|---|---|---|
| FP16 | 0.21% | 1.01% | recommended |
| INT16X8 | 0.63% | 1.80% | recommended |
| INT8 | 2.70% | 3.31% | recommended |
Usage
Python (compressionkit runtime)
from compressionkit.runtime import RVQCodec
codec = RVQCodec.from_pretrained("Ambiq/compressionkit-ppg-4x-v1.0")
# Encode: float32 signal โ RVQ indices
indices = codec.encode(signal)
# Decode: RVQ indices โ reconstructed signal
recon = codec.decode(indices)
Local deployment directory
codec = RVQCodec("path/to/deploy/")
Files
| File | Description |
|---|---|
encoder_int8.tflite |
INT8 quantized encoder (on-device) |
encoder_float32.tflite |
Float32 encoder for browser/server runtimes |
encoder_fp16.tflite |
FP16 encoder variant for supported edge runtimes |
encoder_int16x8.tflite |
INT16x8 encoder variant for supported edge runtimes |
encoder.h |
C header for encoder |
encoder.keras |
Float32 Python reference encoder (training/inspection use) |
decoder_float32.tflite |
Float32 decoder (server-side evaluation) |
decoder_int8.tflite |
INT8 decoder (optional, on-device) |
decoder.keras |
Float32 Python reference decoder (training/inspection use) |
codebook.npz |
RVQ codebook tables |
codebook.h |
C header for codebook |
config.json |
Deployment manifest |
sample_stimulus.npz |
Synthetic test data |
demo_recordings.npz |
10 real, quality-gated browser-demo recordings |
demo_recordings_manifest.json |
Recording provenance, license, and quality metadata |
quality_scorecard.json |
Full evaluation metrics |
Dataset & License
Training data provenance is not recorded in this package; sample data uses synthetic physiokit waveforms only โ no patient data is redistributed. Demo recordings: BIDMC PPG and Respiration Dataset v1.0.0 (source); real, quality-gated excerpts are released under ODC-By-1.0. https://opendatacommons.org/licenses/by/1-0/
Model weights are released under the Ambiq Model Weights License โ deployment is restricted to Ambiq silicon devices. See LICENSE-MODEL-WEIGHTS.md for full terms.
Citation
@software{compressionkit,
author = {Ambiq AI},
title = {compressionKIT: Signal Compression for Edge AI},
url = {https://github.com/AmbiqAI/compressionkit}
}
- Downloads last month
- 79