顔認識は正確にはどのように機能するのでしょうか? 誰もが異なる顔を持っているため、「一般的な」顔などを検出することはできません。
4 に答える
ジュン・チャン 他 (1997) は、コンピューター ビジョンに適用可能な 3 つの異なる顔認識方法を調査しています。それぞれが独自の統計分析の注目すべき領域です。
1) Eigenface アルゴリズム
2) エラスティック マッチング
3) 自動関連付けと分類ネット
固有顔法は、何らかの形式の次元削減法 (PCA など) を使用して、顔画像間の統計的変動をエンコードします。この場合、特徴空間で結果として生じる特徴的な違いは、目、耳、鼻などの孤立した顔の特徴 (他のつまり、特徴ベクトルの必須コンポーネントは事前に決定されていません)。
エラスティック マッチングは、目、あご、鼻の先端など、顔の特定の輪郭点に対応するノード グラフ (つまり、ワイヤーフレーム モデル) を生成し、既知のデータベースに対する画像グラフの比較に基づいて認識します。マッチング プロセス中に画像グラフを回転させることができるため、このシステムは画像の大きな変動に対してよりロバストになる傾向があります。
分類ネット認識は、エラスティック マッチングと同じ幾何学的特性を利用しますが、教師あり機械学習手法 (多くの場合、サポート ベクター マシンの使用を伴う) であるという点で根本的に異なります。
固有顔検出は、照明や顔の位置合わせの変動が大きい場合、他の方法よりもパフォーマンスが低下する可能性がありますが、実装が簡単で、計算効率が高く、教師なしで顔を認識できるという利点があるため、デファクト スタンダードになる傾向があります。最先端の検出技術の多くは、特徴ベクトル抽出の処理が異なる場合でも、認識前に何らかの形式の次元削減に依存しています。
ここで答えを見つけることができます:顔認識
すべての顔には、顔の特徴を構成するさまざまな山と谷という、多数の識別可能な目印があります。FaceIt は、これらのランドマークを節点として定義します。人間の顔にはそれぞれ約 80 個の節点があります。ソフトウェアによって測定されるこれらの一部は次のとおりです。
* Distance between the eyes
* Width of the nose
* Depth of the eye sockets
* The shape of the cheekbones
* The length of the jaw line
これらの節点は、データベース内の顔を表すフェイスプリントと呼ばれる数値コードを作成するために測定されます。
開始するのに適した方法は、主成分分析(PCAは固有顔とも呼ばれます)、フィッシャーの線形判別分析(LDA)、およびサポートベクターマシン(SVM)について読むことです。これらは、顔の分類に非常に役立つ分類方法です。
OpenCVには、PCAとSVMの優れた実装がすでに含まれています。C ++でのOpenCVの顔認識と分類コードの優れたリソースは、このWebサイトです。
顔の分類に最も関連する方法のリソースと論文へのリンクを提供する1つのWebサイトはこれです。
私の最初の顔分類プログラムに非常に役立つ、Matlabのサンプルコードを使用したPCA固有顔とLDAのよく説明された例はここにあります。
これは多くの学習を必要とする複雑なテーマです。OpenCV - http://opencv.willowgarage.com/wiki/ - チュートリアルなどを備えたコンピューター ビジョン ライブラリを見ることから始めることをお勧めします。部分的には、「一般的な顔」ではなく、機能の選択に関するものです。次に、それらのフィーチャの距離や相対的な向きなどのメトリックを実行します。