计算机视觉子方向,计算机视觉方向简介 | 人脸识别中的活体检测算法综述

原标题:计算机视觉方向简介 | 人脸识别中的活体检测算法综述

本文转载自“SIGAI人工智能学习与实践平台”(ID:SIGAICN)

导言

1. 什么是活体检测?

判断捕捉到的人脸是真实人脸,还是伪造的人脸攻击(如:彩色纸张打印人脸图,电子设备屏幕中的人脸数字图像 以及 面具 等)

2. 为什么需要活体检测?

在金融支付,门禁等应用场景,活体检测一般是嵌套在人脸检测与人脸识别or验证中的模块,用来验证是否用户真实本人

3. 活体检测对应的计算机视觉问题:

就是分类问题,可看成二分类(真 or 假);也可看成多分类(真人,纸张攻击,屏幕攻击,面具攻击)

Anti-spoofing 1.0 时代

从早期 handcrafted 特征的传统方法说起,目标很明确,就是找到活体与非活体攻击的difference,然后根据这些差异来设计特征,最后送给分类器去决策。

那么问题来了,活体与非活体有哪些差异?

1. 颜色纹理

2. 非刚性运动变形

3. 材料 (皮肤,纸质,镜面)

4. 图像or视频质量

所以这段时期的文章都是很有针对性地设计特征,列举几篇比较重要的:

Image Distortion Analysis[1], 2015

如下图,单帧输入的方法,设计了 镜面反射+图像质量失真+颜色 等统计量特征,合并后直接送SVM进行二分类。

71b661076d7182de0e8bff756eccbee7.png

Image Distortion Analysis[1]

Cons: 对于高清彩色打印的纸张 or 高清录制视频,质量失真不严重时,难区分开

Colour Texture[2], 2016

Oulu CMVS组的产物,算是传统方法中的战斗机,特别简洁实用,Matlab代码(课题组官网有),很适合搞成C++部署到门禁系统。

原理:活体与非活体,在RGB空间里比较难区分,但在其他颜色空间里的纹理有明显差异

算法:HSV空间人脸多级LBP特征 + YCbCr空间人脸LPQ特征 (后在17年的paper拓展成用Color SURF特征[12],性能提升了一点)

9a55e09d44d7a00e8d7cde624d0c477c.png

Colour Texture[2]

Pros: 算法简洁高效易部署;也证明了活体与非活体在 HSV等其他空间也是discriminative,故后续深度学习方法有将HSV等channel也作为输入来提升性能。

Motion mag.-HOOF + LBP-TOP[3], 2014

DMD + LBP[4], 2015

前面说的都是单帧方法,这两篇文章输入的是连续多帧人脸图;

主要通过捕获活体与非活体微动作之间的差异来设计特征。

一个是先通过运动放大来增强脸部微动作, 然后提取方向光流直方图HOOF + 动态纹理LBP-TOP 特征;一个是通过动态模式分解DMD,得到最大运动能量的子空间图,再分析纹理。

PS:这个 motion magnification 的预处理很差劲,加入了很多其他频段噪声(18年新出了一篇用 Deep learning 来搞 Motion mag[13]. 看起来效果挺好,可以尝试用那个来做运动增强,再来光流or DMD)

f73387f95f83ac671ddcbe45c76ec363.png

Motion mag.-HOOF + LBP-TOP[3]

fef3148fe58216453294e29742909b69.png

DMD + LBP[4]

Cons: 基于Motion的方法,对于 仿人脸wrapped纸张抖动 和 视频攻击,效果不好;因为它假定了活体与非活体之间的非刚性运动有明显的区别,但其实这种微动作挺难描述与学习~

Pulse + texture[5], 2016

第一个将 remote pluse 应用到活体检测中,多帧输入(交代下背景:在CVPR2014,Xiaobai Li[14] 已经提出了从人脸视频里测量心率的方法)

算法流程:

1. 通过 pluse 在频域上分布不同先区分 活体 or 照片攻击 (因为照片中的人脸提取的心率分布不同)

2. 若判别1结果是活体,再 cascade 一个 纹理LBP 分类器,来区分 活体 or 屏幕攻击(因为屏幕视频中人脸心率分布与活体相近)

10b2ecd1f2e1aa6b82cfeca09a8cf5f5.png

Pulse + texture[5]

Pros: 从学术界来说,引入了心理信号这个新模态,很是进步;从工业界来看,如果不能一步到位,针对每种类型攻击,也可进行 Cascade 对应的特征及分类器的部署方式

Cons: 由于 remote heart rate 的算法本来鲁棒性也一般,故出来的 pulse-feature 的判别性能力很不能保证;再者屏幕video里的人脸视频出来的 pulse-feature 是否也有微小区别,还待验证~

Anti-spoofing 2.0 时代

其实用 Deep learning 来做活体检测,从15年陆陆续续就有人在研究,但由于公开数据集样本太少,一直性能也超越不了传统方法:

CNN-LSTM[6], 2015

多帧方法,想通过 CNN-LSTM 来模拟传统方法 LBP-TOP,性能堪忧~

PatchNet pretrain[7],CNN finetune, 2017

单帧方法,通过人脸分块,pre-train 网络;然后再在 global 整个人脸图 fine-tune,作用不大

Patch and Depth-Based CNNs[8], 2017

第一个考虑把 人脸深度图 作为活体与非活体的差异特征,因为像屏幕中的人脸一般是平的,而纸张中的人脸就算扭曲,和真人人脸的立体分布也有差异;

就算用了很多 tricks 去 fusion,性能还是超越不了传统方法。

8f0b4d22e84fb00cce96a86c99223ab5.png

Deep Pulse and Depth[9], 2018

发表在 CVPR2018 的文章,终于超越了传统方法性能。

文章[8]的同一组人,设计了深度框架 准端到端 地去预测 Pulse统计量 及 Depth map (这里说的“准”,就是最后没接分类器,直接通过样本 feature 的相似距离,阈值决策)

在文章中明确指明:

1. 过去方法把活体检测看成二分类问题,直接让DNN去学习,这样学出来的cues不够general 和 discriminative

2. 将二分类问题换成带目标性地特征监督问题,即 回归出 pulse 统计量 + 回归出 Depth map,保证网络学习的就是这两种特征(哈哈,不排除假设学到了 color texture 在里面,黑箱网络这么聪明)。

ce7436a396dee34277eacb8089473d84.png

Deep Pulse and Depth[9]

回归 Depth map,跟文章[8]中一致,就是通过 Landmark 然后 3DMMfitting 得到 人脸3D shape,然后再阈值化去背景,得到 depth map 的 groundtruth,最后和网络预测的 estimated depth map 有 L2 loss。

而文章亮点在于设计了 Non-rigid Registration Layer 来对齐各帧人脸的非刚性运动(如姿态,表情等),然后通过RNN更好地学到 temporal pulse 信息。

2630e7ec1e81f136a79899611091ba03.png

Non-rigid Registration Layer[9]

为什么需要这个对齐网络呢?我们来想想,在做运动识别任务时,只需简单把 sampling或者连续帧 合并起来喂进网络就行了,是假定相机是不动的,对象在运动;而文中需要对连续人脸帧进行pulse特征提取,主要对象是人脸上对应ROI在 temporal 上的 Intensity 变化,所以就需要把人脸当成是相机固定不动。

Micro-texture + SSD or binocular depth[10] , 2018

ArXiv 刚挂出不久的文章,最大的贡献是把 活体检测 直接放到 人脸检测(SSD,MTCNN等) 模块里作为一个类,即人脸检测出来的 bbox 里有 背景,真人人脸,假人脸 三类的置信度,这样可以在早期就过滤掉一部分非活体。

所以整个系统速度非常地快,很适合工业界部署~

至于后续手工设计的 SPMT feature 和 TFBD feature 比较复杂繁琐,分别是表征 micro-texture 和 stereo structure of face,有兴趣的同学可以去细看。

e40b0e24e6c1e956af2b83fa57ff020e.png

texture + SSD or binocular depth[10]

De-Spoofing[11], ECCV2018

单帧方法,与Paper[8]和[9]一样,是MSU同一个课题组做的。

文章的idea很有趣,启发于图像去噪denoise 和 图像去抖动 deblur。无论是噪声图还是模糊图,都可看成是在原图上加噪声运算或者模糊运算(即下面的公式),而去噪和去抖动,就是估计噪声分布和模糊核,从而重构回原图。

39b69bc1af066ac1d3f4b96b388506b9.png

文中把活体人脸图看成是原图

92c5a201563b7d5dd32fc7bc3c19ca4e.png

,而非活体人脸图看成是加了噪声后失真的 x ,故 task 就变成估计 Spoof noiseN(

65879b10fed626742b314482cd00ff8e.png

) ,然后用这个 Noise pattern feature 去分类决策。

c6bb5fd8be3f90fcc377e12cf706794d.png

De-spoofing process[11]

那问题来了,数据集没有像素级别一一对应的 groundtruth,也没有Spoof Noise模型的先验知识(如果有知道Noise模型,可以用Live Face来生成Spoofing Face),那拿什么来当groundtruth,怎么设计网络去估计 Spoofing noise 呢?

如一般Low-level image 任务一样,文中利用Encoder-decoder来得到 Spoof noise N,然后通过残差重构出

4980d7a8d235eac3846874220ea2b574.png

,这就是下图的DS Net。为了保证网络对于不同输入,学出来的Noise是有效的,根据先验知识设计了三个Loss来constrain:

Magnitude loss(当输入是Live face时,N尽量逼近0);

Repetitive loss(Spooing face的Noise图在高频段有较大的峰值);

01Map Loss(让Real Face 的 deep feature map分布尽量逼近全0,而Spoofing face的 deep feature map 尽量逼近全1)

767e171eaacc28bb4a466cba2bcdfad0.png

De-spoofing网络架构[11]

那网络右边的 VQ-Net 和 DQ-Net 又有什么作用呢?因为没有 Live face 的 Groundtruth,要保证重构出来的分布接近 Live face,作者用了对抗生成网络GAN (即 VQ-Net )去约束重构生成的

3151125917862ddbcb85d67e700c5586.png

与Live face分布尽量一致;而用了文章[8]中的 pre-trained Depth model 来保证

01992ac85e587afd48d12570bd9b189b.png

的深度图与Live face的深度图尽量一致。

Pros: 通过可视化最终让大众知道了 Spoofing Noise 是长什么样子的~

Cons: 在实际场景中难部署(该模型假定Spoofing Noise是 strongly 存在的,当实际场景中活体的人脸图质量并不是很高,而非活体攻击的质量相对高时,Spoofing noise走不通)

后记:不同模态的相机输入对于活体检测的作用

1. 近红外NIR

由于NIR的光谱波段与可见光VIS不同,故真实人脸及非活体载体对于近红外波段的吸收和反射强度也不同,即也可通过近红外相机出来的图像来活体检测。从出来的图像来说,近红外图像对屏幕攻击的区分度较大,对高清彩色纸张打印的区分度较小。

从特征工程角度来说,方法无非也是提取NIR图中的光照纹理特征[15]或者远程人脸心率特征[16]来进行。下图可见,上面两行是真实人脸图中人脸区域与背景区域的直方图分布,明显与下面两行的非活体图的分布不一致;而通过与文章[5]中一样的rPPG提取方法,在文章[]中说明其在NIR图像中出来的特征更加鲁棒~

c4fac4e1003032995ac54ce1b5b8c9c0.png

NIR人脸区域与背景区域直方图[15]

2. 结构光/ToF

由于结构光及ToF能在近距离里相对准确地进行3D人脸重构,即可得到人脸及背景的点云图及深度图,可作为精准活体检测(而不像单目RGB或双目RGB中仍需估计深度)。不过就是成本较高,看具体应用场景决定。

3. 光场 Light field

光场相机具有光学显微镜头阵列,且由于光场能描述空间中任意一点向任意方向的光线强度,出来的raw光场照片及不同重聚焦的照片,都能用于活体检测:

3.1 raw光场照片及对应的子孔径照片[17]

如下图所示,对于真实人脸的脸颊边缘的微镜图像,其像素应该是带边缘梯度分布;而对应纸张打印或屏幕攻击,其边缘像素是随机均匀分布:

0bec215f40792be29b8622b22904990e.png

光场相机图

3.2 使用一次拍照的重聚焦图像[18]

原理是可以从两张重聚焦图像的差异中,估计出深度信息;从特征提取来说,真实人脸与非活体人脸的3D人脸模型不同,可提取差异图像中的 亮度分布特征+聚焦区域锐利程度特征+频谱直方图特征。

至此,Face anti-spoofing 的简单Survey已完毕~

毫无疑问,对于学术界,后续方向应该是用DL学习更精细的 人脸3D特征 和 人脸微变化微动作(Motion Spoofing Noise?) 表征;而也可探索活体检测与人脸检测及人脸识别之间更紧密的关系。

对于工业界,可直接在人脸检测时候预判是否活体;更可借助近红外,结构光/ToF等硬件做到更精准。

Reference:

[1] Di Wen, Hu Han, Anil K. Jain. Face Spoof Detection with Image Distortion Analysis. IEEE Transactions on Information Forensics and Security, 2015

[2] Zinelabidine Boulkenafet, Jukka Komulainen, Abdenour Hadid. Face Spoofing Detection Using Colour Texture Analysis. IEEE TRANSACTIONS ON INFORMATION FORENSICS AND SECURITY, 2016

[3] Samarth Bharadwaj. Face Anti-spoofing via Motion Magnification and

Multifeature Videolet Aggregation, 2014

[4] Santosh Tirunagari, Norman Poh. Detection of Face Spoofing Using Visual Dynamics. IEEE TRANS. ON INFORMATION FORENSICS AND SECURIT, 2015

[5] Xiaobai Li, , Guoying Zhao. Generalized face anti-spoofing by detecting pulse

from face videos, 2016 23rd ICPR

[6] Zhenqi Xu. Learning Temporal Features Using LSTM-CNN Architecture for Face Anti-spoofing, 2015 3rd IAPR

[7] Gustavo Botelho de Souza, On the Learning of Deep Local Features for

Robust Face Spoofing Detection, 2017

[8] Yousef Atoum, Xiaoming Liu. Face Anti-Spoofing Using Patch and Depth-Based CNNs, 2017

[9] Yaojie Liu, Amin Jourabloo, Xiaoming Liu, Learning Deep Models for Face Anti-Spoofing: Binary or Auxiliary Supervision ,CVPR2018

[10] Discriminative Representation Combinations for Accurate Face Spoofing Detection,2018 PR

[11] Amin Jourabloo, Face De-Spoofing: Anti-Spoofing via Noise Modeling, ECCV2018

[12]Zinelabidine Boulkenafet, Face Antispoofing Using Speeded-Up Robust Features and Fisher Vector Encoding, IEEE SIGNAL PROCESSING LETTERS, VOL. 24, NO. 2, FEBRUARY 2017

[13]Tae-Hyun Oh, Learning-based Video Motion Magnification, ECCV2018

[14]Xiaobai Li, Remote Heart Rate Measurement From Face Videos Under Realistic Situations

[15]Xudong Sun, Context Based Face Spoofing Detection Using Active Near-Infrared Images, ICPR 2016

[16]Javier Hernandez-Ortega, Time Analysis of Pulse-based Face Anti-Spoofing in Visible and NIR, CVPR2018 workshop

[17]Sooyeon Kim, Face Liveness Detection Using a Light Field Camera, 2014

[18]Xiaohua Xie, One-snapshot Face Anti-spoofing Using a Light Field Camera, 2017返回搜狐,查看更多

责任编辑:

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

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

相关文章

黑客们的故事(连载三) 因为好奇

上期说到的肯和丹尼斯在黑客文化中的高知名度,不仅是因为他们开发出的操作系统和编程语言,更在于他们行为所体现出的价值观:求知、探索,以及追求极致。这些是黑客精神的精髓——虽然黑客们贯彻这些精神时的方式并不总是合理合法的…

css3禅密花园叫什么名字_新生儿起名:2021元旦出生男孩叫什么名字

2021年元旦节又是新的一年开始,在这辞旧迎新的日子里出生的男孩,都带有极好的寓意兆头,父母们如果能顺借此时机,取一个具有出生纪念意义的名字,那必然能让男孩的成长有着不同与众的历程。2021元旦出生男孩叫什么名字比…

量产之后计算机读不出u盘,求大神、我量产没成功然后U盘就电脑上就不显示了...

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼Faq faq faq faq faq faq faq faq faq faq Faq faq faq faq faq faq faq faq faq faq Faq faq faq faq faq faq faq faq faq faq Faq faq faq faq faq faq faq faq faq faq Faq faq faq faq faq faq faq faq faq faq Faq faq faq f…

10个让人很舒服的沟通技巧

转载于:https://www.cnblogs.com/yymn/p/4605237.html

idea将远程代码更新合并到本地_idea 本地调试远程服务器代码

基本原理本机和远程主机的两个 VM 之间使用 Debug 协议通过 Socket 通信,传递调试指令和调试信息。 被调试程序的远程虚拟机:作为 Debug 服务端,监听 Debug 调试指令。jdwp是Java Debug Wire Protocol的缩写。 调试程序的本地虚拟机&#xff…

安卓手机网页 字体垂直方向对齐_初学Excel办公软件字体对齐调整

今天我们依然讲解Excel办公软件的字体对齐调整,上一节我们讲过在菜单栏的上方就可以看到十个功能,然后我们根据这十个功能的调解我们所需要的文字对齐,或者是居中对齐,顶端对齐等等。还有另外一种操作方法,也是方便快捷…

英伟达_如何超越英伟达?

从AI热潮中率先获益的英伟达,其GPU参数和性能频繁出现在不少AI芯片发布会的对比图中。这是在缺乏AI芯片衡量的标准时,新的AI芯片证明自己实力的不错方式。不过,声称性能超越英伟达GPU的创新AI芯片不少,但想要超越英伟达非常困难。…

100多个基础常用JS函数和语法集合大全

网站特效离不开脚本,javascript是最常用的脚本语言,我们归纳一下常用的基础函数和语法: 1.输出语句:document.write(""); 2.JS中的注释为//3.传统的HTML文档顺序是:document->html->(head,body)4.一个浏览器窗口中…

中职计算机说课稿三篇,精选中职计算机说课稿三篇-20210609060707.docx-原创力文档...

PAGE / NUMPAGES精选中职计算机说课稿三篇中职计算机说课稿(一)位评委老师你们好!我是来自XXX职业中专计算机专业的老师XXX,今日我说课的题目是?《电子表格基本操作》?本节课出自高等训练出版社出版的《计算机应用基础》(windowsXPOfficexx?版)课本中第五章第?2…

在struts2中push方法的使用_【干货】网版印刷中水墨使用注意事项及助剂使用方法...

导LEAD语在印刷生产中,水性油墨的黏度、干燥速度和PH值等等都会直接影响印刷质量,那么具体到网版印刷中,在使用水性油墨时应该注意哪些问题呢?常用的印刷助剂都有哪些特点和使用方法?编辑:华印纸箱彩盒 小张…

限定概率抽奖_守护星已点亮,内测皮肤得到没?从天美抽奖概率分析:地址什么梗...

声明:原创文章,禁止抄袭,违者必究!大家好,我是你们的小抖。本次五五开黑节最引人注意的活动,当然不是超云龙胆新皮肤了。小抖觉得大家应该与我想的一样:内测皮肤。小抖点亮了所有守护星&#xf…

完美汽配管理系统v12服务器,完美汽车维修4S店管理系统

完美汽车维修4S店管理系统是一款十分不错的汽车修理系统,他可以帮助用户去处理好汽车维修,客户信息管理等问题,所以快来下载试试吧!软件介绍完美汽车维修4S店管理系统是款界面简洁大方且主要应用汽修行业的管理软件,完…

JPA中的@MappedSuperclass

说明地址:http://docs.oracle.com/javaee/5/api/javax/persistence/MappedSuperclass.html 用来申明一个超类,继承这个类的子类映射时要映射此类中的字段,可以当做是对entity抽取封装的类。如果子类想重写此类的映射信息,可以使用…

调用另一个cpp的变量_再谈条件变量—从入门到出家

再谈条件变量—从入门到出家C语言--条件变量条件变量是在线程中以睡眠的方式等待某一条件的发生;条件变量是利用线程间共享的全局变量进行同步的一种机制:一个线程等待"条件变量的条件成立"挂起另一个线程使"条件成立"条件变量的使用…

python 测试端口连通_Python语言 实现端口连通性检测

本文主要向大家介绍了Python语言 实现端口连通性检测,通过具体的内容向大家展示,希望对大家学习Python语言有所帮助。# -*- coding: utf-8 -*-#!/bin/env python#AUTHOR:karl#DATE:2018-1-19#VERSION:V1.0######################import timeimport osimp…

table每行自动触发ajax,table.ajax.reload()成功后未触发:function()

简介我正在使用json,ajax和php进行datatables.net jquery服务器端处理。我可以单击行按钮,然后从数据库中删除该行。但是,该页面永远不会使用ajax.reload();刷新页面。问题此代码:console.log("success function data reache…

不同page页面选择不同页面模板的方法

仿制一个企业站的时候发现该站用了很多page页面,而且个别页面的样式不相同,同时区别于post文章页面,其实不同之处就在于每个页面的xhtmlcss的不同,关键是page模板选择的问题,恒宁总结了以下两种方法。 第一种&#xff…

jquer each 遍历的结果不显示 null_SpringBoot系列(三十一)- Thymeleaf如何用th:each 做条件遍历

步骤1:基于前面的知识点步骤2:先运行,看到效果,再学习步骤3:模仿和排错步骤4:TestController步骤5:普通遍历步骤6:带状态的遍历步骤7:结合 select步骤8:结合 单选框步骤9:完整的 test.html步骤10:重启测试步骤 1 : 基于前面的知识点本知识点是建立在上一…

python 属性描述符_Python属性描述符(二)

Python存取属性的方式特别不对等,通过实例读取属性时,通常返回的是实例中定义的属性,但如果实例未曾定义过该属性,就会获取类属性,而为实例的属性赋值时,通常会在实例中创建属性,而不会影响到类…

python3.6sysos_求大佬,这是什么情况啊

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 Traceback (most recent call last): File "manager.py", line 13, in sys.exit(main()) File "manager.py", line 8, in main manager.run() File "/root/imooc/lib/python3.5/site-packages/flask_sc…