首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何有效地存储FaceNet数据?

如何有效地存储FaceNet数据?
EN

Stack Overflow用户
提问于 2021-05-10 05:21:32
回答 3查看 200关注 0票数 0

我正在使用Facenet算法进行人脸识别。我想在此基础上创建应用程序,但问题是Facenet算法返回一个长度为128的数组,这是每个人的面部嵌入。

对于身份识别,我必须找出两个人的人脸嵌入之间的欧几里得差异,然后检查它是否大于阈值。如果是,那么人是相同的;如果是少,那么人是不同的。

假设我必须在10k人的数据库中找到x人。我必须计算每个人的嵌入的差异,这是没有效率的。

有没有办法高效地存储这个人脸嵌入,并以更高的效率搜索到那个人?

我想阅读这篇博客会对其他人有所帮助。

它是详细的,也涵盖了实现的大部分方面。

Face recognition on 330 million faces at 400 images per second

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2021-05-14 16:02:29

建议您将它们存储在redis或cassandra中。它们的性能将超过关系数据库。

这些键值存储可以将多维向量存储为值。

您可以使用deepface找到嵌入向量。我在下面分享了一个示例代码片段。

代码语言:javascript
复制
#!pip install deepface
from deepface import DeepFace
img_list = ["img1.jpg", "img2.jpg", ...]

model = DeepFace.build_model("Facenet")
for img_path in img_list:
    img_embedding = DeepFace.represent(img_path, model = model)
    #store img_embedding into the redis here
票数 0
EN

Stack Overflow用户

发布于 2021-05-11 13:20:54

听起来你想要最近的邻居搜索。您可以查看各种空间分区数据结构,如kd-tree

票数 0
EN

Stack Overflow用户

发布于 2021-05-12 14:51:35

首先制作一个包含10000个人脸编码的字典,如Face_recognition示例所示,然后将其存储为pickle文件。当加载到内存中时,它将花费一秒钟的时间来查找X人脸编码和10000个预编码的编码之间的距离。take a look how it works我正以这样的方式面对数以百万计的面孔。

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

https://stackoverflow.com/questions/67462421

复制
相关文章

相似问题

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