检测场景人脸欺骗攻击的补充对策

antispoofing.fusion的Python项目详细描述


该软件包结合了基于运动和纹理分析的二维面部欺骗攻击对策,如“检测风景面部欺骗攻击的补充对策”一文所述,国际生物识别会议,2013年。但是,可以使用此软件包提供的工具融合任何对策组合的分数。

如果您使用此软件包和/或其结果,请引用以下内容 出版物:

  1. 原版论文结合反措施进行了详细说明:

    @inproceedings{Komulainen_ICB_2013,
      author = {Komulainen, Jukka and Anjos, Andr{\'{e}} and Marcel, S{\'{e}}bastien and Hadid, Abdenour and Pietik{\"a}inen, Matti},
      month = Jun,
      title = {Complementary Countermeasures for Detecting Scenic Face Spoofing Attacks},
      journal = {International Conference on Biometrics 2013},
      year = {2013},
    }
    
  2. bob作为运行实验的核心框架:

    @inproceedings{Anjos_ACMMM_2012,
        author = {A. Anjos AND L. El Shafey AND R. Wallace AND M. G\"unther AND C. McCool AND S. Marcel},
        title = {Bob: a free signal processing and machine learning toolbox for researchers},
        year = {2012},
        month = oct,
        booktitle = {20th ACM Conference on Multimedia Systems (ACMMM), Nara, Japan},
        publisher = {ACM Press},
    }
    

如果您希望报告有关此代码的问题或改进,请 联系上述论文的作者。

原始数据

本文使用的数据是由另外两个卫星包获得的结果:antispoofing.motionantispoofing.lbp。应下载、安装并运行prior以使用此软件包中描述的程序。有关如何使用它们的详细信息,请访问the antispoofing.motionthe antispoofing.lbp页。

当然,该软件包可以用于以上述两种格式保存的任何其他类型的分数。

安装

注意

如果您是通过我们的github门户而不是通过pypi阅读此页面, 注意包的开发提示可能不稳定或 瞬间不稳定的

转到http://pypi.python.org/pypi/antispoofing.fusion下载最新的 这个包的稳定版本。然后,将.zip文件解压缩到您选择的文件夹中。

antispoofing.fusion包是免费信号处理和机器学习库Bob的附属包。必须手动下载此依赖项。此版本的包取决于Bob版本2或更高版本。要安装packages of Bob,请阅读Installation Instructions。为了使Bob能够正常工作,需要安装一些依赖的bob包。请确保您已经阅读了操作系统的依赖项。

最简单的解决方案是下载并提取antispoofing.fusion包,然后转到控制台并编写:

$ cd antispoofing.fusion
$ python bootstrap-buildout.py
$ bin/buildout

这将下载所有必需的依赖Bob和其他软件包,并在本地安装它们。

用户指南

假设您已经按照此软件包的安装说明进行了安装。此外,我们假设您已经安装了两个相关的包,并使用the antispoofing.motionthe antispoofing.lbp包为每个帧生成了输出分数,这些分数位于目录./scores/。如果没有,请创建指向此目录的符号链接。

找到有效的输出分数

先前生成的输出不包含每个视频帧的有效分数。基于运动的对抗需要20帧视频来分析人脸与背景之间的运动相关性,即该方法不能对前19帧产生分数。另一方面,当成功地检测到面部并且面部大小大于50x50像素时,基于lbp的对策能够产生有效的输出分数。

因此,在分数级进行融合之前,必须找到两个对策都有有效分数(即非NaN值)的帧。此过程使用脚本./bin/find_valid_frames.py执行,并给出所有使用的输出分数的位置,例如:

$ ./bin/find_valid_frames.py -s scores/motion_lda scores/lbp_lda -e replay

合并有效输出分数

脚本fuse_scores.py使用以下两种不同的方法在分数级别执行任意对策的融合:分数和或逻辑线性回归(llr)与所选分数规范化方案:minmax、zscore或不进行任何规范化,例如:

$ ./bin/fuse_scores.py -s scores/motion_lda scores/lbp_lda -f SUM -n ZNorm -o scores/lda_sum_z
$ ./bin/fuse_scores.py -s scores/motion_lda scores/lbp_lda -f LLR -n None -o scores/lda_llr_raw

帧级融合结果分析

使用脚本frame_by_frame_analysis.py

$ ./bin/frame_by_frame_analysis.py -s scores/motion_lda scores/lbp_lda -f scores/lda_sum_z scores/lda_llr_raw -e replay

results.txt在帧级别显示每个方法的性能。

运行时间分析

时间分析是处理链的末端,它将每种方法的瞬时得分进行融合,以更好地估计攻击和实际访问。使用它:

$ ./bin/time_analysis.py -s scores/motion_lda scores/lbp_lda -f scores/lda_sum_z scores/lda_llr_raw -e replay

每个方法的时间演化可以在目录./results/evolution/中找到。该文件夹还包含一个pdf文件,您可以在其中找到同一个图中的所有方法。

相互误差分析

脚本venn.py对给定的对策执行相互错误分析,并将结果输出到文件./results/Venn&scatter/Venn.txt

$ ./bin/venn.py -s scores/motion_lda scores/lbp_lda -e replay

问题

如有问题,请与论文作者联系。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java Admob不使用webview   Java Wicket表单:序列化对象类“myClassName”时出错   java googledriveapi更新文件与我的帐户管理员   java简单框架未知xml标记解析   java如何使用主类和用户获取Spark应用程序ID   java如何更改自定义属性的值?   java有没有办法在jMock中找到未使用的期望值?   gradle运行任务的java文档?   java通过使用数组来存储文本文件的行,通过覆盖来删除文本文件中的行   用于表达式语言注入的java利用负载   java IDEStyle程序运行   java在运行时启用/禁用Springws   爪哇芦苇。formatNumber NullPointException   java为什么我的代码无法检测两个动态实体之间的碰撞?