基于深度学习的WiFi信道状态信息(CSI)活动与位置识别系统,使用改进的ResNet架构实现高精度的人体活动和位置同时识别。
本项目利用WiFi信号的信道状态信息(CSI)数据,通过深度学习方法同时识别人体活动类型和所处位置。系统具有以下特点:
- 支持多种损失函数(原始损失、交叉损失、焦点损失)
- 可处理多天线数据,并支持注意力机制
- 基于改进的ResNet架构,针对CSI数据特性进行优化
- 支持载波数量归一化处理
- Python 3.6+
- PyTorch 1.7+
- NumPy
- SciPy
- Matplotlib (用于可视化)
dataset/
├── normalized/ # 归一化后的数据
├── testset.mat # 测试集
└── trainset.mat # 训练集
项目包含多个模型实现:
- FlexibleResNet: 主要模型,基于ResNet架构的改进版本
- 支持BasicBlock构建块
- 支持多天线数据的注意力机制
python main.py --batch-size 64 --num-epochs 200 --lr 3e-4 --dataset dataset --device cuda
--batch-size
: 训练批量大小 (默认: 64)--num-epochs
: 训练轮数 (默认: 200)--lr
: 学习率 (默认: 3e-4)--dataset
: 数据集路径 (默认: 'dataset')--device
: 使用设备 (默认: 'cuda')--checkpoint-dir
: 模型保存路径 (默认: 'checkpoints')--loss-type
: 损失函数类型 ['origin', 'cross', 'focal'] (默认: 'origin')--classes-act
: 活动类别数量 (默认: 6)--classes-loc
: 位置类别数量 (默认: 16)--target-carriers
: 归一化到的目标载波数量 (默认: 52)--use-attention
: 是否使用注意力机制 (默认: False)
.
├── main.py # 主程序入口
├── main_set.py # 主要设置和配置
├── models/ # 模型定义
│ ├── apl_modif.py # 主要使用的模型
│ └── ... # 其他模型变体
└── utils/ # 工具函数
├── __init__.py
├── LRScheduler.py # 学习率调度器
└── dataset_utils.py # 数据集处理工具
系统会同时训练活动识别和位置识别两个任务,并在测试集上评估性能。训练过程中会保存性能最佳的模型。
- 活动识别准确率
- 位置识别准确率