首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >矢量搜索人脸识别中的虚拟向量及其性能测量

矢量搜索人脸识别中的虚拟向量及其性能测量
EN

Data Science用户
提问于 2021-05-27 16:28:05
回答 1查看 85关注 0票数 0

我有大约数千人的脸(从名人数据集LFW),其中每个人代表512 x 1矢量。将其存储在矢量数据库中,构建了基于嵌入式特征的人脸搜索系统(MTCNN用于人脸检测,弧面用于嵌入模型)。有人建议我将许多向量作为“虚拟脸”添加到具有未知类的数据库中(向量的数量大于个人类)。

我还不清楚为什么我需要添加许多未知的面孔作为“未知”类,并将其与来自每个人的数千个向量放在一起。据我所知,仅从已知的向量(来自每个人的向量)获得相似度分数,而不使用未知的向量,就可以很容易地检查性能,例如,如果我使用k = 3k = 5,我将以最小的距离作为结果,得到向量的类(ID或label)。

EN

回答 1

Data Science用户

回答已采纳

发布于 2021-05-27 18:15:50

不,制造假人不知道不是最好的方法。

一个更好的方法是,如果一个新面孔出现,我们计算出新面孔的向量与所有已知人脸的向量之间的距离。为了识别正确的人脸,考虑了最小距离。但这个最小距离也应该低于一个阈值。如果最小距离高于阈值,则将其视为未知人脸。阈值是手动设置的。

给你个主意,这是个假例子-

假设你有5张已登记(已知)的脸。其载体为1 3. 5。假设您的模型用形状为1x1的向量表示每一张脸。

将阈值设置为0.4

您的距离函数定义为abs(vector1 - vector2)。

设想1-

一个新面孔出现,您的模型生成一个向量2.2。

因此,您可以计算出新面孔与已知面孔之间的距离,即- 1.2 1.2 3.2。

您的最小距离是0.2,它小于您的阈值0.4。因此,这张新面孔被认定为"2第二张脸“。

设想2-

一个新面孔出现,您的模型生成一个向量7.5。

因此,您可以计算出新面孔与已知面孔之间的距离,即- 6.5 4.5 2.5。

您的最小距离是2.5,超过您的阈值0.4。因此,这张新面孔被认定为“未知”面孔。

最后,

正如您所提到的,您可以使用基于KNN的方法。虽然它会产生非常准确的结果,但它的规模可能不太好。随着数据库中的面数增加,KNN方法将放慢速度。

票数 0
EN
页面原文内容由Data Science提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://datascience.stackexchange.com/questions/94983

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档