卷积神经网络(CNN)因其强大的特征提取能力和深度学习架构而备受推崇,CNN在处理图像数据时展现出的卓越性能,使其成为解决各种视觉识别任务的首选工具。WISDM数据集是一个广泛用于运动估计研究的基准数据集,它包含了多个视频序列,每个序列都记录了摄像头在不同方向上移动时捕捉到的图像。在本研究中,我们将探讨如何利用CNN来训练和优化WISDM数据集,以提高运动估计的准确性和鲁棒性。
WISDM数据集是一个用于人类活动识别(Human Activity Recognition, HAR)的公共数据集。它包含了从智能手机和智能手表收集的传感器数据,这些数据被用来识别多种不同的人类活动:
卷积神经网络是一种专门用来处理具有类似网格结构的数据的神经网络,如图像。CNN在图像识别、视频分析和自然语言处理等领域取得了巨大的成功。
CNN通过多层卷积和池化操作,逐步提取从低级到高级的特征:
def cnn(input_shape, num_classes):
inputs = tf.keras.Input(shape=input_shape)
# 卷积模块
x = tf.keras.layers.Conv1D(64, 5, padding='same', activation='relu')(inputs)
x = tf.keras.layers.MaxPooling1D(2)(x)
x = tf.keras.layers.Conv1D(128, 3, padding='same', activation='relu')(x)
x = tf.keras.layers.GlobalAveragePooling1D()(x)
# 分类头
x = tf.keras.layers.Dense(128, activation='relu')(x)
outputs = tf.keras.layers.Dense(num_classes, activation='softmax')(x)
return tf.keras.Model(inputs, outputs)
WISDM数据集下载链接:https://www.cis.fordham.edu/wisdm/includes/datasets/latest/WISDM_ar_latest.tar.gz
加载、预处理和准备WISDM数据集,以便用于人类活动识别(HAR)任务:
dataset_dir
: 指定原始数据存放的目录。WINDOW_SIZE
: 定义滑窗的大小。OVERLAP_RATE
: 定义滑窗的重叠率。SPLIT_RATE
: 定义训练集和验证集的分割比例。VALIDATION_SUBJECTS
: 定义留一法验证时使用的特定主题(subject)集合。Z_SCORE
: 决定是否进行标准化处理。SAVE_PATH
: 定义预处理后数据保存的路径。download_dataset
函数,从福特汉姆大学提供的URL下载WISDM数据集,并将其存储在dataset_dir
指定的目录中。category_dict
字典,将活动标签的字符串表示(如'Walking'、'Jogging'等)映射为整数ID,以便于机器学习模型处理。VALIDATION_SUBJECTS
,选择留一法或平均法来分割数据集。留一法是为每个参与者ID分别创建训练集和测试集,而平均法则是按照SPLIT_RATE
比例分割数据。xtrain
、xtest
、ytrain
、ytest
列表中,这些列表将包含所有训练和测试数据。Z_SCORE
参数为True,则对整合后的xtrain
和xtest
进行Z分数标准化处理,以消除不同传感器信号量级的影响。SAVE_PATH
,则使用save_npy_data
函数将预处理后的训练集和测试集数据保存为.npy
格式的文件,这有助于后续加载和使用数据。准备WISDM数据集,使其适合用于CNN网络模型的训练和测试。通过滑窗处理,可以将原始的长时间序列传感器数据转换为固定大小的短时间序列数据,这有助于训练卷积神经网络等模型进行人类活动识别。此外,通过留一法或平均法分割数据集,可以为模型提供训练集和验证集,以评估模型性能。最后,通过Z分数标准化,可以提高模型对数据分布变化的鲁棒性。
准确率是所有正确预测样本数占总样本数的比例。
精确率是所有预测为正类中真正为正类的比例,它关注的是预测为正类的结果的准确性。
召回率是所有实际为正类中被正确预测为正类的比例,它衡量的是模型捕捉正类样本的能力。
F1分数是精确率和召回率的调和平均值,它在两者之间取得平衡,是评价分类模型性能的一个重要指标。
参数量指的是网络模型中需要训练的参数总数。参数量越多,模型的容量越大,但也越容易过拟合。
推理时间指的是模型对数据进行预测的时间。它可以是单个样本的推理时间,也可以是整个数据集推理所需的总时间。推理时间是评估模型在实际应用中效率的重要指标,尤其是在需要实时响应的应用场景中。
根据选择的数据集和模型,加载数据集,并进行必要的预处理。
根据选择的模型,实例化一个模型对象,并将其移动到选定的设备上。
使用DataLoader
创建训练和测试数据的加载器,允许在训练中以小批量方式加载数据。
定义了AdamW优化器和学习率调度器,用于在训练过程中更新模型参数和调整学习率。
实例化GradScaler
对象,用于在训练中使用混合精度,可以提高训练效率和精度。
对于每个训练轮次,执行以下步骤:
在每个训练轮次结束时,打印出当前轮次的训练信息和模型评估指标。
从训练结果中可以看出,基于CNN网络训练得到的以上六种指标数据分别为:
CNN | 0.9729 | 0.9734 | 0.9729 | 0.9732 | 528390 | 0.0008 0.7563 |
---|
将CNN网络训练WISDM数据集的结果进行可视化维度分析:
混淆矩阵是一个N×N的矩阵,N代表的是你的分类标签个数。混淆矩阵的横纵坐标轴分别为模型预测值和真实值,在图中纵轴是真实值而横轴代表模型预测值。
雷达图可以反映多个行为的某个指标值映射在坐标轴上,可以更直观的观察出每个行为的指标值大小。
准确率和损失率的收敛曲线图横坐标是训练轮次,纵坐标是模型的准确率以及损失率,这个图可以直观的看出你的模型在训练以及测试过程中的准确率和损失率走向和模型收敛以后的准确率的数值范围,也可以反映出你的模型在训练过程中是否稳定。
仿真指标柱状图是一种以长方形的长度为变量来表示各个行为的指标值,例如可以表示你的模型在WISDM数据集中的每个行为精确率的值,通过由一系列高度不等的纵向条纹表示数据分布的情况。
仿真指标折线图是一种用来表示超参数设置大小对模型效果影响的可视化方式,可以表示我们的CNN网络模型在WISDM数据集中Batch size对加权F1分数的影响。
在本研究中,我们深入探讨了卷积神经网络(CNN)在处理WISDM数据集时的应用,该数据集是一个用于人类活动识别(HAR)的公共数据集。通过一系列数据处理步骤,我们将原始的长时间序列传感器数据转换为适合CNN模型训练的固定大小的短时间序列数据。此外,我们还介绍了CNN的核心思想、优点、缺点以及基本的网络结构,并通过可视化方法对训练结果进行了全面的分析。
通过本研究,我们证明了CNN在处理时间序列数据和人类活动识别任务中的有效性。未来的工作可以探索更先进的网络结构和训练策略,以进一步提高模型的性能和应用范围。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。