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
Metadata
Release files for arcface 0.0.8
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| arcface-0.0.8.tar.gz | 13.7 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| arcface-0.0.8-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 28.8 kB
Release files / arcface-0.0.8.tar.gz
| Download URL | arcface-0.0.8.tar.gz |
|---|---|
| Size | 13.7 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
36f85b89139b4f3d8693cd83795c250a4f8e3a9962444e640b49da6cae83e668
|
|
BLAKE2b-256 checksum How to use checksums |
8b1fe7448fa613c8c4a8c3bc9e9271530e7f92aac98d8c9d51ec412a8590e991
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is 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
|
Release files / arcface-0.0.8-py3-none-any.whl
| Download URL | arcface-0.0.8-py3-none-any.whl |
|---|---|
| Size | 15.2 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
c13208f6446ab72b1a1ba74e8a23bee4cd7aecb203fe8618b462fc7b16e146c4
|
|
BLAKE2b-256 checksum How to use checksums |
e2d21f1d7b2fde0c90616c5caa836058d3e5e4cfc52d4b95a7dcf5d179eeb6df
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is 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
|