面部识别的基础
自古以来,人脸就是最直接的识别标准。因此,它被证明是最方便的生物识别技术也就不足为奇了。与语音、指纹、手部几何图形、掌纹等其他生物识别方法不同,分析面部不需要相关对象的积极合作。人脸识别可以通过照片、视频或实时捕捉来完成。
人脸识别是一个广义的术语,用于识别或验证照片和视频中的人物。该方法包括检测、对齐、特征提取和识别。
尽管面临一些实际挑战,但面部识别在医疗保健、执法、铁路预订、安全、家庭自动化和办公室等各个领域得到广泛应用。
在这篇文章中,您将发现以下内容:
- 什么是面部识别?
- 面部识别算法的广泛分类
- 面部识别系统的各个阶段
- 面部识别构建块概述
- 看看面部识别 SDK
什么是人脸识别?
面部识别是一种生物特征识别技术,该软件使用深度学习算法来分析个人的面部特征并存储数据。然后,该软件将来自照片、视频或实时捕获的各种面孔与数据库中存储的面孔进行比较并验证身份。通常,该软件会识别出一个人脸上大约 80 个不同的节点。节点用作定义个人面部变量的端点。变量包括——嘴唇的形状、眼睛的形状、鼻子的长度和宽度以及眼窝的深度。
与其他生物识别技术相比,面部识别的流行源于这样一个事实,即它通常更准确且干扰最少。
人脸识别算法分类 人脸识别是识别已在数据库中注册的人脸的技术。面部识别系统广泛涉及两项任务 - 验证 和身份识别 .
图>验证是为了回答这个问题,“他是他声称的那个人吗?”当个人声称是特定的人时,验证系统会在数据库中找到其个人资料。它将人脸与数据库中存在的个人资料中的人脸进行比较,以检查它们是否匹配。这是一个 1 对 1 匹配系统,因为系统必须将个人的面部与链接的个人资料中已经存在的特定面部进行匹配。因此,验证比识别更快,更准确。
图>在人脸识别中,系统尝试根据其数据库中存在的所有人脸检查输入人脸。这是一个1对n匹配系统。
面部识别系统的各个阶段
让我们谈谈人脸识别系统的两个阶段:注册 和认可 .
图>在第一阶段或注册阶段,注册一组已知人脸。然后特征提取器为每个注册的人脸生成一个唯一的特征向量。特征向量是根据每个人脸的独特面部特征生成的。提取的特征向量对每个人脸都是唯一的,成为注册数据库的一部分,以备将来参考。
图>在识别阶段,将输入图像提供给特征提取器进行人脸识别。在这里,特征提取器也会生成输入人脸图像独有的特征向量。然后将该特征向量与数据库中已有的特征向量进行比较。 “基于特征的分类”块比较输入人脸的人脸特征与数据库注册人脸之间的距离。当注册的人脸满足匹配条件时,基于特征的分类返回数据库中找到的匹配人脸ID。
面部识别系统的构建块
一个人脸识别系统的主要组成部分有:人脸检测、地标检测、活体检测、人脸识别模块(人脸识别、人脸识别/人脸验证)。
图>在开始时,来自视频流的图像或帧被发送到人脸检测模块,在那里从输入图像中检测人脸。作为输出,它发送检测到的人脸的边界框坐标。这里的问题是,即使人脸检测器定位图像的人脸并为每个人脸创建边界框,它也不能保证人脸的正确对齐,并且人脸边界框容易抖动。因此,需要人脸预处理阶段来获得有效的人脸向量。该阶段有助于提高系统的人脸检测能力。
人脸预处理是在地标检测块中完成的,它识别参考点的位置(也称为基准地标点)在脸上,如眼睛、鼻子、嘴唇、下巴、下巴。这些检测到的面部标志然后针对面部的空间变化进行补偿。这是通过识别人脸的几何结构并基于各种变换(如平移缩放旋转)获得规范对齐来完成的。这将输出具有标准化规范坐标的人脸的紧密边界框。
在我们将对齐的面部发送到面部识别模块之前,必须检查面部欺骗以确保面部来自图像或视频的实时馈送,而不是伪造的以获得未经授权的访问。活性检测器会做这个检查。
然后将图像发送到下一个块,即人脸识别块。该块在人脸识别成功完成之前执行一系列处理任务。第一步是人脸处理,需要处理输入人脸的类内变化。这是必不可少的步骤,因为我们不希望人脸识别器模块因输入人脸图像中存在的不同姿势、表情、光照变化和遮挡等变化而分心。在解决了输入人脸中的类内变化之后,下一个重要的处理步骤是特征提取。上面已经讨论了特征提取器的功能。
人脸识别模块的最后一步是人脸匹配步骤,将上一步得到的特征向量与数据库中注册的人脸向量进行比较。在此步骤中,计算相似度,并生成相似度分数,根据需要进一步用于人脸识别或人脸验证。
人脸识别 SDK 示例
图>我们将使用 PathPartner 提供的可授权人脸识别 SDK 软件解决方案来展示如何实施准确的人脸检测和人脸识别系统。 SDK 包含机器学习和计算机视觉算法,可让您执行人脸识别的六项关键任务。
图>SDK 有两种变体:
- 模型大小低至 10MB 的低复杂性变体,适用于内存和处理能力较低的终端设备。
- 模型大小为 90MB 的高复杂性变体,适用于全方位服务的边缘设备。
该算法在德州仪器、高通、英特尔、Arm、NXP等一系列嵌入式平台上进行了优化,可进一步在云服务器平台上工作。
图>开发基于 CNN 的人脸识别系统
基于 CNN 的方法优于非基于 CNN 的方法,以减少应对遮挡和不同光照条件等挑战的工作量。识别过程包括以下步骤:
数据收集
公开可用的数据集并未涵盖对面部识别至关重要的所有评估参数。因此,这需要对许多标准和内部数据集进行详细的基准测试,这些数据集涵盖了可用于面部分析的各种变化。此 SDK 支持以下变体:姿势、光照、表情、遮挡、性别、背景、种族、年龄、眼睛、外观。
深度学习模型设计
模型复杂性取决于最终用户应用程序。该SDK在驾驶员监控系统(DMS)和智能考勤系统中实现。
驾驶员监控系统:为了实时评估驾驶员的警觉性和注意力,需要边缘计算。因此,需要一个健壮的、低复杂性的系统。在这里,机器学习模型用于人脸检测和地标回归,浅层和深层 CNN 模型用于估计和分类。
训练和优化
这些模块在最初准备的数据集上进行了预训练。该解决方案在各种开源数据集(如 FDDB、LFW 和自定义内部开发数据集)上进行了测试。
克服各种挑战
- 光照变化 – 为了克服由于光照条件变化而出现的问题,采用了两种方法。一种是使用基于甘特图的方法将 RGB 转换为类似 NIR 的图像。另一种方法是使用 RGB 数据训练模型,并使用输入的 NIR 图像对其进行微调。
- 姿势和表情变化 – 如果可以从非正面视图获得人脸图像,则需要从一张或多张可用图像中导出人脸图像的规范视图。这是通过基于地标点估计姿势相对于头部角度的变化,然后使用倾斜、拉伸、镜像等操作来获得正面路线来实现的。这使得面部识别系统能够输出姿态不变的表示并显着提高面部识别的准确性。为了对抗由于表情变化造成的影响,在预处理阶段进行人脸对齐。
- 遮挡 – 目前,正在训练 SDK 检测蒙面人脸。在这种情况下,模型被训练为仅处理来自眼睛和额头周围的数据;但是,当系统中注册的人数有限时,这种方法在不受控制的环境(例如办公室设置)中可提供最佳结果。
- 外观变化 – 发型、年龄和化妆品使用的差异会导致个人外表的重大差异。因此,在很大程度上降低了人脸识别的准确性。为了解决这个问题,SDK 使用了一种对外观变化具有鲁棒性的表示和匹配方案。
结论
今天,面部识别被认为是所有生物识别测量中最自然的。深度学习已成为大多数正在开发的人脸识别算法的核心组成部分。面部识别算法正在取得指数级的进步。根据 NIST 最近的一份报告,在过去五年(2013-2018 年)中,识别准确率取得了巨大的进步,超过了 2010-2013 年期间取得的进步。
尽管存在一些实际挑战,但面部识别技术正被广泛应用于各个行业,如零售、汽车、银行、医疗保健、营销等。人脸识别算法除了提高识别人的准确率外,还扩大了检测人脸情绪和行为的范围。
嵌入式