顔検出= 顔が画像に写っているという事実を識別し、画像内のどこにあるかを特定します。
顔認識= 顔を既知の人物の身元と照合すること、または複数の顔画像が同一人物の画像であるという事実に基づいて互いに照合すること。
あなたのウェブカメラは(少なくとも)顔検出を行うと言います。あなたの質問は、認識も行いたいことを示しています。
これらのプロセスはどちらも、画像内の高レベルの不変条件を抽出する必要があります。これらの不変の特徴表現の計算は、最新のコンピューター ビジョンの最先端にあります。単純にピクセル値をハッシュすることは、これとは何光年も離れています。画像のハッシュは、1 つのチャネルで 1 つのピクセルの強度が 1 レベルでも変化するとすぐに、任意の程度に異なります。そしてもちろん、そのような小さな変更は、画像内の顔のアイデンティティを変更しません. ピクセル レベルでのはるかに大きな変化であっても、必ずしもアイデンティティが変わるとは限りません。頭の回転、さまざまな照明条件、ひげ/サングラス/髪型の変化などが原因である可能性があります。
Web カメラが「顔を検出する」と言う場合、それは Web カメラの製造元が提供する顔検出技術によるものですか? その場合は、API ドキュメントから始めてください。顔認証にも対応しているかも?それを確認してから、「顔認識ライブラリ」をグーグルで検索して、この複雑な問題に対する他のソフトウェアのアプローチを比較してください。
さらに検討することを決定する可能性のあるオプションの 1 つは OpenCV です。これには Python バインディングがあり、検出 (CascadeClassifier
オブジェクトを使用) と認識 (を使用FaceRecognizer
) の両方のツールが含まれています。ここにチュートリアルがあります: http://docs.opencv.org/2.4/modules/contrib/doc/facerec/tutorial/facerec_video_recognition.html
ほとんどの「認識」アプローチは監視されています「トレーニングセット」を事前に指定する必要があるという点で。アプリケーションでこれが可能になる場合があります。たとえば、写真に写る人物を前もって知っていて、それぞれの写真が ID に関連付けられている場合です。(たとえば、Facebook の顔認識は、人々が以前に写真の顔にタグを付けたことがあるという事実を利用して、特定のアイデンティティに関連付けられた画像に複数のトレーニング ポイントを提供することができます。) そうでない場合は、考え出す必要があります。オンザフライでトレーニングセットを構築し、継続的または定期的にトレーニングを更新するスキーム。顔認識問題のこの特定のサブタイプは、「教師なし顔クラスタリング」と表現できます。つまり、事前にそれらのアイデンティティを知らずに顔画像をグループ化します。Facebookもこれをある程度行っています。これは最先端の最先端にさらに近いものであり、おそらくコンピュータ サイエンスの文献を調べて、それがどのように行われたかを理解する必要があります。たとえば、ここを参照してください。http://bitsearch.blogspot.com/2013/02/unsupervised-face-clustering-with-opencv.html