ESPectre 在 ESP32-S2 上的固件性能基准实测:Native、ESPHome 与 Micro-ESPectre 的 CSI 感知资源画像
【免费下载链接】espectreWi-Fi CSI motion sensing for ESP32. C++ SDK, ESPHome, Native, and Matter frontends, browser tools, and a CLI for the full device lifecycle. GPLv3 and commercial licensing.项目地址: https://gitcode.com/GitHub_Trending/es/espectre
本篇技术指南解读 ESPectre 项目为 ESP32-S2 芯片生成的固件性能基准报告(docs/performance/ESP32-S2.md)。该报告由仓库内的固件基准工具tools/benchmark_firmware.py在真实硬件上自动构建、烧录、监控并生成,覆盖 Native、ESPHome、Micro-ESPectre 三种前端与 Lightweight、High Accuracy 两种检测配置的五种代表性组合。读完本文,你将理解报告中的每一项指标含义(CSI 占用率、包速率、堆稳定性、运行时负载、检测耗时等)、这些指标对应的通过标准,以及如何在同一块 ESP32-S2 板卡上复现这套基准并正确解读结果。
报告快照:一次可溯源的硬件基准运行
ESP32-S2 性能报告是一个自动生成文件,其头部完整记录了生成本次报告的环境与溯源信息:
| 字段 | 值 |
|---|---|
| 生成命令 | tools/benchmark_firmware.py --chip s2 --port <serial-port> |
| Git 修订号 | ed014256dbf6 |
| 运行开始时间 | 2026-09-05T14:50:24+02:00 |
| 监视时长 | 60 秒(每个打分窗口) |
| 总体结果 | PASS |
| 工作区状态 | dirty→dirty(运行前后均未变) |
| 源码指纹 | 起止一致,Source consistency:stable |
从源码看,这份头部由 tools/lib/firmware_benchmark/report.py 中的repository_state()与render_report()生成:报告记录 Git 修订号、工作区是否含未提交改动,以及对espectre、src/cpp、src/python/espectre_cli、src/python/micro_espectre、tools/benchmark_firmware.py、tools/lib/firmware_benchmark六类关键源码路径计算出的 SHA-256 源码指纹(见BENCHMARK_SOURCE_PATHS)。这套溯源机制的意义在于:报告只对生成时点的源码负责。运行中途若 Git 修订号发生变化,全部已执行 case 将被判定无效;若同一修订号下源码指纹变化,则只给出警告而不撤销结果。
报告中的“Snapshot scope”段落特别说明:使用--update或--resume保留的历史 case 可能来自更早的运行,精确的 case 来源需查阅data/untracked/firmware_benchmarks/<run-id>/下按运行时间戳、芯片与修订号命名的逐次运行产物(manifest.json、各 phase 的.log/.jsonl、analysis.json)。
五种基准组合的总体矩阵
ESP32-S2 上 Matter 前端因依赖蓝牙配网流程而被自动省略(这一点在 tools/README.md 中有明确说明:“Matter is omitted automatically for ESP32-S2 because the supported commissioning flow requires Bluetooth”)。因此本次报告覆盖以下五种组合,总体全部PASS:
| Frontend | Detection profile | Result | Occupancy | Binary size | Partition free | CPU load | Min free heap |
|---|---|---|---|---|---|---|---|
| Native | Lightweight | PASS | 83.47% | 1.16 MiB | 734.3 KiB (38.2%) | 8.47% | 29.8 KiB |
| Native | High Accuracy | PASS | 82.70% | 1.16 MiB | 734.3 KiB (38.2%) | 11.92% | 29.8 KiB |
| ESPHome | Lightweight | PASS | 85.77% | 991.0 KiB | 801.1 KiB (44.7%) | 10.81% | 25.3 KiB |
| ESPHome | High Accuracy | PASS | 85.68% | 991.0 KiB | 801.1 KiB (44.7%) | 15.37% | 25.3 KiB |
| Micro-ESPectre | Lightweight | PASS | 87.00% | 1.24 MiB | 774.0 KiB (39.0%) | 94.53% | 96.8 KiB |
这张矩阵能立刻读出 ESP32-S2 上的几条关键结论:
- Native 与 ESPHome 的 High Accuracy 配置通过运行时切换获得,无需重新构建:报告头部说明“All three C++ frontends support persisted runtime switching”,基准策略是复用一次烧录的 Lightweight 镜像,再通过 Direct 接口在运行时把检测器切换到 High Accuracy(见 tools/README.md 的“Verify production runtime defaults before applying case-specific mutations”条款)。这也解释了为何 Native 与 ESPHome 两种配置的二进制大小、分区余量完全相同。
- ESPHome 固件最小(991.0 KiB),Native 次之(1.16 MiB),Micro-ESPectre 最大(1.24 MiB,其中包含 165.1 KiB 的 MicroPython 源码),但 Micro-ESPectre 反而拥有最高的空闲堆(最小 96.8 KiB),因为它运行在 MicroPython 的垃圾回收堆模型之上,与应用分区占用并不直接相关。
- Micro-ESPectre 的运行时负载高达 94.53%,是 C++ 前端的近 6~11 倍,反映了解释型 MicroPython 运行时在 ESP32-S2 单核上的 CPU 成本,但其 CSI 占用率(87.00%)反而是五种组合中最高的。
五种组合的逐项实测详情
以下五节完整保留报告正文的逐项指标,并给出关键指标的解读。
Native Lightweight
Result:PASS
| Metric | Value |
|---|---|
| Benchmark mode | runtime |
| Build duration | 36.3s |
| Flash duration | 27.3s |
| Monitor duration | 2m 37.3s |
| Firmware binary | 1,214,112 bytes (1185.7 KiB) |
| Application partition used | 1,214,112 bytes (1185.7 KiB) |
| Application partition free | 751,968 bytes (734.3 KiB) |
| Verified detector | lightweight |
| Frontend setup final BSSID requested / applied / already associated / reassociation exercised / association verified | yes / yes / yes / yes / yes |
| Direct control attempts | 120/120 succeeded |
| Direct censored failures | 0 |
| Direct diagnostics samples | 60/60 expected |
| Status cadence | 1.00 s mean, 1.01 s max gap |
| Status gaps over tolerance | 0 |
| Device uptime restarts | 0 |
| Packet-rate samples | 60 |
| Packet rate | 83.32 pps mean, 72 min, 92 max, 5.34 standard deviation |
| CSI occupancy | 83.47% mean, 73% min, 93% max |
| Motion samples | 233/5 expected |
| Last free heap | 57,792 bytes (56.4 KiB) |
| Heap stability previous-window median | 57,834 bytes (56.5 KiB) |
| Heap stability final-window median | 57,792 bytes (56.4 KiB) |
| Heap stability change | -42 bytes, -0.07% |
| Minimum free heap | 30,483 bytes (29.8 KiB) |
| Last largest heap block | 47,104 bytes (46.0 KiB) |
| Runtime load | 8.47% mean |
| Loop average | 976.86 us |
| Loop maximum | 6796 us |
| Detection samples | 247 |
| Detection average | 881.71 us |
| Detection minimum | 27 us |
| Detection maximum | 1758 us |
Native 前端在 Lightweight 检测器下展现出最轻量的运行时特征:8.47% 的平均运行时负载、约 977 µs 的平均主循环耗时,以及平均 882 µs 的检测耗时(均值约 1 ms 量级,与报告设定的每包 100 pps、每秒 4 次推理的负载模型相匹配)。堆稳定性变化仅 -0.07%,几乎没有泄漏迹象。BSSID 五个字段全部为yes,说明基准在设置阶段通过 Direct 强制应用了目标 AP 并真实演练了一次重关联(ESPHome 的already associated字段为no,说明 ESPHome 场景确实经历了从其他 AP 到目标 AP 的重关联过程,而 Native 场景则验证了“已关联时强制切换”的分支)。
Native High Accuracy
Result:PASS
| Metric | Value |
|---|---|
| Benchmark mode | runtime |
| Build duration | 36.3s |
| Flash duration | 27.3s |
| Monitor duration | 2m 37.3s |
| Firmware binary | 1,214,112 bytes (1185.7 KiB) |
| Application partition used | 1,214,112 bytes (1185.7 KiB) |
| Application partition free | 751,968 bytes (734.3 KiB) |
| Verified detector | high_accuracy |
| Frontend setup final BSSID requested / applied / reassociation exercised / association verified | yes / yes / yes / yes |
| Direct control attempts | 120/120 succeeded |
| Direct censored failures | 0 |
| Direct diagnostics samples | 60/60 expected |
| Status cadence | 1.00 s mean, 1.02 s max gap |
| Status gaps over tolerance | 0 |
| Device uptime restarts | 0 |
| Packet-rate samples | 60 |
| Packet rate | 82.58 pps mean, 70 min, 90 max, 4.80 standard deviation |
| CSI occupancy | 82.70% mean, 71% min, 91% max |
| Motion samples | 233/5 expected |
| Last free heap | 54,396 bytes (53.1 KiB) |
| Heap stability previous-window median | 54,308 bytes (53.0 KiB) |
| Heap stability final-window median | 54,310 bytes (53.0 KiB) |
| Heap stability change | +2 bytes, +0.00% |
| Minimum free heap | 30,483 bytes (29.8 KiB) |
| Last largest heap block | 43,008 bytes (42.0 KiB) |
| Runtime load | 11.92% mean |
| Loop average | 1487.29 us |
| Loop maximum | 9356 us |
| Detection samples | 274 |
| Detection average | 3883.71 us |
| Detection minimum | 26 us |
| Detection maximum | 6432 us |
与 Lightweight 相比,Native High Accuracy 的二进制与分区占用完全一致(因为只是运行时切换了检测器),但检测器成本显著上升:检测平均耗时从 882 µs 升至 3884 µs,最大单次检测 6432 µs,主循环均值从 977 µs 升至 1487 µs,运行时负载从 8.47% 升至 11.92%。这与 docs/performance/README.md 中的主机资源基准趋势一致——High Accuracy 是 ML 神经网络实现,单次推理成本高于特征融合的 Lightweight。即便如此,最小空闲堆仍保持 29.8 KiB,且堆稳定性变化为 +0.00%,说明运行时切换检测器没有引入额外泄漏。
ESPHome Lightweight
Result:PASS
| Metric | Value |
|---|---|
| Benchmark mode | runtime |
| Build duration | 54.4s |
| Flash duration | 25.5s |
| Monitor duration | 2m 34.4s |
| Firmware binary | 1,014,768 bytes (991.0 KiB) |
| Application partition used | 1,014,658 bytes (990.9 KiB) |
| Application partition free | 820,350 bytes (801.1 KiB) |
| Build RAM used | 133,500 bytes (130.4 KiB) |
| Verified detector | lightweight |
| Frontend setup final BSSID requested / applied / already associated / reassociation exercised / association verified | yes / yes /no/ yes / yes |
| Direct control attempts | 120/120 succeeded |
| Direct censored failures | 0 |
| Direct diagnostics samples | 60/60 expected |
| Status cadence | 1.00 s mean, 1.02 s max gap |
| Status gaps over tolerance | 0 |
| Device uptime restarts | 0 |
| Packet-rate samples | 60 |
| Packet rate | 85.60 pps mean, 72 min, 95 max, 6.59 standard deviation |
| CSI occupancy | 85.77% mean, 72% min, 96% max |
| Motion samples | 234/5 expected |
| Last free heap | 50,560 bytes (49.4 KiB) |
| Heap stability previous-window median | 50,468 bytes (49.3 KiB) |
| Heap stability final-window median | 50,474 bytes (49.3 KiB) |
| Heap stability change | +6 bytes, +0.01% |
| Minimum free heap | 25,908 bytes (25.3 KiB) |
| Last largest heap block | 34,816 bytes (34.0 KiB) |
| Runtime load | 10.81% mean |
| Loop average | 2174.86 us |
| Loop maximum | 136409 us |
| Detection samples | 254 |
| Detection average | 1883.57 us |
| Detection minimum | 26 us |
| Detection maximum | 9065 us |
ESPHome 固件比 Native 小约 200 KiB,且应用分区余量最高(44.7%)。ESPHome 场景的already associated为no,说明基准确实经历了从初始 AP 到目标 BSSID 的真实重关联切换。需要留意Loop maximum高达 136409 µs(约 136 ms),这是 ESPHome 组件模型下偶发的长尾主循环延迟,但它没有造成状态上报节拍超差(最大间隔仅 1.02 s,容差为 0 个超限间隙),也未引发重启。CSI 占用率 85.77% 是 C++ 前端中最高的,包速率均值 85.60 pps 也略高于 Native。
ESPHome High Accuracy
Result:PASS
| Metric | Value |
|---|---|
| Benchmark mode | runtime |
| Build duration | 54.4s |
| Flash duration | 25.5s |
| Monitor duration | 2m 34.4s |
| Firmware binary | 1,014,768 bytes (991.0 KiB) |
| Application partition used | 1,014,658 bytes (990.9 KiB) |
| Application partition free | 820,350 bytes (801.1 KiB) |
| Build RAM used | 133,500 bytes (130.4 KiB) |
| Verified detector | high_accuracy |
| Frontend setup final BSSID requested / applied / already associated / reassociation exercised / association verified | yes / yes / no / yes / yes |
| Direct control attempts | 120/120 succeeded |
| Direct censored failures | 0 |
| Direct diagnostics samples | 60/60 expected |
| Status cadence | 1.00 s mean, 1.02 s max gap |
| Status gaps over tolerance | 0 |
| Device uptime restarts | 0 |
| Packet-rate samples | 60 |
| Packet rate | 85.64 pps mean, 70 min, 94 max, 6.50 standard deviation |
| CSI occupancy | 85.68% mean, 71% min, 94% max |
| Motion samples | 234/5 expected |
| Last free heap | 46,979 bytes (45.9 KiB) |
| Heap stability previous-window median | 47,028 bytes (45.9 KiB) |
| Heap stability final-window median | 46,964 bytes (45.9 KiB) |
| Heap stability change | -64 bytes, -0.14% |
| Minimum free heap | 25,908 bytes (25.3 KiB) |
| Last largest heap block | 34,816 bytes (34.0 KiB) |
| Runtime load | 15.37% mean |
| Loop average | 3260.17 us |
| Loop maximum | 18273 us |
| Detection samples | 233 |
| Detection average | 3789.67 us |
| Detection minimum | 25 us |
| Detection maximum | 12776 us |
ESPHome High Accuracy 与 Lightweight 相比:检测平均耗时从 1884 µs 升至 3790 µs,运行时负载从 10.81% 升至 15.37%(五种组合中 C++ 前端最高),主循环均值从 2175 µs 升至 3260 µs。堆稳定性变化 -0.14%(-64 字节)仍在 5% 的下降阈值之内。二进制的 991.0 KiB 说明 ESPHome 的 High Accuracy 支持同样通过运行时切换实现,无需额外固件体积。
Micro-ESPectre Lightweight
Result:PASS
| Metric | Value |
|---|---|
| Benchmark mode | runtime |
| Deploy duration | 21.7s |
| Flash duration | 1m 8.0s |
| Monitor duration | 1m 36.2s |
| Firmware binary | 1,300,512 bytes (1270.0 KiB) |
| Deployed Python source | 169,086 bytes (165.1 KiB) |
| Application partition used | 1,239,072 bytes (1210.0 KiB) |
| Application partition free | 792,544 bytes (774.0 KiB) |
| Verified detector | lightweight |
| Direct control attempts | 28/28 succeeded |
| Direct censored failures | 0 |
| Status samples | 13/14 expected |
| Status cadence | 4.50 s mean, 5.01 s max gap |
| Status gaps over tolerance | 0 |
| Device uptime restarts | 0 |
| Packet-rate samples | 13 |
| Packet rate | 86.64 pps mean, 78 min, 95 max, 6.69 standard deviation |
| CSI occupancy | 87.00% mean, 79% min, 97% max |
| Motion samples | 235/5 expected |
| Last free heap | 99,119 bytes (96.8 KiB) |
| Heap stability previous-window median | 99,119 bytes (96.8 KiB) |
| Heap stability final-window median | 99,119 bytes (96.8 KiB) |
| Heap stability change | +0 bytes, +0.00% |
| Minimum free heap | 99,087 bytes (96.8 KiB) |
| Runtime load | 94.53% mean |
| Loop average | 3158.33 us |
| Loop maximum | 124893 us |
| Detection samples | 245 |
| Detection average | 2180.67 us |
| Detection minimum | 661 us |
| Detection maximum | 6878 us |
Micro-ESPectre 是五种组合中最特殊的一个:它是 MicroPython 运行时,通过deploy阶段部署 165.1 KiB 的 Python 源码,状态采样节拍为 4.50 秒(而非 C++ 前端的 1 秒),这是因为基准刻意避开了 Micro 每 1 秒刷新缓存诊断快照的量化步长——tools/lib/firmware_benchmark/settings.py 中MICRO_DIRECT_DIAGNOSTICS_INTERVAL_SECONDS = 4.5的注释明确说明“A half-second phase offset prevents adjacent 4 s/6 s snapshot deltas”,同时MICRO_RUNTIME_STATUS_GAP_TOLERANCE_MS = 1000放宽了间隙容差。94.53% 的运行时负载表明 ESP32-S2 上 MicroPython 解释器已接近满载,但检测平均耗时 2181 µs、最小空闲堆 96.8 KiB(得益于 MicroPython 的 GC 堆模型)、堆稳定性 0% 变化,证明它仍能稳定完成感知任务。Motion samples 235/5 意味着接收到的运动事件远超 5 次的通过底线。
关键指标的含义与基准打分逻辑
报告中的每个数字都由 tools/lib/firmware_benchmark/analysis.py 的analyze_direct_evidence()从 Direct 接口采样的诊断字段计算而来。理解以下核心指标的定义,是正确使用这份报告的前提:
- CSI 占用率(CSI occupancy):已接纳 CSI 时隙占全部时隙的比例,反映感知数据流的连续性。它的下限是 70% 的“detector-ready floor”,由 tools/lib/temporal_csi_sampler.py 中的
MINIMUM_COVERAGE_NUMERATOR = 7与MINIMUM_COVERAGE_DENOMINATOR = 10(即 7/10)换算而来。五种组合的均值(82.70%~87.00%)全部高于该下限。 - 包速率(Packet rate):平均约 83~87 pps,而报告设定的标称目标为 100 pps(
MINIMUM_BENCHMARK_CSI_TARGET_PPS = 100)。实际均值低于目标是因为 ESP32-S2 的 Wi-Fi 基带实际接纳率存在抖动,基准只要求“在运行时变更前报告 100 pps 目标”并在打分窗口内持续采样。 - 堆稳定性(Heap stability):从打分窗口开始 10 秒后(
STARTUP_GRACE_SECONDS = 10)计算两个完整且连续的 10 秒窗口(HEAP_STABILITY_WINDOW_SECONDS = 10)的自由堆中位数,最终窗口中位数相对前序窗口的下降不得超过 5%(HEAP_STABILITY_MAX_DECLINE_PERCENT = 5.0)。若监视时长不足以形成两个完整窗口,case 直接判 FAIL,不降级回退。五种组合的变化在 -0.14% 到 +0.01% 之间,全部通过。 - 运行时负载(Runtime load):来自固件性能诊断窗口(
performance_window_ready标志),报告取去重后的均值。C++ 前端为 8.47%~15.37%,MicroPython 为 94.53%。 - 检测耗时(Detection timing):
detection_samples、detection_avg_us等字段仅在检测窗口启用检测计时时上报;require_detection_timing通过标准要求计时数据必须存在。Lightweight 均值约 0.9~1.9 ms,High Accuracy 均值约 3.8~3.9 ms。 - 运动事件(Motion samples):通过 Direct SSE 事件流统计,通过标准要求至少收到 5 个(
MIN_MOTION_SAMPLES = 5)canonical 运动事件,五种组合分别收到 233~235 个。 - 状态节拍与间隙(Status cadence / gaps):C++ 前端以 1 秒为采样间隔、500 ms 间隙容差(
RUNTIME_STATUS_GAP_TOLERANCE_MS = 500);Micro 以 4.5 秒为间隔、1000 ms 容差。所有组合间隙超差数为 0。
通过标准(Pass Criteria)逐条解读
报告的## Pass Criteria一节是基准的可执行契约,由 tools/lib/firmware_benchmark/report.py 的render_report()依据参与 case 动态渲染。ESP32-S2 报告(无 Matter)要求:
- 所有必需的构建、烧录与部署阶段成功完成;
- Native、ESPHome、Micro-ESPectre 协商 Direct v1 协议,并在每个打分窗口内持续采样规范诊断字段;
- Native 与 ESPHome 使用 canonical 固件默认配置、烧录时清除全部设备数据、并通过 Improv Serial 完成配网(Micro-ESPectre 不支持 Improv Serial,只注入连通性配置,见 tools/README.md);
- Native 与 ESPHome 在运行时变更前上报 Lightweight 检测、配置的内部受管流量与 100 pps 目标;Native 保持未配置 MQTT;
- 感知前端通过 Direct SSE 至少收到 5 个 canonical 运动事件;
- 启动宽限后自由堆提供两个完整连续的 10 秒窗口,且最终窗口中位数较前一窗口下降不超过 5%;
- 打分窗口内设备 uptime 不重启;
- Direct 诊断节拍保持在运行时间隙容差内,感知前端的生产运动事件保持在线;
- 五种 runtime case 的 CSI 占用率均值不低于 70% 的 admitted-slot detector-ready 下限;
- 五种 runtime case 的检测计时数据必须存在;
- Direct 发送失败与意外拒绝连接计数(当前端暴露这些计数器时)不得增长;
- Micro-ESPectre 的运行时启动器在 Direct 采集全程保持活跃。
这些标准与 test/python/host/benchmark/ 下的test_benchmark_*.py行为测试共同构成基准契约的可执行约束,生成的性能报告本身只是单次运行的记录,不是契约的权威定义。
如何在 ESP32-S2 上复现这套基准
基准的入口是 tools/benchmark_firmware.py,它要求传入--chip(本芯片为s2)与--port(串口),并将这两个参数原样透传给仓库 CLI 委托的每条命令:
# 前置:复制实验室配置模板并填写 Wi-Fi 信息 # cp tools/benchmark_firmware.local.env.example tools/benchmark_firmware.local.env python tools/benchmark_firmware.py --chip s2 --port /dev/ttyACM0实验室配置从 tools/benchmark_firmware.local.env.example 复制为tools/benchmark_firmware.local.env,其中ESPECTRE_BENCHMARK_WIFI_SSID与ESPECTRE_BENCHMARK_WIFI_PASSWORD为必需项;设置ESPECTRE_BENCHMARK_WIFI_BSSID可演练目标 AP 的强制重关联,而单独设置ESPECTRE_BENCHMARK_WIFI_CHANNEL而不同时给出 BSSID 会在访问硬件前被拒绝(见 tools/lib/firmware_benchmark/settings.py 的require_benchmark_prerequisites())。以ESPECTRE_BENCHMARK_开头的导出环境变量优先于本地 env 文件。
针对 ESP32-S2 有两个必须注意的操作细节:
- USB CDC 下载模式:在交互式终端中,基准会在每次 ESP32-S2 C++ 烧录前暂停,等待操作员手动将板卡置于下载模式;Micro-ESPectre 烧录前同样需要手动准备,非交互式运行则要求设备提前就绪(见 tools/README.md)。
- Matter 自动省略:ESP32-S2 的 Matter case 不会执行,因为受支持的配网流程需要蓝牙。因此本次报告只含 Native、ESPHome、Micro-ESPectre 五个 case。
常用变体:
# 只跑 Micro 前端,并将每个打分窗口延长到 300 秒(堆浸泡测试),保留既有报告 case python tools/benchmark_firmware.py --chip s2 --port /dev/ttyACM0 --frontend micro --duration 300 --update # 保留已通过的 case,只重跑失败或缺失的 case python tools/benchmark_firmware.py --chip s2 --port /dev/ttyACM0 --resume运行过程中,报告在 Native、ESPHome 每个检测器完成后都会增量刷新到docs/performance/ESP32-S2.md,并同步写入data/untracked/firmware_benchmarks/<run-id>/下的结构化产物(归一化的 Direct 样本与事件、传输证据、固件哈希、运行清单)。某个 case 失败时基准会写出一份部分报告并立即停止在第一个失败 case;只有报告中所有 case 全部通过才返回成功。原始串口输出、Direct 载荷、凭据、配网数据与本地地址不会写入产物目录。
总结与延伸阅读
这份 ESP32-S2 报告的核心价值在于给出了同一芯片上五种前端/检测器组合的可对比资源画像:C++ 前端(Native/ESPHome)的运行时负载均低于 16%,Lightweight 检测平均耗时约 1 ms 级、High Accuracy 约 4 ms 级;Micro-ESPectre 以接近满载的 94.53% CPU 负载换来最高的 CSI 占用率与最宽松的堆余量,同时通过放宽诊断采样节拍适配其 1 秒缓存快照模型。所有组合都通过了 70% CSI 占用下限、5% 堆下降上限、5 个运动事件底线与零重启等全部通过标准。
如需进一步理解基准背后的检测器设计与性能报告体系,可继续阅读:
- docs/performance/README.md:聚合检测器重放指标(Recall、FP Rate、F1)与主机资源基准
- tools/README.md:固件基准契约的规范定义与全部 CLI 用法
- docs/ALGORITHMS.md:Lightweight 与 High Accuracy 检测器的完整设计
- tools/lib/firmware_benchmark/analysis.py:报告指标的底层计算逻辑
- test/python/host/benchmark/:基准契约的可执行行为测试
【免费下载链接】espectreWi-Fi CSI motion sensing for ESP32. C++ SDK, ESPHome, Native, and Matter frontends, browser tools, and a CLI for the full device lifecycle. GPLv3 and commercial licensing.项目地址: https://gitcode.com/GitHub_Trending/es/espectre
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考