创建人脸搜索引擎(如 Amazon Rekognition)

问题描述 投票:0回答:2

我长期以来一直在考虑创建一个大型数据库来通过面部照片搜索人员。

这是一篇硕士学位的论文。我自己的工作正在进行中,但我想我会在这里问,因为我确信有人对如何做到这一点有更好的想法。

目前的工作流程:

  1. 有一个包含人脸照片的大型数据库(数据集)
  2. 查找照片中的面孔
  3. 人脸集中
  4. 将人脸转化为矩阵(量化人脸的 128 维特征向量)

还有一些问题... 为此使用的最佳算法是什么?您会使用哪一个? VGG-Face、Google FaceNet、OpenFace、Facebook DeepFace、DeepID、ArcFace、Dlib ....

如果您已经找到了获取人脸矩阵的算法,您将如何存储这些数据,以便可以使用另一张人脸的矩阵来搜索它?

你将如何存储这些矩阵?你会在它们上训练神经网络吗?

您会使用最近邻算法吗?

优化问题

拥有数百万张面孔,如何存储它们以及如何从中快速获得搜索结果?

总结我的问题:您将采取哪些步骤来创建这样一个面部搜索引擎?

我决定问这个问题是因为我想听到关于这个问题的新观点,随着我越沉浸,我就越困惑。

我很高兴听到您对此问题的解决方案。或者建议使用什么数据库来快速搜索矩阵或类似的东西。

谢谢!

deep-learning neural-network face-recognition face-detection
2个回答
1
投票

我的建议是:

  • 使用 InsightFace 进行人脸检测、识别、嵌入等;
  • 使用 Elasticsearch 存储、索引和搜索/比较人脸嵌入;
  • 将面部图像存储为文件,而不是斑点

0
投票

根据我的实验,Facenet 和 ArcFace 的性能优于 Vgg-Face、OpenFace 等。当您向这些模型提供面部图像时,它们将返回一个向量。例如,deepface 库具有用于此任务的代表函数。

您不必从头开始训练模型,您可以使用预先训练的模型,并且 Deepface 已经附带了所有这些预先训练的模型。

一旦找到面部数据库的矢量表示,就应该将这些嵌入存储到矢量数据库中,例如 milvus、weaviate 或 pinecone。

您可以考虑使用 Spotify Voyager、Spotify Annoy 或 Facebook Faiss 等索引,而不是使用矢量数据库。但是当数据变得非常大时,数据库相对于索引的优势是能够将数据分布到不同的集群中。

向量数据库使用 hnsw 算法来查找给定嵌入的最近邻居。即使在千亿张面孔中,你也能在几毫秒内找到相似的面孔。

面临的挑战是提前提取面部数据库的嵌入并将其存储到数据库/索引中。

© www.soinside.com 2019 - 2024. All rights reserved.