本文目录导读:

计算人脸相似度,本质上是比较两张人脸图片在特征空间中的距离或相似程度,现代主流方法都基于深度学习。
以下是目前最常用、最有效的计算流程和核心原理:
核心流程:三步走
无论使用哪种具体算法,流程基本一致:
- 人脸检测与对齐:在图片中找到人脸的位置(坐标框),并关键点(眼睛、鼻子、嘴巴)将其校正为正面、归一化的标准脸。
- 特征提取:将预处理后的人脸图像输入一个预训练的深度学习模型(如 FaceNet, ArcFace, CosFace),输出一个固定长度的特征向量(例如512维或128维的浮点数数组),这个向量被称为“人脸嵌入向量”。
- 相似度计算:计算两个特征向量之间的距离或相似度,数值越小(距离越小)或越大(相似度越高),说明两个人脸越像。
常用的相似度计算方法
在得到两个特征向量后,通常使用以下两种数学方法:
余弦相似度 (Cosine Similarity)
- 原理:计算两个向量之间夹角的余弦值,值越接近1,说明方向越一致(越相似)。
- 公式: [ \text{similarity} = \cos(\theta) = \frac{\mathbf{A} \cdot \mathbf{B}}{|\mathbf{A}| |\mathbf{B}|} ]
- 特点:对向量的绝对长度不敏感,更关注方向,这是最常用的方法,尤其在 FaceNet、ArcFace 等模型中默认使用。
- 判定:通常设定阈值,比如相似度 > 5 认为是同一个人(非标准值,具体取决于模型和任务)。
欧几里得距离 (Euclidean Distance)
- 原理:计算两个点在多维空间中的直线距离,数值越小,表示越相似。
- 公式: [ \text{distance} = \sqrt{\sum_{i=1}^{n} (A_i - B_i)^2} ]
- 特点:对向量的位置和长度都敏感,通常在模型的嵌入向量被 L2归一化(即模长为1)后,余弦相似度与欧几里得距离在数学上是正相关的(只是顺序相反)。
- 判定:设定阈值,如距离 < 0 认为是同一个人。
其他方法
- 皮尔逊相关系数:实际上是数据中心化后的余弦相似度,也常用。
- 曼哈顿距离 / 汉明距离:在某些老旧算法或二值化特征(如 FaceNet 的量化版本)中会用。
主流深度学习模型如何得到特征向量?
这些模型不是直接算“长相”,而是通过大量数据训练,学会提取最具区分度的特征。
- Loss函数(核心):如 ArcFace 或 CosFace,它们在训练时,让同一人的特征向量在空间中尽可能聚集(类内距离小,如0.5),不同人的特征向量尽可能分散(类间距离大,如1.5),这样训练出来的模型对姿态、光照、角度、遮挡具有鲁棒性。
- 输出:模型中间层或最后一层全连接层之前(去掉分类层)的输出就是128维或512维的特征向量。
实际应用中的注意事项
- 图像质量是关键:光照差、模糊、大角度侧脸、分辨率过低都会大幅降低相似度,所以很多系统会先做质量筛选。
- 阈值调整:阈值不是固定的,不同模型、不同数据集、不同安全等级需求(如金融支付 vs 门禁),阈值需要根据测试集的FAR(误识率) 和 FRR(拒识率) 曲线来调节。
- 低阈值(如0.3):容易放行,但可能误判为同一人。
- 高阈值(如0.8):安全性高,但可能拒绝了本人。
- 活体检测:仅凭人脸相似度是不够的,还需要配合活体检测(眨眼、张嘴、光线变化等)防止照片或视频攻击。
| 方法 | 核心思想 | 常用场景 | 输出范围 |
|---|---|---|---|
| 深度学习特征 + 余弦相似度 | 提取固定维度的“人脸数字指纹”,计算方向一致性 | 绝大多数现代系统 | [ -1, 1 ] (>0.5 视为同一人) |
| 深度学习特征 + 欧几里得距离 | 计算“人脸数字指纹”在空间中的绝对距离 | 配合L2归一化后,与余弦等价 | [0, +∞) (<1.0 视为同一人) |
| 传统方法 (如LBP, HOG等) | 手工特征 + 相似度距离 | 基本被淘汰,在极低算力场景偶用 | 取决于具体特征 |
一句话回答:现在最主流的方法是,先用深度学习模型(如ArcFace)将两张人脸各自转换成一个512维的特征向量,然后计算这两个向量的余弦相似度,数值越接近1说明越像。
版权声明:NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播