209
云计算
负载均衡
产品简介
产品价格
快速入门
用户指南
实践操作
常见问题
购买指南
云服务器
产品简介
计费规则
购买指导
控制台使用指南
常见问题
云数据库
产品简介
计费规则
购买指导
快速入门
连接实例
控制台使用指南
对象存储
产品简介
控制台使用指南
程序员百科
Python
百度人脸识别使用指南-人脸闸机应用场景方案

产品推荐:

1、安全稳定的云服务器租用,2核/2G/5M仅37元,点击抢购>>>

2、高防物理服务器20核/16G/50M/500G防御仅350元,点击抢购>>>

3、百度智能建站(五合一网站)仅880元/年,点击抢购>>> 模板建站(PC+手机站)仅480元/年,点击抢购>>>

4、阿里云服务器2核2G3M仅99元/年、2核4G5M仅199元/年,新老同享,点击抢购>>> 

5、腾讯云服务器2核2G4M仅99元/年、新老同享,点击抢购>>>   



点击这里点击这里申请百度智能云特邀VIP帐号,立即体验人脸识别>>>

百度人脸识别使用指南-人脸闸机应用场景方案

1、简介

1.1 功能概述

  • 本地版活体检测(本地活体):通过让用户做出指定脸部交互动作,识别当前操作者是否为活体,此功能可离线使用,可设定指定动作是否使用及应用顺序。可有效抵御高清图片、3D建模、视频等攻击。
  • 在线版活体检测(在线活体):基于本地版有交互活体检测输出的质量合格的图片,请求在线活体检测接口,可以进一步判断用户上传的图片是否为活体,进一步抵御高精度视频、高精度建模等攻击。此接口建议与本地版活体检测结合使用,且输入的照片一定为二次采集图片(即限于产品前端拍照所得,不可为相册图片)。
  • 人脸质量检测:判断视频流中的图片帧中,哪些图片质量较佳,即人脸图像特征清晰(满足角度、姿态、光照、模糊度等校验)。
  • 人脸图像采集:通过本地SDK能力,采集人脸图像,同时经过人脸质量检测,确保采集到的人脸图像符合各条件校验(角度、姿态、光照、模糊度等),为设备前端获取有效可分析人脸的主要功能。
  • 在线鉴权:API接口的权限判断,在后台获取API Key和Secret Key后生成的token,用于每次请求时供服务器判断是否可通过此次请求。
  • 离线授权:SDK的授权判断,授权介质也称为license,在SDK使用中,需要通过license向授权服务器发起请求,判断SDK的使用合法性及使用有效期。
  • 人脸识别:人脸识别技术的泛称,通常指识别图片或视频中的人脸,提取人脸特征值,用于进一步的人脸对比、搜索等业务操作。
  • 人脸检测:分析并定位图片中的人脸及位置,是人脸识别技术的第一步分析内容。
  • 人脸1:1:目标分析人脸与已知身份人脸进行比对,对比两个图片中的人脸的相似度,根据分值判断两张人脸是否为同一人。
  • 人脸1:N:在一个已知身份的人脸集合中找到相似的人脸,返回内容为人脸集合中每一张脸与目标人脸的相似度分值,找出目标人脸是否属于哪一个已知身份的用户。
  • 人脸属性:通过人脸特征抽取,分析人脸的性别、年龄、种族、是否戴眼镜等属性值。
  • ak:对应API KEY
  • sk:对应Secret Key
  • LicenseID:应用授权标识
  • 包名packageName:安卓应用包名,用来唯一识别一个应用。
  • license文件:授权文件,与ak,sk,安卓包名和签名一一对应。集成的时候请放置在assets目录下。
  • 签名MD5:安卓应用签名jks文件的MD5值。

1.2 名词解释

  • 前端设备:装有安卓系统的设备,如手机,平板,安卓开发板等。
  • 内置相机:手机或平板自带的相机。
  • 网络摄像机:和前端设备分开的,通过网络进行数据传输的摄像机。一般都是基于RTSP协议传输H264编码的视频。
  • AndroidSDK:百度人脸检测安卓SDK;
  • 用户后台服务:用户的后台服务器。
  • 百度人脸服务:百度基于REST接口的对外人脸服务。

场景的数据流向为:

  1. 前端设备通过内相相机或者网络摄像机采集照片/视频,进行解码。获取一帧帧的图片。
  2. 调用AndroidSDK对图片内的内容进行分析,分析出是否无人脸,人脸在图片中的位置,人的角度等信息。再经过过虑算法,挑选一张质量较好的图片,对人脸区域进行裁剪。
  3. 数据上传至用户后台服务器。
  4. 用户后台服务接收到照片上传至百度人脸服务进行人脸识别查询。
  5. 百度人脸服务返回结果给用户后台服务,用户后台服务进行相应的逻辑处理,再将结果返回给前端app.

1.3 硬件选型

为了跑通整体逻辑,方便理解,安卓demo中也集成了,后台服务器的一些功能。实际使用过程中,我们建议把人脸识别接口的功能放置于自己的服务器当中。主要是为了防止ak,sk,被他人反编译调用,从而造成,经济和数据上的损失!!!!!!

Android闸机硬件选型推荐有两种方案,一种是使用现有市场上的成品平板,另外一种是使用定制的硬件平台和自选外设摄像头(USB摄像头或网络摄像头)。针对三种方案分别做出如下选择:

1、平板方案

名称指标要求
CPUARM v7(支持neon指令集)及以上架构,4核以上
内存2G+
屏幕640*480以上
摄像头720p以上
系统Android 4.4+

平板型号推荐示例:华为M3

2、USB摄像头方案

名称指标要求
CPUARM v7(支持neon指令集)及以上架构,4核以上
内存2G+
摄像头USB2.0+ 支持UVC协议
系统Android 4.4+
  • 硬件型号推荐:Firefly-RK3288Firefly-RK3399
  • 摄像头推荐:视派尔 C-SP2820W400

如何使用:将USB摄像头与开发板连接,SDK可以自动识别摄像头,使用方法和内置相机一致。

3、网络摄像头

名称指标要求
开发板rk3399(720p 15+帧,显示和检测异步)
rk3288(720p 10+帧 显示和检测异步)
镜头3.5mm(具体根据检测距离选择)
分辨率120W像素以上
宽动态100dB以上
快门小于 1/500s
传输协议RTSP

如何使用:网络摄像头与开发板连接到同一个局域网内(连接至同一路由器,并使用同一网段如192.168.1.xxx)

根据网络摄像头说明书,配置网络摄像头,帧率15,分辨率720P,码率12M左右,设置rtsp协议url和用户名和密码。调整焦距至画片清晰。可以用VLC等支持RTSP协议的软件验证摄像头是否配置成功。如摄像头配置没有问题,可参数RTSTTestActivity,修改摄像头地址。其它流程与自带摄像头一致。

2、集成指南

2.1 准备工作

在正式集成前,需要做一些准备工作,完成一些账号、应用及配置,具体如下:

2.1.1 注册开发者

  • STEP1:点击百度AI开放平台导航右侧的控制台中的人脸识别,页面跳转登录完毕后,进入人脸识别后台。
  • STEP2:使用百度账号完成登录,如您还未持有百度账户,可以点击此处注册百度账户。
  • STEP3:进入百度云欢迎页面,填写企业/个人基本信息,注册完毕,至此成为开发者。注:(如您之前已经是百度云用户或百度开发者中心用户,STEP3可略过。)
  • STEP4:进入百度云控制台,找到人工智能相关服务面板。
  • STEP5:点击进入「人脸识别」模块。

注一:如果您通过百度AI开放平台登录到后台,AI相关服务模块入口,如下图所示:

注二:如果您通过百度云直接登录后台,AI相关服务模块入口,则如下图红框部分所示:

说明:两种入口只是展现形式不同,相关AI服务模块内容完全一样。

2.1.2 创建应用

创建好账号后,在正式调用AI能力之前,需要您创建一下应用,这个是调用服务的基础能力单元。选择「人脸识别」服务,首先见到此服务的控制台概览页,点击「创建应用」,即可进入应用创建界面,如下图所示:

2.1.3 获取密钥

在您创建完毕应用后,平台将会分配给您此应用的相关凭证,主要为AppIDAPI KeySecret Key,以上三个信息是您应用实际开发的主要凭证,每个应用之间各不相同,请您妥善保管。如上图所示。

:::warning 注意:开发中请注意区分多份aksk(API Key、Secret Key),每个aksk代表一个人脸库。 :::

2.1.4 生成token

刚才所创建的应用在调用开放平台API之前,首先需要获取Access Token(用户身份验证和授权的凭证)您需要使用创建应用所分配到的AppIDAPI KeySecret Key,进行Access Token的生成,方法详见Access Token获取,我们为您准备了几种常见语言的请求示例代码。

::: warning 注:Access Token的有效期为30天(以秒为单位),请您集成时注意在程序中定期请求新的token,或每次请求都获取一次token。 :::

2.1.5 SDK license(十分重要!)

人脸SDK License:此license用于SDK离线功能使用,在您的申请人脸SDK的后台页面,下载两个端的license,用于接下来集成使用。

不过我们为您提供了自动化配置脚本,如下图所示:

您可以在下载登录示例工程的同时,直接下载已经配置好授权信息的版本。

2.2 安卓集成

2.2.1 自动配置授权集成

如果您是通过自动配置授权信息下载的示例工程,只需要修改Config类和配置签名。您的集成将少很多步骤。

1、修改Config类中参数,自动配置已经为您修改好了licenseID和license文件,您只需要修改appKey、appSecret(即ak/sk), groupId是自己定义的,用于人脸注册和人脸识别等接口使用。保证注册的人脸和查找的人脸在同一个groupId即可。

2、 配置签名(申请license时的md5为打包签名的文件,所以必须用申请license的签名文件) 因为SDK运行时会对比license里面的md5和签名文件的md5,为了能debug也能使用人脸,所以需要进行下面的配置。实际发布时只要使用申请时关联的签名文件即可,没有下面的配置也行。

app->build.gradle->android->signingConfigs

注意:keyAlias为你创建的打包签名文件的别名。

2.2.2 未使用自动配置授权集成

1、把申请的license(idl-license.face-android)放到到项目中assets目录中

2、修改Config类中的参数:

licenseID为您申请license填的授权信息字符串+"-face-android"

groupId是自己定义的,用于人脸注册和人脸识别等接口使用。保证注册的人脸和查找的人脸在同一个groupId即可。

3、配置签名(申请license时的md5为打包签名的文件,所以必须用申请license的签名文件)

因为SDK运行时会对比license里面的md5和签名文件的md5,为了能debug也能使用人脸,所以需要进行下面的配置。实际发布时只要使用申请时关联的签名文件即可,没有下面的配置也行。

app->build.gradle->android->signingConfigs

  • keyAlias为你创建的打包签名文件的别名
  • keyPassword为你创建的打包签名的别名密码
  • storeFile为签名文件的路径
  • storePassword为签名文件的密码

4、修改包名 app->build.gradle->android->defaultConfig ->您申请license时填的包名

2.2.3 SDK初始化

使用人脸检测之前先要对识别库进行初始化。推荐在applicaton的onCreate方法中调用如下代码片段

2.2.4 人脸注册

1、可以通过RegDetectActivity实时检测获取注册的人脸。注册过程是往人脸库中注册照片,因为该照片做为识别标准所以对质量的要求也更高。为了保证人脸注册图片的质量。

Demo中提供了RegDetectActivity.该Activity在屏幕上指定了一定的区域,要求用户在屏幕中央,脸正对着摄像头。如果用户的姿势达不到要求,会提示用户,直到符合要求为止。

下面的代码片段是,检测人脸过程中,根据检测结果值,提示用户进行调整,从而得到高质量的照片。

2、或者相册获取注册的人脸。

3、调用在线api进行注册。

2.3.5 人脸识别

  • 创建FaceDetectManager对象,该类封装了,人脸检测整体逻辑。
  • 创建CameraImageSource用于,从系统相机获取图片。如果是网络相机,创建 RtspImageSource从网络摄像头获取 图片进行识别。
  • FaceDetectManager设置previewView,进行预览显示。
  • FaceDetectManager设置OnFaceDetectListener,该回调在检测完一帧图片之后会被调用。
  • OnTrackListener只有当检测到人脸的时候会被调用。
  • FaceDetectManager.getFaceFilter()会返回人脸条件过滤器,可以设置过滤角度。符合条件的人脸图片上传至服务器进行人脸识别。(也就是1:N接口)
  • 正常场景,相似度80以上可以认为可信。小于80的可以采取策略,选择重试。重度逻辑,请自行修改。

1、检测人脸(从Android手机自带摄像头和usb摄像头获取人脸)(DetectActivity)

2、从网络摄像头获取人脸(RtspTestActivity)

3、人脸识别(调用在线API)

Demo中为了方便演示逻辑,直接请求的百度服务器,实际场景可将图片发送给自己的服务器,再由服务器发起识别请求,或者,把ak,sk放置在服务器上。客户端调用接口获取accessToken。保证账户信息安全。

2.3.6 相关类解释

  • FaceDetector封装了人脸检测相关底层的各种操作。
  • ImageFrame:封装了一帧帧的图片。
  • ImageSource:图片来源,如系统相机,图片文件,网络摄像头等。
  • FaceDetectManager:封装了图片采集到,检测的一整套逻辑。
  • PreviewView:显示相机的View;
  • FaceCropper:工具类,用于裁剪人脸图片。

2.3 iOS集成

把申请的idl_license.license文件添加到工程当中。

1、确定工程的BundleIdentifier和申请时填写的bundleID相同

App启动时创建FaceSDK实例,注意「APIKEY」对应后台的LicenseID,如下图示意:

替换Config.h 中的APP_KEY和APP_SECRET(对应的后台应用列表中的API-KEY和SECRET-KEY),如下图所示:

设置SDK参数,正常情况使用demo中提供的参数即可。

至此,项目配置完成。

注册和识别人脸检测和截取的代码类似,区别在于获取到人脸图片之后调用的API不同。注册相关代码说见 CaptureImageViewController

创建相机,设置frame,将相机预览的layer,添加到View的layer当中。用于显示相机预览图片。

相机预览过程中会回调- (void)cameraControl:(CameraControl )camera didOutputFrame:(UIImage )image 覆写该方法,调用[[FaceVerifier sharedInstance] prepareDataWithImage:image andActionType:FaceVerifierActionTypeVerify];对该图片进行人脸检测。检测结果 NSArray* faces = [[FaceVerifier sharedInstance] getTrackedFace];获取检测结果 。

回调结果上传至人脸识别服务器进行识别。根据返回结果处理相应的业务逻辑。

注意:Demo中为了方便演示逻辑,直接请求的百度服务器,实际场景可将图片发送给自己的服务器,再由服务器发起识别请求,或者,把ak,sk放置在服务器上。客户端调用接口获取accessToken。保证账户信息安全。

identify方法比较简单,将UIImage转化为base64字符串,post到服务器接口。

常见问题

Q:SDK license和ak/sk?
A:license是用于本地人脸检测,申请联系商务。ak/sk用调用百度云服务人脸注册和人脸识别 。

Q:Android申请时需要填入打包签名的MD5,该MD5如何得来?
A:创建工程时生成签名文件keystore.jks(该文件会用于最终发布是打包,请认真对待),在命令行工具中使用keytool -list -v -keystore keystore.jks 得到md5,删除冒号。 具体可以参考开发者论坛。关于安卓包名、MD5值的一些讲解https://ai.baidu.com/forum/topic/show/492039

Q:闸机场景选择多大分辨率?
A:对于闸机场景,分辨率没有必要特别高,通常640*480即可满足。分辨率越小,人脸检测的速度就越快。

Q:检测距离太近怎么办?
A:1、可以修改最小检测人脸(可调节范围80-100),在相同的分辨率下,最小检测人脸越小,就能在更远的距离检测到人脸。当然最小检测人脸越小,越耗性能。

Q:怎么样更快检测到人脸?
A:mFaceTracker.set_detection_frame_interval(10); 设置该参数,参数越小,就会人脸进入屏幕时更快的检测到人脸,单位ms


这条帮助是否解决了您的问题? 已解决 未解决

提交成功!非常感谢您的反馈,我们会继续努力做到更好! 很抱歉未能解决您的疑问。我们已收到您的反馈意见,同时会及时作出反馈处理!