提取人脸嵌入——人脸识别

Extract face embedding - face recognition

我想训练一个神经网络从图像中提取许多 (128) 个面部特征。

这些特征是测量诸如眼睛中部之间的距离或左眼中部与嘴巴中点之间的距离之类的数字。

我需要这个来找出两张面孔之间的差异:给定一个包含用户的数据库,通过分析一张照片,我将能够判断它是否是 Jhon 的照片。

我开始使用 this link 进行研究,其中指出:研究人员发现,最准确的方法是让计算机自行收集测量值。

好的,所以网络的输出是一个包含 128 个数字的数组,我将使用一些公式来调整权重,以使输出数字尽可能准确。

我应该使用什么作为输入?我的输入节点是三张照片吗,就像this文章中那样,我将根据比较提取特征照片之间?

我的第一个想法是让你使用像 Openface 这样的库,它已经用很多人脸训练过并且有很好的人脸表示(与你需要的相同的 128 个维度)。

但是,您提到要自己训练它。我建议您开始了解 Siamese Neural Networks。孪生神经网络接收一对图像(真正的一对——例如来自同一个人的图像;冒名顶替的一对——例如来自不同人的图像)并尝试学习 similarity/dissimilarity 度量(也称为度量学习)。这对于学习面部嵌入非常有用,因为您的目标似乎与此相关。他们基本上学习了一种将输入图像映射到 "benefits comparison" 的表示的方法。其他实现(如 OpenFace)使用三元组嵌入进行训练,您收到的不是一对图像,而是一个三元组(两个相似,一个不同)。

这里有一些从 Siamese Networks 开始的参考资料:

请记住,训练这些架构非常困难,因为选择最佳对是问题中非常重要且具有挑战性的部分。一篇提到创建图像对的一些挑战但与人脸无关的论文是 one

希望对您有所帮助!