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,谢谢

Logo

瓜分20万奖金 获得内推名额 丰厚实物奖励 易参与易上手

更多推荐