WIFI信号状态信息 CSI 深度学习篇之CNN(Matlab)

本系列先前的博客中,从硬件配置开始,收集了Wifi信号数据并进行了一系列处理,最终将信号数据转化为图像数据,也即将信号识别问题转变为图像分类问题,从而能引入在图像处理领域已经非常成熟丰富的各类深度学习算法。

本博客是一篇新手导向的CNN处理CSI图像帧的教程,从前述教程中所得到的图像帧数据集为开始,进行图像分类任务的训练,适合没有多少代码基础的研究者。使用的平台为Matlab,借助其深度学习工具箱,可以做到不需要写一行代码也能进行简易的深度学习训练。

软件方面,需要新一点的Matlab版本,我所使用的为Matlab R2022a。

硬件方面,和大多数深度学习一样,显卡越新、显存越大越好,而台式又比笔记本好,同等配置台式显卡性能释放更好,具体要达到什么水平,视你所拥有的数据集复杂程度而言;我的数据集约有5万张图片,6GB RTX 2060的笔记本勉强也能跑,但是很耗时。

1、为Matlab安装Deep Learning Toolbox

参考下述博客:

Matlab 安装 Deep Learning Toolbox_matlab deep learning toolbox安装-CSDN博客

安装好后在命令行窗口键入:deepNetworkDesigner

会弹出初始选择网络结构的页面

f0026774b06b4ad18637797a378957f4.png

2、选择并微调预训练的CNN网络

在Matlab的深度网络设计器中,图像网络这一栏所列出的都是比较成熟、知名的图神经网络,理论上都可以用来训练你的数据集,但是不同网络效果差别会很大,可以挨个尝试一下。

b0a2511d73f64dfdad53edd46da79d8b.png

右下角的黄色感叹号,表示你还没有下载这些网络,使用前需要去Matlab官网下载。以GoogLeNet Network为例:

Deep Learning Toolbox Model for GoogLeNet Network - File Exchange - MATLAB Central (mathworks.cn)

e8d2661a5e884e1e87dfc309e0ee00d2.png下载好后把文件拖到Matlab右边的运行文件夹中,双击文件,就会弹出附加文件管理器。过程需要Matlab账号(不是刚需正版的意思,只需要有账号),安装会比较慢。

以Resnet-18为例,选择后页面如下所示:
0f21e1c830fa4f5db4913aa8a6ed12ff.png

这个深度网络设计器页面的左边,是组成神经网络的常见单元(输入、卷积、全连接等),中间是Resnet 18的网络结构,因为是选择既有的网络模型,所以就不需要自己从新开始架构。如果有自己改进的需要,就可以通过这个页面对神经网络的架构进行调整。这里我们就使用Resnet 18的原始结构,但是根据我们自己的数据集维度以及分类数量,还需要对原始网络的输入输出层进行调整。

例如,我的图像帧大小是500 x 90 x 1,分类数量为9,就需要把input层替换为新的(因为无法单独对既有网络单元进行编辑,只能删掉换新的),把输入图像尺寸换成所训练数据集的维度;同时,第一个卷积层也需要更新,因为这是预训练好的模型,已经有了权重,而我们的图像帧是黑白图像而不是彩色图像,只有单通道,为了让网络重新训练并适配我们的图像帧纬度,需要更新第一个卷积层以重置其权重:

56d6f6e979ae43e793f5609edb43903d.png

输出部分,需要替换最后一个全连接层以及最后的分类层,将全连接层的output size数量填写为目标分类数量,其他设置照搬原有设置就行;分类层只用替换,不需要修改设置,它会自动调整为契合全连接层的数量:

c49bddbe6673466790f074091faa18bb.png

修改好后如果不确定,可以点上边栏的“分析”,会对网络的合理性进行核对,如果有错误,就是网络有无法运行的问题,需要再修改。下图是核查无误的网络分析页面:

e1ded667eec54929ae349708b2f42ddd.png

3、导入数据集

在“设计器”中完成网络模型的调整后,接下来就是导入之前我们处理完毕的图像帧数据集。点击“数据”,点击左上角“导入图像数据”,弹出页面如下:

59835cd708de4159a90d1bba6d0056b6.png

数据源导入有两种方式,一种是使用matlab的数据库类型,需要你的工作区有加载好的数据库,一种是直接从文件夹导入,后者更加简单和直观(但是要求你的数据已经如前述教程,分门别类的放在不同的子文件夹中,如下图所示) ;选择数据集地址,增强选项可选可不选,个人认为对于信号图像数据,增强选项意义不大,自然图像猫猫狗狗什么的比较有用,也可以自己尝试;验证部分,设置从训练数据中拆分,免去了手动划分数据集,可以指定随机划分验证集的百分比,勾选随机化。设置完毕后,点击导入,Matlab会自动帮你处理所有数据集。

9933c92eda1b4e658802de669391da59.png

 导入成功后就是如下所示页面,识别到了所有类别的文件夹及其图像帧数量:

f4c1fc6fed054b788770e4a5d6a02e63.png

 4、配置深度学习训练

e6e826fe71eb43bcb86816b0694d8510.png

完成数据集导入后,点击“训练”,点击左上角“训练选项”,这一部分的配置就见仁见智,不同网络、不同数据集、不同任务所适用的训练参数可能都不一样,建议自己调试找找感觉再同步了解深度学习超参数调整的教程。Matlab给出的选项还是比较丰富的,基础的设置像求解器类型、学习率、训练频次、批次大小都有,升级一点的操作像学习率梯度递减也支持,对于新手已经很够用了,并且还是以图像化界面的方式,相比写代码操作难度直线下降。

这里对训练设置不逐项解释,都是深度学习训练常见的名词和设置,详细了解右转ChatGPT。本教程直接用默认配置训练。

 5、深度学习训练进程

完成训练配置后,点击左上角“训练”,便可开启训练进程,对此,Matlab给出了图像化的展示界面,可以实时观看网络在训练集和验证集上的表现。这个图象中,网络收敛进程就是正常的,右边显示训练时间和计划,由于我的笔记本性能很拉,训练得就慢。一个小tips,如果数据集量很大但是设备性能又有限,可以先摘取1/5或1/10跑着试试看,用于选取网络或者超参数调整。
fc4a0c12b0064de3952987a59d76408c.png

训练完成后,可以点击左上角“导出”,保存网络结构、训练好的模型等。

 

 

 

相关推荐

  1. HTTP状态信息

    2024-07-11 11:12:06       37 阅读
  2. 信号状态类型

    2024-07-11 11:12:06       44 阅读
  3. MQ5CCI交叉信号

    2024-07-11 11:12:06       27 阅读
  4. WiFi7: 使用Multi-Link Element告知ML信息概述

    2024-07-11 11:12:06       56 阅读
  5. Flutter开发一个Wifi信号测量应用

    2024-07-11 11:12:06       58 阅读
  6. 网络安全学习信息泄露

    2024-07-11 11:12:06       63 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-11 11:12:06       66 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-11 11:12:06       70 阅读
  3. 在Django里面运行非项目文件

    2024-07-11 11:12:06       57 阅读
  4. Python语言-面向对象

    2024-07-11 11:12:06       68 阅读

热门阅读

  1. 【通信原理】matlab中pskmod的介绍

    2024-07-11 11:12:06       17 阅读
  2. Perl词法分析:构建编程语言解析器的指南

    2024-07-11 11:12:06       24 阅读
  3. Elasticsearch 搜索模板:重用和共享查询

    2024-07-11 11:12:06       25 阅读
  4. Spring Boot 自动装配原理

    2024-07-11 11:12:06       17 阅读
  5. JWT重放漏洞攻防策略

    2024-07-11 11:12:06       22 阅读
  6. QT跨平台开发(windows、mac)中.pro文件设置

    2024-07-11 11:12:06       19 阅读
  7. thinkphp:数据库复合查询-OR的使用

    2024-07-11 11:12:06       19 阅读
  8. 32. 小批量梯度下降法(Mini-batch Gradient Descent)

    2024-07-11 11:12:06       23 阅读
  9. MySQL相关函数

    2024-07-11 11:12:06       19 阅读
  10. 编程语言ju:探索、挑战与未来趋势

    2024-07-11 11:12:06       23 阅读
  11. 相机光学(三十一)——暗房设置的要求

    2024-07-11 11:12:06       26 阅读