Given a fingerprint image, model identifies a match from a database of fingerprints.
-
Training Fingerprint Model
Siamese network is trained on a datastore of fingerprint images from different people. Each fingerprint is a set of 10 prints from each finger
Fingerprints used during training are stored for future matching. To reduce computational time, we store only the extracted (intermediate) features.
Model is trained, validated and stored.
Model training code is in
code/train.py
.To run model training
from train import ModelBuilder imagedir = '..{0}data{0}images'.format(os.sep) modelBuilder = ModelBuilder(imagedir) modelBilder.trainModel()
-
Fingerprint Match After model has been trained, fingerprint matching modelfile is saved in
model/siamese_model.h5
To run a fingerprint match against a set of templates (stored during training)
from match import FingerprintAuthentication matchthreshold = 0.8 fingerprint_to_match = '..{0}data{0}images{0}101_4.tif'.format(os.sep) fingerprintAuthentication = FingerprintAuthentication() matched_tiffile, matched_prob, matched_personid = fingerprintAuthentication.matchFingerprint(fingerprint_to_match) print('Matched TIF: {}, Probability: {}, PersonID: {}'.format(matched_tiffile, matched_prob, matched_personid )) if matched_prob >= matchthreshold: print('Got a fingerprint match with {} for person id {}'.format(matched_tiffile, matched_personid)) else: print('No match found')
Model is a siamese neural network with pre-trained ResNet50 as feature extractor
Tensorboard - Training and Validation cross entropy loss
After the training completes, the validation metrics is outputed to stdout
Result of fingerprint match