USC-HAD数据集介绍及仿真实验
USC-HAD数据集介绍
USC-HAD 中定义了 12 种不同的行为。数据集共包含 14 个人的行为数据,每个人每种行为进行 5 次试验,每次试验时长约 24 秒,试验中搜集安置在测试人腰间的一种叫 MotionNode 仪器的三轴加速度计与三轴陀螺仪读数,传感器采样频率 100Hz。
12项基本活动:
活动 描述 向前走 被试者沿着一条直线向前走 向左走 受试者沿着逆时针方向走了一圈 向右走 受试者按顺时针方向走了一圈 上楼 被试者多次向上走楼梯 下楼 被试者多次向下走楼梯 向前跑 受试者以一条直线向前跑 跳过 受试者保持在相同的位置,并不断地上下跳跃 坐 受试者坐在椅子上工作或休息。坐立不安也被认为属于这个类。 站 被试者站在那里,和某人说话 睡 被试者睡觉或躺在床上 上电梯 受试者乘坐一部上行电梯 下电梯 被试者乘坐一个下降的电梯
活动 | 描述 |
---|---|
向前走 | 被试者沿着一条直线向前走 |
向左走 | 受试者沿着逆时针方向走了一圈 |
向右走 | 受试者按顺时针方向走了一圈 |
上楼 | 被试者多次向上走楼梯 |
下楼 | 被试者多次向下走楼梯 |
向前跑 | 受试者以一条直线向前跑 |
跳过 | 受试者保持在相同的位置,并不断地上下跳跃 |
坐 | 受试者坐在椅子上工作或休息。坐立不安也被认为属于这个类。 |
站 | 被试者站在那里,和某人说话 |
睡 | 被试者睡觉或躺在床上 |
上电梯 | 受试者乘坐一部上行电梯 |
下电梯 | 被试者乘坐一个下降的电梯 |
USC-HAD 数据集处理
USC-HAD 数据集是一个包含多种活动和多个受试者数据的集合,广泛用于人类活动识别(HAR)研究。以下是对 USC-HAD 数据集处理流程的详细分析,包括数据预处理、数据集分割、标准化处理以及数据保存等关键步骤。
1.环境设置
首先,需要导入处理数据所需的库和模块:
import scipy.io as scio
import os
import numpy as np
import sys
from utils import *
2.参数配置
定义 USC
函数,该函数接受多种参数以配置数据集的处理方式:
def USC(dataset_dir='./USC-HAD', WINDOW_SIZE=100, OVERLAP_RATE=0.1, SPLIT_RATE=(8, 2), VALIDATION_SUBJECTS={}, Z_SCORE=True, SAVE_PATH=os.path.abspath('../../HAR-datasets')):
# 参数说明...
3.数据加载与预处理
受试者数据加载
遍历数据集中的每个受试者文件夹,加载每个 .mat
文件中的数据:
subject_list = os.listdir(dataset_dir)
for subject in subject_list:
if not os.path.isdir(subject):
continue
# 受试者数据处理...
滑窗处理
对每个受试者的数据进行滑窗处理,以 WINDOW_SIZE
和 OVERLAP_RATE
作为参数:
for mat in mat_list:
content = scio.loadmat(mat)['sensor_readings']
cur_data = sliding_window(content, WINDOW_SIZE, OVERLAP_RATE)
数据分割
根据 VALIDATION_SUBJECTS
的设置,选择留一法或平均法来分割训练集和验证集:
- 留一法:如果受试者编号在
VALIDATION_SUBJECTS
中,则该受试者的数据作为验证集,否则作为训练集。
if VALIDATION_SUBJECTS:
if subject_id not in VALIDATION_SUBJECTS:
# 训练集数据添加
else:
# 验证集数据添加
- 平均法:根据
SPLIT_RATE
计算训练集和验证集的长度,然后进行分割。
else:
trainlen = int(len(cur_data) * SPLIT_RATE[0] / sum(SPLIT_RATE))
xtrain += cur_data[:trainlen]
xtest += cur_data[trainlen:]
数据标准化
如果设置了 Z_SCORE
为 True
,则对训练集和验证集的数据进行 Z-score 标准化处理:
if Z_SCORE:
xtrain, xtest = z_score_standard(xtrain=xtrain, xtest=xtest)
4.数据保存
将预处理后的数据保存到 SAVE_PATH
指定的目录中:
if SAVE_PATH:
save_npy_data(
dataset_name='USC_HAD',
root_dir=SAVE_PATH,
xtrain=xtrain,
xtest=xtest,
ytrain=ytrain,
ytest=ytest
)
5.结果输出
打印出训练集和验证集的数据形状,以验证数据处理的正确性:
print('xtrain shape:', xtrain.shape, 'xtest shape:', xtest.shape, 'ytrain shape:', ytrain.shape, 'ytest shape:', ytest.shape)
通过对 USC-HAD 数据集的详细处理,我们完成了从数据下载到预处理、数据集分割、标准化处理以及数据保存的整个流程。这为后续的机器学习模型训练和评估提供了结构化和标准化的数据。
USC-HAD数据集训练
USC-HAD数据集--CNN网络
网络结构
结果展示
USC-HAD数据集--ResNet网络
网络结构
结果展示
USC-HAD数据集--LSTM网络
网络结构
结果展示
USC-HAD数据集--shufflenet网络
网络结构
结果展示
USC-HAD数据集仿真指标统计表
模型名称 | 准确率(Accuracy) | 精确率(Precision) | 召回率(Recall) | F1分数(F1-score) | 参数量(Parameters) | 推理时间(Inference Time) | 其他指标 | 备注 |
---|---|---|---|---|---|---|---|---|
CNN | 0.8625 | 0.8611 | 0.8625 | 0.8618 | 556044 | 2.4667 | ||
Resnet | 0.8765 | 0.8739 | 0.8765 | 0.8752 | 1426252 | 4.5797 | ||
LSTM | 0.8821 | 0.8833 | 0.8821 | 0.8827 | 3172364 | 3.0517 | ||
Shufflenet | 0.8594 | 0.8582 | 0.8594 | 0.8588 | 213648 | 3.0598 |
转载自:https://juejin.cn/post/7388221919777046569