在超市、商场或者一些连锁店,都逐渐支持支付宝的刷脸支付这一付款方式,相信大家或多或少都有见过,甚至用过(有优惠)。这种方式无须手机进行输入密码或者指纹确认,你的脸就是支付密码。换句话说,每个人的脸就充当了其支付宝的支付密码,而刷脸则是支付密码确认的过程。不知道大家有没有想过,这刷脸是如何识别的呢?要知道计算机只认识二进制0和1,百般面孔,不说存储了,它是如何能识别书不同的面孔的呢?此篇文章就简单介绍下人脸识别这一技术。
就拿支付宝刷脸支付为例子,人脸识别的过程相当于付款的时候输入支付密码一样,你的脸就相当于支付密码,过程可简单理解为将脸拍照拍下来,然后跟当初你设置密码时的人脸进行比较,比较后发现是同一个人,则完成支付(密码输入正确)。从以上过程来看,人脸识别的过程为:人脸检测、人脸匹配。
在使用刷脸支付的时候,你会发现有的时候脸其实没有正对着屏幕,但是也能检测出人脸,这是因为在人脸检测后,进行了人脸对齐操作,让人脸识别功能更加灵活、准确。我们人类能通过眼睛大小,头发颜色等等信息轻松的分辨不同的两张人脸,可是电脑怎么分辨呢?没错,我们得量化它们,测量出他们的不同,所以在人脸匹配之前,我们需要进行人脸编码的过程。于是人脸识别的过程可简单分为四个步骤:人脸检测、人脸对齐、人脸编码、人脸匹配。下面便来详细了解下着四个过程。
人脸检测。在进行刷脸支付的时候,你需要对着屏幕拍一张照片来进行身份核实,这第一步即时检查照片中的是不是一个人脸,不管这个脸是谁,都会标记出人脸的坐标信息,或者将人脸切割出来。如果你随便拍个物件上去,检测到这不是个人脸,那么后面的步骤也就不必进行了。那如何检测是否为人脸呢?现在有的可靠解决方案是HOG(Histogram of Oriented Gradients)方向梯度直方图,一种能够检测物体轮廓的算法(此处不再详细介绍,感兴趣的同学可以查阅相关资料进行了解)。通过此算法,我们把原始图像转换成一个非常简单的HOG表达形式,它可以很轻松的捕获面部的基本结构,如下图:
人脸对齐。对于电脑来说朝向不同的人脸是不同的东西,为此我们得适当的调整扭曲图片中的人脸,使得眼睛和嘴总是与被检测者重叠。简单来讲即时人脸对齐是将不同角度的人脸图像对齐成同一种标准的形状。先定位人脸上的特征点,然后通过几何变换(仿射、旋转、缩放),使各个特征点对齐(将眼睛、嘴等部位移到相同位置)。
人脸编码。人脸图像的像素值会被转换成紧凑且可判别的特征向量,这也被称为模板(template)。理想情况下,同一个主体的所有人脸都应该映射到相似的特征向量。
人脸匹配。在人脸匹配构建模块中,两个模板会进行比较,从而得到一个相似度分数,该分数给出了两者属于同一个主体(同一个人脸)的可能性。
参考资料:
[1] 赵强 .人脸识别的工作原理是什么
[DB/OL].https://www.zhihu.com/question/20588370/answer/1067805211 ,2020-03-09
[2] leon1741. 深入浅出人脸识别原理
[DB/OL].https://blog.csdn.net/LEON1741/article/details/81358974 ,2018-08-02