Skip to main content

Tensorflow Lite 中的 ArcFace 人脸识别实现。

项目描述

ArcFace 人脸识别

ArcFace人脸识别算法的实现。它包括一个基于ResNet50的预训练模型。

该代码基于peteryuX 的实现。该模型没有使用完整的 Tensorflow 进行推理,而是转换为 Tensorflow lite 模型,使用tf.lite.TFLiteConverter该模型将推理速度提高了约 2.27 倍。

安装

您可以通过 pip 安装该软件包:

pip install arcface

快速开始

以下示例说明了此包的易用性:

>>> 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

您可以为calc_emb函数提供单个图像或图像数组。此外,您可以将图像作为(绝对或相对)路径或 cv2-image 提供。为了更清楚,听听四种可能性:

  1. 单个图像的(绝对或相对)路径:face_rec.calc_emb("test.jpg")
  2. 图像数组:face_rec.calc_emb(["test1.jpg", "test2.png"])
  3. 单个 cv2 图像:face_rec.calc_emb(cv2.imread("test.png"))
  4. cv2 图像数组:face_rec.calc_emb([cv2.imread("test1.jpg"), cv2.imread("test2.png")])

人脸识别工具将 512 维嵌入的(数组)作为 numpy 数组返回。

注意!这个包既不执行人脸检测也不执行人脸对齐!它假定图像已经过预处理!

基准

模型 骨干 框架 LFW 精度 速度 [毫秒/嵌入] *
弧面纸 R100 MXNet 99.82 -
弧面TF2 R50 张量流 2 99.35 102
这个存储库 R50 张量流精简版 96.87 45

* 在 CPU 上执行:Intel i7-10510U

执照

根据 EUPL 1.2 版获得许可,或者——一旦获得欧盟委员会的批准——EUPL 的后续版本(“许可”)。除非遵守许可,否则您不得使用本作品。

许可证欧盟公共许可证 v1.2

项目详情


下载文件

下载适用于您平台的文件。如果您不确定要选择哪个,请了解有关安装包的更多信息。

源分布

arcface-0.0.8.tar.gz (13.7 kB 查看哈希

已上传 source

内置分布

arcface-0.0.8-py3-none-any.whl (15.2 kB 查看哈希

已上传 py3