本文介绍了阿里云云盾人脸识别独立部署系统的API接入参考,帮助您通过API调用为本地集成人脸检索、比对、属性识别等能力。

说明 API的接口能力依赖于您采购的人脸模型,即只有当后台部署了相应的能力后,才支持接口调用。详情请咨询服务团队。

概述

请求结构

项目 描述
服务地址 服务请求地址由服务接入地址和接口URI组成。
  • 内容检测API服务的接入地址,请联系部署人员获取。
  • 具体接口的URI,请参见下文具体接口的描述。
通信协议 内容检测API服务支持使用HTTP(s)协议发送请求。
HTTP方法 所有接口仅支持通过HTTP POST方法发送请求。HTTP POST方式下,请求参数需要包含在请求URL中。
字符编码 请求及返回结果均使用UTF-8字符集进行编码。

公共参数

所有HTTP请求都包含下表罗列的公共请求头(HTTP Header)字段。

名称 类型 是否必需 描述
Accept String 接受的返回类型,目前只支持JSON,取值:application/json
Content-Type String 当前请求body的数据类型,目前只支持JSON,取值:application/json
Content-MD5 String 请求body的MD5值。根据请求body计算所得,算法为先对body做md5(返回二进制格式),再做base64编码。
Date String GMT日期,例如:Tue, 17 Jan 2017 10:16:36 GMT
x-acs-version String 内容检测API的接口版本。当前版本为:2017-01-12
x-acs-signature-nonce String 随机字符串,用来避免回放攻击。
x-acs-signature-version String 签名版本,取值:1.0
x-acs-signature-method String 签名方法,取值:HMAC-SHA1
Authorization String 认证方式,格式为:”acs” + “ “ + AccessKeyId + “:” + signature

其中,AccessKeyId从阿里云控制台申请获得,signature为请求签名。签名算法请参见签名机制

公共查询参数

所有HTTP请求都包含下表罗列的公共查询参数(Query parameters)。

名称 类型 是否必需 描述
clientInfo String 客户端信息,由ClientInfo结构体通过JSON序列化获得。包括umid、imei等信息。ClientInfo结构体的结构描述见ClientInfo
表 1. ClientInfo
名称 类型 是否必需 描述
sdkVersion String SDK版本。通过SDK调用时,需要提供该字段。
cfgVersion String 配置信息版本。通过SDK调用时,需要提供该字段。
userType String 用户账号类型,取值:
  • taobao
  • others
userId String 用户ID,具备唯一性。
userNick String 用户昵称。
avatar String 用户头像。
imei String 硬件设备码。
imsi String 运营商设备码。
umid String 设备指纹。
ip String 请求来源的公网IP。如果请求中不填写该字段,则服务端会尝试从链接或者HTTP头中获取。

如果请求是从设备端发起的,该字段通常不填写;如果是从后台发起的,该IP为用户的登录IP或者设备的公网IP。

os String 设备的操作系统类型,例如,Android 6.0
channel String 渠道号。
hostAppName String 宿主应用名称。
hostPackage String 宿主应用包名。
hostVersion String 宿主应用版本。

返回结果

所有请求均返回JSON格式数据,且都包括下表罗列的公共字段。

名称 类型 是否必需 描述
code Integer 错误码,和HTTP状态码一致,但有扩展。通常情况下,
  • 2xx表示请求成功
  • 4xx表示请求有误
  • 5xx表示后端有误
详细的错误码信息请参见错误码
msg String 错误的描述信息。
requestId String 本次请求的ID,具备唯一性,可用于定位问题。
data JSONArray/JSONObject 业务返回数据。出错情况下,该字段可能为空;一般情况下,该字段为一个JSON结构体或数组。

错误码

错误码 描述
200 OK,表示请求成功。
280 PROCESSING,表示任务正在执行中。建议您等待一段时间(比如,5s)后再查询结果。
400 BAD_REQUEST,请求有误。
401 NOT_ALLOWED,请求不被允许。例如,使用了不安全的图片链接。
404 NOT_FOUND,未找到图片检测结果。
480 DOWNLOAD_FAILED,下载失败。
500 GENERAL_ERROR,一般是服务端临时出错。
580 DB_FAILED,数据库操作失败。
581 TIMEOUT,超时。
585 CACHE_FAILED,缓存出错。
586 ALGO_FAILED,算法出错。
587 MQ_FAILED,中间件出错。
588 EXCEED_QUOTA,超出配额。
589 TOO_LARGE,图片过大。
590 BAD_FORMAT,格式错误。
591 CONNECTION_POOL_FULL,连接池满 。
592 DOWNLOAD_TIMEOUT,下载超时。下载时间限制为3s。
594 EXPIRED,任务过期。例如,taskId过期。
595 CATCH_FRAME_FAILED,截帧失败。

签名机制

  1. 序列化请求头。对所有以“x-acs-”开头的HTTP头,以如下算法拼接成字符串:
    1. 抽取所有以“x-acs-”开头的HTTP头。
    2. 对抽取出来的头按字典顺序排序。
    3. 对每个头,按”HTTP头名称” + “:” + “HTTP头值” + “\n”进行拼接。
  2. 序列化URI和Query参数。由于只有clientInfo参数,所以通过以下算法拼接:uri + “?clientInfo=” + “ClientInfo的JSON字符串”
    说明 此处不需要url编码;但在HTTP请求中,是应该进行url编码的。
  3. 构建完整的待签名字符串:“POST\napplication/json\n” + “HTTP头Content-MD5的值” + “\n” + “application/json” + “\n” + “HTTP头Date的值” + “\n” + “序列化请求头” + “序列化uri和query参数”
  4. 对待签名字符串运行HMAC-SHA1算法,并进行base64编码;然后将其放到HTTP头Authorization中的signature:”acs” + “ “ + AccessKeyId + “:” + signature
    说明 acsAccessKeyId之间有空格;HMAC-SHA1算法中的secret key是和AccessKeyId对应的secret。
    以下是一个完整的调用图片检测任务中待签名字符串的示例:
    POST
    application/json
    C+5Y0crpO4sYgC2DNjycug==
    application/json
    Tue, 14 Mar 2017 06:29:50 GMT
    x-acs-signature-method:HMAC-SHA1
    x-acs-signature-nonce:339497c2-d91f-4c17-a0a3-1192ee9e2202
    x-acs-signature-version:1.0
    x-acs-version:2017-01-12
    /green/image/scan?clientInfo={"ip":"127.0.0.2","userId":"120234234","userNick":"Mike","userType":"others"}

人脸检索

人脸检索帮助您从包含人脸样本的人脸分组中检索指定的人脸图片,并返回与被检测人脸图片相似的人脸样本信息。在调用人脸检索服务前,您首先需要新增人脸分组,并维护其中的人脸样本;然后才可以从中检索特定的人脸图片。

在调用服务前,请熟悉以下内容:
  • 人脸检索支持创建多个人脸分组,每个分组对应唯一的groupId。您可以新增人脸分组查询分组下个体列表
  • 每个人脸分组中支持添加多个人脸样本图片,每个人脸样本图片对应唯一的imageId。您可以新增人脸样本删除人脸样本
  • 多个人脸样本图片可以关联到同一个个体,每个个体对应唯一的personId。
  • 当在人脸分组中匹配到被检测人脸图片时,人脸检索支持返回匹配到的imageId和personId。具体请参见检索人脸
新增人脸分组(uri: /green/face/group/add)
  • 描述:新建一个人脸分组。
  • 请求参数
    请求body是一个结构体,参数描述见下表。
    名称 类型 是否必需 描述
    groupId String 指定要新增的人脸分组的ID。人脸分组ID应具备唯一性,且不超过64个字符。
  • 返回参数
    返回body中的data字段是JSON数组,具体元素描述见下表。
    名称 类型 是否必需 描述
    groupId String 新建的人脸分组的ID。
  • 示例
    • 请求示例
      {
        "groupId":"abc123"
      }
    • 返回示例
      {
        "msg":"OK",
        "code":200,
        "data":{
            "msg":"OK",
            "code":200,
            "groupId":"abc123"
        }
      }
新增人脸样本(uri: /green/face/image/add)
  • 描述:在人脸分组中添加人脸样本。
    说明 要添加的人脸样本图片中有且只能包含一张人脸。
  • 请求参数
    请求body是一个结构体,参数描述见下表。
    名称 类型 是否必需 描述
    tasks JSONArray 要添加的人脸样本信息,一次请求最多可以添加5个样本。数组的元素对应FaceImage结构体,具体结构描述见FaceImage
    表 2. FaceImage
    名称 类型 是否必需 描述
    imageId String 指定要添加的人脸样本图片的ID,例如,001、002。同一人脸分组下的人脸样本图片ID不允许重复。
    说明 如果您需要调用删除人脸样本接口删除某个人脸样本图片,则必须在添加样本时为其传入imageId;否则,您将无法单独删除该样本图片。
    groupId String 要添加的人脸样本隶属的人脸分组ID。
    personId String 要添加的人脸样本对应的个体ID。同一人脸分组下的个体ID不允许重复。
    name String 要添加的人脸样本对应的个体名称。
    url String 要添加的人脸样本图片的URL地址。
    说明 urlcontent有且只能传入一个。
    content String 要添加的人脸样本图片的base64编码字符串。
    说明 urlcontent有且只能传入一个。
  • 返回参数
    返回body中的data字段是JSON数组,具体元素描述见下表。
    名称 类型 是否必需 描述
    groupId String 人脸分组ID。
    personId String 个体ID。
    imageId String 人脸样本图片ID。
    说明 调用删除人脸样本接口时,可以指定要单独删除的人脸样本图片ID。
    url String 人脸样本图片的URL地址。
  • 示例
    • 请求示例
      {
        "tasks":[
          {
            "groupId":"abc123",
            "personId": "abdddd",
            "imageId": "abcdafda223",
            "url":"http://xxx.com/xx.jpg"
          }
        ]
      }
    • 返回示例
      {
        "msg":"OK",
        "code":200,
        "data":[
          {
            "msg":"OK",
            "code":200,
            "imageId":17,
            "personId":87,
            "dataId":"4b60620a985b4e5ab878996e67791533"
            "url":"http://xxx.com/xx.jpg"
          }
        ]
      }
查询个体列表(uri: /green/face/image/query)
  • 描述:分页查询指定的人脸分组下的个体列表。
  • 请求参数
    请求body是一个结构体,参数描述见下表。
    名称 类型 是否必需 描述
    groupId String 要查询的人脸分组ID。
    pageSize Integer 每页显示的行数,可选值:2050100
    pageNo Integer 页码,默认值为1,即从第1页开始显示。
    personId String 指定个体ID进行查询。
    imageId String 指定人脸样本图片ID进行查询。
  • 返回参数
    返回body的元素结构描述见下表。
    名称 类型 是否必需 描述
    pageSize Integer 每页显示的行数。
    pageNo Integer 页码。
    pages Integer 总页数。
    data JSONArray 业务返回数据。数组的元素对应个体信息结构体,具体结构描述见data
    表 3. data
    名称 类型 是否必需 描述
    groupId String 个体隶属的人脸分组ID。
    personId String 个体ID。
    name String 个体名称。
    imageId String 人脸样本图片ID。
  • 示例
    • 请求示例
      {
        "groupId":"abc123",
        "pageSize":20,
        "pageNo":1
      }
    • 返回示例
      {
        "msg":"OK",
        "code":200,
        "pages":1,
        "data":[
          {
            "name":"小兰",
            "personId":"dafdsafd",
            "groupId":"abc123"
          }
        ],
        "pageNo":1,
        "pageSize":20
      }
删除人脸样本 (uri: /green/face/image/del)
  • 描述:从指定人脸分组中删除人脸样本。
  • 请求参数
    请求body是一个结构体,参数描述见下表。
    名称 类型 是否必需 描述
    groupId String 要删除的人脸样本隶属的人脸分组ID。
    personId String 要删除的人脸样本对应的个体ID。
    imageId String 要删除的人脸样本图片ID。如果不传入该参数,则删除personId下关联的所有人脸样本图片。
  • 返回参数
    返回body中的data字段是JSON数组,具体元素描述见下表。
    名称 类型 是否必需 描述
    groupId String 人脸分组ID。
    personId String 个体ID。
    imageId String 人脸样本图片ID。
  • 示例
    • 请求示例
      {
        "groupId":"abc123",
        "personId":"fdafdafsdad",
        "imageId":"12"
      }
    • 返回示例
      {
        "msg":"OK",
        "code":200,
        "data":[
          {
            "msg":"OK",
            "code":200,
            "groupId":"abc123",
            "personId":"blabab"
            "personId":1
        }
        ]
      }
检索人脸 (uri: /green/image/scan)
  • 描述:根据您输入的待识别人脸图片,在人脸人族中查找并返回最相似的个体,返回的个体按照相似度从大到小排序。
  • 请求参数
    请求body是一个结构体,参数描述见下表。
    名称 类型 是否必需 描述
    scenes String[] 人脸检测场景,取值: ["sface-n"]
    tasks JSONArray 人脸检索任务信息,具体结构描述见task
    表 4. task
    名称 类型 是否必需 描述
    dataId String 数据ID。在一次调用请求中,所有dataId不允许重复。
    url String 待检测人脸图片的URL地址。
    说明 urlcontent有且只能传入一个。
    content String 待检测人脸图片的base64编码字符串。
    说明 urlcontent有且只能传入一个。
    groupId String 要检测的人脸分组ID。
  • 返回参数
    返回body的元素结构描述见下表。
    名称 类型 是否必需 描述
    msg String 错误描述信息。
    code Integer 错误码,和HTTP的status code一致。
    requestId String 本次请求的ID。
    data JSONObject 业务返回数据,具体结构描述见data
    表 5. data
    名称 类型 是否必需 描述
    msg String 错误描述信息。
    code Integer 错误码,和HTTP的status code一致。
    dataId String 数据ID,对应请求参数中的dataId
    taskId String 本次检测任务的ID。
    url String 待检测图片的URL地址,对应请求参数中的url
    extras JSONObject 扩展信息,具体结构描述见data.extras
    results JSONArray 返回结果。调用成功时(code=200),返回结果中包含一个或多个元素。每个元素是个结构体,具体结构描述见result
    表 6. data.extras
    名称 类型 是否必需 描述
    width Integer 图片宽度。
    height Integer 图片高度。
    md5 String 图片的MD5值,默认不返回该参数。
    表 7. result
    名称 类型 是否必需 描述
    scene String 人脸检测场景,和调用请求中的场景(scenes)对应,取值:sface-n
    label String 检测结果的分类,与具体的scene对应,取值:
    • normal:未匹配到相似人脸
    • sface-n:匹配到相似人脸
    suggestion String 操作建议,取值:
    • pass:未匹配到人脸,无需任何操作
    • reviewblock:匹配到人脸,建议执行后续操作
    rate Float 人脸匹配度分值,取值范围为[0.00-100.00]。只有在suggestion为review或block时,该值才有意义。如果匹配到多个人脸,该值取匹配分数最高的值。
    sfaceData JSONArray 识别出来的人脸信息列表,具体结构描述见sfaceData
    表 8. sfaceData
    名称 类型 是否必需 描述
    x Float 以图片左上角为坐标原点,人脸区域左上角到y轴距离。
    y Float 以图片左上角为坐标原点,人脸区域左上角到x轴距离。
    w Float 人脸区域宽度。
    h Float 人脸区域高度。
    faces JSONArray 匹配到的人脸信息,具体结构描述见face
    表 9. face
    名称 类型 是否必需 描述
    id String 匹配到的人脸样本图片ID,对应添加人脸样本图片接口中的imageId。
    personId String 匹配到的人脸样本图片对应的个体ID。
    name String 匹配到的人脸样本图片对应的个体的名称。
    rate Float 匹配相似度分值,取值范围为[0-100]。
  • 示例
    • 请求示例
      {
        "scenes": ["sface-n"],
        "tasks": [
          {
            "groupId": "abc123",
            "dataId": "test2NInmO$tAON6qYUrtCRgLo-1mwxdi",
            "url": "https://img.alicdn.com/tfs/TB1urBOQFXXXXbMXFXXXXXXXXXX-1442-257.png"
          }
        ]
      }
    • 返回示例
      {
          "msg": "OK",
          "code": 200,
          "dataId": "f18ef7c4-ac1d-11e8-af2d-6c96cfdd3233",
          "taskId": "img3oBc4A3Oki47MVPyc8uAM@-1poC54",
          "url": "http://i5.hexunimg.cn/2015-07-15/177545315.jpg",
          "results": [
              {
                  "label": "sface-n",
                  "rate": 71.76,
                  "scene": "sface-n",
                  "sfaceData": [
                      {
                          "faces": [
                              {
                                  "id": "AliFace_0001861",
                                  "personId": "abc",
                                  "name": "张三",
                                  "rate": 67.71
                              }
                          ],
                          "h": 139.0,
                          "w": 139.0,
                          "x": 266.0,
                          "y": 86.0
                      },
                      {
                          "faces": [
                              {
                                  "id": "AliFace_0000821",
                                  "personId": "abc",
                                  "name": "李四",
                                  "rate": 71.76
                              }
                          ],
                          "h": 134.0,
                          "w": 134.0,
                          "x": 45.0,
                          "y": 83.0
                      }
                  ],
                  "suggestion": "review"
              }
          ]
      }
      								

人脸比对(uri: /green/image/scan)

描述

根据您输入的两张人脸图片,比对两张人脸,检测两张人脸照片的相似度。

请求参数

请求body是一个结构体,参数描述见下表。

名称 类型 是否必需 描述
scenes String[] 人脸检测场景,取值:sface-1
tasks JSONArray 人脸比对任务列表,数组元素的具体结构描述见task
表 10. task
名称 类型 是否必需 描述
dataId String 数据ID。在同一次调用请求中,所有dataId不允许重复。
url String 待比对图片一的URL地址。
说明 urlcontent有且只能传入一个。
content String 待比对图片一的base64编码字符串。
说明 urlcontent有且只能传入一个。
extras JSONObject 待比对图片二的信息,格式为{"faceUrl":"第二张图片的URL"} {"faceContent":"第二张图片的base64"}
说明 faceUrlfaceContent有且只能传一个。

返回参数

返回body元素结构描述见下表。

名称 类型 是否必需 描述
msg String 错误描述信息。
code Integer 错误码,和HTTP的status code一致。
requestId String 本次请求的ID。
data JSONObject 业务返回数据,具体结构描述见data
表 11. data
名称 类型 是否必需 描述
code Integer 错误码,和HTTP的status code一致。
msg String 错误描述信息。
dataId String 数据ID,对应请求中的dataId
taskId String 本次检测任务的ID。
url String 被检测图片一的URL地址。
extras JSON 扩展信息。
results JSONArray 返回结果。调用成功时(code=200),返回结果中包含一个或多个元素。每个元素是个结构体,具体结构描述见result
表 12. result
名称 类型 是否必需 描述
scene String 检测场景,取值:sface-1
label String 检测结果的分类,取值:
  • normal:第二张图片与第一张图片相似度低
  • sface-1:第二张图片与第一张图片相似度高
suggestion String 操作建议,取值:
  • pass:图片相似度低,无需任何操作
  • review:图片相似度高,建议执行后续操作
rate Float 两张人脸照片的相似度分值。

示例

请求示例
{
  "scenes":["sface-1"],
  "tasks":[
  {
    "url":"http://v2img.ifensi.com/2015/0826/2015082612403321.jpg",
    "dataId":"e6b080a8-a91a-11e8-bac4-6c96cfde2af9",
    "extras":{
      "faceUrl":"http://img5.iqilu.com/c/u/2013/0313/1363136852136.jpg"
    },
    "time":949640
  }
  ]
}
返回示例
{
  "code":200,
  "msg":"OK",
  "requestId":"9EEF894F-A933-4830-97B1-EC1A9630A9D6"
  "data":[
  {
    "code":200,
    "dataId":"e6b080a8-a91a-11e8-bac4-6c96cfde2af9",
    "taskId":"img2hsbmQeA4CU7l78$s8q5mW-1pnn7Z",
    "url":"http://v2img.ifensi.com/2015/0826/2015082612403321.jpg"
    "extras":{}
    "msg":"OK",
    "results"
      {
      "label"sface-1",
      "rate":97.0,
      "scene:"sface-1",
      "suggestion":"review"
    }
    ]
  }
  ]
}

人脸属性提取 (uri: /green/image/scan)

描述

根据您输入的待识别人脸图片,检测其中的人脸,返回人脸坐标及相应的人脸属性信息。

请求参数

请求body是一个结构体,参数描述见下表。

名称 类型 是否必需 描述
scenes String[] 人脸检测场景,取值:face-attr
tasks JSONArray 人脸属性提取任务列表,具体结构描述见task
表 13. task
名称 类型 是否必需 描述
dataId String 数据ID,在同一次调用请求中,所有dataId不允许重复。
url String 待检测图片的URL地址。
说明 urlcontent有且只能传入一个。
content String 待检测图片的base64编码字符串。
说明 urlcontent有且只能传入一个。
extras JSONObject 扩展参数,具体结构描述见task.extras
表 14. task.extras
名称 类型 是否必需 描述
faceAttrs String[] 要提取的人脸属性类型,取值:
  • gender:性别
  • age:年龄
  • glasses:眼镜检测
  • facetype:正脸检测
  • smiling:微笑检测
  • blur:模糊度
  • ethnic:是否是亚洲人
  • weizu:是否是维族
  • binary:是否是二值图
  • standardFace:是否是标准人脸
说明 若不指定该参数,则默认提取除 standardFace外所有属性。

返回参数

返回body的元素结构说明见下表。

名称 类型 是否必需 描述
msg String 错误描述信息。
code Integer 错误码,和HTTP的status code一致。
requestId String 本次请求的ID。
data JSONObject 业务返回结果,具体结构描述见data
表 15. data
名称 类型 是否必需 描述
msg String 错误描述信息。
code Integer 错误码,和HTTP的status code一致。
dataId String 对应请求中的dataId。
taskId String 本次检测任务的ID。
url String 被检测图片的URL地址。
extras JSONObject 扩展信息,具体结构描述见data.extras
results JSONArray 返回结果。调用成功时(code=200),返回结果中包含一个或多个元素。每个元素是个结构体,具体结构描述见result
表 16. data.extras
名称 类型 是否必需 描述
width Integer 图片宽度。
heigth Integer 图片高度。
md5 String 图片的MD5值。默认不返回此参数。
表 17. result
名称 类型 是否必需 描述
scene String 检测场景,和调用请求中的场景(scenes)对应,取值:face-attr
label String 检测结果的分类,与具体的scene对应,取值:
  • normal:正常图片,无人脸
  • face-attr:检测到人脸,返回人脸的属性
suggestion String 操作建议,取值:
  • pass:没有检测到人脸,无需任何操作
  • review::有人脸,建议执行后续操作
rate Float 人脸属性提取场景下,该字段无实际意义。
extras JSONObject 扩展参数,具体结构描述见result.extras
sfaceData JSONArray 识别出来的人脸信息列表,具体结构描述见sfaceData
表 18. result.extras
名称 类型 是否必需 描述
standardFace Boolean 是否是标准人脸照片。
表 19. sfaceData
名称 类型 是否必需 描述
faceId String 基于dataId定义的人脸ID,唯一标识该图中一张人脸。
x Float 以图片左上角为坐标原点,人脸区域左上角到y轴距离。
y Float 以图片左上角为坐标原点,人脸区域左上角到x轴距离。
w Float 人脸区域宽度。
h Float 人脸区域高度。
age Integer 人脸对应的年龄。
gender String 人脸对应的性别,取值:
  • Male
  • Female
glasses Boolean 人脸是否佩戴眼镜。
glassType String 眼镜属性,取值:
  • none:未佩戴眼镜
  • wear:配戴眼镜
  • sunglass:佩戴太阳镜
  • undecide:佩戴未知眼镜
minority Boolean 是否是少数民族(维族)。
asian Boolean 是否是亚洲人。
smileRate Float 人脸微笑的概率分值,取值范围为0~100。
faceType String 人脸的角度类型:
  • none:非人脸
  • face:正脸
  • profile:侧脸
  • undecide:未知
blur Float 人脸的模糊度分值,分值越小表示越清晰,分值大于5时表示人脸模糊。
birnary Boolean 是否是二值图。

示例

请求示例
{
  "scenes": ["face-attr"],
  "tasks": [
    {
      "dataId": "test2NInmO$tAON6qYUrtCRgLo-1mwxdi",
      "url": "https://img.alicdn.com/tfs/TB1urBOQFXXXXbMXFXXXXXXXXXX-1442-257.png",
      "extras":{
          faceAttrs:["gender","age","glasses"]
      }
    }
  ]
}
返回示例
{
    "msg": "OK",
    "code": 200,
    "dataId": "f18ef7c4-ac1d-11e8-af2d-6c96cfdd3233",
    "taskId": "img3oBc4A3Oki47MVPyc8uAM@-1poC54",
    "url": "http://i5.hexunimg.cn/2015-07-15/177545315.jpg",
    "extras":{
      "width":100,
      "height":100,
      "md5":"xxxxxxxxxxxxxx"
    },
    "results": [

        {
            "scene": "face-attr",
            "label": "face-attr",
            "sfaceData": [
                {
                    "faceId": "f18ef7c4-ac1d-11e8-af2d-6c96cfdd3233-face1",
                    "h": 139.0,
                    "w": 139.0,
                    "x": 266.0,
                    "y": 86.0,
                  "age":   50.8 ,
                  "gender":   "Male" ,
                  "glasses":   true ,
                  "minority":  true ,
                  "asian":  true,
                  "blur":0.3,
                  "binary":false
                }
            ],
            "rate":   99.91 ,
            "suggestion": "review"
            "extras":{
                "standardFace":true
            }
        }
    ]
}