3、Embedding 核心概念:什么是人脸 Embedding、维度、距离度量(欧氏距离、余弦相似度)及其意义

人脸识别系统在完成人脸检测与对齐后,下一个关键步骤便是将人脸图像转化为计算机能够理解和比较的数学表示。这种表示就是人脸 Embedding(嵌入向量)。理解 Embedding 的本质、维度选择以及距离度量方式,是掌握安防摄像头人脸识别比对逻辑的基础。本章将深入剖析这些核心概念,并解释它们在实际安防场景中的具体意义。

人脸 Embedding 核心概念关系图 人脸图像 (检测+对齐后) 深度神经网络 (FaceNet/ArcFace等) Embedding 向量 [0.12, -0.45, ..., 0.87] 维度: 128 / 256 / 512 距离度量方式 欧氏距离 (L2) d = √(Σ(aᵢ - bᵢ)²) 衡量空间距离 值越小 → 越相似 阈值示例: < 0.6 判定为同一人 余弦相似度 cos(θ) = (A·B) / (|A|·|B|) 衡量方向一致性 值越大 → 越相似 阈值示例: > 0.7 判定为同一人 安防应用场景 白名单比对 | 陌生人告警 | 人员检索

3.1 什么是人脸 Embedding

人脸 Embedding 本质上是一个固定长度的浮点数向量,它由深度卷积神经网络从人脸图像中提取得到。这个向量不是随机的数字集合,而是经过大量人脸数据训练后,网络学习到的一种紧凑且具有判别力的特征表示。在理想情况下,同一个人的不同照片(不同角度、光照、表情)所生成的 Embedding 向量在特征空间中距离很近,而不同人的 Embedding 向量距离较远。

以安防摄像头场景为例,当摄像头抓拍到一张人脸时,系统并不会直接存储原始图片用于后续比对(这既占用存储空间,又涉及隐私问题),而是提取其 Embedding 向量并存储。一个 128 维的 float32 向量仅占用 512 字节,相比一张几十 KB 的 JPEG 图片,存储效率提升了数十倍。更重要的是,向量化的表示使得数学计算成为可能,系统可以通过向量运算快速完成大规模比对。

Embedding 的生成过程可以理解为一种"语义压缩"。原始图像包含数百万像素的冗余信息,而 Embedding 则提炼出与身份判别最相关的核心特征。例如,ArcFace 算法通过附加角边距损失函数,使得学习到的 Embedding 在超球面上具有更好的类内紧凑性和类间分离性。这意味着,即使面对侧脸、戴口罩(部分遮挡)或低光照条件下的图像,高质量的 Embedding 依然能保持一定的鲁棒性。

核心要点:Embedding 不是图像本身,而是图像的"身份指纹"。它通过深度学习模型将高维像素空间映射到低维特征空间,同时保留了对身份判别至关重要的几何与纹理信息。

3.2 Embedding 的维度选择

Embedding 的维度是模型设计中的一个关键超参数。常见的人脸识别模型使用 128 维、256 维或 512 维的向量。维度选择需要在识别精度、计算效率和存储开销之间取得平衡。

维度 存储占用 (float32) 典型模型 适用场景 特点
128 512 字节 FaceNet (早期) 小型门禁、低算力设备 计算快,精度相对较低
256 1 KB ArcFace (MobileFaceNet) 中端安防摄像头、边缘盒子 平衡精度与速度
512 2 KB ArcFace (ResNet100) 高端服务器、大规模检索 精度高,计算量大

在实际安防项目中,选择维度时需要综合考虑硬件平台的算力。例如,一台配备 4 核 ARM 处理器的边缘计算盒子,如果使用 512 维 Embedding 进行 1:N 比对(N 为白名单人数),当 N 达到 10000 时,每次比对需要计算 10000 次向量距离,512 维的浮点运算量会显著增加延迟。而 128 维虽然计算更快,但在复杂场景(如远距离、低分辨率抓拍)下可能产生更多误识别。

另一个值得注意的维度问题是"维度灾难"。理论上,维度越高,表达能力越强,但当维度超过一定范围后,继续增加维度带来的精度提升会迅速衰减,反而增加了过拟合风险和计算负担。业界实践证明,256 维是当前安防场景下性价比最高的选择,这也是许多商用 SDK(如虹软、旷视)默认采用 256 维的原因。

3.3 距离度量:欧氏距离与余弦相似度

有了 Embedding 向量后,如何判断两个向量是否代表同一个人?这就需要定义距离度量函数。安防系统中最常用的两种度量方式是欧氏距离和余弦相似度,它们从不同角度衡量向量间的差异。

3.3.1 欧氏距离(L2 距离)

欧氏距离计算的是两个向量在特征空间中的直线距离,公式为:

d(p, q) = √[(p₁-q₁)² + (p₂-q₂)² + ... + (pₙ-qₙ)²]

其中 p 和 q 是两个 n 维 Embedding 向量。欧氏距离的值域为 [0, +∞),值越小表示两个向量越接近。在安防场景中,通常设定一个阈值(如 0.6),当距离小于阈值时判定为同一人。

欧氏距离对向量的数值敏感。如果两个 Embedding 向量在数值上整体偏大或偏小(例如由于光照变化导致特征值整体偏移),欧氏距离可能会产生较大误差。因此,使用欧氏距离前通常需要对向量进行 L2 归一化,使所有向量落在单位球面上。

3.3.2 余弦相似度

余弦相似度衡量的是两个向量在方向上的一致性,公式为:

cos(θ) = (p·q) / (|p| × |q|)

余弦相似度的值域为 [-1, 1],值越接近 1 表示方向越一致,即越相似。它不关心向量的长度,只关注方向差异。对于经过 L2 归一化的向量,余弦相似度与欧氏距离存在单调关系:cos(θ) = 1 - d²/2。这意味着在归一化条件下,两种度量方式在排序上是等价的,但阈值设定不同。

在实际安防系统中,选择哪种度量方式取决于模型训练时的损失函数设计。例如,ArcFace 使用余弦角度间隔损失,其输出的 Embedding 更适合用余弦相似度进行比对;而 CosFace 同样基于余弦度量。如果模型在训练时使用了三元组损失(Triplet Loss),则欧氏距离更为自然。

经验建议:在项目落地时,不要盲目更改模型默认的距离度量方式。如果使用 ArcFace 预训练模型,请优先使用余弦相似度,并参考模型发布方提供的推荐阈值(通常为 0.6~0.7)。自行调整度量方式可能导致识别性能大幅下降。

3.4 距离度量的实际意义与阈值设定

距离度量不仅仅是数学公式,它直接决定了安防系统的两个关键指标:误识率(FAR,False Acceptance Rate)和拒识率(FRR,False Rejection Rate)。这两个指标此消彼长,阈值的选择就是在这两者之间寻找平衡点。

  • 误识率(FAR):将陌生人错误识别为白名单成员的概率。阈值越宽松(如余弦相似度阈值设为 0.5),FAR 越高,安全风险越大。
  • 拒识率(FRR):将白名单成员错误拒绝的概率。阈值越严格(如余弦相似度阈值设为 0.9),FRR 越高,用户体验越差。

在安防场景中,通常更倾向于降低 FAR,因为陌生人闯入的代价远高于白名单成员被拒绝的代价。例如,在写字楼门禁场景,如果 FAR 过高,非本公司人员可能被放行,造成安全隐患。因此,工程上往往将阈值设定在 FAR 低于 0.1% 的水平,即使这意味着 FRR 会上升到 5% 左右。

阈值设定还需要考虑具体场景的摄像头质量。室内固定摄像头(光线稳定、距离近)可以设定较严格的阈值;而室外摄像头(光照变化大、距离远、可能逆光)则需要适当放宽阈值,否则会导致大量白名单成员无法通过验证。

3.5 案例拆解:某园区安防系统的阈值调优

某科技园区部署了 12 台人脸识别摄像头,用于员工考勤和访客管理。系统采用 ArcFace 模型,输出 256 维 Embedding,使用余弦相似度进行比对。初始阈值设为 0.65,运行一周后出现以下问题:

  • 员工反馈:部分员工在逆光或戴口罩时无法通过闸机,需要反复摘口罩或调整角度(FRR 过高)。
  • 安全部门反馈:有 3 次陌生人尾随进入事件,事后调取录像发现系统未产生告警(FAR 偏高)。

项目组决定进行阈值调优。首先,收集了 2000 张员工人脸照片和 500 张访客照片作为测试集。计算所有员工两两之间的余弦相似度分布,以及员工与访客之间的相似度分布。分析发现:

  • 同一员工不同照片的相似度集中在 0.72~0.88 之间,均值 0.79。
  • 不同员工之间的相似度集中在 0.35~0.55 之间,均值 0.45。
  • 员工与访客的相似度集中在 0.30~0.50 之间,均值 0.42。

根据分布数据,项目组绘制了 ROC 曲线,发现当阈值设为 0.72 时,FAR 降至 0.05%,FRR 为 3.2%,满足园区安全要求。同时,针对逆光场景,项目组在摄像头端增加了宽动态功能,并调整了抓拍角度,使得员工正脸抓拍质量提升,相似度分布整体上移。最终将阈值设定为 0.70,并增加了"二次验证"机制:当相似度在 0.65~0.70 之间时,触发二次人脸抓拍比对,若两次结果一致则放行。

调优后运行一个月,员工通过率从 92% 提升至 98.5%,陌生人告警准确率从 78% 提升至 95%。这次调优的代价是增加了约 10% 的比对计算量(二次验证),但换来了安全性和用户体验的双重提升。

风险提示:阈值调优不能仅依赖理论计算,必须结合现场数据。不同摄像头安装角度、光线条件、人员流动密度都会影响相似度分布。建议在项目上线初期设置 1~2 周的"影子模式"(只记录不拦截),积累真实数据后再确定最终阈值。

3.6 常见误区与总结

在实际项目中,工程师常陷入以下误区:

  1. 误区一:认为维度越高越好。高维度确实能提升精度,但会显著增加计算量和存储成本。在边缘设备上,512 维的比对速度可能只有 256 维的 60%。应根据硬件算力选择合适维度。
  2. 误区二:混淆欧氏距离和余弦相似度的阈值。两者在归一化条件下虽然排序等价,但数值范围完全不同。将余弦相似度阈值 0.7 直接套用到欧氏距离上(期望距离小于 0.7)会导致严重误判。
  3. 误区三:忽略 Embedding 的归一化。如果模型输出未经过 L2 归一化,直接计算余弦相似度会得到错误结果。务必确认预处理流程中是否包含归一化步骤。
  4. 误区四:静态阈值一劳永逸。季节变化(夏季强光、冬季暗光)、设备老化、人员妆容变化都会影响 Embedding 分布。建议每季度评估一次阈值,必要时进行微调。