引言
苹果刚发布最新的iphone X,新增了人脸识别解锁,我也挺好奇,没有尝试过,所以就在闲暇的时候找了些资料,写了一个小项目。当前的人脸识别技术分为WEBAPI和SDK调用两种方式,WEBAPI需要实时联网,SDK调用可以离线使用。
这里我是使用的虹软提供的免费人脸识别的SDK,此SDK也可根据不同应用场景设计,针对性强。包括人脸检测、人脸跟踪、人脸识别,即使在离线环境下也可正常运行。虹软公司是一家具有硅谷背景的图像处理公司,除了人脸技术以外,还有多项图像及视频处理技术。他们的双摄像头处理算法和人脸美化算法囊括了包括OPPO VIVO,SUMAMNG一系列手机厂商。
项目的目标
我们需要实现一个人脸识别功能。简单来说,就是机的后置摄像头,识别摄像头中实时拍到的人脸信息,如果人库注册过,则显示识别后的人脸信息,如登记的名字;如果不在,提示未注册。
这个功能具有多个应用场景,比如,火车站或者打卡和门禁系统中。
人脸识别的过程
人脸识别包括两个必备的过程,人脸注册和实时识别。
人脸注册是指把人脸的特征信息注册到人脸信息库中。人脸注册的来源可以有很多种,比如
国家身份证库
企业自建人脸识别库
互联网大数据库
人脸特征提取是一个不可逆的过程,你无法从人脸特征信息还原一个人的脸部照片。
在线库在使用时,需要传递照片信息,或者提取图像特征值,
离线的SDK相对安全,但是,在线的SDK通常提供更多的接入和调用方式,这个要结合实际情况来选择。
人脸注册和识别的过程可以用下面的图来表示。
准备工作
本人只挑选了业内比较知名的几家人脸识别技术公司,百度,微软,腾讯就不提了,三大巨头,商汤科技,旷视科技,上海依图和云从科技都是近两年异军突起的新兴创业公司,发展迅猛,我挑选了其中竞争力比较强的旷视科技进行评测(本来是想把商汤的技术也找来比较下,结果搜了半天没找到可测试的免费版本,有点儿小遗憾),另外比较特殊的是虹软公司,之前的评测就很想加他们的,可惜那时候他们没开放技术,这一次刚好他们发布了免费的人脸识别SDK,在计算机视觉技术上他们属于高富帅行列。
接口API实现方式,数据处理方式以及调用限制:
api.png
除了虹软外,其他4家都是直接提供云平台API接口。云平台API接口调用虽然接入应用相对比较简单,但在使用上会受制于网络稳定性,用户体验会有一定的影响;而且高私密性的人脸照片被传到别人家的公有云服务器,存在泄漏的风险,如果是企业用户,对隐私这种事情,就比较敏感了,我猜想虹软选择开放本地离线SDK引擎,大概也是出于大量客户保护数据安全这方面的要求吧。这样一来就可以不受网络影响,自己掌控人脸照片及相关企业信息,在用户体验和数据安全方面都有很大的保障。只是,如果要使用本地离线SDK引擎接入应用应该会比直接使用云平台API难度大,不过对于久经沙场的程序猿们来说这都不是事儿,如果有Sample code的话,学习使用起来就更容易了。
人脸检测识别功能:
shibie.png
从功能来看,人脸检测和人脸识别大家都支持,但虹软还支持人脸跟踪,大概是由于虹软提供的是离线SDK,可以实现人脸跟踪功能,因为本地的话,对网络和流量的要求就不会有云平台那么高;当然如果产品自建云或者在客户那自组网的情况下,也是非常好用的,这样场景确实蛮多的。这个离线版本在虹软的官网上也有重点介绍,应该是他的亮点。
人脸识别技术能力
为了真实评测各家公司的人脸识别技术能力,笔者之前就花了比较多的时间对各家的API接口做了集成,拿100张照片(照片进行了挑选,包括了我们关注的常用场景和多个人脸的情况)进行了对比,加上这次虹软的,下面是通过实际测试得出的结果:
nengli.png