虹软人脸识别—版本升级接口修改说明(C#)
自虹软发布了免费、离线版本人脸识别SDK,在Github上陆续分享了各个版本对应的 C# Demo。因为公司项目一直在使用虹软的SDK,因此每当虹软官网有新版本发布,我都会进行了解,并结合Demo进行功能验证。在虹软官方群里及论坛上,看到有朋友反馈升级SDK后出现如下问题:
1. 替换SDK文件有时接口会返回2
2. 内存溢出、程序crash
3. 检测结果混乱
我在版本升级的过程中也遇到了这类问题,下面记录了版本升级过程中需要做的修改,希望能对一些朋友有所帮助。
问题原因:从ArcFace 2.0到3.1版本,虹软SDK不断优化算法功能,在优化的过程中,对SDK的部分接口也进行了优化,添加了一些可变参数,**C#代码在升级SDK时未进行同步修改**。
处理方法:
* 如果仅用于体验效果,保持SDK的版本与Demo的版本一致即可
* 如果之前使用旧版本开发且有新版本升级需求的,需要对接口的传参列表进行修改
**Github的Demo**:
* [ArcFace 2.1 Demo](https://github.com/SkyStonePan/ArcfaceDemo_CSharp)
* [ArcFace 2.2 Demo](https://github.com/SkyStonePan/ArcfaceDemo_CSharp_2.2)
* [ArcFace 3.0 Demo](https://github.com/SkyStonePan/ArcfaceDemo_CSharp_3.0)
* [ArcFace 3.1 Demo](https://github.com/SkyStonePan/ArcfaceDemo_CSharp_3.1)
其中,SDK 2.1版本到2.2版本,新增了IR活体检测接口,只需参考Demo即可,此处不作赘述。然后我们依次说下,2.2版本的Demo如何更改使用3.0版本的SDK、3.0版本的Demo如何更改使用3.1版本的SDK,以及免费版本SDK如何替换对应增值版本的SDK。
一、ArcFace 2.2 Demo 使用ArcFace 3.0 SDK
1. SDK中检测模式参数由结构体变更为枚举类型,为保证一致性,建议在原**Demo2.2**版本中,更改*ArcSoftFace\SDKModels\DetectionMode.cs*,改为如下:
C# /// <summary> /// 检测模式 /// </summary> public enum DetectionMode : uint { /// <summary> /// Video模式,一般用于多帧连续检测 /// </summary> ASF\_DETECT\_MODE_VIDEO = 0x00000000, /// <summary> /// Image模式,一般用于静态图的单次检测 /// </summary> ASF\_DETECT\_MODE_IMAGE = 0xFFFFFFFF }
同时将ArcSoftFace\FaceForm.cs中的**Line:166**和**Line:188**分别改为:
C# //Line166 uint detectMode = (uint)DetectionMode.ASF\_DETECT\_MODE_IMAGE; //Line188 uint detectModeVideo = (uint)DetectionMode.ASF\_DETECT\_MODE_VIDEO;
3. SDK中的人脸检测接口ASFDetectFaces接口新增可选参数**ASF_DetectModel**,为保证接口调用正常,必须更改*ArcSoftFace\SDKUtil\ASFFunctions.cs*中的**Line:50**,改为如下:
C# public static extern int ASFDetectFaces(IntPtr pEngine, int width, int height, int format, IntPtr imgData, IntPtr detectedFaces, int ASF_DetectModel=0x1);
4. SDK中的特征比对接口ASFFaceFeatureCompare接口新增**ASF_CompareModel**参数,可选参数值如下:
- **ASF_LIFE_PHOTO**:用于生活照之间的特征比对,该项为默认项;
- **ASF_ID_PHOTO**:用于证件照或证件照和生活照之间的特征比对。
为保证接口匹配,先在*ArcSoftFace\SDKModels*中增加新建枚举,名为**ASF_CompareModel.cs**,代码如下:
C# /// <summary> /// 人脸比对可选的模型 /// </summary> public enum ASF_CompareModel { /// <summary> /// 用于生活照之间的特征比对,推荐阈值0.80 /// </summary> ASF\_LIFE\_PHOTO = 0x1, /// <summary> /// 用于证件照或生活照与证件照之间的特征比对,推荐阈值0.82 /// </summary> ASF\_ID\_PHOTO = 0x2 }
接着更改\ArcSoftFace\SDKUtil\ASFFunctions.cs中**Line:89**,新增可选参数,代码如下:
C# public static extern int ASFFaceFeatureCompare(IntPtr pEngine, IntPtr faceFeature1, IntPtr faceFeature2, ref float similarity, ASF\_CompareModel compareModel = ASF\_CompareModel.ASF\_LIFE\_PHOTO);
5. 此版本对人脸特征模型进行了升级,SDK 2.* 版本存储的人脸特征需要重新提取。
6. 此外还有新增功能接口,具体新增内容详见,接口调用详见[ArcFaceDemoV3.0](https://github.com/SkyStonePan/ArcfaceDemo_CSharp_3.0)代码。
二、ArcFace 3.0 Demo 使用 ArcFace 3.1 SDK
1. SDK中的**ASFFaceFeatureExtract**接口新增参数**MInt32 threadNum = 1**,为保证接口调用正常,必须更改\ArcFaceSDKDemo\ArcFaceSDK\Utils\ ASFFunctions.cs中的**Line:89**,代码如下:
C# public static extern int ASFFaceFeatureExtract(IntPtr pEngine, int width, int height, int format, IntPtr imgData, IntPtr faceInfo, IntPtr faceFeature, int threadNum = 1);
2. SDK中的**ASFFaceFeatureExtractEx**接口新增参数**MInt32 threadNum = 1**,必须更改 *ArcFaceSDKDemo\ArcFaceSDK\Utils\ ASFFunctions.cs*中的**Line:240**,代码如下:
C# public static extern int ASFFaceFeatureExtractEx(IntPtr hEngine, IntPtr imgData, IntPtr faceInfo, IntPtr feature, int threadNum = 1);
3. 需删除 _\ArcFaceSDKDemo\ArcFaceSDK\Utils\ ASFFunctions.cs_中老的激活接口**ASFActivation**
4. 此外还有新增功能接口,具体新增内容详见ArcFaceSDK说明文档,接口调用详见[ArcFaceDemoV3.1](https://github.com/SkyStonePan/ArcfaceDemo_CSharp_3.1)代码。
三、基础版本SDK替换为对应的增值版本(以3.0Demo为例)
1. 在*ArcFaceSDKDemo\ArcFaceSDK\Utils\ASFFunctions.cs*中的在线激活接口ASFOnlineActivation增加**activeKey**参数,代码如下:
C# public static extern int ASFOnlineActivation(string appId, string sdkKey,string activeKey);
2. 在*ArcFaceSDKDemo\ArcFaceSDK\Utils\ASFFunctions.cs*中的在线激活接口ASFActivation接口增加**activeKey**参数,代码如下:
C# public static extern int ASFActivation(string appId, string sdkKey,string activeKey);
3. 在*ArcFaceSDKDemo\ArcFaceSDK\Utils\ASFFunctions.cs*中添加离线激活接口ASFOfflineActivation,代码如下:
C# \[DllImport(Dll_PATH, CallingConvention = CallingConvention.Cdecl)\] public static extern int ASFOfflineActivation(IntPtr filePath);
以上,仅对已有接口的修改进行了说明,新增接口的对接,可以参考对应版本的Demo。
相关产品大家可以到虹软视觉开放平台进一步了解
虹软人脸识别—版本升级接口修改说明(C#)的更多相关文章
- 虹软人脸识别 - faceId及IR活体检测的更新介绍
虹软人脸识别 - faceId及IR活体检测的介绍 前几天虹软推出了 Android ArcFace 2.2版本的SDK,相比于2.1版本,2.2版本中的变化如下: VIDEO模式新增faceId(类 ...
- 虹软人脸识别 - faceId及IR活体检测的介绍
虹软人脸识别 - faceId及IR活体检测的介绍 前几天虹软推出了 Android ArcFace 2.2版本的SDK,相比于2.1版本,2.2版本中的变化如下: VIDEO模式新增faceId(类 ...
- asp.net 虹软 人脸识别 实现刷脸住宿、刷脸签到、刷脸进入等
先看看效果图,我把demo改成自动运行了,暂时借用别人的图片: 最左侧的大图为选择上传的, 中间的小图是大图的脸, 右侧的大图是人脸文件夹中已经存在的,并且相似度较高的一张脸,也就是比对的结果. 先记 ...
- 记C# 调用虹软人脸识别 那些坑
上一个东家是从事安防行业的,致力于人工智能领域,有自主人脸识别.步态识别的算法.C++同事比较称职有什么问题都可以第一时间反馈,并得到合理的处理,封装的DLL 是基于更高性能的GPU算法,可支持更多线 ...
- 虹软人脸识别SDK在网络摄像头中的实际应用
目前在人脸识别领域中,网络摄像头的使用很普遍,但接入网络摄像头和人脸识别SDK有一定门槛,在此篇中介绍过虹软人脸识别SDK的接入流程,本文着重介绍网络摄像头获取视频流并处理的流程(红色框内),以下内容 ...
- 虹软人脸识别 - Android Camera实时人脸追踪画框适配
在使用虹软人脸识别Android SDK的过程中 ,预览时一般都需要绘制人脸框,但是和PC平台相机应用不同,在Android平台相机进行应用开发还需要考虑前后置相机切换.设备横竖屏切换等情况,因此在人 ...
- 虹软人脸识别SDK接入Milvus实现海量人脸快速检索
一.背景 人脸识别是近年来最热门的计算机视觉领域的应用之一,而且现在已经出现了非常多的人脸识别算法,如:DeepID.FaceNet.DeepFace等等.人脸识别被广泛应用于景区.客运.酒店.办公室 ...
- 基于虹软人脸识别,实现RTMP直播推流追踪视频中所有人脸信息(C#)
前言 大家应该都知道几个很常见的例子,比如在张学友的演唱会,在安检通道检票时,通过人像识别系统成功识别捉了好多在逃人员,被称为逃犯克星:人行横道不遵守交通规则闯红灯的路人被人脸识别系统抓拍放在大屏上以 ...
- 虹软人脸识别——官方 Qt Demo 移植到 Linux
一.前言 最近需要在 Linux 平台下开发一个人脸识别相关的应用,用到了虹软的人脸识别 SDK.之前在 Windows 平台用过,感觉不错,SDK 里面还带了 Demo 可以快速看到效果.打开 Li ...
随机推荐
- Spring IoC @Autowired 注解详解
前言 本系列全部基于 Spring 5.2.2.BUILD-SNAPSHOT 版本.因为 Spring 整个体系太过于庞大,所以只会进行关键部分的源码解析. 我们平时使用 Spring 时,想要 依赖 ...
- 一个简单的webAPI调用
1.新建一个ASP.NET Web应用程序. 2.选择空模板,WebAPI. 3.在Models文件夹添加Product类. 4.添加空控制器ProductController. 5.ProductC ...
- day41 几个琐碎知识点
目录 一.死锁与递归锁(了解) 1 死锁 2 递归锁 二.信息量 三.Event事件 四.三种优先级数据操作 1 队列 2 堆栈 3 自定义优先级 五.进程池和线程池 基本使用 六.协程 七.geve ...
- 爬虫06 /scrapy框架
爬虫06 /scrapy框架 目录 爬虫06 /scrapy框架 1. scrapy概述/安装 2. 基本使用 1. 创建工程 2. 数据分析 3. 持久化存储 3. 全栈数据的爬取 4. 五大核心组 ...
- Nginx to start, restart, shutdown and upgrade
1.start cd usr/local/nginx/sbin ./nginx 2.restart kill -HUP PID #主进程号或进程号文件路径 #或者使用 cd /usr/local/ng ...
- unity第一人称如何设置
关系图 红色菱形:脚本 白色矩形:组件 移动代码 //移动代码 public CharacterController controller;//角色控制器 public float speed = 1 ...
- git的工作区和暂存区
目录 备注: 知识点 工作区(Working Directory) 版本库(Repository) 备注: 本文参考于廖雪峰老师的博客Git教程.依照其博客进行学习和记录,感谢其无私分享,也欢迎各位查 ...
- MySQL主从复制--单库复制搭建
背景说明 负责公司MySQL数仓的搭建和维护,因为前端业务涉及到一次业务表的分库,导致整个平台新增加一台MySQL服务器,需要将该库数据通过主从复制同步至原有的数仓实例. 数据流向说明如下图: 业务环 ...
- 面试京东T5,被按在地上摩擦,鬼知道我经历了什么?
一转眼间,光阴飞快,各大企业都开始招人,各大学校也开始准备陆续入学. 金三银四已经快结束了,有的朋友发来喜报,面试上了一线大厂,也有没有面试上的朋友跑来跟我说,被虐惨了,几天给大家分享下我一个面试京东 ...
- 转:Oracle 数据泵详解
一.EXPDP和IMPDP使用说明 Oracle Database 10g引入了最新的数据泵(Data Dump)技术,数据泵导出导入(EXPDP和IMPDP)的作用 1)实现逻辑备份和逻辑恢复. 2 ...