<p>如果你指的是最先进的技术,那么这里的列表如下:<a href="https://paperswithcode.com/sota/face-verification-on-labeled-faces-in-the" rel="nofollow noreferrer">https://paperswithcode.com/sota/face-verification-on-labeled-faces-in-the</a></p>
<p>目前,ArcFace是最好的评分模型</p>
<p>它使用加性角裕度损失作为人脸识别的高分辨特征</p>
<p>好的是,它可以很容易地进行推广,并且可以基于特征的角度表示和权重向量(包括三重态损耗)设计其他损耗函数</p>
<p>对于你的问题2,它似乎有点模糊。如果您的意思是如何使matchinf更快,那么您可以始终使用集群技术而不是线性搜索</p>
<p>本文还研究了一些加速研究</p>
<p>代码可从以下网址获取:</p>
<p><a href="https://github.com/deepinsight/insightface" rel="nofollow noreferrer">https://github.com/deepinsight/insightface</a>(mxnet)</p>
<p><a href="https://github.com/TreB1eN/InsightFace_Pytorch" rel="nofollow noreferrer">https://github.com/TreB1eN/InsightFace_Pytorch</a>(pytorch)</p>
<p><a href="https://github.com/happynear/AMSoftmax" rel="nofollow noreferrer">https://github.com/happynear/AMSoftmax</a>(caffe)</p>
<p>为了更快地进行推理,您可以只使用两个嵌入之间的L1距离,为了在推理阶段的实际目的,可以使用更简单的距离度量。我建议你通过实验观察哪一个在你训练过的模型中效果最好。其他一些距离度量<a href="https://scikit-learn.org/stable/modules/classes.html#module-sklearn.metrics.pairwise" rel="nofollow noreferrer">https://scikit-learn.org/stable/modules/classes.html#module-sklearn.metrics.pairwise</a></p>
<p>如何从嵌入数据库中检测哪张脸</p>
<ul>
<li><p>最简单的方法是线性扫描。因此,对于数据集中的所有嵌入,计算当前计算的人脸嵌入和来自嵌入数据库的距离度量。选择距离最小的一个。此外,您可能需要指定一个阈值以丢弃未知面。复杂性O(N)</p></li>
<li><p>一个稍微好一点的方法是在人脸嵌入数据集上运行一个无监督的聚类算法来生成多个聚类。假设有k个簇,每个簇中平均有p个面嵌入</p></li>
</ul>
<p>首先搜索所有簇以找到接近当前嵌入O(k)的簇,然后在该簇中运行线性扫描O(p)以找到合适的面</p>
<ul>
<li>之后,它变成了一个数据结构问题。您可以创建一个平衡树以进一步加快匹配速度</李>
</ul>