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 提供。为了更清楚,听听四种可能性:
- 单个图像的(绝对或相对)路径:
face_rec.calc_emb("test.jpg") - 图像数组:
face_rec.calc_emb(["test1.jpg", "test2.png"]) - 单个 cv2 图像:
face_rec.calc_emb(cv2.imread("test.png")) - 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
查看哈希)
内置分布
arcface-0.0.8-py3-none-any.whl
(15.2 kB
查看哈希)