有没有办法比较两张脸(也许用OpenCv)并得到他们的相似度分数?我的意思是应用面部识别算法,但仅限于 2 个面之间,而不是整个数据集。
问题是,例如,Eigenfaces需要至少 2 个训练图像。
有没有办法比较两张脸(也许用OpenCv)并得到他们的相似度分数?我的意思是应用面部识别算法,但仅限于 2 个面之间,而不是整个数据集。
问题是,例如,Eigenfaces需要至少 2 个训练图像。
是的,你绝对可以使用特征脸。训练人脸与您要比较的两张人脸进行面部识别无关。拥有一个包含 100 张面孔的训练面孔库。然后比较你的两张脸(face_1 和 face_2),用你的训练库中的 100 张脸对每张脸进行特征脸分解。因此,例如 face_1 = [2 3 1 5...]*[eigFace1 eigface2 eigface3 eigface4...]' 和第 2 面相同。我在上面的示例 [2 3 1 5...] 中显示的那个向量,在某种距离算法(无论是欧几里德距离还是其他距离度量)中比较你的两个面部分解中的每一个。如果距离在某个阈值内,那么您可以说它们是相同的。请记住,如果您使用特征面,则姿势、光照条件、大小、所有训练图像的背景和背景以及您尝试比较的人脸都必须进行归一化。眼睛、鼻子、嘴巴也必须尽可能对齐。
这篇文章很好地解释了整个人脸识别过程。使用face_recognition库,即使只有一张图像,您也可以识别一个人,然后尝试在另一张图像中识别该人。这是可能的,因为神经网络已经过训练。
试着忘记,你比较面孔。查找两张照片的 SURF 关键点,匹配它们的描述符。作为照片相似度的得分,使用匹配描述符的数量与所有描述符的数量之比。
您可以使用来自 openbr 的比较功能。它为您提供两个面孔的匹配百分比。
它根据正版和冒名顶替者的最小值、最大值、平均值、标准差来给出这个值。