rust-port/wifi-densepose-rs/crates/wifi-densepose-train/README.md
Complete training pipeline for WiFi-DensePose, integrated with all five ruvector crates.
wifi-densepose-train provides everything needed to train the WiFi-to-DensePose model: dataset
loading, subcarrier interpolation, loss functions, evaluation metrics, and the training loop
orchestrator. It supports both the MM-Fi dataset (NeurIPS 2023) and deterministic synthetic data
for reproducible experiments.
Without the tch-backend feature the crate still provides the dataset, configuration, and
subcarrier interpolation APIs needed for data preprocessing and proof verification.
.npy files.ruvector-solver sparse
interpolation with variance-based selection.tch-backend) -- Pose estimation losses including MSE, OKS, and combined
multi-task loss.tch-backend) -- PCKh, OKS-AP, and per-keypoint evaluation with
ruvector-mincut-based person matching.tch-backend) -- Full training loop with learning rate scheduling,
gradient clipping, checkpointing, and reproducible proofs.ruvector-mincut, ruvector-attn-mincut,
ruvector-temporal-tensor, ruvector-solver, and ruvector-attention integrated across
dataset loading, metrics, and model attention.| Flag | Default | Description |
|---|---|---|
tch-backend | no | Enable PyTorch training via tch-rs |
cuda | no | CUDA GPU acceleration (implies tch) |
| Binary | Description |
|---|---|
train | Main training entry point |
verify-training | Proof verification (requires tch-backend) |
use wifi_densepose_train::config::TrainingConfig;
use wifi_densepose_train::dataset::{SyntheticCsiDataset, SyntheticConfig, CsiDataset};
// Build and validate config
let config = TrainingConfig::default();
config.validate().expect("config is valid");
// Create a synthetic dataset (deterministic, fixed-seed)
let syn_cfg = SyntheticConfig::default();
let dataset = SyntheticCsiDataset::new(200, syn_cfg);
// Load one sample
let sample = dataset.get(0).unwrap();
println!("amplitude shape: {:?}", sample.amplitude.shape());
wifi-densepose-train/src/
lib.rs -- Re-exports, VERSION
config.rs -- TrainingConfig, hyperparameters, validation
dataset.rs -- CsiDataset trait, MmFiDataset, SyntheticCsiDataset, DataLoader
error.rs -- TrainError, ConfigError, DatasetError, SubcarrierError
subcarrier.rs -- interpolate_subcarriers (114->56), variance-based selection
losses.rs -- (tch) MSE, OKS, multi-task loss [feature-gated]
metrics.rs -- (tch) PCKh, OKS-AP, person matching [feature-gated]
model.rs -- (tch) Model definition with attention [feature-gated]
proof.rs -- (tch) Deterministic training proofs [feature-gated]
trainer.rs -- (tch) Training loop orchestrator [feature-gated]
| Crate | Role |
|---|---|
wifi-densepose-signal | Signal preprocessing consumed by dataset loaders |
wifi-densepose-nn | Inference engine that loads trained models |
ruvector-mincut | Person matching in metrics |
ruvector-attn-mincut | Attention-weighted graph cuts |
ruvector-temporal-tensor | Compressed CSI buffering in datasets |
ruvector-solver | Sparse subcarrier interpolation |
ruvector-attention | Spatial attention in model |
MIT OR Apache-2.0