WiFi DensePose 预训练编码器是一个轻量级 CSI 特征嵌入模型,将 8 维 WiFi 信道状态信息(CSI)转换为 128 维 L2 归一化嵌入,用于 presence 检测、活动识别和 vital signs 等下游任务。模型基于 aarongid/wifi-densepose-pretrained(RuView RuVector),架构为 8 -> 64 -> 128 两层全连接 + BatchNorm + GELU,仅 9,280 参数,自监督对比学习训练,held-out temporal-triplet 准确率 82.3%(时序不相交切分)。
csi-embed-v2.safetensors (40KB fp32), csi-embed-v2-int4.bin (4.56KB 4-bit, ESP32 8KB SRAM)presence-head.json (128 维线性 + sigmoid, presence 检测), LoRA adapters per nodenpu:0 (torch.npu.is_available() == True)pip install -r requirements.txt
# torch>=2.0, torch_npu>=2.0, safetensors, numpy, huggingface_hub# 从本地缓存权重运行(自动 HF 下载 fallback)
python inference.py --device npu:0 --batch 32 --iters 100
# 指定权重路径
python inference.py --model_path /tmp/wifi-densepose/csi-embed-v2.safetensors --presence_head /tmp/wifi-densepose/presence-head.json --device npu:0
# CPU 对比
python inference.py --device cpu --batch 32关键适配:
torch_npu 设备放置: Enc().to(device) 其中 device = torch.device("npu:0")torch.npu.synchronize() 包裹前后,确保 NPU 异步执行完成args.device 动态选择,避免 device = "cpu" 硬编码net.eval() 冻结 running stats,CPU/NPU 一致真实输出(NPU, 2026-08-22):
[LOAD] model_path=/tmp/wifi-densepose/csi-embed-v2.safetensors device=npu:0
[MODEL] Enc 8->64->128 params w1 torch.Size([64, 8]) w2 torch.Size([128, 64]) device=npu:0
[INPUT] batch=32 feat_dim=8 sample0=[0.336, 0.128, 0.234] ...
[OUTPUT] shape=(32, 128) mean=-0.009874 norm_sample0=1.000000 latency=0.362ms
[CONSISTENCY] vs CPU max_abs=5.102158e-04 mean_abs=1.150790e-05
[PRESENCE] score_sample0=0.9995 (sigmoid dot, head=presence-head.json)
[PERF] avg_latency=0.205ms throughput=156471.0 samples/sec iters=100
[DEVICE] npu_available=True device=npu:0
[DEVICE] npu_device_name=Ascend910_9362assets/agent_workflow.png: 环境检查、模型获取、分析、NPU 适配、验证全流程assets/npu_device_call.png: npu-smi 与 torch.npu 设备证明assets/model_result.png: NPU 真实推理输出与一致性、性能指标Hardware: NPU, Ascend, Ascend910