WiFi CSI pose estimation toolkit — signal utilities, skeleton ops, evaluation metrics, and bundle streaming
Project description
echopose-sdk
WiFi CSI pose-estimation toolkit — the Python companion to the EchoPose system.
EchoPose turns commodity ESP32-S3 access points into a privacy-preserving human pose estimator that requires no cameras, no wearables, and works through walls. This SDK provides the tools you need to collect, process, evaluate, and replay CSI data and pose predictions.
Features
| Module | What it does |
|---|---|
echopose_sdk.csi |
Subcarrier normalisation, Doppler feature extraction, pilot interpolation, human-presence detection |
echopose_sdk.skeleton |
COCO-17 keypoint helpers, bone lengths, body-height normalisation, temporal smoothing |
echopose_sdk.metrics |
MPJPE, PCK@t, body-normalised PCK, PA-MPJPE, per-joint error tables |
echopose_sdk.streaming |
BundleReader/BundleWriter JSONL context managers, time-windowed filtering, train/test split |
echopose_sdk.validation |
Bundle schema validation |
echopose_sdk.quality |
Confidence summary statistics |
Installation
pip install echopose-sdk
Development install (editable):
pip install -e echopose_sdk/
Quick start
Validate a bundle
from echopose_sdk import validate_bundle
ok, reason = validate_bundle(bundle_dict)
Compute pose metrics
import numpy as np
from echopose_sdk.metrics import summary_report
pred = np.load("pred_poses.npy") # shape (N, 17, 3)
gt = np.load("gt_poses.npy")
report = summary_report(pred, gt)
# {'mpjpe': 0.42, 'pck_01_abs': 0.31, 'body_pck_01': 0.68, 'pa_mpjpe': 0.29, ...}
Normalise CSI amplitudes
from echopose_sdk.csi import normalize_subcarriers
norm = normalize_subcarriers(raw_amplitudes, method="zscore")
Smooth a skeleton sequence
from echopose_sdk.skeleton import smooth_skeleton_sequence
smoothed = smooth_skeleton_sequence(seq, method="gaussian", window=7)
Stream a session file
from echopose_sdk.streaming import BundleReader
with BundleReader("session.jsonl") as reader:
for bundle in reader:
print(bundle["timestamp_ms"])
CLI
echopose-sdk validate <bundle.json>
echopose-sdk inspect <bundle.json> [--node NODE] [--pretty]
echopose-sdk metrics --pred pred.npy --gt gt.npy [--per-joint] [--pretty]
echopose-sdk stream <session.jsonl> [--fps 20] [--limit 100]
License
MIT © Muhammed Shazin Sadhik Kunhi Parambath
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file echopose_sdk-0.2.2.tar.gz.
File metadata
- Download URL: echopose_sdk-0.2.2.tar.gz
- Upload date:
- Size: 18.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8a0a148945308bd1a62505c224fd65b23c6f7acb3e61b591b8660cecd0794a0d
|
|
| MD5 |
2838168e6617615e626650663dcfee34
|
|
| BLAKE2b-256 |
f6d18fd05f095ecc62de4eb4b558420cd84ef4d246581f5a6fec0d0cca4e8843
|
Provenance
The following attestation bundles were made for echopose_sdk-0.2.2.tar.gz:
Publisher:
publish-python.yml on shaz-in-dev/EchoPose
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
echopose_sdk-0.2.2.tar.gz -
Subject digest:
8a0a148945308bd1a62505c224fd65b23c6f7acb3e61b591b8660cecd0794a0d - Sigstore transparency entry: 2153667168
- Sigstore integration time:
-
Permalink:
shaz-in-dev/EchoPose@8c0142ac0da1840a7ba843bc81378ab5e5026d79 -
Branch / Tag:
refs/tags/v0.3.2 - Owner: https://github.com/shaz-in-dev
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish-python.yml@8c0142ac0da1840a7ba843bc81378ab5e5026d79 -
Trigger Event:
release
-
Statement type:
File details
Details for the file echopose_sdk-0.2.2-py3-none-any.whl.
File metadata
- Download URL: echopose_sdk-0.2.2-py3-none-any.whl
- Upload date:
- Size: 20.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
212750ef84b76be56daa961ae8c58c9e72ecb64e54ab0f0eea0a1eae157d8bdf
|
|
| MD5 |
b4dedc239a0d74ff8549059124311236
|
|
| BLAKE2b-256 |
042983f8a76bfcc571ceb755d6f6e7bf5ae834ee43255a1e9c1bc6b756b96cdf
|
Provenance
The following attestation bundles were made for echopose_sdk-0.2.2-py3-none-any.whl:
Publisher:
publish-python.yml on shaz-in-dev/EchoPose
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
echopose_sdk-0.2.2-py3-none-any.whl -
Subject digest:
212750ef84b76be56daa961ae8c58c9e72ecb64e54ab0f0eea0a1eae157d8bdf - Sigstore transparency entry: 2153667493
- Sigstore integration time:
-
Permalink:
shaz-in-dev/EchoPose@8c0142ac0da1840a7ba843bc81378ab5e5026d79 -
Branch / Tag:
refs/tags/v0.3.2 - Owner: https://github.com/shaz-in-dev
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish-python.yml@8c0142ac0da1840a7ba843bc81378ab5e5026d79 -
Trigger Event:
release
-
Statement type: