1

私はちょうど 2 つの顔を比較して、それらの類似性を取得しようとしています - それらがどれだけ一致しているかのスコア。インターネットで解決策を探していますが、一連のトレーニング画像に対してしか顔認識を見つけることができません。誰かがこの問題について調査を行ったかどうかを見つけることができません.2人の知らない顔があり、同じ人かどうかを調べたい. 手がかりやリソースを教えていただけますか? 実装があれば、それは素晴らしいことです-C#、C ++私はopenCVを使用しようとしています-顔を検出し、いくつかのデータベースに対して顔を認識し(固有距離を取得)、ユークリッド距離を比較しますが、悪い結果が得られます.(おそらく私のアプローチが間違っていて、固有面とユークリッド距離を完全には理解していません)

どうもありがとう!

4

2 に答える 2

1

まず、これは解決された問題ではないことに注意してください。実際、これはコンピュータ ビジョンの比較的研究分野です。ワイルド データセットのラベル付きの顔を見てください。これは、2 つの顔を比較して、まさにあなたが話しているタスクを使用しています。あなたにとって特に興味深いのは結果セクションです。これには、どのアルゴリズム (およびそれぞれの論文) が最適に機能するかについてのレポートがあります。

ただし、これはすべてかなり高度なようです。機械学習やコンピューター ビジョンにあまり詳しくないように思われる場合は、これらの分野の教科書を参照することをお勧めします。

いずれにせよ、基本的なことは次のとおりです。ピクセルを使用して顔を比較することは望ましくありません。照明やポーズによって顔が大きく変化するからです。(試してみる必要があります!) したがって、同じ人物の顔を類似させ、別の人物の顔を非類似にする方法でピクセルを変換する必要があります。これは特徴抽出であり、間違いなく顔認識の最も難しく、最も重要な部分です。それらを変換するための最良の方法をどのように知ることができますか? そこで、トレーニング データセットの出番です。たとえば、固有面を使用する場合 (ちなみに、これはパフォーマンスが非常に低いはずです)、トレーニング データを使用して、このデータを最もよく表す固有ベクトルを取得します。次に、2 つの面を比較して、各面を固有ベクトルに投影し、ユークリッド距離を使用します。(これは、マハロノビス距離を使用するのと同じです)。

于 2012-04-01T01:35:19.563 に答える
0

あなたがしようとしているのは、2 つの顔の類似性を見つけることのようです。OpenCV は、2 つの画像間の基本的なテンプレート マッチング機能を提供します。これを行うための優れた説明と本格的な C コードを次に示します。

そこで説明されているように、画像内の各ポイントのマッチングの出力が保存されます。そこから一致を取得する方法は、使用されるさまざまな正規化を含めて、このチュートリアルで示されています。

また、後の C++ インターフェイスを使用した高速テンプレート マッチングに関するこのリンクに遭遇しましたが、個人的には使用していません。

顔がマグショットのみで、回転や遠近法などの変化がほとんどない場合は、この基本的なアプローチで十分です。

于 2012-04-01T01:04:14.433 に答える