の顔をいくつか認識しましcv2.createEigenFaceRecognizer
た。しかし、私が知りたいのは、入力された顔が計算された固有顔にどの程度似ているかを知ることです。アイデアは、データベースにない人を再認識できるということです。
編集:
例: モデルで顔 A、B、C をトレーニングすると、顔 C と D が表示されます。顔 C と D を区別できるようにしたいと考えています。
ありがとう!
次のドキュメントで、しきい値の設定に関するセクションを見つけることができますcv::FaceRecognizer
。
これは、OpenCV Python Wrapper でも同じように機能します。これはhelp(cv2.createFaceRecognizer)
、Python で呼び出したときに簡単に確認できます。
Help on built-in function createEigenFaceRecognizer in module cv2:
createEigenFaceRecognizer(...)
createEigenFaceRecognizer([, num_components[, threshold]]) -> retval
したがって、しきい値を使用してモデルを作成するコードでは、しきい値を に設定します100.0
。これを下回るものはすべて-1
予測に含まれます。つまり、この顔はunknown
:
# Create the Eigenfaces model. We are going to use the default
# parameters for this simple example, please read the documentation
# for thresholding:
model = cv2.createEigenFaceRecognizer(threshold=100.0)
デモに示されているように、次の方法で予測と関連する信頼度 (トレーニング データセット内の最近傍までの距離) を取得できます。
[predicted_label, predicted_confidence] = model.predict(image)
したがって、サブジェクトA
、B
、C
およびしきい値を使用してモデルをトレーニングすると、 、 while 、またはの予測が認識されるはずですD
。事実を考えると、しきい値を使用しています。-1
A
B
C
モデル全体を再評価せずに新しい顔を繰り返し追加する場合。これは、Eigenfaces または Fisherfaces メソッドでは不可能です。FaceRecognizer::train
モデルを学習するには、常にこれら 2 つのアルゴリズムを呼び出す必要があります。で作成できる Local Binary Patterns Histograms (LBPH) モデルはcv2.createLBPHFaceRecognizer
、他のトレーニング サンプルを再計算せずにモデルを更新することをサポートします。これに関する API ドキュメントを参照してください。