当前位置: 首页 > news >正文

测试开源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

http://www.lryc.cn/news/99456.html

相关文章:

  • Go语言网络库net/http
  • Acwing.91 最短Hamilton路径(动态规划)
  • [hfut] [important] v4l2 vedio使用总结/opevx/ffpeg/v4l2/opencv/cuda
  • 2023年深圳杯数学建模A题影响城市居民身体健康的因素分析
  • 指令调度(Instruction Scheduling)
  • 【运维】Linux 跨服务器复制文件文件夹
  • k8s apiserver如何支持http访问?
  • Safetensors,高效安全易用的深度学习新工具
  • Unity 工具之 NuGetForUnity 包管理器,方便在 Unity 中的进行包管理的简单使用
  • 运算放大器(二):恒流源
  • 企业选择租用CRM还是一次性买断CRM?分别有哪些优势?
  • VBA_MF系列技术资料1-133
  • Android 项目架构
  • 【Linux】进程通信 — 管道
  • ROS 2 — 托管(生命周期)节点简介
  • vue2企业级项目(六)
  • OSPF的选路原则
  • 4.操作元素属性
  • uniapp 微信小程序:v-model双向绑定问题(自定义 props 名无效)
  • 【Lua学习笔记】Lua进阶——Table(3) 元表
  • AI编程常用工具 Jupyter Notebook
  • RocketMQ重复消费的解决方案::分布式锁直击面试!
  • 如何降低TCP在局域网环境下的数据传输延迟
  • 【LeetCode】78.子集
  • 认可功能介绍 - 技术声誉靠认可
  • EtherNet/IP转CAN网关can协议标准
  • 解决代理IP负载均衡与性能优化的双重挑战
  • 深度探索 Elasticsearch 8.X:function_score 参数解读与实战案例分析
  • 测牛学堂:软件测试之andorid app性能测试面试知识点总结(二)
  • 尚医通06:数据字典+EasyExcel+mongodb