CNN网络训练WISDM数据集:模型仿真及可视化分析

卷积神经网络(CNN)因其强大的特征提取能力和深度学习架构而备受推崇,CNN在处理图像数据时展现出的卓越性能,使其成为解决各种视觉识别任务的首选工具。WISDM数据集是一个广泛用于运动估计研究的基准数据集,它包含了多个视频序列,每个序列都记录了摄像头在不同方向上移动时捕捉到的图像。在本研究中,我们将探讨如何利用CNN来训练和优化WISDM数据集,以提高运动估计的准确性和鲁棒性。

一、WISDM数据集分析及介绍

WISDM数据集是一个用于人类活动识别(Human Activity Recognition, HAR)的公共数据集。它包含了从智能手机和智能手表收集的传感器数据,这些数据被用来识别多种不同的人类活动:

  1. 数据集来源与构成

    • WISDM数据集由福特汉姆大学计算机与信息科学系的Gary Weiss博士领导的团队创建。
    • 数据集包含了51名参与者进行的18种不同的活动,每种活动的数据都是通过佩戴在身体不同部位的智能手机和智能手表上的加速度计和陀螺仪以20Hz的频率收集得到的。
  2. 数据集特点

    • 数据集中的活动包括但不限于走路、跑步、上下楼梯、坐、站等。
    • 每个活动的数据长度为3分钟,为研究者提供了充足的时间序列数据进行分析。
  3. 数据集的应用

    • WISDM数据集适用于开发和测试各种HAR模型,尤其是基于深度学习的模型,如卷积神经网络(CNN)。

二、CNN网络结构及介绍

卷积神经网络是一种专门用来处理具有类似网格结构的数据的神经网络,如图像。CNN在图像识别、视频分析和自然语言处理等领域取得了巨大的成功。

核心思想:

· 局部感受野(Local Receptive Field) :通过卷积层提取局部特征,使得网络能够捕捉到图像的局部信息。

· 权重共享(Weight Sharing) :卷积核在整个输入数据上移动并应用相同的权重,大大减少了模型的参数数量。

· 池化层(Pooling Layer) :通过降采样操作减少数据的空间大小,减少计算量,同时保持特征的不变性。

优点:

· 能够有效地处理图像等高维数据。

· 通过局部感受野和权重共享减少了参数数量,降低了过拟合的风险。

缺点:

· 对于时间序列数据的处理能力有限。

· 对于非常深的网络结构,训练可能会变得困难。

网络结构:

image.png

  1. 输入层(Input Layer):网络的入口,通常接收原始图像数据。

  2. 卷积层(Convolutional Layer):执行卷积运算,使用可学习的过滤器(或称为卷积核)在输入图像上滑动以产生特征图(feature maps)。这些特征图能够捕捉输入数据中的局部特征,如边缘、角点等。

  3. 激活函数层(Activation Function Layer):通常使用ReLU(Rectified Linear Unit)作为激活函数,引入非线性,增强网络的表达能力。

  4. 池化层(Pooling Layer):进行下采样操作,减少特征图的空间尺寸,从而降低计算复杂性并保持重要特征。最大池化(Max Pooling)是常见的池化操作。

  5. 全连接层(Fully Connected Layer, FC):在网络的末端,将卷积层和池化层提取的特征映射平铺成一维向量,并进行分类或回归任务。

  6. 输出层(Output Layer):产生最终的输出,如分类任务中每个类别的概率。

除了这些基本层,根据应用场景的不同CNN还可以有这几种网络结构:

  • 归一化层(Normalization Layer):如批量归一化(Batch Normalization),用于提高训练稳定性和速度。

  • 残差连接(Residual Connections):帮助训练更深的网络,通过跳跃连接解决梯度消失问题。

  • Dropout层:随机丢弃一部分神经元的输出,用于减少过拟合。

三、WISDM数据集分割及处理

WISDM数据集下载链接:https://www.cis.fordham.edu/wisdm/includes/datasets/latest/WISDM_ar_latest.tar.gz

加载、预处理和准备WISDM数据集,以便用于人类活动识别(HAR)任务:

  1. 参数设定
    • dataset_dir: 指定原始数据存放的目录。
    • WINDOW_SIZE: 定义滑窗的大小。
    • OVERLAP_RATE: 定义滑窗的重叠率。
    • SPLIT_RATE: 定义训练集和验证集的分割比例。
    • VALIDATION_SUBJECTS: 定义留一法验证时使用的特定主题(subject)集合。
    • Z_SCORE: 决定是否进行标准化处理。
    • SAVE_PATH: 定义预处理后数据保存的路径。
def WISDM(dataset_dir='./WISDM_ar_v1.1', WINDOW_SIZE=200, OVERLAP_RATE=0.5, SPLIT_RATE=(8, 2), VALIDATION_SUBJECTS={}, Z_SCORE=True, SAVE_PATH=os.path.abspath('D:/PycharmProjects/xyp-task')):
  1. 数据集下载
  • 使用download_dataset函数,从福特汉姆大学提供的URL下载WISDM数据集,并将其存储在dataset_dir指定的目录中。
download_dataset(
    dataset_name='WISDM',
    file_url='https://www.cis.fordham.edu/wisdm/includes/datasets/latest/WISDM_ar_latest.tar.gz', 
    dataset_dir=dataset_dir
)
  1. 数据清洗与读取
  • 从指定路径的文本文件中读取原始数据,该文件包含了多个以逗号分隔的条目。
  • 清洗数据,移除不完整的条目,确保每行数据都包含参与者ID、活动标签和三个传感器信号。
  • 将清洗后的数据转换为NumPy数组,便于后续处理。
  1. 标签编码
  • 使用category_dict字典,将活动标签的字符串表示(如’Walking’、'Jogging’等)映射为整数ID,以便于机器学习模型处理。
  1. 滑窗处理
  • 对清洗并编码后的数据应用滑窗分割,生成固定大小的样本窗口。这些窗口将用于训练和测试机器学习模型。
  1. 分割数据集
  • 根据是否提供了VALIDATION_SUBJECTS,选择留一法或平均法来分割数据集。留一法是为每个参与者ID分别创建训练集和测试集,而平均法则是按照SPLIT_RATE比例分割数据。
  1. 数据整合
  • 将分割后的数据和标签分别整合到xtrainxtestytrainytest列表中,这些列表将包含所有训练和测试数据。
  1. 标准化处理
  • 如果Z_SCORE参数为True,则对整合后的xtrainxtest进行Z分数标准化处理,以消除不同传感器信号量级的影响。
  1. 数据保存
  • 如果提供了SAVE_PATH,则使用save_npy_data函数将预处理后的训练集和测试集数据保存为.npy格式的文件,这有助于后续加载和使用数据。

准备WISDM数据集,使其适合用于CNN网络模型的训练和测试。通过滑窗处理,可以将原始的长时间序列传感器数据转换为固定大小的短时间序列数据,这有助于训练卷积神经网络等模型进行人类活动识别。此外,通过留一法或平均法分割数据集,可以为模型提供训练集和验证集,以评估模型性能。最后,通过Z分数标准化,可以提高模型对数据分布变化的鲁棒性。

四、CNN网络训练WISDM数据集

1.常用的仿真指标

1.1 准确率 (Accuracy)

准确率是所有正确预测样本数占总样本数的比例。它是最直观的性能指标,计算公式如下:

image.png

1.2 精确率 (Precision)

精确率是所有预测为正类中真正为正类的比例,它关注的是预测为正类的结果的准确性。计算公式如下:

image.png

1.3 召回率 (Recall)

召回率是所有实际为正类中被正确预测为正类的比例,它衡量的是模型捕捉正类样本的能力。计算公式如下:

image.png

1.4 F1分数 (F1-Score)

F1分数是精确率和召回率的调和平均值,它在两者之间取得平衡,是评价分类模型性能的一个重要指标。计算公式如下:

image.png

1.5 参数量 (Parameters)

参数量指的是网络模型中需要训练的参数总数。参数量越多,模型的容量越大,但也越容易过拟合。

1.6 推理时间 (Inference Time)

推理时间指的是模型对数据进行预测的时间。它可以是单个样本的推理时间,也可以是整个数据集推理所需的总时间。推理时间是评估模型在实际应用中效率的重要指标,尤其是在需要实时响应的应用场景中。

2.具体的训练过程

image.png

1.数据集加载

根据选择的数据集和模型,加载数据集,并进行必要的预处理。

2.模型实例化

根据选择的模型,实例化一个模型对象,并将其移动到选定的设备上。

3.创建数据加载器

使用DataLoader创建训练和测试数据的加载器,允许在训练中以小批量方式加载数据。

4.优化器和学习率调度器设置

定义了AdamW优化器和学习率调度器,用于在训练过程中更新模型参数和调整学习率。

5.混合精度训练设置

实例化GradScaler对象,用于在训练中使用混合精度,可以提高训练效率和精度。

6.训练循环

对于每个训练轮次,执行以下步骤:

  • 设置模型为训练模式。
  • 在每个小批量数据上执行前向传播、计算损失、执行反向传播并更新模型参数。
  • 学习率调度器步进。
  • 设置模型为评估模式。
  • 在测试集上进行预测,并计算模型的准确率、精确率、召回率和F1分数。
  • 打印每个轮次的训练损失、测试准确率和其他评估指标。
for i in range(EP):
    net.train()
    inference_start_time = time.time()
    for data, label in train_loader:
        data, label = data.to(device), label.to(device)
        # 前向过程(model + loss)开启 autocast,混合精度训练
        with autocast():
            out = net(data)
            loss = loss_fn(out, label)

        optimizer.zero_grad()  # 梯度清零
        scaler.scale(loss).backward()  # 梯度放大
        scaler.step(optimizer)  # unscale梯度值
        scaler.update()
    lr_sch.step()

3.结果展示

在每个训练轮次结束时,打印出当前轮次的训练信息和模型评估指标。

image.png
从训练结果中可以看出,基于CNN网络训练得到的以上六种指标数据分别为:

CNN0.97290.97340.97290.97325283900.0008 0.7563

五、可视化维度分析

将CNN网络训练WISDM数据集的结果进行可视化维度分析:

image.png

1.混淆矩阵图

混淆矩阵是一个N×N的矩阵,N代表的是你的分类标签个数。混淆矩阵的横纵坐标轴分别为模型预测值和真实值,在图中纵轴是真实值而横轴代表模型预测值。

image.png

2.雷达图

雷达图可以反映多个行为的某个指标值映射在坐标轴上,可以更直观的观察出每个行为的指标值大小。

image.png

3.准确率和损失率的收敛曲线图

准确率和损失率的收敛曲线图横坐标是训练轮次,纵坐标是模型的准确率以及损失率,这个图可以直观的看出你的模型在训练以及测试过程中的准确率和损失率走向和模型收敛以后的准确率的数值范围,也可以反映出你的模型在训练过程中是否稳定。

image.png

4.仿真指标柱状图

仿真指标柱状图是一种以长方形的长度为变量来表示各个行为的指标值,例如可以表示你的模型在WISDM数据集中的每个行为精确率的值,通过由一系列高度不等的纵向条纹表示数据分布的情况。

image.png

5.仿真指标折线图

仿真指标折线图是一种用来表示超参数设置大小对模型效果影响的可视化方式,可以表示我们的CNN网络模型在WISDM数据集中Batch size对加权F1分数的影响。

image.png

六、总结

在本研究中,我们深入探讨了卷积神经网络(CNN)在处理WISDM数据集时的应用,该数据集是一个用于人类活动识别(HAR)的公共数据集。通过一系列数据处理步骤,我们将原始的长时间序列传感器数据转换为适合CNN模型训练的固定大小的短时间序列数据。此外,我们还介绍了CNN的核心思想、优点、缺点以及基本的网络结构,并通过可视化方法对训练结果进行了全面的分析。
通过本研究,我们证明了CNN在处理时间序列数据和人类活动识别任务中的有效性。未来的工作可以探索更先进的网络结构和训练策略,以进一步提高模型的性能和应用范围。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/883034.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

14年408-计算机网络

第一题: 解析:OSI体系结构 OSI由下至上依次是:物理层-网络链路层-网络层-运输层-会话层-表示层-应用层。 因此直接为会话层提供服务的是运输层。答案选C 第二题: 解析:数据链路层-交换机的自学习和帧转发 主机a1向交换…

关于养育孩子的一点想法

我们许多人总是很看重结果,不重视过程,在工作中有时候确实会这样,但这种想法会经常蔓延到生活中,比如养育孩子,我们总有一个目标,希望他成才,实现某种理想,弥补你人生中的某种缺憾&a…

开通微信视频号直播的流程

首先我们要了解什么是视频号? 视频号其实就是腾讯家的“抖音”/“快手”,可以发布视频和直播(包括直播带货)。 微信视频号不同于订阅号、服务号,它是一个全新的内容记录与创作平台,也是一个了解他人、了解…

AIGC专栏15——CogVideoX-Fun详解 支持图文生视频 拓展CogVideoX到256~1024任意分辨率生成

AIGC专栏15——CogVideoX-Fun详解 支持图&文生视频 拓展CogVideoX到256~1024任意分辨率生成 学习前言项目特点生成效果相关地址汇总源码下载地址 CogVideoX-Fun详解技术储备Diffusion Transformer (DiT)Stable Diffusion 3EasyAnimate-I2V 算法细节算法组成InPa…

计算机出现msvcp140.dll丢失的6种解决方法,亲测有效

在计算机使用过程中,我们经常会遇到一些错误提示,其中之一就是“msvcp140.dll丢失”。这个错误通常会导致某些应用程序无法正常运行,给用户带来困扰。本文将总结6种解决msvcp140.dll丢失的方法,帮助大家轻松解决这个问题。 一&…

随机梯度下降的学习

梯度下降(Gradient-Descent) 在机器学习的旅途中,不可避免需要与它打交道,那么该如何初步理解它的用途呢? 好的,想象你在一个山谷中,想要找到最低点(山谷的底部)。你现…

如何使用 Bittly 为基于 HTTP 的 API 快速创建 UI 操作界面

在开发 Web 应用或服务时,通常会提供不同数量的 API 接口给客户端或其他第三方使用, 当 API 数量达到一定数量的时候,在处理接口间的调用链以及参数关系时就会变得异常麻烦。 在这种情况下便可通过 Bittly 的面板功能将这些 API 结构进行组装…

电子元件制造5G智能工厂物联数字孪生平台,推进制造业数字化转型

5G智能工厂与物联数字孪生平台的融合应用,不仅为电容器制造业注入了新的活力,更为整个制造业的数字化转型树立了新的标杆。电子元件制造过程中,数字孪生平台通过实时监测生产线的各个环节,实现了生产流程的可视化监控。管理人员可…

es的封装

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、类和接口介绍0.封装思想1.es的操作分类 二、创建索引1.成员变量2.构造函数2.添加字段3.发送请求4.创建索引总体代码 三.插入数据四.删除数据五.查询数据 前…

大数据新视界 --大数据大厂之探索ES:大数据时代的高效搜索引擎实战攻略

💖💖💖亲爱的朋友们,热烈欢迎你们来到 青云交的博客!能与你们在此邂逅,我满心欢喜,深感无比荣幸。在这个瞬息万变的时代,我们每个人都在苦苦追寻一处能让心灵安然栖息的港湾。而 我的…

java 获取集合a比集合b多出来的对象元素

public class OrderListEntity {/*** deprecated 对象集合的处理* param aData 集合a* param bData 集合b* return 返回集合a比集合b多出来的部分, 通过id判断*/public static List<OrderListEntity> AHasMoreThanBData(List<OrderListEntity> aData, List<Ord…

AI日常绘画【国庆海报】:盛世迎华诞,Flux国庆节海报制作教程

大家好我是安琪&#xff01;&#xff01;&#xff01; 马上就要到祖国母亲的节日了&#xff0c;想想心里都美滋滋的&#xff0c;终于可以放松一下了。相信AI绘画关于国庆主题肯定也会精彩纷呈吧&#xff0c;今天和大家分享几组关于国庆海报的制作教程。 本文使用基于Flux的相关…

西安交大曹相湧、孟德宇教授团队最新成果┆HSIGene: 一个用于高光谱图像生成的基础模型(含详细视频解读)

目录 论文简介 1. 团队介绍 2. 研究背景及主要贡献 3. 方法 4. 实验及结果 5. 总结与展望 6. 论文介绍视频 参考文献 论文简介 本推文详细介绍了一篇西安交通大学孟德宇教授与曹相湧副教授团队最新论文《HSIGene: A Foundation Model For Hyperspectral Image Gener…

微信小程序报名表怎么弄_轻松打造高效便捷的互动新体验

在当今数字化时代&#xff0c;便捷与高效成为了我们日常生活中不可或缺的一部分。无论是企业活动、社团招新&#xff0c;还是日常办公统计&#xff0c;一个优秀的报名工具都能极大地提升我们的工作效率和用户体验。今天&#xff0c;就让我们一起探索如何通过微信小程序报名表&a…

Growthly Quest 增长工具:助力 Web3 项目实现数据驱动的增长

作者&#xff1a;Stella L (stellafootprint.network) 在瞬息万变的 Web3 领域&#xff0c;众多项目在用户吸引、参与和留存方面遭遇重重难关。Footprint Analytics 推出 Growthly&#xff0c;作为应对这些挑战的全方位解决方案&#xff0c;其中创新性的 Quest&#xff08;任务…

如何确定SAP 某些凭证或者单号的号码编码范围的 OBJECT 是什么?

在SAP的运维或者项目实施中&#xff0c;有时会如何确定SAP 某些凭证或者单号的号码 OBJECT 是什么&#xff1f; 一般一下常用的可以通过事务代码 例如&#xff1a; XDN1 Create Number Ranges for Customer Accounts&#xff0c;定义客户编码FBN1查看维护会计凭证号范围 我…

Java开发:文件上传和下载

一、文件上传 使用MultipartFile 类型接收参数&#xff1b; 调用上传有两种方式&#xff1a; 方式一&#xff1a;使用curl命令 curl -F "file/data/filename.txt" http://localhost:8080/upload --verbose方式二&#xff1a;使用html&#xff0c;写一个form表单&…

计算机前沿技术-人工智能算法-大语言模型-最新论文阅读-2024-09-21

计算机前沿技术-人工智能算法-大语言模型-最新论文阅读-2024-09-21 1. AIvril: AI-Driven RTL Generation With Verification In-The-Loop Authors: Mubashir ul Islam, Humza Sami, Pierre-Emmanuel Gaillardon, and Valerio Tenace AIVRIL: 人工智能驱动的RTL生成与验证内…

问题:机器字长为n位的二进制数可以用补码来表示()个不同的有符号定点整数。

一、概念 概念&#xff1a;无论原码、反码、补码&#xff0c;n位二进制数可以表示2^n个数值 二、从范围证明 有符号的情况下&#xff0c;表格如下&#xff1a; 其中&#xff0c;原码、反码含有-0、0 &#xff0c; 而补码不划分0 由此&#xff0c;可知&#xff1a; ① 原码…

Pygame中Sprite实现逃亡游戏3

在《Pygame中Sprite实现逃亡游戏2》中实现了飞龙和飞火的显示。接下来实现玩家跳跃效果&#xff0c;如图1所示。 图1 玩家跳跃效果 1 按键响应 当玩家按下键盘中空格按键后&#xff0c;游戏中的玩家就会跳跃&#xff0c;用于躲避飞火。在while True循环判断按键的代码中&…