本文使用 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)图像效果更好。