编者按:如今,人脸识别已经在我们的生活中处处可见——无论是政府布置在大街小巷的“天眼”,还是手机软件中用于验证用户个人身份的确认手段,刷脸解锁、刷脸支付……每个人与生俱来的这张“独一无二”的脸正在取代数字密码,成为虚拟世界中的身份证明。小编没有iPhone XS,所以就在这里推荐一篇人脸识别入门佳作吧~
人脸识别是计算机视觉的一个子领域,它的应用范围非常广泛,现在已经成为世界各地的企业争相竞逐的新技术之一。考虑到市场的盈利现状,未来这项技术还会有更大的需求空间,所以作为机器学习的学习者,自己动手去从头开始构建一个人脸识别工具很有价值。
本文就是如何构建人脸识别器的一则指南,在文章中,首先我们会介绍这项技术的基本原理,然后用一个简单案例演示如何用Python来实现。
在理解人脸识别的工作原理之前,我们先来看看什么是特征向量。
机器学习算法的本质是将数据集中的所有样本作为输入,从数据中学习“知识”,简而言之,算法会遍历数据并识别数据中的模式。以人脸识别为例,如果我们希望给定一幅图像,算法能识别出图像中的人是谁,那么这时它识别到的模式其实有很多种:
-
有时长度/宽度的具体数值可能是不可靠的,因为它们会随着图像缩放不断变化,但即使在重新缩放之后,某些数据还是会始终保持不变——脸部的长宽比率
-
五官的形状,如嘴、鼻子等
显然,它们有一个共识——不同人脸的脸部长宽比、五官、肤色等是不同的。如果两张人脸很相似,那它们在这些方面的差异就比较小。这就引出了最具挑战性的一个步骤:把特定人的面部转换成数字表示——机器学习算法只能理解数字。
这种“人脸”(或训练集中特征)的数字表示就是我们所说的特征向量,它包含按特定顺序排列的一系列数字。
为了方便理解,下面举一个简单的例子,我们可以将“人脸”映射到一个特征向量,该特征向量可以包含各种特征,例如:面长(cm)、面宽(cm)、平均肤色(RGB)、嘴唇宽度(cm)、鼻子长度(cm)。
基本上,给定一个图像,我们可以绘制出各种特征并将其转换为特征向量,如:
综合来看,我们用这些代码做到了: 上面的输出清楚地表明这个简单人脸识别算法的效果非常好,让我们尝试用另一个图像替换my_image : 再次运行算法时,输出变成了这样: 显然,马云不在我们的“语料库”中。 人脸识别是一个有趣的问题,关于它的研究比较成熟,这项技术也被广泛应用于工业界和学术界。“歌神”张学友之所以能成为“逃犯克星”,演唱会现场布置的先进人脸识别摄像头功不可没,这也是人脸识别用于减轻犯罪的一个典例。此外,这项技术还有许多应用: 总而言之,人脸识别已经开始从各个方面服务社会,虽然某些商业化应用会存在道德风险,但这些都不应成为阻碍技术发展的绊脚石。 |