编辑导语:当下人脸识别在生活中被应用得愈加广泛。那么,人脸识别是如何对人脸关键特征进行识别的?在前面文章里,作者对人脸识别的图像预处理进行了介绍。本篇文章中,作者则介绍了人脸识别的关键特征识别,让我们一起来看一下。
在上次人脸识别之图像预处理中,我们增加了预处理环节、排除环境和其他因素的干扰,将注意力集中在人脸上,提升识别效果。
人脸比对是通过计算两张照片灰度值矩阵的距离来实现的,图像预处理通过各种手段拉近了两个矩阵间的距离,从而让计算出来的结果更精准。
但这样就够了吗?我们的计算是基于像素点的灰度值开展的,在计算中,各个像素点都参与运算,具有同等的重要性,对结果的贡献度也是一样的。这种设计是否合理,计算的粒度是否太细而影响结果的可靠性?
从直觉上判断,图像中像素的重要性程度肯定不一样,比如眼睛、鼻子、嘴巴等部位的像素重要性应该更高,对结果有更大的影响。而脸部中间部位的像素重要性比较低,甚至都没有参与运算的必要性。
研究表明,确实有很多像素没有参与运算的必要,这些像素被去除后不影响识别结果,还可以加快识别速度,并提升模型鲁棒性。比如,在基于像素级别的人脸对比中,通过在图像中加入一些噪声,衍生出对抗攻击,从而让识别出现错误。
一、人脸特征
不管是传统的机器识别,还是近几年大火的深度学习,都是将人类的学习能力通过计算机的计算能力得到表达和迁移。仔细想想,当我们将注意力集中在脸部,会怎么样描述一个人。可能的描述会是:
人天生就有很强的抽象和学习能力。当我们面对一张人脸照片时,会自动进行特征处理和变换。当再次面对这张照片时,即使脸部特征有所变形或者缺失,也不影响我们的识别。
人的这种抽象、变换及补全能力却是计算机所缺少的,我们可以模仿人眼的这种识别手段,让计算机将注意力转移到鼻子、嘴巴等重要特征上,从而拥有部分程度的智能。
在计算机存储的时候,不再是整个脸部的信息,而是眼睛、鼻子、嘴巴等脸部部件,通过这些部件间的比对来判断是否为同一对象。这种方法叫做基于人脸关键特征的识别技术,通常是通过边缘、轮廓检测来实现的。
二、边缘检测
什么是边缘?通俗来说就是眼睛、鼻子等外部轮廓,在灰度图像中就是一些灰度值变化明显的点,这些变化反映了图像的重要程度或所蕴含的信息。
直观上看,图像的边缘附近的值出现明显的分割,灰度值变化较大,而图像中比较平滑的部分,其灰度值变化较校对于计算机来说,可以通过灰度阶的变化来对图像信息进行边缘检测。
这背后有数学理论的支撑,我们一般用梯度来描述变化快慢。在图像中的灰度变化既有方向也有大小,就可以使用图像梯度来描述这种变化,进而可以检测出图像的边缘。
在数学上,梯度既有大小,又有方向,并且需要要有一定的条件,比如可导等。在图像中一般会简化处理,使用算子进行代替。
算子其实也是一种滤波,但使用算子更强调其数学含义和特定用途。目前常用的边缘检测算子,包括Sobel,Laplacian算子和Canny等。我们简单描述下Canny边缘检测。
Canny边缘检测
Canny边缘检测是澳洲计算机科学家 约翰坎尼(John F. Canny)于1986年开发出来的一个多级边缘检测算法,其目标是找到一个最优的边缘,其最优边缘的定义是:
最优检测算法能够尽可能多地标示出图像中的实际边缘,漏检和误检的概率非常小;
最优定位检测出的边缘要与实际图像中的实际边缘尽可能接近;
检测点与边缘点一一对应算子检测的边缘点与实际边缘点应该是一一对应的。
Canny边缘检测分为如下几个步骤。
1)图像去噪
噪声会影响边缘检测的准确性,因此首先要将噪声过滤掉,通常使用高斯滤波。
2)计算梯度的幅度与方向
使用高斯滤波器来进行计算,让距离中心点越近的像素点权重越大。
3)梯度非极大值抑制
对像素点进行遍历,判断当前图像是否为局部最大值,即是否是周围像素点中具有相同梯度方向的最大值。如果不是,则不是图像的边缘点,将灰度值置零,让边缘“变瘦”。
4)使用双阈值算法确定最终的边缘
经过前面的步骤已经基本可以得到图像的边缘,接下来对得到的边缘进行修正。
设置两个阈值:高阈值和低阈值。保留比高阈值高的边缘,去除低于低阈值的边缘,处于中间部分的则其连接情况进行再次处理:仅保留与其他边缘连接的部分。
三、轮廓检测
通过算子计算出来的边缘一般是不连续的,很难形成相对完整和封闭的目标轮廓,这样提取出来的特征效果可能不好。通过使用轮廓检测算法,可以忽略背景和目标内部的纹理以及噪声干扰的影响,对边缘进行细化并进行连接,解决那些不能依靠亮度建模而检测出来的纹理边界。
轮廓检测也有一些方法,比如使用专门设计的检测算子等。通过使用这些算子,可以生成更好的脸部特征,有利于后续的计算和比对。
四、实现过程
以上简单描述了人脸关键特征的计算方法。在实际应用中,需要借助于统计分析的技术,从大量的人脸中找到对应的特征,并通过训练出不同的分类器,如嘴巴分类器、眼睛分类器等,从而实现人脸及关键部位的检测。
在进行比对时,需要对包含脸部的所有可能检测窗口进行穷举搜索,得到关键部位信息,并进行存储或比对,这个过程相对比较耗时。在比对过程中,可以使用各个部位进行相似性比对,并进行结果合并;或者直接对包含各个部件的全局特征进行比对,直接输出比对结果。
这两种方法同样对应着人类的识别过程,有研究表明,儿童识别目标(如人脸)往往依据目标的某些局部特征,而成年人则侧重于记住目标的全局。
人脸特征的探测也可作为一种图像预处理手段,如果确定了两眼的位置,得到两眼间的距离,依此就可得到人脸的尺度大小,进行尺度标准化处理,解决人员距离采集器远近的问题。
五、算法评价
从理论上来说,人脸的关键部位特征相对比较稳定,对人脸、方向等没有过多要求,通过算法提取的特征能准确反映对象的特征,具有一定的不变性,保证了结果输出的一致性,能够满足人脸识别在早期各应用场景的使用。
当然,这里面的算子设计和模型构建都需要有领域知识的支撑。算子的构建、特征的提取以及模型的建立都影响着最终的匹配结果,需要具有深厚的专家知识和经验。这个过程往往是手工建模完成的,各个模型及参数的设置都比较耗时,具有一定的主观性。
同时,特征工程的适配性较差。比如,各地区人员脸部特征不同,会导致已经调整好的算法在落地时,需要手动多次调整参数,过程耗时、耗力,严重阻碍了算法的大规模部署。
虽然,从表面上看,基于人脸关键特征的识别方法有诸多缺点,且效率较低。但算法能够从人类的先验知识出发,直观而朴素,一定程度上推动了人脸识别技术的发展和普及,为后续更智能的算法奠定了基矗
作者:AIoT产品,10年B端产品设计经验;微信公众号:AIoT产品
本文由@AIoT产品 原创发布于人人都是产品经理。未经许可,禁止转载
题图来自Unsplash,基于CC0协议