作者:王四松,工程负责人
人脸识别是通过一张人脸图片,从人脸数据库中检索相似人脸的图像处理技术,主要应用于个人身份认证相关业务。随着人工智能技术的发展,人脸识别技术在近年来亦取得长足进步,并逐渐渗透到大众生活的方方面面,比如,我们可以“刷脸”解锁手机屏幕,“刷脸”付款,“刷脸”防范欺诈……在2021年举办的东京奥运会和残奥会上,人脸识别技术亦是精彩亮相,发挥了巨大作用——这是奥运会历史上首次在全赛场、全场馆启用人脸识别安防系统,帮助奥运安防工作节约了大量时间。据悉,与会期间,奥运会人脸安防系统已参与识别超过30万来自世界各地的运动员、志愿者、媒体记者和其他工作人员。
人脸识别系统是否能成功识别人脸,取决于是否能够提取高辨识度的人脸特征,比如两眼距离,脸部轮廓等等细节。同时,这些人脸特征需要进行数字标记,最终形成统一维度的人脸特征向量。在工程上,这一向量通常通过浮点数组的方式进行存储。
将人脸图片转换为人脸特征的过程称为“人脸特征提取”。人脸特征的数字化提取完成后,算法便可以实现特征向量之间的比较,并计算出特征之间的相似度,实现人脸检索任务。
整体而言,人脸识别技术的主要开发流程如下:
人脸检测通过层级扫描已输入的图片,从中发现可能的人脸位置,并通过分类器准确地识别出人脸区域。在人脸检测阶段,算法应该能够较好的处理人脸尺寸以及旋转角度的变化,并归一化人脸区域。
第二步:特征提取
得到归一化的人脸图片之后,这一步对人脸中的特征部位进行识别和标记,并将这些信息编码,得到属于每个人独特的人脸特征。
第三步:特征比对
得到人脸特征向量之后,计算输入向量与人脸数据库中其他特征向量的欧氏距离(Euclidean distances)。每对计算出的距离再进行阈值过滤以及排序,过滤出的人脸特征即可能是来自同一个人的人脸图片。
如今,人脸识别系统的主要挑战来自于对海量数据的性能要求,构建一套包含亿级人脸数据量的系统和仅包含少量人脸数据量的识别方案,难度必然是不一样的。
构建包含亿级人脸数据量的人脸识别系统,以下硬性指标不可缺少:
-响应时间限制:亿级客户的请求相应需要在3秒内,普通百万级客户的请求相应需求在300ms以内。
- 采用分布式架构:由于海量数据的要求以及单机方案的限制,系统及数据必须分布于多台机器。
- 支持动态增长:人脸数据库必须能够支持实时动态增长。比如,领创智信的人脸搜索引擎工具,根据业务属性的需求,可以实现将输入请求中的人脸实时存入人脸数据库。
- 支持持久化:人脸数据库需要能够持久化,当某一个节点断开连接,需要能够恢复断开节点的数据。
- 具有节点管理能力:系统需要能够提供节点管理的能力,如增加节点、删除节点,以及数据分片的任务。
- 保持高可用性:在部分节点不可用的情况下,系统仍然能够相应请求。
实现的高效、精准的人脸检索方案,可架构高性能搜索引擎。人脸搜索引擎通常作为一项基础服务存在,因此,基于这样的业务属性,首先,需要对人脸数据按照“业务类型”“客户”“国家”“时间”等标签进行隔离。 其次,在数据存储方面,人脸搜索引擎需要按照预先定义的检索条件,对相关联的人脸特征按连续的内存块存储,并且相同索引的数据需要平均分布在集群内部的机器上。
当一个检索请求进入集群中的某个节点时,该节点会将请求广播到集群中的所有节点。每一个节点都会进行同样的操作,及通过索引过滤得到相关的特征块,再按块逐个进行人脸比对计算,然后再做条件过滤,最后汇总到请求进入的节点返回给客户端。
当一个插入请求进入集群中的某个节点时,该节点会首先计算特征的Hash Slot,并将请求转发到对应的节点存储。
以上简要介绍了实现人脸检索方案的两个主要命令。若基于Redis集群模式来实现分布式特征检索方案,还可实现更多一系列自定义命令,同时,支持自动数据持久化、支持横向扩展、内存零拷贝以及数据保护力更强的服务端搜索。
作为亚洲领先的人工智能和大数据公司,领创智信(ADVANCE.AI)在人脸识别技术的研发和运用上已取得长远发展,搭建有亿级海量人脸特征数据库,推出有“人脸搜索” “人脸图像比对”“欺诈人脸”“活体检测”“多维数据人脸信用评分”等一系列相关技术运用的产品和服务,可以有效助力企业客户解决智能数字化转型、欺诈预防、流程自动化等难题。