2 つの顔の類似性の測定値を見つけようとしています。私はOpenCVを使用しています。そのために、私は 1000 人の異なる人物の 1000 枚の写真を使用して Eigenfaces / Fisherfaces をトレーニングします (各人に 1 枚の写真)。したがって、トレーニング セットには 1000 個のラベルもあります。
これで、predict メソッドを使用して、最も類似した顔を取得できます。
2 つの未知の顔画像を入力して、両方がトレーニング セット内の同じ顔のベクトルに似ているかどうかを確認したいと考えています。
これは、最も類似した (距離が最も短い) ラベルを返す openCV のコードです。
for(size_t sampleIdx = 0; sampleIdx < _projections.size(); sampleIdx++) {
double dist = norm(_projections[sampleIdx], q, NORM_L2);
if((dist < minDist) && (dist < _threshold)) {
minDist = dist;
minClass = _labels.at<int>((int)sampleIdx);
}
質問:
これを書き直して、トップ 1 だけでなくトップ 10 の顔を出力する方法を教えてもらえますか? 私はそれらを優先キューに入れることを考えていますが、もしかしたらもっと簡単な方法があるのでしょうか?!
トレーニングでは、すべての顔を同じラベルまたは異なるラベルに配置する必要がありますか? では、1 つのラベルまたは 1000 のラベルを使用する必要がありますか?
乾杯