人脸识别领域的探究:BAT人脸识别的产品分析

2019年2月10日20:51:54 评论 3,023

人脸识别属于智能图像下的一个分支,这可能是迄今为止中文互联网上讲人脸识别最全的一篇文章。这可能是互联网上最适合产品经理了解人脸识别产品的一篇文章。

1.产品分析的维度选择:算法和工程化

产品分析的价值是帮助自己开展工作。have a skin in the game,很有利益攸关。

通过官网和试用去了解一个产品还不够,你需要更加关注细节。网上搜索到别人的观点,同样也不是你的分析产出。官网的产品功能,案例和使用场景介绍...是给老板看的,他看完之后决定要不要掏钱购买。而所谓人工智能的产品分析,需要站在算法和工程化的角度,甚至硬件也要涉及。接口文档能帮助你清楚了解每一个功能是什么,性能怎么样,以及背后的产品设计逻辑。

于是我把百度、腾讯和阿里人脸识别平台所有的接口文档和SDK文档刷了一遍。

2.人脸识别功能对比

本次产品分析选取了阿里和腾讯的人工智能平台的人脸识别产品作为参照物。

百度门户宣传了人脸检测,对比,查找和采集四个功能。

腾讯宣传了人脸检测与分析,人脸比对与验证,人脸检索和多脸检索,五官定位和静态活体检测。

阿里是人脸检测,比对,人脸查找1:N,人脸属性,人脸特征点定位。

经过阅读和调研接口文档,可以得出以下结论:

人脸检测功能

-百度包含了人脸特征点定位和人脸属性;

-腾讯的人脸检测功能包含了人脸属性识别;

-阿里的人脸检测包含了人脸关键点定位。

人脸对比——1:1比对

百度可以选择图片质量控制和活体检测控制。阿里和腾讯都没有在人脸比对中集成这两个功能。其中,百度支持图片以face_token的形式上传,官方宣称是人脸图片的唯一性标识,问过算法小伙伴,可能是人脸特征值的唯一性标识。

这里单独说一下图片质量检测,它保证了采集人脸照片质量,从而可以保证识别、对比结果的准确性,因而在人脸检测、比对、采集、搜索中广泛被使用。活体检测比较复杂,下文有详述。

人脸查找也即1:N比对

三家都没有明说支持在多大的范围内进行查找比对,可见大家都半斤八两不好意思讲。上次听百度的分享说在内部测过,N到两万就有错误了。

阿里声称“提供sdk调用方式,支持无交互式或动作活体检测,支持多平台,CPU、GPU计算模式”,但并未见SDK相关信息。

人脸采集功能

腾讯和阿里均未见相关介绍。

百度提供SDK采集和H5采集两种方式。百度声称:

“SDK采集内部支持高度可定制化参数,对人脸检测、追踪、采集、质量模块进行个性化调整、SDK内部所有UI层代码、音频文件全部开源,可根据实际业务需求任意调整、提供多端覆盖,适应各种应用场景及设备类型需求。”

可见开放平台的出现,大大降低了应用开发门槛。

H5采集,主要是通过拍照,可以快速验证业务流程,或者进行线上人脸数据冷启动,能力单一,因此需要通过一系列的接口验证来完成各种采集条件的校验。

其它功能

五官定位功能,也即关键点定位,百度提供72个关键点,腾讯提供88个,阿里是105个。所以他们用的标注数据都不一样,能不能开源一下?

人脸属性都差不多,无外乎性别、年龄、表情、眼镜、三维空间的姿态,除了这些,从人脸上也读不出更多信息。

腾讯单独把多脸检索拉出来介绍,其实就是一张照片或视频流包含多张脸的识别,也即检测出多张脸,采集,同时进行多次的1:N识别。

3.各种活体检测

活体检测就是判断识别对象是不是活的人,其实非常有意思,这个功能百度提供了大量接口功能说明。

首先看分类和是什么:

在线图片活体检测,通过API实现活体判断,原理是基于图片中人像的破绽(摩尔纹、成像畸形等)来判断目标对象是否为活体,可有效防止屏幕二次翻拍等作弊攻击,可使用单张或多张判断逻辑。

动作配合式活体检测,一般集成在人脸采集SDK里,你用支付宝、易付宝和滴滴时弹出的人脸识别校验,就包含这种检测。SDK实现活体判断的方式是,它给出指定动作要求,用户需配合完成,通过实时检测用户眼睛,嘴巴,头部姿态的状态,来判断是否是活体。支持7种预设动作,可自定义哪些生效以及检测顺序。

视频活体检测,用户通过API接口上传一个现场录制的视频,录制时读出随机分配的语音校验码。然后通过分析这个视频的人脸信息以及语音校验码是否匹配,完成活体检测判断。

最后一大类是集成在人脸离线识别SDK中的活体检测,有离线RGB活体检测、离线近红外活体检测、离线3D结构光活体检测,看名字就知道这种活体检测对硬件设备要求较高。iPhone X的前置摄像头就能投射出点阵红外光,能够采集到你面部的深度信息。

再看优缺点:

静态活体检测

是接入成本最低的使用方式,只需提交一张人脸图片即可。

但是它的活体检测的果不是十分理想,主要是由于:拍照时攻击者可以设法减少后端算法判断的线索,并且在拍照时调用后置摄像头进行拍照,由于焦距不同,会使后置摄像头拍摄的攻击图片更难分辨真假。

另外拍照只上传一张图片,增加了误判的可能性。

动态活体检测

要求用户配合做出一些面部动作,而随机动作增加了攻击的成本,大大降低打印照片等攻击通过的概率,而这些正好对于后端检测算法来说属于较难案例。

动态活体检测策略下,前端仅仅检测动作的通过情况,并不对视频和真人做出区分,所以需要进一步的活体判断,这时可以在前端完成动作过程中随机抓取多张图片,因此加大了攻击暴露出破绽的可能性。

多张图片可以提高采集到高质量真人活体图片的概率,因而可以采用一个更高的采信阈值,而该阈值对应的活体分数攻击图片则很难达到。

不推荐单独使用动态活体检测,最好结合静默图片活体检测一起使用。

视频活体检测

上传一段视频并对其随机抽帧分析,对随机图片进行静默图片活体检测,得出综合攻击情况分析结果。

为确保视频唯一性,可以结合语音校验码接口使用,这样更严谨。

基于多帧进行综合的判断,可以采用更高的采信阈值,大大增加了作弊成本,也增加了暴露破绽的可能性。

通过语音校验码验证视频为非伪造。

交互体验方面,也较能为用户所接受,因为不用强制用户动来动去的。

该方案劣势在于:视频上传文件较大,整体验证时间较长。

离线活体检测

离线RGB活体检测、离线近红外活体检测、离线3D结构光活体检测就不说了,硬件要求较贵。一般人脸识别应用的硬件基础都是手机或iPad,因而这一块很少会应用到。

还有一种离线活体检测是离线的静默活体,采用静默活体的方式本地进行活体判断,不需要联网所以速度快,但包太大,而且准确性不能保证,产品规划时都排在后端功能里,以接口形式提供服务。

4.人脸识别SDK

SDK是“速度快”的首字母缩写:)可以快速帮助应用开发者上手调用人脸识别平台的各种服务。

按前后台分类可以分为服务端SDK,客户端SDK。前者的定位是便于用户快速上手调用API,封装了人脸识别所有API服务,用于更快捷地调用API接口。后者将人脸采集这个步骤放到前端解决,封装了离线人脸检测、采集、动作活体检测等功能。

按语言版本分类可以分为Java SDK,安卓SDK等等。

按功能分类有人脸采集的SDK,人脸识别的SDK...

按使用场景可以分为离线和在线的SDK,在线的需要调后台接口服务完成业务目标,离线SDK自己就一条龙完成上篮,所以包也会比较大,而且后者应用在CPU计算平台上,响应速度、处理性能也会逊色于GPU计算平台。

SDK其实是软件开发工具包的缩写,Software Development Kit.

人脸识别SDK包含了众多接口能力,这些能力在上文人脸识别功能对比模块介绍了。

百度提供了服务端和客户端的SDK,腾讯仅提供服务端SDK,阿里说提供但不见相关介绍。

百度客户端SDK默认配备4个产品线授权,3-6个月免费测试期。学有余力的同学,可以去创建几个应用玩一玩。

实际业务使用中,按照业务需要,客户端SDK需要在线API配合完成全流程的业务集成,例如,1:1、1:N识别需调用在线API接口。

百度仅一个人脸采集SDK,就提供了五种版本,这些版本不是按照终端类型划分,而是通过适用场景和功能点进行划分:

通用版本。可做一定上层业务开发,用于所有场景。支持离线人脸检测、跟踪、关键点、质量校验、人脸捕获、UI层可定制、采集参数可调。核身版本。适用于身份验证等场景。基于通用版,支持有动作活体检测、支持带UI层的人脸采集。闸机版本。适用于闸机、门禁、考勤、签到等快速通行的场景。基于通用版,优化了质量检测模块,检测速度更快。登录版本。适用于APP人脸登录、柜台识别等场景。基于通用版,UI层做了一定优化,包括光线自动调节,人脸采集策略优化等。多人脸版本。适用于小型的人脸抓拍场景,如考勤、零售分析等。基于通用版,支持多人脸检测,自定义设置人脸检测最大数量。

人脸识别SDK整体的流程是,对图像或视频流进行处理,通过检测人脸,在检测的过程中判断人脸是否满足算法预设要求,例如脸的完整度、三维空间的角度、模糊程度、脸部遮挡情况、照片亮度等的校验,满足要求则进行扣脸截取,对照片进行活体校验,或离线或在线进行1:1或者1:N识别。

5.人脸识别应用漫谈

实际应用中比较好落地的是1:1识别,准确率高,可以做身份校验,这个目前应用的最广泛。几乎所有的金融APP,例如支付宝,易付宝都接入这个功能。1:1身份校验能够有效阻止羊毛党来薅羊毛。在其它金融风控场景,例如银行大厅办理服务时,也会用到。

1:N的算法准确率,目前在N超过2万的时候,就不太靠谱了。那些声称自己在百万级别公开数据集上跑出90%+准确率的,数据可能是对的,但一落地到实际应用场景,就歇菜了。为什么?因为实际场景光线环境复杂多变,识别对象戴着眼镜、化妆、动来动去都会影响。

可以期待一下未来1:N有所突破,采完一张脸之后能轻易从一百万张人脸照片里找出你,到时候你去商场,每个方向都装了摄像头,商家能采集到你的人脸,知道你的轨迹动线,知道你在哪个商品前驻留,知道你拿起了哪些商品又放下,回去给你家电视推相应的广告。这样一个没有隐私的人工智能时代,是不是挺期待的?

好消息是智能图像这个领域,短期内1:N,N突破10万级别还不是很容易。

其实智能图像还有更多的应用,不局限在人脸的识别上。我了解过一个动物保护者做的野生动物识别的应用,还是非常有意义的。

人脸识别属于智能图像下的一个分支,还有人体识别、车辆识别、OCR识别等等,很惭愧,在这个领域里做了一点微小的工作。做了一点罗胖口中的“知识的关联方式的剥离工作”。如果你喜欢的话,请让我知道。我准备写一些更多有意思的智能图像应用。

weinxin
关注微信公众号 CPYY-365
关注微信公众号,留言添加我的个人微信!

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: