# CSI **Repository Path**: s1jeai/csi ## Basic Information - **Project Name**: CSI - **Description**: 本科毕业设计-基于Wi-Fi信道状态信息的无感式隐私交互系统设计 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-03-21 - **Last Updated**: 2026-05-17 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # ESP-CSI 本项目是基于 PyQt 构建的 ESP-CSI 上位机,核心目标是连接设备并采集 CSI(Channel State Information)数据,为后续的数据分析、处理与可视化提供基础支撑。 ## 目录 - [项目结构](#项目结构) - [开发环境](#开发环境) - [安装相关库](#安装相关库) - [相关库及版本](#相关库及版本) - [AI 开发要求](#ai-开发要求) - [编程语言与开发环境要求](#编程语言与开发环境要求) - [代码提交与 Git 授权要求](#代码提交与-git-授权要求) - [AI 对话记录要求](#ai-对话记录要求) ## 项目结构 本节仅用于展示远程 `csi` 仓库中已经提交并可追溯的文件与文件夹结构。 - 本地存在但尚未提交到远程仓库的文件,不需要加入本节。 - 只有文件已经提交并推送到远程 `csi` 仓库后,才需要同步更新以下树形结构与文件说明。 - 日志目录在项目结构中只展示远程仓库内按日期排序最新的三条日志文件。 - 展示出来的每条日志文件都需要用一句话精简说明当天完成的主要任务。 - 如果某个日志目录下的已提交日志超过三条,其余日志使用 `...` 省略展示。 ```text csi/ ├── .gitignore # 忽略本地 reference、运行期日志与 Python 缓存 ├── README.md # 项目说明、开发约束与远程仓库结构文档 ├── class_config.py # 共享手势分类数量配置,训练侧与运行期统一读取当前类别数 ├── conda_env_requirements.txt # 根目录一键安装依赖清单,用于在 esp-csi conda 环境中安装项目相关库 ├── esp_csi_tool/ │ ├── .gitignore # 忽略 Python 缓存文件 │ ├── config/ │ │ └── collect_options.json # 采集页 target 与 movement 的 JSON 配置映射 │ ├── esp_csi_tool.py # 上位机程序入口 │ ├── model_input_config.py # 共享模型输入尺度配置,训练侧与上位机侧统一从这里切换窗口规格 │ ├── core/ │ │ ├── __init__.py # 核心业务层包声明 │ │ ├── constants.py # 共享常量、路径和 CSI 处理基础配置 │ │ ├── csi_processing.py # CSI 解码、滚动缓冲区与 raw 同款滤波逻辑 │ │ └── utils.py # Base64 解码、目录创建和 CSV 写入工具 │ ├── drivers/ │ │ ├── __init__.py # 驱动层包声明 │ │ ├── serial_backend.py # 串口驱动层、子进程通信与运行期数据落盘 │ │ └── speech.py # 基于 edge-tts 的中文语音播报驱动,负责异步播放采集完成提示 │ ├── model/ │ │ ├── __init__.py # LSTM 运行期推理模块导出 │ │ ├── best_model.pt # 当前上位机默认自动识别模型,当前版本对应 latest same_session 训练产物,实测整体很好但 Right/Clap 相对不稳 │ │ └── lstm_runtime.py # checkpoint 加载、滤波/基线校正、标准化和滑窗推理逻辑 │ └── ui/ │ ├── __init__.py # 界面层包声明 │ ├── inference_worker.py # 自动识别后台线程,负责连续 CSI 滑窗推理 │ ├── inference_worker_v2.py # 自动识别后台线程第二版,负责动作门控、滑窗计数、概率阈值与冻结帧判定 │ ├── main_window.py # 主窗口编排层,负责界面交互与业务调度 │ ├── plot_controller.py # CSI 曲线绘制与关键帧标记控制 │ ├── ui_worker.py # UI 线程桥接层,负责事件转信号并转发实时 CSI 原始帧 │ ├── generated/ │ │ ├── __init__.py # 生成代码包声明 │ │ └── Ui_esp_csi_tool_gui.py # 由 .ui 生成的 PyQt 界面绑定代码 │ └── resources/ │ └── esp_csi_tool_gui.ui # PyQt 界面设计文件 ├── recognition/ │ ├── lstm/ │ │ ├── dataset.py # session 感知的数据发现、动态类别映射、same/cross-session 切分与标准化 │ │ ├── model.py # 参考 GUI 版 CSILSTM 结构实现的 LSTM 分类模型 │ │ ├── predict.py # 单文件推理与批量验证入口 │ │ ├── README.md # LSTM 分类项目使用说明 │ │ ├── requirements.txt # LSTM 项目依赖清单 │ │ ├── setup_env.ps1 # 在 esp-csi 环境中安装/更新 LSTM 依赖并记录环境日志 │ │ ├── train.py # same/cross-session、leave-one-session-out、group k-fold 训练与聚合评估入口 │ │ └── utils.py # 训练、评估、工件保存的通用工具 │ └── show/ │ ├── app.py # 多 session 多类别 5x6 图表浏览器启动入口 │ ├── loader.py # 数据根目录、session、类别发现与样本 CSV 解析 │ ├── matplotlib_viewer.py # 旧版 matplotlib 单 session 浏览原型,当前默认入口不再使用 │ ├── multi_session_viewer.py # 基于 matplotlib 的轻量多 session 样本浏览界面 │ ├── README.md # recognition/show 的使用说明 │ └── viewer.py # 早期 PyQt 原型界面,当前启动入口已切换到 matplotlib 版本 └── log/ ├── log_ai/ │ ├── 2026-04-23.md # 恢复实时识别到 a755a07 的旧滑窗方案,并删除同类语音播报去重逻辑 │ ├── 2026-04-20.md # 为 esp_csi_tool 与 recognition/lstm 补充中文注释,并同步当前代码、日志与 collect_options.json │ ├── 2026-04-19.md # 切换模型输入尺度到 [110,104],确认标准化仍生效,并加入实时识别动作门控 │ └── ... └── log_env/ ├── 2026-04-12.md # 记录 esp-csi 环境新增 edge-tts 及其相关依赖,用于采集完成中文语音播报 └── 2026-03-22.md # 记录 esp-csi 环境新增 torch、scikit-learn、tqdm、matplotlib 及 LSTM 项目依赖安装结果 ``` ## 开发环境 - conda : Miniconda3-py310_25.11.1-1 - ESP-IDF : v6.0.0 - VS Code ESP-IDF 插件 : v1.10.2 ## 安装相关库 项目根目录提供了 `conda_env_requirements.txt`,用于在 `esp-csi` conda 环境中安装上位机、语音播报、CSI 处理和 LSTM 训练所需的主要 Python 库。 首次配置环境时,在项目根目录执行下面这一行 PowerShell 命令: ```powershell conda create -n esp-csi python=3.10 -y; conda run -n esp-csi python -m pip install --upgrade pip; conda run -n esp-csi python -m pip install -r conda_env_requirements.txt ``` 如果 `esp-csi` 环境已经存在,只需要执行: ```powershell conda run -n esp-csi python -m pip install --upgrade pip conda run -n esp-csi python -m pip install -r conda_env_requirements.txt ``` 当前依赖清单默认安装 CUDA 12.1 版 `torch==2.5.1+cu121`。如果电脑没有 NVIDIA CUDA 环境,可先把 `conda_env_requirements.txt` 中的 `--extra-index-url` 改为 `https://download.pytorch.org/whl/cpu`,再把 `torch==2.5.1+cu121` 改为 `torch==2.5.1+cpu`,然后重新执行安装命令。 ## 相关库及版本 以下版本信息于 `2026-04-12` 从 conda 虚拟环境 `esp-csi` 自动读取,标准库不单独展示。 - Python : 3.10.19 - PyQt5 : 5.15.9 - Qt : 5.15.2 - pyqtgraph : 0.14.0 - pyserial : 3.5 - edge-tts : 7.2.8 - torch : 2.5.1+cu121 - numpy : 2.2.6 - pandas : 2.3.3 - scikit-learn : 1.7.2 - scipy : 1.15.3 - tqdm : 4.67.3 - matplotlib : 3.10.8 ## AI 开发要求 ### 编程语言与开发环境要求 - 项目编程语言为 Python。 - 项目虚拟环境统一使用 conda,环境名称固定为 `esp-csi`。 - 开发、调试、运行、安装依赖、卸载依赖、升级依赖、降级依赖以及所有库版本调整时,均必须自动切换并严格限定在 `esp-csi` 虚拟环境内进行。 - 绝不允许在其他 Python 环境、系统环境或临时环境中构建本项目,避免环境漂移影响后续复现。 - 凡是 `esp-csi` 虚拟环境中新增库、删除库或变更库版本,均必须同步记录到 `./log/log_env` 文件夹下,并按日期创建对应的 Markdown 日志文件,命名建议为 `YYYY-MM-DD.md`。 - 环境日志应至少记录变更日期、执行原因、增删改的库名称、对应版本以及必要的复现说明,以便后续环境重建与问题追溯。 - 按日期保存的环境日志需要补充“当日主要完成内容总结”,概括当天环境变更与相关处理结果。 - 后续环境日志统一使用中文说明;命令、路径、库名、版本号等技术标识可保留英文或代码格式。 - `README.md` 中的目录索引需要随着章节结构变化自动更新。 - `README.md` 中展示的相关库及版本需要随着 `esp-csi` 虚拟环境中的依赖变化自动更新,并与 `./log/log_env` 中的记录保持一致。 - 后续涉及 PyQt 界面结构调整时,必须先修改 `esp_csi_tool/ui/resources/esp_csi_tool_gui.ui`,再重新生成 `esp_csi_tool/ui/generated/Ui_esp_csi_tool_gui.py`,禁止只改生成文件导致两者失同步。 ### 代码提交与 Git 授权要求 - 每次代码编写、修改、重构、修复、文档更新或日志更新完成后,均需要执行 Git 提交,并同步推送到 Gitee 远端 `csi` 仓库。 - 当前仓库明确授予 AI 完整 Git 操作授权,用于处理本仓库开发维护所需的常规 Git 操作。 - 上述授权包括但不限于 `git add`、`git commit`、`git push`、`git pull`、`git fetch`、`git remote`、`git status`、`git log` 等与本仓库协作直接相关的操作。 - 后续在本仓库内进行本地提交与推送到远程 `csi` 仓库时,无需再次单独征求用户确认。 - 提交说明可由 AI 根据本次改动内容自主编写,要求准确、简洁、可追踪。 - 远端仓库默认指向 Gitee `csi` 仓库;若未特别说明,默认推送目标为 `origin/master`。 - 提交内容应与本次改动保持一致,确保版本历史可追踪、可回滚、可审计。 - `reference/` 文件夹及其内容仅作为本地参考资料保留;除非用户特别说明,后续默认不上传到远程 `csi` 仓库。 ### AI 对话记录要求 - 每次对话记录均需要保存在 `./log/log_ai` 文件夹下,并按日期创建对应的 Markdown 日志文件,命名建议为 `YYYY-MM-DD.md`。 - 对话日志应至少包含本次需求、执行内容、关键结论以及必要的后续说明,方便项目协作与过程复盘。 - 按日期保存的 AI 对话日志需要补充“当日主要完成内容总结”,概括该日期内的主要完成事项与最终结果。 - 后续 AI 对话日志统一使用中文说明;文件路径、命令、指标名、模型名等必要技术内容可保留英文或代码格式。