当前位置: 首页 > news >正文

活体检测论文 Face Anti-Spoofing with Human Material Perception 阅读笔记

论文链接:Face Anti-Spoofing with Human Material Perception | SpringerLink

动机

现有的 CNN 提取的特征和手工特征都是为通用图像识别任务设计的,这与需要细粒度信息的 FAS 任务不兼容。基于此,很多 SOTA 方法根据脸部固有的线索,将一些先验知识加入到特征表示中,如:rPPG、depth 以及 reflection。FAS 任务中一个有趣且重要的问题是人类如何区分真人或假体,以及机器智能系统可以学到什么?在现实中,假体总是通过物理载体 (如纸张、玻璃屏幕和树脂面具) 传播,与真人脸部皮肤具有明显的材料属性差异。这种差异可以明确地描述为人类定义的线索 (如,rPPG、深度和反射),也可以根据结构材料特性隐式学习。基于以上讨论,作者将 FAS 重新定义为结构材料识别问题,目标是学习脸部固有和鲁棒的特征,把结构性脸部皮肤材料与其他材料(即物理载体的材料)区分开来。

创新点

(1)设计了双边卷积网络 (BCN),它能够通过聚合多层双边宏观和微观信息来捕捉脸部内在的基于材料的线索

(2)使用多级特征细化模块(MFRM)和基于材料的多头监督来进一步提高 BCN 的性能。前者通过重新组装局部邻域的权重来细化多尺度特征,而后者则迫使网络学习鲁棒的共享特征

方法论

1)BCN

受材料感知的启发,作者使用双边滤波来进行 FAS 任务。但双边滤波方法有一个问题,就是在双边滤波后设计了几个手工特征,这限制了特征表示能力。因此,作者提出了两种解决方案,将双边滤波与 FAS 任务中的深度网络相结合。

双边滤波:第一种方法是直接将经双边滤波后的图片输入到网络中,双边滤波的作用是用来平滑图片并保留图片主要的边缘信息。滤波后图片中每个像素是其相邻像素的加权平均值,其中权重随着空间距离和强度差异增大而减小,公式如下:

其中,g 为高斯函数。给定输入图片 I,双边滤波能产生两个输出,第一个为大规模的基础图 BiBase(I),以及残差细节图 BiResidual(I)。双边滤波处理前后的图像如下所示:

虽然在原始 RGB 图像中真人与假体具有相似性,但它们的双边基础图像和残差图像存在明显差异。如上图 (b) 所示,纸质材料的打印攻击面更粗糙,光泽度更低。此外,从上图 (b)、(c) 可以看出,眼睛和眉毛区域的高频激活更强,这可能是由于材料 (如皮肤、 纸和玻璃),因此来自双边基础的宏观线索和来自双边残差的微观线索有助于材料感知。

深度双边网络:第一种方法有如下两个缺陷:a)使用经双边滤波处理后的图片作为输入可能会丢失部分信息:b)由于双边滤波仅在输入图像中使用,因此学习多级双边特征是一种低效的方法。为了解决这些问题,作者提出了第二种方法。首先,作者提出了双边滤波算子来过滤深度特征,为了模拟灰度或彩色图片的滤波过程,作者把逐通道的深度双边滤波作用在特征图 F 上。考虑到 3*3 卷积的空间距离很小,作者将上面公式中权重与距离的关系移除掉,修改后的公式如下:

将 DBO 用于不同尺度的特征上,就可以获得多尺度的双边基础特征。接下来就需要获得双边残差特征,它可以通过与双边基础特征的短接来动态地学习。BCN 的网络结构图如下所示,

其中,BilateralConvBlock 与 ConvBlock 有相同的卷积结构,但不贡献参数 (前者比后者只多了个 DBO 算子)。因此,BCN 能够通过聚合多层的双边宏观和微观信息来学习更多的脸部内在特征。

2)MFRM

MFRM 通过上下文感知特征重组来细化和融合来自 BCN 的低-中-高级特征,结构如下图所示,

细化特征的公式如下:

其中,\phi ,\varphi ,N,\bigotimes 分别表示通道压缩器、内容编码器、核标准化、细化算子。通道压缩器采用 1*1 卷积来对特征通道进行压缩。内容编码器采用 5*5 卷积来生成细化 kernel,随后使用 softmax 在空间上对细化的 kernel 进行归一化操作,公式如下:

本质上,MFRM 利用语义和上下文信息来重新分配局部邻居的贡献,这能获得更多的内在特征,如莫尔条纹。

3)Material Based Multi-head Supervision

由于材料类别很复杂并且依赖于各种细粒度的线索,因此仅通过一个简单的监督 (如,softmax 二分类损失和深度回归损失) 来学习基于材料的内在信息是不可能的。为了学习内在的基于材料的特征,作者提出了基于材料的多头监督。三头监督用于引导 MFRM 的多级融合特征:1)depth-head supervision,旨在强制模型学习结构表面形状信息;2)reflection-head supervision,帮助网络学习表面反射特性;3)patch-head supervision,指导网络学习细粒度的表面纹理线索。各个 head 的损失函数的公式如下:

其中,D_{gt} 由PRNet产生,R_{gt} 由 SOTA 反射估计网络产生,作者将真人 depth map 和假体 reflection map 归一化到 [0,1],将假体 depth map 和真人 reflection map 置 0。patch map 通过对原始图像进行下采样并用相应的二进制标签填充每个 patch 位置来生成。在测试期间,作者使用如下公式来获得最后的得分:

实验结果

消融实验结果如下:

与其他方法在 OULU-NPU 数据集中的四个协议下的测试结果如下所示:

跨数据集 (SiW-M) 的测试结果如下:

BCN 低级特征和预测的 map 的可视化结果如下:

相关文章:

  • 【可能史上最全汇总】vue项目中【H5】如何处理后端返回的支付宝form表单,如何实现支付跳转?
  • Java并发编程吐血1个月总结最全面的100道面试题!!!
  • 注释掉darknet加载yolo模型时打印的网络信息
  • 零基础学习React(Html)
  • Yapi简介和部署
  • Python毕业设计开题报告房屋租赁租房数据分析和展示系统
  • 中国多媒体与网络教学学报杂志中国多媒体与网络教学学报杂志社中国多媒体与网络教学学报编辑部2022年第6期目录
  • 2022医药数据采集-整合超过10万个数据信息源
  • 【CentOS】Linux 安装 Anaconda 及配置 Jupyter
  • NPDP含金量高吗?难考吗?
  • CXL.cache 协议详解
  • JQuery系列之样式操作
  • 游戏开发中的按键操作管理2
  • 构建自己的无人驾驶系统
  • js中的同步任务、异步任务、宏任务、微任务
  • 0基础学习移动端适配
  • AHK 中 = 和 == 等比较运算符的用法
  • conda常用的命令
  • Gradle 5.0 正式版发布
  • HTTP传输编码增加了传输量,只为解决这一个问题 | 实用 HTTP
  • Javascript弹出层-初探
  • MobX
  • nginx 配置多 域名 + 多 https
  • open-falcon 开发笔记(一):从零开始搭建虚拟服务器和监测环境
  • SpiderData 2019年2月25日 DApp数据排行榜
  • 缓存与缓冲
  • 使用前端开发工具包WijmoJS - 创建自定义DropDownTree控件(包含源代码)
  • 延迟脚本的方式
  • 一个6年java程序员的工作感悟,写给还在迷茫的你
  • 异常机制详解
  • 原创:新手布局福音!微信小程序使用flex的一些基础样式属性(一)
  • 在Docker Swarm上部署Apache Storm:第1部分
  • Redis4.x新特性 -- 萌萌的MEMORY DOCTOR
  • 阿里云IoT边缘计算助力企业零改造实现远程运维 ...
  • #include<初见C语言之指针(5)>
  • (2015)JS ES6 必知的十个 特性
  • (MIT博士)林达华老师-概率模型与计算机视觉”
  • (分享)一个图片添加水印的小demo的页面,可自定义样式
  • (附源码)spring boot建达集团公司平台 毕业设计 141538
  • (附源码)spring boot智能服药提醒app 毕业设计 102151
  • (简单有案例)前端实现主题切换、动态换肤的两种简单方式
  • (原创)boost.property_tree解析xml的帮助类以及中文解析问题的解决
  • (转)C语言家族扩展收藏 (转)C语言家族扩展
  • .NET / MSBuild 扩展编译时什么时候用 BeforeTargets / AfterTargets 什么时候用 DependsOnTargets?
  • .NET Core工程编译事件$(TargetDir)变量为空引发的思考
  • .net web项目 调用webService
  • .NET/C# 如何获取当前进程的 CPU 和内存占用?如何获取全局 CPU 和内存占用?
  • .NET设计模式(2):单件模式(Singleton Pattern)
  • .NET中两种OCR方式对比
  • ;号自动换行
  • @TableId注解详细介绍 mybaits 实体类主键注解
  • [ 网络基础篇 ] MAP 迈普交换机常用命令详解
  • [] 与 [[]], -gt 与 > 的比较
  • [C# 网络编程系列]专题六:UDP编程
  • [Docker]十.Docker Swarm讲解