Package: bob.paper.isba2018-entropy
This package is part of the signal-processing and machine learning toolboxBob. It contains the source code to reproduce the following paper:@inproceedings{Krivokuca_ISBA2018_2018,
          title = {Towards Quantifying the Entropy of Fingervein Patterns across Different Feature Extractors},
         author = {Krivoku{\'{c}}a, Vedrana and Marcel, S{\'{e}}bastien},
      booktitle = "{2018 IEEE 4th International Conference on Identity, Security, and Behavior Analysis (ISBA)}",
          month = "Jan",
           year = {2018}
}If you use this package and/or its results, please cite both the package and the correspondingpaper.  Also, please ensure that you include the two original Bob references (Bob) in your citations.Software InstallationThe first thing you must do is to install all the required software to reproduce the experiments in this paper.  Note that the installation instructions are based oncondaand that, for this paper, we currently only support Python 2.7 on Linux 64-bit architectures.  Keeping this in mind, proceed with the installation as follows:Install Miniconda.Download the paper source code and extract the files into your working directory.Navigate to your working directory as follows:$cd[path_to_your_working_directory]Create a conda environment containing all the necessary package dependencies, using the following command:$condaenvcreate-fenvironment.ymlActivate the environment as follows:$sourceactivatebob.paper.isba2018_entropy.envInstall the paper package to generate the necessary scripts in your working directory as follows:$buildoutDownloading the DatabasesThe next thing you must do is to download the two fingervein databases used in our experiments: VERA and UTFVP.  Please refer to the following websites to do this:VERAUTFVPTake note of the directories in which you have stored the downloaded databases.  Then, create a textfile named.bob_bio_databases.txtandstore it in your home directory.Inside this textfile, insert the following two lines:[YOUR_VERAFINGER_DIRECTORY]=path_to_vera_database[YOUR_UTFVP_DIRECTORY]=path_to_utfvp_databaseMake sure you replacepath_to_vera_databasewith the path to your downloaded VERA database andpath_to_utfvp_databasewith the path to your downloaded UTFVP database.Running the ExperimentsYou are now ready to run the experiments to reproduce the results in Table 2 and Figure 2 from our paper!  The experiments are run in two parts:Extract the fingervein features and compute the Hamming distance (HD) between every pair of feature vectors from different fingers, by executing the following commands (one at a time) in your terminal:$./bin/verify.pyvera-wld# WLD feature extractor on the VERA fingervein database$./bin/verify.pyvera-rlt# RLT feature extractor on the VERA fingervein database$./bin/verify.pyvera-mc# MC feature extractor on the VERA fingervein database$./bin/verify.pyutfvp-wld# WLD feature extractor on the UTFVP fingervein database$./bin/verify.pyutfvp-rlt# RLT feature extractor on the UTFVP fingervein database$./bin/verify.pyutfvp-mc# MC feature extractor on the UTFVP fingervein databasePlease be aware that it might take a while for each of the above experiments to complete.  This is particularly true for the RLT extractor and for the UTFVP database in general.By default, all experimental results will be stored in thebob.paper.isba2018_entropy/results/directory, under the database-specific and extractor-specific sub-directories.  For example, the results for the MC extractor on the VERA database will be stored in thebob.paper.isba2018_entropy/results/vera/mc/directory.Inside each extractor’s results directory, you will find the following sub-directories:preprocessed,extracted,models,Fullfor VERA andfullfor UTFVP, andgridtk_logs.  These directories store the results of the full fingervein recognition pipeline, starting from preprocessing the images in the database to calculating the HDs between different fingervein feature vectors.  In particular:preprocessed: contains the preprocessed finger images;extracted: contains the extracted fingervein features;models: contains the enrolled fingervein features;Full/nonorm/scores-dev(VERA) orfull/nonorm/scores-dev(UTFVP): textfile that contains the HD between every possible pair of extracted fingervein feature vectors (Fullorfullis the name of the matching protocol used, which in this case just means that the HD is calculated between all possible pairs of finger samples);gridtk_logs: contains messages logging the full experimental procedure.While the above directories are useful for you to inspect the output of each stage of the experimental process, the only results you need to worry about for now will be produced in part 2 of the experimental procedure.Calculate the entropy of the fingervein features from each extractor on each database, based on the previously-computed HDs (those calculated between the fingervein patterns fromdifferentfingersonly), by executing the following commands (one at a time) in your terminal:$./bin/calculate_entropy.py-d'vera'-e'wld'# WLD feature extractor on the VERA fingervein database$./bin/calculate_entropy.py-d'vera'-e'rlt'# RLT feature extractor on the VERA fingervein database$./bin/calculate_entropy.py-d'vera'-e'mc'# MC feature extractor on the VERA fingervein database$./bin/calculate_entropy.py-d'utfvp'-e'wld'# WLD feature extractor on the UTFVP fingervein database$./bin/calculate_entropy.py-d'utfvp'-e'rlt'# RLT feature extractor on the UTFVP fingervein database$./bin/calculate_entropy.py-d'utfvp'-e'mc'# MC feature extractor on the UTFVP fingervein databaseThere are two outputs for each command in this step of the experiment.  The first output is the set of statistics, including the mean, standard deviation, degrees of freedom, and entropy for the corresponding HD distribution, as per the results in Table 2 of the paper.  These statistics are printed in thestatistics.txttextfile of the results directory corresponding to each feature extractor and database.  For example, for the MC extractor on the VERA database, these results are stored inbob.paper.isba2018_entropy/results/vera/mc/statistics.txt.The second output is the HD distribution plot with the corresponding binomial distribution overlaid, as per the results in Figure 2 of the paper.  This plot is stored in theHD_distribution.pdffile, which is located in the same place as the correspondingstatistics.txttextfile.Note that, if you wish to work with just one extractor and one database at a time, you do not have to run all the commands from steps 1 and 2.  For example, if you are only interested in the results for the RLT extractor on the UTFVP database, you would execute the following commands in your terminal (in the specified order):$./bin/verify.pyutfvp-rlt# Extract the RLT features and calculate the HDs on the UTFVP fingervein database$./bin/calculate_entropy.py-d'utfvp'-e'rlt'# Calculate the entropy of the RLT features on the UTFVP fingervein databaseContactIf you have any questions or issues relating to this software package, please contact our developmentmailing list.