百度云AI

百度云AI概述

  • Face++
  • 腾讯优图
  • 科大讯飞

百度人脸识别基于深度学习的人脸识别方案,准确识别图片中的人脸信息,提供如下功能:

  • 人脸检测:精准定位图中人脸,获得眼、口、鼻等72个关键点位置,分析性别、年龄、表情等多种人脸属性
  • 人脸对比:对比两张人脸的相似度,并给出相似度评分,从而判断是否同一个人
  • 人脸搜索:针对一张人脸照片,在指定人脸集合中搜索,找出最相似的一张脸或多张人脸,并给出相似度分值
  • 活体检测:提供离线/在线方式的活体检测能力,判断操作用户是否为真人,有效抵御照片、视频、模具等作弊攻击
  • 视频流人脸采集:设备端离线实时监测视频流中的人脸,同时支持处理静态图片或者视频流,输出人脸图片并进行图片质量控制

百度云AI的开发步骤

  1. 注册账号创建应用
  2. 搭建工程导入依赖
  3. 人脸注册
  4. 人脸识别

百度云AI的注册与认证

(1)注册百度云帐号

https://login.bce.baidu.com/new-reg?tpl=bceplat&from=portal

在这里插入图片描述
激活人脸识别,并创建应用
在这里插入图片描述
应用创建完成之后,进入刚刚创建的应用获取开发所需的AppID,API Key,Secret Key。
在这里插入图片描述

百度云API的入门

搭建环境

创建工程并导入依赖:

<dependency>
  <groupId>com.baidu.aip</groupId>
   <artifactId>java-sdk</artifactId>
   <version>4.8.0</version>
</dependency>

人脸注册

用于从人脸库中新增用户,可以设定多个用户所在组,及组内用户的人脸图片
典型应用场景:构建您的人脸库,如会员人脸注册,已有用户补全人脸信息等。

public class FaceTest {
    //人脸注册
    @Test
    public void testFaceRegister() throws Exception {
     //创建java代码和百度云交互的clent对象
     AipFace client = new AipFace("你的AppID", "你的API Key", "你的Secret Key");
     //传入可选参数调用接口
        HashMap<String, String> options = new HashMap<String, String>();
        options.put("quality_control", "NORMAL"); //设置质量控制参数,可选值为NORMAL(默认)NONE、LOW。HIGH模式会进行更严格的人脸质量检测,若检测不通过,则会返回不通过的错误码。
        options.put("liveness_control", "LOW");//设置活体检测参数,可选值为NONE(默认)LOW、NORMAL、HIGH。NONE模式不进行活体检测,直接返回结果。LOW模式会进行非常简单的活体检测,FAST模式会进行快速的活体检测,FAST模式会更关注速度,而可能增加误识率。HIGH模式会进行非常严格的活体检测,
        String imageType = "BASE64";
        String groupId = "yu";
        String userId = "0001";
//构造base64图片字符串
        String path = "C:\\Users\\ZZZYY\\3D Objects\\gx.jpg";
        byte[] bytes = Files.readAllBytes(Paths.get(path));
        String image = Base64Util.encode(bytes);
// 人脸注册
        /**
         * @param image 本地图片路径,支持jpg、png、gif、bmp,不支持base64。
         *              imageType 可选值为BASE64、URL,不填默认为BASE64。
         *              groupId 用户组ID,必填。
         *              userId 用户ID,必填。
         *              options 可选参数,json格式。
         */
        JSONObject res = client.addUser(image, imageType, groupId, userId, options);
        System.out.println(res.toString(2));
    }
}

人脸注册 请求参数详情
在这里插入图片描述
人脸注册 返回数据参数详情
在这里插入图片描述
运行控制台输出

{
  "result": {
    "face_token": "6dd622d4ac489e3***",
    "location": {
      "top": 186.57,
      "left": 215.43,
      "rotation": 1,
      "width": 285,
      "height": 302
    }
  },
  "log_id": 2227089050,
  "error_msg": "SUCCESS",
  "cached": 0,
  "error_code": 0,
  "timestamp": 1707968227
}

查看人脸库
在这里插入图片描述

人脸检测

人脸检测:检测图片中的人脸并标记出位置信息;

    //人脸检测
    @Test
    public void testFaceDetect() throws IOException {
        String path = "C:\\Users\\ZZZYY\\3D Objects\\logo.png";
        byte[] bytes = Files.readAllBytes(Paths.get(path));
        String image = Base64Util.encode(bytes);
        String imageType = "BASE64";
        HashMap<String, String> subOptions = new HashMap<String, String>();
        subOptions.put("max_face_num", "10");
        //人脸检测
        JSONObject res = client.detect(image, imageType, subOptions);
        System.out.println(res.toString(2));
    }
}

人脸检测 请求参数详情
在这里插入图片描述
人脸检测 返回数据参数详情
在这里插入图片描述
在这里插入图片描述
运行控制台输出

{
  "result": null,
  "log_id": 124186657,
  "error_msg": "pic not has face",
  "cached": 0,
  "error_code": 222202,
  "timestamp": 1707969724
}

换张有人脸图,在运行输出

{
  "result": {
    "face_num": 1,
    "face_list": [{
      "angle": {
        "roll": -12.3,
        "pitch": 1.94,
        "yaw": -0.55
      },
      "face_token": "6bca071e248a56e212*****",
      "location": {
        "top": 170.58,
        "left": 214.3,
        "rotation": -9,
        "width": 181,
        "height": 185
      },
      "face_probability": 1
    }]
  },
  "log_id": 363572715,
  "error_msg": "SUCCESS",
  "cached": 0,
  "error_code": 0,
  "timestamp": 1707969963
}

人脸搜索

在指定人脸集合中,找到最相似的人脸

    //人脸搜索
    @Test
    public void testFaceSearch() throws IOException {
        String path = "C:\Users\ZZZYY\3D Objects\cgx.jpeg";
        byte[] bytes = Files.readAllBytes(Paths.get(path));
        String image = Base64Util.encode(bytes);
        String imageType = "BASE64";
        HashMap<String, String> options = new HashMap<String, String>();
        options.put("user_top_num", "1");
        //人脸搜索
        JSONObject res = client.search(image, imageType, "yu", options);
        System.out.println(res.toString(2));
    }
}

人脸搜索 请求参数详情
在这里插入图片描述
人脸搜索 返回数据参数详情
在这里插入图片描述
运行控制台输出
score:相识度90

{
  "result": {
    "face_token": "6bca071e248a56e212eedae76a331c34",
    "user_list": [{
      "score": 90.101455688477,
      "group_id": "yu",
      "user_id": "0001",
      "user_info": ""
    }]
  },
  "log_id": 1674136859,
  "error_msg": "SUCCESS",
  "cached": 0,
  "error_code": 0,
  "timestamp": 1707971274
}

换张彭于晏的照片
score:相识度33

{
  "result": {
    "face_token": "a9d9b891693df035877b3c79d271acc6",
    "user_list": [{
      "score": 33.696895599365,
      "group_id": "yu",
      "user_id": "0001",
      "user_info": ""
    }]
  },
  "log_id": 1872494893,
  "error_msg": "SUCCESS",
  "cached": 0,
  "error_code": 0,
  "timestamp": 1707971472
}

人脸更新

用于对人脸库中指定用户,更新其下的人脸图像。


    //人脸更新
    @Test
    public void testFaceUpdate() throws Exception {
        //传入可选参数调用接口
        HashMap<String, String> options = new HashMap<String, String>();
        options.put("quality_control", "NORMAL");
        options.put("liveness_control", "LOW");
        String imageType = "BASE64";
        String groupId = "yu";
        String userId = "0001";
//构造base64图片字符串
        String path = "C:\\Users\\ZZZYY\\3D Objects\\cgx.jpeg";
        byte[] bytes = Files.readAllBytes(Paths.get(path));
        String image = Base64Util.encode(bytes);
//人脸注册
        JSONObject res = client.updateUser(image, imageType, groupId, userId, options);
        System.out.println(res.toString(2));
    }
}

人脸更新 请求参数详情

在这里插入图片描述
人脸更新 返回数据参数详情
在这里插入图片描述
运行控制台输出

{
  "result": {
    "face_token": "936a8e9cefe780d1299e77923e870775",
    "location": {
      "top": 126.09,
      "left": 230.77,
      "rotation": 3,
      "width": 218,
      "height": 216
    }
  },
  "log_id": 3066523716,
  "error_msg": "SUCCESS",
  "cached": 0,
  "error_code": 0,
  "timestamp": 1707972666
}

查看人脸库
在这里插入图片描述

结语

在这个信息化快速发展的时代,百度云AI的人脸识别技术如同一把钥匙,为我们打开了智能世界的大门。从核心技术到应用场景,再到未来的发展蓝图,每一项创新都体现了科技的力量。


让我们期待,在不久的将来,这项技术能够带给我们更多的惊喜,让我们的生活更加智能、便捷。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/389513.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【JAVA-Day89】Java字符串和XML数据结构的转换

Java字符串和XML数据结构的转换 Java字符串和XML数据结构的转换&#xff0c;高效灵活转变数据摘要引言一、什么是XML二、XML格式的应用场景三、XML字符串转对象3.1 使用 DOM 解析器实现 XML 字符串转对象3.2 使用 JAXB 实现 XML 字符串转对象 四、XML对象转字符串4.1 使用 DOM …

【实战】一、Jest 前端自动化测试框架基础入门(一) —— 前端要学的测试课 从Jest入门到TDD BDD双实战(一)

文章目录 一、前端要学的测试课1.前端要学的测试2.前端工程化的一部分3.前端自动化测试的例子4.前端为什么需要自动化测试&#xff1f;5.课程涵盖内容6.前置技能7.学习收获 二、Jest 前端自动化测试框架基础入门1. 自动化测试背景及原理前端自动化测试产生的背景及原理 2.前端自…

Linux中sigaction函数和SIGCHLD信号的使用

sigaction函数&#xff1a; 函数说明&#xff1a;注册一个信号处理函数 函数原型&#xff1a;int sigaction(int signum, const struct sigaction *act, struct sigaction *oldact); 函数参数&#xff1a; signum:捕捉的信号act:传入参数&#xff0c;…

IDEA工程与模块管理

一、IDEA项目结构 层级关系&#xff1a; project(工程) - module(模块) - package(包) - class(类)具体的&#xff1a; 一个project中可以创建多个module一个module中可以创建多个package一个package中可以创建多个class二、Project和Module的概念 在 IntelliJ IDEA 中&…

HTTP特性

大家好我是苏麟 , 今天说说HTTP特性. 资料来源 : 小林coding 小林官方网站 : 小林coding (xiaolincoding.com) 到目前为止&#xff0c;HTTP 常见到版本有 HTTP/1.1&#xff0c;HTTP/2.0,HTTP/3.0&#xff0c;不同版本的 HTTP 特性是不一样的。 这里先用 HTTP/1.1 版本给大家介…

第6讲自定义icon实现

自定义icon实现 component下新建SvgIcon目录&#xff0c;再新建index.vue 定义svg-icon组件 <template><svg class"svg-icon" aria-hidden"true"><use :xlink:href"iconName"></use></svg> </template>&…

Kafka King 推荐一款漂亮、现代、实用的kafka客户端

Kafka King 一个漂亮、现代、实用的kafka客户端&#xff0c;使用python flet、flutter构建。 Github主页&#xff1a;https://github.com/Bronya0/Kafka-King 下载&#xff1a;https://github.com/Bronya0/Kafka-King/releases 功能清单 查看集群节点列表创建主题&#xf…

Spring Resource

java.net.URL 类可用于访问带有各种URL前缀的资源&#xff0c;但是对于访问一些资源还是不够方便。比如不能从类路径或者相对于ServletContext来获取资源。而Spring 的Resource接口&#xff0c;则可以通过类路径等方式来访问资源。 1 Resource接口 图 Resource接口及方法 getI…

Java 和 JavaScript 的奇妙协同:语法结构的对比与探索(上)

&#x1f90d; 前端开发工程师、技术日更博主、已过CET6 &#x1f368; 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 &#x1f560; 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 &#x1f35a; 蓝桥云课签约作者、上架课程《Vue.js 和 E…

数学建模:BP神经网络(含python实现)

原理 BP 神经网络&#xff0c;也称为多层感知机&#xff08;Multilayer Perceptron&#xff0c;MLP&#xff09;&#xff0c;是一种常见的神经网络模型&#xff0c;用于解决各种机器学习问题&#xff0c;包括分类和回归。BP 代表“反向传播”&#xff08;Backpropagation&#…

使用redis-insight连接到服务器上的redis数据库

一、安装redis&#xff1a; 安装 Redis。你可以通过运行下面的命令来使用 yum 安装 Redis&#xff1a; sudo yum install redis 启动 Redis 服务。安装完成后&#xff0c;你可以通过运行下面的命令来启动 Redis 服务&#xff1a; sudo systemctl start redis 设置 Redis 服务…

【C++】static静态关键字

&#x1f490; &#x1f338; &#x1f337; &#x1f340; &#x1f339; &#x1f33b; &#x1f33a; &#x1f341; &#x1f343; &#x1f342; &#x1f33f; &#x1f344;&#x1f35d; &#x1f35b; &#x1f364; &#x1f4c3;个人主页 &#xff1a;阿然成长日记 …

Rust 数据结构与算法:4栈:用栈实现进制转换

2、进展转换 将十进制数转换为二进制表示形式的最简单方法是“除二法”&#xff0c;可用栈来跟踪二进制结果。 除二法 下面实现一个将十进制数转换为二进制或十六进制的算法&#xff0c;代码如下&#xff1a; #[derive(Debug)] struct Stack<T> {size: usize, // 栈大…

【机器学习笔记】5 机器学习实践

数据集划分 子集划分 训练集&#xff08;Training Set&#xff09;&#xff1a;帮助我们训练模型&#xff0c;简单的说就是通过训练集的数据让我们确定拟合曲线的参数。 验证集&#xff08;Validation Set&#xff09;&#xff1a;也叫做开发集&#xff08; Dev Set &#xf…

【C++】 为什么多继承子类重写的父类的虚函数地址不同?『 多态调用汇编剖析』

&#x1f440;樊梓慕&#xff1a;个人主页 &#x1f3a5;个人专栏&#xff1a;《C语言》《数据结构》《蓝桥杯试题》《LeetCode刷题笔记》《实训项目》《C》《Linux》《算法》 &#x1f31d;每一个不曾起舞的日子&#xff0c;都是对生命的辜负 前言 本篇文章主要是为了解答有…

LeetCode Python -18.四数之和

目录 题目答案运行结果 题目 给你一个由 n 个整数组成的数组 nums &#xff0c;和一个目标值 target 。请你找出并返回满足下述全部条件且不重复的四元组 [nums[a], nums[b], nums[c], nums[d]] &#xff08;若两个四元组元素一一对应&#xff0c;则认为两个四元组重复&#x…

OpenTitan- 开源安全芯片横空出世

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗&#xff1f;订阅我们的简报&#xff0c;深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同&#xff0c;从行业内部的深度分析和实用指南中受益。不要错过这个机会&#xff0c;成为AI领…

前端网络安全笔记

本文主要涉及6个内容&#xff1a; HTTP与HTTPS同源策略&#xff08;Same-origin policy&#xff0c;简称 SOP&#xff09;/ 跨域资源共享&#xff08;Cross-Origin Resource Sharing&#xff0c;简称 CORS&#xff09;跨站脚本攻击&#xff08;Cross-Site Scripting&#xff0…

Java中的String类的常用方法(对于字符串的常用操作)

目录 一、获取指定索引的字符 二、 获取指定字符或者字符串的索引位置 三、判断字符串是否以指定内容开头或结尾 四、替换指定的字符或者是字符串 五、获取字符串的子串 六、将字符串转换为字符数组 七、比较字符串的内容是否相等 八、连接字符串 九、比较两个字符串的大…

JVM(5)面试篇

1 什么是JVM&#xff1f; 关联课程内容 基础篇-初识JVM基础篇-Java虚拟机的组成 回答路径 JVM的定义作用功能组成 1、定义&#xff1a; JVM 指的是Java虚拟机&#xff08; Java Virtual Machine &#xff09;。JVM 本质上是一个运行在计算机上的程序&#xff0c;他的职责是…