ruview @ v1018
integrity
- size
- 54.7 MiB
- downloaded
- last checked
release notes
Automated release from CI pipeline
Changes: docs(adr): ADR-103 — learned multi-person counter (SOTA path) (#693)
Motivated by #499 (multi-node double-skeletons) which PR #491 stopped the bleeding on but didn't take to the WiFi-CSI literature's state of the art. Designs a learned counter that replaces today's slot heuristic + dedup_factor knob, reusing the primitives we've already shipped this week:
- Candle / RTX 5080 training pipeline (proven yesterday, 2.1 s for 400 epochs on pose_v1.safetensors)
- HF presence encoder as initialization (architectures compatible, unlike the pose head case)
- ruvector-mincut (Stoer-Wagner) for multi-node fusion upper-bound
- Cog packaging spec (ADR-100) + edge module registry (ADR-102)
- Paired-data pipeline (PR #641 streaming-safe align-ground-truth.js)
—
n_personslabels come for free; no new data collection campaign required to bootstrap.
Architecture:
per-node CSI [56×20] -> frozen HF encoder -> 128-dim embedding
> count head (softmax {0..7})
> confidence head (sigmoid)
N nodes' distributions -> confidence-weighted log-sum
-> Stoer-Wagner min-cut upper-bound clip
-> { count, confidence,
count_p95_low, count_p95_high,
per_node_breakdown }
Compares the proposal explicitly against WiCount / DeepCount / CrossCount / HeadCount published numbers and is honest about the hardware gap (their 3x3 MIMO research NICs vs our 1x1 SISO ESP32-S3).
v0.1.0 acceptance gates target >=80% within-+/-1 same-room and
=60% cross-room — modest on purpose; bounded by the same paired- data scarcity #645 documents for pose. The framework is the deliverable; the accuracy follows the data.
Includes:
- Architecture diagram in ascii
- Comparison table vs published WiFi-CSI counting SOTA
- Per-failure-mode mapping from #499 symptoms to how the learned counter addresses each
- v0.1.0 + v0.2.0 acceptance gates with measurable thresholds
- Repo layout for the new
v2/crates/cog-person-count/crate - Five-step migration plan from this ADR -> first GCS release
Status: Proposed. Implementation follows in the same incremental pattern ADR-101 used: scaffold-cog PR -> train+publish PR -> server-wiring PR.
Docker Image:
ghcr.io/ruvnet/RuView:962e0f4a34d17452d4fe2c6187628c0672e47cfc
download
curl -fL -o v1018.zip https://ratatoskr.space/pkg/ruview/v1018.zip
printf '%s %s\n' '1c4ba1bf9b80c9dde9a0ffa334c6fa51b13f0e95ea66623ee1a024a7e4de2dcf' 'v1018.zip' | sha256sum -c -
$url = "https://ratatoskr.space/pkg/ruview/v1018.zip"
$out = "v1018.zip"
Invoke-WebRequest -Uri $url -OutFile $out
if ((Get-FileHash $out -Algorithm SHA256).Hash.ToLowerInvariant() -ne "1c4ba1bf9b80c9dde9a0ffa334c6fa51b13f0e95ea66623ee1a024a7e4de2dcf") { throw "sha256 mismatch" }
curl -fL -o v1018.tar.gz https://ratatoskr.space/pkg/ruview/v1018.tar.gz
printf '%s %s\n' '3d09c8d0e0fa4291e6daaeb002fc92fd6536c159979b8c3231cd7247ba34446d' 'v1018.tar.gz' | sha256sum -c -
$url = "https://ratatoskr.space/pkg/ruview/v1018.tar.gz"
$out = "v1018.tar.gz"
Invoke-WebRequest -Uri $url -OutFile $out
if ((Get-FileHash $out -Algorithm SHA256).Hash.ToLowerInvariant() -ne "3d09c8d0e0fa4291e6daaeb002fc92fd6536c159979b8c3231cd7247ba34446d") { throw "sha256 mismatch" }
download via yggdrasil mesh
curl -fL -o v1018.zip http://14cc7d57b5e70f679b851fe5b272ce17c70632ff4beb5b35ab64bc706b2485af.pk.ygg/pkg/ruview/v1018.zip
printf '%s %s\n' '1c4ba1bf9b80c9dde9a0ffa334c6fa51b13f0e95ea66623ee1a024a7e4de2dcf' 'v1018.zip' | sha256sum -c -
$url = "http://14cc7d57b5e70f679b851fe5b272ce17c70632ff4beb5b35ab64bc706b2485af.pk.ygg/pkg/ruview/v1018.zip"
$out = "v1018.zip"
Invoke-WebRequest -Uri $url -OutFile $out
if ((Get-FileHash $out -Algorithm SHA256).Hash.ToLowerInvariant() -ne "1c4ba1bf9b80c9dde9a0ffa334c6fa51b13f0e95ea66623ee1a024a7e4de2dcf") { throw "sha256 mismatch" }
curl -fL -o v1018.tar.gz http://14cc7d57b5e70f679b851fe5b272ce17c70632ff4beb5b35ab64bc706b2485af.pk.ygg/pkg/ruview/v1018.tar.gz
printf '%s %s\n' '3d09c8d0e0fa4291e6daaeb002fc92fd6536c159979b8c3231cd7247ba34446d' 'v1018.tar.gz' | sha256sum -c -
$url = "http://14cc7d57b5e70f679b851fe5b272ce17c70632ff4beb5b35ab64bc706b2485af.pk.ygg/pkg/ruview/v1018.tar.gz"
$out = "v1018.tar.gz"
Invoke-WebRequest -Uri $url -OutFile $out
if ((Get-FileHash $out -Algorithm SHA256).Hash.ToLowerInvariant() -ne "3d09c8d0e0fa4291e6daaeb002fc92fd6536c159979b8c3231cd7247ba34446d") { throw "sha256 mismatch" }
| artifact | format | size | hashes |
|---|---|---|---|
| v1018.zip | zip | 54.7 MiB |
blake3-24 0c2cd91671f0b2fbf66d4de5289b94768b822f7bff967f8e
sha256 1c4ba1bf9b80c9dde9a0ffa334c6fa51b13f0e95ea66623ee1a024a7e4de2dcf
sha1 4bb6ff4ca16ded0480552693be01d80aa8ddc084
|
| v1018.tar.gz | tar.gz | 53.3 MiB |
blake3-24 a213bbcc1403d6702d4ce40f0d5edd87788129e985bc5185
sha256 3d09c8d0e0fa4291e6daaeb002fc92fd6536c159979b8c3231cd7247ba34446d
sha1 37b207a03178814fb08da06732c6413e5887561c
|
install
http_archive(
name = "ruview",
urls = ["https://ratatoskr.space/pkg/ruview/v1018.tar.gz"],
integrity = "sha256-PQnI0OD6QpHm2q6wAvyS/WU2wVmXm4wyMc1yR7o0RG0=",
strip_prefix = "ruview-v1018",
)
.url = "https://ratatoskr.space/pkg/ruview/v1018.tar.gz",
install via yggdrasil mesh
http_archive(
name = "ruview",
urls = ["http://14cc7d57b5e70f679b851fe5b272ce17c70632ff4beb5b35ab64bc706b2485af.pk.ygg/pkg/ruview/v1018.tar.gz"],
integrity = "sha256-PQnI0OD6QpHm2q6wAvyS/WU2wVmXm4wyMc1yR7o0RG0=",
strip_prefix = "ruview-v1018",
)
.url = "http://14cc7d57b5e70f679b851fe5b272ce17c70632ff4beb5b35ab64bc706b2485af.pk.ygg/pkg/ruview/v1018.tar.gz",