如何在没有训练的情况下识别人脸

Posted

技术标签:

【中文标题】如何在没有训练的情况下识别人脸【英文标题】:How to recognize faces without training 【发布时间】:2020-02-19 22:24:17 【问题描述】:

我正在构建一种“人员计数器”,它可以从实时视频片段中获取人脸图像。 如果在某个帧中检测到 人脸,程序将计算该人脸/人。因此,我需要一种方法来检查是否已经检测到特定的面部。

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

为了更好地理解该过程:开始时,当检测到人脸时,会裁剪框架并将(新)人脸保存在文件位置。之后,在后续帧中检测到的人脸需要经过一个过程来检测之前是否检测到相似的人脸并存在于数据库中(如果有,则不应将其添加到数据库中)。

【问题讨论】:

count faces with python and opencv的可能重复 也看***.com/questions/26179052/… 【参考方案1】:

面对一个食谱(双关语!;)这可能是,每一帧:

获取所有帧的所有面孔(使用 opencv,您可以检测并裁剪它们) 为收集的人脸生成人脸嵌入(例如using a tool for the purpose 将所有如此获得的人脸嵌入添加到列表中

使用一些预定义的时间间隔,在收集的人脸嵌入列表上运行聚类算法(另请参阅Face clustering using Chinese Whispers algorithm)。这将允许将属于同一个人的面孔组合在一起,从而计算出现在视频中的人。

一旦集群合并,您可以修剪属于相同集群/人的一些面孔(以节省存储空间以备不时之需)

【讨论】:

如需更详细的计划,请查看pyimagesearch.com/2018/07/09/face-clustering-with-python。如果您可以访问云资源,您还可以考虑利用azure.microsoft.com/en-us/services/cognitive-services/face等工具 所以到你的第二个要点,我需要使用你提供的工具生成人脸嵌入,我一直在查看提供的示例,我似乎找不到任何相关代码来“浓缩”将图像转换为矢量”或者我遗漏了什么......? 我希望 github.com/ageitgey/face_recognition/blob/master/… 的代码 sn-ps 用于该工作:face_image -> 嵌入!我指的是encoding 变量。

以上是关于如何在没有训练的情况下识别人脸的主要内容,如果未能解决你的问题,请参考以下文章

如何从拥抱脸应用预训练的变压器模型?

如何使用地标点识别人脸?

训练后如何查看拥抱脸模型的变化?

中科院DeepMind联手,用深度学习揭示大脑如何识别人脸|Nature子刊

如何从视频中识别人脸识别中的未知人?

HMAX模型中C2层后使用osusvm识别人脸