0

我正在开发一个识别加速度计手势的android应用程序。现在我只是利用动态时间扭曲来获得输入手势和数据库中大约 200 个唯一手势数据之间的最小距离。我的应用程序遍历数据并将输入手势与数据库中的手势数据一一进行比较。它可以在5秒内平均找到最小距离并识别手势。问题是我可以将识别时间加快半秒或更短吗?我是否必须使用 KNN 之类的分类方法并将其与 dtw 方法结合使用?一个例子或参考将被apreciated..

4

3 回答 3

0

你目前正在做的是一个 1NN。换句话说,您已经在运行一个最简单的 KNN 方法。K = 1。改变 K 不会加速任何事情,它只会改变结果的质量。为了加快这个过程,您可以考虑使用两种方法:

  • 使用一些索引方法,这将降低基于距离的搜索的计算复杂度。这个问题被称为最近邻搜索(NNS),甚至维基百科也提供了很多关于其加速的信息;
  • 使用完全不同的分类方法,建立一个更简单的模型(可能是 SVM 甚至是一些决策树——这取决于你的实际数据)。
于 2013-09-13T04:59:21.933 回答
0

我的直觉是本地敏感散列可以很容易地应用。例如,您可以通过随机选择 K 个点并检查时间序列是否距离“太远”来设计它们。

我会详细介绍这个想法,但我找到了这篇论文:http ://dtai.cs.kuleuven.be/events/MLSA13/papers/mlsa13_submission_13.pdf ,它似乎使用了更简单的 LHS 函数。

所以这是一条出路,希望能成功。您还可以实现一个简单的分类器并接受它的答案,如果它非常确定手势(我会在上面的答案中推荐 SVM),并且如果它接近边界决策,则寻找最近的邻居。

于 2013-09-13T20:30:31.260 回答
0

你可以在 10,000 赫兹的频率下进行 DTW,即使是在手机上,看这个视频

http://www.youtube.com/watch?v=d_qLzMMuVQg

埃蒙

于 2013-09-15T03:48:07.740 回答