如何从加速度计数据的滑动窗口过渡到手势识别任务中的特征向量?

我们有一个应用程序,需要根据加速度计数据来识别短暂的手势。

现在,我阅读了很多关于这个主题的不同论文(其中由Andrea Mannini和Angelo Maria Sabatini撰写的《用于从佩戴式加速度计分类人类身体活动的机器学习方法》似乎是最有用的一个),我对需要做的事情有了一定的了解(由于我之前没有统计/机器学习的经验,有些步骤可能看起来不对):

  1. 我需要从智能手机收集沿三个轴的加速度计数据。
  2. 下一步是将数据分成AC和DC组件(其中一个与重力加速度有关,另一个与身体加速度有关)。我需要处理身体加速度组件,因为这个组件似乎为活动识别问题提供了更好的结果。
  3. 下一步是从身体加速度组件中提取一些特征——要提取的特征尚未确定,因为这不是问题的一部分。
  4. 我需要将我的特征向量列表用于训练分类器(我很可能会选择隐马尔可夫模型,因为这种分类器似乎是顺序分类任务的最佳选择,而手势识别任务似乎属于顺序分类任务)。
  5. 之后我可以进行评估和改进。

现在,这些论文中提到了一个我还无法理解的东西,那就是滑动窗口。据我所知,我需要将传入的加速度计数据流分割成一组重叠的序列,例如:

从0秒到1.0秒的数据
从0.5秒到1.5秒的数据
从1.0秒到2.0秒的数据
...
从n秒到(n+1.0)秒的数据

我不理解的是,每个窗口有多个加速度读数:

x0, y0, z0
x1, y1, z1
x2, y2, z2
...
xn, yn, zn

如你所见,这不是向量,而是一个矩阵。但我需要一个特征向量来训练我的分类器,那么我如何将矩阵压缩成向量呢?

我对这些论文的作者是如何做的有一些想法:

  1. 我们可以基于每个三元组创建一个特征向量:[基于x0, y0, z0的特征A;基于x0, y0, z0的特征B;基于x1, y1, z1的特征A;基于x1, y1, z1的特征B;...;基于xn, yn, zn的特征B]
  2. 或者我们可以以某种方式平均窗口内的加速度读数,以便我们最终只有一个三元组xa, ya, za(’a’表示’平均’),然后创建一个这样的特征向量:[基于xa, ya, za的特征A;基于xa, ya, za的特征B]

我不喜欢第二个想法,因为即使是对于小窗口,平均加速度数据读数也可能会导致数据丢失和分类器行为不当。可能论文的作者的意思是像第一个想法那样,但我不能确定。

我对滑动窗口的创建方式的理解是否正确(即想法#1)?


回答:

首先,你的问题的两个部分都是对的,但不完全正确。

我想说两件事:

  • 首先,滑动窗口的目的是为时间t的数据提供上下文。根据数据流,你可以将未来的数据包括在内或不包括在内。但想法确实是将相近的数据放入同一个窗口中,以创建一个新的数据集,其中每一行是一个窗口。话虽如此,从窗口中提取特征与从三个坐标中提取特征不同。你可以尝试计算运动速度(通过使用前一个点)。所以这两个选项都是有效的!你将需要从单个点(例如极坐标)提取特征,但也需要从最后一个点提取速度、运动等特征。这些都是很好的特征。

  • 每个坐标都可以是一个特征。你不需要压缩矩阵,因为实际上它与你的第一个选项或第二个选项没有任何不同。你的加速度计为你提供了可以从中提取特征的数据,以创建一个新的数据集,但无论你做什么,你最终都会得到一个矩阵。

Related Posts

Keras Dense层输入未被展平

这是我的测试代码: from keras import…

无法将分类变量输入随机森林

我有10个分类变量和3个数值变量。我在分割后直接将它们…

如何在Keras中对每个输出应用Sigmoid函数?

这是我代码的一部分。 model = Sequenti…

如何选择类概率的最佳阈值?

我的神经网络输出是一个用于多标签分类的预测类概率表: …

在Keras中使用深度学习得到不同的结果

我按照一个教程使用Keras中的深度神经网络进行文本分…

‘MatMul’操作的输入’b’类型为float32,与参数’a’的类型float64不匹配

我写了一个简单的TensorFlow代码,但不断遇到T…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注