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

news2024/9/25 17:38:16

卷积神经网络(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.coloradmin.cn/o/2164320.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

EmguCV学习笔记 VB.Net 11.9 姿势识别 OpenPose

版权声明:本文为博主原创文章,转载请在显著位置标明本文出处以及作者网名,未经作者允许不得用于商业目的。 EmguCV是一个基于OpenCV的开源免费的跨平台计算机视觉库,它向C#和VB.NET开发者提供了OpenCV库的大部分功能。 教程VB.net版本请访问…

AMEYA360代理:兆易创新GD32A7系列全新一代车规级MCU介绍

兆易创新GigaDevice(股票代码 603986)今日宣布,重磅推出全新一代车规级MCU GD32A7系列。与上一代采用Arm Cortex-M4/M33的产品相比,GD32A7系列搭载了超高性能Arm Cortex-M7内核,提供GD32A71x/GD32A72x/GD32A74x等多款型号供用户选择。该系列产…

git 生成和查看密钥

项目场景: 在前端项目开发中,经常会用到git。一般的小公司很少去设置git令牌或者密钥;而在一些大公司,会用到这个。今天主要整理下git如何生成和查看密钥。 密钥 1、生成密钥 cat ~/.ssh/id_rsa.pub 2、查看密钥 ssh-keygen…

电容笔最建议买哪一款?2024百元价位性价比首选榜单,速速码住!

现在电容笔已经成为我们日常学习、工作和创作中不可或缺的辅助工具。无论是记笔记、做习题,还是进行绘画、设计,电容笔都发挥着关键作用。然而,市场上的电容笔品牌和款式繁多,价格也从几十元到上千元不等,这让消费者在…

OSError: [Errno 16] Device or resource busy: ‘.nfs*‘报错解决办法

目录 1 项目场景&问题描述:2 原因分析:2.1 问题背景: 3 解决方案:3.1 创建存放临时文件的目录3.2 使用该目录3.2.1 设置环境变量 TMPDIR3.2.2 运行时设置(推荐)3.2.3 代码中设置 4 总结 1 项目场景&…

Redis 键值对数据库学习

目录 一、介绍 二、安装以及连接 三、设置连接密码 四、连接报错 五、redis 操作字符串以及过期时间 六、 redis 列表操作 七、redis 集合操作 八、hash 哈希操作 九、redis 发布和订阅操作 十、RDB和AOF的两种数据持久化机制 十一、 其他机器连接redis 十二、 pyt…

【Linux】解锁文件描述符奥秘,高效缓存区的实战技巧

fd和缓冲区 1. 文件描述符fd1.1. 概念与本质1.2. 打开文件的管理1.3. 一切皆文件的理解1.4. 分配规则1.5. 重定向的本质1.5.1. dup2 2. FILE中的缓冲区2.1. 概念2.2. 存在的原因2.3. 类型(刷新方案)2.4. 存放的位置2.4.1. 代码证明、现象解释 2.5. 模拟C标准库中的方法 1. 文件…

LiveGBS流媒体平台GB/T28181功能-支持电子放大拉框放大直播视频拉框放大录像视频流拉框放大电子放大

LiveGBS流媒体平台GB/T28181功能-支持电子放大拉框放大直播视频拉框放大录像视频流拉框放大电子放大 1、直播播放2、录像播放3、搭建GB28181视频直播平台 1、直播播放 国标设备-》查看通道-》播放 ,左键单击可以拉取矩形框,放大选中的范围,释…

IPD如何解决产品开发的典型问题

IPD(Integrated Product Development,集成产品开发)是一种领先的、成熟的产品开发的管理思想和管理模式。它是根据大量成功的产品开发管理实践总结出来的,并被大量实践证明的高效的产品开发模式。从汉捷咨询二十多年来为五百多家企…

如何通过代理使用 Squid: 综合指南

文章目录 一、简介二、什么是 Squid?三、为什么在代理服务器中使用 Squid?四、设置代理五、使用代理设置 Squid5.1. 第一步5.2. 第二步5.3. 第三步 六、在网络搜索中使用代理:实用代码示例6.1. 使用代理的 cURL6.2. 使用代理的 Python 请求 七、结论 一…

嘉立创EDA-- 线宽、过孔和电流大小对比图

导线宽度和电流大小如何来考虑 1 电流大小需要考虑问题 1、允许的温升:如果能够允许的铜线升高的温度越高,那么允许通过的电流自然也就越高 2、走线的线宽:线越宽 ,导线横截面积越大,电阻越小,发热越小&a…

磨具生产制造9人共用一台工作站

随着技术的不断进步与工业自动化的深入发展,如何优化生产流程、提高设备利用率成为了众多企业面临的重大课题。那么在磨具生产制造中实现9人共用一台工作站呢? 一、背景与挑战 在磨具制造行业,高精度、高效率的生产要求与复杂多变的工艺流程…

smartctl 命令:查看硬盘健康状态

一、命令简介 ​smartctl​ 命令用于获取硬盘的 SMART 信息。 介绍硬盘SMART 硬盘的 SMART (Self-Monitoring, Analysis, and Reporting Technology) 技术用于监控硬盘的健康状态,并能提供一些潜在故障的预警信息。通过查看 SMART 数据,用户可以了解硬…

如何选择渲染集群管理软件?

选择适合渲染集群管理软件可以考虑以下几个方面: 1.渲染需求:明确自己的渲染任务类型、规模和复杂度。如果需要处理大型、复杂的项目,对渲染效率和速度要求较高,就需要选择性能强劲的软件。 2.软件兼容性:确保软件支持…

[极客大挑战 2019]EasySQL1

前言: 记录一下web方面的题(第一次接触。。。) 学校课程要学web…… - - 行吧,尝试一下,至少学过MySQL。。。 不过,实际上,现实现在SQL漏洞少得可怜,但学习不会有错。 参考:&…

vue-cli,element-plus,axios,proxy

一、vue-cli vue-cli俗称vue脚手架,是vue官方提供的快速生成vue 工程化项目的工具。 1.官网:https://cn.vuejs.org/ 中文官网: https://cli.vuejs.org/zh/ 特点:基于webpack,功能丰富且易于扩展,支持创建vue2和vu…

学校快递站点管理|基于springboot学校快递站点管理设计与实现(源码+数据库+文档)

学校快递站点管理系统目录 目录 基于springboot学校快递站点管理设计与实现 一、前言 二、系统功能设计 三、系统实现 前台功能模块 后台功能角模块 四、数据库设计 1、实体ER图 2、具体的表设计如下所示: 五、核心代码 六、论文参考 七、最新计算机毕设…

本地搭建OnlyOffice在线文档编辑器结合内网穿透实现远程协作

文章目录 前言1. 安装Docker2. 本地安装部署ONLYOFFICE3. 安装cpolar内网穿透4. 固定OnlyOffice公网地址 前言 本篇文章讲解如何使用Docker在本地Linux服务器上安装ONLYOFFICE,并结合cpolar内网穿透实现公网访问本地部署的文档编辑器与远程协作。 Community Editi…

LVM的基本概念,PD PP PV VG LV PE等概念

LVM(Logical Volume Manager,逻辑卷管理器)是 Linux 系统中一种灵活的磁盘分区管理工具,允许动态地调整存储设备的大小和配置,而无需停止系统。LVM 在传统的分区管理工具上添加了更灵活的管理功能,特别适合…

逆向推理+ChatGPT,让论文更具说服力

学境思源,一键生成论文初稿: AcademicIdeas - 学境思源AI论文写作 使用ChatGPT辅助“逆向推理”技巧,可以显著提升论文的质量和说服力。逆向推理从结论出发,倒推所需的证据和论点,确保整个论证过程逻辑严密且无漏洞。…