人脸活体检测
本文为您介绍人脸人体(facebody)类目下的人脸活体检测DetectLivingFace的语法及示例。
功能描述
人脸活体检测能力可以检测图像中的人脸是否为来自认证设备端的近距离裸拍活体人脸对象,可广泛应用在人脸实时采集场景,满足人脸注册认证的真实性和安全性要求。活体判断的前置条件是图像中有人脸。
能力范围来看:
1. 认证设备端是指借助近距离裸拍活体正面人脸用于认证、通行等服务场景的含RGB摄像头的硬件设备,常见的认证设备端有手机、门禁机、考勤机、PC等智能终端认证设备。
2. 裸拍活体正面人脸是指真人未经重度PS、风格化、人工合成等后处理的含正面人脸(非模糊、遮挡、大角度的正面人脸)的照片。常见的非真人有纸张人脸、电子屏人脸等;常见经过重度PS后处理的照片有摆拍街景照、摆拍人物风景照、摆拍证件照等;常见的其他后处理及生成照片有动漫人脸、绘画人脸等。
应用场景
- 系统人脸登录防攻击:通过检测上传的图像是否为真人实拍,而非攻击及PS等后处理照片,以防止攻击者登录系统带来安全风险。
- 门禁闸机刷脸通行:面向人脸注册和认证环节设备端实时的活体检测,实现注册与认证过程中的真人校验,防止非法分子盗用、伪造他人身份打卡通行。
- 智慧酒店自助入住:在酒店前台自助办理入住场景中,运用活体检测技术实现无人监管场景下,住客非活体攻击(纸张人脸、电子屏人脸)的高效率拦截。
- 金融远程身份认证:面向投资理财、基金交易、保险理赔等金融业务的活体检测需求,高效率实现对翻拍、PS图片、打印图片、高仿模具等攻击的拦截,确保用户身份真实。
特色优势
- 基于图片中人像目标的高维度特征(风格化、摩尔纹、成像畸形等),判断目标对象是否为活体,有效防止屏幕二次翻拍等作弊攻击,支持单张或多张判断逻辑。
- 灵活支持RGB摄像头设备的实时活体检测,可有效防止翻拍、头模、打印图片等样本攻击。
- 简单易用:可直接调用的API接口,服务简单易用,易被集成,兼容性强。
接入指引
1. 注册阿里云账号:打开阿里云官网,在阿里云官网右上角,单击立即注册,按照操作提示完成账号注册。
2. 开通能力:请确保您已开通人脸人体服务,若未开通服务请立即开通。
3. 创建AccessKey:请确保您已创建AccessKey,如果您使用的是子账号AccessKey,您需要给子账号赋予AliyunVIAPIFullAccess权限,具体操作,请参见RAM授权。
4. 在线调试(可选):您可以通过OpenAPI Explorer在线调试能力,查看完整的调用示例代码及SDK依赖信息,也可以下载完整的工程。
5. 开发接入步骤:
- 在SDK总览中选择您要接入使用的SDK语言。
- 在对应语言的SDK文档中找到AI类目为人脸人体(facebody)的SDK包进行安装。
- 参考文档中提供的示例代码进行适当修改后调用。
6. 示例代码:该能力常用语言的示例代码,请参见人脸活体检测示例代码。
7. 客户端直接调用:该能力常用的客户端调用方式包括以下几种。
输入限制
- 图像格式:PNG、JPG、JPEG、BMP、GIF、WEBP。
- 图像大小:不超过10 MB。如您有大图需求,请通过钉钉群(23109592)联系我们。
- 图像分辨率:建议大于256×256像素,像素过低可能会影响识别效果。
- URL地址中不能包含中文字符。
检测说明
- 最长检测时间是5秒,如果在该时间内没有完成检测,系统会强制返回超时错误码。
- 图像下载时间限制为3秒,如果下载时间超过3秒,系统会返回下载超时。
- 图像检测接口响应时间依赖图像的下载时间。请保证被检测图像所在的存储服务稳定可靠,建议您使用阿里云OSS存储或者CDN缓存。
- 最多可检测10张图像。
- 目前平台提供的活体检测为静默活体,即基于图片进行检测,暂不支持摇头,张嘴、眨眼等动作的活体检测。
计费说明
关于人脸活体检测的计费方式及报价,请参见计费介绍。
调试
您可以在OpenAPI Explorer中直接运行该接口,免去您计算签名的困扰。运行成功后,OpenAPI Explorer可以自动生成SDK代码示例。
请求参数
名称 |
类型 |
是否必选 |
示例值 |
描述 |
Action | String | 是 | DetectLivingFace | 系统规定参数。取值:DetectLivingFace。 |
Tasks.N.ImageURL | String | 否 | http://viapi-test.oss-cn-shanghai.aliyuncs.com/viapi-3.0domepic/facebody/DetectLivingFace/DetectLivingFace4.jpg | 待检测的图像URL地址。JSON数组中的每个元素是一个图片检测任务结构体(image表)。最多支持10个元素,即同时最多对10张图片进行检测。推荐使用上海地域的OSS链接,对于文件在本地或者非上海地域OSS链接的情况,请参见文件URL处理。 说明 对于该接口,系统会自动将OSS链接地址转成内网地址然后再下载文件,所以调用该接口并不会产生OSS流量计费。 |
Tasks.N.ImageData | String | 否 | /9j/4AAQSkZJRgABAQAAAQABAAD/2**** | 图像Base64编码字符串。当与URL方式共存时,URL方式优先。 文件的Base64编码处理操作,请参见文件Base64处理。 |
返回数据
名称 |
类型 |
示例值 |
描述 |
RequestId | String | 2EEA0396-BD84-5729-B8BD-D60776FCEF2B | 请求ID。 |
Data | Object | 返回的结果数据内容。 |
|
Elements | Array of Element | 返回的元素。 |
|
ImageURL | String | http://viapi-test.oss-cn-shanghai.aliyuncs.com/viapi-3.0domepic/facebody/DetectLivingFace/DetectLivingFace4.jpg | 对应请求中的图像URL地址。 |
TaskId | String | img1owc8WGskNm78OEAPJTZal-1**** | 该检测任务的ID。 |
Results | Array of Result | 返回结果。调用成功时返回结果中包含一个或多个元素。 |
|
Suggestion | String | review | 建议您执行的操作,取值范围如下:
|
Frames | Array of Frame | (该字段已废弃)输入图像为长图(长宽比大于3:1)时,会把原图截成几张正常比例的图,frames保存从图像中裁剪出来的而且是翻拍命中的截图。 |
|
Url | String | http://aligreen-shanghai.oss-cn-shanghai.aliyuncs.com/prod/hammal/26210da42/28118541_TB1urBOQFXXXXbMXFXXXXXXXXXX-1442-257.png?Expires=1582703593&OSSAccessKeyId=H4sp5QfNbuDg****&Signature=%2B8iUkb5YjomYR8ujV2c8wMAavs****&x-oss-process=image%2Fcrop%2Cx_0%2Cw_288%2Fauto-orient%2C0 | 命中的截图。 |
Rate | Float | 84.83 | 结果为该分类的概率,取值范围为[0.00,100.00]。取值越大,表示属于该分类的概率越大。 如果未检测到人脸,则Rate返回为100。 |
Label | String | liveness | 检测结果的分类,取值包括:
如果未检测到人脸,则Label返回为liveness。 |
Rate | Float | 76.22 | 结果为该分类的概率,取值范围为[0.00,100.00]。表示属于该分类的概率越大。 |
Rect | Object | 人脸检测框信息。 |
|
Left | Long | 20 | 检测框左上角的点x坐标。 |
Top | Long | 30 | 检测框左上角的点y坐标。 |
Width | Long | 50 | 检测框宽度。 |
Height | Long | 60 | 检测框高度。 |
MessageTips | String | blurred, occluded or large angle face, please check. | 提示信息。
|
FaceNumber | Long | 1 | 单张图片检测到的人脸数量。 如果未检测到人脸,FaceNumber返回为0。 |
SDK参考
阿里云视觉AI人脸人体类目下的人脸活体检测能力推荐使用SDK调用,支持多种编程语言,调用时请选择AI类目为人脸人体(facebody)的SDK包,文件参数通过SDK调用可支持本地文件及任意URL,具体可参见SDK总览。
示例代码
该能力常用语言的示例代码,请参见人脸活体检测示例代码。
示例
请求示例
http(s)://facebody.cn-shanghai.aliyuncs.com/?Action=DetectLivingFace //更多关于访问域名(Endpoint)信息,请参见:https://help.aliyun.com/document_detail/143103.html
&Tasks=[{"ImageURL":"http://viapi-test.oss-cn-shanghai.aliyuncs.com/viapi-3.0domepic/facebody/DetectLivingFace/DetectLivingFace4.jpg","ImageData":"/9j/4AAQSkZJRgABAQAAAQABAAD/2****"}]
&公共请求参数
正常返回示例
XML
格式
HTTP/1.1 200 OK
Content-Type:application/xml
<DetectLivingFaceResponse>
<RequestId>2EEA0396-BD84-5729-B8BD-D60776FCEF2B</RequestId>
<Data>
<Elements>
<ImageURL>http://viapi-test.oss-cn-shanghai.aliyuncs.com/viapi-3.0domepic/facebody/DetectLivingFace/DetectLivingFace4.jpg</ImageURL>
<TaskId>img1owc8WGskNm78OEAPJTZal-1****</TaskId>
<Results>
<Suggestion>review</Suggestion>
<Frames>
<Url>http://aligreen-shanghai.oss-cn-shanghai.aliyuncs.com/prod/hammal/26210da42/28118541_TB1urBOQFXXXXbMXFXXXXXXXXXX-1442-257.png?Expires=1582703593&OSSAccessKeyId=H4sp5QfNbuDg****&Signature=%2B8iUkb5YjomYR8ujV2c8wMAavs****&x-oss-process=image%2Fcrop%2Cx_0%2Cw_288%2Fauto-orient%2C0</Url>
<Rate>84.83</Rate>
</Frames>
<Label>liveness</Label>
<Rate>76.22</Rate>
<Rect>
<Left>20</Left>
<Top>30</Top>
<Width>50</Width>
<Height>60</Height>
</Rect>
<MessageTips>blurred, occluded or large angle face, please check.</MessageTips>
</Results>
<FaceNumber>1</FaceNumber>
</Elements>
</Data>
</DetectLivingFaceResponse>
JSON
格式
HTTP/1.1 200 OK
Content-Type:application/json
{
"RequestId" : "2EEA0396-BD84-5729-B8BD-D60776FCEF2B",
"Data" : {
"Elements" : [ {
"ImageURL" : "http://viapi-test.oss-cn-shanghai.aliyuncs.com/viapi-3.0domepic/facebody/DetectLivingFace/DetectLivingFace4.jpg",
"TaskId" : "img1owc8WGskNm78OEAPJTZal-1****",
"Results" : [ {
"Suggestion" : "review",
"Frames" : [ {
"Url" : "http://aligreen-shanghai.oss-cn-shanghai.aliyuncs.com/prod/hammal/26210da42/28118541_TB1urBOQFXXXXbMXFXXXXXXXXXX-1442-257.png?Expires=1582703593&OSSAccessKeyId=H4sp5QfNbuDg****&Signature=%2B8iUkb5YjomYR8ujV2c8wMAavs****&x-oss-process=image%2Fcrop%2Cx_0%2Cw_288%2Fauto-orient%2C0",
"Rate" : 84.83
} ],
"Label" : "liveness",
"Rate" : 76.22,
"Rect" : {
"Left" : 20,
"Top" : 30,
"Width" : 50,
"Height" : 60
},
"MessageTips" : "blurred, occluded or large angle face, please check."
} ],
"FaceNumber" : 1
} ]
}
}
活体阈值参考
Label |
Rate阈值 |
攻击拦截率 |
活体通过率 |
|
liveness |
50 |
98.7% |
97.85% |
|
liveness |
30 |
99.03% |
96.96% |
|
normal(推荐) |
80(推荐) |
99.17% |
96.39% |
|
normal |
85 |
99.27% |
95.55% |
|
normal |
95 |
99.53% |
92.24% |
当Label是normal时,表示的是活体,Rate表示活体置信度,Rate取值范围是[80,100]。
当Label是liveness时,表示的是非活体,Rate表示非活体置信度,Rate取值范围是[20,100]。
关于以上数值的概念定义:
- 攻击拦截率:如98%,代表100次作弊假体攻击,会有98次被API识破拒绝。
- 活体通过率:如98%,代表100次真人请求,会有98次顺利通过活体验证。
错误码
关于人脸活体检测的错误码,详情请参见常见错误码。
开源模型体验
更多开源免费模型体验及下载,详见魔搭社区:人脸活体检测模型-RGB、人脸活体检测模型-IR、静默人脸活体检测模型-炫彩。
安全声明
- 请确保上传的图片或文件来源符合相应的法律法规。
- 通过体验调试上传的临时文件有效期为1小时,在24小时后会被系统自动清理删除。
- 平台不存储用户在使用服务过程中涉及的原始人脸图片或文件信息。