2012-03-31 14 views
1

私はただ2人の顔を比較しようとしています。 私はインターネットで解決策を探していますが、私は訓練画像のセットに対してしか顔認識を見つけることができません。誰かがこの問題について研究をしているのかどうかはわかりません - 私は2つの未知の顔を持っています。 私に何か手がかりやリソースを与えることができます何か私を助けることができますか? 実装があれば、openCV-検出顔を使用しようとすると、ある種のデータベースに対して顔を認識して(固有距離を取得し)、ユークリッド距離を比較すると大丈夫ですが、悪い結果が得られます。多分私のアプローチは間違っていて、私は完全にeigenfaceとeuklidの距離を理解していません)2人の顔の比較

ありがとう!

答えて

1

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

ここで説明したように、画像内の各点のマッチングの出力が格納されます。そこから一致を得ることは、使用された様々な正規化を含むthisチュートリアルに示されています。

また、linkは、後のC++インターフェイスを使用して高速テンプレートマッチングを行いましたが、個人的に使用していません。

あなたの顔がマグショットのみで、回転や視点などの変化が少ない場合は、この基本的なアプローチで十分です。

1

まず、これは解決された問題からは遠いということに注意してください。実際、それはコンピュータビジョンの比較的研究領域です。 Labeled Faces in the Wild datasetを見てください。あなたの話題を正確に使い、2つの顔を比較します。特に興味があるのは、results sectionです。これにはアルゴリズム(およびそれぞれの論文)が最も効果的であるという報告があります。

しかし、これはすべてかなり進んでいるようです。機械学習やコンピュータビジョンにあまり慣れていない可能性があります。その場合は、これらの分野の教科書を見たいかもしれません。

いずれにしても、基本的なことは次のとおりです。顔を照らすためにピクセルを使用したくない理由は、ライティングとポーズであまり変化しないからです。 (あなたはそれを試してみてください!)したがって、同じ人物の顔が似ていて、異なる人物の顔が異なるようにピクセルを変換する必要があります。これは特徴抽出であり、顔認識の最も重要で最も重要な部分です。どのようなものがそれらを変える最善の方法であるかをどのように知っていますか?それでトレーニングデータセットが入ってきます。たとえば、固有の(パフォーマンスが非常に悪い)固有モードを使用する場合は、トレーニングデータを使用して、このデータを最もよく表す固有ベクトルを取得します。次に、2人の顔をそれぞれの顔を固有ベクトルに投影して比較し、ユークリッド距離を使用します。 (これはMahalonobis距離を使用するのと同じです)。

+0

これまでのところ、これらの顔をトレーニングベクトルに対して分解しようとしました。トレーニングセットごとに距離の配列を与えてくれましたが、ユークリッド距離で平均化すると、人は異なる人の顔よりも大きな距離を持っています –

+0

人の集合に類似性を使うことは悪い考えではありません - これを行ういくつかの論文が、より洗練された方法であります。しかし、単純なRGB画像とユークリッドの機能を使用するだけではほとんどの場合動作しません。顔認識はそれよりもはるかに難しい問題です! – dimatura