0
点赞
收藏
分享

微信扫一扫

离线人脸识别(C#版本)-WebAPI离线集成与调用方法,附源代码


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​​

离线人脸识别(C#版本)-WebAPI离线集成与调用方法,附源代码_用户组

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)

离线人脸识别(C#版本)-WebAPI离线集成与调用方法,附源代码_用户组_02

删除人脸库 GROUP_DELETE

获取人脸库 GROUP_GETLIST

// GET: api/Group

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

/api/Group/GetGroupList

离线人脸识别(C#版本)-WebAPI离线集成与调用方法,附源代码_.net core_03

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

  • beckham
  • 离线人脸识别(C#版本)-WebAPI离线集成与调用方法,附源代码_人脸识别_04

  • test_group

离线人脸识别(C#版本)-WebAPI离线集成与调用方法,附源代码_用户组_05

增加用户

离线人脸识别(C#版本)-WebAPI离线集成与调用方法,附源代码_c#_07

更新用户

/// <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 = "")

离线人脸识别(C#版本)-WebAPI离线集成与调用方法,附源代码_离线_08

删除用户 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下面的图片

离线人脸识别(C#版本)-WebAPI离线集成与调用方法,附源代码_离线_09

离线人脸识别(C#版本)-WebAPI离线集成与调用方法,附源代码_用户组_10

人脸删除 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)

1.1.2 人脸搜索

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

FaceIndentify

1:N比较,传入图片文件路径

离线人脸识别(C#版本)-WebAPI离线集成与调用方法,附源代码_c#_12

离线人脸识别(C#版本)-WebAPI离线集成与调用方法,附源代码_用户组_13

FaceIndentifyWithAll

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

离线人脸识别(C#版本)-WebAPI离线集成与调用方法,附源代码_人脸识别_14

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

离线人脸识别(C#版本)-WebAPI离线集成与调用方法,附源代码_离线_15

** PERSON_VERIFY 人脸验证**

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

注意事项

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

总结

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


举报

相关推荐

0 条评论