Changelog

Note

The changelog is written with respect to the C++ SDK and therefore references C++ functions and data types. However, the same changes apply to the python bindings SDK and the corresponding functions and data types - the two SDKs are kept in sync.

v3.0 Alpha

Deprecated:

  • The Trueface::FacialRecognitionModel::LITE model has been deprecated. Use Trueface::FacialRecognitionModel::LITE_V2 or Trueface::FacialRecognitionModel::LITE_V3 for 1 to 1 matching instead.

  • Deprecated Trueface::SDK::estimatePose(), Trueface::Landmark, and Trueface::InitializeModule.bodyposeEstimator.

  • Deprecated the x86-64 CPU Linux, Ubuntu 18.04 builds.

  • Deprecated the C++ x86-64 GPU cuda-11.8 Linux, Ubuntu 18.04 and CentOS 8 build.

  • Deprecated the Python 3.8 GPU cuda-11.8 Linux, Ubuntu 18.04 build.

  • Deprecated the C++ x86-64 CPU macOS build.

  • Deprecated the following builds for Aarch64 Ubuntu 18.04:
    • Python 3.6 GPU CUDA-10.2 Ubuntu 18.04 Aarch64

    • Aarch64 GPU CUDA-10.2 Linux, Ubuntu 18.04

    • Aarch64 CPU Ubuntu 18.04

    • Python 3.6 CPU Ubuntu 18.04 Aarch64

    • Python 3.7 CPU Ubuntu 18.04

Changed:

  • Changed the function prototype of the following methods to take Trueface::HeadOrientation:
    • Trueface::SDK::estimateHeadOrientation()

    • Trueface::SDK::drawHeadOrientationAxes()

    • Trueface::SDK::drawHeadOrientationBox()

    • Trueface::SDK::detectSpoof()

  • Changed preprocess code for Trueface::FaceDetectionModel::FAST, allowing it to work better with smaller images.

Added:

  • Added Trueface::HeadOrientation for describing head orientation.

  • Added new method Trueface::SDK::estimateFaceTemplateQuality() which returns a metric defined to measure the biometric utility or effectiveness of a face sample for the purpose of face recognition.

  • Added Trueface::GPUOptions.faceTemplateQualityGPUOptions and Trueface::InitializeModule.faceTemplateQualityEstimator.

  • Added new face recognition model, Trueface::FacialRecognitionModel::LITE_V3. This model has similar inference time as Trueface::FacialRecognitionModel::LITE_V2 but is significantly more accurate - now our most accurate lightweight model.

  • Added the following methods for running batch inference:
    • Trueface::SDK::getFaceLandmarks() override

    • Trueface::SDK::detectFaceImageBlurs()

    • Trueface::SDK::getFaceImageRotations()

    • Trueface::SDK::detectBlinks()

  • Added the following builds for x86-x64 Ubuntu 22.04:
    • Python 3.10 GPU cuda-12.0 Linux, Ubuntu 22.04

    • C++ x86-64 GPU cuda-12.0 Linux, Ubuntu 22.04

    • C++ x86-64 CPU Linux, Ubuntu 22.04

  • Added the following builds for aarch64 Ubuntu 22.04:
    • Aarch64 GPU CUDA-12.0 Linux, Ubuntu 22.04

    • Python 3.10 GPU CUDA-12.0 Ubuntu 22.04 Aarch64

    • Python 3.10 CPU Ubuntu 22.04 Aarch64

  • Added the C++ x86-64 GPU cuda-11.8 Linux, Ubuntu 20.04 build

Fixed:

  • Fixed bug in which first GPU inference for a specific module (ex. face detection) took longer than subsequent inferences, even when Trueface::ConfigurationOptions.initializeModule had been enabled.

  • Fixed Trueface::SDK::identifyTopCandidate() and Trueface::SDK::identifyTopCandidates() on Windows to properly make use of threading to accelerate search.

v2.4 Beta

Fixed:

  • Fixed bug which occurs if a collection is deleted and then later a collection is created with the same name.

  • Fixed bug where PostgreSQL version check could be bypassed by ignoring Trueface::SDK::createDatabaseConnection non-success return code.

Added:

  • Added an additional Trueface::SDK::detectSpoof() that takes in yaw, roll, Trueface::SDK::BlinkState, and Trueface::SDK::MaskLabel for callers that already have these values available. This avoids having to recompute the information.

  • Added Trueface::ErrorCode::POSTGRESQL_VERSION_MISMATCH which is returned when the PostgreSQL server version does not match the PostgreSQL client version linked by the SDK.

  • Added Trueface::ErrorCode::STRING_CANNOT_CONTAIN_UPPERCASE.

  • Added Trueface::ErrorCode::INVALID_ARGUMENT.

v2.3 November 28th, 2023

Added:

  • Added Trueface::SDK::getLoadedCollectionNames() method which returns a list of collections which are currently loaded in memory.

  • Added Trueface::SDK::loadCollectionPersist() method which loads the specified collection into memory while persisting any previously loaded collections (see our FAQ page for more details on this method).

Changed:

  • Changed Trueface::SDK::detectMask() function signature. Method now returns the probability that no mask was detected, which can be used for setting custom thresholds that work better for various use cases.

  • Changed Trueface::SDK::detectMasks() function signature. Method now returns a list of probabilities, corresponding to the results, that no mask was detected.

  • Changed Trueface::SDK::detectFaceImageBlur() function signature. Method now returns the probability that an image is blurry, which can be used for setting custom thresholds that work better for various use cases.

For the Python bindings, the following SDK methods have changed to return an tfsdk.ErrorCode in addition to items that were previously returned. The convention follows the behavior of other methods in the Python SDK, namely that the tfsdk.ErrorCode is the first object in the return order.

  • tfsdk.SDK.detect_objects()

  • tfsdk.SDK.extract_aligned_face()

  • tfsdk.SDK.detect_largest_face()

  • tfsdk.SDK.detect_faces()

  • tfsdk.SDK.estimate_pose()

v2.2 October 27, 2023

Added:

  • Added GPU support for Trueface::FacialRecognitionModel::LITE_V2.

  • Added support for loading multiple collections in memory at once.

  • Added Trueface::SDK::loadCollections() method which allows loading multiple collections in memory at once.

  • Added BYPASS_POSTGRESQL_VERSION_CHECK environment variable.

Changed:

  • The function signatures for the following methods have changed to accept an optional collection name parameter. If only one collection is loaded in memory, then the collection name does not need to be specified (in order to maintain backwards compatibility). If more than one collection is loaded, then the collection name must be provided, specifying the collection on which the operation is to be run.

    • Trueface::SDK::enrollFaceprint()

    • Trueface::SDK::removeByUUID()

    • Trueface::SDK::removeByIdentity()

    • Trueface::SDK::identifyTopCandidate()

    • Trueface::SDK::identifyTopCandidates()

    • Trueface::SDK::batchIdentifyTopCandidate()

  • If using Trueface::DatabaseManagementSystem::POSTGRESQL, the SDK now requires PostgreSQL 15 instead of PostgreSQL 12. For instructions on how to upgrade your database, please see resource 1 and resource 2.

  • Changed Trueface::SDK::checkFaceImageExposure() function signature. Method now returns more information about exposure metrics which can be used to fine tune decision.

Fixed:

  • Trueface::SDK::deleteCollection() now propagates a notification to all connected nodes, notifying them to delete their in-memory collection if they possess one with the same name.

v2.1 September 25, 2023

Added:

  • Added internal checks to ensure model file is of correct size and is not the result of a faulty download.

Changed:

  • Trueface::SDK::identifyTopCandidate() now able to use all available threads for search (previously was capped at 6 threads).

  • The environment variable used to control the number of threads used the SDK has been changed from OMP_NUM_THREADS to TF_NUM_THREADS.

Fixed:

  • Inference threading model has been improved and now supports the use of a global inference threadpool, which can be enabled with Trueface::ConfigurationOptions.useGlobalInferenceThreadpool. Refer to our FAQ page for more details on this option. This change has improved inference speed significantly when running models in a sequential pipeline.

Deprecated:

  • x86 Python 3.7 64Bit CPU macOS release has been deprecated.

v2.0 August 21, 2023

V2.0 introduces major breaking changes to the SDK. We have swapped out our CPU inference engine and now use onnxruntime under the hood. With this change, we are now no longer able to support Trueface::FacialRecognitionModel::TFV5 in v2.0+ as the model could not be converted to the required format. As a substitute for this model, we released Trueface::FacialRecognitionModel::TFV5_2 which has very similar accuracy and inference time to Trueface::FacialRecognitionModel::TFV5. However, Faceprints are not compatible between the two models; if you would like to upgrade a collection containing Trueface::FacialRecognitionModel::TFV5 Faceprints to Trueface::FacialRecognitionModel::TFV5_2 Faceprints, you will need to regenerate and re-enroll Faceprints for all your images. As a result of these changes, you can expect approximately a 30% speedup in inference time on x86 CPUs, while RAM usage has been reduced significantly (close to 10X for our most accurate face recognition models). Our GPU SDK now takes advantage of lazy loading of CUDA kernels resulting in a significant reduction in GPU memory usage.

Added:

  • Added dark theme support for our documentation page. The toggle button for dark theme is in the bottom right of the page.

  • Added Trueface::FaceBoxAndLandmarks::getHeight() and Trueface::FaceBoxAndLandmarks::getArea().

  • Added Trueface::InitializeModule.eyeglassDetector.

  • Added Trueface::FaceDetectionModel and Trueface::ConfigurationOptions.fdModel. The default face detection model has been relabeled as Trueface::FaceDetectionModel::FAST while the new added model is named Trueface::FaceDetectionModel::ACCURATE.

  • Added GPU support for the following models which previously only supported CPU inference:
    • 106 face landmark detector

    • passive spoof detector

    • blink detector

Changed:

  • The GPU SDK now links against TensorRT 8.6.1.6. If you already have TensorRT installed, please upgrade to this new version. For download instructions, navigate to the main downloads page and see section titled “GPU SDK Dependencies”.

  • It is now suggested to use CUDA 11.8 with the GPU SDK instead of CUDA 11.2.

  • The face detection method has been modified, whereby the SDK internally resizes and pads images to a fixed size. Due to this change, increasing the Trueface::ConfigurationOptions.smallestFaceHeight no longer speeds up inference time. The Trueface::ConfigurationOptions.smallestFaceHeight only works to filter out detections based on height after detection step. Consequently, setting this parameter to -1 is no longer supported. Additionally, the face detector is now able to detect faces in the following dynamic height range. Smallest detectable face = ((the larger of your image dimensions) / 640 * 20) pixels. Largest detectable face = (your image height) pixels.

  • Trueface::SDK::estimateFaceImageQuality() internals have been modified, suggested threshold is now 0.5.

  • Trueface::InitializeModule.liveness has been changed to Trueface::InitializeModule.blinkDetector.

  • The Trueface::SDK::detectBlink() method has been improved.

  • Glasses detection model is no longer embedded in the SDK, and needs to be downloaded using provided script.

  • Blink detection model has been improved.

  • mxnet is no longer required as a runtime dependency for the GPU SDK.

  • When linking against static library, you must also link libdl.

  • The version of OpenCV which is linked internally by the SDK was bumped from 4.1.1 to 4.8.0.

Deprecated:

  • Trueface::FacialRecognitionModel::TFV5, use Trueface::FacialRecognitionModel::TFV5_2 instead; however, Faceprints are not compatible between the two models so you will need to regenerate and re-enroll.

  • Trueface::FacialRecognitionModel::FULL.

  • INIT_FD_IMG_WIDTH and INIT_FD_IMG_HEIGHT have been removed as they no longer impact the face detector.

  • Trueface::SDK::preprocessRgbImage().

  • Trueface::Image::isManagedBuffer().

  • Trueface::ConfigurationOptions.batchSizes.

v1.8 July 24, 2023

Added:

  • Added new face recognition model, Trueface::FacialRecognitionModel::TFV7.

  • Added new model download scripts, download_face_recognition_tfv7_gpu.sh and download_face_recognition_tfv7_cpu.sh.

  • Trueface::ErrorCode::STRING_CANNOT_CONTAIN_HYPHEN returned if collection name contains a hyphen.

  • Added “Image Annotation” section to documentation.

  • Added Trueface::ColorRGB.

  • Added Trueface::SDK::drawFaceBoxAndLandmarks().

  • Added Trueface::SDK::drawCandidateBoundingBoxAndLabel().

  • Added Trueface::SDK::drawFaceLandmarks().

  • Added Trueface::SDK::drawHeadOrientationAxes().

  • Added Trueface::SDK::drawHeadOrientationBox().

  • Added Trueface::SDK::setCameraParameters().

Changed:

  • Trueface::SDK::estimateHeadOrientation() API has changed and now additionally requires a Trueface::Landmarks struct to be passed. The predicted results are now more accurate, and the face height requirement of 100 pixels or larger has also been removed.

v1.7 June 23, 2023

Added:

  • Added Trueface::FaceImageQuality enum.

  • Added Trueface::SDK::detectFaceImageBlur() method for determining if a face image is blurry or good quality for face recognition.

  • Added two new scripts for downloading face blur detection model files, download_face_blur_detector_v1_gpu.sh and download_face_blur_detector_v1_cpu.sh.

  • Added Trueface::InitializeModule.faceBlurDetector().

  • Added Trueface::GPUOptions.faceBlurDetectorGPUOptions().

  • Added tfsdk.Facechip.as_numpy_array() python bindings method.

  • Added Trueface::SDK::registerDatabaseDisconnectionCallback() method which can be used to register a callback method which the SDK will call if there is ever a database disconnection.

Changed:

  • Trueface::SDK::checkFaceImageExposure() method has been changed to now return Trueface::FaceImageQuality.

  • Return Trueface::ErrorCode::DATABASE_NOT_CONNECTED and Trueface::ErrorCode::COLLECTION_NOT_LOADED instead of throwing exceptions when 1 to N operations fail due to a database or collection not being loaded.

  • pqxx::broken_connection exceptions are now caught by the SDK and return as Trueface::ErrorCode::DATABASE_NOT_CONNECTED.

Fixed:

  • Fixed tfsdk.Image.as_numpy_array() python binding method for GPU SDK.

  • Fixed bug with GPU face detector when Trueface::ConfigurationOptions.initializeModule.faceDetector is enabled and using multiple GPUs.

  • Allow 1 to N identification queries to continue being made even after a database connection is broken.

Removed:

  • Removed REQUIRE_STRICT_COLLECTION_SYNC environment variable.

v1.6 March 30, 2023

Added:

  • Added Trueface::SDK::getFaceImageRotation() method for determining the rotation required to orient an image neutral.

  • Added two new scripts for downloading face orientation model files, download_face_orientation_detector_v1_gpu.sh and download_face_orientation_detector_v1_cpu.sh.

  • Added Trueface::RotateFlags::ROTATE_0().

  • Added Trueface::InitializeModule.faceOrientationDetector().

  • Added Trueface::GPUOptions.faceOrientationDetectorGPUOptions().

Changed:

  • OpenCV exceptions previously thrown in Trueface::SDK::preprocessImage() method will now be returned as a Trueface::ErrorCode().

v1.5: February 22, 2023

Fixed:

  • Fixed bug that occurs when connection to PostgreSQL is re-established in SDK notification checker.

  • Fixed Trueface::InitializeModule for the GPU face detector.

Added:

  • Added Trueface::SDK::checkFaceImageExposure() method for determining if a face image has the correct exposure.

  • Added new environment variables, REQUIRE_STRICT_COLLECTION_SYNC, DB_NOTIFICATION_CHECK_FREQUENCY, NUM_DB_RETRIES, INIT_FD_IMG_WIDTH, and INIT_FD_IMG_HEIGHT.

  • Added support for locking a single SDK token to multiple hardware.

  • Added new API method, Trueface::Image::resize().

Changed:

  • The Trueface::SDK::detectLargestFace() and Trueface::SDK::getLargestFaceFeatureVector() methods now return the face with the largest area instead of the largest width.

  • Aarch64 CPU Ubuntu 18.04 and Aarch64 GPU CUDA-10.2 Linux, Ubuntu 18.04 SDKs are now compiled with aarch64-linux-gnu-g++ 8.4.0 instead of aarch64-linux-gnu-g++ 7.5.0 due to compiler bug.

  • Aarch32 CPU Ubuntu 18.04 is now compiled with arm-linux-gnueabihf-g++ 8.4.0 instead of arm-linux-gnueabihf-g++ 7.5.0 due to compiler bug.

  • TensorRT engine file is no longer locked to GPU UUID but instead to GPU name, meaning that generated engine files can be shared accross devices which have the same GPU type.

v1.4: December 29, 2022

Added:

  • Added GPU inference support for object detection.

  • Added Trueface::GPUOptions.objectDetectorGPUOptions.

  • Added new method Trueface::SDK::drawObjectLabels().

  • Added Trueface::InitializeModule.maskDetector.

  • Added HOSTED_DATABASE environment variable. This should be set to true when your PostgreSQL database is hosted by a service provider such as Digital Ocean, AWS, etc.

Changed:

  • Object detection model has been improved (new model based on YoloV7). New model must be downloaded by running provided scripts.

  • Addition of new object detector classes.

  • Passive spoof model has been improved, must be downloaded by calling the download_spoof_v4.sh script.

Fixed:

  • Fixed bug that occurs when connection to PostgreSQL backend is interrupted.

Breaking:

  • The Trueface::SDK::drawPose() function signature has been changed.

v1.3: October 13, 2022

Added:

  • Added new method for batch mask detection, Trueface::SDK::detectMasks().

Changed:

  • The mask detection model has been improved. You must download the new model using the provided script download_mask_detector_v3_cpu.sh.

  • Trueface::GPUModuleOptions::enableGPU is now Trueface::GPUOptions::enableGPU, and Trueface::GPUModuleOptions::deviceIndex is now Trueface::GPUOptions::deviceIndex. GPU must be either enabled or disable for all modules, and if enabled, the device index must be the same for all modules.

  • Passive spoof model has been improved, must be downloaded by calling the download_spoof_v3.sh script.

  • Added optimization to Trueface::SDK::loadCollection() method which prevents a full collection reload for the Trueface::DatabaseManagementSystem.SQLITE backend if the collection is already up to date.

v1.2: July 22, 2022

Added:

  • Added Aarch64 CPU Ubuntu 20.04 C++ and Python 3.10 64Bit CPU Ubuntu 20.04 Aarch64 to downloads page.

Changed:

  • The passive spoof method implementation has been changed, and now performs much better than before. Input image must now conform to strict criteria otherwise an error code will be returned. Be sure to consult documentation page for proper usage of this method.

  • The similarity score to match probability mapping has been modified, resulting in in a better distribution of match probability values.

v1.1: June 10, 2022

Added:

  • Added Trueface::Facechip class for storing aligned face chip, and Truface::TFFacechip alias.

  • Release the Python Global Interpreter Lock (GIL) in all inference functions and long running functions to improve performance of multithreaded Python code.

  • Added optimization to Trueface::SDK::preprocessImage() method for GPU SDK.

  • Added CUDA 11.2 Ubuntu 18.04 Python 3.8 library to downloads page.

  • Added Trueface::RotateFlags enum.

Breaking:

  • The Trueface::SDK::extractAlignedFace() method has been modified to populate a Trueface::TFFacechip with the aligned face chip data. The user is no longer responsible for allocating this buffer.

  • The Trueface::SDK::getFaceFeatureVector() and Trueface::SDK::getFaceFeatureVectors() methods have been modified to take Trueface::TFFacechip as a parameter.

  • The Trueface::Image::rotate() method has been modified to take a Trueface::RotateFlags as a parameter.

Fixed:

  • Fixed bug with Trueface::SDK::extractAlignedImage() when using GPU image.

  • Fixed bug with GPU images with zero stride.

Removed:

  • Trueface::ConfigurationOptions.deviceIndex and Trueface::ConfigurationOptions.batchSizes, which were deprecated in V1.0, have now been removed.

v1.0: May 10, 2022

V1.0 introduces major breaking changes to the SDK. The SDK has been refactored to remove state, meaning that Trueface::SDK::setImage() has been replaced by Trueface::SDK::preprocessImage(). Calling Trueface::SDK::preprocessImage() returns a Trueface::TFImage which must then be passed to the inference functions. Learn more about why this change was made here.

Added:

  • Added new Trueface::Image class which is returned by calls to Trueface::SDK::preprocessImage().

  • Added new face recognition model, Trueface::FacialRecognitionModel::TFV6.

  • Added new struct for configuring GPU SDK, Trueface::GPUOptions and Trueface::GPUModuleOptions.

  • Added Trueface::InitializeModule.passiveSpoof.

  • Added << operator for Trueface::ErrorCode.

  • Added Trueface::SDK::preprocessRgbImage() method, more efficient than Trueface::SDK::preprocessImage() as data is referenced instead of copied.

Changed:

  • CPU SDK is now shipped as both a static and dynamic library.

  • GPU SDK no longer contains libmxnet.so. It is instead shipped as part of the download bundle and linked dynamically.

  • GPU SDK user must install TensorRT 8.2 with CUDA and cuDNN version which matches that of SDK. More information on how to do so here. Learn about how the TensorRT engine file works here.

  • Trueface::FacialRecognitionModel::TFV6 and newer models will use FP16 precision for GPU inference by default (this can be changed to FP32 by modifying the Trueface::GPUModuleOptions.precision parameter).

  • Improved the passive spoof model. Must download new model by running download_spoof_v2.sh.

  • The following API functions have been modified to take a Trueface::TFImage as an input parameter:

    • Trueface::SDK::checkSpoofImageFaceSize().

    • Trueface::SDK::detectObjects().

    • Trueface::SDK::estimatePose().

    • Trueface::SDK::drawPose().

    • Trueface::SDK::detectLargestFace().

    • Trueface::SDK::detectFaces().

    • Trueface::SDK::getLargestFaceFeatureVector().

    • Trueface::SDK::getFaceLandmarks().

    • Trueface::SDK::detectBlink().

    • Trueface::SDK::extractAlignedFace().

    • Trueface::SDK::getFaceFeatureVector().

    • Trueface::SDK::estimateHeadOrientation().

  • Updated all C++ and Python sample code to use the new API.

Deprecated:

  • The x86-64 CUDA 10.1 cuDNN7 GPU SDK has now been deprecated. Use the x86-64 CUDA 11.2 cdDNN8 SDK instead.

  • Trueface::ConfigurationOptions.deviceIndex is now deprecated, use Trueface::GPUModuleOptions.deviceIndex instead.

  • Trueface::ConfigurationOptions.enableGPU is now deprecated, use Trueface::ConfigurationOptions.gpuOptions instead.

  • Trueface::ConfigurationOptions.batchSizes is now deprecated for Trueface::FacialRecognitionModel::TFV6 and newer models, use Trueface::GPUModuleOptions.optBatchSize and Trueface::GPUModuleOptions.maxBatchSize instead.

  • Trueface::SDK::getImageProperties().

  • Trueface::ImageProperties.

  • Trueface::SDK::saveImage(), use Trueface::Image::saveImage() instead.

  • Trueface::SDK::setImage(), use Trueface::SDK::preprocessImage() instead.

v0.33: November 15, 2021

Fixed:

  • Fixed bug with Trueface::SDK::getCollectionNames() which returned tables which were not created by the SDK in the same database.

v0.32: October 15, 2021

Changed:

  • Improved the mask detector. Mask detection model must now be downloaded by running download_mask_detector_v2.sh.

Fixed:

  • Instead of throwing an exception immediately, if the PostgreSQL database connection is broken, the SDK will try to reconnect for a total of 60 seconds before throwing an exception.

Breaking:

  • Mask detection function signature has been changed, the maskScore output parameter has been removed.

v0.31: October 15, 2021

Added:

  • Added new configuration options, Trueface::ConfigurationOptions.batchSizes which allows specifying batch sizes which will be used. This improves performance when switching between different batch sizes.

  • Added NodeJS SDK to downloads page. NodeJS SDK is now kept in sync with the main SDK.

v0.30: September 24, 2021

Added:

  • Added database encryption support. Encryption of biometric templates and identity strings can be enabled through the Trueface::ConfigurationOptions.encryptDatabase configuration option.

  • Added Trueface::EncryptDatabase data structure.

Fixed:

  • Fixed bug in PostgreSQL backend notification system which could cause silent failures of notification propagation system when enrolled identity strings contained a space.

v0.29: September 13, 2021

Added:

  • Added iOS build to downloads page.

  • Added static function Trueface::SDK::getDeviceFingerprint() for obtaining unique device fingerprint.

  • Added static function Trueface::SDK::getGPUUUID() for obtaining GPU UUID.

  • Added Trueface::InitializeModule configuration option which initializes specified modules in the SDK constructor instead of default lazy initialization.

Changed:

  • Faster decryption of model files when loading them from disk.

v0.28: August 18, 2021

Added:

  • Added new Trueface::FacialRecognitionModel::LITE_V2 face recognition model which has improved accuracy over previous LITE model.

  • Added SDK support for Ubuntu 18.04 CUDA 11.2 target.

Changed:

  • Improved the benchmarking scripts, benchmark.cpp and benchmark_1N_identification.cpp.

v0.27: August 2, 2021

Breaking:

  • Trueface::SDK::getFaceLandmarks() function signature has changed. Function now takes std::array<Point<float>, 106> instead of std::array<Point<int>, 106>.

Added:

  • Added active spoof detection to SDK.

  • Added new API functions, Trueface::SDK::checkSpoofImageFaceSize() and Trueface::SDK::detectActiveSpoof().

  • Added new API enums, Trueface::ActiveSpoofStage and Trueface::SpoofLabel.

  • Added new active spoof sample code, active_spoof.cpp.

  • Added Landmarks alias for std::array<Point<float>, 106>.

Changed:

  • “Face Detection and Recognition” documentation tab has now been split into “Face Detection” and “1 to 1 Face Recognition”.

v0.26: July 6, 2021

Breaking:

  • Trueface::SDK::getFaceLandmarks() function signature has changed.

  • Trueface::SDK::detectBlink() function signature has changed.

Added:

  • Added Trueface::BlinkState struct. Returned by calls to Trueface::SDK::detectBlink().

  • Added Trueface::ErrorCode::EXTREME_FACE_ANGLE enum member.

  • Added batch_enroll_in_database.py sample code demonstrating how to batch generate and enroll Faceprints into a collection.

  • Added shell script named download_face_landmarks_v2.sh for downloading face landmarks model.

  • Added new Python bindings sample app named face_landmarks_live_streaming.py.

Changed:

  • Blink detection model has been improved. The blink detection API function is no longer deprecated. The model is also no longer embedded in the SDK and must be downloaded by running download_blink_detector_v1.sh shell script.

  • Trueface::SDK::getFaceLandmarks() function has been improved and is no longer deprecated.

  • Updated the liveness / blink detection sample code.

  • Object detection model is no longer embedded in the SDK, and must be downloaded by running download_object_detector_v1.sh.

  • Python bindings sample code has been improved to print errors in red to make them more visible.

v0.25: June 22, 2021

Added:

  • Added Trueface::DatabaseManagementSystem::POSTGRESQL support for Trueface Windows SDK.

  • Windows SDK is now a dynamic library. The download bundle contains libtf.lib (required at compile time), and libtf.dll and libpq.dll (required at runtime).

  • Defined SDK copy constructor, assignment operator, move constructor, and move assignment operator.

Changed:

  • Trueface::SDK::saveFaceImage() now takes two additional parameters, height and width.

v0.24: June 8, 2021

Added:

  • Added ssl support for PostgreSQL backend. It can be enabled by adding sslmode=require to the database connection string.

Changed:

  • Changed suggested threshold for Trueface::SDK::estimateFaceImageQuality() to 0.999.

v0.23: May 27, 2021

Changed:

  • x86_64 GPU SDK now supports GPUs with Compute Capability 5.2+ (previously 6.0+).

  • C++ sample code now comes shipped with a CMakeLists.txt which demonstrates how to compile and link against the SDK.

  • The identification.cpp sample code has been split into two sample code files, enroll_in_database.cpp and identification_1_n.cpp.

  • Improved python bindings sample apps, identification.py has been split into two sample code files, enroll_in_database.py and identification_1_n.py.

  • The default threshold used for Trueface::SDK::identifyTopCandidate(), Trueface::SDK::identifyTopCandidates(), and Trueface::SDK::batchIdentifyTopCandidate() has been increased from 0.3 to 0.4.

Fixed:

  • Fixed bug which required FR model to be downloaded in order to run mask detection, glasses detection, spoof, and chip extraction.

  • Fixed bug in Trueface::SDK::batchIdentifyTopCandidate() in which Trueface::Candidate.matchProbability was not being set.

Deprecated:

  • Trueface::SDK::FaceDetectionMode has been removed.

v0.22: May 12, 2021

Added:

  • Added SDK support for AArch64 CUDA.

Breaking Changes:

  • Default Trueface::ConfigurationOptions.frModel has been changed from Trueface::FacialRecognitionModel::LITE to Trueface::FacialRecognitionModel::TFV5

v0.21: May 4, 2021

Added:

  • Added checks to Trueface::SDK::setImage() to ensure provided buffer is not empty.

Fixed:

  • Fixed bug in Trueface::SDK::identifyTopCandidates() which only impacted very rare corner cases.

  • Changed default threshold parameters value for Trueface::SDK::identifyTopCandidates() function from 3.f to 0.3f.

  • If Trueface::SDK::identifyTopCandidates() is called with numCandidates set to 1, it now returns an empty list if found returns false.

v0.20: April 26, 2021

Added:

  • Added SDK support for Ubuntu 20.04.

  • Added GPU SDK support for CUDA 11.

v0.19: April 14, 2021

Changed:

  • GPU face detector is now significantly faster (approximately 2-3x faster). The model also no longer needs to be downloaded at runtime.

  • MXNET_CUDNN_AUTOTUNE_DEFAULT is set to 0 by default.

  • All enum in tf_data_types.h have been changed to enum class.

  • Trueface::SDK::getObjectLabelString() is now a static method.

Removed:

  • Removed the download_face_detection_gpu.sh script, model no longer needs to be loaded at runtime.

Deprecated:

  • Trueface::SDK::FaceDetectionMode has been deprecated and may be removed in future releases.

v0.18: March 29, 2021

Fixed:

  • Fixed bug in CPU face detector which prevented OMP_NUM_THREADS being used properly. CPU face detector now uses fewer threads and is faster.

v0.17: March 11, 2021

Changed:

  • Trueface::SDK::detectGlasses() now returns glasses confidence score.

  • Improved python bindings documentation to provide more information regarding function parameters and return values.

Fixed:

  • Fixed bug with Trueface::SDK::getFaceFeatureVectors() when using CPU inference with GPU SDK.

Deprecated:

  • Marked Trueface::SDK::detectSpoof(), Trueface::SDK::detectBlink(), and Trueface::SDK::getFaceLandmarks() as deprecated due to suboptimal performance.

v0.16: February 25, 2021

Added:

  • New face recognition model Trueface::FacialRecognitionModel::TFV5. We have deprecated the Trueface::FacialRecognitionModel::FULL model (TFV4) but will continue to support it for clients with existing collections. More details on the FAQ page

  • Added download_face_recognition_tfv5_cpu.sh and download_face_recognition_tfv5_gpu.sh which must be run in order to use TFV5 (use the respective script for your target platform).

Changed:

  • Trueface::FacialRecognitionModel::FULL face recognition model download scripts have been changed from download_face_recognition_cpu.sh and download_face_recognition_gpu.sh to download_face_recognition_tfv4_cpu.sh and download_face_recognition_tfv4_gpu.sh.

  • Trueface::FacialRecognitionModel::FULL face recognition model (TFV4) is not longer embedded in the SDK and must be downloaded by running download_face_recognition_tfv4_cpu.sh. This has reduced the SDK binary size by about 230Mb.

Removed:

  • Removed ARM C++ lite downloads from main downloads page. These builds are now redundant as the FULL model is no longer embedded in the SDK.

v0.15: February 16, 2021

Changed:

  • Can choose to run inference on GPU for individual modules using Trueface::EnableGPU configuration option.

  • Changed identification.cpp, identification.py, and identification_live_streaming.py sample code to demonstrate usage of new collection metadata functions.

Added:

  • Trueface::SDK::createCollection(), Trueface::SDK::loadCollection(), and Trueface::SDK::deleteCollection() API functions. Calling Trueface::SDK::createCollection() then subsequently Trueface::SDK::loadCollection() is equivalent to calling Trueface::SDK::createLoadCollection().

  • Trueface::SDK::getCollectionNames() API function returns a list of the names of all the collections in the database.

  • Trueface::SDK::getCollectionMetadata() API function returns the metadata for the specified collection in the database, loaded or unloaded.

  • Trueface::SDK::getCollectionIdentities() API function returns a map of identities and UUIDs for the specified collection in the database, loaded or unloaded.

  • Trueface::CollectionMetadata API struct, returned by Trueface::SDK::getCollectionMetadata().

v0.14: January 25, 2021

Changed:

  • Default value of Trueface::ConfigurationOptions.smallestFaceHeight has been increased from 20px to 40px.

  • Downloadable model file formats have changed. You will need to re-run the model download scripts if upgrading from an older SDK version.

  • Changed sample app images.

Fixed:

  • Fixed bug which impacted Faceprint feature vector integrity with calls to Trueface::SDK::jsonToFaceprint() and Trueface::SDK::faceprintToJson() when Trueface::ConfigurationOptions.frVectorCompression was set to true. The format of serialized Faceprint feature vectors (generated with Trueface::ConfigurationOptions.frVectorCompression = true) has changed and therefore old serialized Faceprints which were generated and saved cannot be used with new versions of the SDK.

  • MXNET_CUDNN_AUTOTUNE_DEFAULT environment variable is now properly read by the GPU SDK. MXNET_CUDNN_AUTOTUNE_DEFAULT=0 should be set when variable-sized input images are used.

v0.13: January 15, 2021

Removed:

  • Removed functions which were marked as deprecated in release 0.11.

Fixed:

  • Fixed bug in python bindings function Trueface::SDK::identify_top_candidates().

v0.12: January 4, 2021

Added:

  • Added Windows SDK to downloads page.

Fixed:

  • Cap similarityMeasure at 1.f, previously could sometimes exceed 1 due to rounding errors.

  • Improved 1 to N identification sample apps, better demonstrate how to select high quality enrollment images. Improved 1 to N identification documentation.

  • Fixed Trueface::SDK::getFaceFeatureVectors() function when running GPU SDK with Trueface::enableGPU set to false.

v0.11: December 23, 2020

Changed:

  • Function prototype changed for Trueface::SDK::removeByIdentity(). Now returns the number of Faceprints which were deleted from the collection.

  • Trueface::SDK::enrollTemplate() has been deprecated, use Trueface::SDK::enrollFaceprint() instead.

  • Trueface::SDK::getLargestFaceFeatureVector(Trueface::Faceprint&) has been deprecated, use Trueface::SDK::getLargestFaceFeatureVector(Trueface::Faceprint&, bool&) instead.

Fixed:

  • Fixed bug with logger.

v0.10: December 11, 2020

New features and enhancements:

  • Face recognition template generation speed improvements on x86 CPU (both Trueface::FacialRecognitionModel::LITE and Trueface::FacialRecognitionModel::FULL model template generation nearly twice as fast). The RAM usage has also increased, the Trueface::FacialRecognitionModel::FULL model now using 2Gb RAM (previously 1.1Gb), and the Trueface::FacialRecognitionModel::LITE model using 55Mb RAM (previously 35Mb).

Changed:

  • SDK now supports CPUs which have AVX instruction set and don’t have AVX2 instruction set (previously our SDK required AVX2 CPUs). SDK uses runtime dispatching and will run significantly faster on CPUs supporting AVX2.

  • Trueface::SDK::faceprintToJson() no longer adds newline to json elements.

v0.9: November 20, 2020

New features and enhancements:

  • Python3.7 bindings for AArch64 and Arm32 SDK (previously only python3.6).

  • Added Trueface::SDK::setImage(const std::vector<uint8_t>&) overload which accepts buffer to encoded JPG, PNG, or TIFF image

Changed:

  • Changed scripts for downloading runtime model files. They are now located in the download_models directory.

  • Function prototype changed for Trueface::SDK::isLicensed() function. Now returns how many days are remaining for the license token.

Fixed:

  • Fixed bug with GPU face detector where Trueface::ConfigurationOptions.smallestFaceHeight parameter was not being used.

  • Bug in spoof code which was producing incorrect results. Spoof function prototype has also been changed, must provided the Trueface::FaceBoxAndLandmarks of the face to be analyzed.

v0.8: November 9, 2020

New features and enhancements:

  • All Python classes have a __repr__ method.

  • Python bindings for AArch64 and Arm32 SDK.

  • Log number of days remaining for license.

  • Can use images residing in CUDA memory for face detection and recognition.

  • Added PostgreSQL DatabaseManagementSystem support.

  • Added Trueface::SDK::faceprintToJson() and Trueface::SDK::jsonToFaceprint() functions for deserializing / serializing Faceprint objects as strings.

  • Improved sample apps.

  • Environment variable for setting log level.

  • Improved documentation.

Changed:

  • Version number can be obtained from python bindings using tfsdk.SDK.get_version()

v0.7: August 14, 2020

New features and enhancements:

  • Added Trueface::SDK::detectGlasses() API for detecting eye glasses

  • Added Trueface::SDK::detectMask() API function for detecting face masks

  • Added glasses detection sample codes (C++ and python).

  • Added mask detection sample apps (C++ and python).

  • Spoof model improvements.

  • Reduce SDK size.

  • No longer need to register all the GPUs in a machine in order to use one GPU with the SDK.

Changed:

  • Changed TRUEFACE_LICENSE to TRUEFACE_TOKEN in python bindings sample apps.

  • Spoof score has been inverted, 1 indicates real, 0 indicates fake.

  • Trueface::SDK::detectMask() now takes 1 additional parameter, maskScore.

v0.6: July 7, 2020

New features and enhancements:

  • Face mask detection (currently on the CUDA engine only).

  • Setting Trueface::ConfigurationOptions.smallestFaceHeight to -1 adjusts the face detection scale range from image-height/32 to image-height.

  • Read license token from environment variable in python sample apps.

Method signature changes:

  • Renamed Trueface::SDK::createCollection() to Trueface::SDK::createLoadCollection().