I'm trying to follow through using the hyperbolic tangent for score normalization as here: Conference Paper An Evaluation of Score Level Fusion Approaches for Fingerpri...

It states there that the final values should be between 0 and 1, however my final output is in the range between 0.47 and 0.51 for a number of sets of scores.

Most of these sets are already between the range [0,1] - although some have quite a different range of separability between genuine and mismatch scores.

The process I am performing is to calculate the mean of all genuine match scores, and the standard deviation of the entire set (as described in the paper) - and then I parse it into a tanh normalization function. I notice some other papers use a different set of means/standard deviations, but all combinations I try end up with similar results.

Here is my normalization code (written in Rust). Constants is just a struct containing all stats for genuine/mismatch/all.

pub fn tanh_normalization(score: f32, constants: &ScoreConstants) -> f32 {

let internal = 0.01 * (score - constants.genuine.mean) / constants.all.standard_deviation;

return 0.5 * (internal.tanh() + 1.);

}

Does anyone have any ideas that could help me? Or any other papers related to this that might help?

Thanks in advance.

More Jonathan Boyle's questions See All
Similar questions and discussions