基于CNN的大规模可穿戴传感器运动数据分类
扫描二维码
随时随地手机看文章
本文使用CNN来对可穿戴传感器收集的大规模运动数据进行分类,同时对传感器数据转换为不同的图像格式输入做出了比较。最佳性能配置以92.1%的准确率将50种健身房运动分类。
作者在这里使用的是CNN而不是RNN(常用来处理时序数据),是因为每次的重复运动练习(如举哑铃)是花费的时间是非常短的少于4秒,训练时不需要长时间的记忆。
数据集使用的是从PUSH(一种戴在前臂上的可穿戴设备,用于测量运动员的运动)收集的,该数据是由1441名男运动员和307名女运动员的449260个重复运动练习组成的49194个集合组成。
因为CNN的输入长度是固定的,所以将每条序列的长度固定为784。拥有超过784个样本的代表被简单地裁剪出来784个样本,不足的采用zero-paded。
该装置紧紧地绑在上臂上,分别用内置加速度计和陀螺仪测量加速度和方向,因此,时间序列数据具有9个特征(Acc x, Acc y,Acc z) in the local frame, (Acc x, Acc y, Acc z) in the world frame and (EulerAngle x,EulerAngle y, EulerAngle z) in the world frame,数据采集的频率为200HZ。
将传感器数据转换成2D形式的输入有3种方法。不同的图像格式选择会导致不同的卷积与不同的相邻元素,其中可能包括不相关元素之间的卷积。
把9×784的时间序列数据作为一个矩形二维图像。
将三个不同的特征组(local accelerations,world acceleraTIons,and Euler angles)类比为图像中的RGB通道,并创建一个3×784×3的张量。
将9×784的时间序列数据重新塑造为84×84的方阵如下图所示。
不同各式的2D输入对于卷积的影响
对于9*784形式的输入来说,如果进行步长为1的卷积操作(作者称为9*784 full),Acc_x_local位于图像的最上面一行,直到最后一层才与位于最下面一行的Euler_Angle_z进行卷积,然而Acc_z_world位于图像的第6行,它与位于第7行的Euler_Angle_x有很多卷积的机会,因为它们是相邻的。
对于3*784*3 形式的输入来说,由于卷积分别在3个通道上分别进行,这样不同的组之间就不会发生卷积。
为了避免9*784形式的输入在一层中不同组之间的卷积,可以使用卷积步长来避免这种影响(作者称为9*789 disjointed)。如下图所示。
左图中沿着y轴移动步长为1这样不同的组之间就会发生卷积。右图中沿着y轴移动而步长为3,可以避免不同组之间进行卷积。
实验结果表明,将不同的特征组(local acceleraTIon,world acceleraTIon, Euler angle)作为不同的图像通道(3*784*3)处理比二维正方形(84*84)图像或矩形(9*783)图像效果更好。