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.6.tar.gz (13.7 kB view details)

Uploaded Source

Built Distribution

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

Uploaded Python 3

File details

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

File metadata

  • Download URL: arcface-0.0.6.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.6.tar.gz
Algorithm Hash digest
SHA256 f3d702ad0d1c8f2cc767abf5e2c56d0c1a1c740530e5aa3249bda16a9d95dbda
MD5 45470492949de9598ff28399ad272055
BLAKE2b-256 2d71d9eb13629ca71899619e683f248ae642eeb2353f0c95ae15a79cf74c3b63

See more details on using hashes here.

File details

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

File metadata

  • Download URL: arcface-0.0.6-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.6-py3-none-any.whl
Algorithm Hash digest
SHA256 e2014935a2b61bab904fff6460caf90a913e011b0745d36444e3ddfc02d8231e
MD5 55d9b0b5c2198e3df2f7f1413108112c
BLAKE2b-256 93346da2ec202f9b2f6fcd12107d6a9dee05c9c11e09362ba9719fd48d818b8f

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