首页 > 智能网

开箱即用的人脸识别算法大盘点

来源:智能网
时间:2020-09-01 16:02:56
热度:104

开箱即用的人脸识别算法大盘点人工智能领域最近几年的发展可以说是如火如荼,这里面既有创业者的磨刀霍霍,也有资本的一路执着狂跟,还有学生和程序员群体的热情追随。回顾人工智能领域从201

人工智能领域最近几年的发展可以说是如火如荼,这里面既有创业者的磨刀霍霍,也有资本的一路执着狂跟,还有学生和程序员群体的热情追随。回顾人工智能领域从2012年的星星之火,到15年左右的疯狂态势,再到18年理性的声音初现。有人开始对人工智能抱有怀疑的态度,认为这一波AI并没有想象中那么强。

但是,不可否认,人工智能真的在一些领域中得到了很好的落地,其中最典型的就是人脸识别的相关应用。现在我们乘车可以无票自动人证核验通行;通过人脸验证身份在线办各种证件手续,也不再需要跑到各个局去现场办理;还有很方便的手机人脸解锁等等。可以说,人脸识别还是一个真正实用的技术。

人脸识别的流程介绍

对于一个落地可用的人脸识别系统,一般要包含以下几个步骤:

1) 人脸检测——将人脸从图像中检测出来;

2) 人脸关键点检测——从检测到的人脸中检测关键点(landmark);

3) 人脸对齐——根据人脸关键点,将人脸"扭正";

4) 人脸特征提取——把"扭正"的人脸送进特征提取网络,产生特征向量(例如128维、512维的特征向量);

5) 人脸比对——将人脸特征和底库里面存储的人的特征向量进行比较。

image.png

从上面的流程可以看到,一个真正work的人脸识别系统,是包含多个流程的。在多数场合,中间还需要加一个"活体检测"的步骤,也就是判断人脸是真的人脸,还是别人拿照片或者视频录像假冒的;如果你是从视频中检测人脸,还需要加一个"人脸质量分"判断,也就是判断一个视频序列中哪个人脸质量最好,然后将最好的这个人脸送入到人脸识别系统。

有哪些可用的人脸识别算法

在上面一节,我们简要介绍了如何做一个人脸识别系统。可以说,要做好这个系统还是需要很大工作量的。从算法层面,要解决特征提取模型、活体检测、人脸图像质量检测三块硬骨头。此外,还需要考虑如何优化低功耗、高性能等工程化问题。

还好,现在有一些AI科技公司开放了成熟的人脸识别算法,可以让程序员很快可以完成部署。那么当前有哪些可用的免费人脸识别算法,目前市面上主流的开箱即用的人脸识别算法又有哪些呢?下边,小算农为大家整理一下。

按照调用方式来看,主要分为两种:云服务API和离线SDK。

云服务API

云服务API本质上是"在线请求,返回结果",从功能上来说它是一个接口。多数人脸识别厂商将算法布置在云端,将API接口向有需求的公司开放。终端设备与云端连接后,人脸识别过程都在云端进行,消耗云端算力,本地端只需要上传照片,接收结果。

云服务人脸识别API的优势主要有:

轻量级,集成方便,基本上任何语言都可以通过Http调用云服务API;

多为APP或一些网页在使用。

当然,凡事都有两面性,云服务API也有不少劣势:

无法离线运行,需要网络流量成本,在一些特定场景下无法使用(无网络、无法访问公网的企业机构);

云端API厂商只能在较少调用量下(基本是产品测试阶段),提供免费使用。一旦规模化商用,尤其是App端等场景下大规模调用收费高昂;

受网络影响大,受网络稳定性影响较大,存在一定延迟,这样即使算法、算力再给力,也无法弥补网络的延迟。

在人脸识别API云服务里,国内的BAT应该是最大的玩家,如果你打开阿里云、百度云、腾讯云,会发现他们提供了齐全的人脸识别相关的服务,另外,国内的"CV四小龙"、图普等众多公司也提供云端人脸识别API。

大致价格如下表所示:

表 1 人脸比对API价格表

image.png

可以看到如果单纯使用人脸比对,且调用量比较小的话,采用云服务API的价格还是可以接受的。但是,需要注意的是,表中仅是人脸比对的API价格,上文也提到了,一个完整的人脸识别系统至少还要包括人脸检测+人脸活体检测+人脸识别+人脸检索这四个过程,需要分别购买四个模块的API,加起来价格并不便宜。

离线人脸识别SDK

离线人脸识别SDK则是另外一种选择,SDK也就是软件开发工具包,算法厂商将人脸识别功能封装成SDK,分发给其他公司使用。接收方下载安装后使用,算法在本地端运行。

相比云服务API,离线SDK主要有以下优点:

本地运行,可离线使用,不受网络环境影响,响应速度快;

人脸数据储存在本地,无需与服务端进行数据交互,安全性高;

部分公司提供了免费的SDK(例如知名的虹软视觉开放平台提供的免费人脸识别SDK,全平台覆盖,文档齐全)

国内提供人脸识别SDK的知名公司及其价格:

表 2 部分主流厂商人脸识别SDK价格

image.png

笔者经过统计,发现提供离线人脸SDK的公司相比提供云服务API的公司要少很多。另外,商业公司的离线人脸识别SDK一般价格比较贵。不过,虹软视觉开放平台却有提供免费、离线的人脸识别SDK。它不仅支持商用、拥有多个平台版本,而且还提供了非常齐全的文档。

知道虹软的人脸识别SDK是因为笔者在知乎搜索,有没有离线版的人脸识别的sdk可以使用的?看到大家在回答中都重点推荐了科创板上市企业虹软科技。于是笔者也去官网试了一下,发现该公司的确提供了四大平台的SDK,而且,最关键的是,它是完全免费的!

image.png

使用后发现,虹软提供了人脸识别、认证核验、活体检测三大主流应用的免费算法。

image.png

另外,对于不同平台的人脸识别SDK,虹软都提供了Demo代码。例如,下面是人脸识别SDK的安卓Demo(所有代码都在下载的安卓SDK里面,打开Android Studio加载项目即可编译安装)。

其中人脸识别Demo的主页如图所示,因为是Demo所以相对简单。

下边是人脸属性识别的效果页面,从图片可以看出,算法检测出了人脸、估计出了年龄、性别、人脸三个角度,是否是活体以及特征提取和相似度的计算。

另外,笔者也尝试了Ubuntu版本的人脸识别以及Windows版本的人证合一的SDK,发现调用起来都非常的方便,官方写的Demo代码也非常的简洁易懂。

总结

经过小算农的总结,从性价比来看,离线SDK使用本地算力可以做到完全免费商用。而云服务API是基于云端算力,很难真正免费开放,尤其是用户规模基本都在几十万甚至上百万、上千万的APP产品应用中,云端调用的收费还是比较高昂的。

从应用场景来看,云端API受到网络条件制约。对于追求低时延,稳定高效、用户体验的闸机门禁、刷脸考勤、人脸测温通行等产品应用中,也更推荐离线SDK。

因此综合来看,虹软视觉开放平台的免费离线人脸SDK,是一个比较不错的选择。顺便提一个细节,笔者自己在尝试用虹软SDK搭建一个应用时,遇到了关于"活体检测和人脸特征值提取多线程调用"的小疑问。于是,通过工单系统提交了技术支持需求,不到1天时间就得到了相关技术人员的1对1辅导,毕竟是科创板上市企业。

所以也推荐大家可以去他们的官网下载体验一下。