如何处理多张照片中同一个人的脸部描述符?

时间:2017-06-09 11:49:55

标签: artificial-intelligence face-recognition dlib

使用神经网络进行人脸识别,网络将生成一个“面部描述符”,当然,取决于网络,通常是描述一个面部的128D向量(“通常,如果两个面部描述符向量具有欧几里得在他们之间小于0.6然后他们来自同一个人,否则他们来自不同的人。“ 1 )。

我正在尝试开发一种具有面部识别功能的照片应用程序,虽然我不知道如何存储一个人的面部描述符。问题是如何序列化它们,但是当同一个人有数百张不同的照片,但每个照片产生不同的面部描述符时(因为角度,光线等不同),选择存储哪一个?据推测,应该有一种方法来“改进”描述符,因为越来越多的照片被处理,没有训练神经网络。

谢谢!

1 个答案:

答案 0 :(得分:2)

我问过Python face_recognition库的作者Adam Geitgey,他回答说:

  

有几种方法可以解决这个问题:

     
      
  1. 您可以为每个人保留一个面部编码。但是人们往往会随着时间的推移而改变等等。因此,对于大型图像集来说,这可能无法提供最佳准确度。

  2.   
  3. 您可以为每个人进行所有面部编码,并训练一个分类器,该分类器决定哪个人用于新的面部编码。您可以使用SVM分类器,甚至可以使用简单的线性分类器。这是OpenFace使用的策略。不利的一面是,当用户添加并验证新数据时,您必须重复训练新的分类器。

  4.   
  5. 更聪明的方法是使用像Chinese Whispers这样的聚类算法。想法是每个面部编码是图形数据结构中的节点。聚类算法自动对节点进行排序,以便最近距离节点聚集并且可以假设为同一个人。有一个dlib example program(用C ++编写)可以证明这一点。

  6.