zoukankan      html  css  js  c++  java
  • ImprovingFaceAnti-Spoofingby3DVirtual Synthesis

    人脸防伪论文笔记:3D Virtual Synthesis(1901.00488)

    转载

    老巴读AI论文

    发布时间:19-03-1100:09

    Improving Face Anti-Spoofing by 3D Virtual Synthesis

    中科大和公安部一所的合作,研究方向是人脸防伪

    文章贡献

    提出一种虚拟合成方法,用于生成弯曲的并且平面外旋转的伪装样本。使用这种方法可以生成大规模伪装训练样本用于训练深度神经网络;为了从大规模合成伪装样本中训练CNN,提出了一种训练数据平衡的方法用于提升人脸防伪模型的泛化能力;在CASIA-MFSD和Replay-Attack数据集上获得了SOT的性能,在CASIA-RFS数据集上泛化能力得到了巨大的提升。相关工作回顾

    基于CNN的人脸防伪方法,这类方法可以归纳为两种:基于纹理的模型和基于序列的方法。大部分基于纹理的方法都将人脸防伪当作二分类问题,近期的研究揭示基于深度监督的方法比二元监督的方法表现更好,空间和时间域中的深度监督人脸防伪模型可以提取更强大和更有辨别力的特征;基于序列的方法旨在充分利用序列化帧的时间信息。

    3D虚拟合成

    本文中使用3D虚拟合成的目的在于试图模拟弯曲和平面外旋转的行为。

    3D网格和变形3D网格部分的处理是通过照片的四个角加上delaunay算法的处理得到照片网格化之后的虚拟3D目标;3D网格化之后的就进行旋转和弯曲。

    平面三角网格的垂直弯曲

    透视投影透视投影操作用于生成更加真实的合成。通过网格变形和透视投影之后,可以通过Z缓冲渲染合成样本。几种不同的透视方法效果对比如下图所示。

    不同透视方法的效果对比

    后处理为了提高最终合成样本的保真度,作者尝试确保合成打印的照片与原始打印的照片区域完全重叠。 此外,应用高斯图像滤波器使得融合后的边缘更平滑。

    合成数据上的DNN训练

    数据平衡有两种方法可以降低数据不平衡的影响:平衡采样策略和导入外部实时样本。为了执行平衡采样,在增强数据集之后,训练期间每个mini-batch中真实采集样本和欺骗样本的比率保持固定。 此外,真实样本比实际应用中的欺骗样本更容易获取,例如来自人脸识别数据库的样本。 因此,可以导入无限的外部实时样本以平衡训练数据的分布。

    如何处理合成样本作者指出,因为本文提出的合成方法具有高保真度并且具有比实际数据更多的变化,因此可以将合成的欺骗样本与真实样本同等对待,并直接在合成和实际样本的联合数据集上训练模型。

    实验

    作者在三个数据集上进行了实验,分别是CASIA-MFSD、Replay-Attack和CASIA-RFS。其中前两个主要用于与其他SOT方法进行公平的性能比较,第三个数据集因为包括了各种姿势的旋转和伪装,所以更具有挑战性,将其作为测试集,整个CASIA-MFSD作为训练集进行数据集之间的测试。

    具体实现上采用ResNet-15的模型,真实样本和伪装样本的数量比例一直保持在1:3,具体网络结构如下表。

    网络结构图

    作者分别从透视、合成数据、平衡采样以及额外真实样本采样等四个方面进行了消融实验,结果如下面四个表所示。

    透视方法结果对比
    CASIA-FASD平衡采样和学习方法对比
    Replay-Attack平衡采样和学习方法对比
    不同数据集上平衡采样的对比
    CASIA-RFS不同学习方法的对比

    数据集内的测试以及与SOT方法的对比可以看下面两个表。

    CASIA-FASD上SOT方法的对比
    Replay-Attack上SOT方法的对比

    数据集间的测试,即CASIA-MFSD数据集用于训练,CASIA-RFS数据集用于测试,与SOT方法的对比结果如下表所示。

    CASIA-RFS上SOT方法的对比
  • 相关阅读:
    java:IO流(处理流(缓冲流,转换流,数据流),对象的序列化,Properties)
    java:容器/集合(Map(HashMap,TreeMap)Collection和Collections,(Collection-value();)
    java:容器/集合Collection(List(ArrayList,LinkedList,Vector),Set(HashSet(LinkedHashSet),TreeSet))
    java:常用类(包装类,equals和==的比较,Date,java.lang.String中常用方法,枚举enum)
    java:LeakFilling(面向对象)
    java:异常机制(try,catch,finally,throw,throws,自定义异常)
    深入剖析Java中的装箱和拆箱
    Java 如何有效地避免OOM:善于利用软引用和弱引用
    浅谈Java中的hashcode方法
    浅析Java中的访问权限控制
  • 原文地址:https://www.cnblogs.com/skydaddy/p/12367143.html
Copyright © 2011-2022 走看看