阿里云人脸识别 1:N 使用简明示例

简介: 基于图像或视频输入进行检测,与注册库比对,实现1:N的人脸识别。适用于人脸登录、VIP人脸识别、人脸通关等无需刷卡验证的场景。目前人脸识别1:N功能暂时还处于公测阶段,开通后可以免费测试试用。下面主要演示1:N 服务的开通及Java程序的调用测试。

概述

基于图像或视频输入进行检测,与注册库比对,实现1:N的人脸识别。适用于人脸登录、VIP人脸识别、人脸通关等无需刷卡验证的场景。目前人脸识别1:N功能已经正式商业化。下面主要演示1:N 服务的开通及Java程序的调用测试。

服务开通

1、复制粘贴地址到浏览器打开链接:https://common-buy.aliyun.com/?commodityCode=face_pre#/open 开通服务(注意复制粘贴操作,不要直接点击,地址跳转可能会存在错误)。
_

2、到费用中心支付。
_

3、登陆控制台查看(现阶段管理控制台功能还不完善,不过不影响程序的测试调用)。
_

Java Code Sample

1、pom.xml

        <dependency>
            <groupId>com.aliyun</groupId>
            <artifactId>aliyun-java-sdk-core</artifactId>
            <version>4.1.1</version>
        </dependency>

2、Code Sample

import com.aliyuncs.CommonRequest;
import com.aliyuncs.CommonResponse;
import com.aliyuncs.DefaultAcsClient;
import com.aliyuncs.exceptions.ClientException;
import com.aliyuncs.http.MethodType;
import com.aliyuncs.profile.DefaultProfile;

public class Demo {

    //DefaultProfile.getProfile的参数分别是地域,access_key_id, access_key_secret
    public static DefaultProfile profile = DefaultProfile.getProfile("cn-shanghai", "******", "******");
    public static DefaultAcsClient client = new DefaultAcsClient(profile);

    public static void main(String[] args) throws ClientException {
        String groupName = "JavaDemo1";
        String person = "LiuYifei";
        String image_1 = "photo1";
        String image_2 = "photo2";
        String imageUrl_1 = "https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1559655604341&di=3d6995f6dee1c4795d1827e754a00452&imgtype=0&src=http%3A%2F%2Fimg0.ph.126.net%2F90u9atgu46nnziAm1NMAGw%3D%3D%2F6631853916514183512.jpg";
        String imageUrl_2 = "https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1559655604338&di=ee3d8fb39f6e14a21852a4ac3f2c5a14&imgtype=0&src=http%3A%2F%2Fc4.haibao.cn%2Fimg%2F600_0_100_0%2F1473652712.0005%2F87c7805c10e60e9a6db94f86d6014de8.jpg";
        String recognizeFaceImageUrl = "https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1559655604335&di=7b540d703955aed6d235752589aee34a&imgtype=0&src=http%3A%2F%2Fphotocdn.sohu.com%2F20140317%2FImg396736687.jpg";

//        //添加入两张人脸
        AddFace(groupName,person,image_1,imageUrl_1);
        AddFace(groupName,person,image_2,imageUrl_2);

        //列举Group
        ListGroup();

        //列举Faces
        ListFace(groupName);

        //人脸查询
        RecognizeFace(recognizeFaceImageUrl, groupName);

        //删除Face
        DeleteFace(groupName,person,image_1);

        //列举Faces查询删除情况
        ListFace(groupName);
    }

    /**
     * AddFace接口用于向人脸库中添加人脸
     * @param groupName 添加人脸的分组
     * @param person 添加人脸的姓名
     * @param image 添加人脸的编号
     * @param imageUrl 检测图片的URL
     */
    public static void AddFace(String groupName,String person,String image,String imageUrl)
    {
        CommonRequest request = new CommonRequest();
        request.setMethod(MethodType.POST);
        request.setDomain("face.cn-shanghai.aliyuncs.com");
        request.setVersion("2018-12-03");
        request.setAction("AddFace");
        request.putBodyParameter("Group", groupName);
        request.putBodyParameter("Person", person);
        request.putBodyParameter("Image", image);
        request.putBodyParameter("ImageUrl",imageUrl);
//        request.putBodyParameter("Content", "/9j/4AAQSkZJRgABA...");  //检测图片的内容,Base64编码
        CommonResponse response = null;
        try {
            response = client.getCommonResponse(request);
        } catch (ClientException e) {
            e.printStackTrace();
        }
        System.out.println(response.getData());
    }

    /**
     * DeleteFace接口用于从人脸库中删除人脸
     * @param groupName 添加人脸的分组
     * @param person 添加人脸的姓名
     * @param image 添加人脸的编号
     * @throws ClientException
     */
    public static void DeleteFace(String groupName,String person,String image) throws ClientException {
        CommonRequest request = new CommonRequest();
        request.setMethod(MethodType.POST);
        request.setDomain("face.cn-shanghai.aliyuncs.com");
        request.setVersion("2018-12-03");
        request.setAction("DeleteFace");
        request.putBodyParameter("Group", groupName);
        request.putBodyParameter("Person", person);
        request.putBodyParameter("Image", image);
        CommonResponse response = client.getCommonResponse(request);
        System.out.println(response.getData());
    }

    /**
     * ListFace接口用于列举注册库中的人脸
     * @param groupName 需要查询的库
     * @throws ClientException
     */
    public static void ListFace(String groupName) throws ClientException {
        CommonRequest request = new CommonRequest();
        request.setMethod(MethodType.POST);
        request.setDomain("face.cn-shanghai.aliyuncs.com");
        request.setVersion("2018-12-03");
        request.setAction("ListFace");
        request.putBodyParameter("Group", groupName);
        CommonResponse response = client.getCommonResponse(request);
        System.out.println(response.getData());
    }

    /**
     * ListGroup接口用于列举人脸组
     * @throws ClientException
     */
    public static void ListGroup() throws ClientException {
        CommonRequest request = new CommonRequest();
        request.setMethod(MethodType.POST);
        request.setDomain("face.cn-shanghai.aliyuncs.com");
        request.setVersion("2018-12-03");
        request.setAction("ListGroup");
        CommonResponse response = client.getCommonResponse(request);
        System.out.println(response.getData());
    }

    /**
     * RecognizeFace接口用于查找注册库中的人脸
     * @param recognizeFaceImageUrl 需要查询的人类图片URL
     * @throws ClientException
     */
    public static void RecognizeFace(String recognizeFaceImageUrl, String groupName) throws ClientException {
        CommonRequest request = new CommonRequest();
        request.setMethod(MethodType.POST);
        request.setDomain("face.cn-shanghai.aliyuncs.com");
        request.setVersion("2018-12-03");
        request.setAction("RecognizeFace");
        request.putBodyParameter("Group", groupName);
        request.putBodyParameter("ImageUrl", recognizeFaceImageUrl);
//        request.putBodyParameter("Content", "/9j/4AAQSkZJRgABA...");  //检测图片的内容,Base64编码
        CommonResponse response = client.getCommonResponse(request);
        System.out.println(response.getData());
    }
}

3、测试结果

{"Data":"ok","RequestId":"5AA86872-4513-4C36-B1BA-4E7F14EAD252","Success":true}
{"Data":"ok","RequestId":"AB71CDD8-7F88-4E69-AB46-11B7A838BBA7","Success":true}
{"Data":["default","default1","defaultPython","defaultPythonDemo1","defaultPythonDemo2","defaultjs","defaultjsdemo","defaultPHPDemo","defaultPHPDemo1","JavaDemo","JavaDemo1"],"RequestId":"B5B79323-E936-4770-872D-A0ED5EE20F99","Success":true}
{"Data":{"mark":0,"list":[{"person":"LiuYifei","image":"photo2"},{"person":"LiuYifei","image":"photo1"}]},"RequestId":"89D8A329-8046-4F4E-9F5C-8FF6A8204E4F","Success":true}
{"Data":[{"person":"LiuYifei","score":0.65704226,"image":"photo2","rect":[146,131,132,179]}],"RequestId":"A506BC8D-F144-470D-A51A-6628338FD0BF","Success":true}
{"Data":"ok","RequestId":"1E1BF366-1558-4C1B-A48F-2F5F5DD736C9","Success":true}
{"Data":{"mark":0,"list":[{"person":"LiuYifei","image":"photo2"}]},"RequestId":"61EEDF7B-3D24-4EA3-A977-3C6CE10246FE","Success":true}
相关文章
|
Java API 计算机视觉
阿里云新版人脸识别Java使用示例教程
之前阿里云人脸识别只提供人脸检测,人脸属性及人脸对比三个API接口,关于这方面的介绍及使用细节,可以参考阿里云人脸识别使用流程简介,之前使用的服务地址为:dtplus-cn-shanghai.data.aliyuncs.com。目前新版本加入了1:N人脸查找的功能,新版本还处于公测阶段,服务地址:face.cn-shanghai.aliyuncs.com。下面主要介绍如何使用新版本的地址调用之前的三个API的功能。
3070 0
|
Unix Linux Windows
如何调整服务器系统时间
如何调整服务器系统时间
2001 0
|
1月前
|
人工智能 弹性计算 运维
阿里云全栈算力解析:ECS、GPU云服务器、轻量服务器与AI云产品配置、价格与实战测评
随着数字化业务与AI应用快速普及,云算力已经成为个人开发者、小微企业、中大型企业构建业务系统的基础底座。阿里云完整构建了从入门级轻量算力、企业级弹性云主机、高性能GPU异构算力到大模型托管服务的完整产品矩阵,覆盖个人学习测试、网站搭建、业务系统部署、深度学习训练推理、大模型应用开发等绝大多数业务场景。不同产品在硬件规格、计费模式、性能上限、运维门槛上差异巨大,很多用户在选型阶段容易出现配置过剩、预算浪费,或是算力不足无法支撑业务运行的问题。本文将完整拆解ECS弹性计算服务、GPU云服务器、轻量应用服务器、百炼AI云产品的规格参数、价格体系、实测性能,提供可直接复制使用的实操命令,同时给出分场景
503 0
|
4月前
|
人工智能 缓存 数据可视化
Claude Code换脑升级!DeepSeek V4-Pro接入、性能实测与核心问题排查手册
在AI编程工具领域,Claude Code凭借强大的任务执行、工具调用与工程化能力,成为开发者与自动化运维的核心效率工具。但原生模型存在成本高、账号稳定性波动等问题,寻找兼容、稳定、高性价比的替代方案成为刚需。DeepSeek V4-Pro作为新一代高性能大模型,原生兼容Anthropic API协议,无需代理即可无缝驱动Claude Code,且在任务执行、复杂推理、长上下文处理上表现优异,成本仅为原生高阶模型的七分之一左右。
2228 1
|
9月前
|
存储 人工智能 机器人
智能体来了:定义2026 AI元年,谁将成为下一代“数字员工”的核心?
内容摘要:2026年被公认为“AI智能体元年”,AI正从单一的聊天机器人变成具备自主规划、工具调用与记忆能力的“数字员工”。本文深度拆解智能体的底层架构,揭示在智能制造与个人生产力领域,谁能定义成为未来的核心力量,并提供企业级部署的实操路线。
890 2
|
文字识别 网络协议 开发工具
GitHub封锁?推荐5个国产的Git仓库替代平台
近日,GitHub对中国区IP的部分限制引发了广泛关注。未登录用户被拒,已登录用户功能受限,南北网络环境差异更显“内卷”。为应对这一挑战,本文推荐了多个国产Git平台:Gitee(码云)、GitCode(CSDN旗下)、CODING(腾讯系)、CodeUP(阿里云支持)及微信代码管理工具。这些平台功能全面、稳定性强,是开发者迁移项目的理想选择。通过同步代码、配置CI/CD流水线等简单步骤,可确保项目平稳过渡。此次事件提醒我们,掌握核心技能与支持国产平台同样重要!
20406 11
|
弹性计算 固态存储 大数据
2025阿里云服务器租赁价格表一年、1个月和1小时收费标准(200M峰值带宽)
阿里云服务器价格优惠,2025年最新租用费用表显示,轻量应用服务器2核2G配置一年仅需68元(秒杀38元),带200M峰值带宽。云服务器ECS方面,99元/年的2核2G经济型和199元/年的2核4G企业专享型备受青睐。4核16G游戏服务器70元/月,8核32G则160元/月。GPU服务器也有大幅折扣,如T4显卡的gn6i最低配置4核15G一个月1878.40元。续费享有长期折扣,1年7.5折,3年4.5折等。公网带宽和系统盘按需计费,ESSD云盘性能优越,价格透明。详情见官网。
|
人工智能 监控 Java
SpringBoot实战(十二):集成 Spring Boot Admin 监控
SpringBoot实战(十二):集成 Spring Boot Admin 监控
948 0

热门文章

最新文章