SourceAFIS CLI is a command-line interface for SourceAFIS libraries (Java, .NET). At the moment, it can benchmark algorithm accuracy, template footprint, and implementation speed. It also includes tools that aid in development of SourceAFIS, specifically transparency data logging and output checksums.
In order to benchmark SourceAFIS on particular hardware, clone the repository on the target machine and execute it.
git clone https://github.com/robertvazan/sourceafis-cli-java.git cd sourceafis-cli-java mvn compile exec:java
Give it a few minutes to download data and populate caches. You should then see benchmark report.
Dataset EER FMR100 FMR1K FMR10K High quality 2.23% 3.66% 5.80% 7.50% All 8.62% 13.1% 18.3% 22.0% Dataset Serialized Memory Minutiae High quality 585 B 16.7 KB 35 All 584 B 16.7 KB 35 Operation Iterations Parallel Thread Mean Min Max Sample Median SD Geom.mean GSD extraction 4,009 103 fp/s 25.8 fp/s 38.8 ms 6.14 ms 215 ms 4,009 35.0 ms 18.4 ms 35.8 ms 1.46x identification 1,802,642 46.9 Kfp/s 11.7 Kfp/s 85.2 us 60.0 ns 23.8 ms 6,800 81.1 us 163 us 76.6 us 1.88x verification 666,345 16.9 Kfp/s 4.23 Kfp/s 236 us 60.0 ns 22.7 ms 6,782 168 us 326 us 166 us 2.92x probe 34,688 1.20 Kfp/s 299 fp/s 3.34 ms 137 ns 76.3 ms 6,828 1.63 ms 5.58 ms 1.75 ms 3.51x serialization 46,041,553 1.34 Mfp/s 336 Kfp/s 2.98 us 681 ns 27.9 ms 6,696 2.56 us 11.5 us 2.65 us 1.44x deserialization 1,861,473 48.5 Kfp/s 12.1 Kfp/s 82.5 us 1.05 us 18.8 ms 6,694 58.3 us 274 us 61.5 us 2.10x
SourceAFIS CLI accepts a number of subcommands and options. You can enumerate them by executing the CLI with no arguments.
mvn compile exec:java -Dexec.args=""
SourceAFIS CLI will show information about every subcommand and option.
SourceAFIS CLI for Java Available subcommands: version Report version of SourceAFIS library being used. benchmark Measure algorithm accuracy, template footprint, and implementation speed. benchmark accuracy Measure algorithm accuracy. benchmark speed Measure algorithm speed. benchmark speed extraction Measure speed of feature extraction, i.e. FingerprintTemplate constructor. benchmark speed identification Measure speed of identification, i.e. calling match() with non-matching candidate. benchmark speed verification Measure speed of verification, i.e. calling match() with matching candidate. benchmark speed probe Measure speed of preparing probe template for matching, i.e. FingerprintMatcher constructor. benchmark speed serialization Measure speed of template serialization. benchmark speed deserialization Measure speed of template deserialization. benchmark footprint Measure template footprint. checksum Compute consistency checksum of all algorithm outputs. checksum templates Compute consistency checksum of templates. checksum scores Compute consistency checksum of similarity scores. checksum transparency extractor Compute consistency checksum of extractor transparency data. checksum transparency probe Compute consistency checksum of transparency data generated when preparing probe for matching. checksum transparency match Compute consistency checksum of transparency data generated during comparison of probe to candidate. log extractor <key> Log extractor transparency data for given key. log probe <key> Log transparency data for given key while preparing probe for matching. log match <key> Log transparency data for given key during comparison of probe to candidate. export grayscale Convert sample images to grayscale. purge Remove cached data except downloads. Available options: --home <path> Location of cache directory. Default: /home/rv/.cache/sourceafis --normalize Log normalized transparency data instead of raw data obtained from the library. --baseline <path> Compare with output of another SourceAFIS CLI. Path may be relative to cache directory, e.g. 'java/1.2.3'.
Subcommand name is passed to SourceAFIS CLI as part of command-line arguments.
The following example will run subcommand "
mvn compile exec:java -Dexec.args="benchmark accuracy"
You can view version of the currently used SourceAFIS library by executing "
mvn compile exec:java -Dexec.args="version"
SourceAFIS CLI will identify the underlying SourceAFIS library.
Some SourceAFIS CLI ports allow you to override SourceAFIS library version. Note that this might fail with error if the specified library version is too old to work with latest SourceAFIS CLI.
mvn compile exec:java -Dsourceafis.version="1.2.3"
If given SourceAFIS CLI port does not allow changing version on command line, you will have to edit SourceAFIS dependency version manually in project configuration.