人脸识别Demo解析C#

本文详述了虹软人脸识别SDK在C#环境下的应用,包括人脸识别、活体检测等核心功能。通过分析虹软的C# Demo,介绍了如何初始化引擎、检测人脸信息、性别和年龄检测以及活体检测的实现,同时分享了在开发过程中可能遇到的问题及解决方案,为C#开发者接入人脸识别技术提供了参考。
摘要由CSDN通过智能技术生成

概述

不管你注意到没有,人脸识别已经走进了生活的角角落落,钉钉已经支持人脸打卡,火车站实名认证已经增加了人脸自助验证通道,更别提各个城市建设的『智能城市』和智慧大脑了。在人脸识别业界,通常由人脸识别提供商和人脸识别应用接入方组成,从头到尾研发人脸识别技术需要极强的专用技术知识和数学算法功底,对于大多数企业来说,选择人工智能AI公司现成的人脸识别技术引擎是一个比较适合的解决方法。虹软公司在2017年开放了人脸识别平台1.0版本,经过三年的技术迭代和更新,目前已经推出了2.2版本,主打离线,免费,适合场景比较广泛。为了方便开发者接入,虹软官方提供了各个语言版本的Demo程序,由于虹软并没有提供C#版本的SDK,因此,他们提供的C#版本的SDK就更有参考价值了。

虹软Demo的下载地址如下:https://github.com/ArcsoftEscErd/ArcfaceDemo_CSharp_2.2 在开始之前,建议你下载它。

什么是人脸识别

人脸识别,是基于人的脸部特征信息进行身份识别的一种生物识别技术。用摄像机或摄像头采集含有人脸的图像或视频流,并自动在图像中检测和跟踪人脸,进而对检测到的人脸进行脸部识别的一系列相关技术,通常也叫做人像识别、面部识别。
而人脸识别的过程可以简的概括为:检测人脸框->提取人脸特征信息->人脸库检索匹配信息三个过程。

人脸识别的应用场景

人脸识别主要用于身份识别。由于视频监控正在快速普及,众多的视频监控应用迫切需要一种远距离、用户非配合状态下的快速身份识别技术,以求远距离快速确认人员身份,实现智能预警。人脸识别技术无疑是最佳的选择,采用快速人脸检测技术可以从监控视频图象中实时查找人脸,并与人脸数据库进行实时比对,从而实现快速身份识别。
在现实生活中,从最常见的人脸门禁,到实名制安检,景区验票,公司或者学校的人脸签到,无人超市等都有广泛的应用。

什么是活体检测

活体检测检测顾名思义就是通过识别活体上的生理信息,来区分用照片、硅胶、塑料等非生命物质伪造的生物特征。人脸识别应用中的活体检测技术用来判断系统采集到的人脸图像是否来源于真实的人脸,以防止照片、视频等伪造的人脸图像被输入到系统造成误判,活体检测在无人值守场景下的人脸识别商业应有中显得至关重要。

虹软人脸识别SDK

目前市面上有很多人脸识别技术方案,从是否需要使用时联网可以分为在线和离线,从接入方式上可以分为本地识别和服务器大数据识别等方式,虹软提供的是基于本地算法特征的离线识别SDK,其基础算法使用C编写,提供全平台的离线支持.

虹软视觉视觉开放平台

虹软人脸识别SDK通过视觉开放平台提供,包含人脸识别场景中最常用到的功能组件,例如:人脸检测,人脸识别,年龄性别检测,活体检测 等,其中人脸检测针对静态和动态检测场景分别进行了算法优化,从中派生的性别和年龄检测扩充了人脸识别的使用场景,活体检测组件可以有效的保证人脸识别应用的安全性。
访问 https://ai.arcsoft.com.cn/third/mobile.html?csdn 按照网站的提示,可以注册用户和下载SDK包。

虹软的人脸识别Demo简介

虹软的SDK,和大量基于Restful风格的接口不同,没有使用普通的基于HTTP的方式,也并没有提供C#语言的SDK包,仅提供了C语言的SDK,对于C#接入有一定的困难,在发布之初有不少大神自行编写接入Demo程序,后来,虹软官方也出了Demo程序,从2018年1月的第一个版本到现在随着SDK更新的2.2版本,代码结构和注释更为清晰。

Demo效果展示

Demo是标准的C# WINFORM工程样式,通过GitHub,下载下来之后,可以直接使用VS打开.
打开之后,有一个readme.md文件,十分重要,在开始之前,请务必仔细看一下。这里把要点给大家总结一下。

  1. 注册并登录虹软开发者账号,下载Win32/Win64的ArcFace的SDK,建议下载2.2版本的。
  2. 将下载时生成的APPID和KEY填放app.config文件中的对应位置。
  3. 将下载的文件解压,根据本平台将dll解压到对应平台的目录下面
    如果上述几步都OK,程序可以正常运行,如果中间有问题,可以参考readme中的内容进行排查。

一般OK之后,系统弹出正常运行的窗口,网上找几张明星照片进行注册,对比。
如下图所示:

可以看到,虹软Demo已经可以正确的识别人脸信息。

Demo中还提供了活体检测功能,如果你的机器没有摄像头,可以外插一个USB的摄像头,点击启用摄像头,打开它。

如果我们用自己的人脸识别,会显示RGB活体,如果是用照片或者视频尝试识别,会显示『RGB假体』

人脸识别Demo代码解析

接下来进入正题,让我们打开工程视图,从代码角度解析一下虹软人脸识别Demo的代码结构及主要流程。

从上图中可以发现代码结构还是很清晰

目录 说明
Entity 用于放置一些实体类
lib 放置的第三库,主要是用于获取视频帧的内容
SDKModels SDK的字段模型类,主要是和SDK进行交互,普通使用时无需关注
SDKUtils 针对SDK功能的C#封装,建议使用Utils中的二次封装类
Utils 提供的一些工具类,这些类将复杂的SDK操作变得简单,我们可以在项目中直接使用这些类

所有的界面功能都在FaceForm.cs中,我们打开代码视图,代码各个区域的代码结构清晰,我们来看一下主要部分的功能。

参数定义

参数定义部分主要是针对一些参数进行定义,有相应的注释,我们需要关注的是图片大小和相似度。

private long maxSize = 1024 * 1024 * 2;

这个参数定义了可以识别的最大图片大小,可以根据需要进行调整。

private float threshold = 0.8f;

这个参数定义了置信度,也就是当相似度达到多少时,我们认为是一个人

引擎初始化

初始化部分的一个重要的方法 InitEngines(),作用是用来初始化人脸识别引擎。

这部分的代码首先获取配置文件的信息,然后读取这些信息,并进行引擎的激活操作,如果出现错误,则弹出提示信息。

这里需要注意的是,由于C#是支持多CPU架构的ÿ

  • 3
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值