LabVIEW+OpenCV快速搭建人脸识别系统(附源码)

2024-04-09 1049阅读

‍‍🏡博客主页: virobotics的CSDN博客:LabVIEW深度学习、人工智能博主

🎄所属专栏:『LabVIEW深度学习实战』

🍻上期文章: LabVIEW快速实现OpenCV DNN(YunNet)的人脸检测(含源码)

📰如觉得博主文章写的不错或对你有所帮助的话,还望大家多多支持呀! 欢迎大家✌关注、👍点赞、✌收藏、👍订阅专栏

文章目录

  • 前言
  • 一、SFace简介
  • 二、准备工作
  • 三、VI介绍
  • 四、项目实践
    • 4.1 实时检测人脸并将并人脸设置标签保存下来
    • 4.2 调用摄像头实现实时人脸识别
    • 五、python实现
    • 六、项目源码
    • 七、环境说明
    • 总结

      前言

      当今世界,人脸识别作为一种常见的生物识别技术,已经成为了一个不可或缺的技术,广泛应用于安防、金融、教育等领域。其中,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地址:https://github.com/zhongyy/SFace

        二、准备工作

        • 安装LabVIEW 2018 64位或更高版本
        • 安装LabVIEW AI视觉工具包,安装步骤可查看:https://blog.csdn.net/virobotics/article/details/123656523
        • 下载人脸检测yunet.onnx模型文件:https://github.com/ShiqiYu/libfacedetection.train/blob/a61a428929148171b488f024b5d6774f93cdbc13/tasks/task1/onnx/yunet.onnx
        • 下载人脸识别SFace模型文件:https://drive.google.com/file/d/1ClK9WiB492c5OZFKveF3XiHCejoOxINW/view

          三、VI介绍

          LabVIEW+OpenCV快速搭建人脸识别系统(附源码)

          Create.vi:使用给定参数创建此类的实例

          LabVIEW+OpenCV快速搭建人脸识别系统(附源码)

          参数说明:

          • modelPath:模型文件路径
          • config:模型对应配置文件路径,ONNX 模型不需要
          • backend id:Backend ID
          • target id:目标设备ID

            alignCrop.vi:对齐图像以将面部放在标准位置

            LabVIEW+OpenCV快速搭建人脸识别系统(附源码)

            参数说明:

            • src:输入图片
            • one face:输入图像中某张人脸的检测结果(15列)
            • dst:对齐人脸后的图片

              feature.vi:从对齐的图像中提取人脸特征

              LabVIEW+OpenCV快速搭建人脸识别系统(附源码)

              参数说明:

              • src:已对齐人脸的图片
              • feature:人脸特征

                match.vi:计算两个人脸特征之间的距离

                LabVIEW+OpenCV快速搭建人脸识别系统(附源码)

                参数说明:

                • feature1:一个人脸特征
                • feature2:第二个人脸特征
                • type:距离类型,用于计算相似度
                • score:相似度得分

                  人脸特征相似度度量有 FR_COSINE 和 FR_NORM_L2方法,对应的判断是否为同一人的值分别为0.363和1.128,FRCOSINE 方法大于阈值 0.363 判定为同一人, FR_NORM _L2 方法小于阈值1.128判定为同一人。


                  四、项目实践

                  实现效果:利用 OpenCV FaceRecognizerSF 在 LabVIEW 平台实现人脸识别并显示该人名字。

                  实现思路:

                  LabVIEW+OpenCV快速搭建人脸识别系统(附源码)

                  准备工作

                  1. 新建项目文件face_recognition;
                  2. 在项目文件face_recognition中新建文件夹model,并将下载的yunet.onnx以及face_recognizer_fast.onnx拷贝至model文件夹中;在项目文件face_detect中新建文件夹photos,等待存储人脸;

                  4.1 实时检测人脸并将并人脸设置标签保存下来

                  1. 获取人脸检测及人脸识别模型文件及人脸图片路径;

                    LabVIEW+OpenCV快速搭建人脸识别系统(附源码)

                  2. 初始化相机并设置视频像素为640*480,默认摄像头id为0;

                    LabVIEW+OpenCV快速搭建人脸识别系统(附源码)

                  3. 创建FaceDetectorYN、FaceRecognizerSF对象;

                    LabVIEW+OpenCV快速搭建人脸识别系统(附源码)

                  4. 循环读取视频流中的每一帧并进行人脸检测,获取检测结果;

                    LabVIEW+OpenCV快速搭建人脸识别系统(附源码)

                  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,置信度

                  1. 绘制边框及关键点;

                    LabVIEW+OpenCV快速搭建人脸识别系统(附源码)

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

                  2. 保存视频流中的某张人脸,并为之命名,该人脸像素为112*112;

                    LabVIEW+OpenCV快速搭建人脸识别系统(附源码)

                  3. 释放所有资源;

                  4. 完整源码;

                    LabVIEW+OpenCV快速搭建人脸识别系统(附源码)

                  5. 运行效果

                    LabVIEW+OpenCV快速搭建人脸识别系统(附源码)

                    save的图片保存到了该vi同路径下的photo文件夹中

                    LabVIEW+OpenCV快速搭建人脸识别系统(附源码)

                  4.2 调用摄像头实现实时人脸识别

                  1. 获取人脸检测及人脸识别模型文件及之前已经保存的人脸图片路径;

                    LabVIEW+OpenCV快速搭建人脸识别系统(附源码)

                  2. 初始化相机并设置视频像素为640*480,默认摄像头id为0;

                    LabVIEW+OpenCV快速搭建人脸识别系统(附源码)

                  3. 创建FaceDetectorYN、FaceRecognizerSF对象;

                    LabVIEW+OpenCV快速搭建人脸识别系统(附源码)

                  4. 加载人脸数据,加载文件夹photo的每一张人脸图片,并获取每张人脸的128个特征点;

                    LabVIEW+OpenCV快速搭建人脸识别系统(附源码)

                  5. 循环读取视频流中的每一帧并进行人脸检测,获取检测结果;

                    LabVIEW+OpenCV快速搭建人脸识别系统(附源码)

                  6. 人脸识别(对比)

                    LabVIEW+OpenCV快速搭建人脸识别系统(附源码)

                  人脸特征相似度度量有 FR_COSINE 和FR_NORM_L2方法,对应的判断是否为同一人的值分别为0.363和1.128,FRCOSINE 方法大于阈值 0.363判定为同一人, FR_NORM _L2 方法小于阈值1.128判定为同一人,在本项目中只要满足其中一种,即认为是同一人。

                  1. 绘制人脸框及名字,若该人在图片数据库中,则显示该人名字,否则显示unknow;

                    LabVIEW+OpenCV快速搭建人脸识别系统(附源码)

                  2. 完整源码;

                    LabVIEW+OpenCV快速搭建人脸识别系统(附源码)

                  3. 运行效果;

                    LabVIEW+OpenCV快速搭建人脸识别系统(附源码)


                  五、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)
                  

                  六、项目源码

                  如需源码,订阅本专栏后在评论区留下邮箱


                  七、环境说明

                  操作系统:Windows10

                  LabVIEW:2018及以上 64位版本

                  视觉工具包:techforce_lib_opencv_cpu-1.0.0.xx.vip


                  总结

                  以上就是今天要给大家分享的内容,希望对大家有用。

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

                  推荐阅读

                  LabVIEW图形化的AI视觉开发平台(非NI Vision),大幅降低人工智能开发门槛

                  LabVIEW图形化的AI视觉开发平台(非NI Vision)VI简介

                  LabVIEW AI视觉工具包OpenCV Mat基本用法和属性

                  手把手教你使用LabVIEW人工智能视觉工具包快速实现图像读取与采集

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

VPS购买请点击我

免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理! 图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库和百度,360,搜狗等多加搜索引擎自动关键词搜索配图,如有侵权的图片,请第一时间联系我们,邮箱:ciyunidc@ciyunshuju.com。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!

目录[+]