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