人脸检测与五官定位

本文介绍人脸人体(facebody)类目下的人脸检测与五官定位DetectFace的语法及示例。

功能描述

人脸检测与五官定位能力可以检测图片中的人脸并给出每张人脸精准定位和105个关键点信息。输出人脸数量、人脸矩形坐标、人脸姿态、双瞳孔中心坐标、人脸置信度列表等信息,支持人脸遮挡、光照、模糊度、姿态、噪声综合质量评分,支持检测含有多张人脸的照片多种姿态角度判断。

说明
  • 您可以进入在线咨询获取在线人工帮助。
  • 当前能力可在视觉智能开放平台有完整的免费产品体验,您可以单击立即试用对该能力进行更直观试用以及在线购买。
  • 阿里云视觉智能开放平台视觉AI能力API接入、接口使用或问题咨询等,请通过钉钉群(23109592)加入阿里云视觉智能开放平台咨询群联系我们。

应用场景

人脸关键点检测,是后续识别、分析和特效应用的基础。它为人脸识别、表情分析、疲劳检测、三维人脸重建、人脸美颜、换脸等人脸相关应用提供了人脸精确信息。

  • 互动娱乐应用:支持人脸五官及轮廓精准定位,实现动态贴纸、小视频玩法、特效相机等互动娱乐功能。
  • 人脸美颜拍摄:高精度人脸关键点可进行美颜塑形,落地在图片、视频、互动直播等多种美颜场景。
  • 面部定位分析:支持人脸轮廓精准定位和面部关键点分析,落地在智能医美、智能APP等高价值场景。

特色优势

  • 高精度定位:支持眉毛、眼睛、瞳孔、鼻子、嘴等五官位置的精准定位。
  • 适应能力强:不同照片、人脸尺寸多场景下,适应最大90度侧脸、平面360旋转人脸等情景。
  • 支持多人脸:支持单图检测多个人脸,应对人脸编辑、换脸、姿态矫正等高精度人脸定位场景。
  • 图片质量打分:支持人脸遮挡、光照、模糊度、姿态、噪声综合质量评分。
  • 平台服务稳定:提供在高并发,大流量下的毫秒级识别响应和保障。

接入指引

1. 注册阿里云账号:打开阿里云官网,在阿里云官网右上角,单击立即注册,按照操作提示完成账号注册。

2. 开通能力:请确保您已开通人脸人体服务,若未开通服务请立即开通

说明 本能力支持企业或个人认证用户开通。更多实名认证操作信息,请参见实名认证

3. 创建AccessKey:请确保您已创建AccessKey,如果您使用的是子账号AccessKey,您需要给子账号赋予AliyunVIAPIFullAccess权限,具体操作,请参见RAM授权

4. 在线调试(可选):您可以通过OpenAPI Explorer在线调试能力,查看完整的调用示例代码及SDK依赖信息,也可以下载完整的工程。

5. 开发接入步骤:

  • SDK总览中选择您要接入使用的SDK语言。
  • 在对应语言的SDK文档中找到AI类目为人脸人体(facebody)的SDK包进行安装。
  • 参考文档中提供的示例代码进行适当修改后调用。

6. 示例代码:该能力常用语言的示例代码,请参见人脸检测与五官定位示例代码

7. 客户端直接调用:该能力常用的客户端调用方式包括以下几种。

输入限制

  • 图像格式:JPEG、JPG、PNG、BMP。
  • 图像大小:不超过30 MB。
  • 图像分辨率:大于32×32像素,小于8192×8192像素,人脸占比不低于64×64像素。
  • URL地址中不能包含中文字符。
说明 当图像分辨率超过最大限制时,请先将图片进行缩放,调整图片大小,具体请参见图片缩放

计费说明

关于人脸检测与五官定位的计费方式及报价,请参见计费介绍

调试

您可以在OpenAPI Explorer中直接运行该接口,免去您计算签名的困扰。运行成功后,OpenAPI Explorer可以自动生成SDK代码示例。

请求参数

名称

类型

是否必选

示例值

描述

Action String DetectFace

系统规定参数。取值:DetectFace

ImageURL String http://viapi-test.oss-cn-shanghai.aliyuncs.com/viapi-3.0domepic/facebody/DetectFace/DetectFace1.png

图像URL地址。推荐使用上海地域的OSS链接,对于文件在本地或者非上海地域OSS链接的情况,请参见文件URL处理

Landmark Boolean true

是否需要返回人脸的特征点定位,取值true或false。

Quality Boolean true

是否需要返回人脸质量,取值true或false。

Pose Boolean true

是否需要返回人脸的姿态,取值true或false。

MaxFaceNumber Long 1

设置图片中人脸的最大返回数量,取值范围1~30。若想返回多个人脸检测结果,请正确设置。默认按返回参数FaceProbabilityList进行降序排列。

返回数据

名称

类型

示例值

描述

RequestId String 26B5334B-FD8A-5994-A1DA-3CA8F7B25676

请求ID。

Data Object

返回的结果数据内容。

FaceProbabilityList Array of Float 0.96

截图中包含人脸的概率,取值范围0~1。如有多个人脸,则依次返回。例如有两个人脸则返回[face_prob1, face_prob2]。图像中人脸区域分辨率越大,人脸越清晰,人脸正视,对应的该值越大。

Pupils Array of double [417.83, 226.09, 8.15, 517.46, 231.53, 8.15]

左右两个瞳孔的中心点坐标和半径,每个人脸6个浮点数,顺序为[left_iris_cenpt.x, left_iris_cenpt.y, left_iris_radius, right_iris_cenpt.x, right_iris_cenpt.y, right_iris_radis]

FaceRectangles Array of Integer [358, 141, 207, 255]

返回人脸矩形框,分别是[left, top, width, height]。如有多个人脸,则依次顺延,返回矩形框。例如有两个人脸则返回[left1, top1, width1, height1, left2, top2, width2, height2]

left-top: 表示以图片左上角为坐标原点,目标框所对应的左上角点位置(x,y),表示框的第一个点距离图片左边界x像素,距离上边界y个像素。

width-height:表示目标框的宽和高。

目标框面积为width*height,目标框右下角坐标为(left+width,top+height)。

FaceCount Integer 1

检测出的人脸个数。

PoseList Array of Float [5.02, -3.95, 2.41]

返回人脸姿态角度,格式为[yaw, pitch, roll]。如有多个人脸,则依次顺延。

  • yaw为左右角度,取值范围-90~90。
  • pitch为上下角度,取值范围-90~90。
  • roll为平面旋转角度,取值范围-180~180。
Landmarks Array of Float [381.1, 201.72, 448.09, 205.17, 415.19, 191.2, 415.28, 201.64, 391.35, 196.03, 403.15, 191.57, 426.94, 194.07, 438.42, 197.65, ......]

人脸特征点定位结果,每个人脸返回一组特征点位置,表示方式为(x0, y0, x1, y1, ……);如有多个人脸,则依次顺延,返回定位浮点数。

LandmarkScore Array of Float 95.89

关键点检测综合分值,取值范围

(0, 100],推荐采用85的阈值(您可以按实际应用场景判断设置阈值与否及相应阈值大小),该分值越大,对应脸的关键点的质量越好,越有利于识别,可用来筛选人脸样本。 )
LandmarkCount Integer 105

人脸特征点数目,目前固定为105点。依次为:眉毛24点,眼睛32点,鼻子6点,嘴巴34点,外轮廓9点。

Qualities Object

人脸质量情况,分数越高表示越有利于识别。

ScoreList Array of Float 99.92

质量综合分数,分数越高越有利于识别,取值范围(0,100]。如有多张人脸,则依次返回。在识别时,推荐设置阈值大于等于85(您可以按实际应用场景判断设置阈值与否及相应阈值大小),大于85代表图片综合质量越高,小于85代表图片综合质量越低。

BlurList Array of Float 99.21

人脸模糊度对识别的影响分数,分数越高越有利于识别,取值范围(0,100]。如有多个人脸,则依次顺延。在识别时,推荐设置阈值大于等于85(您可以按实际应用场景判断设置阈值与否及相应阈值大小),大于85代表图片模糊的概率越低,小于85代表图片模糊的概率越高。

FnfList Array of Float 100

目标是否为人脸及其对识别的影响分数,分数越高越有利于识别,取值范围(0,100]。如有多个人脸,则依次顺延。在识别时,推荐设置阈值大于等于85(您可以按实际应用场景判断设置阈值与否及相应阈值大小),大于85代表图片是人脸的概率越高,小于85代表图片是人脸的概率越低。

GlassList Array of Float 100

眼镜等上半脸遮挡对识别的影响分数,分数越高越有利于识别,取值范围(0,100]。如有多个人脸,则依次顺延。在识别时,推荐设置阈值大于等于85(您可以按实际应用场景判断设置阈值与否及相应阈值大小),大于85代表戴眼镜的概率越低,小于85代表戴眼镜的概率越高。

IlluList Array of Float 100

光照对识别的影响分数,分数越高越有利于识别,取值范围(0,100]。如有多个人脸,则依次顺延。在识别时,推荐设置阈值大于等于85(您可以按实际应用场景判断设置阈值与否及相应阈值大小),大于85代表图片光照好的概率越高,小于85代表图片光照好的概率越低。

MaskList Array of Float 99.53

口罩等下半脸遮挡对识别的影响分数,分数越高越有利于识别,取值范围(0,100]。如有多个人脸,则依次顺延。在识别时,推荐设置阈值大于等于85(您可以按实际应用场景判断设置阈值与否及相应阈值大小),大于85代表戴口罩概率越低,小于85代表戴口罩概率越高。

NoiseList Array of Float 99.74

图片噪声对识别的影响分数,分数越高越有利于识别,取值范围(0,100]。如有多个人脸,则依次顺延。在识别时,推荐设置阈值大于等于85(您可以按实际应用场景判断设置阈值与否及相应阈值大小),大于85代表图片有噪声的概率越低,小于85代表图片有噪声的概率越高。

PoseList Array of Float 100

姿态对识别的影响分数,分数越高越有利于识别,取值范围(0,100]。如有多个人脸,则依次顺延。在识别时,推荐设置阈值大于等于85(您可以按实际应用场景判断设置阈值与否及相应阈值大小),大于85代表人脸姿态正面的概率越高,小于85代表人脸姿态正面的概率越低。

示意图

  • 原图
  • 105关键点示意图

SDK参考

阿里云视觉AI人脸人体类目下的人脸检测与五官定位能力推荐使用SDK调用,支持多种编程语言,调用时请选择AI类目为人脸人体(facebody)的SDK包,文件参数通过SDK调用可支持本地文件及任意URL,具体可参见SDK总览

示例代码

该能力常用语言的示例代码,请参见人脸检测与五官定位示例代码

示例

请求示例

http(s)://facebody.cn-shanghai.aliyuncs.com/?Action=DetectFace      //更多关于访问域名(Endpoint)信息,请参见:https://help.aliyun.com/document_detail/143103.html
&ImageURL=http://viapi-test.oss-cn-shanghai.aliyuncs.com/viapi-3.0domepic/facebody/DetectFace/DetectFace1.png
&Landmark=true
&Quality=true
&Pose=true
&MaxFaceNumber=1
&公共请求参数

正常返回示例

XML格式

HTTP/1.1 200 OK
Content-Type:application/xml

<DetectFaceResponse>
    <RequestId>26B5334B-FD8A-5994-A1DA-3CA8F7B25676</RequestId>
    <Data>
        <FaceProbabilityList>0.96</FaceProbabilityList>
        <Pupils>417.83</Pupils>
        <Pupils>226.09</Pupils>
        <Pupils>8.15</Pupils>
        <Pupils>517.46</Pupils>
        <Pupils>231.53</Pupils>
        <Pupils>8.15</Pupils>
        <FaceRectangles>358</FaceRectangles>
        <FaceRectangles>141</FaceRectangles>
        <FaceRectangles>207</FaceRectangles>
        <FaceRectangles>255</FaceRectangles>
        <FaceCount>1</FaceCount>
        <PoseList>5.02</PoseList>
        <PoseList>-3.95</PoseList>
        <PoseList>2.41</PoseList>
        <Landmarks>381.1</Landmarks>
        <Landmarks>201.72</Landmarks>
        <Landmarks>448.09</Landmarks>
        <Landmarks>205.17</Landmarks>
        <Landmarks>415.19</Landmarks>
        <Landmarks>191.2</Landmarks>
        <Landmarks>415.28</Landmarks>
        <Landmarks>201.64</Landmarks>
        <Landmarks>391.35</Landmarks>
        <Landmarks>196.03</Landmarks>
        <Landmarks>403.15</Landmarks>
        <Landmarks>191.57</Landmarks>
        <Landmarks>426.94</Landmarks>
        <Landmarks>194.07</Landmarks>
        <Landmarks>438.42</Landmarks>
        <Landmarks>197.65</Landmarks>
        <LandmarkScore>95.89</LandmarkScore>
        <LandmarkCount>105</LandmarkCount>
        <Qualities>
            <ScoreList>99.92</ScoreList>
            <BlurList>99.21</BlurList>
            <FnfList>100</FnfList>
            <GlassList>100</GlassList>
            <IlluList>100</IlluList>
            <MaskList>99.53</MaskList>
            <NoiseList>99.74</NoiseList>
            <PoseList>100</PoseList>
        </Qualities>
    </Data>
</DetectFaceResponse>

JSON格式

HTTP/1.1 200 OK
Content-Type:application/json

{
  "RequestId" : "26B5334B-FD8A-5994-A1DA-3CA8F7B25676",
  "Data" : {
    "FaceProbabilityList" : [ 0.96 ],
    "Pupils" : [ 417.83, 226.09, 8.15, 517.46, 231.53, 8.15 ],
    "FaceRectangles" : [ 358, 141, 207, 255 ],
    "FaceCount" : 1,
    "PoseList" : [ 5.02, -3.95, 2.41 ],
    "Landmarks" : [ 381.1, 201.72, 448.09, 205.17, 415.19, 191.2, 415.28, 201.64, 391.35, 196.03, 403.15, 191.57, 426.94, 194.07, 438.42, 197.65 ],
    "LandmarkScore" : 95.89,
    "LandmarkCount" : 105,
    "Qualities" : {
      "ScoreList" : [ 99.92 ],
      "BlurList" : [ 99.21 ],
      "FnfList" : [ 100 ],
      "GlassList" : [ 100 ],
      "IlluList" : [ 100 ],
      "MaskList" : [ 99.53 ],
      "NoiseList" : [ 99.74 ],
      "PoseList" : [ 100 ]
    }
  }
}

错误码

关于人脸检测与五官定位的错误码,详情请参见常见错误码

开源模型体验

更多开源免费模型体验及下载,详见魔搭社区:106点人脸关键点-通用领域-2D全身关键点检测-通用领域-2D

安全声明

  • 请确保上传的图片或文件来源符合相应的法律法规。
  • 通过体验调试上传的临时文件有效期为1小时,在24小时后会被系统自动清理删除。
  • 平台不存储用户在使用服务过程中涉及的原始人脸图片或文件信息。