晟辉智能制造

人脸识别技术如何精准识别图像中的脸?

人脸检测与对齐人脸特征提取与比对

人脸识别技术如何精准识别图像中的脸?-图1
(图片来源网络,侵删)

第一阶段:人脸检测与对齐

这个阶段的目标是在一张图片中找到人脸,并将其“标准化”,为后续的特征提取做准备。

步骤 1:人脸检测

目标: 在图片中准确地框出人脸的位置,并确定其边界框。

原理: 这本质上是一个目标检测问题,即在图像中找到特定目标(人脸)的位置,主流技术是基于深度学习的卷积神经网络。

  • 传统方法(已较少使用):

    人脸识别技术如何精准识别图像中的脸?-图2
    (图片来源网络,侵删)
    • 基于特征的方法: 如 Haar 特征 + AdaBoost 算法,这种方法通过计算图像中特定矩形区域的像素值差(眼睛区域比脸颊区域暗)来快速判断是否存在人脸,优点是速度快,但对光照、姿态变化敏感。
    • 基于模型的方法: 如主动形状模型或主动外观模型,这些方法通过统计大量人脸形状和外观来建立一个“平均脸”模型,然后在图像中寻找最符合这个模型的区域。
  • 现代深度学习方法(主流):

    • 核心模型: 卷积神经网络,CNN 能够自动从图像中学习复杂的层次化特征,从边缘、纹理到鼻子、眼睛等面部部件,最终组合成完整的人脸特征。
    • 经典网络:
      • MTCNN (Multi-task Cascaded Convolutional Networks): 这是一个非常经典且高效的实时人脸检测框架,它由三个级联的 CNN 子网络组成,分别执行提议网络边界框回归人脸分类任务,级联结构可以快速丢弃掉大量非人脸区域,只对可能是人脸的区域进行精细计算,从而实现高速度和高精度。
      • YOLO (You Only Look Once), SSD (Single Shot MultiBox Detector): 这些是更通用的目标检测算法,通过修改也可以高效地用于人脸检测,它们的特点是“单次检测”,速度快,适合实时视频流。

输出: 一个或多个包含人脸的矩形框。

步骤 2:人脸对齐

目标: 将检测到的人脸进行几何归一化,消除姿态、旋转和尺度带来的差异,对齐后的图片应该是一个“标准正脸”。

原理: 人脸对齐依赖于人脸关键点检测,也称为人脸地标检测

人脸识别技术如何精准识别图像中的脸?-图3
(图片来源网络,侵删)
  • 关键点检测:

    • 使用一个专门的 CNN 模型(通常是回归网络)来定位人脸上的特定点,常见的有 5点(两眼、鼻尖、两嘴角)、68点(更精细,包括眉毛、眼睑、鼻子轮廓、嘴唇轮廓等)或更多点。
    • 模型通过学习大量标注好关键点的人脸图像,来预测新图像中对应的位置。
  • 对齐变换:

    • 获得关键点后,通过仿射变换相似变换 对原始人脸图像进行拉伸、旋转和缩放。
    • 最常用的方法是“对齐到平均形状”:将检测到的关键点与一个预设的“标准模板”关键点(一个标准的正脸)进行对齐,通过计算变换矩阵,将原图像进行扭曲,使得检测到的关键点与模板关键点重合。
    • 结果: 无论原始照片中的人头是侧脸还是仰头,经过对齐后,都会变成一个大致朝向正前方的、大小统一的图像。

为什么需要这一步? 因为后续的特征提取器假设输入的是一张“标准正脸”,对齐可以极大地减少因姿态变化带来的识别难度,提升模型的鲁棒性。


第二阶段:人脸特征提取与比对

这个阶段是核心,目标是将对齐后的人脸图像转换成一个数学描述(特征向量),然后通过比较这个向量来完成识别。

步骤 3:人脸特征提取

目标: 将一张标准化的人脸图像,转换成一个固定长度的、具有高区分度的数字向量(也称为嵌入向量 Embedding)。

原理: 这是人脸识别技术的“灵魂”,其核心是度量学习

  • 传统方法(已淘汰):

    • PCA (主成分分析): 将人脸图像投影到方差最大的方向上,形成特征脸,这种方法捕捉的是全局的、像素级的统计信息,对光照和表情变化非常敏感,区分度不高。
  • 现代深度学习方法(主流):

    • 核心思想: 设计一个深度神经网络(通常是 CNN),让它学习一个特征空间,在这个空间里,同一个人的不同照片(不同姿态、光照、表情)对应的特征向量距离非常近,而不同人的特征向量距离则非常远
    • 训练方式: 使用大规模带标签的人脸数据集进行训练,训练过程不仅仅是分类(判断这是A、B还是C),更重要的是三元组损失对比损失
      • 三元组损失: 每次训练选取三张图片:锚定图正样本图(同一个人的另一张图)、负样本图(另一个人的图),网络的训练目标是让锚定图与正样本图的特征向量距离尽可能小,同时让锚定图与负样本图的特征向量距离大于一个预设的边界值。
      • 通过这种方式,网络被迫学习到对识别最有用的、能够区分不同人的深层特征,而忽略掉无关的细节(如背景、光照、配饰等)。
    • 经典模型:
      • FaceNet (Google): 开创性地使用三元组损失,其提取的 128 维或 256 维特征向量在当时的学术界和工业界达到了顶尖水平。
      • DeepFace (Facebook): 早期的一个里程碑式模型,通过 3D 对齐和大型深度网络取得了巨大突破。
      • ArcFace / SphereFace / CosFace (近期SOTA): 这些是当前最先进的技术,它们在损失函数上做了创新,ArcFace 直接优化特征向量之间的夹角,使得同类样本的夹角更小,异类样本的夹角更大,从而获得更好的区分度。

输出: 一个固定长度的浮点数向量,[0.123, -0.456, 0.789, ... , 0.321],这个向量就是这个人的“数字身份证”。

步骤 4:人脸比对/识别

目标: 利用上一步得到的特征向量,完成具体的识别任务,如1:1 验证1:N 识别

原理: 这是一个数学计算过程,核心是计算特征向量之间的相似度

  • 距离/相似度度量:

    • 欧氏距离: 计算两个向量在多维空间中的直线距离,距离越小,越相似。
    • 余弦相似度: 计算两个向量之间的夹角余弦值,值越接近 1,表示两个向量的方向越一致,越相似,这是目前最常用的方法,因为它对向量的长度(即特征的“幅度”)不敏感,更关注方向。
  • 识别任务:

    • 1:1 验证 (Verification / Authentication):

      • 场景: 手机解锁、门禁刷卡、身份验证。
      • 过程: 输入两张人脸图片(现场拍摄的照片 vs. 身份证照片),分别提取它们的特征向量 A 和 B,计算 A 和 B 的相似度(如余弦相似度),如果相似度大于一个预设的阈值,则认为是同一个人,验证通过;否则,验证失败。
      • 关键: 阈值的设定,阈值过高,会把真的人拒绝(假阴性);阈值过低,会让假的人通过(假阳性)。
    • 1:N 识别 (Identification):

      • 场景: 公安在逃人员比对、大型会议签到。
      • 过程: 输入一张待识别的人脸图片,提取其特征向量 Q,然后在一个预先建立好的人脸特征库(数据库)中进行搜索,计算 Q 与库中每一个特征向量(如 P1, P2, P3...)的相似度,找到与 Q 相似度最高的那个向量,并将其对应的身份作为识别结果返回,通常也会设置一个阈值,如果最高相似度仍未超过阈值,则返回“未知人员”。
      • 关键: 特征库的大小和搜索效率,对于海量库,会使用近似最近邻搜索 算法(如 FAISS, Annoy)来加速查找,而不是暴力遍历。

一张图看懂流程

graph TD
    A[输入图片] --> B{人脸检测};
    B -- 使用MTCNN/YOLO等 --> C[输出人脸边界框];
    C --> D{人脸对齐};
    D -- 使用关键点检测+仿射变换 --> E[输出标准正脸图];
    E --> F{人脸特征提取};
    F -- 使用FaceNet/ArcFace等深度度量学习模型 --> G[输出特征向量 (Embedding)];
    G --> H{人脸比对/识别};
    H -- 1:1验证 --> I[计算两张图特征向量的相似度];
    H -- 1:N识别 --> J[在特征库中搜索最相似的向量];
    I --> K{相似度 > 阈值?};
    J --> L{返回最相似的身份};
    K -- 是 --> M[验证通过/是同一个人];
    K -- 否 --> N[验证失败/不是同一个人];
    L -- 相似度 > 阈值 --> O[返回身份];
    L -- 相似度 <= 阈值 --> P[返回“未知人员”];
    subgraph 核心技术
        B; D; F; H;
    end

现代图片人脸识别技术是一个端到端的深度学习系统,它通过检测和对齐将非结构化的图像数据转化为结构化的、标准化的输入,再通过深度度量学习将这些输入映射到一个具有区分度的特征空间,最后通过简单的数学运算完成最终的比对和识别任务,其成功的关键在于海量数据的训练和精心设计的损失函数,使得模型能够学习到对身份识别最本质、最鲁棒的特征。

分享:
扫描分享到社交APP
上一篇
下一篇