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.
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
anddownload_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 aTrueface::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
, andINIT_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()
andTrueface::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 totrue
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 nowTrueface::GPUOptions::enableGPU
, andTrueface::GPUModuleOptions::deviceIndex
is nowTrueface::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 theTrueface::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, andTruface::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 aTrueface::TFFacechip
with the aligned face chip data. The user is no longer responsible for allocating this buffer.The
Trueface::SDK::getFaceFeatureVector()
andTrueface::SDK::getFaceFeatureVectors()
methods have been modified to takeTrueface::TFFacechip
as a parameter.The
Trueface::Image::rotate()
method has been modified to take aTrueface::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
andTrueface::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 toTrueface::SDK::preprocessImage()
.Added new face recognition model,
Trueface::FacialRecognitionModel::TFV6
.Added new struct for configuring GPU SDK,
Trueface::GPUOptions
andTrueface::GPUModuleOptions
.Added
Trueface::InitializeModule.passiveSpoof
.Added
<<
operator forTrueface::ErrorCode
.Added
Trueface::SDK::preprocessRgbImage()
method, more efficient thanTrueface::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 theTrueface::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, useTrueface::GPUModuleOptions.deviceIndex
instead.Trueface::ConfigurationOptions.enableGPU
is now deprecated, useTrueface::ConfigurationOptions.gpuOptions
instead.Trueface::ConfigurationOptions.batchSizes
is now deprecated forTrueface::FacialRecognitionModel::TFV6
and newer models, useTrueface::GPUModuleOptions.optBatchSize
andTrueface::GPUModuleOptions.maxBatchSize
instead.Trueface::SDK::getImageProperties()
.Trueface::ImageProperties
.Trueface::SDK::saveImage()
, useTrueface::Image::saveImage()
instead.Trueface::SDK::setImage()
, useTrueface::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 previousLITE
model.Added SDK support for Ubuntu 18.04 CUDA 11.2 target.
Changed:
Improved the benchmarking scripts,
benchmark.cpp
andbenchmark_1N_identification.cpp
.
v0.27: August 2, 2021¶
Breaking:
Trueface::SDK::getFaceLandmarks()
function signature has changed. Function now takesstd::array<Point<float>, 106>
instead ofstd::array<Point<int>, 106>
.
Added:
Added active spoof detection to SDK.
Added new API functions,
Trueface::SDK::checkSpoofImageFaceSize()
andTrueface::SDK::detectActiveSpoof()
.Added new API enums,
Trueface::ActiveSpoofStage
andTrueface::SpoofLabel
.Added new active spoof sample code,
active_spoof.cpp
.Added
Landmarks
alias forstd::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 toTrueface::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), andlibtf.dll
andlibpq.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
andwidth
.
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
andidentification_1_n.cpp
.Improved python bindings sample apps,
identification.py
has been split into two sample code files,enroll_in_database.py
andidentification_1_n.py
.The default threshold used for
Trueface::SDK::identifyTopCandidate()
,Trueface::SDK::identifyTopCandidates()
, andTrueface::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 whichTrueface::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 fromTrueface::FacialRecognitionModel::LITE
toTrueface::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 withnumCandidates
set to 1, it now returns an empty list if found returnsfalse
.
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 to0
by default.All
enum
intf_data_types.h
have been changed toenum 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()
, andTrueface::SDK::getFaceLandmarks()
as deprecated due to suboptimal performance.
v0.16: February 25, 2021¶
Added:
New face recognition model
Trueface::FacialRecognitionModel::TFV5
. We have deprecated theTrueface::FacialRecognitionModel::FULL
model (TFV4) but will continue to support it for clients with existing collections. More details on the FAQ pageAdded
download_face_recognition_tfv5_cpu.sh
anddownload_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 fromdownload_face_recognition_cpu.sh
anddownload_face_recognition_gpu.sh
todownload_face_recognition_tfv4_cpu.sh
anddownload_face_recognition_tfv4_gpu.sh
.Trueface::FacialRecognitionModel::FULL
face recognition model (TFV4) is not longer embedded in the SDK and must be downloaded by runningdownload_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
, andidentification_live_streaming.py
sample code to demonstrate usage of new collection metadata functions.
Added:
Trueface::SDK::createCollection()
,Trueface::SDK::loadCollection()
, andTrueface::SDK::deleteCollection()
API functions. CallingTrueface::SDK::createCollection()
then subsequentlyTrueface::SDK::loadCollection()
is equivalent to callingTrueface::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 byTrueface::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()
andTrueface::SDK::faceprintToJson()
whenTrueface::ConfigurationOptions.frVectorCompression
was set to true. The format of serialized Faceprint feature vectors (generated withTrueface::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 withTrueface::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, useTrueface::SDK::enrollFaceprint()
instead.Trueface::SDK::getLargestFaceFeatureVector(Trueface::Faceprint&)
has been deprecated, useTrueface::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
andTrueface::FacialRecognitionModel::FULL
model template generation nearly twice as fast). The RAM usage has also increased, theTrueface::FacialRecognitionModel::FULL
model now using 2Gb RAM (previously 1.1Gb), and theTrueface::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()
andTrueface::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 glassesAdded
Trueface::SDK::detectMask()
API function for detecting face masksAdded 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
toTRUEFACE_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()
toTrueface::SDK::createLoadCollection()
.