只需 2 张图像即可自动进行人脸验证

问题描述 投票:0回答:5

问题陈述:

给定两张图像,例如下面布拉德·皮特的两张图像,判断图像中是否包含同一个人。困难在于,我们每个人只有一张参考图像,并且如何确定任何其他传入图像是否包含同一个人或没有。

enter image description here

一些研究:

有几种不同的方法可以解决这个任务,这些是

  1. 使用颜色直方图
  2. 面向关键点的方法
  3. 使用深度卷积神经网络或其他机器学习技术

直方图方法涉及根据颜色计算直方图并在它们之间定义某种度量,然后确定阈值。我尝试过的一种是“地球移动者距离”。但这种方法缺乏准确性。 因此,最好的方法应该是第二种和第三种方法的某种混合,以及一些预处理。 对于预处理,要执行的明显步骤是:

运行 Viola-Jones 等人脸检测并分离包含人脸的区域
  1. 将所述面转换为灰度
  2. 可能使用 opencv 的 haar_cascades 运行眼睛、嘴巴、鼻子检测算法
  3. 根据找到的地标对齐面部图像
  4. 所有这一切都是使用opencv完成的。

提取

SIFT

和 MSER 等特征可产生 73-76% 的准确度。经过一些额外的研究,我发现了这篇使用 fisherfaces 的论文。事实上,opencv 现在能够创建fisherface 检测器并对其进行训练,这一点非常好,而且效果非常好,达到了耶鲁大学数据集论文所承诺的准确性。 问题的复杂性在于,就我而言,

我没有包含同一个人的多张图像的数据库

来训练检测器。我所拥有的只是与一个人相对应的单个图像,并且给定另一个图像我想了解这是否是同一个人。 所以我有兴趣知道的是` 有人尝试过类似的事情吗?我应该研究哪些论文/方法/图书馆?

您对如何解决问题有什么建议吗?

image-processing machine-learning computer-vision
5个回答
4
投票

检测人脸(sample_face)
  • 使用 dlibcompute_face_descriptor 获取人脸描述符(128D 向量)(检查
  • link
  • 获取您想要识别人脸的新图片
  • 检测人脸并计算描述符(让我们调用 test_face)。
  • 计算test_face描述符和所有sample_faces描述符之间的欧氏距离
  • 为 test_face 分配具有最小欧氏距离的类(人名)。
  • 尝试一下,如果你开始获得良好的结果,你可以尝试面部对齐。


0
投票

但我建议看看

OpenFace

,它具有非常高的准确性。 Github 上有该项目的实现。 谢谢


0
投票

使用一个人的单个图像,您无法预测它是同一个人,因为您需要在不同的光强度、角度和许多其他不同场景下针对该人的不同图像来训练您的模型。

我仍然想尝试这个链接:

http://hanzratech.in/2015/02/03/face-recognition-using-opencv.html

您至少可以找到一些与图像匹配的内容。


0
投票


-1
投票
所以我有兴趣知道的是`有没有人尝试过 排序?

是的。现在是 2017 年,面部识别已经研究了几十年。

我应该研究哪些论文/方法/库?

谷歌向您抛出的任何搜索“单张图像/样本人脸识别”的内容

您对如何解决问题有什么建议吗?

见上文

提取 SIFT 和 MSER 等特征可产生 73-76% 的准确率。

我怀疑人类的面部识别能力是无与伦比的,仅凭一张图像作为参考就可以表现得更好。我的意思是,我无法确定那是布拉德·皮特,还是只是长得很像,而且我在成百上千张照片和几个小时的电影中见过他……

© www.soinside.com 2019 - 2024. All rights reserved.