测试开源C#人脸识别模块ViewFaceCore(5:质量检测和眼睛状态检测)

  ViewFaceCore模块中的FaceQuality支持预测人脸质量,最初以为是预测人体体重,实际测试过程中才发现是评估人脸图片质量,主要调用Detect函数执行图片质量检测操作,其函数原型如下所示:

	    //
        // 摘要:
        //     人脸质量评估
        //
        // 参数:
        //   image:
        //     人脸图像信息
        //
        //   info:
        //     面部信息
        //     通过 FaceDetector(FaceImage) 获取
        //
        //   points:
        //     info 对应的关键点坐标
        //     通过 FaceMark(FaceImage, FaceInfo) 获取
        //
        //   type:
        //     质量评估类型
        public QualityResult Detect<T>(T image, FaceInfo info, FaceMarkPoint[] points, QualityType type)
       
        //     质量评估结果
	    public class QualityResult : IFormattable
	    {
	        //
	        // 摘要:
	        //     质量评估等级
	        public QualityLevel Level { get; set; }
	
	        //
	        // 摘要:
	        //     质量评估分数
	        //     越大越好,没有范围限制
	        public float Score { get; set; }
	
	        //
	        // 摘要:
	        //     返回可视化字符串
	        public override string ToString()
	       
	     }

	    // 摘要:
	    //     质量评估类型
	    [Description("质量评估类型")]
	    public enum QualityType
	    {
	        //
	        // 摘要:
	        //     亮度评估
	        //     亮度评估就是评估人脸区域内的亮度值是否均匀正常,存在部分或全部的过亮和过暗都会是评价为LOW。
	        [Description("亮度评估")]
	        Brightness,
	        //
	        // 摘要:
	        //     清晰度评估
	        //     清晰度这里是传统方式通过二次模糊后图像信息损失程度统计的清晰度。
	        [Description("清晰度评估")]
	        Clarity,
	        //
	        // 摘要:
	        //     完整度评估
	        //     完整度评估是朴素的判断人脸是否因为未完全进入摄像头而造成的不完整的情况。该方法不适用于判断遮挡造成的不完整。
	        [Description("完整度评估")]
	        Integrity,
	        //
	        // 摘要:
	        //     姿态评估
	        //     此姿态评估器是传统方式,通过人脸5点坐标值来判断姿态是否为正面。
	        [Description("姿态评估")]
	        Pose,
	        //
	        // 摘要:
	        //     姿态评估(深度)
	        //     此姿态评估器是深度学习方式,通过回归人头部在yaw、pitch、roll三个方向的偏转角度来评估人脸是否是正面。
	        //     需要模型 pose_estimation.csta
	        [Description("姿态评估(深度)")]
	        PoseEx,
	        //
	        // 摘要:
	        //     分辨率评估
	        //     判断人脸部分的分辨率。
	        [Description("分辨率评估")]
	        Resolution,
	        //
	        // 摘要:
	        //     清晰度评估(深度)
	        //     需要模型 quality_lbn.csta
	        //     需要模型 face_landmarker_pts68.csta
	        [Description("清晰度评估(深度)")]
	        ClarityEx,
	        //
	        // 摘要:
	        //     遮挡评估
	        //     需要模型 face_landmarker_mask_pts5.csta
	        [Description("遮挡评估")]
	        Structure
	    }

  调用FaceQuality进行人脸质量检测主要包括以下步骤:
  1)调用faceDetector类获取图片的人脸信息;
  2)调用FaceLandmarker类获取人脸关键点信息;
  3)调用FaceQuality类的Detect函数,根据人脸信息、人脸关键位置信息、质量评估类型等返回人脸质量评估结果。
  根据上述步骤编写了FaceQuality类的测试程序(本文中的所有测试用图均来自百度图片),测试效果截图如下所示:

在这里插入图片描述
在这里插入图片描述

  ViewFaceCore模块中的EyeStateDetector支持检测人脸中眼睛的开闭状态,主要调用Detect函数执行眼睛状态检测操作,其函数原型如下所示:

	// 摘要:
    //     眼睛状态检测。
    //     眼睛的左右是相对图片内容而言的左右。
    //     需要模型 eye_state.csta
    //
    // 参数:
    //   image:
    //     人脸图像信息
    //
    //   points:
    //     关键点坐标
    //     通过 FaceMark(FaceImage, FaceInfo) 获取
    public EyeStateResult Detect<T>(T image, FaceMarkPoint[] points)

    //
    // 摘要:
    //     眼睛状态结果
    public class EyeStateResult : IFormattable
    {
        //
        // 摘要:
        //     左眼状态
        public EyeState LeftEyeState { get; set; }

        //
        // 摘要:
        //     右眼状态
        public EyeState RightEyeState { get; set; }

        //
        // 摘要:
        //     返回可视化字符串
        public override string ToString()
        {
            return ToString(null, null);
        }
     }
 
     //
    // 摘要:
    //     眼睛状态
    [Description("眼睛状态")]
    public enum EyeState
    {
        //
        // 摘要:
        //     眼睛闭合
        [Description("闭眼")]
        Close,
        //
        // 摘要:
        //     眼睛张开
        [Description("睁眼")]
        Open,
        //
        // 摘要:
        //     不是眼睛区域
        [Description("不是眼睛区域")]
        Random,
        //
        // 摘要:
        //     状态无法判断
        [Description("无法判断")]
        Unknown
    }

  调用EyeStateDetector进行眼睛状态检测主要包括以下步骤:
  1)调用faceDetector类获取图片的人脸信息;
  2)调用FaceLandmarker类获取人脸关键点信息;
  3)调用EyeStateDetector类的Detect函数获取指定人脸的左右眼睛的开闭状态。
  根据上述步骤编写了EyeStateDetector类的测试程序,测试效果截图如下所示(人脸越清晰,检测效果越准确)。

在这里插入图片描述
在这里插入图片描述

参考文献:
[1]https://github.com/ViewFaceCore/ViewFaceCore

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/53747.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

科普 | OSI模型

本文简要地介绍 OSI 模型 1’ 2’ 3。 更新&#xff1a;2023 / 7 / 23 科普 | OSI模型 术语节点链路协议网络拓扑 概念作用结构应用层表示层会话层传输层网络层数据链路层物理层 数据如何流动OSI 和TCP/IP 的对应关系和协议参考链接 术语 节点 节点&#xff08; Node &#…

canvas实现图片平移,缩放的例子

最近有个水印预览的功能&#xff0c;需要用到canvas 绘制&#xff0c;canvas用的不是很熟&#xff0c;配合chatAI 完成功能。 效果如下 代码如下 原先配置是响应式的&#xff0c;提出来了就不显示操作了&#xff0c;模拟值都写死的 界面给大家参考阅读。 <!DOCTYPE html…

element-tree-line el-tree 添加结构线 添加虚线

概览&#xff1a;给element组件添加上虚线&#xff0c;通过使用插件element-tree-line 参考连接&#xff1a; 参考别人的博客 安装插件&#xff1a; # npm npm install element-tree-line -S # yarn yarn add element-tree-line -S main.js全局注册引入插件&#xff1a; imp…

PCL点云处理之最小二乘空间直线拟合(3D) (二百零二)

PCL点云处理之最小二乘空间直线拟合(3D) (二百零二) 一、算法简介二、实现代码三、效果展示一、算法简介 对于空间中的这样一组点:大致呈直线分布,散乱分布在直线左右, 我们可采用最小二乘方法拟合直线,更进一步地,可以通过点到直线的投影,最终得到一组严格呈直线分布…

气象名词解释

文章目录 SAMPSAAMO SAM SAM(Southern Annualr Mode) 南半球环状模&#xff0c;是南半球大气环流和气候变异的一种重要现象。具有如下特点&#xff1a; 主要特点&#xff1a; 赤道附近环流&#xff1a;在 SAM 正相位期间&#xff0c;赤道附近的环流增强&#xff0c;称为正 SA…

使用多数据源dynamic-datasource-spring-boot-starter遇到的问题记录

记录使用多数据源dynamic-datasource-spring-boot-starter遇到的问题&#xff1a; 1、工程启动失败 缺少clickhouse连接驱动&#xff0c;引入对应的maven依赖 <!--ck连接驱动--><dependency><groupId>ru.yandex.clickhouse</groupId><artifactId>…

vue3搭建Arco design UI框架

技术&#xff1a;Vue3.2.40 UI框架&#xff1a;Arco design 2.44.7 需要安装:yarn 1.22.19 和npm 8.19.4 1.第一步安装本地全局arco脚手架 管理员运行CMD npm i -g arco-cli安装成功后如下&#xff1a; 2.第二步在需要存放项目的文件夹拉取项目 我这里把项目存放在 D:\W…

【Android】APP网络优化学习笔记

网络优化原因 进行网络优化对于移动应用程序而言非常重要&#xff0c;原因如下&#xff1a; 用户体验&#xff1a; 网络连接是移动应用程序的核心功能之一。通过进行网络优化&#xff0c;可以提高应用的加载速度和响应速度&#xff0c;减少用户等待时间&#xff0c;提供更流…

学习笔记|大模型优质Prompt开发与应用课(二)|第四节:大模型帮你写代码,小白也能做程序

文章目录 01软件开发产业趋势与技术革新软件开发产业趋势与技术革新技术性人才很受欢迎软件开发产业趋势与技术革新技术门槛越来越低 02 大模型驱动的软件开发需求分析prompt 产品设计开发和测试prompt输出回复promptpromptprompt回复 发布和部署promptprompt 维护和更新prompt…

BES2700 SDK绝对时间获取方法

1 代码 2 实验 log 需要换算下

垃圾焚烧设备PLC数据采集远程监控系统解决方案

PLC可以应用于各种污染废物处理设备的自动化控制&#xff0c;如污水处理、垃圾焚烧、空气处理等。例如&#xff0c;通过对垃圾焚烧PLC设备的数据采集&#xff0c;可以实现对垃圾焚烧的温度、时间、氧气流量等数据的远程监控和实时预警&#xff0c;有效提高垃圾焚烧效率和环保效…

最全的3D动画软件介绍来了!良心总结9款3D动画制作必备软件

现在&#xff0c;市面上流行着的3D动画软件如此之多&#xff0c;以至于很难敲定到底哪一款更适合自己或自己的团队。本篇文章带来了一些热门的、被视为行业标准的3D动画软件的介绍&#xff0c;帮助您更好地做出选择。 不仅如此&#xff0c;您还能从文章中了解到在数字内容创建…

day44-Custom Range Slider(自定义范围滑块)

50 天学习 50 个项目 - HTMLCSS and JavaScript day44-Custom Range Slider&#xff08;自定义范围滑块&#xff09; 效果 index.html <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8" /><meta name"viewp…

从 0 到 1!得物如何打造通用大模型训练和推理平台

1.背景 近期&#xff0c;GPT 大模型的发布给自然语言处理&#xff08;NLP&#xff09;领域带来了令人震撼的体验。随着这一事件的发生&#xff0c;一系列开源大模型也迅速崛起。依据一些评估机构的评估&#xff0c;这些开源模型大模型的表现也相当不错。一些大模型的评测情况可…

Git移除commit过的大文件

前言&#xff1a;在提交推送本地更改至仓库时&#xff0c;误将大文件给提交了&#xff0c;导致push时报错文件过大&#xff0c;因此需要将已经commit的大文件移除后再push 若已知要删除的文件或文件夹路径&#xff0c;则可以从第4步开始 1.对仓库进行gc操作 $ git gc 2.查询…

【使用深度学习的城市声音分类】使用从提取音频特征(频谱图)中提取的深度学习进行声音分类研究(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

Helm KinD kubectl krew Istio急速安装

本篇更新网上许多安装失效的工具&#xff0c;如krew和KinD。 本篇测试使用时间为2023/7/20&#xff0c;基本都为最新版本或最新稳定版本。 前置 Helm 是 Kubernetes 的一个包管理工具&#xff0c;用于简化 Kubernetes 应用的部署和管理。Helm 使用名为 "chart" 的打…

Vue+Nodejs+Express+Minio 实现本地图片上传

安装Minio,Minio server和Minio client都要下载可以自定义安装目录 安装完成之后,可以将minio配置成环境变量方便使用 配置了环境变量启动命令式 minio server start,默认账号密码minioadmin和minioadmin,点击9000端口的这个链接,即可访问客户端 nodejs连接Minio,简易服务进…

CSDN 一周年创作纪念日(PS:vnjohn)

&#x1f52d; 嗨&#xff0c;您好 &#x1f44b; 我是 vnjohn&#xff0c;在互联网企业担任 Java 开发&#xff0c;CSDN 优质创作者 &#x1f4d6; 推荐专栏&#xff1a;Spring、MySQL、Nacos、Java&#xff0c;后续其他专栏会持续优化更新迭代 &#x1f332;文章所在专栏&…

AWS——01篇(AWS入门 以及 AWS之EC2实例及简单实用)

AWS——01篇&#xff08;AWS入门 以及 AWS之EC2实例及简单实用&#xff09; 1. 前言2. 创建AWS账户3. EC23.1 启动 EC2 新实例3.1.1 入口3.1.2 设置名称 选择服务3.1.3 创建密钥对3.1.4 网络设置——安全组3.1.4.1 初始设置3.1.4.2 添加安全组规则&#xff08;开放新端口&…