[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
相关文章:
[C#]winform利用seetaface6实现C#人脸检测活体检测口罩检测年龄预测性别判断眼睛状态检测
【官方框架地址】 https://github.com/ViewFaceCore/ViewFaceCore 【算法介绍】 SeetaFace6是由中国科技公司自主研发的一款人脸识别技术,它基于深度学习算法,能够快速、准确地识别出人脸,并且支持多种应用场景,如门禁系统、移动…...
c++ execl 执行 重定向
#include <unistd.h>int main() {pid_t childPid fork(); // 创建子进程if (childPid 0) {// 子进程// 关闭标准输入、输出和错误流close(STDIN_FILENO);close(STDOUT_FILENO);close(STDERR_FILENO);// 打开要写入的文件int fd open("output.txt", O_WRONLY…...
uni-app中实现元素拖动
uni-app中实现元素拖动 1、代码示例 <template><movable-area class"music-layout"><movable-view class"img-layout" :x"x" :y"y" direction"all"><img :src"musicDetail.bgUrl" :class&…...
Java系列-Class.forName和ClassLoader.loadClass的区别
Class.forName 和 ClassLoader.loadClass 是 Java 中两种加载类的方式,它们的主要区别在于加载类的时机和对异常的处理。 1.Class.forName Class.forName 是一个静态方法,用于在运行时加载类。它返回一个 Class 对象,但在加载类的过程中&am…...
找不到模块 “path“ 或其相对应的类型声明
src别名的配置 在开发项目的时候文件与文件关系可能很复杂,因此我们需要给src文件夹配置一个别名 // vite.config.ts import {defineConfig} from vite import vue from vitejs/plugin-vue import path from path export default defineConfig({plugins: [vue()],r…...
Linux第17步_安装SSH服务
secure shell protocol简称SSH。 目的:在进行数据传输之前,SSH先对联级数据包通过加密技术进行加密处理,然后再进行数据传输,确保数据传输安全。 1、在安装前,要检查虚拟机可以上网,否则可能会导致安装失…...
C语言—数据类型
变量和基本数据类型 变量类型的概念 变量是在程序中可以发生变化的量,变量是有类型的,变量的类型决定了变量存储空间的大小以及如何解释存储的位模式。 1字节(Byte)8位(bit) 定义格式 存储类型 数据…...
静态网页设计——多彩贵州(HTML+CSS+JavaScript)(dw、sublime Text、webstorm、HBuilder X)
前言 声明:该文章只是做技术分享,若侵权请联系我删除。!! 感谢大佬的视频:https://www.bilibili.com/video/BV1cK411v7R2/?vd_source5f425e0074a7f92921f53ab87712357b 源码:https://space.bilibili.com…...
unity PDFRender Curved UI3.3
【PDF】PDFRender 链接:https://pan.baidu.com/s/1wSlmfiWTAHZKqEESxuMH6Q 提取码:csdn 【曲面ui】 Curved UI3.3 链接:https://pan.baidu.com/s/1uNZySJTW0-pPwi2FTE6fgA 提取码:csdn...
基于深度学习的停车位关键点检测系统(代码+原理)
摘要: DMPR-PS是一种基于深度学习的停车位检测系统,旨在实时监测和识别停车场中的停车位。该系统利用图像处理和分析技术,通过摄像头获取停车场的实时图像,并自动检测停车位的位置和状态。本文详细介绍了DMPR-PS系统的算法原理、…...
C#,入门教程(09)——运算符的基础知识
上一篇: C#,入门教程(08)——基本数据类型及使用的基础知识https://blog.csdn.net/beijinghorn/article/details/123906998 一、算术运算符号 算术运算符号包括:四则运算 加 , 减-, 乘*, 除/与取模%。 // 加法,运算 int va 1 …...
企业出海数据合规:GDPR中的个人数据与非个人数据之区分
GDPR仅适用于个人数据,这意味着非个人数据不在其适用范围内。因此,个人数据的定义是一个至关重要的因素,因为它决定了处理数据的实体是否要遵守该法规对数据控制者规定的各种义务。尽管如此,什么是个人数据仍然是当前数据保护制度…...
如何在Ubuntu搭建Emlog博客站点并发布至公网可随时远程访问管理界面——“cpolar内网穿透”
文章目录 前言1. 网站搭建1.1 Emolog网页下载和安装1.2 网页测试1.3 cpolar的安装和注册 2. 本地网页发布2.1 Cpolar临时数据隧道2.2.Cpolar稳定隧道(云端设置)2.3.Cpolar稳定隧道(本地设置) 3. 公网访问测试总结 前言 博客作为使…...
【金猿CIO展】是石科技CIO侯建业:算力产业赋能,促进数字经济建设
侯建业 本文由是石科技CIO侯建业撰写并投递参与“数据猿年度金猿策划活动——2023大数据产业年度优秀CIO榜单及奖项”评选。 大数据产业创新服务媒体 ——聚焦数据 改变商业 是石科技(江苏)有限公司成立于2021年,由国家超级计算无锡中心与…...
TypeScript 类
目录 1、实例 2、创建类的数据成员 3、创建实例化对象 4、完整实例 5、类的继承 6、继承类的方法重写 7、static关键字 8、instanceof运算符 9、访问控制修饰符 10、类和接口 TypeScript 是面向对象的 JavaScript。类描述了所创建的对象共同的属性和方法。支持面向对…...
Oracle分区表
文章目录 A. varchar2类型时间字段(20240102)分区实战1. 表要不要分区2. 将已经存在的表改造为分区表(时间字段,varchar2类型)3. 增加分区3.1 增加分区3.2 置换分区,不会复制索引,不要用这种语法建表,这是专门为置换分区用的3.3 分…...
【leetcode】力扣算法之旋转图像【难度中等】
题目描述 给定一个 n n 的二维矩阵 matrix 表示一个图像。请你将图像顺时针旋转 90 度。 你必须在 原地 旋转图像,这意味着你需要直接修改输入的二维矩阵。请不要 使用另一个矩阵来旋转图像。 用例 输入: matrix [[1,2,3],[4,5,6],[7,8,9]] 输出&…...
【Java集合类篇】HashMap的数据结构是怎样的?
HashMap的数据结构是怎样的? ✔️HashMap的数据结构✔️ 数组✔️ 链表 ✔️HashMap的数据结构 在Java中,保存数据有两种比较简单的数据结构: 数组和链表(或红黑树)。 HashMap是 Java 中常用的数据结构,它实现了 Map 接口。Has…...
Spring 应用合并之路(一):摸石头过河 | 京东云技术团队
公司在推进降本增效,在尝试多种手段之后,发现应用太多,每个应用都做跨机房容灾部署,则最少需要 4 台机器(称为容器更合适)。那么,将相近应用做一个合并,减少维护项目,提高…...
Android13配置selinux让system应用可读sys,proc,SN号
system权限应用读sys,proc目录及SN号 Android13预置的system应用,需要读/sys, /proc目录,读(SN)serial number号, 需要修改selinux配置,否则会报avc错. 其修改方法会比Android11复杂一些. 实现 system_app.te中添加…...
React第五十七节 Router中RouterProvider使用详解及注意事项
前言 在 React Router v6.4 中,RouterProvider 是一个核心组件,用于提供基于数据路由(data routers)的新型路由方案。 它替代了传统的 <BrowserRouter>,支持更强大的数据加载和操作功能(如 loader 和…...
蓝桥杯 2024 15届国赛 A组 儿童节快乐
P10576 [蓝桥杯 2024 国 A] 儿童节快乐 题目描述 五彩斑斓的气球在蓝天下悠然飘荡,轻快的音乐在耳边持续回荡,小朋友们手牵着手一同畅快欢笑。在这样一片安乐祥和的氛围下,六一来了。 今天是六一儿童节,小蓝老师为了让大家在节…...
Auto-Coder使用GPT-4o完成:在用TabPFN这个模型构建一个预测未来3天涨跌的分类任务
通过akshare库,获取股票数据,并生成TabPFN这个模型 可以识别、处理的格式,写一个完整的预处理示例,并构建一个预测未来 3 天股价涨跌的分类任务 用TabPFN这个模型构建一个预测未来 3 天股价涨跌的分类任务,进行预测并输…...
Qt Http Server模块功能及架构
Qt Http Server 是 Qt 6.0 中引入的一个新模块,它提供了一个轻量级的 HTTP 服务器实现,主要用于构建基于 HTTP 的应用程序和服务。 功能介绍: 主要功能 HTTP服务器功能: 支持 HTTP/1.1 协议 简单的请求/响应处理模型 支持 GET…...
Web 架构之 CDN 加速原理与落地实践
文章目录 一、思维导图二、正文内容(一)CDN 基础概念1. 定义2. 组成部分 (二)CDN 加速原理1. 请求路由2. 内容缓存3. 内容更新 (三)CDN 落地实践1. 选择 CDN 服务商2. 配置 CDN3. 集成到 Web 架构 …...
代码随想录刷题day30
1、零钱兑换II 给你一个整数数组 coins 表示不同面额的硬币,另给一个整数 amount 表示总金额。 请你计算并返回可以凑成总金额的硬币组合数。如果任何硬币组合都无法凑出总金额,返回 0 。 假设每一种面额的硬币有无限个。 题目数据保证结果符合 32 位带…...
推荐 github 项目:GeminiImageApp(图片生成方向,可以做一定的素材)
推荐 github 项目:GeminiImageApp(图片生成方向,可以做一定的素材) 这个项目能干嘛? 使用 gemini 2.0 的 api 和 google 其他的 api 来做衍生处理 简化和优化了文生图和图生图的行为(我的最主要) 并且有一些目标检测和切割(我用不到) 视频和 imagefx 因为没 a…...
从“安全密码”到测试体系:Gitee Test 赋能关键领域软件质量保障
关键领域软件测试的"安全密码":Gitee Test如何破解行业痛点 在数字化浪潮席卷全球的今天,软件系统已成为国家关键领域的"神经中枢"。从国防军工到能源电力,从金融交易到交通管控,这些关乎国计民生的关键领域…...
用鸿蒙HarmonyOS5实现中国象棋小游戏的过程
下面是一个基于鸿蒙OS (HarmonyOS) 的中国象棋小游戏的实现代码。这个实现使用Java语言和鸿蒙的Ability框架。 1. 项目结构 /src/main/java/com/example/chinesechess/├── MainAbilitySlice.java // 主界面逻辑├── ChessView.java // 游戏视图和逻辑├──…...
SpringAI实战:ChatModel智能对话全解
一、引言:Spring AI 与 Chat Model 的核心价值 🚀 在 Java 生态中集成大模型能力,Spring AI 提供了高效的解决方案 🤖。其中 Chat Model 作为核心交互组件,通过标准化接口简化了与大语言模型(LLM࿰…...
