📢 前言 🎬 实战篇 |基于百度AI开放平台实现简易版人脸识别功能一、获取SDK准备工作1.1 前往 百度AI开放平台 登录1.2 前往 人脸与人体1.3 创建一个应用1.3 下载人脸识别SDK资源1.4 从SDK中取出我们会使用的文件1.5 人脸离线识别SDK申请二、Unity端操作2.1 新建一个Unity工程2.2 导入 人脸识别 .dll文件2.3 新建交互类2.4 人脸注册2.5 注册人脸 上传到 百度大脑人脸识别库2.6 使用图片进行 人脸对比三、将工程优化整合,人性化处理四、代码一直调用失败问题4.1 免费试用资源五、工程源码下载👥 总结
本篇文章来学习一下怎样使用 功能。关于人脸识别,我们可以选择很多平台的SDK接入Unity来实现人脸识别的功能。比如、、、 等等。本文中的方法是基于百度AI开放平台实现的,后续有时间也会使用其他平台尝试一下效果如何。
文章部分文档链接如下:百度AI开放平台:https//ai.baidu.com/
C#文档:https//ai.baidu.com/ai-doc/FACE/Ck37c1ri0
SDK下载地址:https//ai.baidu.com/sdk#bfr
C# SDK 开源:https//github.com/Baidu-AIP/dotnet-sdk
控制台地址:https//console.bce.baidu.com/ai/?fromai=1#/ai/face/offline/index
1.1 前往 百度AI开放平台 登录
既然选择了使用 百度AI开放平台的SDK,那我们就需要去官网下载SDK啦!
首先我们需要前往 百度AI开放平台,要登录百度账。
如果之前有账则直接登录,没有的话点击去注册一个就好了,这里不多赘述。
1.2 前往 人脸与人体
然后点击 -> ->
点击立即使用会跳转到控制台界面,然后点击 公有云服务 -> 应用列表。
1.3 创建一个应用
在 公有云服务 中点击 应用列表。
若此时没有应用,则进行创建。
找不到的小伙伴可以直接点击该链接,看看能不能直达创建应用的网址:https//console.bce.baidu.com/ai/#/ai/face/app/create
点击完之后该应用就创建完毕了, 和 以及 要保存好,后面在Unity中也会用到!
1.3 下载人脸识别SDK资源
接下来在 百度AI开放平台 的首页点击
选择 点击下载
可能随着时间推移,官方的进入SDK下载的页面会发生改变。
如果改变了不跟我文中位置一致,大家可以在首页自己找找看,只要找到SDK下载的地方就行,一般不会太隐蔽。
也可以点击SDK下载地址直接转入:https//ai.baidu.com/sdk#bfr1.4 从SDK中取出我们会使用的文件
下载SDK后,解压到本地文件夹中。
之后打开 文件夹,其中 和 这两个dll文件,后边会放到Unity3d工程中使用。
1.5 人脸离线识别SDK申请
如果想使用 人脸离线识别 功能则需要单独去申请。本文教程暂时没有用到,不感兴趣的话可以跳过此内容。
点击
我这里选择了 ,最后打算使用一个Android设备进行测试。
大家可以根据自己的需求选择,操作步骤整体差异不大。
可以看到有一个 立即使用 和 技术文档 。
点击立即使用后会进入下一个页面,让我们填写一些信息 申请SDK。
那我们就简单填写一下就好了,填写完之后需要等一段时间审核,我这里第一次的时候等了大概十几分钟就申请好了。
2.1 新建一个Unity工程
新建一个Unity打开后 打开
改变 为 ,若本来就是则不需要修改。
2.2 导入 人脸识别 .dll文件
在下新建一个文件夹,注意不要拼错单词哦~
将上面讲到的两个文件和放入该文件夹。
然后新建一个测试场景和脚本,命名随意。
打开人脸识别的C#官方文档:https//ai.baidu.com/ai-doc/FACE/Ck37c1ri0
文档中的步骤挺详细,可以结合文章与文档共同参考 ~2.3 新建交互类
定义一个客户端,此时要用到之前创建的应用的 、 和
代码如下:2.4 人脸注册
接下来要进行人脸注册,简单意思就是我们要将几张某个人的照片传到人脸库中,用于下面的人脸识别时使用。
我们先注册几个人脸,官网教程中各个参数说明很清楚,想要了解更多内容也可以在官网仔细查看,我们一步一步来。
人脸注册 返回数据参数详情
人脸注册 返回示例
注册人脸代码如下:2.5 注册人脸 上传到 百度大脑人脸识别库
上面说的人脸注册 有两种方法可以实现,一是可以选择在云端手动创建组然后添加图片,二是可以通过URL方式在Unity中上传,下面都有介绍操作方式。
1.在控制台手动创建组并添加用户
手动创建方法很简单,直接点击新建组然后创建用户,将图片添加上即可!
2.使用脚本代码在Unity中上传人脸库
下面再来简单说一下在Unity中通过url上传的方法。
在Unity项目的Assets下 创建文件夹
然后在网上找几张同一个人的图片,用作人脸识别测试时候使用,将下载的图片放到我们创建的文件夹中。
代码如下:
@@需要换图
注册完后我们可以在百度大脑的控制台找到之前创建的应用的人脸识别库里看到上传的图片2.6 使用图片进行 人脸对比
上面我们已经将人脸注册到人脸库了,下面就来在Unity中使用一张新的图片来与人脸库中的进行人脸对比。
虽然说上去是进行人脸对比,实际上是使用的人脸搜索的API。
值得注意的是 使用该人脸搜索方法是从我们注册的人脸库中 检测与我们当前想要进行比较的人脸最相似的人脸,所以说我们最好是新建组之后,为想进行识别的人脸单独创建在一个userID会比较好管理!
可以在官网查看更多关于人脸搜索与人脸库管理详细参数:https//ai.baidu.com/ai-doc/FACE/Gk37c1uzc
我们这里使用的应该是 1N 人脸搜索,人脸对比其实和人脸搜索实现的功能效果差不多。
关于这俩的对比差异,官方也给出了解答,我们就不纠结这个了,这个直接拿来做测试使用就行!
后面感兴趣可以把官方给的样例全部使用测试一遍,看看到底哪个更好用一些 ~
接下来我们另外弄一张之前人脸库里没有的图片保存到FaceDetect文件夹下
编写脚本代码如下:代码中的groupid需要改成自己的人脸识别库中创建的的groupid
userid需要改成自己的人脸识别库中的userid
对比后会返回一组数据,其中我们只要看score的值,就可以看到人脸的相似度如何
如果score值超过80,就基本认定是同一个人。
检测结果如下:
这样我们基本就实现了一个简单的人脸识别功能,在注册完人脸库之后,就可以自己随便找一些人脸照片进行测试使用啦!
当然这样对使用者来说体验很差,需要一直去看返回的score值来判断人脸识别的结果。
下面就对该功能进行一个整合优化体验给大家做一个参考,更多想法可以自己改进体验哦!
简单说一下整合优化的思路。增加一个打开文件夹选择文件的功能,可以让我们手动选择照片进行对比增加一个检测结果相似度的UI显示,优化显示效果增加一个对比人脸的选项,可自定义多款人脸对比
搭建一个UI效果如下:
实际识别检测效果如下:
我们可以通过在人脸识别库中添加某个人的人脸照片,就可以实现在Unity中自定义某个人的人脸识别检测!4.1 免费试用资源
第一次使用的时候代码一直报错,问了客服才知道原来是免费资源没有导致的!!所以直接去资源吧!
免费资源地址:https//console.bce.baidu.com/ai/#/ai/face/overview/index
选择需要的资源点击。
后的资源可以在资源列表中查看!
问客服的地址如下:https//ticket.bce.baidu.com/#/ticket/list
有疑问直接创建工单提问即可。
虽然文章内容不少,但是整体流程很简单。
先建一个交互类,然后注册人脸,就进行人脸识别就可以了!
本文优化后最终效果核心脚本代码展示:
Windows简易版源码如下