Skip to main content

Complementary countermeasures for detecting scenic face spoofing attacks

Project description

This package combines motion and texture analysis based countermeasures to 2D facial spoofing attacks as described in the paper ‘Complementary Countermeasures for Detecting Scenic Face Spoofing Attacks’, International Conference on Biometrics, 2013. However, it is possible to fuse scores of any combination of countermeasures using the tools provided by this package.

If you use this package and/or its results, please cite the following publications:

  1. The original paper with the fusion of countermesures explained in details:

    @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 as the core framework used to run the experiments:

    @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},
    }

If you wish to report problems or improvements concerning this code, please contact the authors of the above mentioned papers.

Raw data

The data used in the paper is provided by two other satellite packges: antispoofing.motion and antispoofing.lbp. These packages should be downloaded and installed prior to using the programs described in this package. Visit the antispoofing.motion and the antispoofing.lbp pages for more information.

Installation

There are 2 options you can follow to get this package installed and operational on your computer: you can use automatic installers like pip (or easy_install) or manually download, unpack and use zc.buildout to create a virtual work environment just for this package.

Using an automatic installer

Using pip is the easiest (shell commands are marked with a $ signal):

$ pip install antispoofing.fusion

You can also do the same with easy_install:

$ easy_install antispoofing.fusion

This will download and install this package plus any other required dependencies. It will also verify if the version of Bob you have installed is compatible.

This scheme works well with virtual environments by virtualenv or if you have root access to your machine. Otherwise, we recommend you use the next option.

Using zc.buildout

Download the latest version of this package from PyPI and unpack it in your working area. The installation of the toolkit itself uses buildout. You don’t need to understand its inner workings to use this package. Here is a recipe to get you started:

$ python bootstrap.py
$ ./bin/buildout

These 2 commands should download and install all non-installed dependencies and get you a fully operational test and development environment.

User Guide

It is assumed that you have followed the installation instructions for this package and got it installed. Furthermore, we assume that you have installed the two related packages and produced output scores for each frame using both the antispoofing.motion and the antispoofing.lbp packages and that these scores sit on the directory ./scores/. If not, please create symbolic links to this directory.

Finding Valid Output Scores

The previously generated outputs do not contain a valid score for each video frame. The motion based countermeasure needs 20 video frames for analyzing the motion correlation between the face and the background, i.e. the method cannot produce scores for the first 19 frames. On the other hand, the LBP based countermeasure is able to produce an valid output score when a face is successfully detected and the face size is above 50x50 pixels.

Therefore, the frames, in which the both countermeasures have valid score (i.e. not NaN value), must be found before performing the fusion at score level. This process is performed using the script ./bin/find_valid_frames.py and by giving the locations of all used output scores, e.g.:

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

Combining the Valid Output Scores

The script fuse_scores.py performs the fusion of the any countermeasures at score level using some of the two different methods: sum of scores or logistic linear regression (LLR) with the selected score normalization scheme: minmax, zscore or without any normalization, e.g.:

$ ./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

Analyzing the Results of Fusion at Frame-level

The performance of the individual countermeasures and their fusion can be dumped in to a file ./results/frame_based/results.txt using the script 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

The results.txt shows the performance of each method at frame-level.

Running the Time Analysis

The time analysis is the end of the processing chain, it fuses the scores of instantaneous scores for each method to give out a better estimation of attacks and real-accesses. To use it:

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

The time evolution for each method can be found in directory ./results/evolution/. The folder also contains a PDF file in which you can find all methods in same figure.

Mutual Error Analysis

The script venn.py performs mutual error analysis on the given countermeasures and outputs the results into a file ./results/Venn&scatter/Venn.txt:

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

Problems

In case of problems, please contact any of the authors of the paper.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

antispoofing.fusion-1.0.0.zip (40.4 kB view details)

Uploaded Source

File details

Details for the file antispoofing.fusion-1.0.0.zip.

File metadata

File hashes

Hashes for antispoofing.fusion-1.0.0.zip
Algorithm Hash digest
SHA256 75e372a72bcb291bb57f6288b7c7eb3f030bbc3897a3e5d7b13c2d54889ef70c
MD5 557fac48c18e8a95fce2132614fcb21e
BLAKE2b-256 be35262b301c474a7621761b9e71e6bbe887c90dc6de86ae266c5ed789a817b1

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page