[C#]winform利用seetaface6实现C#人脸检测活体检测口罩检测年龄预测性别判断眼睛状态检测

【官方框架地址】

https://github.com/ViewFaceCore/ViewFaceCore
【算法介绍】

SeetaFace6是由中国科技公司自主研发的一款人脸识别技术,它基于深度学习算法,能够快速、准确地识别出人脸,并且支持多种应用场景,如门禁系统、移动支付、安全监控等。SeetaFace6的识别准确率高达99%以上,并且可以在各种复杂的环境下进行工作,如不同的光照条件、面部朝向、面部表情等。

SeetaFace6的研发背景是基于中国科技公司对于人脸识别技术的长期研究和探索。在过去的几年中,随着深度学习技术的不断发展,人脸识别技术也取得了长足的进步。然而,由于人脸识别的技术难度较大,很多算法和模型都存在着准确率不高、容易受到环境影响等问题。因此,开发一种高效、稳定的人脸识别技术一直是人工智能领域的热门话题。

SeetaFace6的设计原理是通过深度学习算法对大量的人脸数据进行训练,从而得到一个能够自动识别出人脸的模型。这个模型可以自动提取出人脸的特征,并且与数据库中的数据进行比对,最终得到识别结果。SeetaFace6采用了多种技术手段来提高识别准确率和稳定性,如使用卷积神经网络进行特征提取、使用数据增强技术增加训练数据量、使用迁移学习等技术来优化模型等。

SeetaFace6的应用场景非常广泛。在门禁系统方面,它可以用于企业的安全防范、学校的校园安全、小区的住宅管理等场景,通过人脸识别技术来控制人员的进出和访问权限。在移动支付方面,它可以用于手机银行、第三方支付等场景,通过人脸识别技术来完成身份验证和支付操作。在安全监控方面,它可以用于公共场所的安全监控、交通监控等场景,通过人脸识别技术来追踪嫌疑人的行踪和身份。

除了以上应用场景外,SeetaFace6还可以应用于人脸美颜、人脸表情识别、人脸合成等领域。例如,在人脸美颜方面,它可以自动识别出人的面部特征和表情,并且根据不同的场景和需求进行美颜处理,让人像更加美丽动人。在人脸表情识别方面,它可以自动识别出人的面部表情和情感状态,并且根据不同的情感状态进行相应的处理和反馈。在人脸合成方面,它可以自动生成与目标人物相似的虚拟人脸图像,并且可以应用于虚拟现实、游戏开发等领域。

总之,SeetaFace6是一款高效、稳定的人脸识别技术,具有广泛的应用前景和市场前景。它的出现将为人脸识别技术的发展和应用带来新的机遇和挑战。未来,随着人工智能技术的不断发展,我们相信SeetaFace6将会在更多的领域得到应用和发展,并且将不断推动人脸识别技术的创新和进步。

【效果展示】

人脸检测

年龄预测 

口罩检测 

性别判断 

眼睛状态判断 

活体检测(局部) 


【官方部分代码】

注意以下是官方实例,不是我示范代码

using SkiaSharp;
using System;
using System.Diagnostics;
using System.Linq;
using System.Numerics;
using ViewFaceCore.Configs;
using ViewFaceCore.Core;
using ViewFaceCore.Extensions;
using ViewFaceCore.Model;namespace ViewFaceCore.Example.ConsoleApp
{internal class Program{private readonly static string imagePath0 = @"images/Jay_3.jpg";private readonly static string imagePath1 = @"images/Jay_4.jpg";private readonly static string maskImagePath = @"images/mask_01.jpeg";static void Main(string[] args){Console.WriteLine("Hello, ViewFaceCore!\n");//人脸识别DemoFaceDetectorDemo();//关键点标记FaceMarkDemo();//戴口罩识别DemoMaskDetectorDemo();//质量检测DemoFaceQualityDemo();//活体检测DemoAntiSpoofingDemo();//提取并对比特征值FaceRecognizerDemo();Console.ReadKey();}static void FaceDetectorDemo(){using var bitmap = SKBitmap.Decode(imagePath0);using FaceDetector faceDetector = new FaceDetector();FaceInfo[] infos = faceDetector.Detect(bitmap);Console.WriteLine($"识别到的人脸数量:{infos.Length} 个人脸信息:\n");Console.WriteLine($"No.\t人脸置信度\t位置信息");for (int i = 0; i < infos.Length; i++){Console.WriteLine($"{i}\t{infos[i].Score:f8}\t{infos[i].Location}");}Console.WriteLine();}static void MaskDetectorDemo(){using var bitmap0 = SKBitmap.Decode(imagePath0);using var bitmap_mask = SKBitmap.Decode(maskImagePath);using MaskDetector maskDetector = new MaskDetector();using FaceDetector faceDetector = new FaceDetector();//FaceType需要用口罩模型using FaceRecognizer faceRecognizer = new FaceRecognizer(new FaceRecognizeConfig(){FaceType = FaceType.Mask});using FaceLandmarker faceMark = new FaceLandmarker();var info0 = faceDetector.Detect(bitmap0).First();var result0 = maskDetector.PlotMask(bitmap0, info0);Console.WriteLine($"是否戴口罩:{(result0.Status ? "是" : "否")},置信度:{result0.Score}");var info1 = faceDetector.Detect(bitmap_mask).First();var result1 = maskDetector.PlotMask(bitmap_mask, info1);Console.WriteLine($"是否戴口罩:{(result1.Status ? "是" : "否")},置信度:{result1.Score}");var result = faceRecognizer.Extract(bitmap_mask, faceMark.Mark(bitmap_mask, info1));Console.WriteLine($"是否识别到人脸:{(result != null && result.Sum() > 1 ? "是" : "否")}");Console.WriteLine();}static void FaceMarkDemo(){using var bitmap0 = SKBitmap.Decode(imagePath0);using var faceImage = bitmap0.ToFaceImage();using FaceDetector faceDetector = new FaceDetector();using FaceLandmarker faceMark = new FaceLandmarker();Stopwatch sw = new Stopwatch();var infos = faceDetector.Detect(faceImage);var markPoints = faceMark.Mark(faceImage, infos[0]);sw.Stop();Console.WriteLine($"识别到的关键点个数:{markPoints.Length},耗时:{sw.ElapsedMilliseconds}ms");foreach (var item in markPoints){Console.WriteLine($"X:{item.X}\tY:{item.Y}");}Console.WriteLine();}static void FaceQualityDemo(){using var bitmap = SKBitmap.Decode(imagePath0);using FaceQuality faceQuality = new FaceQuality();using FaceDetector faceDetector = new FaceDetector();using FaceLandmarker faceMark = new FaceLandmarker();var info = faceDetector.Detect(bitmap).First();var markPoints = faceMark.Mark(bitmap, info);Stopwatch sw = Stopwatch.StartNew();var brightnessResult = faceQuality.Detect(bitmap, info, markPoints, QualityType.Brightness);Console.WriteLine($"{QualityType.Brightness}评估,结果:{brightnessResult},耗时:{sw.ElapsedMilliseconds}ms");sw.Restart();var resolutionResult = faceQuality.Detect(bitmap, info, markPoints, QualityType.Resolution);Console.WriteLine($"{QualityType.Resolution}评估,结果:{resolutionResult},耗时:{sw.ElapsedMilliseconds}ms");sw.Restart();var clarityResult = faceQuality.Detect(bitmap, info, markPoints, QualityType.Clarity);Console.WriteLine($"{QualityType.Clarity}评估,结果:{clarityResult},耗时:{sw.ElapsedMilliseconds}ms");sw.Restart();var clarityExResult = faceQuality.Detect(bitmap, info, markPoints, QualityType.ClarityEx);Console.WriteLine($"{QualityType.ClarityEx}评估,结果:{clarityExResult},耗时:{sw.ElapsedMilliseconds}ms");sw.Restart();var integrityExResult = faceQuality.Detect(bitmap, info, markPoints, QualityType.Integrity);Console.WriteLine($"{QualityType.Integrity}评估,结果:{integrityExResult},耗时:{sw.ElapsedMilliseconds}ms");sw.Restart();var structureeResult = faceQuality.Detect(bitmap, info, markPoints, QualityType.Structure);Console.WriteLine($"{QualityType.Structure}评估,结果:{structureeResult},耗时:{sw.ElapsedMilliseconds}ms");sw.Restart();var poseResult = faceQuality.Detect(bitmap, info, markPoints, QualityType.Pose);Console.WriteLine($"{QualityType.Pose}评估,结果:{poseResult},耗时:{sw.ElapsedMilliseconds}ms");sw.Restart();var poseExeResult = faceQuality.Detect(bitmap, info, markPoints, QualityType.PoseEx);Console.WriteLine($"{QualityType.PoseEx}评估,结果:{poseExeResult},耗时:{sw.ElapsedMilliseconds}ms");sw.Stop();Console.WriteLine();}static void AntiSpoofingDemo(){using var bitmap = SKBitmap.Decode(imagePath0);using FaceDetector faceDetector = new FaceDetector();using FaceLandmarker faceMark = new FaceLandmarker();using FaceAntiSpoofing faceAntiSpoofing = new FaceAntiSpoofing();var info = faceDetector.Detect(bitmap).First();var markPoints = faceMark.Mark(bitmap, info);Stopwatch sw = Stopwatch.StartNew();sw.Start();var result = faceAntiSpoofing.AntiSpoofing(bitmap, info, markPoints);Console.WriteLine($"活体检测,结果:{result.Status},清晰度:{result.Clarity},真实度:{result.Reality},耗时:{sw.ElapsedMilliseconds}ms");sw.Stop();Console.WriteLine();}static void FaceRecognizerDemo(){Stopwatch sw = Stopwatch.StartNew();using var faceImage0 = SKBitmap.Decode(imagePath0).ToFaceImage();using var faceImage1 = SKBitmap.Decode(imagePath1).ToFaceImage();//检测人脸信息using FaceDetector faceDetector = new FaceDetector();FaceInfo[] infos0 = faceDetector.Detect(faceImage0);FaceInfo[] infos1 = faceDetector.Detect(faceImage1);//标记人脸位置using FaceLandmarker faceMark = new FaceLandmarker();FaceMarkPoint[] points0 = faceMark.Mark(faceImage0, infos0[0]);FaceMarkPoint[] points1 = faceMark.Mark(faceImage1, infos1[0]);//提取特征值using FaceRecognizer faceRecognizer = new FaceRecognizer();float[] data0 = faceRecognizer.Extract(faceImage0, points0);float[] data1 = faceRecognizer.Extract(faceImage1, points1);//对比特征值bool isSelf = faceRecognizer.IsSelf(data0, data1);Console.WriteLine($"识别到的人脸是否为同一人:{isSelf},对比耗时:{sw.ElapsedMilliseconds}ms");Console.WriteLine();sw.Stop();}static void FaceTrackDemo(){using var faceImage = SKBitmap.Decode(imagePath0).ToFaceImage();using FaceLandmarker faceMark = new FaceLandmarker();using FaceTracker faceTrack = new FaceTracker(new FaceTrackerConfig(faceImage.Width, faceImage.Height));var result = faceTrack.Track(faceImage);if (result == null || !result.Any()){Console.WriteLine("未追踪到任何人脸!");return;}foreach (var item in result){FaceInfo faceInfo = item.ToFaceInfo();//标记人脸var points = faceMark.Mark(faceImage, faceInfo);}}}
}


【视频演示】

https://www.bilibili.com/video/BV1eK411x7wo/
【示范源码下载】

https://download.csdn.net/download/FL1623863129/88713155
【测试环境】

vs2019

netframework4.7.2或者netframework4.8

ViewFaceCore

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

智慧校园电子班牌管理系统源码 Java Android原生

智慧校园电子班牌系统源码是一种智能化的教育管理解决方案&#xff0c;它可以在学校内实现信息共享、教学管理、学生管理、家校互通等各个方面的协调与配合&#xff0c;帮助教师、学生和家长更加高效地开展教学活动、管理学生、协同合作&#xff0c;从而推动学校教育水平的提高…

Redis内存策略:「过期Key删除策略」+ 「内存淘汰策略」

Redis之所以性能强&#xff0c;最主要的原因就是基于内存存储&#xff0c;然而单节点的Redis其内存大小不宜过大&#xff0c;否则会影响持久化或主从同步的性能。 Redis内存满了&#xff0c;会发生什么&#xff1f; 在Redis的运行内存达到了某个阈值&#xff0c;就会触发内存…

图神经网络入门

图神经网络&#xff08;GNN&#xff09;是一组在图领域工作的深度学习方法。 这些网络最近已应用于多个领域&#xff0c;包括&#xff1a; 组合优化、推荐系统、计算机视觉—仅举几例。 这些网络还可用于对大型系统进行建模&#xff0c;例如社交网络、蛋白质-蛋白质相互作用网络…

软件测试方法分类-按测试对象划分

接上一篇,下来我们再细讲,第四个维度的分类, 软件测试方法分类-按测试对象划分 本章节重点介绍非功能测试的相关知识,因为功能测试的基本在之前的分类都是有涉及的。 一、非功能测试 1,性能测试(Performance Testing) 检查系统是否满足需求规格说明书中规定的性能。 …

pytorch07:损失函数与优化器

目录 一、损失函数是什么二、常见的损失函数2.1 nn.CrossEntropyLoss交叉熵损失函数2.1.1 交叉熵的概念2.2.2 交叉熵代码实现2.2.3 加权重损失 2.2 nn.NLLLoss2.2.1 代码实现 2.3 nn.BCELoss2.3.1 代码实现 2.4 nn.BCEWithLogitsLoss2.4.1 代码实现 三、优化器Optimizer3.1 什么…

Redis入门-五种数据类型

大家好我是苏麟 , 今天来说说Reids五种基本数据类型 . 五种常用数据类型介绍 大纲 字符串操作命令哈希操作命令列表操作命令集合操作命令有序集合操作命令通用命令 Redis存储的是key-value结构的数据&#xff0c;其中key是字符串类型&#xff0c;value有5种常用的数据类型&…

【图神经网络导论】之第9章模型变体(刘知远)

第9章不同图类型的模型变体 文章目录 第9章不同图类型的模型变体9.1 有向图9.2 异构图9.3 带有边信息的图9.4 动态图9.5 多维图 第4章介绍的基础GNN模型"被用于处理无向图&#xff0c;这些图包含具有标签的节点&#xff0c;是最简单的图。然而&#xff0c;在现实世界中还有…

Linux基础知识点(八-POSXI互斥锁)

目录 一、互斥锁基本概念 1.1 互斥相关背景概念 1.2 互斥锁(mutex) 1.3 死锁 二、初始化互斥锁 2.1 静态初始化 2.2 动态初始化 三、获取与释放互斥锁 四、销毁互斥锁 一、互斥锁基本概念 1.1 互斥相关背景概念 临界资源&#xff1a;多线程执行流共享的资源就叫做…

06.函数和模块的使用

函数和模块的使用 在讲解本章节的内容之前&#xff0c;我们先来研究一道数学题&#xff0c;请说出下面的方程有多少组正整数解。 事实上&#xff0c;上面的问题等同于将8个苹果分成四组每组至少一个苹果有多少种方案。想到这一点问题的答案就呼之欲出了。 可以用Python的程序来…

基于ssm的大湾区旅游推荐系统的设计与实现+vue论文

摘 要 如今社会上各行各业&#xff0c;都喜欢用自己行业的专属软件工作&#xff0c;互联网发展到这个时候&#xff0c;人们已经发现离不开了互联网。新技术的产生&#xff0c;往往能解决一些老技术的弊端问题。因为传统大湾区旅游景点信息管理难度大&#xff0c;容错率低&…

美创科技葛宏彬:夯实安全基础,对医疗数据风险“逐个击破”

导读 解决医疗机构“临床业务数据合规流动”与“重要数据安全防护”两大难题。 2023年11月11日&#xff0c;在2023年南湖HIT论坛上&#xff0c;HIT专家网联合杭州美创科技股份有限公司&#xff08;以下简称美创科技&#xff09;发布《医疗数据安全风险分析及防范实践》白皮书…

目标检测COCO数据集与评价体系mAP

1.mAP 2.IoU IoU也就是交并比&#xff0c;也称为 Jaccard 指数&#xff0c;用于计算真实边界框与预测边界框之间的重叠程度。它是真值框与预测边界框的交集和并集之间的比值。Ground Truth边界框是测试集中手工标记的边界框&#xff0c;用于指定目标图像的位置以及预测的边界框…

浅讲人工智能,初识人工智能几个重要领域。

&#x1f3c6;作者简介&#xff0c;普修罗双战士&#xff0c;一直追求不断学习和成长&#xff0c;在技术的道路上持续探索和实践。 &#x1f3c6;多年互联网行业从业经验&#xff0c;历任核心研发工程师&#xff0c;项目技术负责人。 &#x1f389;欢迎 &#x1f44d;点赞✍评论…

Javaweb之Mybatis的XML配置文件的详细解析

2. Mybatis的XML配置文件 Mybatis的开发有两种方式&#xff1a; 注解 XML 2.1 XML配置文件规范 使用Mybatis的注解方式&#xff0c;主要是来完成一些简单的增删改查功能。如果需要实现复杂的SQL功能&#xff0c;建议使用XML来配置映射语句&#xff0c;也就是将SQL语句写在…

顺序表的实现(C语言)

本文章主要对顺序表的介绍以及数据结构的定义,以及几道相关例题,帮助大家更好理解顺序表. 文章目录 前言 一、顺序表的静态实现 二、顺序表的动态实现 三.定义打印顺序表函数 四.定义动态增加顺序表长度函数 五.创建顺序表并初始化 六.顺序表的按位查找 七.顺序表的按值…

如何下载 GOES(Geostationary Operational Environmental Satellite)卫星数据

GOES是指地球静止轨道卫星&#xff08;Geostationary Operational Environmental Satellite&#xff09;系统&#xff0c;它是美国国家海洋和大气管理局&#xff08;NOAA&#xff09;和美国国家航空航天局&#xff08;NASA&#xff09;合作开发和运营的一系列气象卫星。这些卫星…

如何编写高效的正则表达式?

正则表达式&#xff08;Regular Expression&#xff0c;简称regex&#xff09;是一种强大的文本处理技术&#xff0c;广泛应用于各种编程语言和工具中。本文将从多个方面介绍正则表达式的原理、应用和实践&#xff0c;帮助你掌握这一关键技术。 正则可视化 | 一个覆盖广泛主题…

19、Kubernetes核心技术 - 资源限制

目录 一、概述 二、Kubernetes 中的资源单位 2.1、CPU资源单位 2.2、内存资源单位 三、Pod资源限制 四、namespace资源限制 4.1、为命名空间配置内存和 CPU 配额 4.2、为命名空间配置默认的内存请求和限制 4.3、为命名空间配置默认的CPU请求和限制 五、超过容器限制的…

240107-RHEL8+RHEL9配置安装:NVIDIA驱动(15步)+CUDA(4步)+CUDNN(5步)+GPU压力测试

Section 0: 基础知识 CUDA、cuDNN 和 PyTorch 版本的选择与搭配指南 安装优先级: 显卡驱动 → CUDA → CUDA Toolkit → cuDNN → Pytorch 即显卡驱动决定了CUDA版本&#xff0c;CUDA版本决定了CUDA Toolkit、cuDNN、Pytorch各自的版本提前下载 &#xff5c; CUDA提前下载 &am…

超自动化助力企业财务转型升级

在快节奏的财务规划与分析环境中&#xff0c;传统的预算方法虽长期以来一直是企业制定有效决策的支柱&#xff0c;但已不足以驾驭当今复杂的商业环境。不断的经济变化、市场的不确定性以及利益相关者的需求增加促使企业寻求更敏捷的解决方案。如今&#xff0c;部分企业开始尝试…