2

私は、類似性スコアを比較して与えるために、モーションデータの分析を含むプロジェクトに取り組んでいます。アプリケーションでデータを収集して表示できるようになりましたが、アルゴリズムの方向性が必要です。


目標:加速度計から記録された 2 つの (x,y,z) モーション データの時系列が与えられ、類似性スコア (実数、最終的には 0 から 100) を計算します。これにより、記録からモーションがどの程度類似しているかの尺度が得られます。


例:これは私のソフトウェアからのいくつかの画像で、私が収集したデータのアイデア (およびそれらの類似度スコアがどうあるべきかについての私の意見) を示しています。

これはかなり良いスコアになるはずです

多分これはもっと悪いスコアになるはずです

成績が良くないはず

かなりひどい

よしスコア

かなり良い

良くない


いくつかのアイデア:私はオーディオ処理とコンピューター ビジョンの経験があるので、最初のアイデアはそこから生まれます。まず最初に、信号をローパス フィルター処理することを考えていました (q: どの LPF ですか? たくさんあります)。その後、ダイナミック タイム ワーピングを試みました。このように、x1 と x2、y1 と y2 などを比較します。ただし、これは、x2 シリーズが z2 シリーズにどのように関連するかと比較して、x1 シリーズが z1 にどのように関連するかなどの重要な情報を失っているように私には思えます。

私が考えていたもう 1 つの考えは、おそらくMFCCを使用して、周波数領域で分析を行うことでした。これは、私が理解している音声認識の一般的な手法です。

「機械学習をやめろ」というアプローチもあります。テンプレート化されたジェスチャを保存し、ある種の魔法を実行して認識できるようにすることができました。これは私の好みではありませんが (大量のトレーニング データを必要とせずにこれを実行できるようにしたいと考えています)、誰かが「ああ、これは 間違いなくうまくいくだろう」というようなスキームを知っている場合は、確かに.


ソフトウェア + 実装:このプロジェクトはJavaで行われており、私のデータは次の形式になっています。

float[150] x1;
float[150] y1;
float[150] z1; //note: x2,y2,z2 will be of different length, but similar 

したがって、アルゴリズムの提案に基づいて使用するライブラリを推奨したい場合は、非常に簡単に使用できます。


その他:オリエンテーションの問題があります。ただし、私の計画は、サンプルの 1 つを「参照」として取得しx[i],y[i],z[i]、他のすべてのポイントを回転させて一致させることです。次に、比較を行います。このための現在の計画は、この回転式を使用しています:ロドリゲスの回転式これは理にかなっていますか?


4

2 に答える 2

4

One Nearest Neighbor 分類器による動的タイム ワーピングを使用して、分類精度を計算できます。データには 3 つの次元しかないと考えてください。これは比較的簡単な問題です。ダイナミック タイム ワープを使用することは良い方向です。また、ユークリッド距離を使用することもできます。データセットが大きい場合、ユークリッド距離に対する動的タイム ワーピングの進歩はなくなります。

軸が 3 つしかないため、1 つの軸のデータを使用するか、すべての軸のデータを使用するかの 2 つの方法があります。すべての軸を使用するとエラーが発生する可能性が高くなるため、1 つの軸のみのデータを使用することをお勧めします。たとえば、x 軸のデータを使用して、精度を計算します。次に、y と z からのデータに対して同じことを行います。最後に、精度マトリックスを取得します。マトリックスの各行には、さまざまなアクティビティの分類結果があります。マトリックスの各列には、同じアクティビティの分類結果が異なる軸で表示されます。これがトレーニング手順です。テスト手順では、最高の精度を与える軸からの結果をたどることができます。

さらに、上記の方法には問題がある。事前知識 (過去のトレーニング フェーズ) の結果のみを考慮し、テスト フェーズの新しい証拠 (最近傍距離) は考慮しません。

多次元時系列分類で以前の知識と新しい証拠の両方を使用する方法について話している論文が提出されています。まだ検討中ですので、ご紹介できません。そうでない場合は、参照用に用紙をお送りします。

于 2013-09-07T03:02:09.740 に答える
2

非常に幅広い質問であり、Java とは実際には関係がないように思われるため、個人的にこれを言語にとらわれないものとしてタグ付けします。とはいえ、この問題に対して私がとるアプローチには、主に 2 つの種類があります。これらはどちらも周波数ドメインに基づいています。ほとんどのアプリケーションはドメインであることが理にかなっていますが、アプリケーションについて詳しく知らなければ、優れたアドバイスを提供するのは少し困難です。

一般に、x/y/z 方向だけを見るのではなく、加速度計の絶対ベクトルを見ることをお勧めします。

  1. 正規化されたスペクトログラム: これらのサンプルが長さは異なるが同等のサンプルからのものであると仮定すると、私の最初のアプローチは、2 つの正規化されたスペクトログラムの重なりを比較することです。(パーセンテージ オーバーラップのような単純なものが機能しますが、積分測定のようなものがより正確になる可能性があります。) このアプローチを使用すると、BartoszKP のリンクの一部が役立つ場合があります。

  2. 主成分分析 (またはそのバリエーション): 事実上、非常に大きな問題空間が得られるため、主固有ベクトルを決定できると、2 つのデータ ストリームがどの程度類似しているかがわかります。上位 n 個の主固有値を決定し、固有ベクトルの空間で単純な類似度メトリック (コサイン類似度が思い浮かびます) を使用して、それらが全体的にどの程度類似しているかを把握することをお勧めします。

于 2013-09-01T00:43:13.233 に答える