离线人脸识别(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

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
/// /// 创建用户组/// /// 用户组id,标识一组用户(由数字、字母、下划线组成),长度限制128B/// [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用户组中

更新用户
/// /// 人脸更新(传入图片文件路径)/// /// /// /// /// ///
public string UserUpdate(string user_id, string group_id, string file_name,string user_info = "")

删除用户 USER_DELETE
获取用户 USER_GET
/// /// get user info/// /// user id/// group id/// // GET: api/User/5[Route("GetUserInfo")][HttpGet]public string GetUserInfo(string userid, string groupid)
获取beckham下面的图片


人脸删除 FACE_DELETE
获取人脸组中的人脸
/// /// get user list info/// /// /// // 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 人脸对比
对比两张人脸相似度,返回评分
/// /// 1:1比较 传入图片文件路径/// /// /// /// 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,谢谢
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!


