15.   Biometrics
15.1   Attrasoft Facial Recognition Classifications
15.2   How to Build An Image Recognition Solution With The ImageFinder
15.3   Fingerprint Data
15.4   Image Processing
15.5   BioFilter
15.6   Neural Filter
15.7   NeuralNet Filter
15.8   Improvement



15.   Biometrics

Biometrics refers to Facial, Fingerprint, Voice, Palm Print, Iris Recognition, �  In this chapter, we will study Face Recognition and Fingerprint Recognition. The example of Face Recognition is given in chapter 4. We will use Fingerprints as illustrations to show you how to build an image recognition solution using the ImageFinder.

15.1   Attrasoft Facial Recognition Classifications

When dealing with �Facial Recognition�, words mean different things to different people. We will first define what Facial Recognition is in terms of 5 categories.

Attrasoft divides Facial Recognition into 5 categories:

Class 1: Photo ID Recognition

Class 2: Highly Intrusive Live Image
In Class 2 Facial Recognition, the captured live image is taken by placing their chin on a chin plate while their picture is taken; their picture is then compared to the stored image taken in a similar manner. This method is considered intrusive and highly restrictive. Fingerprint, palm print, and iris recognition fall into this category.


Class 3: Low Intrusive Live Image

Class 4: Very Low Intrusive Live Image Class 5: No Restriction Attrasoft FaceFinder will only address Class 1 and Class 2 Face Recognitions.

Generally speaking, the more restrictive the images are when taken, the higher the identification rates will be. There are various ways to improve facial recognition rates. For example, verify a passenger with two live pictures is better than one picture.

The Face Recognition example has been addressed in the FaceFinder chapter.

15.2   How to Build An Image Recognition Solution With The ImageFinder

The procedure for building a solution with the ImageFinder is fairly predictable. At a minimum, you will need to go through the following steps:

Data
Data is further divided into a development set and a test set (blind set). The blind set is usually not available for the developers. A typical development set has 1000 images and a typical test set has 1000 images. Each image in a set compares with the whole set, so 1000 images will generate 1,000,000 comparisons.

Often a special type of images require a special image-processing filter, which the ImageFinder may or may not have it. If the ImageFinder does not have it, the pre-processed image can be presented to the ImageFinder. This will be the case in our fingerprint example.


BioFilter

The BioFilter provides an option called Unsupervised Learning, i.e. you can start to identify the images basically without doing anything. This should quickly give you an idea how hard the problem is. If the Unsupervised Learning basically identifies most of images correctly, then you have an easy problem; on the other hand, if the Unsupervised Learning does not work at all, you have a hard problem.

To use the Unsupervised Learning:

  • Click �Search Dir button� and select a directory containing the images;
  • Click �BioFilter/Scan Images � Directory Input� to convert images into templates.
  • Click �BioFilter/BioFilter N:N Match (Untrained)� to see the results.
  • The next step is to train the BioFilter. You have to prepare the match.txt file, which lists the matching pairs. If you have done the above steps, you can continue to do the following:
  • Click �BioFilter/BioFiloter Train (match.txt required)�;
  • Click �BioFilter/BioFilter N:N Match (Trained)� to see the results.
  • Neural Filter
    Neural Filter will significantly improve the BioFilter results. The advantage of this filter is that it is very fast; the speed is 100,000 comparisons per second or more.
    NeuralNet Filter
    NeuralNet Filter will significantly improve the Neural Filter results. The NeuralNet Filter is much slower than the Neural Filter.
    Improvement The rest of this chapter will be organized according to the above procedure, with a section addressing each step: 15.3   Fingerprint Data

    Fingerprint Recognition is equivalent to Class 2 Recognition discussed in the last section, i.e. they are intrusive.

    There are 56 images from 8 different persons. All fingerprint images are preprocessed with the edge filters already. Each image must be recognized 1 time and must be rejected 7 times when being compared with the other 7 different fingerprints. So there are 56 positive recognitions and 56*7 = 392 negative recognitions, giving a total of 448 tests.

    The fingerprint images used in this example are very, very noisy and this makes recognition very hard.
     


     

    Figure 15.1   First image of 4 persons.


     


     

    Figure 15.2   All images for person 5.

    AS discussed in the last section, these images are preprocessed.

    15.4   Image Processing

    The images are already processed. We will set:

    Threshold Filter: Dark Background 96;
    Reduction Filter Parameter:
  • Border Cut: 5
  • Segment Cut: 8
  • This completes image processing.

    15.5   BioFilter

    We now converting an image in the input space into a vector in the feature space:

    We now make a preliminary investigation of the data set via unsupervised learning: The result is:
    101_1B.GIF
    101_1B.GIF
    101_2B.GIF
    101_3B.GIF
    101_4B.GIF
    101_8B.GIF
    103_3B.GIF
    103_4B.GIF
    103_6B.GIF
    103_7B.GIF
    103_8B.GIF
    104_5B.GIF
    107_1.GIF
    107_3.GIF
    107_4.GIF
    107_5.GIF
    107_7.GIF

    101_2B.GIF
    101_1B.GIF
    101_2B.GIF
    101_3B.GIF
    101_4B.GIF
    101_8B.GIF
    102_1B.GIF
    103_3B.GIF
    103_4B.GIF
    103_6B.GIF
    103_7B.GIF
    103_8B.GIF
    104_1B.GIF
    104_2B.GIF
    104_5B.GIF
    104_6B.GIF
    104_8B.GIF
    107_1.GIF
    107_3.GIF
    107_4.GIF
    107_5.GIF
    107_7.GIF

    101_3B.GIF
    101_1B.GIF
    101_2B.GIF
    101_3B.GIF
    101_4B.GIF
    101_8B.GIF
    104_1B.GIF
    104_5B.GIF
    107_1.GIF
    107_4.GIF

    101_4B.GIF
    101_1B.GIF
    101_3B.GIF
    101_4B.GIF
    101_8B.GIF


     

    The first image in a block is the input and the rest in the block are output. Some images are classified, but there are also images that cannot be classified. We will move to the next step, train the BioFilter.

    Training requires a training file, match.txt. This file is already prepared; go to the ImageFinder home directory and open �finger_match.txt� to see the training file. To train the BioFilter:

    There is no improvement, so we will need to go to the Next Step, Neural Filter.
     

    15.6   Neural Filter

    The Neural Filter requires the same training file, match.txt, as the BioFilter. Since we have done this step for BioFilter, we are ready to match now:

    The result is:
     
    101_1B.GIF
    101_1B.GIF
    101_2B.GIF
    101_3B.GIF
    101_7B.GIF
    101_8B.GIF
    103_6B.GIF

    101_2B.GIF
    101_1B.GIF
    101_2B.GIF
    101_3B.GIF
    103_6B.GIF
    104_4B.GIF
    107_1.GIF
    107_2.GIF
    107_3.GIF
    107_4.GIF
    107_5.GIF

    101_3B.GIF
    101_1B.GIF
    101_2B.GIF
    101_3B.GIF
    101_4B.GIF
    101_7B.GIF
    101_8B.GIF

    101_4B.GIF
    101_3B.GIF
    101_4B.GIF
    101_5B.GIF
    101_7B.GIF
    101_8B.GIF


    The first image in a block is the input and the rest in the block are output. More images are classified compared to the BioFilter, but there are also images that cannot be classified. We will move to the next step, train the Neural Net.

    15.7   NeuralNet Filter

    We will continue the example from the last section. We will set the NeuralNet Parameters:

    Segment: 90 90 120 120
    Sensitivity: 75
    Blurring: 15
    Cutoff: 23900
    Segment Size: Small Segment
    Internal Weight Cut: 15
    The output of the last section is b1.txt. This will be the input of this section: A quick way to get this done is: The result is:
    Training: 101_1B.GIF
    101_1B.GIF    32000000
    101_2B.GIF    25484
    101_3B.GIF    30452
    ---------------
    Training: 101_2B.GIF
    101_1B.GIF    27140
    101_2B.GIF    32000000
    101_3B.GIF    26744
    ---------------
    Training: 101_3B.GIF
    101_1B.GIF    31064
    101_2B.GIF    29300
    101_3B.GIF    32000000
    101_4B.GIF    28652
    101_7B.GIF    28508
    101_8B.GIF    28760
    There are 56 images from 8 different persons. Each image must be recognized 1 time and must be rejected 7 times when being compared with the other 7 different fingerprints. So there are 56 positive recognitions and 56*7 = 392 negative recognitions, giving a total of 448 tests.

    Errors:

    102_1B: 1 false acceptance;
    103_7B: 3 false acceptances when 103 pretend to be 102, 104, and 106;
    105_2B: 1 false acceptance when 105 pretend to be 106;
    105_7B: 1 false acceptance when 105 pretend to be 102;
    107_3B: 1 false acceptance;
    107_7B: 1 false acceptance;
    109_2B: 2 false acceptances when 109 pretend to be 102 and 106;
    109_2B: 1 false acceptance;

    102_8B: 1 false rejection;
    107_2B: 1 false rejection;


    Together, there are 2 errors in positive recognition and 12 errors in negative recognition.

    Rates:

    Total Number of Tests = 448

    Positive Recognition = 96.4 % = 54/56.
    Negative Recognition = 96.9 % = 380/392 (percentage of time Software recognizes you as using the wrong ID).
    False Rejection = 3.7 % = 2/56.  (percentage of time software will reject the right person).
    False Acceptance = 3.06 % = 12/392. (percentage of time software will identify the wrong person as being the right person).


    This result is not very good, so we move to the next step, improvement.

    15.8   Improvement

    Working on the ImageFinder parameters can make improvements on the Identification Rates. The idea is each class has its own parameters rather than all classes share a set of common parameters. It will increase the recognition rates significantly if the parameters can vary for each class of images. In practice, a batch file is associated with each class of images rather than all classes.

    Unlike the BioFilter and Neural Filter, the selection of a parameter vector for the Neural Net from a set of matching images is not done automatically in this version.

    In the following example, we will choose 4 parameters, which can change from fingerprint to fingerprint. There are four parameters: Segment Cut, Border Cut from the Reduction Filter, Internal Cut, and External Cut (Threshold) from the NeuralNet Filter. After a few rounds of experiments, the parameters are:

    Images     Parameters
    101           (8,5,14,24500)
    102           (8,2,14,25000)
    103,4         (12,8,13,25000)
    105,6,9      (12,5,13,25000)
    107           (10,6,13,24500)

    Basically, each class has its own parameters. To run this example:

    There is 1 false rejection for the 448 tests. The results for 101 are:
    Training: 101_1B.GIF
    101_1B.GIF    32000000
    101_2B.GIF    25484
    101_3B.GIF    30452
    ------------------------------
    Training: 101_2B.GIF
    101_1B.GIF    27140
    101_2B.GIF    32000000
    101_3B.GIF    26744
    ------------------------------
    Training: 101_3B.GIF
    101_1B.GIF    31064
    101_2B.GIF    29300
    101_3B.GIF    32000000
    101_4B.GIF    28652
    101_7B.GIF    28508
    101_8B.GIF    28760
    ------------------------------
    Training: 101_4B.GIF
    101_3B.GIF    28544
    101_4B.GIF    32000000
    101_5B.GIF    27860
    101_8B.GIF    25016
    ------------------------------
    Training: 101_5B.GIF
    101_4B.GIF    26456
    101_5B.GIF    32000000
    101_6B.GIF    26492
    101_7B.GIF    27752
    ------------------------------
    Training: 101_6B.GIF
    101_5B.GIF    28076
    101_6B.GIF    32000000
    101_7B.GIF    26996
    ------------------------------
    Training: 101_7B.GIF
    101_1B.GIF    26996
    101_3B.GIF    27500
    101_4B.GIF    26492
    101_5B.GIF    27536
    101_6B.GIF    25880
    101_7B.GIF    32000000
    101_8B.GIF    27608
    ------------------------------
    Training: 101_8B.GIF
    101_1B.GIF    25484
    101_3B.GIF    31568
    101_4B.GIF    25700
    101_7B.GIF    28544
    101_8B.GIF    32000000
    ------------------------------
    Rates:
    Total Number of Tests = 448

    Positive Recognition = 98.2 %
    = 55/56.
    Negative Recognition = 100 %
    = 392/392  (percentage of time Software recognizes you as using the wrong ID).
    False Rejection = 1.8 %
    = 1/56 (percentage of time software will reject the right person).
    False Acceptance = 0 %
    = 0/392 (percentage of time software will identify the wrong person as being the right person).

    Return