人脸识别活体检测技术探讨-程序员宅基地

技术标签: 人脸识别  活体检测  

人脸识别活体检测技术探讨:多物理特征融合加分类器的算法技术
随着人脸识别、人脸解锁等技术在金融、门禁、考勤、人证合一等日常生活中的广泛应用,人脸防伪/活体检测(Face Anti-Spoofing)技术在近年来得到了越来越多的关注。
简单来说,活体检测就是要识别出成像设备(摄像头、手机等)上检测到的人脸图像是来自真实的人脸,还是某种形式的攻击或伪装。这些攻击形式主要包括照片(包括纸质照片和手机、平板等电子设备上的照片)攻击、视频回放攻击、面具攻击等。
活体检测包括普通彩色(RGB)摄像头上的检测,也包括红外摄像头、三维深度摄像头上的检测。后面两种相对容易实现,这里主要讨论普通RGB摄像头上的活体检测。
以前的动作活体检测的方式具有很高的安全性,但要求用户配合做几个动作,因此体验不好。现在的活体检测不需要用户动作配合,被称作静默活体检测。 此外,活体检测要求实时完成,在不超过1秒,最好在300毫秒内完成识别。
现在主流的活体识别算法基本可以分为两种类型。第一个类型使用特定的某种物理特征,或多种物理特征的融合,通过深度学习方面的训练分类器,来区分是活体,还是攻击(或者是哪种形式的攻击)。另一个方式是使用卷积神经网络(CNN)的方法,直接在RGB图像(或者转换到其它色度空间)上使用深度神经网络来提取特征,最后通过分类器来区分是活体还是非活体。为了提取时间上多帧而不是单帧的信息,也可以结合使用RNN的方法。CNN的方法能达到很好的效果,但通常比较耗时,不能满足实际应用中嵌入式设备的实时识别的要求。而且,当物理特征挑选使用恰当时,第一种方法能够达到非常好、甚至超越CNN的效果。
活体检测中的物理特征主要分为纹理特征、颜色特征、频谱特征、运动特征、图像质量特征等,此外,还包括心跳特征等。其中纹理特征包括很多,但最主流的是LBP、HOG、LPQ等。颜色特征除了RGB之外,学术界发现HSV或YCbCr具有更好的区分活体非活体的性能,被广泛用作不同的纹理特征上。频谱特征的原理是活体、非活体在某些频段具有不同的响应。运动特征提取目标在不同时间上的变化,是一个有效的办法,但通常耗时较久,达不到实时的要求。图像质量特征有很多描述方式,比如反射、散射、边缘或形状等。
经过多种算法的比较,我们的活体检测选用了多种物理特征融合加上分类器的算法。我们的计算优势体现在以下几个方面。
1)我们的物理特征选用了上面描述的其中几种,涵盖了纹理特征、颜色、频谱特征、图像质量特征,和可选的运动特征。
2)我们研究了几种融合方式:i)在特征上进行融合;ii)在自动编码器(auto encoder)上进行融合;iii)在分类得分上融合。我们选用了准确率最高,易用性好,速度快的方法。
3)我们使用的分类器算法超越传统的支持向量机(SVM)算法,使用了最新深度学习方法,比如center loss。
算法经过优化之后,可以有效提取各种摄像头上的活体和非活体的不同响应,根据我们在多个主流厂家摄像头及手机的测试结果表明,识别准确率达到99%以上。同时,实时性能优异,能在300毫秒内快速完成识别。
当然,泛化性能对所有活体识别来说都是一个挑战,这需要采集海量的数据来进行训练,涵盖市面上主要的手机、摄像头型号。我们希望使用我们的SDK的开发者们,可以分享你们能获取的活体、非活体照片,以便于我们进一步优化我们算法的准确率。
到我们的AI开放平台上可以下载并免费使用的人脸识别及活体检测SDK https://ai.deepcam.cn/#/home 欢迎大家来使用。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_43837774/article/details/86506848

智能推荐

关于c语言main函数中int argc,char **argv的理解_int argc, char** argv-程序员宅基地

文章浏览阅读3.6k次,点赞4次,收藏23次。c 语言main函数参数解释_int argc, char** argv

在对HDFS格式化,执行hadoop namenode -format命令时-程序员宅基地

文章浏览阅读5.9k次,点赞3次,收藏7次。在对HDFS格式化,执行hadoop namenode -format命令时,出现未知的主机名的问题,异常信息如下所示: [shirdrn@localhost bin]$ hadoop namenode -format11/06/22 07:33:31 INFO namenode.NameNode: STARTUP_MSG: /*******************************..._多次格式化hdfs namenode -format

一位软件工程师的6年总结_internetgetlastresponseinfo delphi-程序员宅基地

文章浏览阅读558次。一位软件工程师的6年总结 作者:成晓旭 (声明:欢迎转载,请保证文章的完整性) “又是一年毕业时”,看到一批批学子离开人生的象牙塔,走上各自的工作岗位;想想自己也曾经意气风发、踌躇满志,不觉感叹万千……本文是自己工作6年的经历沉淀或者经验提炼,希望对所有的软件工程师们有所帮助,早日实现自己的人生目标。本文主要是关于软件开发人员如何提高自己的软件专业技术方面的具体建议,前面几点旨在确定大的方向,算是_internetgetlastresponseinfo delphi

QTableWidget常用信号的功能_qtablewidget信号-程序员宅基地

文章浏览阅读1.6k次,点赞5次,收藏6次。2023年11月18日,周六上午。_qtablewidget信号

numpy__python(第二个)_创建一个数组,数组的shape为(3,4),元素值在10-20之间-程序员宅基地

文章浏览阅读1.2k次。numpynumpy属性.shape 查看数组的形状.ndim 查看数组中有几个维度.size 查看数组中有几个数据.dtype 查看数组是什么类型.itemsize 查看数组中数据占几个字节import numpy as npa=np.arange(0,12).reshape(3,4) #查看a是什么形状print(a.shape) #查看a有几个维度print(a.ndim) #查看a有几个数据p_创建一个数组,数组的shape为(3,4),元素值在10-20之间

海尔电商峰值系统架构设计最佳实践_电商系统 项目团队 最佳实践-程序员宅基地

文章浏览阅读2.2k次。摘要:本文重点介绍了海尔电商平台的架构方案,也用不少篇幅阐述面临的场景和挑战,以及在架构方案决策过程中的关注点。其实作为一个优秀的电商平台,提供极致的用户体验、让技术最大化地创造价值,才是架构的终极目标。多数电商平台都会经历相似的过程,流量和业绩每年以几倍至十几倍的速度增长,每年都要接受几次大规模、全方位的系统检阅,例如双11、周年庆等购物狂欢节,期间流量和订单可能是日常的十几倍甚_电商系统 项目团队 最佳实践

随便推点

nginx-413-Request Entity Too Large-程序员宅基地

文章浏览阅读81次。文章目录Request Entity Too Large1. 问题描述2. 解决Request Entity Too Large1. 问题描述[!NOTE]在使用nginx时,在上传文件接口通过nginx转发到服务器时,发现抛出“error”错误,仔细发现抛出错误内容为:413-Request Entity Too Large,发现是nginx限制了文件上传的大小,直接将请求拦截了。这报错是因为nginx的默认上传文件大小配置client_max_body_size只有2MB。2. 解决[

MySQL 高级 - 存储过程 - 语法 - if判断 || 传递参数 (IN - 输入 OUT-输出)_mysql if in-程序员宅基地

文章浏览阅读398次。MySQL 高级 - 存储过程 - 语法 - if判断传递参数_mysql if in

理解编译型语言和解释型语言的本质区别、Java是编译语言还是解释语言?_编写的程序属于编译语言吗-程序员宅基地

文章浏览阅读816次。非常推荐的一篇文章:某天周末,CPU和JVM聊了起来···比较Java和Nodejs虽然都是翻译后执行但是脚本语言由高级语言封装的指令集,而不是机器指令集。翻译为高级语言后由高级语言再执行而编程语言是直接翻译为机器指令集这应该就是区分编程语言和脚本语言的本质了Nodejs本质是C的上层封装,所以是脚本语言。编译型语言:程序在执行之前需要一个专门的编译过程,把程序编译成 为机器语言的文件,运行时不需要重新翻译,直接使用编译的结果就行了Java翻译执行的是汇编指令,所以是编译语言._编写的程序属于编译语言吗

linux shell 脚本记录日志_linux执行脚本打印生成日志-程序员宅基地

文章浏览阅读1.6k次。shell 脚本记日志_linux执行脚本打印生成日志

python爬虫scrapy框架爬取网页数据_python爬虫----(scrapy框架提高(1),自定义Request爬取)...-程序员宅基地

文章浏览阅读179次。最近看scrappy0.24官方文档看的正心烦的时候,意外发现中文翻译0.24文档,简直是福利呀~ 外链网址已屏蔽结合官方文档例子,简单整理一下:import scrapyfrom myproject.items import MyItemclass MySpider(scrapy.Spider):name = 'myspider'start_urls = ('外链网址已屏蔽','外链网址已屏蔽'..._利用python的request库或scrapy框架搭建爬虫网络,爬取内容

uvm中sequence和virtual sequence中objection的控制_seq body中的objection-程序员宅基地

文章浏览阅读740次。sequence中的objection的控制策略在整颗UVM树中,树的结点很多,理论来说在任何组件中都可以控制objection。一般在sequence和virtual sequence中,也有在scoreboard和test中。一般来说,在一个实际的验证平台中,通常会有以下两种objection的控制策略:第一种:在scoreboard中进行控制,但要注意当收集到指定数量的数据后,利用fork…join_any跳出循环。第二种:在sequence中提起sequencer的objection,当_seq body中的objection

推荐文章

热门文章

相关标签