python(推荐3.7+版本)
mongodb
CUDA(推荐、非必须)
Pytorch(推荐GPU版本)
- clone本仓库到本地
- clone facenet-pytorch仓库到本仓库根目录下
- 下载人脸图片数据集和人脸特征数据库到本地仓库目录(特征数据库 提取码36q2 人脸数据集 提取码zbq8)
- 解压下载的两个压缩文件(保持文件夹原名)
- 下载安装mongodb,并把mongodb的bin目录置于环境变量中
- 安装CUDA(可选)
- 安装本项目所需要的第三方库,如使用anaconda,其自带库包含大部分所需
- 运行本地目录下start_mongodb.bat,启动特征数据库
- 运行项目的perf_test.py,程序会自动从人脸数据集中随机选择20张人脸并通过特征匹配得到这20张人脸的近似人脸
图中Original表示要比对的人脸,1、2、3分别表示第一、二、三接近的人脸。
实测数据库中一共136719张人脸特征向量,从硬盘中读取到内存并组建为特征矩阵所需的时间大概为11秒(测试环境R7-4800H 64G内存 RTX2060和海力士512G固态硬盘),在PyTorch模型加载完成且特征矩阵移至显存中后,比对一张人脸特征逐一计算欧氏距离的时间不超过3毫秒,人脸特征提取时间平均时间在80ms。
如果运行设备无NVIDIA GPU或未安装CUDA,需要在程序运行时把所有的cuda=True改为False
矩阵运算一部分使用cupy库进行,如果通过pip编译安装失败,可以直接安装对应CUDA版本的二进制文件
解压的特征数据库与人脸数据集的文件夹名称不要改动,并置于该项目文件夹下
若运行facenet代码部分出现问题,请移步https://github.com/timesler/facenet-pytorch