🏡博客主页: virobotics(仪酷智能):LabVIEW深度学习、人工智能博主
🍻本文由virobotics(仪酷智能)原创首发
🥳欢迎大家关注✌点赞👍收藏⭐留言📝
前言
Hello,大家好,我是virobotics(仪酷智能),一个深耕于LabVIEW和人工智能领域的开发工程师。
人脸检测是计算机视觉领域的一个重要问题,它是很多应用(如人脸识别、人脸表情识别等)的必要步骤。YuNet 是一种高效的人脸检测算法,本文将介绍如何使用LabVIEW加载YuNet 快速实现人脸检测,人脸识别的实现可查看另外一篇博客:LabVIEW快速搭建人脸识别系统
本文的主要内容分为以下两部分:
1、检测图片中的人脸
2、调用摄像头实现实时检测人脸
一、关于YuNet
YuNet 是一种基于深度神经网络的人脸检测算法,一款轻量级,快速,准确的人脸检测模型,它在保持高准确率的同时,具有很高的运行速度。相比于传统的基于 Haar
特征和 HOG
特征的人脸检测算法,YuNet 具有更好的性能和效率,在WIDE人脸验证集上达到0.834(AP_easy),0.824(AP_medium),0.708(AP_hard)。YuNet 的模型结构基于 MobileNetV2,并使用了一些优化技巧(如 Inverted Residual Block、Depthwise Separable Convolution 等),以提高模型的性能。
YunNet 模型相较于其他人脸检测模型,具有以下优势:
-
更高的检测精度:YunNet 模型在 WIDER FACE 数据集上取得了目前最好的检测精度,其 F1 分数高达 97.1%,比其他人脸检测模型要高。
-
更高的鲁棒性:YunNet 模型能够应对人脸检测中的一些常见问题,如姿态变化、遮挡、光照变化等,具有更高的鲁棒性。
-
更快的检测速度:YunNet 模型使用深度学习技术进行人脸检测,相比传统的算法速度更快。
-
更好的通用性:YunNet 模型在不同数据集上都能够取得不错的表现,适用于不同的场景和应用需求。
与其他人脸检测模型相比,YunNet 模型的缺点可能是在一些特定的场景下会出现漏检或误检的情况,但是这一点可以通过模型的调整和优化来解决。总体而言,YunNet 模型在人脸检测领域表现优异,其高效准确的检测能力使得其被广泛应用于人脸识别、人脸表情分析等领域。
二、准备工作
- 安装LabVIEW 2018 64位或更高版本
- 安装LabVIEW AI视觉工具包,安装步骤可查看:blog.csdn.net/virobotics/…
- 下载yunet.onnx模型文件:github.com/ShiqiYu/lib…
三、VI介绍
FaceDetectorYN_Creat.vi:创建人脸检测器的实例类
参数说明:
-
modelPath
:模型文件路径 -
config
:模型对应配置文件路径,ONNX 模型不需要 -
Size
:模型输入图片大小 -
scoreThreshold
:得分阈值,默认值为 0.9 -
nmsThreshold
:lOU判断阈值,默认值为 0.3 -
topK
:NMS之前保留 top_k 个边界框 -
ref
: 人脸检测类对象
detect.vi:从给定图像中检测人脸,获得人脸区域和5点landmark
参数说明:
src
:待检测的图片faces
:人脸检测结果FaceDetectorYN in
: 人脸检测类对象FaceDetectorYN out
: 人脸检测类对象
四、项目实践
实现效果:利用 OpenCV FaceDetectorYN 实现 LabVIEW 平台人脸检测并绘制人脸边框以及关键点。
准备工作
- 新建项目文件face_detect;
- 在项目文件face_detect中新建文件夹model,并将下载的YunNet.onnx拷贝至model文件夹中;在项目文件face_detect中新建文件夹pic_video,并将待检测的图片拷贝到文件夹中;
4.1 检测图片中的人脸
- 获取模型文件及检测图片路径;
- 读取图片并获取图片的宽和高并合并成簇;
- 创建FaceDetectorYN对象;
- 进行人脸检测并获取识别结果;
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
,置信度
注意:我们可以看到途中其实是有12张人脸的,但是检测到的人脸只有10张,有两张人脸未被检测出,可修改FaceDetectorYN_Creat.vi的scoreThreshold
,改参数默认值为 0.9,我们修改为0.7,则可将所有人脸检测出。
-
绘制边框及关键点;
我们将绘制边框及关键点单独封装成一个vi实现,完成程序如上图所示。 -
释放资源;
-
完整源码;
-
运行效果
4.2 调用摄像头实现实时人脸检测
整体步骤与调用图片进行人脸检测相似
-
完整源码;
-
运行效果;
五、项目源码
源码下载链接:pan.baidu.com/s/197IDgJy_…
更多项目源码可关注微信公众号:VIRobotics
六、环境说明
- 操作系统:Windows10
- LabVIEW:2018及以上 64位版本
- 视觉工具包:techforce_lib_opencv_cpu-1.0.0.xx.vip
总结
以上就是今天要给大家分享的内容,希望对大家有用。如有笔误,还请各位及时指正。后续还会继续给各位朋友分享其他案例,欢迎大家关注博主。我是virobotics(仪酷智能),我们下篇文章见~
如果有问题可以在评论区里讨论,提问前请先点赞支持一下博主哦,如您想要探讨更多关于LabVIEW与人工智能技术,欢迎加入我们的技术交流群:705637299。进群请备注:LabVIEW机器视觉
**如果文章对你有帮助,欢迎✌关注、👍点赞、✌收藏