百度AI开放平台是百度推出的一个人工智能服务平台,该平台提供了很多当下热门技术的解决方案,如人脸识别,语音识别,语音智能等。其中人脸识别的SDK支持很多语言,包括Java,PHP,Python,C#,Node.js,和iOS等,使用C#进行脚本语言开发的自然也可以很方便的使用这些SKD。
1、下载人脸识别SDK
首先我们需要下载最新版的SDK,打开人脸识别SDK下载页面,选择C# SDK下载:
下载解压后得到一个叫aip-csharp-sdk-3.0.0的文件夹,其中AipSdk.dll提供了我们进行人脸识别开发需要的API,AipSdk.XML是对DLL的注释。thirdparty中包含了sdk的第三方依赖,Demo中是一些使用示例,可以进行参考。
2、导入SDK
由于SDK已经被打包成DLL文件,所以我们导入使用起来也十分方便,只需将解压后的文件夹直接导入到工程即可。当然为了方便管理我们可以将SDK导入到Plugins文件夹中,需要注意的是一定要讲第三方依赖一起导入不然会报错。
导入后可能会有如下错误:
这是由于我们在Player设置中选择的Api Compatibility Level是.Net 2.0 Subset,即.Net 2.0的子集,这里需要改成.Net 2.0。选择Edit->Project Settings->Player,在Other Settings中将Api Compatibility Level更改为.Net 2.0:
3、创建应用
下面将以人脸检测为示例简单介绍一下SDK的使用。
使用SDK前我们需要先注册一个百度账号,然后登陆百度AI开放平台,创建一个人脸识别应用。
选择控制台并登录:
然后点击创建应用,输入应用名,应用类型,接口选择(默认创建人脸识别的应用),和应用描述,点击立即创建,创建完毕后点击查看应用详情查看API Key和Secret Key(点击显示查看)
之后可以选择监控报表来查看应用接口调用情况:
4、接口调用
百度AI开放平台提供了人脸识别C#版的详细技术文档,下面以实例来进行简单的调用说明。
使用人脸检测功能我们添加Baidu.Aip.Face命名空间,定义一个Face变量用于调用API:
实例化Face变量时需要填写我们创建的应用的API Key和Secret Key,可以在应用详情中查看。
进行人脸检测时调用FaceDetect方法:
该方法需要传入两个参数,被检测的图片和返回的参数配置,其中可选参数options可以使用默认值null,这时只会返回人脸的位置等基本信息。返回值是一个JObject类型,此类型是第三方依赖中提供的一个json类型。详细调用方法为:
options中的face_fields为请求的参数,类型是string,多个项以逗号分开,不能加在逗号和后一项之间加空格,否则无效。详细参数如下图
方法返回的JObject包含一个或多个人脸的信息,也可以如下调用:
此时将只会返回最基本的信息,包括日志id,人脸数目,人脸位置,人脸置信度,竖直方向转角,三维左右旋转角,三维俯仰角,平面旋转角。
所有返回值见下图:
这是网页端身份安全验证失败导致的,我们需要在程序运行时手动添加安全证书,在Awake方法中加入:
我们可以用Text控件来查看具体的返回值:
TestFace.cs:
运行结果:
1、下载人脸识别SDK
首先我们需要下载最新版的SDK,打开人脸识别SDK下载页面,选择C# SDK下载:
下载解压后得到一个叫aip-csharp-sdk-3.0.0的文件夹,其中AipSdk.dll提供了我们进行人脸识别开发需要的API,AipSdk.XML是对DLL的注释。thirdparty中包含了sdk的第三方依赖,Demo中是一些使用示例,可以进行参考。
2、导入SDK
由于SDK已经被打包成DLL文件,所以我们导入使用起来也十分方便,只需将解压后的文件夹直接导入到工程即可。当然为了方便管理我们可以将SDK导入到Plugins文件夹中,需要注意的是一定要讲第三方依赖一起导入不然会报错。
导入后可能会有如下错误:
这是由于我们在Player设置中选择的Api Compatibility Level是.Net 2.0 Subset,即.Net 2.0的子集,这里需要改成.Net 2.0。选择Edit->Project Settings->Player,在Other Settings中将Api Compatibility Level更改为.Net 2.0:
3、创建应用
下面将以人脸检测为示例简单介绍一下SDK的使用。
使用SDK前我们需要先注册一个百度账号,然后登陆百度AI开放平台,创建一个人脸识别应用。
选择控制台并登录:
然后点击创建应用,输入应用名,应用类型,接口选择(默认创建人脸识别的应用),和应用描述,点击立即创建,创建完毕后点击查看应用详情查看API Key和Secret Key(点击显示查看)
之后可以选择监控报表来查看应用接口调用情况:
4、接口调用
百度AI开放平台提供了人脸识别C#版的详细技术文档,下面以实例来进行简单的调用说明。
使用人脸检测功能我们添加Baidu.Aip.Face命名空间,定义一个Face变量用于调用API:
[C#]
纯文本查看
复制代码
1
2
3
4
|
using
Baidu.Aip.Face;
private
Face client;
client =
new
Face(
"API Key"
,
"Secret Key"
)
|
实例化Face变量时需要填写我们创建的应用的API Key和Secret Key,可以在应用详情中查看。
进行人脸检测时调用FaceDetect方法:
[C#]
纯文本查看
复制代码
|
public
JObject FaceDetect(
byte
[] image, Dictionary<
string
,
object
> options =
null
);
|
该方法需要传入两个参数,被检测的图片和返回的参数配置,其中可选参数options可以使用默认值null,这时只会返回人脸的位置等基本信息。返回值是一个JObject类型,此类型是第三方依赖中提供的一个json类型。详细调用方法为:
[C#]
纯文本查看
复制代码
1
2
3
4
5
|
byte
[] image = File.ReadAllBytes(Application.streamingAssetsPath +
"/1.jpg"
);
Dictionary<
string
,
object
> options =
new
Dictionary<
string
,
object
>()
{
{
"face_fields"
,
"beauty,age,expression,gender"
}
};
client.FaceDetect(image, options);
|
options中的face_fields为请求的参数,类型是string,多个项以逗号分开,不能加在逗号和后一项之间加空格,否则无效。详细参数如下图
方法返回的JObject包含一个或多个人脸的信息,也可以如下调用:
[C#]
纯文本查看
复制代码
|
client.FaceDetect(image);
|
此时将只会返回最基本的信息,包括日志id,人脸数目,人脸位置,人脸置信度,竖直方向转角,三维左右旋转角,三维俯仰角,平面旋转角。
所有返回值见下图:
这是网页端身份安全验证失败导致的,我们需要在程序运行时手动添加安全证书,在Awake方法中加入:
[C#]
纯文本查看
复制代码
1
2
3
4
5
6
|
System.Net.ServicePointManager.ServerCertificateValidationCallback +=
delegate
(
object
sender, System.Security.Cryptography.X509Certificates.X509Certificate certificate,
System.Security.Cryptography.X509Certificates.X509Chain chain,
System.Net.Security.SslPolicyErrors sslPolicyErrors)
{
return
true
;
// **** Always accept
};
|
我们可以用Text控件来查看具体的返回值:
TestFace.cs:
[C#]
纯文本查看
复制代码
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
|
using
System.Collections.Generic;
using
System.IO;
using
Baidu.Aip.Face;
using
UnityEngine;
using
UnityEngine.UI;
public
class
TestFace : MonoBehaviour
{
public
Text debugInfo;
private
Face client;
private
byte
[] image;
private
Dictionary<
string
,
object
> options;
private
void
Awake()
{
System.Net.ServicePointManager.ServerCertificateValidationCallback +=
delegate
(
object
sender, System.Security.Cryptography.X509Certificates.X509Certificate certificate,
System.Security.Cryptography.X509Certificates.X509Chain chain,
System.Net.Security.SslPolicyErrors sslPolicyErrors)
{
return
true
;
// **** Always accept
};
client =
new
Face(
"API Key"
,
"Secret Key"
);
image = File.ReadAllBytes(Application.streamingAssetsPath +
"/1.jpg"
);
options =
new
Dictionary<
string
,
object
>()
{
{
"face_fields"
,
"beauty,age,expression,gender"
}
};
}
public
void
StartDetect()
{
var result = client.FaceDetect(image);
//, options);
debugInfo.text = result.ToString();
}
}
|
运行结果: