admin 管理员组文章数量: 887020
本系列先前的博客中,从硬件配置开始,收集了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
会弹出初始选择网络结构的页面
2、选择并微调预训练的CNN网络
在Matlab的深度网络设计器中,图像网络这一栏所列出的都是比较成熟、知名的图神经网络,理论上都可以用来训练你的数据集,但是不同网络效果差别会很大,可以挨个尝试一下。
右下角的黄色感叹号,表示你还没有下载这些网络,使用前需要去Matlab官网下载。以GoogLeNet Network为例:
Deep Learning Toolbox Model for GoogLeNet Network - File Exchange - MATLAB Central (mathworks)
下载好后把文件拖到Matlab右边的运行文件夹中,双击文件,就会弹出附加文件管理器。过程需要Matlab账号(不是刚需正版的意思,只需要有账号),安装会比较慢。
以Resnet-18为例,选择后页面如下所示:
这个深度网络设计器页面的左边,是组成神经网络的常见单元(输入、卷积、全连接等),中间是Resnet 18的网络结构,因为是选择既有的网络模型,所以就不需要自己从新开始架构。如果有自己改进的需要,就可以通过这个页面对神经网络的架构进行调整。这里我们就使用Resnet 18的原始结构,但是根据我们自己的数据集维度以及分类数量,还需要对原始网络的输入输出层进行调整。
例如,我的图像帧大小是500 x 90 x 1,分类数量为9,就需要把input层替换为新的(因为无法单独对既有网络单元进行编辑,只能删掉换新的),把输入图像尺寸换成所训练数据集的维度;同时,第一个卷积层也需要更新,因为这是预训练好的模型,已经有了权重,而我们的图像帧是黑白图像而不是彩色图像,只有单通道,为了让网络重新训练并适配我们的图像帧纬度,需要更新第一个卷积层以重置其权重:
输出部分,需要替换最后一个全连接层以及最后的分类层,将全连接层的output size数量填写为目标分类数量,其他设置照搬原有设置就行;分类层只用替换,不需要修改设置,它会自动调整为契合全连接层的数量:
修改好后如果不确定,可以点上边栏的“分析”,会对网络的合理性进行核对,如果有错误,就是网络有无法运行的问题,需要再修改。下图是核查无误的网络分析页面:
3、导入数据集
在“设计器”中完成网络模型的调整后,接下来就是导入之前我们处理完毕的图像帧数据集。点击“数据”,点击左上角“导入图像数据”,弹出页面如下:
数据源导入有两种方式,一种是使用matlab的数据库类型,需要你的工作区有加载好的数据库,一种是直接从文件夹导入,后者更加简单和直观(但是要求你的数据已经如前述教程,分门别类的放在不同的子文件夹中,如下图所示) ;选择数据集地址,增强选项可选可不选,个人认为对于信号图像数据,增强选项意义不大,自然图像猫猫狗狗什么的比较有用,也可以自己尝试;验证部分,设置从训练数据中拆分,免去了手动划分数据集,可以指定随机划分验证集的百分比,勾选随机化。设置完毕后,点击导入,Matlab会自动帮你处理所有数据集。
导入成功后就是如下所示页面,识别到了所有类别的文件夹及其图像帧数量:
4、配置深度学习训练
完成数据集导入后,点击“训练”,点击左上角“训练选项”,这一部分的配置就见仁见智,不同网络、不同数据集、不同任务所适用的训练参数可能都不一样,建议自己调试找找感觉再同步了解深度学习超参数调整的教程。Matlab给出的选项还是比较丰富的,基础的设置像求解器类型、学习率、训练频次、批次大小都有,升级一点的操作像学习率梯度递减也支持,对于新手已经很够用了,并且还是以图像化界面的方式,相比写代码操作难度直线下降。
这里对训练设置不逐项解释,都是深度学习训练常见的名词和设置,详细了解右转ChatGPT。本教程直接用默认配置训练。
5、深度学习训练进程
完成训练配置后,点击左上角“训练”,便可开启训练进程,对此,Matlab给出了图像化的展示界面,可以实时观看网络在训练集和验证集上的表现。这个图象中,网络收敛进程就是正常的,右边显示训练时间和计划,由于我的笔记本性能很拉,训练得就慢。一个小tips,如果数据集量很大但是设备性能又有限,可以先摘取1/5或1/10跑着试试看,用于选取网络或者超参数调整。
训练完成后,可以点击左上角“导出”,保存网络结构、训练好的模型等。
版权声明:本文标题:WIFI信号状态信息 CSI 深度学习篇之CNN(Matlab) 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.freenas.com.cn/jishu/1729030137h1309026.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论