人脸识别之人脸关键特征识别

0 评论 8355 浏览 17 收藏 11 分钟

编辑导语:当下人脸识别在生活中被应用得愈加广泛。那么,人脸识别是如何对人脸关键特征进行识别的?在前面文章里,作者对人脸识别的图像预处理进行了介绍。本篇文章中,作者则介绍了人脸识别的关键特征识别,让我们一起来看一下。

在上次人脸识别之图像预处理中,我们增加了预处理环节、排除环境和其他因素的干扰,将注意力集中在人脸上,提升识别效果。

人脸识别的基本原理-3

人脸比对是通过计算两张照片灰度值矩阵的距离来实现的,图像预处理通过各种手段拉近了两个矩阵间的距离,从而让计算出来的结果更精准。

但这样就够了吗?我们的计算是基于像素点的灰度值开展的,在计算中,各个像素点都参与运算,具有同等的重要性,对结果的贡献度也是一样的。这种设计是否合理,计算的粒度是否太细而影响结果的可靠性?

从直觉上判断,图像中像素的重要性程度肯定不一样,比如眼睛、鼻子、嘴巴等部位的像素重要性应该更高,对结果有更大的影响。而脸部中间部位的像素重要性比较低,甚至都没有参与运算的必要性。

研究表明,确实有很多像素没有参与运算的必要,这些像素被去除后不影响识别结果,还可以加快识别速度,并提升模型鲁棒性。比如,在基于像素级别的人脸对比中,通过在图像中加入一些噪声,衍生出对抗攻击,从而让识别出现错误。

一、人脸特征

不管是传统的机器识别,还是近几年大火的深度学习,都是将人类的学习能力通过计算机的计算能力得到表达和迁移。仔细想想,当我们将注意力集中在脸部,会怎么样描述一个人。可能的描述会是:

人脸识别的基本原理-3

人天生就有很强的抽象和学习能力。当我们面对一张人脸照片时,会自动进行特征处理和变换。当再次面对这张照片时,即使脸部特征有所变形或者缺失,也不影响我们的识别。

人的这种抽象、变换及补全能力却是计算机所缺少的,我们可以模仿人眼的这种识别手段,让计算机将注意力转移到鼻子、嘴巴等重要特征上,从而拥有部分程度的智能。

在计算机存储的时候,不再是整个脸部的信息,而是眼睛、鼻子、嘴巴等脸部部件,通过这些部件间的比对来判断是否为同一对象。这种方法叫做基于人脸关键特征的识别技术,通常是通过边缘、轮廓检测来实现的。

二、边缘检测

什么是边缘?通俗来说就是眼睛、鼻子等外部轮廓,在灰度图像中就是一些灰度值变化明显的点,这些变化反映了图像的重要程度或所蕴含的信息。

直观上看,图像的边缘附近的值出现明显的分割,灰度值变化较大,而图像中比较平滑的部分,其灰度值变化较小。对于计算机来说,可以通过灰度阶的变化来对图像信息进行边缘检测。

这背后有数学理论的支撑,我们一般用梯度来描述变化快慢。在图像中的灰度变化既有方向也有大小,就可以使用图像梯度来描述这种变化,进而可以检测出图像的边缘。

在数学上,梯度既有大小,又有方向,并且需要要有一定的条件,比如可导等。在图像中一般会简化处理,使用算子进行代替。

算子其实也是一种滤波,但使用算子更强调其数学含义和特定用途。目前常用的边缘检测算子,包括Sobel,Laplacian算子和Canny等。我们简单描述下Canny边缘检测。

Canny边缘检测

Canny边缘检测是澳洲计算机科学家 约翰坎尼(John F. Canny)于1986年开发出来的一个多级边缘检测算法,其目标是找到一个最优的边缘,其最优边缘的定义是:

  • 最优检测——算法能够尽可能多地标示出图像中的实际边缘,漏检和误检的概率非常小;
  • 最优定位——检测出的边缘要与实际图像中的实际边缘尽可能接近;
  • 检测点与边缘点一一对应——算子检测的边缘点与实际边缘点应该是一一对应的。

Canny边缘检测分为如下几个步骤。

1)图像去噪

噪声会影响边缘检测的准确性,因此首先要将噪声过滤掉,通常使用高斯滤波。

2)计算梯度的幅度与方向

使用高斯滤波器来进行计算,让距离中心点越近的像素点权重越大。

3)梯度非极大值抑制

对像素点进行遍历,判断当前图像是否为局部最大值,即是否是周围像素点中具有相同梯度方向的最大值。如果不是,则不是图像的边缘点,将灰度值置零,让边缘“变瘦”。

4)使用双阈值算法确定最终的边缘

经过前面的步骤已经基本可以得到图像的边缘,接下来对得到的边缘进行修正。

设置两个阈值:高阈值和低阈值。保留比高阈值高的边缘,去除低于低阈值的边缘,处于中间部分的则其连接情况进行再次处理:仅保留与其他边缘连接的部分。

三、轮廓检测

通过算子计算出来的边缘一般是不连续的,很难形成相对完整和封闭的目标轮廓,这样提取出来的特征效果可能不好。通过使用轮廓检测算法,可以忽略背景和目标内部的纹理以及噪声干扰的影响,对边缘进行细化并进行连接,解决那些不能依靠亮度建模而检测出来的纹理边界。

轮廓检测也有一些方法,比如使用专门设计的检测算子等。通过使用这些算子,可以生成更好的脸部特征,有利于后续的计算和比对。

四、实现过程

以上简单描述了人脸关键特征的计算方法。在实际应用中,需要借助于统计分析的技术,从大量的人脸中找到对应的特征,并通过训练出不同的分类器,如嘴巴分类器、眼睛分类器等,从而实现人脸及关键部位的检测。

在进行比对时,需要对包含脸部的所有可能检测窗口进行穷举搜索,得到关键部位信息,并进行存储或比对,这个过程相对比较耗时。在比对过程中,可以使用各个部位进行相似性比对,并进行结果合并;或者直接对包含各个部件的全局特征进行比对,直接输出比对结果。

这两种方法同样对应着人类的识别过程,有研究表明,儿童识别目标(如人脸)往往依据目标的某些局部特征,而成年人则侧重于记住目标的全局。

人脸特征的探测也可作为一种图像预处理手段,如果确定了两眼的位置,得到两眼间的距离,依此就可得到人脸的尺度大小,进行尺度标准化处理,解决人员距离采集器远近的问题。

五、算法评价

从理论上来说,人脸的关键部位特征相对比较稳定,对人脸、方向等没有过多要求,通过算法提取的特征能准确反映对象的特征,具有一定的不变性,保证了结果输出的一致性,能够满足人脸识别在早期各应用场景的使用。

当然,这里面的算子设计和模型构建都需要有领域知识的支撑。算子的构建、特征的提取以及模型的建立都影响着最终的匹配结果,需要具有深厚的专家知识和经验。这个过程往往是手工建模完成的,各个模型及参数的设置都比较耗时,具有一定的主观性。

同时,特征工程的适配性较差。比如,各地区人员脸部特征不同,会导致已经调整好的算法在落地时,需要手动多次调整参数,过程耗时、耗力,严重阻碍了算法的大规模部署。

虽然,从表面上看,基于人脸关键特征的识别方法有诸多缺点,且效率较低。但算法能够从人类的先验知识出发,直观而朴素,一定程度上推动了人脸识别技术的发展和普及,为后续更智能的算法奠定了基础。

 

作者:AIoT产品,10年B端产品设计经验;微信公众号:AIoT产品

本文由@AIoT产品 原创发布于人人都是产品经理。未经许可,禁止转载

题图来自Unsplash,基于CC0协议

更多精彩内容,请关注人人都是产品经理微信公众号或下载App
评论
评论请登录
  1. 目前还没评论,等你发挥!