代码之家  ›  专栏  ›  技术社区  ›  aga

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

  •  0
  • aga  · 技术社区  · 8 年前

    现在,我读了很多关于这一主题的不同论文(其中安德烈亚·曼尼尼和安吉洛·玛丽亚·萨巴蒂尼撰写的《从人体加速度计对人体运动进行分类的机器学习方法》似乎是最有用的一篇),我对需要做的事情有了一些清晰的理解(有些步骤可能看起来不对,因为我没有有统计学/ML方面的经验):

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

    Data from 0s to 1.0s
    Data from 0.5s to 1.5s
    Data from 1.0s to 2.0s
    ...
    Data from n s to (n+1.0)s

    我不明白的是每个窗口都有加速度计读数:

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

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

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

    1. 我们可以基于每个三元组创建一个特征向量: [featureA based on x0, y0, z0; featureB based on x0, y0, z0; featureA based on x1, y1, z1; featureB based on x1, y1, z1; ... ; featureB based on xn, yn, zn] .
    2. 或者我们可以取窗口内加速度计读数的平均值,这样我们就只有一个三元组了 xa, ya, za ('a'代表'average'),然后创建这样的特征向量: [featureA based on xa, ya, za; featureB based on xa, ya, za]

    我不喜欢第二个想法,因为似乎平均加速度计数据读数,即使是小窗口 可以 导致数据丢失和分类器行为不足。可能论文作者的意思和第一个想法差不多,但我不确定。

    1 回复  |  直到 8 年前
        1
  •  1
  •   Frayal    8 年前

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

    我要说两件事:

    • 首先,滑动窗口意味着在时间t给数据一个上下文。根据数据流,你可以把未来放在它里面或者不放。但实际上,我们的想法是将关闭的数据放在同一个窗口中,创建一个新的数据集,其中每一行都是一个窗口。尽管如此,从窗口中提取特征与从3个坐标中提取特征是不同的。例如,可以尝试计算移动速度(使用上一点)。所以这两个选项是有效的!你将不得不从单点(如极坐标)获得特征,但速度,从最后一点的移动等。。。这些都是很好的特点。

    • 每个坐标都可以是特征。你不需要挤压矩阵,因为它实际上与你的第一个选择没有任何不同,或者就这一点而言,与第二个选择没有任何不同。你的加速计为你提供了wich的数据,你可以提取特征来建立一个新的数据集,但是不管你做什么,你最终都会得到一个矩阵。

    推荐文章