操作手册
【试用教程】人脸比对1:1
viapi
手动配置
60
教程简介
本教程提供在阿里云视觉智能开放平台VIAPI上基于人脸人体(facebody)类目下的人脸比对1:1(CompareFace)的语法及示例指引,基于人脸比对1:1常用语言和常见情况的示例代码教程,实现人脸比对1:1API能力的集成接入和服务可调用。
人脸比对1:1能力基于您输入的两张图片,分别挑选两张图片中的最大人脸进行比较,判断是否为同一人。更多有关人脸比对1:1能力的信息,请参见人脸比对1:1。
我能学到什么
熟悉视觉智能开放平台人脸比对1:1的语法及示例。
学会如何使用视觉智能开放平台人脸比对1:1API能力的集成接入和服务可调用。
学会快速接入集成人脸比对1:1常用语言和常见情况的示例代码。
操作难度 | 中 |
所需时间 | 60分钟 |
使用的阿里云产品 | |
所需费用 | 0元 |
准备环境和资源
15
开始教程前,请按以下步骤准备环境和资源:
下载人脸人体类目对应的Java SDK Aliyun Java SDK Facebody,SDK版本需大于等于3.0.7。
本教程以阿里云视觉智能开放平台的Java SDK为例进行说明,实际操作时请根据业务实际需求选择接入语言以及类目。
说明当前SDK只支持Java8及以上版本,如不满足SDK所需环境要求,请升级Java版本。
访问阿里云免费试用。单击页面右上方的登录/注册按钮,并根据页面提示完成账号登录(已有阿里云账号)、账号注册(尚无阿里云账号)或实名认证(根据试用产品要求完成个人实名认证或企业实名认证)。
成功登录后,在产品类别下选择AI与机器学习 > 视觉智能开放平台,在人脸人体2QPS 不限时长卡片上单击立即试用,阅读并勾选服务协议后,单击立即试用,提交成功后单击前往控制台。
本教程使用的API能力为人脸比对1:1,实际操作时,您也可以根据业务实际需求来选择人脸人体API试用能力。
说明本能力支持企业或个人认证用户开通。更多实名认证操作信息,请参见实名认证。
请确保您已创建AccessKey,如果您使用的是子账号AccessKey,您需要给子账号赋予AliyunVIAPIFullAccess权限,具体操作,请参见RAM授权。
安装SDK
15
查看SDK版本
pom.xml文件中version的值以SDK获取地址中的最新版本为准。您可以通过https://mvnrepository.com/artifact/com.aliyun/SDK包名称
查看不同服务SDK的版本。
例如,通过https://mvnrepository.com/artifact/com.aliyun/facebody20191230
可以查看facebody20191230
的版本。
使用Maven安装SDK
如果您使用Maven管理Java项目,可以通过在pom.xml文件中添加Maven依赖安装Java SDK。例如您需要人脸人体类目下的能力,您只需引入facebody20191230
。
<dependency>
<groupId>com.aliyun</groupId>
<artifactId>facebody20191230</artifactId>
<version>${aliyun.facebody.version}</version>
</dependency>
代码调试
10
此处以Java为例进行说明,请参考示例代码进行适当修改后调用。更多其他语言示例代码,请参见人脸比对1:1示例代码。
文件在同地域OSS(Java)
/*
引入依赖包
最低SDK版本要求:facebody20191230的SDK版本需大于等于3.0.7。
可以在此仓库地址中引用最新版本SDK:https://mvnrepository.com/artifact/com.aliyun/facebody20191230
<!-- https://mvnrepository.com/artifact/com.aliyun/facebody20191230 -->
<dependency>
<groupId>com.aliyun</groupId>
<artifactId>facebody20191230</artifactId>
<version>${aliyun.facebody.version}</version>
</dependency>
*/
import com.aliyun.facebody20191230.models.CompareFaceResponse;
import com.aliyun.tea.TeaException;
import com.aliyun.tea.TeaModel;
public class CompareFace {
public static com.aliyun.facebody20191230.Client createClient(String accessKeyId, String accessKeySecret) throws Exception {
com.aliyun.teaopenapi.models.Config config = new com.aliyun.teaopenapi.models.Config()
// 您的 AccessKey ID
.setAccessKeyId(accessKeyId)
// 您的 AccessKey Secret
.setAccessKeySecret(accessKeySecret);
// 访问的域名
config.endpoint = "facebody.cn-shanghai.aliyuncs.com";
return new com.aliyun.facebody20191230.Client(config);
}
public static void main(String[] args_) throws Exception {
// "YOUR_ACCESS_KEY_ID", "YOUR_ACCESS_KEY_SECRET" 的生成请参考https://help.aliyun.com/document_detail/175144.html
// 如果您是用的子账号AccessKey,还需要为子账号授予权限AliyunVIAPIFullAccess,请参考https://help.aliyun.com/document_detail/145025.html
com.aliyun.facebody20191230.Client client = CompareFace.createClient("YOUR_ACCESS_KEY_ID", "YOUR_ACCESS_KEY_SECRET");
com.aliyun.facebody20191230.models.CompareFaceRequest compareFaceRequest = new com.aliyun.facebody20191230.models.CompareFaceRequest()
.setImageURLA("http://viapi-test.oss-cn-shanghai.aliyuncs.com/viapi-3.0domepic/facebody/CompareFace/CompareFace-right1.png")
.setImageURLB("http://viapi-test.oss-cn-shanghai.aliyuncs.com/viapi-3.0domepic/facebody/CompareFace/CompareFace-left1.png");
com.aliyun.teautil.models.RuntimeOptions runtime = new com.aliyun.teautil.models.RuntimeOptions();
try {
// 复制代码运行请自行打印 API 的返回值
CompareFaceResponse compareFaceResponse = client.compareFaceWithOptions(compareFaceRequest, runtime);
// 获取整体结果
System.out.println(com.aliyun.teautil.Common.toJSONString(TeaModel.buildMap(compareFaceResponse)));
} catch (TeaException teaException) {
// 获取整体报错信息
System.out.println(com.aliyun.teautil.Common.toJSONString(teaException));
// 获取单个字段
System.out.println(teaException.getCode());
}
}
}
文件在本地或文件不在同一地域OSS(Java)
/*
引入依赖包
最低SDK版本要求:facebody20191230的SDK版本需大于等于3.0.7。
可以在此仓库地址中引用最新版本SDK:https://mvnrepository.com/artifact/com.aliyun/facebody20191230
<!-- https://mvnrepository.com/artifact/com.aliyun/facebody20191230 -->
<dependency>
<groupId>com.aliyun</groupId>
<artifactId>facebody20191230</artifactId>
<version>${aliyun.facebody.version}</version>
</dependency>
*/
import com.aliyun.facebody20191230.models.CompareFaceResponse;
import com.aliyun.tea.TeaException;
import com.aliyun.tea.TeaModel;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;
import java.net.URL;
public class CompareFace {
public static com.aliyun.facebody20191230.Client createClient(String accessKeyId, String accessKeySecret) throws Exception {
com.aliyun.teaopenapi.models.Config config = new com.aliyun.teaopenapi.models.Config()
// 您的 AccessKey ID
.setAccessKeyId(accessKeyId)
// 您的 AccessKey Secret
.setAccessKeySecret(accessKeySecret);
// 访问的域名
config.endpoint = "facebody.cn-shanghai.aliyuncs.com";
return new com.aliyun.facebody20191230.Client(config);
}
public static void main(String[] args_) throws Exception {
// "YOUR_ACCESS_KEY_ID", "YOUR_ACCESS_KEY_SECRET" 的生成请参考https://help.aliyun.com/document_detail/175144.html
// 如果您是用的子账号AccessKey,还需要为子账号授予权限AliyunVIAPIFullAccess,请参考https://help.aliyun.com/document_detail/145025.html
com.aliyun.facebody20191230.Client client = CompareFace.createClient("YOUR_ACCESS_KEY_ID", "YOUR_ACCESS_KEY_SECRET");
// 场景一,使用本地文件
InputStream inputStreamA = new FileInputStream(new File("/tmp/CompareFace-right.png"));
// 场景二,使用任意可访问的url
URL url = new URL("https://viapi-test-bj.oss-cn-beijing.aliyuncs.com/viapi-3.0domepic/facebody/CompareFace/CompareFace-left1.png");
InputStream inputStreamB = url.openConnection().getInputStream();
com.aliyun.facebody20191230.models.CompareFaceAdvanceRequest compareFaceAdvanceRequest = new com.aliyun.facebody20191230.models.CompareFaceAdvanceRequest()
.setImageURLAObject(inputStreamA)
.setImageURLBObject(inputStreamB);
com.aliyun.teautil.models.RuntimeOptions runtime = new com.aliyun.teautil.models.RuntimeOptions();
try {
// 复制代码运行请自行打印 API 的返回值
CompareFaceResponse compareFaceResponse = client.compareFaceAdvance(compareFaceAdvanceRequest, runtime);
// 获取整体结果
System.out.println(com.aliyun.teautil.Common.toJSONString(TeaModel.buildMap(compareFaceResponse)));
} catch (TeaException teaException) {
// 获取整体报错信息
System.out.println(com.aliyun.teautil.Common.toJSONString(teaException));
// 获取单个字段
System.out.println(teaException.getCode());
}
}
}
在线代码调试
10
您可以通过OpenAPI Explorer在线调试能力,查看完整的调用示例代码及SDK依赖信息,也可以下载完整的工程。
更多参数以及示例详情,请参见人脸比对1:1。

完成
5
完成以上操作后,您已经成功集成人脸比对1:1API服务。正常进行API稳定调用。
清理及后续
5
清理
开通视觉智能开放平台服务不发起调用不会产生费用,无需关闭服务,后续您如果想继续使用则无需再次开通。如果您想限制RAM账户使用,将对应的RAM权限授权取消即可禁止RAM账户调用平台能力。
如果有更多诉求,可通过钉钉搜索群号23109592,加入阿里云视觉智能开放平台咨询群,与平台取得联系。
后续
视觉智能开放平台提供的试用能力为2QPS预付费资源包,如果您后续希望继续使用人脸比对1:1(CompareFace)服务,请按照以下规则进行操作:
如果您后续希望继续以2QPS调用服务,无需购买资源包,阿里云视觉智能开放平台默认赠送2QPS。
如果您的业务并发较高,免费2QPS无法满足需求,可通过购买扩充QPS或者购买通用预付费资源包提升QPS。更多购买详情,请参见产品计费。
您也可以在视觉智能开放平台人脸人体(facebody)类目下开通和调用人脸搜索、人脸检测与五官定位、人脸活体检测、人脸核身服务端、人脸属性、人体检测等系列API服务。更多信息,请参见人脸人体介绍。
总结
常用知识点
问题1:调用视觉智能开放平台的能力时,必须要开通OSS服务吗?(单选题)
正确答案:可以不开通。调用视觉智能开放平台能力时,需要传入处理文件的URL地址,建议使用阿里云OSS存储文件保证被检测文件不会下载超时。非OSS用户调用平台能力时,请参见文件URL处理。
问题2:QPS是否能够叠加?比如按量付费2QPS,购买资源包5QPS,又买预付费10QPS,用户账号的QPS是17QPS吗?(单选题)
正确答案:不是。目前QPS不能叠加,根据问题中的情况,会优先按照预付费10QPS抵扣使用,当预付费QPS到期或抵扣完之后,变更为资源包5QPS,当资源包耗尽或者到期后,变更为按量付费2QPS。具体能力到底生效了多少QPS,建议在控制台直接查看对应能力的QPS阈值即可。