Skip to main content

ArcFace face recognition implementation in Tensorflow Lite.

Project description

ArcFace face recognition

Implementation of the ArcFace face recognition algorithm. It includes a pre-trained model based on ResNet50.

The code is based on peteryuX's implementation. Instead of using full Tensorflow for the inference, the model has been converted to a Tensorflow lite model using tf.lite.TFLiteConverter which increased the speed of the inference by a factor of ~2.27.

Installation

You can install the package through pip:

pip install arcface

Quick start

The following example illustrates the ease of use of this package:

>>> from arcface import ArcFace
>>> face_rec = ArcFace.ArcFace()
>>> emb1 = face_rec.calc_emb("~/Downloads/test.jpg")
>>> print(emb1)
array([-1.70827676e-02, -2.69084200e-02, -5.85994311e-02,  3.33652040e-03,
        9.58345132e-04,  1.21807214e-02, -6.81217164e-02, -1.33364811e-03,
       -2.12905575e-02,  1.67165045e-02,  3.52908894e-02, -5.26051633e-02,
	   ...
       -2.11241804e-02,  2.22553015e-02, -5.71946353e-02, -2.33468022e-02],
      dtype=float32)
>>> emb2 = face_rec.calc_emb("~/Downloads/test2.jpg")
>>> face_rec.get_distance_embeddings(emb1, emb2)
0.78542

You can feed the calc_emb function either a single image or an array of images. Furthermore, you can supply the image as (absolute or relative) path, or an cv2-image. To make it more clear, hear are the four possibilities:

  1. (Absolute or relative) path to a single image: face_rec.calc_emb("test.jpg")
  2. Array of images: face_rec.calc_emb(["test1.jpg", "test2.png"])
  3. Single cv2-image: face_rec.calc_emb(cv2.imread("test.png"))
  4. Array of cv2-images: face_rec.calc_emb([cv2.imread("test1.jpg"), cv2.imread("test2.png")])

The face recognition tool returns (an array of) 512-d embedding(s) as a numpy array.

Notice! This package does neither perform face detection nor face alignment! It assumes that the images are already pre-processsed!

Benchmark

Model Backbone Framework LFW Accuracy Speed [ms/embedding] *
ArcFace paper R100 MXNet 99.82 -
ArcFace TF2 R50 Tensorflow 2 99.35 102
This repository R50 Tensorflow Lite 96.87 45

* executed on a CPU: Intel i7-10510U

License

Licensed under the EUPL, Version 1.2 or – as soon they will be approved by the European Commission - subsequent versions of the EUPL (the "Licence"). You may not use this work except in compliance with the Licence.

License: European Union Public License v1.2

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

arcface-0.0.8.tar.gz (13.7 kB view details)

Uploaded Source

Built Distribution

arcface-0.0.8-py3-none-any.whl (15.2 kB view details)

Uploaded Python 3

File details

Details for the file arcface-0.0.8.tar.gz.

File metadata

  • Download URL: arcface-0.0.8.tar.gz
  • Upload date:
  • Size: 13.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.1 importlib_metadata/3.7.3 pkginfo/1.7.0 requests/2.25.0 requests-toolbelt/0.9.1 tqdm/4.51.0 CPython/3.8.6

File hashes

Hashes for arcface-0.0.8.tar.gz
Algorithm Hash digest
SHA256 36f85b89139b4f3d8693cd83795c250a4f8e3a9962444e640b49da6cae83e668
MD5 16d11f165da5339ebc078da64cfc2cdf
BLAKE2b-256 8b1fe7448fa613c8c4a8c3bc9e9271530e7f92aac98d8c9d51ec412a8590e991

See more details on using hashes here.

File details

Details for the file arcface-0.0.8-py3-none-any.whl.

File metadata

  • Download URL: arcface-0.0.8-py3-none-any.whl
  • Upload date:
  • Size: 15.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.1 importlib_metadata/3.7.3 pkginfo/1.7.0 requests/2.25.0 requests-toolbelt/0.9.1 tqdm/4.51.0 CPython/3.8.6

File hashes

Hashes for arcface-0.0.8-py3-none-any.whl
Algorithm Hash digest
SHA256 c13208f6446ab72b1a1ba74e8a23bee4cd7aecb203fe8618b462fc7b16e146c4
MD5 8a0bc6fcb574bef5e44888676b57042e
BLAKE2b-256 e2d21f1d7b2fde0c90616c5caa836058d3e5e4cfc52d4b95a7dcf5d179eeb6df

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page