人脸采集
所有文档

          人脸识别

          人脸采集

          概述

          核心概念

          人脸识别的应用场景,核心可以分为三大类:

          1. 身份核验:即1:1对比,判断两张脸的相似度,判断你是你,通常用于需要验证用户身份真实性的场景,如人证对比。
          2. 身份识别:即1:N识别,在一个人脸集合中找到最相似的人脸,判断你是谁,通常用于判断用户身份是否存在,及身份信息内容的场景,如人脸门禁、人脸支付等。
          3. 属性分析:即人脸属性分析,基于人脸信息,返回年龄、性别等属性值,通常用于客群分析、娱乐营销等场景,如统计线下客群年龄分布。

          而以上场景的几乎所有业务过程,核心可以分为两个步骤:

          1. 人脸采集:人脸识别的前置步骤,即获取到人脸图片,用于对比、识别、属性分析等操作。
          2. 人脸分析:包括人脸图片的加工处理,特征抽取与对比,结果返回等一系列操作,也是通常理解为的人脸识别操作。

          要想确保人脸识别的应用效果得到保障,最为核心的一个环节即人脸的获取,即人脸采集。目前市面上所有人脸识别应用落地,面临的主要问题就是应用环境复杂,包括光照、遮挡、作弊攻击等一系列环境因素干扰,涉及产品策略、硬件选型、施工方案等多个维度地综合作用,才能不断提升最终效果。

          为了更好地帮助您完成人脸采集步骤,下文将详细介绍采集过程中的一些SDK、API、硬件相关内容,希望对您的人脸识别集成有所帮助。

          流程概览

          目录导览

          目录导览如下,文档内容较长,但前后具备相关性,建议顺序阅读。

          准备工作
            - 账号及应用
            - SDK
            - 采集设备
            - API接口
          采集指标
            - 质量控制
              - 概述
              - 遮挡
              - 模糊度
              - 光照
              - 姿态
              - 其他
            - 活体检测
              - 概述
              - 有动作活体检测
              - 静默图片活体检测
              - H5视频活体检测
          SDK采集
            - 概述
            - 功能介绍
            - 支持平台
            - 规格参数
            - 场景版本
            - 离线质量检测
            - 离线有动作活体检测
            - 开放参数配置
            - 应用方案建议
          H5采集
            - 概述
            - 质量检测——API方式
            - 活体检测——API方式
            - 图片裁剪与压缩
          采集设备
            - 概述
            - 手机
            - 平板
            - 近距离人脸采集开发组件
            - 中远距离人脸采集开发组件
            - 远距离人脸采集开发组件

          获取帮助

          如果在阅读文档后,对内容有任何疑问,可以通过以下几种方式联系我们:

          • 在百度云控制台内 提交工单 ,咨询问题类型请选择人工智能服务。
          • 如有问题讨论,可以进入 AI社区 随时提问,和其他开发者一同交流。

          准备工作

          磨刀不误砍柴工,在正式讲解人脸采集细节前,让我们先梳理下必要的前置准备工作。

          1、账号及应用

          在进入实际开发前,请先阅读 新手指南,指南中详细地讲解了开放平台账号及应用的创建及管理操作。

          新手指南中主要讲解三件事情:

          1. 准备账号:可以为百度账户或者推广账户,如果首次使用,需要先做一下开发者认证(验证下手机号,很快的)。这是您使用API接口、SDK管理、付费等操作的主体。
          2. 创建应用:在人脸识别后台的应用列表中操作,创建一个应用,会对应生成AppIDAPI-KeySecret-Key,这是应用的唯一标识,是您调用API接口的基本操作单元(主要用于权限配置、应用高级配置等)。
          3. 生成签名:也称为Access_token,是调用API时的鉴权凭证,具体可参考 Token获取方法

          以上三项事宜是使用公有云服务的必备步骤,也是后续很高频使用的内容。

          2、SDK

          平台目前提供两种类型的人脸识别SDK,如下:

          • 服务端SDK:封装人脸识别所有API服务,用于更快捷地调用API接口
          • 客户端SDK:封装离线人脸检测等功能,在设备前端完成离线采集人脸的功能

          服务端SDK

          服务端SDK内部封装了所有人脸识别API,并增加了超时设置接口、自动token更换等功能,便于您快速上手调用API。目前支持JavaPHPPythonC#C++Node.js 6个常用语言版本。通常用于在服务器端,完成与百度人脸识别API的请求交互操作。

          您可以直接 前往下载,无需任何资质条件,下载后在SDK中替换您自己的API-KeySecret-Key即可使用。

          客户端SDK

          客户端SDK将人脸采集这个步骤放到前端解决。内部封装了离线人脸检测、跟踪、质量校验、图片捕捉功能,但1:1、1:N识别还需调用在线API接口。

          目前对外开放iOSAndroid两个版本,WindowsLinux版本目前在邀测阶段,需要在SDK审批通过后,单独 发送工单 申请。

          客户端SDK需要 提交申请,流程分为以下几步:

          1. 完成企业认证(营业执照信息认证)
          2. 填写申请理由(填写联系方式、使用场景等)
          3. 等待审批(通常为1-5天内)
          4. 获取SDK使用权限

          申请通过后,您即可下载SDK及官方提供的各场景的示例工程源码,如下图所示:

          SDK默认配备4个产品线授权(产品线指:基于应用维度,如一款APP即为一条产品线,如手机百度 iOS/Android APP,依据为Bundle ID或者Package name),4个授权基本可以满足大部分的产品业务需求,如果需要更多的产品线授权,请单独 发送工单 申请或联系接商务代表。

          SDK的使用,涉及有效期,有效期过后,SDK本地功能将会不可用,SDK会自动向百度服务器请求拉取最新的授权license,如果对这个产品线的授权在服务端操作了延期,则SDK会在过期后的第一次初始化时,自动更新本地license,完全不影响用户使用。

          默认申请通过后,我们会送您3-6个月免费测试期;如果需要正式使用,可以提交延期申请,并注明申请理由,具体操作请在 后台管理,如下图所示:

          3、采集设备

          实际使用中,方案的最终使用,都需要配合前端采集的硬件设备,目前对于常规人脸需求,几种选型方案如下:

          • 手机:APP场景下的绝大部分使用场景,摄像头、屏幕、数据处理一体化,除了APP产品,也可以用于快速构建demo,验证业务流程的首选。
          • 平板:相对于手机,屏幕更大,功能更聚焦,业务产品的UI定制更方便,常规的签到、考勤、柜台支付、会员识别等也是不错的设备选择。
          • USB摄像头+开发板:更灵活的配置选型,可拓展性强,可根据不同场景需求进行灵活调整,对于逆光等核心问题场景处理效果更好。
          • 网络摄像头+开发板:中远场识别、检测人数不是很多的无感知识别场景,可拓展性强,但布设复杂度高,多人场景下性能有限。
          • 人脸抓拍一体机:远场场景识别,检测人数较多的无感知识别场景,通常用于视频监控、人流量统计、安防布控等,摄像头成本较高,但多人检测性能最好。

          以上仅为简单列举,后文会对硬件选型进行详细介绍。

          4、API接口

          人脸采集后,仅是在前端设备上拿到人脸图片,实际的1:1、1:N识别仍要通过API调用实现。

          目前平台提供的接口分为以下几种:

          • 人脸检测:检测图片中的人脸,并返回关键点、位置等基础信息,及年龄、性别、颜值等属性信息。查看详细介绍>>
          • 人脸对比:比对两张图片中人脸的相似度,并返回相似度分值;支持生活照、证件照、带水印照等多种人脸图片类型;查看详细介绍>>
          • 人脸查找:在指定人脸集合中,找到最相似的人脸,支持单张人脸的查找,及一张图片中多张人脸的同时查找;查看详细介绍>>
          • 人脸库管理:人脸查找中,人脸库管理的相关操作接口,支持人脸注册、更新、删除、组查询等一系列管理操作;查看详细介绍>>
          • 公安验证:可通过身份证信息查询指定用户公安身份小图,并与业务中的人脸图片进行对比,判断用户为本人且为真人;查看详细介绍>>

          采集指标

          质量控制

          概述

          人脸识别或对比的最终效果,取决于人脸在采集过程中,采集到的人脸是否符合标准质量要求。从业务使用角度,主要影响两个核心业务步骤:

          1. 人脸注册环节:如果注册的人脸质量不佳,则会影响注册环节的特征抽取,导致原始注册的人脸信息较差,后面的识别/对比都会受到直接的影响,往往得到的相似度分值,将不会特别准确。
          2. 人脸识别/对比环节:因为注册人脸质量不佳,每次的识别/对比都会存在一定的分值误差,往往造成明明是本人却过不去的情况。

          人脸的质量检测,概括起来包括以下几点:

          • 遮挡:指人脸各部位的遮挡比例;
          • 模糊度:指人脸的清晰程度;
          • 光照:指人脸的光照强度;
          • 完整性:指图片中的人脸是否完整;

          另外在实际采集过程中,也会将姿态作为一个重要控制指标:

          • 姿态:指人脸在三维空间的角度分布;

          人脸采集步骤,需要做好以上5项的条件判断,从而确保最终识别效果。当您拿到一张新的人脸图片,如果需要判断上述5项的具体分析结果,可以调用 人脸检测接口 ,此接口通常用于做常规质量控制的接口实现最佳方式;或者申请使用 客户端SDK 进行校验,SDK内置了质量校验模块,可以对输入的视频流进行动态实时的质量校验。

          下面让我们一起详细看看这5个质量检测项:


          遮挡

          Occlusion

          人脸中各个部位的遮挡程度判断,区域可以分为:左眼有眼鼻子左脸颊有脸颊嘴巴下巴,共7个区域。通常某一个或者多个区域遮挡面积过大,会影响最终的识别效果,可以通过区域的遮挡值,在产品侧给用户比较明确的产品反馈提示,供用户参考调节。

          每个区域的建议阈值选择如下:

           取值范围:[0~1]
           0:无遮挡
           1:完全遮挡
          
           left_eye : 0.6, //左眼被遮挡的阈值
           right_eye : 0.6, //右眼被遮挡的阈值
           nose : 0.7, //鼻子被遮挡的阈值
           mouth : 0.7, //嘴巴被遮挡的阈值
           left_check : 0.8, //左脸颊被遮挡的阈值
           right_check : 0.8, //右脸颊被遮挡的阈值
           chin_contour : 0.6, //下巴被遮挡阈值

          说明:左右位置的表示,是以当前检测图片的方向确定。如实际场景中为人物的左脸颊,但是在分析时,则认为是右脸颊。

          下面展示三个示例图片,用于理解遮挡的概念:

          【示例一】

          分析:脸颊有一定头发遮挡,但都在阈值范围内,整体问题不大。不过为了更好的识别效果,如果可以向用户反馈提示文案的话,可提示用户重新整理右脸颊侧的头发,并重新录入人脸。而文案触发机制可以设定一个更严格的产品自定义阈值。

          "occlusion": {
          	"left_eye": 0,
          	"right_eye": 0.12301587313414,
          	"nose": 0.016585364937782,
          	"mouth": 0,
          	"left_cheek": 0.013826940208673,
          	"right_cheek": 0.66922038793564, //右脸颊遮挡较大
          	"chin": 0.13753361999989
          }

          【示例二】

          分析:脸部各区域都些许遮挡,都未到达阈值,大小相对适中,不影响正常使用。对于识别精准度比较严格的场景,倒也可以提示重新录入

          "occlusion": {
          	"left_eye": 0.055045872926712,
          	"right_eye": 0,
          	"nose": 0.1026463508606,
          	"mouth": 0.33571428060532,
          	"left_cheek": 0.18918919563293,
          	"right_cheek": 0.38289964199066, 
          	"chin": 0.38516879081726
          }

          【示例四】

          分析:右眼明显遮挡严重,随是艺术照示意,但是在实际应用场景中,主要由于发型原因,存在很多眼镜部分被头发遮挡较严重的情况,产品应用时建议提示用户整理下头发再重试。

          "occlusion": {
          	"left_eye": 0.032388664782047,
          	"right_eye": 0.90909093618393,
          	"nose": 0.030821917578578,
          	"mouth": 0,
          	"left_cheek": 0.22132650017738,
          	"right_cheek": 0.23717948794365,
          	"chin": 0.0049975011497736
          }

          【示例四】

          分析:因为戴墨镜,导致左右眼遮挡很大,这种情况可直接提示用户摘下眼镜,并重新录入一张。同理,对于口罩长发等也可以如此操作。

          "occlusion": {
          	"left_eye": 0.71283352375031,
          	"right_eye": 0.93929713964462,
          	"nose": 0.22417153418064,
          	"mouth": 0.37142857909203,
          	"left_cheek": 0.089686095714569,
          	"right_cheek": 0.64788734912872,
          	"chin": 0.66417443752289
          }

          模糊度

          Blur

          人脸的模糊程度,取值范围:0~1,0是最清晰,1是最模糊,通常 小于0.7 即可认为是符合条件。

          下面展示三个示例图片,用于理解模糊度的概念:

          【示例一:原清晰图】

          "blur": 6.6545192967116e-11//科学计数法,实际数值非常小

          分析:模糊度极接近0,十分清晰,可放心使用。

          【示例二:人脸些许模糊】

          "blur": 0.0000016524913917237

          分析:模糊度接近于0,远小于0.7(建议的阈值),可放心使用。

          【示例三:人脸十分模糊】

          分析:模糊度接近于1,不可使用。这种情况通常为摄像头未对好焦距,如手机没有拿稳,或摄像头焦点主体错误,通常可提示用户保持身体稳定不动,正视镜头即可。

          "blur": 0.99997198581696

          光照

          illumination

          人脸部分光照的灰度值,反映脸部的光照情况,以及客户端SDK中,YUV的Y分量取值范围[0~255],0表示光照不好。人脸过暗对于识别会有显著影响,所以通常在所有质量校验中,要优先保持人脸的光照充足。

          人脸采集过程中,常遇到的光线问题,一般分为以下几种:

          • 对比度过低
          • 过曝光
          • 欠曝光
          • 过亮
          • 过暗
          • 阴阳脸

          以上问题,主要原因主要分为以下几种:

          • 镜头对焦:因为镜头对焦问题,导致曝光不正常,往往人脸的光线过暗或过亮。
          • 光源不足:往往导致脸部光线较暗。
          • 光源角度:导致阴阳脸等光线分布严重不均匀的情况。

          所有问题中,逆光往往是最严重的问题,大部分的人脸采集设备是在白天作业,摄像头在逆光情况下,采集到的脸部光照会很暗,导致识别不到人脸或者识别效果差。这种情况,通常可以有以下几种应对措施:

          1. 补光灯:在摄像头旁边添加一个补光灯,用于提高脸部光线强度,此方案也可以同时保证夜间门禁等场景的光线问题;
          2. 调整设备角度:在满足识别体验的角度情况下,避免镜头对着逆光位置(如阳光、室内大灯等);
          3. 添置遮罩物件

          从接口返回值来看,推荐阈值如下:

          "illumination"40 //大于40通常认为光照满足,推荐40~100之间

          下面展示一个例子,用于理解光照的概念:

          【示例一】

          分析:过暗的情况,人脸的识别往往存在误差,甚至识别不到,这种情况需要在采集设备周围增加补光设备。

          "illumination": 20

          【示例二】

          分析:阴阳脸。往往是光源位置角度问题,导致某一边人脸光线明显不足,需要确保实际应用过程中,光线分布均匀。

          "illumination":

          姿态

          姿态角分为PitchRollYaw,用于表示人脸在空间三维坐标系内的角度,常用于判断识别角度的界限值。

          各角度阈值如下:

          Pitch:三维旋转之俯仰角度,范围:[-90(上), 90(下)],推荐俯仰角绝对值不大于20度;
          Roll:平面内旋转角,范围:[-180(逆时针), 180(顺时针)],推荐旋转角绝对值不大于20度;
          Yaw:三维旋转之左右旋转角,范围:[-90(左), 90(右)],推荐旋转角绝对值不大于20度;

          各角度范围示意图如下:

          从姿态角度来看,这三个值的绝对值越小越好,这样代表人脸足够正视前方,最利于实际注册/识别使用。

          但在实际应用场景中,由于摄像头的布设位置,往往无法拿到正对人脸的图片,主要分为以下几种情况:

          1. 监控摄像头:此类摄像头一般置于室内棚顶/室外架杆顶端,垂直向下倾斜一定角度,水平方向有一定的拍摄广度,一般PitchYaw角度变化范围较大,所以采集到的人脸往往存在大量的俯角过大、侧脸等,导致识别效果不佳。这种情况通常是调整摄像头角度(摄像头与水平面夹角减小)、调整最小检测人脸(在行人靠近摄像头时尽可能早些拿到人脸)、增加摄像头数量(不同角度互相补充,避免采集死角),实际项目实施中,还是要通过实地考察,基于现场环境一点点调节摄像头角度;
          2. 闸机/门禁:闸机方面,摄像头往往置于机器顶部,摄像头向上仰一定角度,通常低于平均成人身高,所以行人路过时,一般需要微微低头看闸机上的摄像头/屏幕,如果摆放不当,会造成采集到的人脸Pitch角度过大;门禁方面,摄像头往往置于成人身高平视高度,但多为门框侧面,如果行人朝向正门,侧面对视摄像头,如摆放不当,会造成采集的人脸Yaw角度过大。以上两种主要场景,需要基于实际场景情况动态调整安装位置,尽量避免角度过大的同时,避免用户动作不要太大。
          3. USB摄像头:线下场景中,USB摄像头常用于近场场景录入人脸(如柜台、大屏、自助柜机等),这种情况下为了拿到角度最好的图片(用户正视屏幕),在应用UI方面做一个前置页面提示,往往能最小成本地提高操作标准度。

          下面展示两个示例图片,用于理解姿态角的概念:

          【示例一】

          分析:通常线下应用过程中,难以获得相对正面的人脸图像,姿态判断需要作为一个标准的校验项。

          "yaw": 16.319696426392,
          "pitch": -4.8351268768311,
          "roll": 2.0234982967377,

          【示例二】

          分析:如果是将摄像头置于棚顶或室外高处,往往获取到的人脸图片,pitch值比较大,需要特别关注。

          "yaw": -10.153998374939,
          "pitch": 19.434478759766,
          "roll": 1.6366827487946,

          其他

          完整性

          可以使用v2/detect接口中的qualities->completeness参数判断。此参数用于判断人脸完整度,返回只有0或1两种结果, 0为人脸溢出图像边界,1为人脸都在图像边界内。通过此参数可以简单判断人脸是否全部置于画面内,做一定的条件校验。

          真人/卡通

          可以使用v2/detect接口中的qualities->type参数判断,此参数分为humancartoon两个值,取值范围为[0~1],置信度大于0.5即可判断为真人或者卡通。通过此参数可以简单判断画面中是否存在真实人脸,避免一些动画、素描、油画等人像的仿冒。

          活体检测

          概述

          根据应用场景及安全性要求的不同,目前提供不同的活体检测算法和策略,具体包括:

          • 有动作交互活体检测:通过要求用户配合做出一些面部动作,验证是否为身份伪造攻击,此方式往往结合静默图片活体检测一起使用。
          • 静默图片活体检测:通过提交图片,检测图片中的屏幕边框、反光、摩尔纹、成像畸变等线索,来区分是否为二次翻拍攻击(举例:如用户A用手机拍摄了一张包含人脸的图片一,用户B翻拍了图片一得到了图片二,并用图片二伪造成用户A去进行识别操作,这种情况普遍发生在金融开户、实名认证等环节)。
          • H5视频活体检测:通过上传一段视频,进行视频随机抽帧分析,对随机图片进行静默图片活体检测,得出综合攻击情况分析结果。为确保视频唯一性,可以结合语音校验码接口使用。

          实际采集过程中,为了确保业务流程的合理性,需要确保采集的图片为真人操作,避免其他用户恶意伪造作弊。而以上几种活体检测策略,需要根据业务场景选择最合适的一个或组合方式。下面简单举例一些常见的活体攻击类型:

          打印照片

          照片抠图

          照片变形

          手机照片翻拍

          Pad/PC照片、视频

          照片背景替换

          换脸

          2.5D动画

          3D动画

          高仿面具

          有动作活体检测

          客户端SDK,在前端离线随机要求用户,配合做出眨眼、张嘴、点头、抬头、左摇头、右摇头动作,同时检测用户完成情况。需要强调的是,在此策略下,前端仅仅检测动作的通过情况,并不对视频和真人做出区分。在做动作的过程中,SDK会随机抓取几帧图像,并在动作通过后将抓取的图像上传到后台进行活体判断。

          该方案的优势在于:随机动作可以增加攻击的成本,并且大大降低打印照片等攻击通过的概率,而这些正好对于后端检测算法来说属于较难案例;另外,活体判断所用的多张图片为前端在完成动作过程随机抓取,因此加大了攻击暴露出破绽的可能性;同时,多张图片可以提高采集到高质量真人活体图片的概率,因而可以采用一个更高的采信阈值,而该阈值对应的活体分数攻击图片则很难达到。

          有动作活体检测,不推荐单独使用,需要结合静默图片活体检测一起使用。对于APP场景,一般推荐都可以使用客户端SDK,增加有动作活体检测步骤,提升人脸验证过程的安全性。

          静默图片活体检测

          该方案为接入成本最低的使用方式,只需提交一张人脸图片即可。但是活体检测的效果不是十分理想,主要是由于:区别于客户端随机抓拍的方式,H5拍照为主动有意识拍照,因此攻击者可以更加方便的设法减少出现后端算法判断的线索,并且在这个过程中用户可以调用后置摄像头进行拍照,前置摄像头和后置摄像头由于焦距的不同,会使后置摄像头拍摄的攻击图片更难分辨真假。另外,H5拍照只上传一张图片,增加了误判的可能性。

          H5视频活体检测

          该方案主要应用于H5方案,优势主要在于:可以结合语音校验码,提供更加严谨地活体检测,视频流在云端会进行类似于有动作检测的随机抽帧,基于多帧进行综合的判断,可以采用更高的采信阈值,大大增加了作弊成本,也增加了暴露破绽的可能性。通过语音校验码验证视频为非伪造,交互体验方面,也较能为用户所接受。方案劣势在于:视频录制导致上传文件较大,对于网络情况不太好的情况,可能整体验证时间较长,另外由于浏览器版本兼容限制,可能在部分机型上,体验不是很好。

          活体阈值

          拒绝率(TRR) 误拒率(FRR) 通过率(TAR) 阈值(Threshold)
          0.90325733 0.1% 99.9% 0.022403
          0.96254072 0.5% 99.5% 0.393241(推荐
          0.97557003 1% 99% 0.649192
          0.98990228 2% 98% 0.933801
          0.99446254 3% 97% 0.973637
          0.99641694 4% 96% 0.988479
          0.99739414 5% 95% 0.994058

          关于以上数值的概念介绍

          • 拒绝率(TRR):如99%,代表100次作弊假体攻击,会有99次被拒绝。
          • 误拒率(FRR):如0.5%,指1000次真人请求,会有5次因为活体分数低于阈值被错误拒绝。
          • 通过率(TAR):如99%,指100次真人请求,会有99次因为活体分数高于阈值而通过。
          • 阈值(Threshold):高于此数值,则可判断为活体。

          SDK采集

          概述

          客户端SDK,具备SDK本地的众多人脸采集相关功能,可以更高效准确地,实时采集到符合质量的人脸,配合摄像头等设备,能够快速构建实时人脸采集能力

          客户端SDK申请地址

          功能介绍

          人脸检测

          设备端离线实时监测视频流中的人脸,同时支持处理静态图片或者视频流。

          人脸跟踪

          对当前检测到的人脸持续跟踪,动态定位人脸轮廓,稳定贴合人脸。

          人脸关键点

          对当前检测到的人脸持续跟踪,并动态实时展现人脸上的核心关键点。

          人脸图片采集

          在人脸检测及追踪过程中,完成人脸图片采集,并输出预设条件的人脸图片

          人脸质量控制

          在人脸检测及追踪过程中,实时校验人脸的姿态角度、遮挡、清晰度、光照条件,符合质量条件的才会被采集。

          有动作活体检测

          实时反馈,人脸中眼睛,嘴巴,头部姿态的状态,通过给用户设定完成相关动作,判断是否是活体。支持指定生效的动作及应用顺序。

          开放参数设置

          SDK内部支持高度可定制化参数,对人脸检测、追踪、采集、质量模块进行个性化调整。

          UI自定义修改

          SDK内部所有UI层代码、音频文件全部开源,可根据实际业务需求任意调整。

          多种场景版本

          提供iOS、Android、Windows、Linux、Linux ARM多端覆盖,适应各种应用场景及设备类型需求。

          支持平台

          • iOS版本:iOS 7+
          • 安卓版本:Android 4.4+
          • Windows版本:Win7、10【32位、64位】
          • Linux版本:Ubuntu

          规格参数

          • SDK大小:~ 5M
          • 最小人脸检测大小:30px * 30px(实际应用推荐80px~200px之间)
          • 可识别人脸角度:yaw ≤ ±30°, pitch ≤ ±30°
          • 检测速度:100ms 1080p*
          • 追踪速度:10ms 1080p*

          场景版本

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

          离线质量检测

          客户端SDK中,内置了人脸质量检测模块。在人脸检测及追踪过程中,实时校验人脸的姿态角度、遮挡、清晰度、光照条件,符合质量条件的才会被采集,此质量校验为本地离线校验。

          离线有动作活体检测

          客户端SDK,离线本地实时反馈,人脸中眼睛,嘴巴,头部姿态的状态,通过给用户设定完成相关动作,判断是否是活体。支持指定生效的动作及应用顺序。

          开放参数配置

          最小检测人脸

          在检测人脸过程中,可设置检测到的最小人脸尺寸,小于该尺寸或比例的人脸不会被检测到。

          采集姿态角控制

          在检测人脸过程中,可设置采集图片时的人脸姿态角度阈值,阈值范围内才会采集人脸。

          采集人脸质量控制

          在检测人脸过程中,可设置人脸关于光照、清晰度、各部位遮挡的阈值,符合条件才会采集图片。

          采集图片设置

          可设置采集人脸图片的数量、大小、以及人脸与图片的大小比例,超过图片边界将用黑色填充。

          活体检测动作设置时

          支持眨眼、张嘴、摇摇头、左右转头、上下点头六个指定动作,可设定具体生效的动作,以及校验顺序。

          应用方案建议

          数据传输

          SDK本地采集人脸的过程,完全无需联网。但人脸对比、人脸查找、人脸属性分析能力需要调用API使用。产品策略方面,因API使用需要使用在线鉴权token,生成token的API Key和Secret Key,考虑到数据安全和维护成本,建议都置于Server端,并下发token到客户端产品,实际的API调用,由Server端做中转控制。

          图片压缩

          SDK支持采集图片的大小设置,以及人脸和采集图片的比例设置,可基于业务需要,对采集图片大小进行适当地进一步加工。如剪裁(人脸不小于100px)、分辨率压缩(最小宽度200px左右)、质量压缩(控制在0.8以上),以上三种处理方式也可以组合叠加使用。

          数据安全

          对安全有进一步需求的话,为防止人脸传输过程中被篡改,可对SDK本地输出的人脸图像做加密处理,在server端进行相应解密操作,进一步增强安全性。

          话术提示

          手机把握姿态

          H5采集

          概述

          H5采集是一种常用的人脸采集方式,因为很多情况下,很多产品并没有原生APP,往往基于H5或者微信小程序等,快速验证业务流程,或者进行线上人脸数据冷启动。但因为H5形式的权限问题,往往只能通过拍照形式进行图片获取,无法调用客户端SDK的很多离线本地能力。这就需要通过一系列的接口验证来完成各种采集条件的校验。

          质量检测—API方式

          如果需要判断一张图片中的人脸,是否符合后续识别或者对比的条件,可以使用此接口,在请求时在face_fields参数中请求qualities。基于返回结果qualities中,以下字段及对应阈值,进行质量检测的判断,以保证人脸质量符合后续业务操作要求。

          同时,需要结合姿态角、图片大小等进行综合判断。

          指标 字段与解释 推荐数值界限
          遮挡范围 occlusion,取值范围[0~1],0为无遮挡,1是完全遮挡
          含有多个具体子字段,表示脸部多个部位
          通常用作判断头发、墨镜、口罩等遮挡
          left_eye : 0.6, #左眼被遮挡的阈值
          right_eye : 0.6, #右眼被遮挡的阈值
          nose : 0.7, #鼻子被遮挡的阈值
          mouth : 0.7, #嘴巴被遮挡的阈值
          left_check : 0.8, #左脸颊被遮挡的阈值
          right_check : 0.8, #右脸颊被遮挡的阈值
          chin_contour : 0.6, #下巴被遮挡阈值
          模糊度范围 blur,取值范围[0~1],0是最清晰,1是最模糊 小于0.7
          光照范围 illumination,取值范围[0~255]
          脸部光照的灰度值,0表示光照不好
          以及对应客户端SDK中,YUV的Y分量
          大于40,建议40~100
          姿态角度 Pitch:三维旋转之俯仰角度[-90(上), 90(下)]
          Roll:平面内旋转角[-180(逆时针), 180(顺时针)]
          Yaw:三维旋转之左右旋转角[-90(左), 90(右)]
          分别小于20度
          人脸完整度 completeness(0或1),0为人脸溢出图像边界,1为人脸都在图像边界内 视业务逻辑判断
          人脸大小 人脸部分的大小
          建议长宽像素值范围:80*80~200*200
          人脸部分不小于100*100像素

          产品策略建议

          在采集用户人脸前(通常为浏览器权限,选择拍照或者选取相册图片),用户往往没有人脸标准图片的概念,这时可以提供一个标准示范图片,以及一些badcase的示意图,作为前置教学步骤,非常直观地告诉用户哪些是标准正确的,哪些是不应该操作的。

          活体检测—API方式

          可以通过在线活体检测接口,进行图片的活体及质量的同时验证,保障采集的图片,非二次翻拍,具体阈值选择如下所示:

          拒绝率(TRR) 误拒率(FRR) 通过率(TAR) 阈值(Threshold)
          0.90325733 0.1% 99.9% 0.022403
          0.96254072 0.5% 99.5% 0.393241(推荐
          0.97557003 1% 99% 0.649192
          0.98990228 2% 98% 0.933801
          0.99446254 3% 97% 0.973637
          0.99641694 4% 96% 0.988479
          0.99739414 5% 95% 0.994058

          关于以上数值的概念介绍

          • 拒绝率(TRR):如99%,代表100次作弊假体攻击,会有99次被拒绝。
          • 误拒率(FRR):如0.5%,指1000次真人请求,会有5次因为活体分数低于阈值被错误拒绝。
          • 通过率(TAR):如99%,指100次真人请求,会有99次因为活体分数高于阈值而通过。
          • 阈值(Threshold):高于此数值,则可判断为活体。

          图片裁剪与压缩

          用户在提交图片后,最好不要直接用来做业务处理,可以让用户自行剪裁一下图片,保留人脸部分,这样可以更好地完成前端图片的压缩,并满足标准图像的录入。

          无论是否做过手工剪裁,都可以基于人脸检测接口,取到人脸的标准框位置,基于四个关键点进行人脸部分的进一步自动剪裁,减少图片的大小,总而减少网络传输耗时。通常建议:剪裁(人脸不小于100px)、分辨率压缩(最小宽度200px左右)、质量压缩(控制在0.8以上),以上三种处理方式也可以组合叠加使用。

          采集设备

          概述

          可基于PhonePad摄像头+开发板等形式,快速搭建人脸采集前端设备。摄像头实时向开发板输入视频流,SDK运行在ARM开发板上,对视频流中的人脸实时处理,并输出符合条件的人脸图片。

          手机

          应用场景

          对于远程开户、刷脸登录、移动考勤等手机端场景,可将iOS/Android SDK集成到现有APP应用中,在设备端离线完成人脸采集,确保采集图片质量的同时,提供更加流畅的交互体验。也可以基于微信小程序,或者H5形式,完成业务快速落地。

          适用采集人数

          1人。

          产品架构

          手机+客户端SDK、微信小程序、H5等

          产品形态

          APP、H5、小程序等

          核心性能需求

          暂无要求。需要注意的是需要根据业务特点,做好系统版本或者浏览器版本的兼容工作。

          平板

          应用场景

          对于考勤、签到、闸机等近场景人脸识别,需要用户配合式刷脸、且需要页面反馈的业务需求,可直接开发APP应用于Pad设备上,设备布设简单,应用开发难度低,可快速进行业务落地。

          适用采集人数

          1人。

          产品架构

          Pad+客户端SDK、H5等

          产品形态

          APP、H5等

          核心性能需求

          暂无要求。需要注意的是需要根据业务特点,做好系统版本或者浏览器版本的兼容工作。同时需要考虑设备的性能问题,例如闸机等场景,需要考虑Pad性能对于人脸采集效率的影响。

          近距离人脸采集开发组件

          应用场景

          多用于近距离的人脸采集场景,如闸机、门禁、柜台身份核验、自助售卖机等。为配合用户交互反馈,可根据业务需要,外接一块显示屏幕设备。

          适用采集人数

          1人。

          产品架构

          USB摄像头+ARM开发板,为配合交互反馈,可外接一块显示屏幕设备。

          产品形态

          摄像头一体机

          核心性能需求

          • 抓拍帧数:10~15FPS/每秒(达到20FPS更佳)
          • 图像尺寸:不低于640 (H)*480 (V),建议1280 (H)*720 (V) (720P)
          • 信噪比:>40dB( 建议数据60dB)
          • 动态范围:>70db(建议数据100dB)
          • 低照度:0.01Lux及以下,月光级
          • 快门:1秒至1/15,000秒秒(参考数据)
          • 支持POE供电

          数据参考

          我们对USB+ARM的技术方案,做了一些参数调整,所得实验数据如下,仅供参考:

          应用建议(以自助柜机为例)

          • 摄像头尽量避免对着强光源,如室内大灯、阳光直射处等。
          • 布设高度一般用于单人操作的身份核验。

          中远距离人脸采集开发组件

          应用场景

          多用于中远距离的人脸采集场景,一般光线练好、人流量较少,如无感知闸机、考勤签到、会员识别等,为配合用户交互反馈,可根据业务需要,外接一块显示屏幕设备。

          适用采集人数

          1~5人。

          产品架构

          网络摄像头+ARM开发板

          产品形态

          监控枪机/半球形摄像头一体机

          核心性能需求

          • 抓拍帧数:10~20FPS/每秒
          • 图像尺寸:不低于1280 (H)*720 (V) (720P)
          • 信噪比:>60dB( 建议数据60dB)
          • 动态范围:>100dB(建议数据120dB)
          • 低照度:0.0001Lux及以下,星光级
          • 快门:1秒至1/100,000秒 (参考数据)
          • 支持POE供电

          应用建议(以闸机为例)

          • 摄像头尽量避免对着强光源,如室内大灯、阳光直射处等。
          • 布设高度如果较低(如闸机机头),请保持一定仰角,为了避免与光源直对,可以水平面有一定旋转角。
          • 布设高度如果较高(如教室无感知考勤),请保持一定仰角,为了避免与光源直对,可以水平面有一定旋转角。
          • 此场景一般适用于单人识别(每次只识别一人),普遍为多人的场景,建议使用人脸抓拍一体机

          示意图如下:

          远距离人脸采集开发组件

          应用场景

          摄像头内集成离线人脸抓拍功能,可在一体机内完成人脸的检测、跟踪、捕获等操作,布设更简单,多用于远距离人脸采集及人流量较多的场景,如室内/外监控、零售客群分析、安防布控等大部分远场人脸识别场景。此方案采集的数据一般直接用于后端分析使用。

          适用采集人数

          1~50人.

          产品架构

          抓拍机内置人脸采集能力

          产品形态

          人脸抓拍一体机

          核心性能需求

          • 抓拍帧数:20~30FPS/每秒
          • 图像尺寸:不低于1920 (H)*1080 (V) (1080P)
          • 信噪比:>60dB
          • 动态范围:>100db(建议数据120dB)
          • 低照度:0.0001Lux及以下,星光级
          • 快门:1秒至1/100,000秒 (参考数据)
          • 支持POE供电

          应用建议(以零售VIP识别为例)

          • 为避免重复识别,摄像头有效采集区域,建议对准门口、楼梯扶手出入口处、电梯口等,这样可以尽可能采集到不重复的人脸,且确保人流量集中。
          • 架设角度尽可能保持与水平面的夹角较小,避免采集到的人脸多为侧面或者俯视角度。

          上一篇
          活体检测
          下一篇
          人脸口罩检测与识别