300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > 百度AI 开放平台 人脸检测与识别

百度AI 开放平台 人脸检测与识别

时间:2022-04-22 10:11:18

相关推荐

百度AI 开放平台  人脸检测与识别

一、前言

最近在做课程设计,之前都是用OpenCV做人脸识别,今天了解到百度AI 开放平台也提供人脸识别这一功能,于是来试了试。

本文介绍一系列较为常用的方法和用法,若需要更加具体的食用方法,请参见百度AI 开放平台人脸识别Python SDK文档

二、开始

1)准备工作

首先注册百度AI 开放平台的开发者;然后创建应用(记得在所使用功能处勾选人脸识别等功能);获得AppIDAPI KeySecret Key;找到Python SDK 文档说明(我个人比较倾向于使用python sdk 开发 😃 )

2)安装Python SDK

二选一:

若已安装pip:

pip install baidu-aip

若已安装setuptools:

python setup.py install

3)新建AipFace

AipFace是人脸识别的Python SDK 客户端,为使用人脸识别的开发人员提供了一系列的交互方法。

from aip import AipFace""" 你的 APPID AK SK """APP_ID = '你的 App ID'API_KEY = '你的 Api Key'SECRET_KEY = '你的 Secret Key'client = AipFace(APP_ID, API_KEY, SECRET_KEY)

上述App ID、Api Key、Secret Key 的获取在我之前那篇博客《树莓派 >>> 接入百度AI 开放平台实现智能语音识别》已经说过了,这里不再赘述

4)创建用户组

用于创建一个空的用户组,如果用户组已存在 则返回错误。

groupId = "group1"""" 调用创建用户组 """client.groupAdd(groupId);

5)人脸注册

首先有几点需要注意一下:

每个开发者账号可以创建100个appid;每个appid对应一个人脸库,且不同appid之间,人脸库互不相通;每个人脸库下,可以创建多个用户组,用户组(group)数量没有限制;每个用户组(group)下,可添加最多无限张人脸,无限个uid;每个用户(uid)所能注册的最大人脸数量没有限制

百度并没有提供直接的创建用户接口,所以只要我们注册了某个用户的人脸,就算是创建了一个用户。

image = "取决于image_type参数,传入BASE64字符串或URL字符串或FACE_TOKEN字符串"imageType = "BASE64"groupId = "group1"userId = "user1"""" 调用人脸注册 """client.addUser(image, imageType, groupId, userId);

imageType我倾向于使用"BASE64",所以在image参数中,我们就需要传入待识别图片的BASE64编码字符串

(对于如何将图片进行BASE64 编码,请参见Python >>> 图片转BASE64编码)

6)人脸检测

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

image = "取决于image_type参数,传入BASE64字符串或URL字符串或FACE_TOKEN字符串"imageType = "BASE64"""" 调用人脸检测 """client.detect(image, imageType);

imageType我倾向于使用"BASE64",所以在image参数中,我们就需要传入待识别图片的BASE64编码字符串

(对于如何将图片进行BASE64 编码,请参见Python >>> 图片转BASE64编码)

返回结果:

7)人脸搜索(识别)

1:N人脸搜索:也称为1:N识别,在指定人脸集合中,找到最相似的人脸;1:N人脸认证:基于uid维度的1:N识别,由于uid已经锁定固定数量的人脸,所以检索范围更聚焦;

1:N人脸识别与1:N人脸认证的差别在于:人脸搜索是在指定人脸集合中进行直接地人脸检索操作,而人脸认证是基于uid,先调取这个uid对应的人脸,再在这个uid对应的人脸集合中进行检索(因为每个uid通常对应的只有一张人脸,所以通常也就变为了1:1对比);实际应用中,人脸认证需要用户或系统先输入id,这增加了验证安全度,但也增加了复杂度,具体使用哪个接口需要视您的业务场景判断。

image = "取决于image_type参数,传入BASE64字符串或URL字符串或FACE_TOKEN字符串"imageType = "BASE64"groupIdList = "group1"""" 调用人脸搜索 """client.search(image, imageType, groupIdList);

返回结果:

8)人脸更新

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

针对一个uid执行更新操作,新上传的人脸图像将覆盖此uid原有所有图像。

image = "取决于image_type参数,传入BASE64字符串或URL字符串或FACE_TOKEN字符串"imageType = "BASE64"groupId = "group1"userId = "user1"""" 调用人脸更新 """client.updateUser(image, imageType, groupId, userId);

9)人脸删除

用于从某一人脸库中删除一个用户的某一人脸。

userId = "user1"groupId = "group1"faceToken = "64247346116276esdfgasdffe5491e30axxxxx"""" 调用人脸删除 """client.faceDelete(userId, groupId, faceToken);

10)用户删除

用于将用户从某个组中删除。

groupId = "group1"userId = "user1"""" 调用删除用户 """client.deleteUser(groupId, userId);

11)删除用户组

删除用户组下所有的用户及人脸,如果组不存在则返回错误。

groupId = "group1"""" 调用删除用户组 """client.groupDelete(groupId);

12)组列表查询

用于查询用户组的列表。

""" 调用组列表查询 """client.getGroupList();""" 如果有可选参数 """options = {}options["start"] = 0options["length"] = 50""" 带参数调用组列表查询 """client.getGroupList(, options)

返回结果:

13)获取用户列表

用于查询指定用户组中的用户列表。

groupId = "group1"""" 调用获取用户列表 """client.getGroupUsers(groupId);

返回结果:

14)获取用户人脸列表

用于获取一个用户的全部人脸列表。

userId = "user1"groupId = "group1"""" 调用获取用户人脸列表 """client.faceGetlist(userId, groupId);

返回结果:

15)用户信息查询

获取人脸库中某个用户的信息(user_info信息和用户所属的组)。

userId = "user1"groupId = "group1"""" 调用用户信息查询 """client.getUser(userId, groupId);

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。