Git Product home page Git Product logo

luannd / minutiaenet Goto Github PK

View Code? Open in Web Editor NEW
131.0 12.0 45.0 4.68 MB

Code and models for paper "Robust Minutiae Extractor: Integrating Deep Networks and Fingerprint Domain Knowledge" at International Conference on Biometrics (ICB) 2018

Home Page: https://arxiv.org/pdf/1712.09401.pdf

License: MIT License

Jupyter Notebook 27.40% Python 72.60%
minutiae robust-minutiae-extractor minutiae-orientation fingerprint latent-fingerprint detection orientation minutiae-score-map biometrics afis

minutiaenet's Introduction

Robust Minutiae Extractor: Integrating Deep Networks and Fingerprint Domain Knowledge

By Dinh-Luan Nguyen, Kai Cao and Anil K.Jain

For precise fingerprint segmentation, let's refer to this paper: Automatic Latent Fingerprint Segmentation

Introduction

We present the framework called MinutiaeNet including CoarseNet and FineNet

MinutiaeNet

CoarseNet is a residual learning based convolutional neural network that takes a fingerprint image as initial input, and the corresponding enhanced image, segmentation map, and orientation field (computed by the early stages of CoarseNet) as secondary input to generate the minutiae score map. The minutiae orientation is also estimated by comparing with the fingerprint orientation.

CoarseNet

FineNet is a robust inception-resnet based minutiae classifier. It processes each candidate patch, a square region whose center is the candidate minutiae point, to refine the minutiae score map and approximate minutiae orientation by regression. Final minutiae are the classification results.

We refer reader to read FineNet_architecture.pdf for more details of FineNet.

The repository includes:

  • Source code of Minutiae Net which includes CoarseNet and FineNet.
  • Training code for FineNet and CoarseNet
  • Pre-trained weights for FineNet and CoarseNet
  • Jupyter notebooks to visualize the minutiae detection pipeline at every step

License

MinutiaeNet is released under the MIT License.

Citing

If you find MinutiaeNet useful in your research, please citing:

@inproceedings{Nguyen_MinutiaeNet,
author    = {Dinh-Luan Nguyen and Kai Cao and Anil K. Jain},
title     = {Robust Minutiae Extractor: Integrating Deep Networks and Fingerprint Domain Knowledge},
booktitle = {The 11th International Conference on Biometrics, 2018},
year      = {2018},
}

Contents

  1. Requirements: software
  2. Installation
  3. Demo
  4. Usage

Requirements: software

Python 2.7, Tensorflow 1.7.0, Keras 2.1.6.

Installation

To make life easier, I suggest to use Anaconda for easy installation. Version using pip is similar.

conda install cv2, numpy, scipy, matplotlib, pydot, graphviz

Download models and put into Models folder.

Demo

To help understanding MinutiaeNet, there are 2 notebooks for you to play around:

  • Understanding CoarseNet: demo_CoarseNet.ipynb
  • Understanding FineNet: demo_FineNet.ipynb
  • MinutiaeNet - a combination of CoarseNet and FineNet: set isHavingFineNet = False in CoarsetNet if you want to fuse results from CoarseNet and FineNet

Usage

  • FineNet
  • demo_FineNet.ipynb is useful if you want to integrate into existing minutiae dectection framework/SDKs. It shows an example of using a pre-trained model to verify the detection in your own images.
  • train_FineNet.ipynb shows how to train FineNet on your own dataset.
  • CoarseNet

Python files which can run directly from command line are also provided. Note that models as well as architectures here are slightly different from the paper because of the continuing development of this project

minutiaenet's People

Contributors

luannd avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

minutiaenet's Issues

CoarseNet training data

Hi there,
MinutiaeNet is very powerful for extracting Minutiae. CoarseNet processes raw fingerprint images and generates candiate patches containing minutiae. There are img_files,mnt_files and seg_files directories in CoarseNet_train directory. How to get mnt_files and seg_files?

demo_CoarseNet.ipynb missing

Thanks for the code, was waiting for this.
Please note that the demo folder does not have the demo_CoarseNet.ipynb file

Minutia Map

Did you publish the code for creating the minutia map ?

How to use NimutiaeNet in image representation?

Hi,

Thanks for this amazing model! Could you please tell how to use this in image representation? For example, I want to compute the similarity of two fingerprints, I'm assuming that MinutiaeNet can be used to extract features from the two images so that I can use function like score(img1, img2) to find the similarity. Thank you!

Error when training CoarseNet_train.py

when I training CoarseNet_train.py, (the image size is 512*512 ,batchsize=2 ),The following error occurred:tensorflow.python.framework.errors_impl.ResourceExhaustedError: OOM when allocating tensor with shape[2,64,512,512] and type float on /job:localhost/replica:0/task:0/device:GPU:0 by allocator GPU_0_bfc
GPU :NVIDIA GeForce GTX TITAN X

network structure is incorrect?

Hi, luannd. I found that the coarsenet structrue may be incorrect. details below:

level_2=conv_bn_prelu(conv_block3, (256,3,3), '4_1', dilation_rate=(1,1))
level_3=conv_bn_prelu(conv_block2, (256,3,3), '4_2', dilation_rate=(4,4))
level_4=conv_bn_prelu(conv_block2, (256,3,3), '4_3', dilation_rate=(8,8))

you use conv_block2 two times, but according to the paper, you should use conv_block1 for level_4,
and conv_block3 did not do pooling, as we can see, if conv_block2 is 2x than conv_block3, and conv_block1 2x than conv_block2, after "aspp" moudel, they can't be just add directly.

About input image of model

Hello
How are you?
Thanks for contributing to this project.
I am going to use this method for contactless finger image.
Can we apply directly the grayscale of raw finger image?

File signature not found (FineNet.h5)

For some reason, FineNet.h5 from Google Drive does not load. The error message mentions "File signature not found". I tried FineNet.h5 from Dropbox and it worked.

Note: There is no such problem with CoarseNet.h5 from Google Drive.

Format of input data for FineNet

First of all, thank you for an inspiring accomplishment!

When running demo_FineNet.ipynb through jupyter, I get the message "Found 0 images belonging to 2 classes". When checking out directory test_path = '../Dataset/test/', I see that the folder does not exist. Would you like to either post some of your training data, or explain how my data should be structured (sizes in x, y and color/grayscale, naming convention, subfolder structures ++) in order to run this script?

Models uploaded?

Will you be uploading the pretrained models for CoarseNet and FineNet.
Could not run the demos.

Error in CoarseNet_train.py

While running the CoarseNet_train.py, I am getting the error "'basestring' is not defined", I tried finding out the solution could not resolve it.

A snippet of the error is attached below:

Learning rate = 0.002
Pretrain dir = ../Models/CoarseNet.h5
Traceback (most recent call last):
File "CoarseNet_train.py", line 68, in
logging=logging)
File "D:\new_pc_work\MinutiaeNet-master\CoarseNet\CoarseNet_model.py", line 255, in train
img_name, folder_name, img_size = get_maximum_img_size_and_names(train_set, None, max_size=input_shape)
File "D:\new_pc_work\MinutiaeNet-master\CoarseNet\CoarseNet_utils.py", line 367, in get_maximum_img_size_and_names
if isinstance(dataset, basestring):
NameError: name 'basestring' is not defined

Doubts about training data

I have two question;

  1. In the example, the data: - img_files/.bmp, - mnt_files/.mnt , - seg_files/*.jpg. is needed when train the corasenet, the orientation field of the fingerprint is not necessary. but the net include a function about enhancement the raw fingerprint image(gaber filter). I don't understand how the gaber filter get the orientation? and there is no loss function for the orientation.
  2. The mnt_files/.mnt file include the orientation about the minutiae. i want to know the format about the 0~ 2pi ? or others.

Kernel restarting while testing demo_CoarseNet.ipynb

I was trying to test your code for demoCoarseNet.ipnb, it takes some time for the pre-trained model to load. Once we are at line #82,


        enh_img, enh_img_imag, enhance_img, ori_out_1, ori_out_2, seg_out, mnt_o_out, mnt_w_out, mnt_h_out, mnt_s_out \
            = main_net_model.predict(image)

This seems to crash. I suspect out of memory issues on card but I am confident the card does have enough memory. I copied the code to simple text file and ran it in Spyder3, it seems that the above line is causing the kernel to restart in jupyter notebook. Same happens in Spyder3

Spyder 3.2.8
Python 3.6.5
Tensorflow 1.6.0
Keras 2.1.5
Nvidia GTX 960M (4GB )

Did you run into such an issue?

NameError: name 'reduce' is not defined

MinutiaeNet-master/CoarseNet/CoarseNet_utils.py in merge_sum(x)
    193     return reduce(lambda x,y:x*y, x)
    194 def merge_sum(x):
--> 195     return reduce(lambda x,y:x+y, x)
    196 
    197 

NameError: name 'reduce' is not defined

Could not find the function mentioned above

worse precision and recall results

Hi,
I've been trying your models on different test sets for a while. Even though i used FVC 2002, 2004 test set, performance results are worse than indicated on the paper. I have fine-tuned the model but still can not reached specified results. Are the models (Coarsenet and Finenet) same as indicated on the paper? Network is using too much memory, while fine-tuning with batch size bigger than 2 i got resource exhausted error on 16 gb Tesla V100 GPU. How did you deal with it?

NIST SD-27 manually marked minutiae databse

Hi,
Where can i get NIST SD-27 manually marked minutiae databse. Also is there any rolled fingerprint database mapped to NIST SD-27 database available to train the model.

Minutiae matching

Hello
How are you?
Thanks for contributing to this project.
Could u share the script for matching minutiaes or for getting distance between two minutiaes?

Training Set

Hi there,
Would you mind describing briefly the training task you have performed, including the details of the dataset you fed into the network?
I plan to train my own model through your code, but I am struggling to find a minutaei-based annotation. So I was wondering if you can help me out with this?
Regards, Jafar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.