因为本人之前一直在从事人脸识别相关的开发和测试工作,所以今天就之前的部分工作做一个总结,主要内容包括人脸识别应用分类,人脸识别产品预研与分析以及最后的总结三个部分。
1,人脸识别应用类型介绍
本章主要介绍人脸识别技术在应用过程中所采用的几种主要形式进行简单介绍。
1.1,在线识别
在线识别是指客户端负责图像采集和预处理,特征提取、活体识别以及人脸检索运行在服务端,通常采用TCP/IP协议进行通讯。但是在实际使用中,基于具体的场景可以分为:
- 云端API服务模式
- 私有化部署模式
两者的主要区别是服务器是在本地还是在云端。两者的主要成本产生
1.2,离线识别
离线识别是指图像采集和运算均在本地进行,基于产品提供的硬件结构形式又可以分为以下两种模式:
- 基于离线SDK模式
- 基于人脸识别模组模式
两种的主要区别是图像处理是否在终端设备中,两者的主要成本产生
- 离线SDK:摄像头选项与SDK授权
- 模组模式:整机采购(包括摄像头和SDK以及运算单元)
1.3,类型比较
(1)离线SDK方式:
优点:数据处理速度快,响应快,不依赖于网络环境
缺点:库容量相对较小,模型精度相对较低,版本更新相对麻烦,开发难度相对在线较难
适用场景:无网络或者网络不稳定,库容量需求小于等于5000(具体参数和设备性能和平台相关),对识别和检测速度要求较高场景;目前使用较多的事百度离线SDK,虹软离线SDK,均支持Windows和Android OS
百度离线人脸识别功能介绍
(2)模组方式:
优点:开发简单,数据处理不消耗终端资源,响应快,不依赖于网络环境
缺点:成本较高,集成度过高导致适配场景能力相对较差,选型较困难
适用场景:无网络或者网络不稳定,库容量小于等于8000(具体数量和模组提供的SDK相关),
对识别和检测速度要求较高场景;目前使用角度的是阅面AI8000模块
阅面AI8000模块
(3)在线方式:
优点:开发简单,模型精度高,库容量大,终端正常不需要更新SDK(除非服务商进行API调整)
缺点:响应慢且依赖于网络环境
适用场景:网络环境好,对识别延时要求不高的场景;目前简单预研过百度在线人脸识别和旷世在线人脸识别
在线识别1
在线识别2
(4)搭建服务器方式:
优点:开发简单,模型精度高,库容量大,不依赖于外部网络
缺点:成本高,有一定延时(内网传输也存在耗时)
适用场景:对库容量和时延要求都较高且成本控制可接受的项目
本地部署服务器服务器
本章就人脸识别在应用层所采取的常见几种形式做了一个简单介绍。具体的使用选择要结合具体的场景和成本控制综合考虑。
2, 预研与使用产品总结
本章就个人在开发过程中所使用的或者接触的产品进行简单总结,主要包括每一个产品的特点、使用流程、使用性能以及使用过程中的注意事项进行展开描述。
2.1,阅面AI8000模块
阅面AI8000模块是基于离线人脸识别模组实现人脸识别的一款产品,它的硬件组成包括一个RGB摄像头和一个数据处理芯片。实物图如图所示。
阅面AI8000模块实物图
该模块可实现即插即用,通过USB连接线连接道终端设备即可获取图像人脸数据信息。主要使用流程如下:
- 通过USB连接线连续模组与终端设备(支持2.0和3.0)
- 初始化相机
- 获取实时图像人脸信息
- 结合自己的业务处理返回的图像人脸数据,具体的释义请参考SDK使用文档
该模块在内部封装了人脸检测和跟踪,对外开放了人脸比对接口,目前不支持活体检测,主要性能参数如下:
阅面AI8000模块性能参数
使用过程中需要注意的几个地方
- 组与终端的接线使用带屏蔽层的通讯线,注意线材和接口固定
- 如果想获取实时图像的人脸检测数据,需要实时调用ReadStar.nativeTrackFX()接口取出模组内部 缓存的人脸检测数据
- 该模组不具备活体检测功能,注意场景选择
- 该模组没有封装M:N人脸检索接口,需要自行封装
2.2,百度离线SDK
百度离线SDK是百度推出的纯离线人脸识别,目前支持Windows、Android和Linux OS,本文所述功能均依据Android OS的SDK所提供的功能。下图是离线SDK支持的能力
百度离线SDK能力
百度离线人脸识别SDK测试key申请,账户需通过企业认证,通过认证后,账户默认分配5个测试序列号,期限为3个月。序列号测试用完可以通过再次申请获取若干为期一个月的序列号。序列号列表如下图所示。
序列号示例
设备激活支持在线、离线和按应用授权等几种方式,具体的操作可参见官方文档,文档网站如下https://ai.baidu.com/ai-doc/FACE/6k37c1nva
百度离线人脸识别工作全流程如图所示,包括人脸检测,活体识别,特征提取以及人脸搜索等功能
百度离线人脸识别工作流程
以上只是参考的流程,可以结合自己的业务场景选择对应的功能模块组合,比如我们只需要人脸检测和活体检测,则后续的流程可以删除,对应的模型文件也可以随之删除以减少程序体积。关于百度离线人脸是被SDK(Android OS)更新的日志如表所示(最新的已经更新到V4.1.0,优化了口罩识别模型,这个是我在测试中提出的哟)
人脸识别SDK更新日志
本 |
日期 |
更新说明 |
v4.0.0 |
2020.2.25 |
1、新增NIR检测、识别模态; |
v3.2.0 |
2019.12.10 |
1、底层支持多线程; |
v3.1.0 |
2019.08.13 |
1、优化人脸检测性能; |
v3.0.0 |
2019.07.25 |
1、新版检测模型,人脸检测及跟踪速度大幅提升; |
v2.0.3 |
2019.06.14 |
1、更新硬件指纹获取模块,优化特殊环境下指纹变更的问题 |
v2.0.2 |
2019.04.01 |
1、全新人脸检测模型,检测追踪更流畅; |
v2.0.1 |
2019.03.14 |
1、接口设计优化; |
v2.0.0 |
2019.01.10 |
1、优化生活照模型精度及速度 |
v1.1.0 |
2018.09.03 |
1、增加离线证件照特征抽取模型,可有效处理芯片照、证件照比对需求 |
v1.0.1 |
2018.08.03 |
1、修复设备指纹发生变化bug |
v1.0.0 |
2018.06.29 |
初版,包括离线人脸采集、离线活体检测、离线对比识别、离线人脸库管理等功能 |
从日志可以看出,百度对于Android OS的离线人脸识别SDK更新频率还是很快的,而且在功能多样性和功能性能上也在不断的扩充和优化,目前在这一块百度的工单响应速度也很及时。所以百度在布局移动端AI赋能方面还是投入比较大的。关于百度离线人脸识别SDK的介绍,建议观阅一下如下链接视频 https://www.iqiyi.com/u/1763770506/feeds 中的“百度人脸识别软硬一体产品零件应用与实践”视频单元。
视频界面
目前关于百度离线人脸识别SDK的性能参数的部分数据如下:
关于SDK在使用过程中需要注意的事项主要有以下几点可供参考:
- 序列号用于设备离线识别SDK激活,是与设备绑定,有效期自激活日期计算
- 百度目前不支持M:N识别(搜索),但是支持多人同时检测,所以可以通过人脸检测获取多人脸坐标位置,然后进行抠图处理获取每张人脸图片,然后调用1:N识别接口实现M:N的效果。因为百度在底层目前是不支持多线程人脸识别,所以这样做会对识别效率产生一定影响,需综合选择考虑。
- 目前百度离线人脸识别SDK功能比较齐全,且每个功能模块支持的模式也较多(比如活体检测),这也同样带来一个问题,就是SDK包比较大,建议结合自己的硬件选型和所使用到的功能模块,把不必要的平台so文件和模型文件删除以降低应用体积。
- 设备授权需注意,因为在Demo中序列号首次授权之后就保存在了SP中,所以应用删除之后序列号也会随之消失,建议在本地磁盘做一个备份,避免多次输入序列号(特别是永久授权的序列号)。
- 百度离线SDK1.0封装解读可参考个人博客百度离线人脸识别官方Demo封装逻辑分析(后续版本基本架构没有改),里面有详细的封装解读
2.3,虹软离线SDK
目前虹软科技人脸识别相关应用方面公布了人脸识别和人证核验等两个离线SDK,且都分为免费版本和增值版本。在线视频教学https://ai.arcsoft.com.cn/course/video-19.html介绍了集成使用和优化
3.3.1 离线人脸识别SDK
ArcFace 离线SDK,包含人脸检测、性别检测、年龄检测、人脸识别、RGB活体检测、IR活体检测等能力,初次使用时需联网激活,激活后即可在本地无网络环境下工作,可根据具体的业务需求结合人脸识别SDK灵活地进行应用层开发;目前虹软科技公布了免费版和增值版的人脸识别SDK包,两者主要对比如图所示,可见其免费版本的使用场景比较受限,较多的是用于测试体验。
虹软免费版本与增值版本比对
下表是虹软SDK3.0 Android平台更新的日志信息;可参考https://ai.arcsoft.com.cn/manual/docs#/93
虹软离线人脸识别SDK3.0日志
版本 |
日期 |
更新说明 |
3.0.12021020101.1 |
11/13/2019 |
1.激活和初始化接口加锁保护; |
3.0.12021020101.2 |
11/29/2019 |
1.修复图像处理库中BGR24格式图像数据转换为RGB565格式Bitmap时颜色不对的问题; |
3.0.12021020101.3 |
12/25/2019 |
1.开放视频模式下活体阈值设置; |
3.0.12021020101.4 |
02/28/2020 |
1.支持Android 10设备激活; |
目前ArcFace 离线SDK,包含人脸检测、性别检测、年龄检测、人脸识别、RGB活体检测、IR活体检测等能 力,初次使用时需联网激活,激活后即可在本地无网络环境下工作,可根据具体的业务需求结合人脸识 别SDK灵活地进行应用层开发。功能模块可参考下图所示;
虹软基础算法库
这里关于3D角度做一个简单介绍,因为在基本所以的人脸识别产品的人脸检测环节中,均会获取如下三个值
- Pitch
- Roll
- Yaw
它们所表示的角度具体含义如图所示;
3D角度示意
工作的通用流程和百度类似如下图所示,只是目前支持活体检测模型没有百度的多,目前只支持RGB和IR活体识别,所以虹软活体最全方案和百度最全活体方案如图所示;
人脸识别全流程
虹软最全活体检测方案
百度最全活体识别方案
因为这里涉及三个基本概念,这里简单介绍一下:
- RGB活体检测:RGB可见光活体:主要基于图片破绽,判断目标对象是否为活体。例如图像中的屏幕反光、成像畸 形、二次翻拍边框背景等。RGB活体检测基于单目摄像头,采用静默式识别方式,用户体验较好。 同时RGB活体受光线以及成像质量影响较大,在强光、暗光等场景,容易影响检测结果,可通过适 当的补光、使用宽动态镜头抵消逆光等方式缓解。
- 红外活体检测:主要基于红外光线反射成像原理,通过人脸成像甄别是否为活体。基于红外成像特 点,对于屏幕类攻击,基本可以达到近100%的活体防御。IR采用静默式识别方式,体验较好,但 需要增加红外摄像头成本,同时要结合场景考虑红外成像距离。
- Depth深度活体(3D结构光):结构光原理是通过主动光发射,在物体上形成光栅,并接受此信息进行活体分析。同样可以不需要自然光。3D结构光的成像更为稳定,抗攻击能力更强,对图像噪声的抗干扰能力也更强,是相对更加安全和稳定的方案,但相应的硬件设备造价也较高,需要根据实际业务成本预算,进行综合考虑。
实际上基于深度图进行活体检测还有一种常见的方式TOF(Time of Flight);它是通过传感器发出经调制的近红外光,遇物体后反射,传感器通过计算光线发射和反射时间差或相位差,来换算被拍摄景物的距离,以产生深度信息,此外再结合传统的相机拍摄,就能将物体的三维轮廓以不同颜色代表不同距离的地形图方式呈现出来从而获取物体的深度图像数据。
目前关于虹软的算法性能数据如表3-4所示;对应的硬件平台信息如下:
- 硬件信息:
(1)处理器:RK3288
(2)内存:4G
(3)Android 版本:5.1
- 分辨率:1280×720
虹软3288板卡4G算法性能
算法 |
性能(ms) |
Detect |
< 90 |
FeatureExtract |
< 300 |
FeatureCompare |
< 0.12 |
RGB Liveness |
< 280 |
IR Liveness |
< 60 |
附:针对Windows平台的数据如表3-5所示,硬件信息如下:
- 硬件信息:
(1)处理器:Intel® Core™ i5-8500 3.0GHz
(2)安装内存(RAM):16.0GB(15.9GB可用)
(3)系统类型:win10 64位操作系统
- 分辨率:1280×720
虹软Windows算法性能
算法 |
性能(ms) |
FaceDetect |
< 40 |
FeatureExtract |
< 90 |
FeatureCompare |
< 0.061 |
RGB Liveness |
< 150 |
IR Liveness |
< 30 |
关于接口调用建议参考官网在线文档,因为SDK的更新速度较快,为了及时获取最新接口和API文档,建议经常关注https://ai.arcsoft.com.cn/manual/docs#
关于虹软离线人脸识别SDK在使用过程中需要注意的事项有:
- 免费授权key和设备不绑定,申请的key可以用于多个设备测试和使用
- 免费授权key使用期限为一年,时间计时从SDK下载之日起开始计算
- 设备授权后,若设备授权信息被删除(重装系统/应用被卸载等),需联网重新激活;
- 硬件信息发生变更,需要重新激活
- SDK支持多线程使用,但每个线程都需要进行初始化操作
- ArcFace SDK对图像尺寸做了限制,宽度为4的倍数,YUYV/I420/NV21/NV12格式的图片高度为2的倍数,BGR24/GRAY/U16格式的图片高度不限制;如果遇到90127请检查传入的图片尺寸是否符合要求,若不符合可对图片进行适当的裁剪
- 图片模糊或者画面中根本没有人脸或者传入的人脸框不正确,需要存下图查看图像模糊度或查看是否修改了FaceInfo中Rect的内容。若是使用双目摄像头,则很有可能是两者成像差距很大或两者画面成镜像或旋转的关系
具体可参考https://ai.arcsoft.com.cn/manual/v22/arcface_android_guideV22.html
2.3.2 人证核验SDK
人证核验 SDK,包含人脸采集、人脸检测、人证核验等能力,主要实现人证的 1:1 比对。 该 SDK 完全在无网环境下工作, 全部离线化、本地化,所有数据在设备本地运行处理,可 根据业务需要进行灵活的上层业务开发。 该 SDK 仅限于采集照与二代身份证件比对,不推荐使用于其他应场景。从介绍可知,该SDK应用场景比较单一。主要的平台要求如表3-6所示(针对Android)。
平台要求
平台 |
Android armeabi-v7a |
系统 |
Android 4.4 (API Level 19)及以上系统 |
颜色格式 |
NV21 |
SDK提供的主要功能包括:
- 人脸检测
对传入图像数据进行人脸检测,返回人脸位置信息和人脸在图像中的朝向信息,可 用于后续的人脸分析、人脸比对操作,支持图像模式和视频流模式。
- 人脸跟踪
捕捉并检测视频流中的人脸,对人脸进行跟踪
- 人证核验
基于二代身份证证件照和采集照实现人证 1:1 比对,返回比对结果
SDK 授权按设备进行授权,每台硬件设备需要一个独立的授权,此授权的校验基于设 备的唯一标识,被授权的设备,初次授权时需要联网进行授权,授权成功后可以离线运行SDK;激活一台设备后,遇以下情况,需要重新联网激活:
- 删除基于 SDK 开发的应用或删除应用数据
- 刷新安卓系统
- 激活一台设备后,硬件信息发生变更
推荐的认证阈值:0.82
主要工作的业务流程如图所示;
人证核验流程
具体可参考https://ai.arcsoft.com.cn/manual/idcard_android_guide_v2.html
2.3.3 活体检测SDK(仅供参考,目前已经和官方确认过无意义)
目前虹软也提供免费的活体检测SDK,活体检测离线SDK目前包含单目 RGB 静默活体检测能力,初次使用时需联网激活,激活后即可本地无网络环境下工作,可根据业务需求结合人脸识别等 SDK 灵活的进行应用层开发;可见其提供的能力还是很有限的,使用的平台要求如表所示;
平台要求
平台 |
Android armeabi-v7a |
系统 |
Android 5.0 (API Level 21)及以上系统 |
颜色格式 |
NV21,BGR24 |
调用流程:
SDK包获取
- 调用activeEngine激活
- 调用initEngine初始化
- 图像数据/人脸数据处理
- 调用startLivenessDetect接口进行活体检测
- 调用unInitEngine销毁引擎
Step 1:激活,调用activeEngine
接口所需appId和sdkKey在申请SDK时获取,只需在第一次使用时调用激活成功即可
Step 2:初始化,调用initEngine初始化引擎
Step 3:图像数据/人脸数据处理
1)图像数据可以从摄像头获取,支持24位BGR或者NV21数据,也可以从保存的图片中获取2)人脸数据所需的人脸框和人脸角度通过人脸检测(FD)或人脸跟踪(FT)得到,转换成活体所需结构即可;
Step 4:调用startLivenessDetect接口进行活体检测
视频模式:处理连续帧的图像数据,并返回检测结果,需要将所有图像帧的数据都传入接口进行处理
图像模式:处理单帧的图像数据,并返回检测结果
活体检测结果可从LivenessInfo对象中获取;Step 5:调用unInitEngine销毁引擎
具体可参考https://ai.arcsoft.com.cn/manual/living_liveness.html
2.4 旷世离线SDK
目前旷世离线SDK分为两个部分,一个是人脸关键点SDK,另一个则是身份认证SDK,下面简单介绍一下。
2.4.1 关键点SDK
目前人脸关键点SDK主要提供的能力包括人脸检测,人脸追踪,人脸关键点(106点)以及人脸属性-头部姿态,目前其收费是按照年费来收取的,具体的数额如下表所示。
离线授权
授权时长 |
授权单位 |
价格 (元) |
年 (365天) |
每平台 |
300,000 |
联网授权
授权时长 |
授权单位 |
价格 (元) |
可授权设备数 |
年 (365天) |
每平台 |
20,000 |
1,000 |
年 (365天) |
每平台 |
50,000 |
10,000 |
年 (365天) |
每平台 |
100,000 |
100,000 |
SDK的基本规格信息如下:
支持平台:Android、iOS、Windows、Mac
版本:0.4.7
SDK 大小:~ 5 M
可识别人脸角度:yaw ≤ ±45°, pitch ≤ ±90°
检测速度:100ms @ 1080p*
追踪速度:7ms @ 1080p*
在Android平台的上的使用技术参数要求主要有:
硬件平台要求
项目 |
Android |
系统版本 |
4.0 + |
CPU 平台 |
arm armv7 arm64 |
arm armv7 arm64 |
NV21 BGR |
SDK包参数
包大小 |
Android |
代码部分 |
32位 2.0M; 64位 3.2M |
人脸检测模型(免费) |
4.8M |
人脸关键点track_fast模型(免费) |
1.8M |
人脸关键点track_robust模型(免费) |
2.5M |
人脸属性模型(收费) |
2.3M |
3D POSE模型(免费) |
145K |
2.4.2 身份证质量检测SDK
准确发现遮挡、模糊、曝光过度、反光、太暗等问题,确保采集的身份证照片质量符合归档规范,提升识别准确度。
身份证质量检测SDK收费
技术参数如表所示;
SDK技术参数
SDK主要能力包括以下两个方面:
- 质量判断
精准判断身份证照片是否存在遮挡、模糊、曝光过度、反光、太暗等问题,通过质量判断的照片能大大提升识别正确率。广泛用于银行、保险等领域,确保归档身份证照片符合规范
- 智能采集
支持视频流内的身份证质量检测,1080P上每秒30帧速率。可灵活设定阈值,结合摄像头自动采集符合规范的身份证照片
2.5,在线人脸识别API
目前支持在线人脸识别相关能力的API有很多平台提供,从使用的方式来看,基本上都是通过Post请求携带图片或者视频的Base64编码访问云服务器,从而获取人脸检测、人脸活体检测、人脸属性检测、人脸搜索等结果数据。因为在线能力实现在供应商云平台,所以通常包含的功能更加多样,常常还提供一些应用服务支持,比如人脸美颜、换脸等等应用服务。目前就结合百度在线人脸识别API对这类的服务做一个简单介绍。
2.5.1 百度在线人脸识别
百度在线人脸识别API可以为终端提供功能更加丰富,种类更加齐全的业务,主要的服务能力包括,
人脸检测:
- 人脸检测:检测图片中的人脸并标记出位置信息;
- 人脸关键点:展示人脸的核心关键点信息,及150个关键点信息
- 人脸属性值:展示人脸属性信息,如年龄、性别等
- 人脸质量信息:返回人脸各部分的遮挡、光照、模糊、完整度、置信度等信息
应用场景:
如人脸属性分析,基于人脸关键点的加工分析,人脸营销活动等
人脸比对:
- 两张人脸图片相似度对比:比对两张图片中人脸的相似度,并返回相似度分值;
- 多种图片类型:支持生活照、证件照、身份证芯片照、带网纹照四种类型的人脸对比
- 活体检测控制:基于图片中的破绽分析,判断其中的人脸是否为二次翻拍(举例:如用户A用手机拍摄了一张包含人脸的图片一,用户B翻拍了图片一得到了图片二,并用图片二伪造成用户A去进行识别操作,这种情况普遍发生在金融开户、实名认证等环节。)
- 质量检测控制:分析图片的中人脸的模糊度、角度、光照强度等特征,判断图片质量
应用场景:
如人证合一验证,用户认证等,可与您现有的人脸库进行比对验证
人脸搜索:
- 人脸搜索:也称为1:N识别,在指定人脸集合中,找到最相似的人脸
- 人脸搜索 M:N识别:也称为M:N识别,待识别图片中含有多个人脸时,在指定人脸集合中,找到这多个人脸分别最相似的人脸
人脸库管理:
- 人脸注册:向人脸库中添加人脸
- 人脸更新:更新人脸库中指定用户下的人脸信息
- 人脸删除:删除指定用户的某张人脸
- 用户信息查询:查询人脸库中某个用户的详细信息
- 获取用户人脸列表:获取某个用户组中的全部人脸列表
- 获取用户列表:查询指定用户组中的用户列表
- 复制用户:将指定用户复制到另外的人脸组
- 删除用户:删除指定用户
- 创建用户组:创建一个新的用户组
- 删除用户组:删除指定用户组
- 组列表查询:查询人脸库中用户组的列表
身份验证:
- 质量检测(可选)::判断图片中是否包含人脸,以及人脸在姿态、遮挡、模糊、光照等方面是否符合识别条件;
- 活体检测(可选):基于图片中的破绽分析,判断其中的人脸是否为二次翻拍(举例:如用户A用手机拍摄了一张包含人脸的图片一,用户B翻拍了图片一得到了图片二,并用图片二伪造成用户A去进行识别操作,这种情况普遍发生在金融开户、实名认证等环节。)
- 公安验证(必选):基于姓名和身份证号,调取公民身份证小图(源自公安系统),将当前获取的人脸图片,与此证件小图进行对比,得出比对分数,并基于此进行业务判断是否为同一人。由于公安系统小图,具有最权威的身份证明作用,故对用户本人的验证结果可信度也最为合理
前两个功能免费调用,只有QPS限制,关于公安验证有500次免费调用,后续需收取费用,收费的标准可以参照官网:https://ai.baidu.com/ai-doc/FACE/Ck37c1lmj
在线活体检测:
- 人脸基础信息:包括人脸框位置,人脸空间旋转角度,人脸置信度等信息
- 人脸质量检测:判断人脸的遮挡、光照、模糊度、完整度等质量信息。可用于判断上传的人脸是否符合标准
- 基于图片的活体检测:基于单张图片,判断图片中的人脸是否为二次翻拍(举例:如用户A用手机拍摄了一张包含人脸的图片一,用户B翻拍了图片一得到了图片二,并用图片二伪造成用户A去进行识别操作,这种情况普遍发生在金融开户、实名认证等环节)。此能力可用于H5场景下的一些人脸采集场景中,增加人脸注册的安全性和真实性。
视频活体:
H5视频活体检测产品,是由两个接口组合而成,主要用于在H5场景下,通过用户新录制并上传一个视频,来进行活体检测的判断。相对于APP有动作校验+静默图片活体、静默图片活体这两种方式,H5视频活体方案比APP方案更加灵活,同时比单张图片活体方式更加安全。其主要功能如下所示:
- 频多帧活体检测:录制并上传的视频,会在云端进行随机抽帧分析,并得出最终的活体检测分数
- 音校验码:
- 为防止用户提交非当前操作的视频,在录制视频时,随机分配一个数字,用户需要读出这个数字,在后续识别时校验,以判断视频是否为现场录制。
- 语音校验码作为辅助性质的验证条件,是一个可选项,如果应用场景比较嘈杂或方言口音比较重,可以不使用语音验证
其中还有唇语识别和合成图识别Beta版本,这里不再描述;该功能主要适用的场景包括:
- 微信服务号:用于对操作用户真实性要求严格的场景,用于依托于微信服务号的金融开户、实名认证、账户信息变更二次验证等服务
- APP内Webview:对于如Cordova架构开发的APP,或者APP内变更频繁的身份信息页等情况,可以采用此方案完成活体检测
- 浏览器:如果仅是一个H5宣传页,或者Wap版本网页等,可以通过此方法快速集成更加安全的活体检测功能
优劣势比较:
- 优势:相对于APP有动作校验、单张图片静默判断,此方法在没有APP情况下,可以更快速、轻量级地实现活体检测,同时保障一定安全性
- 劣势:由于视频较大,上传时间可能较长,另由于不同手机的浏览器内核差异较大,容易出现兼容性问题
人脸融合:
对两张人脸进行融合处理,生成的人脸同时具备两张人脸的外貌特征(并不是换脸),此服务具有如下三个业务功能:
- 指定人脸:当图片中有多张人脸时,可以指定某一张人脸与模板图进行融合
- 图像融合:将检测到的两张人脸图片进行融合,输出一张融合后的人脸
- 黄反识别:利用图像识别能力,判断图片中是否存在色情、暴恐血腥场景、政治敏感人物
人脸属性编辑:
通过AI技术对人脸属性特征进行编辑,实现性别互换、年龄改变等特效,为用户生成多种特效照片
- 性别转换:基于高密度的人脸关键点,改变男女性别面部特征,实现人物性别转换
- 变老人:对人脸年龄改变过程进行预测,将人脸变为老人面孔
- 变小孩:对人脸年龄改变过程进行推演,将人脸变为小孩面孔
以上是百度在线识别API提供的接口能力,最新的接口文档请参考:https://ai.baidu.com/ai-doc/FACE/yk37c1u4t
2.5.2 其他在线人脸识别
在线人脸识别开放平台有很多,目前基本的使用要求是:
- 需要个人或者企业认证
- 几百到几千免费的调用或者是控制账号的QPS,如需产品化结合具体的收费方式付费,比如如下几张表给出的几个平台的收费标准(不保证数据实时性);
- 基本上都是通过上传图片的base64编码进行Post请求获取结果;比如腾讯的人脸检测接口协议规定如表3-16所示;表3-17给出一个人脸检测请求接口参数示例;
阿里云平台收费
腾讯云平台收费
腾讯在线人脸识别API接口协议规定
规则 |
描述 |
传输方式 |
HTTPS |
请求方法 |
POST |
字符编码 |
统一采用UTF-8编码 |
响应格式 |
统一采用JSON格式 |
接口鉴权 |
签名机制,详情请阅接口鉴权 |
腾讯在线人脸检测接口请求参数
总结:
结合第一部分的分析,我个人觉得人脸识别应用的重点工作方向应该放在本地人脸检测、活体检测和人脸图像抓取上。这也是很多平台在推出了人脸识别SDK(包含人脸检测和活体检测)之后,还推出了人脸检测SDK(人脸检测、活体检测以及人脸抠图)的原因。
今天的文章人脸识别方案选择分享到此就结束了,感谢您的阅读,如果确实帮到您,您可以动动手指转发给其他人。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/31594.html