Giter Site home page Giter Site logo

alkarnjn / fingernet Goto Github PK

View Code? Open in Web Editor NEW

This project forked from 592692070/fingernet

0.0 0.0 1.0 22.03 MB

FingerNet is an universal deep ConvNet for extracting fingerprint representations including orientation field, segmentation, enhenced fingerprint and minutiae.

Python 63.36% Jupyter Notebook 36.64%

fingernet's Introduction

FingerNet : An Universal Deep Convolutional Network for Extracting Fingerprint Representation

By Yao Tang, Fei Gao, JuFu Feng and YuHang Liu at Peking University

Introduction

FingerNet is an universal deep ConvNet for extracting fingerprint representations including orientation field, segmentation, enhenced fingerprint and minutiae. It can produce reliable results on both rolled/slap and latent fingerprints.

Here is a Python implementation of FingerNet. This code has been tested on Ubuntu 14.04 and Python2.7.

License

FingerNet is released under the MIT License (refer to the LICENSE file for details).

Citing FingerNet

If you find FingerNet useful in your research, please consider citing:

@inproceedings{tang2017FingerNet,
    Author = {Tang, Yao and Gao, Fei and Feng, Jufu and Liu, Yuhang},
    Title = {FingerNet: An Unified Deep Network for Fingerprint Minutiae Extraction},
    booktitle = {Biometrics (IJCB), 2017 IEEE International Joint Conference on},
    Year = {2017}
    organization={IEEE}
}

Main Results

training data test data precision recall conv-time/img post-time/img
CISL24218 FVC2004 76% 80% 674ms 285ms
CISL24218 NISTSD27 63% 63% 183ms 885ms

Note: 0. conv-time/img can be faster if using batch size greater than 1. 0. post-time/img contains orientation selection, segmentation dilation and minutiae nms. 0. CISL24218 is a in-house database which is unavailable to public. It contains around 8000 matched roll and latent fingerprints with manual minutiae and around 10000 latent fingerprints with only manual minutiae. Both FVC2002DB2A and NISTSD27 are non-intersect with CISL24218.

Contents

  1. Requirements: software
  2. Requirements: hardware
  3. Predicting Demo
  4. Preparation for Training & Testing
  5. Training
  6. Testing
  7. Acknowledgement

Requirements: software

  1. Python 2.7: cv2, numpy, scipy, matplotlib, pydot, graphviz
  2. Tensorflow 1.0.1
  3. Keras 2.0.2

Requirements: hardware

GPU: Titan, Titan Black, Titan X, K20, K40, K80.

  1. FingerNet predicting
    • 2GB GPU memory for FVC2002DB2A
    • 5GB GPU memory for NISTSD27

Predicting Demo

  1. Run cd in shell to directory src/
  2. Run python train_test_deploy.py 0 deploy to test demo images provided in datasets/.
    • You may use different GPU by changing 0 to desired GPU ID.
    • You will see the timing information as below. We get the following running time on single-core of K80 the demo images:
    Predicting images:
    images 1 / 1: B101L9U
    load+conv: 4.872s, seg-postpro+nms: 0.223, draw: 2.249
    Average: load+conv: 4.872s, oir-select+seg-post+nms: 0.223, draw: 2.249
    Predicting CISL24218:
    CISL24218 1 / 1: A0100003009991600022036_2
    load+conv: 2.219s, seg-postpro+nms: 0.439, draw: 2.247
    Average: load+conv: 2.219s, oir-select+seg-post+nms: 0.439, draw: 2.247
    Predicting FVC2002DB2A:
    FVC2002DB2A 1 / 1: 1_1
    load+conv: 1.718s, seg-postpro+nms: 0.548, draw: 3.309
    Average: load+conv: 1.718s, oir-select+seg-post+nms: 0.548, draw: 3.309
    Predicting NIST4:
    NIST4 1 / 1: F0001_01
    load+conv: 1.006s, seg-postpro+nms: 1.640, draw: 3.947
    Average: load+conv: 1.006s, oir-select+seg-post+nms: 1.640, draw: 3.947
    Predicting NIST14:
    NIST14 1 / 1: F0000001
    load+conv: 6.211s, seg-postpro+nms: 3.271, draw: 4.643
    Average: load+conv: 6.211s, oir-select+seg-post+nms: 3.271, draw: 4.643
    • The visual results might be different from those in the paper due to numerical variations.
  3. Change deploy_set=['*/',..., '*/'] in line 44-45 in train_test_deploy.py to desired dataset folders to test other fingerprint datasets.

Preparation for Training and Testing

  1. Move raw fingerprint training images to datasets/dataset-name/images/
    • Training images should be of bmp format
  2. Move segmentation labels to datasets/dataset-name/seg_labels/
    • Segmentation labels should be of png format and have the same size and name with its corresponding fingerprint images.
    • 255 indicates foreground while 0 for background.
  3. Move orientation labels to datasets/dataset-name/ori_labels/
    • Orientation labels are rolled/slap fingerprint aligned to training images and of same size, same name and bmp format.
  4. Move minutiae labels to datasets/dataset-name/mnt_labels/
    • Minutiae labels should be of same name and mnt format.
    • .mnt structure is as follow:
      • line 1: image-name
      • line 2: number-of-minutiae-N, image-W, image-H
      • next N lines: minutia-x, minutia-y, minutiae-o
  5. Change train_set=['*/', ...'*/'] in line 42 in train_test_deploy.py to train_set=['../datasets/dataset-name/',]

Training:

  1. Run python train_test_deploy.py 0 train to finetune your model.
    • Note: Maximum epoch is set to 100. Early stop if model have converged.

Testing

  1. Run python train_test_deploy.py 0 test to test your model.
    • Different from Predicting, Testing requires datasets to have at least mnt labels and segmentation labels.
    • Change test_set=['*/', ...'*/'] in line 44 in train_test_deploy.py to test other datasets.

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.