本文介绍了调用图片异步检测接口(/green/image/asyncscan)进行人脸图片1:1比对的方法。人脸比对帮助您检测两张人脸照片的相似度。

图片异步检测接口说明

业务接口:/green/image/asyncscan,表示图片异步检测。

您可以调用该接口创建图片异步检测任务。关于如何构造HTTP请求,请参见请求结构;您也可以直接选用已构造好的HTTP请求,更多信息,请参见SDK概览

  • 计费信息

    该接口为收费接口。关于计费方式,请参见内容安全产品定价

    说明 对于人脸比对功能,传入两张图片进行一次比对进行一次计费,而不是两次。
  • 检测超时

    同步检测允许的最长检测时间是6秒,如果检测在该时间限制内没有完成,系统会强制返回超时错误码。如果您对实时性要求不高,可以选择异步检测,其他情况下请选择同步检测,同步检测接口的调用相对简单些。对于同步检测接口的调用,建议您将超时时间设置为6秒。

  • 返回结果

    异步检测任务不会实时返回检测结果,您需要通过callback或者轮询的方式获取检测结果。检测结果最长保留一小时。

    • callback获取检测结果:提交异步检测任务时,在请求参数中传入callback参数,用来自动接收检测结果,具体说明,请参见(异步检测)请求参数
    • 轮询获取检测结果:提交异步检测任务时,无需传入callback参数;提交异步检测任务后,调用结果查询接口获取检测结果,具体说明,请参见图片异步检测结果查询接口说明
  • 图片要求
    • 图片链接支持以下协议:HTTP和HTTPS。
    • 图片支持以下格式:PNG、JPG、JPEG、BMP、GIF、WEBP。
    • 图片大小限制为20 MB以内(适用于同步和异步调用),高度或者宽度不能超过30,000像素(px),且图像总像素不超过2.5亿(px)
    • 图片下载时间限制为3秒内,如果下载时间超过3秒,返回下载超时。
    • 图片像素建议不低于256*256(px),像素过低可能会影响识别效果。
    • 图片检测接口的响应时间依赖图片的下载时间。请保证被检测图片所在的存储服务稳定可靠,建议您使用阿里云OSS存储或者CDN缓存等。

(异步检测)请求参数

名称 类型 是否必选 示例值 描述
bizType String default 该字段用于标识您的业务场景。您可以通过内容安全控制台创建业务场景(具体操作,请参见自定义机审标准)。
scenes StringArray ["sface-1"] 指定检测场景,取值:sface-1,表示人脸比对。
callback String http://xxx.xx.xx/xx.json 检测结果回调通知您的URL,支持使用HTTP和HTTPS协议的地址。该字段为空时,您必须定时轮询检测结果。
callback接口必须支持POST方法、UTF-8编码的传输数据,以及表单参数checksumcontent。内容安全按照以下规则和格式设置checksumcontent,调用您的callback接口返回检测结果。
  • checksum:字符串格式,由用户uid + seed + content拼成字符串,通过SHA256算法生成。用户UID即阿里云账号ID,可以在阿里云控制台查询。为防篡改,您可以在获取到推送结果时,按上述算法生成字符串,与checksum做一次校验。
    说明 用户UID必须是阿里云账号的UID,而不是RAM用户的UID。
  • content:JSON字符串格式,请自行解析反转成JSON对象。关于content结果的示例,请参见查询检测结果的返回示例。
说明 您的服务端callback接口收到内容安全推送的结果后,如果返回的HTTP状态码为200,则表示接收成功,其他的HTTP状态码均视为接收失败。接收失败时,内容安全将最多重复推送16次检测结果,直到接收成功。重复推送16次后仍未接收成功,则不再推送,建议您检查callback接口的状态。
seed String aabbcc123 随机字符串,该值用于回调通知请求中的签名。

由英文字母、数字、下划线(_)组成,不超过64个字符。由您自定义,用于在接收到内容安全的回调通知时校验请求由阿里云内容安全服务发起。

说明 当使用callback时,该字段必须提供。
cryptType String SHA256 使用回调通知时(callback),设置对回调通知内容进行加密的算法。内容安全会将返回结果(由用户uid + seed + content拼接的字符串)按照您设置的加密算法加密后,再发送到您的回调通知地址。取值:
  • SHA256(默认):使用SHA256加密算法。
  • SM3:使用国密HMAC-SM3加密算法,返回十六进制的字符串,且字符串由小写字母和数字组成。

    例如,abc经国密SM3加密后返回66c7f0f462eeedd9d1f2d46bdc10e4e24167c4875cf2f7a2297da02b8f4ba8e0

tasks JSONArray 指定检测对象,JSON数组中的每个元素是一个检测任务结构体。最多支持100个元素,即每次提交100条内容进行检测,支持100个元素的前提是需要将并发任务调整到100个以上。关于每个元素的具体结构描述,请参见task
表 1. task
名称 类型 是否必选 示例值 描述
dataId String e6b080a8-a91a-11e8-bac4-6c96cfde2af9 检测对象对应的数据ID。

由大小写英文字母、数字、下划线(_)、短划线(-)、英文句号(.)组成,不超过128个字符,可以用于唯一标识您的业务数据。

url String http://v2img.ifensi.com/2015/0826/2015082612403321.jpg 传入待比较图片中的第一张图片的URL。
extras JSONObject {"faceUrl":"http://img5.iqilu.com/c/u/2013/0313/1363136852136.jpg"} 传入待比较图片中的第二张图片。格式为{"faceUrl":"http://xxx.jpg"}。其中,faceUrl为第二张图片的URL。

(异步检测)返回数据

名称 类型 示例值 描述
code Integer 200 错误码,和HTTP状态码一致。

更多信息,请参见公共错误码

msg String OK 请求信息的响应消息。
dataId String e6b080a8-a91a-11e8-bac4-6c96cfde2af9 检测对象对应的数据ID。
说明 如果在检测请求参数中传入了dataId,则此处返回对应的dataId
taskId String fdd25f95-4892-4d6b-aca9-7939bc6e9baa-1486198766695 检测任务的ID。
url String http://v2img.ifensi.com/2015/0826/2015082612403321.jpg 检测对象的URL。对应请求中的URL,即第一张图片的URL。

(异步检测)示例

请求示例
{
    "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": "95AD868A-F5D2-4AEA-96D4-E0273B8E074C",
    "data": [
        {
            "code": 200,
            "msg": "OK",
            "dataId": "e6b080a8-a91a-11e8-bac4-6c96cfde2af9",
            "taskId": "fdd25f95-4892-4d6b-aca9-7939bc6e9baa-1486198766695",
            "url": "http://v2img.ifensi.com/2015/0826/2015082612403321.jpg"
        }
    ]
}

图片异步检测结果查询接口说明

业务接口:/green/image/results,表示查询图片异步检测结果。

您可以调用该接口查询图片异步检测任务的结果。关于如何构造HTTP请求,请参见请求结构;您也可以直接选用已构造好的HTTP请求,更多信息,请参见SDK概览

  • 计费信息

    该接口不计费。

  • 查询超时

    建议您将查询间隔设置为30秒(即在提交异步检测任务30秒后查询结果),最长不能超出4个小时,否则结果将会丢失。

(结果查询)请求参数

名称 类型 是否必选 示例值 描述
body StringArray ["fdd25f95-4892-4d6b-aca9-7939bc6e9baa-1486198766695"] 要查询的检测任务的taskId列表。数组中的元素个数不超过100个。

您在提交检测任务后,可以从返回数据中获取检测任务的taskId

(结果查询)返回数据

名称 类型 示例值 描述
code Integer 200 错误码,和HTTP状态码一致。

更多信息,请参见公共错误码

msg String OK 请求信息的响应消息。
dataId String e6b080a8-a91a-11e8-bac4-6c96cfde2af9 检测对象对应的数据ID。
说明 如果在检测请求参数中传入了dataId,则此处返回对应的dataId
taskId String img2hsbmQeA4CU7l78$s8q5mW-1pnn7Z 检测任务的ID。
url String http://v2img.ifensi.com/2015/0826/2015082612403321.jpg 检测对象的URL。
results JSONArray 返回结果。调用成功时(code=200),返回结果中包含一个或多个元素。每个元素是个结构体,具体结构描述,请参见result
extras JSONObject xxx 额外调用参数。
说明 该参数可能会被调整,目前请勿依赖该参数的返回值。
表 2. result
名称 类型 示例值 描述
scene String sface-1 检测场景,取值:sface-1,表示人脸比对。
label String sface-1 检测结果的分类,取值:
  • normal:第二张图片和第一张图片的相似度低。
  • sface-1:第二张图片和第一张图片的相似度高。
suggestion String review 建议用户执行的操作,取值范围:
  • pass:图片相似度低,无需进行其余操作。
  • review:图片相似度高,建议执行进一步操作。
rate Float 97.0 置信度分数,取值范围:0~100,置信度越高表示检测结果的可信度越高。建议您不要在业务中使用该分数。

(结果查询)示例

请求示例
[
    "fdd25f95-4892-4d6b-aca9-7939bc6e9baa-1486198766695"
]
正常返回示例
{
    "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"
            }
        }
    ]
}