详细内容或原文请订阅后点击阅览
构建本地人脸搜索引擎——分步指南
构建本地人脸搜索引擎 — 一步一步指南第 1 部分:关于人脸嵌入以及如何动态运行人脸搜索“办公室”演员的面部识别和搜索示例演示在这篇文章(第 1 部分)中,我们将介绍人脸识别和搜索的基本概念,并纯用 Python 实现一个基本的工作解决方案。在本文的最后,您将能够在自己的图像上本地动态运行任意人脸搜索。在第 2 部分中,我们将通过使用矢量数据库来优化接口和查询,扩展第 1 部分的学习。人脸匹配、嵌入和相似性指标。目标:在图像池中找到给定查询人脸的所有实例。我们可以通过基于相似性对结果进行排序来放宽标准,而不是将搜索限制为完全匹配。相似度得分越高,结果匹配的可能性就越大。然后,我们可以只选择前 N 个结果,或者筛选相似度得分高于特定阈值的结果。按相似度(降序)排序的匹配示例。第一个条目是查询人脸。要对结果进行排序,我们需要每对人脸 (其中 Q 是查询人脸,T 是目标人脸)的相似度得分。虽然基本方法可能涉及裁剪人脸图像的逐像素比较,但更强大、更有效的方法是使用嵌入。嵌入是一些输入的学习表示,形式为实值数字列表(N 维向量)。此向量应上限
来源:成为人类在本条目(第1部分)中,我们将介绍面部识别和搜索的基本概念,并纯粹在Python中实施基本的工作解决方案。在文章的末尾,您将可以在本地拍摄自己的图像,即在本地进行任意面对搜索。
在第2部分中,我们将通过使用矢量数据库来优化接口和查询来扩展第1部分的学习。
面对匹配,嵌入和相似性指标。
目标:在图像池中找到给定查询面的所有实例。它仅将搜索限制为精确匹配,我们可以通过基于相似性对结果进行排序来放松标准。相似度得分越高,结果越有可能成为匹配。然后,我们只能选择顶部n个结果,也可以通过超过一定阈值的相似度得分的那些结果过滤。
要对结果进行排序,我们需要每对面的相似性分数(其中Q是查询面,T是目标面)。虽然一种基本方法可能涉及裁剪面部图像的像素像素比较,但更强大,更有效的方法使用嵌入。
嵌入是以真实价值数字列表(n维向量)列表的形式的某些输入的学习表示。该向量应捕获输入的最重要特征,同时忽略多余的方面。嵌入是一种蒸馏和压实的表示。训练了机器学习模型以学习此类表示形式,然后可以为新见过的输入生成嵌入。用用例铰链嵌入在嵌入模型的质量上的质量和实用性,以及用于训练它的标准。
实施和运行面部搜索
让我们跳到实施本地面部搜索的实现。作为要求,您将需要Python环境(≥3.10版)和对Python语言的基本理解。
Insightface Library 提供了ONNX模型查询
目标