基于开源模型搭建实时人脸识别系统(七):人脸比对


基于开源模型搭建实时人脸识别系统(六):人脸识别(人脸特征提取)_CodingInCV的博客-CSDN博客

经过人脸识别后,人脸就由图像变成了一个特征向量,衡量人脸之间的相似度也就转化成了人脸特征向量之间的相似度。

向量距离

向量的距离有多种计算方式,比较常见的是欧式距离、曼哈顿距离和余弦距离。人脸识别中主要使用欧式和余弦距离

欧式距离

欧式距离可以简单的理解为高维空间中2点之间的直线距离。
∑ ( x i − y i ) 2 \sqrt{\sum(x_i-yi)^2} (xiyi)2

余弦距离

余弦距离指的是向量空间中两个向量间的夹角的余弦值,又称作余弦相似度
c o s θ = x → ∙ y → ∣ x ∣ ∗ ∣ y ∣ cos\theta =\frac{\overrightarrow{x}\bullet \overrightarrow{y}}{|x|*|y|} cosθ=xyx y
对于归一化的向量, c o s θ = x → ∙ y → cos\theta ={\overrightarrow{x}\bullet \overrightarrow{y}} cosθ=x y
直接就等于向量的点积,并且和欧式距离是等价的。

人脸识别中的距离

目前,人脸识别训练时都会将特征进行归一化后再计算loss, 因此在识别时也都会将特征进行归一化后再使用,所以余弦距离更适合当前的人脸识别。另一方面,余弦距离的值域为-1到1,用来衡量相似程度也比较直观。

大规模向量检索与近似检索

人脸的底库根据应用规模从几百到上亿,对于规模较大的底库,直接按1:1的方式去遍历计算是比较低效的,实用上会使用矩阵运算的方式批量按1:N或M:N计算。各个平台上都有相应的库来进行矩阵运算。arm上有openblas, x86 cpu上有openblas或者MKL, 英伟达gpu上有cublas。除了这些底层的矩阵运算库之外,还有功能更强大的库和工具,这些工具不仅进行了矩阵运算,还将底库的增删、近似检索等功能都进行了封装,使用比较广泛的有faiss、Milvus等。相对而言,milvus功能更强大也更复杂。

facebookresearch/faiss: A library for efficient similarity search and clustering of dense vectors. (github.com)
milvus-io/milvus: A cloud-native vector database, storage for next generation AI applications (github.com)
microsoft/SPTAG: A distributed approximate nearest neighborhood search (ANN) library which provides a high quality vector index build, search and distributed online serving toolkits for large scale vector search scenario. (github.com)

近似检索

除了使用精确检索外,为了加快检索速度,还有一些近似检索的方法,牺牲部分精度来加速检索。
image.png

本项目的选择

考虑到易用性和本项目的量级,使用faiss-cpu。

结语

这里我们简要介绍了人脸比对中的一些概念。

人脸识别系统项目源码

https://mbd.pub/o/bread/ZJyTmZty

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

CodingInCV

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值