如何无需训练就能识别人脸

时间:2019-10-23 15:55:15

标签: python opencv face-detection face-recognition

我正在建立一种“人员计数器”,该计数器可以从实时录像中获取人脸图像。 如果在某帧中检测到 new 面孔,则程序将对该面孔/人进行计数。因此,我需要一种方法来检查是否已检测到特定的面部。

我尝试使用一种训练程序来识别模板图像,以避免多次计数同一张脸,但是由于只有一个模板,因此该系统非常不准确,并且对于提要的每一帧都运行得有点慢。

要更好地理解此过程,请执行以下操作:首先,在检测到脸部时裁剪出帧并将(新)脸部保存在文件位置。然后,在后续帧中检测到的脸部需要经过一个过程,以检测之前是否已检测到相似的脸部并在数据库中存在(如果已检测到,则不应将其添加到数据库中)。

1 个答案:

答案 0 :(得分:0)

每帧可能要面对的一个食谱(!!!):

  • 获取所有帧的所有面孔(使用opencv可以检测到并裁剪它们)
  • 为收集的面部生成面部嵌入(例如using a tool for the purpose <-最有可能是您正在寻找的经过预先训练的组件,并可以“​​压缩”面部图像成向量)
  • 将所有这样获得的面部嵌入添加到列表中

以一定的预定时间间隔,在收集的面部嵌入列表上运行聚类算法(另请参见Face clustering using Chinese Whispers algorithm)。这样一来,就可以将属于同一个人的面孔归为一组,从而对视频中出现的人进行计数。

集群合并后,您可以修剪属于相同集群/人员的某些面孔(以在需要时节省存储空间)