This application is used as reference code for developers to show how to use the C++ API and could be used to easily check the accuracy. The application accepts path to a JPEG/PNG/BMP file as input.
If you don't want to build this sample and is looking for a quick way to check the accuracy, then try our cloud-based solution at https://www.doubango.org/webapps/face-liveness/.
This sample is open source and doesn't require registration or license key.
The SDK is developed in C++11 and you'll need glibc 2.27+ on Linux and Microsoft Visual C++ 2015 Redistributable(x64) - 14.0.24123 (any later version is ok) on Windows. You most likely already have these dependencies on you machine as almost every program require it.
If you're planning to use OpenVINO, then you'll need Intel C++ Compiler Redistributable (choose newest). Please note that OpenVINO is packaged in the SDK as plugin and loaded (dlopen
) at runtime. The engine will fail to load the plugin if Intel C++ Compiler Redistributable is missing on your machine but the program will work as expected with Tensorflow as fallback. We highly recommend using OpenVINO to speedup the inference time. See benchmark numbers with/without OpenVINO at https://www.doubango.org/SDKs/face-liveness/docs/Benchmark.html#core-i7-windows.
To check if all dependencies are present:
- Windows x86_64: Use Dependency Walker on binaries/windows/x86_64/FaceLivenessDetectionSDK.dll and binaries/windows/x86_64/ultimatePluginOpenVINO.dll if you're planning to use OpenVINO.
- Linux x86_64: Use
ldd <your-shared-lib>
on binaries/linux/x86_64/libFaceLivenessDetectionSDK.so and binaries/linux/x86_64/libultimatePluginOpenVINO.so if you're planning to use OpenVINO.
- On x86-64, GPGPU acceleration is disabled by default. Check here for more information on how to enable it.
If you don't want to build this sample by yourself, then use the pre-built C++ versions:
- Windows x86_64: liveness.exe under binaries/windows/x86_64
- Linux x86_64: liveness under binaries/linux/x86_64. Built on Ubuntu 18. You'll need to download libtensorflow.so as explained here.
On Windows, the easiest way to try this sample is to navigate to binaries/windows/x86_64 and run binaries/windows/x86_64/liveness.bat. You can edit these files to use your own images and configuration options.
You'll need CMake to build this sample.
- Create build folder and move into it:
mkdir build && cd build
To generate the build files:
- Windows (Visual Studio files):
cmake .. -DCMAKE_GENERATOR_PLATFORM=x64 -DCMAKE_BUILD_TYPE=Release
- Linux (Makefile):
cmake .. -G"Unix Makefiles" -DCMAKE_BUILD_TYPE=Release
To build the project:
- Windows: Open the VS solution and build the projet
- Linux: Run
make
to build the project
After building the application you can test it on your local machine.
recognizer is a command line application with the following usage:
liveness \
--image <path-to-image-to-process> \
--assets <path-to-assets-folder> \
[--tokenfile <path-to-license-token-file>] \
[--tokendata <base64-license-token-data>]
Options surrounded with [] are optional.
--image
Path to the image(JPEG/PNG/BMP) to process. You can use default image at ../../../assets/images/disguise.jpg.--assets
Path to the assets folder containing the configuration files and models.--parallel
Whether to enabled the parallel mode. More info about the parallel mode at https://www.doubango.org/SDKs/face-liveness/docs/Parallel_versus_sequential_processing.html. Default: false.--tokenfile
Path to the file containing the base64 license token if you have one. If not provided, then the application will act like a trial version. Default: null.--tokendata
Base64 license token if you have one. If not provided, then the application will act like a trial version. Default: null.
- On Linux x86_64, you may use the next command:
LD_LIBRARY_PATH=../../../binaries/linux/x86_64:$LD_LIBRARY_PATH ./liveness \
--image ../../../assets/images/disguise.jpg \
--assets ../../../assets \
--parallel false
- On Windows x86_64, you may use the next command:
liveness.exe ^
--image ../../../assets/images/disguise.jpg ^
--assets ../../../assets ^
--parallel false