Skip to main content

FingerFlow

Python PyPI

FingerFlow is an end-to-end deep learning Python framework for fingerprint minutiae manipulation built on top of Keras - TensorFlow high-level API.

In current stable version 3.0.1 following modules are provided:

  • extractor - module responsible for extraction and classification of minutiae points from fingerprints. It is also capable of detecting fingerprint core points.
  • matcher - module responsible for matching extracted minutiae feature vectors.

GPU support

FingerFlow supports GPU acceleration on CUDA®-enabled graphic cards.

Software requirements

  • Python 3.7 or newer
  • CUDA - for TensorFlow GPU acceleration (if missing, CPU will be used for computation)

Installation

Use the package manager pip to install FingerFlow. We reccomend to use it in pip or anaconda enviroment.

Installation in anaconda enviroment:

pip install fingerflow

Modules

Extractor

Module responsible for extraction and classification of fingerprint minutiae points and also for detecting fingerprint core point. Minutiae extraction part is built using MinutiaeNet neural network architecture. Core detection part is built using YOLOv4 object detection neural network architecture.

Extractor contains 3 modules:

  • MinutiaeNet - module responsible for extracting minutiae points from fingerprint image. Using MinutiaeNet neural network architecture.
  • ClassifyNet - module responsible for classifying extraced minutiae points. Architecture based on FineNet module of MinutiaeNet.
  • CoreNet - module responsible for detecting fingerprint core point. YOLOv4 neural network architecture is used.

Neural networks models

API

Extractor

Class which provides all functionality for extraction of minutiae points

fingerflow.extractor.Extractor()

Arguments

  • coarse_net_path - used for setting path to pretrained model of submodule CoarseNet
  • fine_net_path - used for setting path to pretrained model of submodule FineNet
  • classify_net_path - used for setting path to pretrained model of submodule ClassifyNet
  • core_net_path - used for setting path to pretrained model of submodule CoreNet

Methods

  • extract_minutiae(image_data) - used for extracting minutiae points and detecting of fingerprint core from input image data. Method accepts input data in form of 3D matrix (e.g. output of OpenCV imread function). Method returns object with extracted and detected data in following shape:
  • minutiae - Pandas DataFrame of extracted and classified minutiae points in following form:
    • x - x coordinate of minutiae point
    • y - y coordinate of minutiae point
    • angle - direction of minutiae point rotation
    • score - minutiae point extraction confidence
    • class - type of minutiae point. In FingerFlow 1.0.0 we support following minutiae classes:
      • ending
      • bifurcation
      • fragment
      • enclosure
      • crossbar
      • other
  • core - Pandas DataFrame of deteted fingerprint cores in following form:
    • x1 - left coordinate of bounding box
    • y1 - top coordinate of bounding box
    • x2 - right coordinate of bounding box
    • y2 - bottom coordinate of bounding box
    • score - core detection confidence
    • w - width of bounding box
    • h - height of bounding box

Usage

import cv2
import numpy as np
from fingerflow.extractor import Extractor

extractor = Extractor("coarse_net", "fine_net", "classify_net", "core_net")

image = cv2.imread("some_image")

extracted_minutiae = extractor.extract_minutiae(image)

Matcher

Module responsible for matching extracted feature vectors. It is using custom Siamese neural network architecture. Input size (number of minutiae in feature vector) for matching is not fixed and is determined by precision constructor argument. Used weights need to be in the correct shape - network needs to be trained with the same precision as passed in the argument. But in general, the more minutiae points the higher precision. Our custom model is trained on 10, 14, 20, 24, 30 minutie points per input.

Alt text

Matcher contains 1 module:

  • VerifyNet - module responsible for matching feature vectors. Custom Siamese neural network architecture is used.

Neural network models

API

Matcher

Class which provides all functionality for matching feature vectors

fingerflow.matcher.Matcher()

Arguments

  • precision - input size (number of minutiae in feature vector)
  • verify_net_path - used for setting path to pretrained model of submodule VerifyNet

Methods`

  • verify(anchor, sample) - used for matching feature vectors. Method accepts input data in form of NumPy N-dimensional array, which should be in following shape: (confidence, columns). Its columns should contain the same data as Extractor minutiae output with one additional column that represents minutia distance to fingerprint core. Method returns float matching confidence in range 0-1.
  • verify_batch(pairs) - performs pairwise verification in provided list of pairs. Returns list of float matching confidences.
  • plot_model(file_path) - plot model structure into image file. file_path should represent path to desired file.

Usage

from fingerflow.matcher import Matcher

matcher = Matcher(30, "verify_net")

prediction = matcher.verify(anchor_feature_vector, sample_feature_vector)

Contributing

Pull requests are welcome. For major changes, please open an issue first to discuss what you would like to change.

License

MIT

Metadata

Release files for fingerflow 3.0.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for fingerflow 3.0.1
File Size Uploaded Provenance Actions
fingerflow-3.0.1.tar.gz 46.1 kB Without provenance Details for fingerflow-3.0.1.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for fingerflow 3.0.1
File Interpreter ABI Platform Actions
fingerflow-3.0.1-py3-none-any.whl Python 3 none any Details for fingerflow-3.0.1-py3-none-any.whl

Total release size: 100.6 kB

Release files / fingerflow-3.0.1.tar.gz

Download URL fingerflow-3.0.1.tar.gz
Size 46.1 kB
Tags Source
SHA-256 checksum
How to use checksums
f73ad527224d3b9f4587254a3bc6154a5411de12488803fb47a11faea1d2e678
BLAKE2b-256 checksum
How to use checksums
a0c9594918a5cf620efd5c6dff19d7426e33fa402d43168a1ef90974e626788f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.0 CPython/3.9.12

Release files / fingerflow-3.0.1-py3-none-any.whl

Download URL fingerflow-3.0.1-py3-none-any.whl
Size 54.5 kB
Tags Python 3
SHA-256 checksum
How to use checksums
d256c1351b74b2e746386a3c32c61e92d569a8ba9f79cb9f9e084367000e3c35
BLAKE2b-256 checksum
How to use checksums
ac0545d2e06846977483c73a95e9efd52b3878adf83fb57b36fbdecc42a90f5f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.0 CPython/3.9.12

Security for fingerflow 3.0.1

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page