软件下载地址:https://download.csdn.net/download/qq475225253/88026287
软件实现效果如图
要做该软件首先要用PyQT5做个图形界面
一、PyQt5设计界面
图形界面我们大致分成3个部分,左边用来存放我们将测试的图。中间是一些功能按钮,右侧是从库里面匹配出来的最好的人脸。
二、提前准备好人脸特征提取模型和断定人脸模型
1.判定是否是人脸的模型
要做人脸识别首先我们要训练好一个模型,判断测试的图片是不是人脸。如果不是,那么我们就没必要往下进行了,直接结束。
这个模型我们提前使用MTCNN算法训练好了。将模型的参数放在了model_data目录中。
2.人脸特征模型
我们基于LFW数据集(该数据集合中包括13000多张人脸,5000多个人,1600多人不止一张人脸)使用FaceNet算法构造出提取人脸特征的模型。模型的参数放在weights文件夹的model.01-0.2455.h5文件中。
三、识别过程
当我们单击“人脸识别”按钮后,我们将把左侧的图片拿过来,使用Face_Rec类的recognize方法进行人脸特征比对。具体比对过程如下:
第一步,拿过来的图片需要确定是否有人脸。这时使用mtcnn类的实例mtcnn_model的detectFace方法检测是否有人脸。
第二步,确定有人脸的基础上,对测试的图片进行预处理,比如裁剪出图片中的人脸部分,比如脸倾斜了要矫正对齐。
第三步,将矫正后的测试图片facenet_model实例(通过load_weights方法加载类人脸特征提取模型参数),提取出测试图片的特征。
第四步,用第三步的方法,提取要比对的人脸库中所有人脸的特征。database_image就是人脸库对应变量。在程序中我们把他指定在image这个文件夹。
第五步,使用calculate_distance方法,计算出库中所有人脸的特征与测试人脸的特征之间的距离。取出距离最小的那个,作为结果,返回展示到界面右边