虹软最新版 python 接口 完整版

当前开源的人脸检测模型,识别很多,很多小伙伴也踩过不少坑。相信不少使用过dlib和facenet人脸识别的小伙伴都有这样的疑惑,为什么论文里高达99.8以上的准确率,自己实际使用下来的准确率却并不好,甚至用来落实到百人以内的人脸识别,都经常出现误识别现象,造成这样的现象最主要的原因来自于训练人脸识别模型的样本和国内人脸有差距。因此,这些看似准确率很高的模型,直接拿来做项目使用是不行的,测试两种模型在使用几百人的考勤图片上的表现,准确率上dlib和facenet 都很不理想。

综合比较,发现使用虹软的人脸识别接口是目前开源,在国内人脸识别准确度上最好的选择。

遗憾的是当前虹软暂时没有提供python 接口代码,目前网上也有部分使用python调用虹软接口的案例,但是类似文章千篇一律,基本都是同一个代码,反复转载,也并没有能一个完整调用虹软全部功能的python接口,函数名称也随意定义并不好记,使用pycharm 开发也没有类函数成员代码编写提示,代码部分不合理的地方也重复出现… 实在是不能忍受当前已发布 的python api 接口参差不齐的现象,为此,特意用了几天时间将虹软当前版本的全部功能写出一个完整好用的python api接口。

出发点

本质上python接口是使用 ctypes 调用 虹软的动态链接库,需要去虹软官网 去选择 C/C++ 版本SDK 来下载依赖文件。为了在代码使用上 和 虹软 提供的 C/C++ 版本演示代码基本一致,此 python 接口 的函数名和虹软的函数名是一样的,并且demo.py的结构 基本就是 C/C++ 版本演示代码的 python 翻译版。

代码地址:ArcFace-python
如果代码对你有帮助,给个star 吧!

优化点

1.重写了所有结构体对象类的打印属性 和 成员变量,方便 python 可以直接print 对象查看虹软返回的结果信息,以及 pycharm 编写代码时可以提供 提示信息。
2.在此之前其他博客中的 python 接口 在给虹软引擎传入图像时都使用了这种方式:

frame_byte=bytes(frame.data)

frame_byte_p=cast(framebyte,c_ubyte_p)

但是以上可以改为: frame.ctypes.data_as(POINTER(c_ubyte))

这样可以减少 numpy 图像转换为字节流这一步的消耗

注意

1.当前接口需要下载虹软最新的(2.2)C/C++版本 SDK。

2.虹软的C/C++接口支持很多图像格式传入,但是 python 使用opencv 做图像处理时基本都是 ASVL_PAF_RGB24_B8G8R8 这种格式(就是cv2.imread() 得到的numpy图像),并且默认使用该接口时 都是使用 这种图片格式。因此此接口 依赖 opencv,如果没有可以直接pip安装。

3.虹软的配个函数都会返回一盒状态码,要做好状态码的判断工作,确保使用正确,如果状态码 返回值不是 MOK(值为0),说明函数执行出错,可以对照 doc文档中的错误码解释对照。

4.第一次运行代码需要联网,因为会做激活操作,首次运行激活成功后会得到一个ArcFace64.dat文件,当有此文件以后,可以不用执行激活代码。

5.涉及到传入图片的函数操作,要确保送入的图片宽度为 4 的整数倍,如果不是则要提前做好裁剪,或者做resize操作。

6.当前默认为图片检测模式,人脸属性值中的faceID始终为空,当需要运行视频人脸检测的话可以将 初始化引擎 函数中 ASF_DETECT_MODE_IMAGE改为ASF_DETECT_MODE_VIDEO即代表追踪模式,这样可以减少人脸检测的消耗,并且此时返回的人脸信息中的faceID 将会有值,这在视频人脸识别中很有用,可以减少人脸重复提取识别。

7.特征值和人脸属性检测可能会失败。虹软在做特征提取和属性提取这些功能时会对人脸区域有一个判断操作,如果人脸模糊,或者提供的人脸坐标位置不对有偏差,会返回81925(人脸特征检测结果置信度低)错误码。所以一定要对返回状态码引起重视。

8.虹软有两个描述人脸检测位置和角度信息的对象ASF_SingleFaceInfo(单人脸信息)ASF_MultiFaceInfo(多人脸信息),人脸识别流程是先检测到人脸,再对人脸提取特征值信息,再用特征值信息比较相似度。虹软人脸检测时返回ASF_MultiFaceInfo对象(哪怕只检测到了一个人),用于提取人脸特征信息的函数需要 输入 ASF_SingleFaceInfo的对象,因此在提取特征信息时,需要根据 ASF_MultiFaceInfo中的信息 构建ASF_SingleFaceInfo对象来提取特征值,除了 提取特征值函数外,虹软的其他人脸属性 提取,比如:年龄/性别识别,活体检测,人脸3D角度 等功能都是要送入ASF_MultiFaceInfo对象,但是其中活体检测又要求单张大图片中只能检测一个活体,超出返回未知,而3D角度检测单张大图时最多返回4个 人脸的3D角度值,这些地方可能不太好控制,需要注意。

来源:http://www.1994july.club/seo/?p=2797

虹软最新版 python 接口 完整版的更多相关文章

  1. CI框架下 新浪微博登录接口完整版

    https://www.cnblogs.com/yznyzcw/p/3756622.html#top 说明:本贴只适合CI框架.功能实现:登录接口跳转链接成功,获取用户信息(包括最重要的u_id)成功 ...

  2. Win10安装VSCode并配置Python环境 完整版超详细简单【原创】

    我们分为三个步骤进行: 一.下载VSCode 二.配置Python环境 三.测试Python 一.下载VSCode 1.打开国内镜像vscode下载地址,即可自动下载:https://vscode.c ...

  3. 21天学通Python PDF完整版

    有需要的点击这里自取 内容简介  · · · · · · <21天学通Python>全面.系统.深入地讲解了Python编程基础语法与高级应用.在讲解过程中,通过大量实际操作的实例将Pyt ...

  4. 黑马新版PYTHON教学课程(全)资料加视频完整版百度网盘资料

    黑马新版PYTHON教学课程(全)资料加视频完整版 无加密,适合0基础人群.基础班+就业班.不用解压在线看 百度网盘地址一 淘宝店地址二

  5. Python学习手册(第4版) - 专业程序员的养成完整版PDF免费下载_百度云盘

    Python学习手册(第4版) - 专业程序员的养成完整版PDF免费下载_百度云盘 提取码:g7v1 作者简介 作为全球Python培训界的领军人物,<Python学习手册:第4版>作者M ...

  6. 老王Python培训视频教程(价值500元)【基础进阶项目篇 – 完整版】

    老王Python培训视频教程(价值500元)[基础进阶项目篇 – 完整版] 教学大纲python基础篇1-25课时1.虚拟机安装ubuntu开发环境,第一个程序:hello python! (配置开发 ...

  7. Python学习2——使用字符串(完整版)

    """ 在C语言入门的时候字符串没有好好学习,导致后期语言根本没有入门, 更导致之后大量的codeing时间浪费,效率低下. 因此,借助这次Python入门,好好地将字符 ...

  8. Python编程快速上手 让繁琐工作自动化 - 专业程序员的养成完整版PDF免费下载_百度云盘

    Python编程快速上手  让繁琐工作自动化 - 专业程序员的养成完整版PDF免费下载_百度云盘 提取码:7qm4 有关本书 累计销售超过10万册 零基础编程者的不二之选 基于Python3编写 通用 ...

  9. 笨办法学python - 专业程序员的养成完整版PDF免费下载_百度云盘

    笨办法学python - 专业程序员的养成完整版PDF免费下载_百度云盘 提取码:xaln  怎样阅读本书 由于本书结构独特,你必须在学习时遵守几条规则 录入所有代码,禁止复制粘贴 一字不差地录入代码 ...

随机推荐

  1. BZOJ:2186: [Sdoi2008]沙拉公主的困惑

    问题:可能逆元不存在吗? 题解: Gcd(a,b)==Gcd(b,a-b); 从数据范围可以看出应该求M!的欧拉函数: 然后通过Gcd转化过去 一开始没想到 #include<iostream& ...

  2. JVM源码分析之自定义类加载器如何拉长YGC

    概述 本文重点讲述毕玄大师在其公众号上发的一个GC问题一个jstack/jmap等不能用的case,对于毕大师那篇文章,题目上没有提到GC的那个问题,不过进入到文章里可以看到,既然文章提到了jstac ...

  3. (1) JVM内存管理:内存模型

    引子 一段简单的代码结果引发疑问,==到底比较的是什么?equals呢? public static void main(String args[]){ String s1="abc&quo ...

  4. Upgrade to 17.1 from 17.0 problem:UnicodeEncodeError: 'ascii' codec can't encode character '\xc4' in position 50: ordinal not in range(128)

    最近 gentoo 从 17.0 更新到 17.1, 需要手动进行升级配置,使用 unsymlink-lib -p --finish 这一步的时候报错,报错如下: /usr/lib/python-ex ...

  5. lp_wizard 安装和使用

    lp_wizard 安装好之后,安装下面的步骤来和谐: 生成封装安装下面的步骤来做: 封装生成完了之后,注意后缀是 .pad 的需要放入自己的 pad 文件夹,.fsm 的放入 flash 文件夹,. ...

  6. CSS属性之float浮动属性

    float 属性定义元素在哪个方向浮动.以往这个属性总应用于图像,使文本围绕在图像周围,不过在 CSS 中,任何元素都可以浮动.浮动元素会生成一个块级框,而不论它本身是何种元素. float有四个属性 ...

  7. CKeditor上传图片 实现所见即所得界面

    迟了好多天的分享,CKeditor这个编辑器虽然不错,但也真苟啊,搞图片上传这个功能,快给我搞佛系了,话不多说,上代码 1.首先去官网下载一个full的版本,我用的是CKeditor 4.13,解压之 ...

  8. Java基础之IO流整理

    Java基础之IO流 Java IO流使用装饰器设计模式,因此如果不能理清其中的关系的话很容易把各种流搞混,此文将简单的几个流进行梳理,后序遇见新的流会继续更新(本文下方还附有xmind文件链接) 抽 ...

  9. POJ - 2385 Apple Catching (dp)

    题意:有两棵树,标号为1和2,在Tmin内,每分钟都会有一个苹果从其中一棵树上落下,问最多移动M次的情况下(该人可瞬间移动),最多能吃到多少苹果.假设该人一开始在标号为1的树下. 分析: 1.dp[x ...

  10. python里类的概念

    Python编程中类的概念可以比作是某种类型集合的描述,如"人类"可以被看作一个类,然后用人类这个类定义出每个具体的人--你.我.他等作为其对象.类还拥有属性和功能,属性即类本身的 ...