face_recognition库在后台如何工作?

时间:2020-07-16 12:26:05

标签: deep-learning face-recognition dlib

我正在使用面部识别库来检测面部。该模型从图像中获取128个嵌入。要检查两个面是否匹配,它将检查这两个点之间的距离是否小于0.6。我不确定两个图像之间的距离是什么意思。根据我的理解,这是否意味着比较已知图像中两点之间的距离,以及我们希望其识别的图像中两点之间的距离。我在网上找不到任何文档。请帮助

2 个答案:

答案 0 :(得分:1)

face_recognition软件包在后台使用dlib。 Dlib构建一个resnet模型,它是CNN模型。 resnet模型的输出层有128个节点。换句话说,当您将面部图像输入到resnet模型时,它将生成128维矢量。一些消息人士称这种表示形式。

当比较两个面部图像时,将它们都分别馈送到resnet模型。因此,您将有两个128D向量作为输出。

最后,您需要找到这两个向量的相似性。查找余弦相似度和欧式距离是查找相似度的最常用方法。 dlib的作者发现已调整的欧氏距离阈值为0.6。如果您将使用余弦相似度,则阈值将非常不同。

问题是如何确定此阈值?他将正负两个对数传递给resnet模型,找到表示形式,最后找到每个对的欧几里得距离。

当您具有正例和负例的距离值时,则可以将其提供给基本的决策树算法,例如ID3,C4.5,CART或CHAID。它将找到最佳分割点来确定。

答案 1 :(得分:0)

face_recognition问题形成如下:

特征是每个数据点有两张图片,标签是这两个图片是否针对同一个人(二进制分类),但网络是在没有分类层的情况下构建的。训练模型后,输出称为嵌入。对网络进行训练,以使同一个人的模型输出(嵌入)之间的距离较小,而不同的人则较大。您可以使用余弦距离作为度量标准来获取两个向量之间的距离,等等。

注意:这是关于face_recognition的工作原理非常抽象的想法,如果您需要更多详细信息,可以阅读此paper