2

k-means を使用して表情を分類する私の方法は次のとおりです。

  1. opencv を使用して画像内の顔を検出する
  2. ASM と stasm を使用して顔の特徴点を取得する
  3. 顔の特徴間の距離を計算します (図に示すように)。5 距離になります。ここに画像の説明を入力
  4. 各顔の表情の各距離の重心を計算します (例: 距離 D1 には、各表情「幸せ、怒っている...」の 7 つの重心があります)。
  5. 距離に対して 5 つの k-means を使用すると、各 k-means の結果として、最初のステップで計算された重心に最も近い距離によって示される式が得られます。
  6. 最終式は、最も多くの k-means 結果に表示される式になります

しかし、その方法を使用すると、私の結果は間違っていますか? 私の方法は正しいですか、それともどこか間違っていますか?

4

1 に答える 1

3

K-means は分類アルゴリズムではありません。実行すると、K 個の要素の重心を見つけるだけなので、データを K 個の部分に分割しますが、ほとんどの場合、目的のクラスとは関係ありません。このアルゴリズム (すべてのクラスタリング手法と同様) は、データを探索して識別可能なオブジェクトを見つけたい場合に使用する必要があります。あらゆる意味で見分けがつきます。あなたのタスクが、特定のクラスを認識するシステムを構築することである場合、それは分類の問題であり、クラスタリングではありません。実装と理解の両方が簡単な最も単純な方法の 1 つは、KNNです。(K-nearest neighbours)は、達成しようとしていることを大まかに行います-どのクラスのオブジェクトが事前定義されたオブジェクトに最も近いかをチェックします。

違いをよりよく理解するために、あなたのケースを考えてみましょう。あなたは顔の特徴に基づいて感情状態を検出しようとしています。このようなデータに対して k-means を実行すると、顔写真を多くのグループに分割できます。

  • さまざまな人物の写真を使用すると、特定の人物の写真をまとめてクラスター化できます (距離が他の人物と異なるため)。
  • このような機能には性別固有の違いがあるため、たとえば男性と女性にデータを分割できます
  • 視点によって特徴が変化し、「クラスター」が作成されるため、カメラからの距離に基づいてデータを分割することもできます。

ご覧のとおり、「合理的な」(そしてさらに完全に解釈不可能な) 分割が数十あり、K-means (および任意の) 他のクラスタリング アルゴリズムは単純にそのうちの 1 つ (ほとんどの場合、解釈できないもの) を見つけます。分類方法は、この問題を克服し、何を期待しているかをアルゴリズムに「説明」するために使用されます。

于 2013-09-05T13:27:55.740 に答える