目录

夜雨飘零

记录精彩的程序人生

X

基于PaddlePaddle实现的快速人脸识别模型

前言

本项目参考了ArcFace的损失函数,同时参考了PP-OCRv2模型结构,意在开发一个模型较小,但识别准确率较高且推理速度快的一种人脸识别项目,该项目训练数据使用emore数据集,一共有85742个人,共5822653张图片,使用lfw-align-128数据集作为测试数据。

源码地址:https://github.com/yeyupiaoling/PaddlePaddle-MobileFaceNets

数据集准备

本项目提供了标注文件,存放在dataset目录下,解压即可。另外需要下载下面这两个数据集,下载完解压到dataset目录下。

然后执行下面命令,将提取人脸图片到dataset/images,并把整个数据集打包为二进制文件,这样可以大幅度的提高训练时数据的读取速度。

python create_dataset.py

训练

执行train.py即可,更多训练参数请查看代码。

python train.py

评估

执行eval.py即可,更多训练参数请查看代码。

python eval.py

预测

本项目已经不教提供了模预测,模型文件可以直接用于预测。在执行预测之前,先要在face_db目录下存放人脸图片,每张图片只包含一个人脸,并以该人脸的名称命名,这建立一个人脸库。之后的识别都会跟这些图片对比,找出匹配成功的人脸。。这里使用的人脸检测是MTCNN模型,这个模型具有速度快,模型小的特点,源码地址:PaddlePaddle-MTCNN

如果是通过图片路径预测的,请执行下面命令。

python infer.py --image_path=temp/test.jpg

日志输出如下:

人脸检测时间:45ms
人脸识别时间:6ms
人脸对比结果: [('杨幂', 0.61594474), ('迪丽热巴', 0.37707973)]
人脸对比结果: [('迪丽热巴', 0.7290128), ('杨幂', 0.3993025)]
预测的人脸位置: [[156, 80, 214, 135, 1], [269, 67, 327, 121, 1]]
识别的人脸名称: ['杨幂', '迪丽热巴']
总识别时间:53ms

在这里插入图片描述

如果是通过相机预测的,请执行下面命令。

python infer_camera.py --camera_id=0

标题:基于PaddlePaddle实现的快速人脸识别模型
作者:yeyupiaoling
地址:https://yeyupiaoling.cn/articles/1642836725994.html