博客主页: virobotics(仪酷智能):LabVIEW深度学习、人工智能博主
本文由virobotics(仪酷智能)原创首发
欢迎大家重视✌点赞收藏⭐留言
前言
Hello,大家好,我是virobotics(仪酷智能),一个深耕于LabVIEW和人工智能范畴的开发工程师。
当今世界,人脸辨认作为一种常见的生物辨认技能,现已成为了一个不可或缺的技能,广泛应用于安防、金融、教育等范畴。其中,SFace 作为一种先进的人脸辨认模型,现已被广泛运用。本篇博客将介绍如何运用LabVIEW 和 SFace 完结人脸辨认。人脸检测内容可检查上一篇博客LabVIEW快速完结OpenCV DNN(YunNet)的人脸检测(含源码)
本文的主要内容分为以下两部分:
1、实时检测人脸并将并人脸设置标签保存下来
2、调用摄像头完结实时人脸辨认
一、SFace简介
SFace 是一种根据深度学习的人脸辨认模型,是由北京邮电大学邓伟洪教授课题组奉献。SFace可以在减少干净示例的类内间隔和防止过度拟合标签噪声之间获得更好的平衡,并有助于更强壮的深度人脸辨认模型。在CASIA-WebFace,VGGFace2和MS-Celeb-1M数据库上练习的模型的广泛试验,以及在LFW,MegaFace和IJB-C数据库等几个人脸辨认基准上进行评估,现已证明了SFace的优越性。
- SFace模型Git地址:github.com/zhongyy/SFa…
二、准备工作
- 装置LabVIEW 2018 64位或更高版别
- 装置LabVIEW AI视觉工具包,装置过程可检查:blog.csdn.net/virobotics/…
- 下载人脸检测yunet.onnx模型文件:github.com/ShiqiYu/lib…
- 下载人脸辨认SFace模型文件:drive.google.com/file/d/1ClK…
三、VI介绍
Create.vi:运用给定参数创立此类的实例
参数阐明:
-
modelPath
:模型文件途径 -
config
:模型对应配置文件途径,ONNX 模型不需要 -
backend id
:Backend ID -
target id
:目标设备ID
alignCrop.vi:对齐图画以将面部放在规范方位
参数阐明:
-
src
:输入图片 -
one face
:输入图画中某张人脸的检测成果(15列) -
dst
:对齐人脸后的图片
feature.vi:从对齐的图画中提取人脸特征
参数阐明:
-
src
:已对齐人脸的图片 -
feature
:人脸特征
match.vi:核算两个人脸特征之间的间隔
参数阐明:
-
feature1
:一个人脸特征 -
feature2
:第二个人脸特征 -
type
:间隔类型,用于核算类似度 -
score
:类似度得分
人脸特征类似度衡量有 FR_COSINE
和 FR_NORM_L2
办法,对应的判别是否为同一人的值别离为0.363和1.128,FR_COSINE
办法大于阈值 0.363 判定为同一人, FR_NORM_L2
办法小于阈值1.128判定为同一人。
四、项目实践
完结作用:利用 OpenCV FaceRecognizerSF 在 LabVIEW 渠道完结人脸辨认并显现该人名字。 完结思路:
准备工作
- 新建项目文件face_recognition;
- 在项目文件face_recognition中新建文件夹model,并将下载的yunet.onnx以及face_recognizer_fast.onnx复制至model文件夹中;在项目文件face_detect中新建文件夹photos,等待存储人脸;
4.1 实时检测人脸并将并人脸设置标签保存下来
-
获取人脸检测及人脸辨认模型文件及人脸图片途径;
-
初始化相机并设置视频像素为640*480,默许摄像头id为0;
-
创立FaceDetectorYN、FaceRecognizerSF目标;
-
循环读取视频流中的每一帧并进行人脸检测,获取检测成果;
faces
是一个二维数组,每一行代表检测的一张人脸,每行数据中别离表示获取人脸15维的基本信息:x1
,y1
,w
,h
,x_re
,y_re
,x_le
,y_le
,x_nt
,y_nt
,x_rcm
,y_rcm
,x_lcm
,y_lcm
,rate
,即人脸区域矩形框,左右眼、鼻子,左右嘴角5点landmark
,置信度
-
绘制边框及要害点; 咱们将绘制边框及要害点独自封装成一个draw_face.vi完结,完结程序如上图所示。
-
保存视频流中的某张人脸,并为之命名,该人脸像素为112*112;
-
释放所有资源;
-
完好源码;
-
运转作用save的图片保存到了该vi同途径下的photo文件夹中
4.2 调用摄像头完结实时人脸辨认
- 获取人脸检测及人脸辨认模型文件及之前现已保存的人脸图片途径;
- 初始化相机并设置视频像素为640*480,默许摄像头id为0;
- 创立FaceDetectorYN、FaceRecognizerSF目标;
- 加载人脸数据,加载文件夹photo的每一张人脸图片,并获取每张人脸的128个特征点;
- 循环读取视频流中的每一帧并进行人脸检测,获取检测成果;
- 人脸辨认(比照)
人脸特征类似度衡量有 FR_COSINE 和FR_NORM_L2办法,对应的判别是否为同一人的值别离为0.363和1.128,FRCOSINE 办法大于阈值 0.363判定为同一人, FR_NORM _L2 办法小于阈值1.128判定为同一人,在本项目中只要满足其中一种,即认为是同一人。
-
绘制人脸框及名字,若该人在图片数据库中,则显现该人名字,否则显现unknow;
-
完好源码;
-
运转作用;
五、python完结
装置OpenCV 4.5.4及更高版别,该版别收录了根据深度学习神经网络的人脸模块(以下称“OpenCV DNN Face”),包含人脸检测(运用模型YuNet,由OpenCV China团队奉献)和人脸辨认(运用模型SFace,由北京邮电大学邓伟洪教授课题组奉献)。
# 人脸检测
img = cv.imread("path/to/image")
faceDetector = cv.FaceDetectorYN.create("/path/to/model", "", img.shape[:2])
faces = faceDetector.detect(image)
# 人脸辨认
recognizer = cv.FaceRecognizerSF.create(recog_model_path, "" )
aligned_face = recognizer.alignCrop(img, faces[1][0])
feature = recognizer.feature(aligned_face)
cosine_score = recognizer.match(feature1, feature2, 0)
六、项目源码
如需源码,可检查:blog.csdn.net/virobotics/…
更多项目源码可重视微信大众号:VIRobotics
七、环境阐明
- 操作系统:Windows10
- LabVIEW:2018及以上 64位版别
- 视觉工具包:techforce_lib_opencv_cpu-1.0.0.xx.vip
总结
以上便是今天要给大家共享的内容,希望对大家有用。如有笔误,还请各位及时纠正。后续还会持续给各位朋友共享其他案例,欢迎大家重视博主。我是virobotics(仪酷智能),咱们下篇文章见~
假如有问题可以在谈论区里评论,提问前请先点赞支持一下博主哦,如您想要讨论更多关于LabVIEW与人工智能技能,欢迎加入咱们的技能交流群:705637299。进群请备注:LabVIEW机器视觉
**假如文章对你有协助,欢迎✌重视、点赞、✌收藏