delphi 人脸比对_比较好的开源人脸识别软件有哪些?
人脸识别的开源算法库首推OpenCV,但要说开源软件的话,我比较推荐虹软视觉开放平台的ArcFaceGo人脸识别应用套件。
虹软视觉开放平台ai.arcsoft.com.cn
简单来说,这款应用套件研发之初是为了方便基础薄弱用户,功能完整,可以快速甚至零代码搭建人脸识别闸机通行、刷脸考勤以及近来大火的人脸识别测温等应用。随着这款软件开源之后,开发者也完全能够在此基础上开发成一款符合自身业务需求的产品,并投入商用。
普通环境下识别准确率接近100%,而且识别速度快,稳定性好,容易集成,好用。
PS:有别的答主回答了虹软的人脸识别引擎,和我这个不是一个东西,ArcFaceGo内置了人脸识别引擎,功能更加完整,所以不算重复回答。
【简单易用——ArcFaceGo应用套件构成】
在应用套件中,已经内置了虹软视觉开放平台的离线人脸识别SDK。涵盖人脸检测、人脸比对、活体检测、人脸属性分析等一系列核心算法,即使无网络状态下也可以运行。在虹软视觉开放平台完成下载后,可以看到该应用套件由人脸识别软件APK、中心管理端两部分构成。
中心管理端:拥有人员注册、考勤统计、出入查询等功能,也可以云端进一步对接已有的业务平台。
人脸识别设备端应用APK:负责采集人脸信息、进行身份比对,并向中心管理端报备识别结果以及通知相关联通控制器。在该部分其代码中,已经针对人脸检测、人脸比对、活体检测等算法,模块化的集成了相应算法运转逻辑。开发者无需考虑各算法之间复杂运转流程,只需传入camera数据流,便可以回调识别结果。
同时,针对人脸图像传输、处理中需要用到的多媒体图像技术,在代码中也同样模块化的封装好了NV21、RGBA、BGR等不同颜色格式自动转化及图像的四字节对齐等功能。
在运行性能方面,该开源应用套件在底层算法逻辑中维护“人脸底库”,可以充分提升人脸识别速度,以RK3288 -10000人为例,相比在上层逻辑中进行人脸比对需要100ms ,而目前仅需10ms。
【适配灵活——可应用于各类实际场景】
基于开源代码,开发者可以自行定义交互界面及交互逻辑,并开发应用于各类场景的人脸识别应用。比如智慧办公的人脸识别考勤机、智慧社区的人脸识别出入闸机、智慧商业的VIP迎宾系统、智慧医院的人脸识别挂号机、智慧酒店的人脸识别入住等等产品。
1.针对具体场景,可视化适配硬件
不同场景的不同应用,也意味着需要适配不同的分辨率设备,适配单摄、双摄、宽动态等各类摄像头。ArcFaceGo人脸识别应用套件提供了可视化的硬件适配页面,方便预览显示及识别设置。
用户也能自行改写该部分代码,譬如不希望用户自行调节相关参数,以至于影响识别效果,甚至可以将该部分功能进行封装,以免用户误触。
2.可供对接硬件的多种广播形式。
Action描述
com.arcsoft.arcfacesingle.ACTION_IDENTIFY_SUCCESSFUL人员识别成功
com.arcsoft.arcfacesingle.ACTION_IDENTIFY_SUCCESS_PERSON_SERIAL人员识别成功后,会向外发送“personSerial”唯一标识号”
com.arcsoft.arcfacesingle.ACTION_OPEN_DOOR开门(在人员识别成功后会发送该广播)
com.arcsoft.arcfacesingle.ACTION_CLOSE_DOOR关门(发送开门广播后,延迟一段时间会发送该广播)
com.arcsoft.arcfacesingle.ACTION_FACE_DETECT_HAS_FACE检测到人脸框
com.arcsoft.arcfacesingle.ACTION_FACE_DETECT_NO_FACE人脸框丢失
典型场景1
在室内走廊或楼梯过道等光线不佳的地方,可以对接ACTION_FACE_DETECT_HAS_FACE和ACTION_FACE_DETECT_NO_FACE广播,在检测到人脸时打开补光灯,这样可以提高识别率。
典型场景2
在一些单次授权通过的场景比如取药房,可对接ACTION_IDENTIFY_SUCCESS_PERSON_SERIAL广播,在授权并且识别通过之后可以删除该人授权以达到目的。
【人脸识别测温机开发实例】
疫情期间,很多智慧门禁设备都会增加测温模组,在通过人脸识别实现身份权限管理的同时,一并测量体温。
目前这类产品的市场反响非常火热,无论是要实现抗疫常态化的国内,还是感染人数持续暴增的国外,都对该产品有迫切需求。
这款应用套件可以与测温模块快速集成,以实现测温结果与识别身份绑定的效果。具体如何实现,以下是代码示例。
以下是具体实现的代码示例,以主流的HTPA32x32d为例。
private ConcurrentMap temperatureMap = new ConcurrentHashMap<>();
private byte[] rawData = new byte[2048];
private ReadThread.ReadListener readListener = (data, size) -> {
synchronized (temperatureLocker) {
System.arraycopy(data, 1, rawData, 0, 2048);
}
};
public void start() {
ReadThread readThread = new ReadThread();
readThread.setListener(readListener);
readThread.start();
FaceEngine faceEngine = new FaceEngine();
Config config = new Config();
faceEngine.setRecognizeCallback(this);
faceEngine.init(this, config);
}
@Override
public void onRecognizeComplete(RecognitionResult recognitionResult) {
FaceInfo faceInfo = recognitionResult.faceInfo;
if (recognitionResult.result == ErrorInfo.MOK) {
if(temperatureMap.get(faceInfo.faceId)<=37.3) {
//温度低于预警值并且识别成功,进行后续操作
}
}
}
@Override
public void onCameraPreview(byte[] bytes, ICamera iCamera) {
FaceInfo faceInfo = new FaceInfo();
faceEngine.faceRecognize(rgbData, irData, width, height, true, faceInfo);
if (faceInfo.faceId != -1 && temperatureMap.get(faceInfo.faceId) != null) {
//把额头区域映射至32x32温度矩阵中,取出对应的温度
float temperature = getTemperature(faceInfo.forehead, rawData);
temperatureMap.put(faceInfo.faceId, temperature);
}
}
public class ReadThread extends Thread {
private static final String HEIMANN_PATH = "/dev/ttyS2";
private static final int BAUDRATE = 115200;
private static final byte[] command = {(byte) 0XEE, (byte) 0xE1, (byte) 0x01, (byte) 0x55, (byte) 0xFF, (byte) 0xFC, (byte) 0xFD, (byte) 0xFF};
private FileOutputStream outputStream;
private FileInputStream inputStream;
private Object locker = new Object();
public ReadThread() {
try {
mSerialPort = SerialPort
.newBuilder(HEIMANN_PATH, BAUDRATE)
.parity(0)
.dataBits(8)
.stopBits(1)
.build();
mInputStream = (FileInputStream) mSerialPort.getInputStream();
mOutputStream = (FileOutputStream) mSerialPort.getOutputStream();
} catch (IOException e) {
e.printStackTrace();
}
}
public void sendCommand(byte[] data) {
if (mOutputStream != null) {
try {
synchronized (locker) {
mOutputStream.write(data);
offset = 0;
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
@Override
public void run() {
super.run();
while (!isInterrupted()) {
int size;
try {
synchronized (locker) {
if (mInputStream == null) {
return;
}
size = mInputStream.available();
if (size > 0) {
mInputStream.read(rawData, offset, size);
offset += size;
}
}
if (offset == rawData.length) {
if (getListener() != null) {
getListener().onDataReceived(rawData, offset);
}
offset = 0;
}
if (offset == 0) {
SystemClock.sleep(50);
sendCommand(command);
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
}虹软视觉开放平台ai.arcsoft.com.cn
delphi 人脸比对_比较好的开源人脸识别软件有哪些?相关推荐
- 人脸检测算法_目前最强!开源人脸检测算法:RetinaFace
加入极市专业CV交流群,与6000+来自腾讯,华为,百度,北大,清华,中科院等名企名校视觉开发者互动交流!更有机会与李开复老师等大牛群内互动! 同时提供每月大咖直播分享.真实项目需求对接.干货资讯汇总 ...
- python开源的人脸识别库_什么是 SeetaFace 开源人脸识别引擎
区分不同的人是很多智能系统的必备能力.为实现此目的,一种可能的技术手段是通过对人脸的光学成像来感知人.识别人,即所谓的人脸识别技术.经过几十年的研发积累,特别是近年来深度学习技术的涌现,人脸识别取得了 ...
- python dlib caffe人脸相似度_基于深度学习的人脸识别系统(Caffe+OpenCV+Dlib)【一】如何配置caffe属性表...
前言 基于深度学习的人脸识别系统,一共用到了5个开源库:OpenCV(计算机视觉库).Caffe(深度学习库).Dlib(机器学习库).libfacedetection(人脸检测库).cudnn(gp ...
- 人脸检测算法_腾讯已开源高精度人脸检测算法DSFD
腾讯提出一种高精度双分支人脸检测器DSFD并开源.该算法曾在全球两大权威人脸检测数据集WIDERFACE和FDDB上均取得了第一. 任务介绍 人脸检测算法是在图像上检测出人脸的位置(通常以矩形框形式输 ...
- java人脸识别_自从加了PC人脸识别登录功能,网站立马显得高大上
之前不是做了个开源项目嘛,在做完GitHub登录后,想着再显得有逼格一点,说要再加个人脸识别登录,就我这佛系的开发进度,过了一周总算是抽时间安排上了. 源码在文末 其实最近对写文章有点小抵触,写的东西 ...
- 人脸脸部识别技术_面部识别技术的道德安全问题
人脸脸部识别技术 Terminator and similar movies depict a world that is controlled by AI and robots. For the m ...
- 人脸脸部识别技术_面部识别技术的危险后果
人脸脸部识别技术 揭露 (Disclosure) The following introduction references existing technology and future advanc ...
- 离线人脸属性分析_最新开源 | 人脸识别应用套件:毫秒级离线识别 适用多类场景...
随着人脸识别技术的不断发展,尤其是在部分算法平台对外开放算法之后,人脸识别的应用门槛得到了极大降低.但是从算法到一款真正可落地的人脸识别产品,在完整的应用开发中,不仅需要考虑底层算法的运行逻辑,也需要 ...
- 风格化图像_【技术综述】人脸风格化核心技术与数据集总结
我的新书<深度学习之人脸图像算法>市了,欢迎大家关注! 言有三新书来袭,业界首次深入全面讲解深度学习人脸图像算法mp.weixin.qq.com 人脸图像是计算机视觉领域中研究历史最久, ...
- caffe 人脸关键点检测_全套 | 人脸检测 人脸关键点检测 人脸卡通化
点击上方"AI算法与图像处理",选择加"星标"或"置顶" 重磅干货,第一时间送达 来源:CVPy 人脸检测历险记 可能跟我一样,人脸检测是很 ...
最新文章
- MindSpore图像分类模型支持(Lite)
- 我成功攻击了Tomcat服务器,大佬们的反应亮了
- 网络工作室暑假后第二次培训资料(SQLServer存储过程和ADO.NET访问存储过程)整理(一)...
- 牛牛牛!干翻Sci-hub!
- NAT应用于HSRP环境
- 一个撕心裂肺的爱情故事
- 对java类中注释的认识
- qt如何在label中显示汉字_工控机中如何实现多屏显示
- 6.2神经网络算法应用上学习笔记
- 组内连续三个或三个以上Repeated Measures ANOVA
- Windows操作系统管理进程和线程:内核模式和用户模式
- java面试题(分布式篇)
- Barcode for Mac(条形码生成器)
- vue导入txt文本
- python中unicode编码表_python中的unicode编码
- 姓名评分程序PHP,姓名测试打分,免费姓名评分测试,免费姓名测试评分 - 姓名算命最准的网站...
- 开发者应该了解的移动互联网行业内幕
- 关于iphone5和iphone4兼容的尺寸问题
- Android蓝牙开发(一)之打开蓝牙和设备搜索
- 利用 matplotlib 制作条形图
热门文章
- android 条形码 两边空白,几个条形码的问题
- python做大数据可视化软件_四款最受欢迎的大数据可视化工具
- 基于SSH的客户关系管理系统
- java 切图 软件_Java 切图
- linux开发板推荐
- edem颗粒替换_Altair EDEM Professional 2020.2安装教程(附替换补丁)
- android5.0电话录音,用Xpose完美实现电话录音,支持android 8.1.0
- 计算机模拟仿真技术是什么,仿真与模拟
- python统计字符个数然后变成字典_Python之String字符串练习一(统计字符串中单词出现个数并生成字典、打印下一秒钟时间、简单购物车功能)...
- Unity修改编辑器