CERT Command line configuration file

Versions of the CERT command line starting with 4.0 include a new plugin system. This is a compile time system, but still provides some flexibility for configuring CERT.

The CERT configuration file is an xml format. There should be at least one sample configuration file available showing how it is used.

There will always be a single top level tag called "config" with an attribute called "version". The value of the version attribute is currently "1". Inside the config tag there can be two different sections, a single "global" section plus one or more "plugin" sections.

The global section contains configuration items that are not specific to one plugin. Currently we support the following:
An "fdalign" item which can contain one of the following alignment methods: eyes_only, procrustes or unconstrained_least_squares. If none is present, face alignment defaults to unconstrained_least_squares.
"minscale" and "maxscale" options, which determine the smallest and largest scales the face finder will search. Defaults are 0 (zero) for minscale and 20 for maxscale. Appropriate values for these settings would need to be chosen empirically based on image sizes normally used as well as how close the subject is to the camera.
A setting called "fdproc" can be set to "average" in which case the feature detector will use eye and mouth corner features to calculate average values and use those in place of the existing center-of-the-feature features for cropping and rotating face patches. Or a complete mapping can be provided that either maps one feature to another, or maps the average of a set of features to one of the four features used to actually rotate and crop faces. Examples of both uses should be in most of the included configuration files.

Each plugin tag contains several standard items:
“id”: This should be a string that is unique within this config file. All of the example id’s are reverse DNS style, with a plugin name at the end.
“name”: This is the plugin name used in all output.
“iname”: This is an internal name used to load some types of plugins. A list of the iname’s of plugins that were compiled into the application and are available for use can be found by passing the “-h” flag to CERT. In addition, SVM plugins use this name to find the correct SVM weights files.
“type”: This can be one of: MPT_PluginStep_AfterFaces, MPT_PluginStep_Features, MPT_PluginStep_NoStep, MPT_PluginStep_Output, MPT_PluginStep_PostProcess, MPT_PluginStep_SVM
“enabled” or “disabled”: If present, this plugin will be enabled or disabled. 
“display” or “nodisplay”: If present, this plugin will be displayed or not. Some plugins need to run, even if the user doesn’t need the results output. Features, for example are needed to crop and rotate faces, but the locations of each feature may not be needed in the output, so they could be set to “nodisplay”. 

In addition to the standard items, different plugin types, or individual plugins may have their own config items. Non standard config tags should have an attribute called “type” with possible values of either “string” or “array”. Tags of type array contain one or more tags of “item”.
Feature detector plugins use the “feature” and “gprior” tags to identify the locations of the two data files needed to run each feature.
SVM plugins have “dir” tags that point to the directory containing the SVM weight files. They also have an array tag called “labels” that has a list of the labels for each AU calculated by the plugin.
The GKR plugin has a number of extra tags:
If the “gkr” tag is present (e.g. <gkr />) then Gaussian Kernel Regression models will either be generated or used (based on which command line flag is used: -gt for training on AU neutral input, or -gc for using the model to baseline CERT’s AU output). An error will result and GKR processing will be disabled if neither command line flag is given.
If the “temporal” tag is present (e.g. <temporal />) then Conditional Kalman Filter temporal post processing will be done on CERT’s AU output (or the output of the GKR processing if that is also turned on).
If the “logistic” tag is present, then a logistic function will be run after the GKR processing (if enabled) and before the CKF processing (again, if present).
The “auid” tag is used to choose which plugin supplies the base AU output, it should contain the same ID string as is used to identify the desired AU plugin.
The “ckf_init” tag is an array that contains seven items for each AU that will be filtered. The first item is the label used to identify an AU (must be identical to one of the labels in the chosen SVM plugin). The next six are used to set the CKF and logistic parameters: alpha, beta, S_x, S_y, S_0, Y_0.
The two Interval plugins use the following tags:
The “interval” tag is used to set the number of frames over which the plugin will operate.
Both interval plugins also use “labels” tags to provide names for their output.
The “TT” interval detector also has three parameters that can be set (but should probably not be changed): m, t and e.
The pose detector has one optional custom tag for changing the output from the default degrees to radians.

While Feature detector and SVM plugins are always available and a new one can be added simply by adding a new plugin section to the config file, other types of plugins need to be compiled into CERT before they are available. These other types of plugins often have unique config items and should always include a sample config file (or plugin section of a file) that demonstrates how to use it.