美文网首页
无标题文章

无标题文章

作者: 萧非子 | 来源:发表于2017-12-04 14:41 被阅读10次

    百度AI开放平台是百度推出的一个人工智能服务平台,该平台提供了很多当下热门技术的解决方案,如人脸识别,语音识别,语音智能等。其中人脸识别的SDK支持很多语言,包括Java,PHP,Python,C#,Node.js,和iOS等,使用C#进行脚本语言开发的自然也可以很方便的使用这些SKD。

    1、下载人脸识别SDK

    首先我们需要下载最新版的SDK,打开人脸识别SDK下载页面,选择C# SDK下载:

    [图片上传中...(image-83324b-1512369713126-13)]

    下载解压后得到一个叫aip-csharp-sdk-3.0.0的文件夹,其中AipSdk.dll提供了我们进行人脸识别开发需要的API,AipSdk.XML是对DLL的注释。thirdparty中包含了sdk的第三方依赖,Demo中是一些使用示例,可以进行参考。

    [图片上传中...(image-15a8eb-1512369713126-12)]

    2、导入SDK

    由于SDK已经被打包成DLL文件,所以我们导入使用起来也十分方便,只需将解压后的文件夹直接导入到工程即可。当然为了方便管理我们可以将SDK导入到Plugins文件夹中,需要注意的是一定要讲第三方依赖一起导入不然会报错。

    [图片上传中...(image-70ed3a-1512369713126-11)]

    导入后可能会有如下错误:

    [图片上传中...(image-8f9c72-1512369713126-10)]

    这是由于我们在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:

    [图片上传中...(image-82238e-1512369713126-9)]

    3、创建应用

    下面将以人脸检测为示例简单介绍一下SDK的使用。

    使用SDK前我们需要先注册一个百度账号,然后登陆百度AI开放平台,创建一个人脸识别应用。

    选择控制台并登录:

    [图片上传中...(image-24c8ef-1512369713126-8)]

    然后点击创建应用,输入应用名,应用类型,接口选择(默认创建人脸识别的应用),和应用描述,点击立即创建,创建完毕后点击查看应用详情查看API Key和Secret Key(点击显示查看)

    [图片上传中...(image-1a424a-1512369713126-7)]

    [图片上传中...(image-c5136e-1512369713126-6)]

    [图片上传中...(image-2d8a36-1512369713126-5)]

    之后可以选择监控报表来查看应用接口调用情况:

    [图片上传中...(image-972bce-1512369713126-4)]

    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,多个项以逗号分开,不能加在逗号和后一项之间加空格,否则无效。详细参数如下图

    [图片上传中...(image-3d7240-1512369713125-3)]

    方法返回的JObject包含一个或多个人脸的信息,也可以如下调用:

    [C#]

    纯文本查看

    复制代码

    ?

    | |

    client.FaceDetect(image);

    |

    此时将只会返回最基本的信息,包括日志id,人脸数目,人脸位置,人脸置信度,竖直方向转角,三维左右旋转角,三维俯仰角,平面旋转角。

    所有返回值见下图:

    [图片上传中...(image-5b08b3-1512369713125-0)]

    运行时可能会报错:

    [图片上传中...(image-c83ec8-1512369713125-2)]

    这是网页端身份安全验证失败导致的,我们需要在程序运行时手动添加安全证书,在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();

    }

    }

    |

    运行结果:

    [图片上传中...(image-aa1222-1512369713125-1)]

    相关文章

      网友评论

          本文标题:无标题文章

          本文链接:https://www.haomeiwen.com/subject/tmkxixtx.html