Migration from older versions

Visage Technologies strives to minimize changes in API and configuration files when releasing new versions of the SDK. The inevitable changes are listed here together with specific instructions for developers who have existing applications built with older versions.

Changes in this release

This section covers all changes introduced in all releases since 9.0.

Landmark detection changes:

Additional lips landmarks For more details please see FDP documentation.

Changes in configuration file:

For detailed description of these changes consult VisageTracker Configuration Manual, section 2.1. for additional information.

API changes:

VisageConfiguration API

Introducing new functions for getting and setting enable_smoothing parameter:

Data files changes:

Following data files in www/lib folder updated:

Please make sure to have the current files in your folder.

Sample changes:

Samples displaying feature points are updated to draw additional lip points.



Changes in older releases


visage|SDK 9.0

General:

Reduced size of visage|SDK libraries.

Multi-frame analysis feature

VisageFaceAnalyser now offers multi-frame analysis functionality which performs estimations on the selected high-quality frames and returns an averaged, smoothed value. This functionality is available via the VisageFaceAnalyser::analyseStream() function.

New tracking algorithm models

Introducing smaller and faster tracking algorithm models while retaining the same accuracy which completely replace the old models that will no longer be distributed.

New age and gender estimation models

Introducing smaller, faster and more accurate age and gender estimation models which completely replace the old models that will no longer be distributed.

API changes:

Introducing new FaceData member for getting the face bounding box:

VisageFaceAnalyser API

VisageFaceAnalyser API was refactored to optimise usage and to include newly introduced multi-frame analysis feature.

Old face analysis functions were removed: and replaced with new ones: Three separate calls to old analysis estimation functions can now be performed by a single call to analyseImage() or analyseStream() where parameter options specifies which analysis operations to perform.

For more details please see VisageFaceAnalyser API documentation.

Introducing new AnalysisData structure which contains face analysis results (age, gender and emotions) returned by the VisageFaceAnalyser.analyseImage and VisageFaceAnalyser.analyseStream functions.

VisageDetector API

Prototype of VisageDetector constructor has been changed: For more details please see VisageDetector API documentation.

VisageGazeTracker API

Prototype of following method has been changed: For more details please see VisageTracker API documentation.

Data files changes:

Location of 3D models changed from root of the Virtual File System to vft/fm (e.g. jk_300.wfm to vft/fm/jk_300.wfm).

Following data files in www/lib folder updated:

Please make sure to have the current files in your folder.

Sample changes:

Due to native FaceData API and VisageFaceAnalyser API changes, VisageTrackerUnityPlugin API and VisageAnalyserUnityPlugin API were updated accordingly.

ShowcaseDemo and VisageTrackerUnityDemo:

Newly introduced face analysis functions, analyseStream() and resetStreamAnalysis(), are used to perform face analysis, thus replacing previously used estimation functions and in-app filtering.

visage|SDK 8.8

General:

Face tracking and detection algorithms

The default legacy algorithm that could be allowed via the use_vnn configuration parameter (value 0) has been removed. The VNN algorithm is now the default and only tracking and detection algorithm.

The algorithm can be configured to improve feature points precision and robustness, over tracking speed (performance) by setting the refine_landmarks parameter to 1 in the configuration file. Otherwise, when performance is preferred over feature points precision, the recommendation is to disable refine_landmarks parameter by setting it to 0 in the configuration file.

Face tracking and detection with protection masks

Face tracking and detection algorithms are enhanced so that they can track and detect faces wearing protective masks of various colors and patterns.

Landmark detection changes:

Contour landmarks Changing the detection of contour points from visible to physical results in improved stability and accuracy of the 3D head-pose estimation.

Library changes:

VisageTrackerUnityPlugin and VisageAnalyserUnityPlugin

Renaming unityInstance to unityGame:

API changes:

Introducing new FaceData class member for getting the rotation of the face from the camera viewpoint:

VisageTrackerUnityPlugin API

Introducing new function for getting the rotation of the face from the camera viewpoint:

Changes in configuration file:

Removed

Added

Renamed

Modified

Please refer to the VisageTracker Configuration Manual, section 2.1. for additional information.

If you want to update your existing configuration files, it is recommended to copy the parameters values from Facial Features Tracker.cfg configuration file supplied in this package.

Data files changes:

Removed

Modified

Added

Projects using older versions of these files should be updated to load the newest data files along with libraries (visageSDK.js, visageSDK.wasm) from the www/lib folder.


Sample changes:

Samples displaying feature points are updated to draw physical contour points.

ShowcaseDemo and VisageTrackerUnityDemo:

Newly introduced FaceData class member, faceRotationApparent, is used to check if face rotation is within constraints to successfully run face recognition and face analysis.


visage|SDK 8.7

General:

Configurable neural network runner

To improve the performance of our algorithms and to support a wider variety of neural network models we are introducing an API and a configurable framework for choosing between different neural network running backends.

As a result, additional configuration file NeuralNet.cfg is now included in visage|SDK (located in www/lib). This file allows the users to configure which backend will be used by visage|SDK. Users can choose between:

For more information on the parameters of NeuralNet.cfg file see the API page.

New face recognition model

Introducing smaller, faster and more accurate face recognition model.

New face detection model

Introducing a more accurate and robust face detection model. The new model is used in face tracking and face detection when use_vnn configuration parameter is set to 1. Otherwise, the previous face detection model will be used.
For more information about using VNN detection algorithm, please consult VisageTracker Configuration Manual and VisageDetector documentation.


Library changes:

ASM library format

Depricated ASM library format is no longer supported.

visageAR

visageAR.js library now supports changing screen orientation on mobile devices.


API changes:

visage|SDK initialization order

The order in which the VisageModule is declared and library and data scripts are included is predefined and should be as follows:

  1. Declare VisageModule

    VisageModule has to be declared with all its attributes in charge of preloading of the configuration files, license files and possibly, changing the location of data files, before loading visageSDK.js library.

  2. Include visageSDK.js library

    visageSDK.js library has to be included via script tag before any other external data loader script.

  3. Include external data loader scripts


VisageTrackerUnityPlugin API

Introducing changes VisageTrackerUnityPlugin API. The list of added and removed function is as follows:
Added:

Removed: For more details please refer to VisageTrackerUnityPlugin.


Sample changes:

visage|SDK initialization order

Offical samples has been updated according to changes in the visage|SDK initialization order.

VisageTrackerUnityDemo

The sample now requires the path to the visageSDK.js library and external data loader scripts to be specified in Tracker gameObject.

Changes in configuration file:

For detailed description of these changes consult VisageTracker Configuration Manual.

If you want to update your existing tracker configuration files, it is recommended to copy the parameters values from Facial Features Tracker - High.cfg configuration file supplied in this package.


Data files changes:

Data files has been saparated to optimize data size.
VisageTracker and VisageDetector in addition to visageSDK.data now require an additional data file depending on the selected algorithm (configuration used).

Projects using older versions of these files should be updated to load the newest data files from the www/lib folder.



visage|SDK 8.6

General

Configurable detection algorithm

New experimental algorithm for face and facial features detection introduced (VNN algorithm). While it significantly improves detection quality, it also reduces detection speed (performance).
Detector is currently configurable so VNN algorithm can be enabled or disabled via parameter use_vnn in configuration file.
The experimental detection algorithm requires additional data bundled in visageVNNData.data file located in www/lib folder.

For more information about using VNN detection algorithm, please consult VisageDetector documentation.

Configurable tracking algorithm

New experimental algorithm for face tracking introduced (VNN algorithm). While it significantly improves tracking quality and robustness, it also reduces tracking speed (performance).
Tracker is currently configurable so VNN algorithm can be enabled or disabled via parameter use_vnn in configuration file.

The experimental tracking algorithm requires additional data bundled in visageVNNData.data file located in www/lib folder.

For more information about using VNN tracking algorithm, please consult VisageTracker Configuration Manual and VisageTracker documentation.

API changes:

VisageConfiguration API

Introducing new API for programatically changing VisageTracker configuration parameters, including class:

used in conjunction with new VisageTracker methods: For more details and usage code examples please refer to VisageConfiguration.

FDP class:

VisageTracker class:


Model changes:

A new model file has been added for ear tracking functionality - jk_300_wEars. The new model is based on the previous 'jk_300' model and contains an additional 334 polygons and 14 new FDP points in group 10 (10.11 - 10.24).

For detailed description of these changes consult VisageTracker Configuration Manual.

Changes in configuration file:

For detailed description of these changes consult VisageTracker Configuration Manual.

If you want to update your existing configuration files, it is recommended to copy the parameters values from Facial Features Tracker - High.cfg configuration file supplied in this package.

Data files changes:

Projects using older versions of these files should be updated to contain the newest data files from the www/lib folder.

Sample changes:

VisageTrackerUnityDemo:

VisageTrackerUnityDemo is now distributed only as Unity project. Instructions on how to build and run the provided application can be found here. Additionally, instructions for visage|SDK Unity integration can be found here.

visage|SDK 8.5

Changes in configuration file:

Please refer to the VisageTracker Configuration Manual, section 2.1. for additional information.

If you want to update your existing configuration files, it is recommended to copy the parameters values from Facial Features Tracker - High.cfg configuration file supplied in this package.

API changes:

Copyless data

All function that have returned copies of their values in form of Array, VectorInt or VectorFloat are now returning TypedArray. This change refers to track() function, getFPPos() function and most of FaceData members.

FaceData

visage|SDK 8.4

API changes:

Webassembly format

Default visage|SDK library is in WebAssembly format, thus it comes in two file format: visageSDK.js and visageSDK.wasm. Main file is visageSDK.js and can be located independently of the main .html file, while the visageSDK.wasm file depends on visageSDK.js file and is expected to be located at the same folder as the main .html file.
The location of visageSDK.wasm file can be changed, which entails changing the location of the .data files (visageSDK.data, visageAnalysisData.data, visageRecognitionData.data) to the same folder. An example can be found at the link: Changing the location of the .data file.
To use WebAssembly, MIME type for .wasm file has to be added in .htaccess file on web server as follows (see MIME type):
Asynchronous data load

visage|SDK library has been modified to be completely asynchronous. As a result certain .data files need to be preloaded by calling FS_createPreloadedFile() function. The change refers to license and configuration files. Note, that the FS_createPreloadedFile() function must be called after visageSDK.js script is loaded, but before the .data is completely downloaded (see Changing the location of the .data file example).



Change the name of the Module

Main visage|SDK module renamed from Module to VisageModule in visageAnalysisData.js and visageRecognitionData.js scripts to improve compatilibity with other libararies and software (for example Unity).
In case of using FaceAnalysis or FaceRecognition it is necessary to call Module VisageModule and as such use it in the code.
visageAR

The order of applying rotations on the glasses 3D objects has been fixed to be equal to the tracker's (see getFaceRotation) which is 'YXZ'.

Sample changes:

FaceDetector and FaceTracker samples have been removed from visage|SDK HTML5 package.

VisageTrackerUnityPlugin

VisageTrackerUnityPlugin was updated so it includes all FaceTrack (including multiple face tracking) and FaceAnalysis functions.
The plugin is devided into two files: VisageTrackerUnityPlugin.jslib and VisageAnalyserUnityPlugin.jslib, both file can be found in www/lib folder.
Due to major changes, it is recommended to go through documentation before including VisageTrackerUnityPlugin to your existing project.

ShowcaseDemo

Improved sample performance by moving FaceAnalysis functionality to a Web Worker (see analysisWorker.js file).


visage|SDK 8.3.5959

General changes:

Module object renamed to VisageModule. Automatic initialization and data download has been deprecated. In order to properly initialize VisageModule object and start visageSDK data download, VisageModule object needs to be initialized manually.

Following code demonstrates:
<script src="../../lib/visageSDK.js">

<script>
var Module = VisageModule({onRuntimeInitialized: onModuleInitialized})
</script>

See additional examples within sample application code and in the API documentation (API->VisageTracker->Changing the location of the .data file section).

Landmark detection changes:

For detailed illustration see MPEG-4 FBA.

Changes in configuration file:

Configuration file format had stayed the same.

jk_300 model has been set as a default model for pose and action unit estimation instead of candide3 model.

If you want to update your existing configuration files, it is recommended to copy the parameters values from Facial Features Tracker - High.cfg configuration file supplied in this package.

Data files changes:

visageSDK.data file, located in the folder where the application html file is located (e.g. www/Samples/FaceTracker folder), has been updated.


visage|SDK 8.2.5684

API changes:

VisageTracker:
Due to the introduction of multitracking prototype of following methods has been changed:
VisageGazeTracker:
Prototype of the VisageGazeTracker' track function has changed and is the same as the VisageTracker' track function.

Note that VisageGazeTracker works on one face only. Parameter maxFaces is not used.
VisageFaceRecognition:

Changes in configuration file format:


For detailed description of these changes consult VisageTracker Configuration Manual.

If you want to update your existing configuration files, it is recommended to copy the values for these new parameters from the Facial Features Tracker - High.cfg configuration file supplied in this package. In all other cases, simply use the provided configuration files.

Data files changes:

visageSDK.data file, located in the folder where the application html file is located (e.g. www/Samples/FaceTracker folder), has been updated.


visage|SDK 8.1.4407

API changes:

Prototype of following methods has been changed:

Changes in configuration file format:

Data files changes:

visageSDK.data file, located in the folder where the application html file is located (e.g. www/Samples/FaceTracker folder), has been updated.
New model has been added - jk_300, in two additional files: jk_300.wfm and jk_300.fdp. For detailed information on how the new model is used inside the visage|SDK consult VisageTracker Configuration Manual section 2.3.


visage|SDK 8.0.3444

API changes:

IMPORTANT: Check the API documentation for major classes FaceData, FDP, FeaturePoint, ScreenSpaceGazeData usage as well as helper classes such as VectorFloat, VectorInt, VectorString and FaceDataVector. Examples of usage can be found in visage|SDK samples.

Changes in configuration files:

If you want to update your existing configuration files, it is recommended to copy the values for these new parameters from the Facial Features Tracker - High.cfg configuration file supplied in this package. In all other cases, simply use the provided configuration files.

Data files changes:

visageSDK.data file, located in the folder where the application html file is located (e.g. www/Samples/FaceTracker folder), has been updated.

Sample changes:

Due to compiler update to emscripten v1.35, HTML5 samples using visage|SDK must have additional code added to your application main .html file. The additional code must be located inside of the script tag and included before the script tag loading visageSDK.js library. Example:

<script type="text/javascript">
var Module = 
{
	onRuntimeInitialized: function()
	{
		onModuleInitialized();
	}
};
</script>
<script src="../../lib/visageSDK.js"></script>
Emscripten functions that use Module object such as
Module._malloc
and visage|SDK.js function such as
m_Tracker.track()
must not be called before the OnModuleInitialized() function is called.

sampleTracker.html line 903

Licensing changes:

Unlicensed VisageDetector will return complete results but has a delay of 2 seconds for each call of detectFacialFeatures method.

Unlicensed VisageFaceAnalyser has a delay of 2 seconds for each call of estimate function.


visage|SDK 7.4.2500

Changes in configuration files:

FFT, HT and Facial Features Tracker - Asymmetric.cfg configuration files have been removed. Two new configurations have been added to the Samples/data folder:

Changes in configuration file format:

If you want to update your existing configuration files, it is recommended to copy the values for these new parameters from the Facial Features Tracker - High.cfg configuration file supplied in this package. In all other cases, simply use the provided configuration files.

visage|SDK 7.3.1860

API changes:

An additional parameter has been added to the FaceDetector detectFeatures method. The minFaceSize parameter is used to specify a lower limit to face size (in pixels) in a given image:

this.detectFeatures = function(frameWidth, frameHeight, p_imageData, faceData);
changed to:
this.detectFeatures = function(frameWidth, frameHeight, p_imageData, faceData, minFaceSize);

Changes in configuration file format:

If you want to update your existing configuration files, it is recommended to copy the values for these new parameters from the FFT - HighPerformance.cfg configuration file supplied in this package. In all other cases, simply use the provided configuration files.

Data files changes:

Data file is located in the folder where the application html file is located (e.g. www/Samples/FaceTracker folder). Copy the file to appropriate folder in any existing applications.

Changes in 7.2.1286

This section covers all changes introduced in all releases since 7.1.744.

API changes:

Screen space gaze tracking API introduced.

1. Screen space gaze tracking API methods added to the Tracker class:

this.initOnlineGazeCalibration = function();
this.addGazeCalibrationPoint = function(x, y);
this.finalizeOnlineGazeCalibration = function();

2. Added two members related to screen space gaze tracking to FaceData container class:

this.screenSpaceGazePos = [];
this.screenSpaceGazeState;

Changes in configuration file format:

If you want to update your existing configuration files, it is recommended to copy the values for these new parameters from the FFT - HighPerformance.cfg configuration file supplied in this package. In all other cases, simply use the provided configuration files.

Sample changes:

New sample added: Gaze Tracker, demonstrates online screen space gaze tracking.

Other:

Tracking bug on high in plane rotations (z axis) fixed.

Changes in 7.1.744

This section covers all changes introduced in all releases since 7.1b4.678.

API changes:

this.drawResults = function(p_imageData) method added to the Detector class.

Changes in configuration file format:

Parameter bdts_trees_factor has been introduced. Increase the value to achieve faster detection but note that the quality of detection will lower.

Sample changes:

For unlicensed use:

Start and Stop button removed. Tracking will start automatically when tracker is ready and all files have been downloaded.

Other:

Firefox freezes when no license is provided bug fixed.

Changes in 7.1b4.678

This section covers all changes introduced in all releases since 7.1b1.579.

API changes:

1. FaceData container class for tracking and detection results is introduced. TrackingData class is deprecated.


2. Tracker.track() method is changed to accept FaceData parameter instead of TrackingData parameter. Interface is changed from:

 this.track = function(frameWidth,frameHeight,imageData,trackingData) 

to:

 this.track = function(frameWidth,frameHeight,imageData,faceData) 

3. Added 3 methods to the Tracker class:

 this.getIPD = function() 
 this.setIPD = function(IPD) 
 this.detectStrip = function(IPDPointer) 

4. Added Detector class with following methods:

 this.detectFeatures = function(frameWidth,frameHeight,imageData,faceData) 
 this.setConfigurationFile = function(configFilename) 
 this.initializeLicenseManager = function(licenseKey) 

Changes in configuration file format:

If you want to update your existing configuration files, it is recommended to copy the values for these new parameters from the Facial_Features_Tracker_-_Asymmetric.cfg configuration file supplied in this package. In all other cases, simply use the provided configuration files.

Data files changes: