你还记得电影里的这些情节吗?《变形金刚2》中,年轻的男主角和他的小伙伴们过关卡时,虽然骗过了值班军人,却被军方的人脸识别技术发现。2014年翻拍版的《机械战警》中,机械战警第一次面对大众公开亮相,就在人群中不停地扫描所有人脸,同时将获取的人脸在通缉犯资料库中作比对,瞬间就发现看热闹的人群中有一个逃逸多年的通缉犯,并将其制服。其他还有许多电影中,但凡是美国的机要部门,进门就要扫描各种生物特征,从早年电影中的指纹、虹膜,到现在的人脸。
人脸识别到底是什么?
人脸识别,是视觉模式识别的一个细分问题,也大概是最难解决的一个问题。
其实我们人每时每刻都在进行视觉模式识别,我们通过眼睛获得视觉信息,这些信息经过大脑的处理被识别为有意义的概念。于是我们知道了放在我们面前的是水杯、书本,还是什么别的东西。
我们也无时无刻不在进行人脸识别,我们每天生活中遇到无数的人,从中认出那些熟人,和他们打招呼,打交道,忽略其他的陌生人。甚至躲开那些我们欠了钱还暂时还不上的人。
然而这项看似简单的任务,对机器来说却并不那么容易实现。
对计算机来讲,一幅图像信息,无论是静态的图片,还是动态视频中的一帧,都是一个由众多像素点组成的矩阵。比如一个1080p的数字图像,是一个由1980*1080个像素点组成矩阵,每个像素点,如果是8bit的rgb格式,则是3个取值在0-255的数。
机器需要在这些数据中,找出某一部分数据代表了何种概念:哪一部分数据是水杯,哪一部分是书本,哪一部分是人脸,这是视觉模式识别中的粗分类问题。
而人脸识别,需要在所有机器认为是人脸的那部分数据中,区分这个人脸属于谁,这是个细分类问题。
人脸可以分为多少类呢?
取决与所处理问题的人脸库大小,人脸库中有多少目标人脸,就需要机器进行相应数量的细分类。如果想要机器认出每个他看到的人,则这世界上有多少人,人脸就可以分为多少类,而这些类别之间的区别是非常细微的。由此可见人脸识别问题的难度。
更不要提,这件事还要受到光照,角度,人脸部的装饰物等各种因素的影响。这也不难解释为什么人脸识别技术目前还没有大量应用在日常生活中,大部分人只能在科幻电影中接触人脸识别了。
傻傻分不清楚——一些容易被混淆的概念
一些不太被人熟悉的事物,经常会伴随着大量的概念混淆。
比如对西方宗教不太了解的国人,可能搞不清楚为什么有些人信上帝但不信耶稣;都是在教堂工作的大叔,为什么有些要禁欲,有些却能结婚。
而人脸识别作为一个新事物,也伴随着大量的概念混淆,而分清这些概念,对于理解人脸识别还是比较重要的。
人脸检测与人脸识别
完成人脸识别的工作,要经过几个步骤。首先计算机需要在图像或视频中找到人脸的位置,这部分工作一般叫做人脸检测。如前所述,这是一种粗分类,具体到人脸检测中,实际上是二分类,计算机只需要判断目标图像是或者不是人脸。但由于并不能事先确定人脸的大小和位置,计算机需要以每个可能的人脸大小对全图进行扫描,逐个判断子窗口所截取的图像是否为人脸。而每次扫描过程,子窗口移动的步长可能是几个像素。
所以你可以大致想象下,作一张图的人脸检测,计算机需要作多少次二分类判断。
人脸检测步骤从一张图中获得人脸的位置和大小,并将该部分图像送给后续步骤,包括:人脸部件点定位,人脸图像的对齐和归一化,人脸图像质量选取,特征提取,特征比对。所有步骤完成后,才能得知该人脸的身份。
当然,我们也可以单独使用人脸检测功能来完成某些应用,比如当前大部分照相机,及手机摄像头都有人脸检测功能,可以自动获得人脸位置,从而对图片作一些自动调焦和优化。甚至对人脸做一些初步的判断,比如性别、年龄,甚至颜值。
1v1人脸验证与1vN人脸查找
主人公通过各种方式,蒙混过层层身份验证,成功进入某机要部门,这是电影中经常出现的情节。而这层层的身份验证就经常包括人脸识别。在这种应用中,使用者往往需要提供自己的身份。
比如使用门卡,计算机可以通过门卡在后台中获取门卡所有者的人脸样本,将其与当前使用门卡人的人脸图像进行对比,以确认当前使用门卡的人与门卡的所有者是否匹配,如此可以避免捡到你门卡的人轻松混入公司。
这是一种1v1的身份验证,计算机对当前人脸和库存人脸进行一次比对,是对其他验证方式的一种辅助,从而提高身份验证的可靠性。这种应用目前已经大量使用,比如敏感设施的准入,互联网金融领域的远程开户及大额提取的身份验证等。
文章开始时提到的《机械战警》中的桥段,则是1vN的人脸查找。机械战警可以联机查找一个保存了所有通缉犯数据的人脸库,每次他遇到一个人,都会先获取该人的人脸信息,用所获得信息去通缉犯数据库中去逐个比对,如果发现匹配度足够高的,就当场抓捕。每次人脸识别,计算机要作n次人脸比对,n为待识别库中的人脸模板数。
如果要求计算机只凭借人脸识别出一个人的身份,这实际上也是一种1vN的人脸查找,其目标人脸库是一个由n个人脸组成的“熟人库”,随着n的增大,准确识别的难度也会增大,一次识别所需要的计算时间也会增加。我们可以考虑一下,一个普通人能对多少个人脸进行准确识别?大概也就在几十个这个数量级上吧。
而目前最好的人脸识别技术实际上已经超过了这个水平。
例如国内顶级的人脸识别公司,一般会有一面屏幕墙,演示公司各个摄像头所拍摄到人员活动,并对身份进行准确识别,而公司内一般维护一个百人数量级的人脸库。但如果N再继续增大,达到千人库,万人库,那么实时查找唯一的匹配人脸就成为一种科幻要求了,在较大的人脸库应用中,一般会降低对实时性的要求,并且只要求查出前m名非常匹配的疑似人脸,以便缩小人工检索的范围。(文章来源于中国科普博览。)