LabVIEW快速实现OpenCV DNN(YunNet)的人脸检测(含源码)

本文涉及的产品
视觉智能开放平台,图像资源包5000点
视觉智能开放平台,分割抠图1万点
视觉智能开放平台,视频资源包5000点
简介: LabVIEW快速实现OpenCV DNN(YunNet)的人脸检测

前言

人脸检测是计算机视觉领域的一个重要问题,它是很多应用(如人脸识别、人脸表情识别等)的必要步骤。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 等),以提高模型的性能。
image.png

YunNet 模型相较于其他人脸检测模型,具有以下优势:

  • 更高的检测精度:YunNet 模型在 WIDER FACE 数据集上取得了目前最好的检测精度,其 F1 分数高达 97.1%,比其他人脸检测模型要高。

  • 更高的鲁棒性:YunNet 模型能够应对人脸检测中的一些常见问题,如姿态变化、遮挡、光照变化等,具有更高的鲁棒性。

  • 更快的检测速度:YunNet 模型使用深度学习技术进行人脸检测,相比传统的算法速度更快。

  • 更好的通用性:YunNet 模型在不同数据集上都能够取得不错的表现,适用于不同的场景和应用需求。

image.png

与其他人脸检测模型相比,YunNet 模型的缺点可能是在一些特定的场景下会出现漏检或误检的情况,但是这一点可以通过模型的调整和优化来解决。总体而言,YunNet 模型在人脸检测领域表现优异,其高效准确的检测能力使得其被广泛应用于人脸识别、人脸表情分析等领域。

二、准备工作

三、VI介绍

image.png

FaceDetectorYN_Creat.vi:创建人脸检测器的实例类
image.png

参数说明:

  • modelPath:模型文件路径
  • config:模型对应配置文件路径,ONNX 模型不需要
  • Size:模型输入图片大小
  • scoreThreshold:得分阈值,默认值为 0.9
  • nmsThreshold:lOU判断阈值,默认值为 0.3
  • top_K:NMS之前保留 top_k 个边界框

  • ref: 人脸检测类对象

    detect.vi:从给定图像中检测人脸,获得人脸区域和5点landmark
    image.png

参数说明:

  • src:待检测的图片
  • faces:人脸检测结果
  • FaceDetectorYN in: 人脸检测类对象
  • FaceDetectorYN out: 人脸检测类对象

四、项目实践

实现效果:利用 OpenCV FaceDetectorYN 实现 LabVIEW 平台人脸检测并绘制人脸边框以及关键点。

准备工作

  1. 新建项目文件face_detect;
  2. 在项目文件face_detect中新建文件夹model,并将下载的YunNet.onnx拷贝至model文件夹中;在项目文件face_detect中新建文件夹pic_video,并将待检测的图片拷贝到文件夹中;

    4.1 检测图片中的人脸

  3. 获取模型文件及检测图片路径;
    image.png

  4. 读取图片并获取图片的宽和高并合并成簇;
    image.png

  5. 创建FaceDetectorYN对象;
    image.png

  6. 进行人脸检测并获取识别结果;
    image.png

image.png

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,则可将所有人脸检测出。
image.png

  1. 绘制边框及关键点;
    image.png

我们将绘制边框及关键点单独封装成一个vi实现,完成程序如上图所示。

  1. 释放资源;
  2. 完整源码;
    image.png
  1. 运行效果
    image.png

4.2 调用摄像头实现实时人脸检测

整体步骤与调用图片进行人脸检测相似

  1. 完整源码;
    image.png

2.运行效果;

image.png

五、项目源码

关注微信公众号:VIRobotics,回复:人脸检测,即可获取源码

六、环境说明

操作系统:Windows10
LabVIEW:2018及以上 64位版本
视觉工具包:techforce_lib_opencv_cpu-1.0.0.xx.vip

总结

以上就是今天要给大家分享的内容,希望对大家有用。如果有问题可以在评论区里讨论,提问前请先点赞支持一下博主哦,如您想要探讨更多关于LabVIEW与人工智能技术,欢迎加入我们:705637299。

如果文章对你有帮助,欢迎✌关注、👍点赞、✌收藏

目录
相关文章
|
22天前
|
机器学习/深度学习 监控 算法
基于计算机视觉(opencv)的运动计数(运动辅助)系统-源码+注释+报告
基于计算机视觉(opencv)的运动计数(运动辅助)系统-源码+注释+报告
39 3
|
27天前
|
计算机视觉
Opencv学习笔记(八):如何通过cv2读取视频和摄像头来进行人脸检测(jetson nano)
如何使用OpenCV库通过cv2模块读取视频和摄像头进行人脸检测,并提供了相应的代码示例。
70 1
|
26天前
|
缓存 并行计算 Ubuntu
Jetson 学习笔记(十一):jetson agx xavier 源码编译ffmpeg(3.4.1)和opencv(3.4.0)
本文是关于在Jetson AGX Xavier上编译FFmpeg(3.4.1)和OpenCV(3.4.0)的详细教程,包括编译需求、步骤、测试和可能遇到的问题及其解决方案。还提供了Jetson AGX Xavier编译CUDA版本的OpenCV 4.5.0的相关信息。
54 4
Jetson 学习笔记(十一):jetson agx xavier 源码编译ffmpeg(3.4.1)和opencv(3.4.0)
|
26天前
|
Ubuntu 应用服务中间件 nginx
Ubuntu安装笔记(三):ffmpeg(3.2.16)源码编译opencv(3.4.0)
本文是关于Ubuntu系统中使用ffmpeg 3.2.16源码编译OpenCV 3.4.0的安装笔记,包括安装ffmpeg、编译OpenCV、卸载OpenCV以及常见报错处理。
108 2
Ubuntu安装笔记(三):ffmpeg(3.2.16)源码编译opencv(3.4.0)
|
25天前
|
机器学习/深度学习 计算机视觉
目标检测笔记(六):如何结合特定区域进行目标检测(基于OpenCV的人脸检测实例)
本文介绍了如何使用OpenCV进行特定区域的目标检测,包括人脸检测实例,展示了两种实现方法和相应的代码。
51 1
目标检测笔记(六):如何结合特定区域进行目标检测(基于OpenCV的人脸检测实例)
|
14天前
|
Ubuntu 编译器 计算机视觉
Ubuntu系统编译OpenCV4.8源码
【10月更文挑战第17天】只要三步即可搞定,第一步是下载指定版本的源码包;第二步是安装OpenCV4.8编译需要的编译器与第三方库支持;第三步就是编译OpenCV源码包生成安装文件并安装。
|
25天前
|
算法 计算机视觉 Python
圆形检测算法-基于颜色和形状(opencv)
该代码实现了一个圆检测算法,用于识别视频中的红色、白色和蓝色圆形。通过将图像从RGB转换为HSV颜色空间,并设置对应颜色的阈值范围,提取出目标颜色的区域。接着对这些区域进行轮廓提取和面积筛选,使用霍夫圆变换检测圆形,并在原图上绘制检测结果。
62 0
|
4月前
|
计算机视觉 iOS开发 C++
【OpenCV】在MacOS上源码编译OpenCV
【7月更文挑战第9天】在MacOS上源码编译OpenCV需分步进行: 1. 准备工作: 安装Xcode, Command Line Tools及依赖如CMake, Homebrew. 2. 获取OpenCV源码: 从官网下载并解压所需版本. 3. 编译OpenCV. 4. 安装OpenCV: 编译后使用`sudo make install`进行安装. 5. 验证安装: 编写简单C++程序测试OpenCV功能, 如读取并显示图片.
136 1
|
27天前
|
计算机视觉
Opencv学习笔记(三):图像二值化函数cv2.threshold函数详解
这篇文章详细介绍了OpenCV库中的图像二值化函数`cv2.threshold`,包括二值化的概念、常见的阈值类型、函数的参数说明以及通过代码实例展示了如何应用该函数进行图像二值化处理,并展示了运行结果。
249 0
Opencv学习笔记(三):图像二值化函数cv2.threshold函数详解
|
2月前
|
算法 计算机视觉
opencv图像形态学
图像形态学是一种基于数学形态学的图像处理技术,它主要用于分析和修改图像的形状和结构。
45 4

热门文章

最新文章