Face Anti-Spoofing Using Patch and Depth-based CNNs

这篇文章是人脸防伪领域比较容易理解,适合入手的一篇,主要运用到了两个CNN网络,根据输入图像的细节特征以及深度图特征来进行判别。

一、 论文概述

由于直接基于RGB纹理分类的方法非常容易过拟合,而像屏幕中的人脸一般是平的,估计不出深度信息,所以patch and depth-based CNNs方法将深度信息和RGB特征进行融合。

文章引用量:50+

推荐指数:✦✦✦✧✧

[2] Atoum Y, Liu Y, Jourabloo A, et al. Face anti-spoofing using patch and depth-based CNNs[C]//2017 IEEE International Joint Conference on Biometrics (IJCB). IEEE, 2017: 319-328.

  • 文章创新点:提出了一个双通道的CNN网络用于人脸防伪;
  • 运用到的两个网络:

(1)卷积神经网络(CNN),输入是固定尺寸的局部图片,输出是一个分类score,网络部分对输入的局部特征进行深层提取,并根据输出的分类score判断这种局部特征是属于spoof or live。

(2)全卷积网络(FCN),输入是整张人脸图像,尺寸不固定,经过多层卷积网络的特征提取以及SVM得到分类结果是spoof or live。

(3)将两个网络得到的结果通过某种方式进行融合,得到最终输出。

  • 采用的数据集:CASIA-FASD / MSU-USSA / Replay Attack

二、 论文涉及的两个网络(配合图解说明)

【图1】 双流网络的可视化结果

(1)左边是Patch-Based CNN的可视化结果,黄色部分表示该局部属于活体的可能性更大,蓝色部分表示该局部属于伪人脸的可能性更大。

采用patch-based CNN 网络的优点:

  • 增加CNN网络的训练样本数;
  • 输入到训练网络的图片需要被归一化到统一尺寸,如果输入整幅图像可能会造成信息失真,但是输入局部图像不会,因为局部大小是固定的;
  • 有利于发现更细节的伪信息。

(2)右边是Depth-Based CNN的可视化结果,黄色部分表示离镜头较近,蓝色部分表示离镜头较远。

(3)在实验测试的网络中,这两个CNN网络都会给出一个分类score,通过某种方式融合得到最终的输出。

【图2】 网络模型基本框架

可以见得,这两个网络都是end-to-end training (输入原图像,得到分类score)

(1)在patch-based CNN中会取到多个局部区域作为训练数据,每一个patch对应一个score,取所有score的平均值。

(2)在Depth-Based CNN中由于采用的是全卷积神经网络,因此结果是细化到对像素点的分类,将数据归一化到(0,1)可以看作是基于深度图给出的分类结果。

【图3】 两个神经网络层

(1)左图是经典的CNN网络结构,5层卷积层+3层全连接层。

  • BN(正则化)

正则化一般是在原有的损失函数之上再加上一个约束,避免过拟合发生。将数据点本身的因素考虑进去,一般是通过L1范数或者L2范数实现。

  • ReLU

线性修正单元(ReLU)是激活函数的一种,它能够使得部分量被置0,增强数据的稀疏性。

  • Drop out

其基本思想是以概率p使得某些神经元停止工作,使其激活值变为0,这样可以提高网络的泛化性能,让一个神经元的出现不再依赖于另外一个神经元。

(2)右图是在CNN网络的基础上发展得到的全卷积网络(FCN),即将CNN中的全连接层换成了卷积层。

其特点在于输出的特征大小于原图像大小相同,相当于是对原图像的每一个像素进行了分类。


有关FCN的深刻理解参考
https://blog.csdn.net/sinat_24143931/article/details/78696442?locationNum=4&fps=1

由于池化过程会降低特征图的维度,因此也会丢失一些空间信息,反卷积扩大了特征图尺寸,先后进行卷积和反卷积可以理解为:在保留空间信息的同时提取图像的特征信息,对每个像素点进行分类的结果可以归一化到(0,1),由此可以代替深度信息图。

【图4】 测试结果图

上图显示的是基于CASIA-FASD数据集的不同类型的图像数据通过Depth-Based CNN网络后的输出结果对比。从左到右一次是:live images / print attacks / cut print attacks / video attacks。

实验结果明确的显示了本文提出的网络可以有效的对真伪人脸作分类。

三、 补充知识

本文尝试了用多种图像特征作为输入,除了传统的三通道RGB图像之外,还包括HSV / YCbCr / LBP算子

  • HSV

H表示色彩信息,S表示纯度,V表示色彩明亮程度

  • YCbCr

常用于肤色检测和影像连续处理的色彩模型。Y为颜色的亮度(luma)成分,而CB和CR则为蓝色和红色的浓度偏移量成份

  • LBP算子

LBP(Local Binary Pattern,局部二值模式)是一种用来描述图像局部纹理特征的算子;它具有旋转不变性和灰度不变性等显著的优点

经不同的特征处理之后的图片数据如下:

更多信息请关注公众号:

[人脸活体检测] 论文:Face Anti-Spoofing Using Patch and Depth-based CNNs的更多相关文章

  1. [人脸活体检测] 论文:Learn Convolutional Neural Network for Face Anti-Spoofing

    [人脸活体检测] 论文:Learn Convolutional Neural Network for Face Anti-Spoofing 论文简介 这是最早期CNN用于活体检测的文章,在此之前都是手 ...

  2. [人脸活体检测] 论文:Searching Central Difference Convolutional Networks for Face Anti-Spoofing

    文章目录 Searching Central Difference Convolutional Networks for Face Anti-Spoofing 1 导读 2 简介 3 方法 中心差分卷 ...

  3. [人脸活体检测] 论文:Face De-Spoofing: Anti-Spoofing via Noise Modeling

    Face De-Spoofing: Anti-Spoofing via Noise Modeling 论文简介 将非活体人脸图看成是加了噪声后失真的x,用残差的思路检测该噪声从而完成分类. 文章引用量 ...

  4. [人脸活体检测] 论文: Learning Deep Models for Face Anti-Spoofing: Binary or Auxiliary Supervision

    Learning Deep Models for Face Anti-Spoofing: Binary or Auxiliary Supervision 论文简介 与人脸生理相关的rppG信号被研究者 ...

  5. [人脸活体检测] 论文:Aurora Guard- Real-Time Face Anti-Spoofing via Light Reflection

    Aurora Guard- Real-Time Face Anti-Spoofing via Light Reflection 论文简介 该论文提出的方法已经部署到百万台终端,整篇文章底气十足.作者设 ...

  6. 从零玩转人脸识别之RGB人脸活体检测

    从零玩转RGB人脸活体检测 前言 本期教程人脸识别第三方平台为虹软科技,本文章讲解的是人脸识别RGB活体追踪技术,免费的功能很多可以自行搭配,希望在你看完本章课程有所收获. ArcFace 离线SDK ...

  7. OpenCV实战:人脸关键点检测(FaceMark)

    Summary:利用OpenCV中的LBF算法进行人脸关键点检测(Facial Landmark Detection) Author:    Amusi Date:       2018-03-20 ...

  8. Qt编写百度离线版人脸识别+比对+活体检测

    在AI技术发展迅猛的今天,很多设备都希望加上人脸识别功能,好像不加上点人脸识别功能感觉不够高大上,都往人脸识别这边靠,手机刷脸解锁,刷脸支付,刷脸开门,刷脸金融,刷脸安防,是不是以后还可以刷脸匹配男女 ...

  9. 虹软人脸识别 - faceId及IR活体检测的更新介绍

    虹软人脸识别 - faceId及IR活体检测的介绍 前几天虹软推出了 Android ArcFace 2.2版本的SDK,相比于2.1版本,2.2版本中的变化如下: VIDEO模式新增faceId(类 ...

随机推荐

  1. 【随笔】Tomcat部署图片服务器Server.xml配置记录

    在tomcat应用conf/server.xml文件的标签中添加下面内容: <Service name="imageService"> <!--分配8089端口 ...

  2. C++生成均匀分布的随机实数

    #include<random> #include<iostream> int main() { //定义均匀分布对象,均匀分布区间(a,b)为(2,6) std::unifo ...

  3. .net Core使用Knife4jUI更换Swagger皮肤

    Knife4j的前身是swagger-bootstrap-ui,前身swagger-bootstrap-ui是一个纯swagger-ui的ui皮肤项目 官网实战指南:https://doc.xiaom ...

  4. python - 命令行下一键更新所有包

    Python3.8以下这样一键更新所有包:from pip._internal.utils.misc import get_installed_distributionsfrom subprocess ...

  5. 2.面向对象基础-01Java类和对象

    写在前面: (1)编程语言的发展(人越来越容易理解): 机器语言 汇编语言 高级语言-面向过程 高级语言-面向对象 (2)面向对象的特点: 封装性 继承性 多态性 01Java类和对象 对象:属性(静 ...

  6. DataX Web可视化分布式调度数据同步系统

    因项目需要,结合目前参与的项目,以及个人技术能力范围,组合研发一套web可视化数据同步系统,正式名称:DataXP. 项目背景:接触过阿里云这类大数据平台,对于中大型项目以及需要与外部系统对接数据的情 ...

  7. JavaWeb相关学习环境的配置(一)

    JavaWeb相关学习环境的配置(一) 之 JDK的配置 步骤: 1.去官网找到自己想要下载的版本: 官网地址:https://www.oracle.com/java/technologies/dow ...

  8. nginx+lua+openresty+kafka相关问题汇总

    这里使用的是kafka插件是doujiang大佬的https://github.com/doujiang24/lua-resty-kafka,版本为v0.2.0. 应用场景 在nginx转发中,记录非 ...

  9. 基于Sekiro的jsRPC的使用和安装

    什么是jsRPC 说实话在介绍 JSRPC 我向大家推荐一个库 Selenium-wire 感觉和JSrpc的原理很像 RPC指远程过程调用,APP里面的RPC大家比较熟悉了. 那什么是jsRPC,顾 ...

  10. 由x-www-form-urlencoded引发的接口对接失败

    原创:扣钉日记(微信公众号ID:codelogs),欢迎分享,非公众号转载保留此声明. 问题发生 这周正在写代码,突然,旁边小哥问我个问题... 小哥:我这有个接口,自己调用没有问题,但别人调用就不行 ...