检测场景人脸欺骗攻击的补充对策
antispoofing.fusion的Python项目详细描述
该软件包结合了基于运动和纹理分析的二维面部欺骗攻击对策,如“检测风景面部欺骗攻击的补充对策”一文所述,国际生物识别会议,2013年。但是,可以使用此软件包提供的工具融合任何对策组合的分数。
如果您使用此软件包和/或其结果,请引用以下内容 出版物:
原版论文结合反措施进行了详细说明:
@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}, }
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.motion和antispoofing.lbp。应下载、安装并运行prior以使用此软件包中描述的程序。有关如何使用它们的详细信息,请访问the antispoofing.motion和the 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.motion和the 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
问题
如有问题,请与论文作者联系。