百度离线人脸识别SDK-WebAPI离线集成与调用方法,附源代码

24 篇文章 0 订阅
3 篇文章 0 订阅
本文档介绍了将Baidu人脸识别离线SDK从C#移植到Web平台的过程,支持.NETCore和ASP.NET。内容包括人脸库管理、1:1和1:N对比、人脸注册与删除等功能,并提供了API接口示例。同时强调了离线SDK的使用注意事项,如需要在Release模式下运行并拷贝相关文件。
摘要由CSDN通过智能技术生成

Baidu人脸识别离线SDK

本文是在Baidu离线SDK版本上做的二次开发与集成,将原先的C#版本功能移植到Web平台,目前支持.NET Core和ASP.NET 和原生控制台的三个版本,同理可以集成进WInform等平台。

如果有用欢迎大家给个小星星,谢谢
源码连接

关于本SDK

在寻找可用的SDK这个过程中,在网上做了很多的尝试和搜罗,排除价格和效果等因素,
参考上一篇文章《人脸识别应用初探-微软人脸识别在线SDK使用》,由于微软在国内没有部署离线识别模型,因此就是做了web api调用

官方离线SDK文档地址:https://ai.baidu.com/ai-doc/FACE/4k37c1n7e

baidu离线sdk

api功能接口

1.百度在线SDK

通过官方api获取图片对比数据(大家都了解做过了,因此不做对比)
C#版本的接口调用程序 https://github.com/Baidu-AIP/dotnet-sdk

2.百度离线SDK

官方支持文档 https://ai.baidu.com/ai-doc/FACE/Ck37c1ri0
离线SDK,能够实现图片1:1对比,1:N对比,功能较为齐全

对比1:1的图片,显示匹配程度80%,因为需要在使用过程中添加一个阈值设定。可以与后台集成做人脸离线检测。传递图片的base64文件,或者直接传jpg等格式。但是内部数据封装未暴露,集成需要深度了解。

自助管理人脸,人脸库,用户组,创建数据库结构

人脸注册管理 FaceManagement

** 1:N对比**

https://ai.baidu.com/ai-doc/FACE/xk37c1jn6

1.1后台开发(人脸检测)

FaceManagement

1.1.1人脸库管理

人脸搜索的前提

**创建人脸库 GROUP_ADD **

/api/Group/Add

 /// <summary>
 /// 创建用户组
 /// </summary>
 /// <param name="value">用户组id,标识一组用户(由数字、字母、下划线组成),长度限制128B</param>
  /// <returns></returns>
  [HttpPost]
  [Route("Add")]
public string Add(string value)

在这里插入图片描述

删除人脸库 GROUP_DELETE

获取人脸库 GROUP_GETLIST

// GET: api/Group

 [Route("GetGroupList")]
 [HttpGet]
public string GetGroupList()

/api/Group/GetGroupList

在这里插入图片描述

获取人脸-用户组列表查询

  • beckham
    在这里插入图片描述

  • test_group

在这里插入图片描述

增加用户

/api/Face/Add
在这里插入图片描述
将beckham加入stars用户组中

在这里插入图片描述

更新用户

  /// <summary>
  /// 人脸更新(传入图片文件路径)
  /// </summary>
  /// <param name="user_id"></param>
  /// <param name="group_id"></param>
  /// <param name="file_name"></param>
  /// <param name="user_info"></param>
  /// <returns></returns>
public string UserUpdate(string user_id, string group_id, string file_name,string user_info = "")

在这里插入图片描述

删除用户 USER_DELETE

获取用户 USER_GET

  /// <summary>
  /// get user info
  /// </summary>
  /// <param name="userid">user id</param>
  /// <param name="groupid">group id</param>
  /// <returns></returns>
  // GET: api/User/5
  [Route("GetUserInfo")]
  [HttpGet]
  public string GetUserInfo(string userid, string groupid)

获取beckham下面的图片

在这里插入图片描述

在这里插入图片描述

人脸删除 FACE_DELETE

获取人脸组中的人脸

  /// <summary>
  /// get user list info
  /// </summary>
  /// <param name="groupid"></param>
  /// <returns></returns>
  // GET: api/User
  [Route("GetUserList")]
  [HttpGet]
public IEnumerable<string> GetUserList(string groupid)

/api/User/GetUserList
在这里插入图片描述

1.1.2 人脸搜索

在一个指定人脸库中查找相似的人脸

FaceIndentify

1:N比较,传入图片文件路径
在这里插入图片描述

在这里插入图片描述

FaceIndentifyWithAll

1:N比较,传入图片文件路径和已加载的内存中整个库比较
在这里插入图片描述

MULTI_SEARCH

1.1.3 人脸对比

对比两张人脸相似度,返回评分

/// <summary>
  /// 1:1比较 传入图片文件路径
  /// </summary>
  /// <param name="file1"></param>
  /// <param name="file2"></param>
  /// <returns></returns>
  public string FaceMatch(string file1,string file2)

/api/Face/FaceMatch

在这里插入图片描述

** PERSON_VERIFY 人脸验证**

FaceCompare
包含了人脸图片和视频的对比方法

注意事项

离线SDK。只能在release模式下运行,需要将test_face bin 下面的文件拷贝到对应项目的release 文件夹下(x86 x64),不然会无法启动服务。如果有问题欢迎交流。

总结

主要是对百度C#离线SDK做了二次封装,其他版本也是同样的方式,源码连接 https://github.com/cugzhaolei/FPEng
如果有帮助欢迎fork和star,谢谢

本DEMO参考了https://download.csdn.net/download/abill425/10554049?tdsourcetag=s_pctim_aiomsg 资料; 非常感谢,如有侵权,请与本人联系; 与参考的资料相比,不同的是:参考资料是百度人脸SDK离线版本V1.0版本的; 而本DEMO是百度人脸SDK离线版本V1.1版本的; 本demo是x64的,封装成可供c#调用的dll是BaiduFaceDll.dll 使用步骤: 1.到百度AI开放平台 https://ai.baidu.com ,下载百度人脸离线SDK,(注意版本V1.1.0,修改日期:2018.08.31) 2.下载后,把sdk包里那个443 MB的face-resource目录,复制到本demo的BaiduFaceDll\x64目录下(就是BaiduFaceDll.dll所在目录的上级目录) 3.打开BaiduFaceDll\x64\\Release\LicenseTool.exe,输入试用序列号(在百度AI开放平台取得,有效期30天),完成激活。注意,激活时需要联网。或者将已有的license.ini和license.key文件拷贝至此目录,注意注册序列号是与硬件相关的; 4.将本demo的BaiduFaceDll\x64\Release路径,加到系统的path变量中。 5.运行本demo的BaiduFaceDll\x64\Release目录下的WindowsFormsApplication1.exe,可以测试封装的dll,输入两张图片;然后单击:图像对比,会显示对比结果; 在C#中的函数注册: //请将"BaiduFaceDll.dll"修改为实际路径,如@"d:\BaiduFaceDll\x64\Release\BaiduFaceDll.dll", 或者直接把该实际路径加到系统的path变量中。 [DllImport("BaiduFaceDll.dll")] public static extern void Init();//初始化 [DllImport("BaiduFaceDll.dll")] public static extern void UnInit();//销毁 [DllImport("BaiduFaceDll.dll")] public extern static int Track(string imgstr, ref StringBuilder res);//人脸检测,imgstr为图片的base64编码字符串 [DllImport("BaiduFaceDll.dll")] public static extern int User_Add(string user_id, string imgstr);//添加用户,imgstr为图片的base64编码字符串 [DllImport("BaiduFaceDll.dll")] public static extern int User_Delete(string user_id);//删除用户 [DllImport("BaiduFaceDll.dll")] public extern static void Identify(string imgstr, ref StringBuilder res);//人脸识别,imgstr为图片的base64编码字符串 [DllImport("BaiduFaceDll.dll")] public extern static void Match(string image1, int img_type1, string image2, int img_type2, ref StringBuilder res);//人脸1:1对比编码字符串 sdk调用流程: 初始化 -> 图片对比 -> 销毁 具体详细的windows-sdk使用说明,参见 http://ai.baidu.com/docs#/Face-Offline-SDK-Windows/top 源码: 本demo的BaiduFaceDll\BaiduFaceDll目录,是本封装dll的c++源码。VS版本为2015,Framework版本为4.0。 本DEMO只是封装了几个示例,其余封装,参考样式自行编写;
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值