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