开放能力
开发平台
行业应用
生态合作
开发与教学
资讯 社区 控制台
技术能力
语音技术
图像技术
文字识别
人脸与人体识别
视频技术
AR与VR
自然语言处理
知识图谱
数据智能
场景方案
部署方案
行业应用
智能教育
智能医疗
智能零售
智能工业
企业服务
智能政务
智能农业
信息服务
智能园区
智能硬件
人脸识别

    人脸采集

    概述

    核心概念

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

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

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

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

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

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

    流程概览

    目录导览

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

    准备工作
      - 账号及应用
      - SDK
      - 采集设备
      - API接口
    采集指标
      - 质量控制
        - 概述
        - 遮挡
        - 模糊度
        - 光照
        - 姿态
        - 其他
      - 活体检测
        - 概述
        - 有动作活体检测
        - 静默图片活体检测
        - 视频活体检测
    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去进行识别操作,这种情况普遍发生在金融开户、实名认证等环节)。
    • 视频活体检测:通过上传一段视频,进行视频随机抽帧分析,对随机图片进行静默图片活体检测,得出综合攻击情况分析结果。为确保视频唯一性,可以结合语音校验码接口使用。

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

    打印照片

    照片抠图

    照片变形

    手机照片翻拍

    Pad/PC照片、视频

    照片背景替换

    换脸

    2.5D动画

    3D动画

    高仿面具

    有动作活体检测

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

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

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

    静默图片活体检测

    该方案为接入成本最低的使用方式,只需提交一张人脸图片即可。但是活体检测的效果不是十分理想,主要是由于:区别于客户端随机抓拍的方式,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识别为例)

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

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