ArcFace face recognition implementation in Tensorflow Light.
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:
- (Absolute or relative) path to a single image:
face_rec.calc_emb("test.jpg")
- Array of images:
face_rec.calc_emb(["test1.jpg", "test2.png"])
- Single cv2-image:
face_rec.calc_emb(cv2.imread("test.png"))
- 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
Built Distribution
File details
Details for the file arcface-0.0.5.tar.gz
.
File metadata
- Download URL: arcface-0.0.5.tar.gz
- Upload date:
- Size: 8.8 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
Algorithm | Hash digest | |
---|---|---|
SHA256 | 895ec513cafb885f3b5442d60c35213805ba9950e1355091ad7f86dfed2e83f6 |
|
MD5 | 67a3c81ed900d5d50c99f301e7bf448b |
|
BLAKE2b-256 | c2cba0f6723d367183eb4f8fa06623b0a1c3b6d09079bd8233f6499b9f34624f |
File details
Details for the file arcface-0.0.5-py3-none-any.whl
.
File metadata
- Download URL: arcface-0.0.5-py3-none-any.whl
- Upload date:
- Size: 15.0 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
Algorithm | Hash digest | |
---|---|---|
SHA256 | 25bb8fa2082794b133ab3b1f526ef7d00cb68ae417eed05b1a3981692cdcce7c |
|
MD5 | 17d0256eee42ecf69899249a318bfe39 |
|
BLAKE2b-256 | 3b3669dd8e12a402873e4c2181c9908bf6d1c7313f64dd351db1783ec890573a |