基于RetinaFace+ArcFace的人脸识别测试和验证代码

目录

一、简介

二、代码

1、RetinaFace的人脸检测和人脸对齐代码

2、ArcFace的人脸识别代码

3、完整测试和验证代码

三、测试

1、人脸实时采集take_pic_retina.py

2、人脸批量导入采集take_pic_pic.py

3、人脸库更新和测试 face_verify_retina.py

4、运行

四、公开数据集验证


一、简介

主要介绍用RetinaFace(MobileNet0.25-RetinaFaceResnet50-RetinaFace)和ArcFace(MobileFacenet-ArcFace和IR-SE50-ArcFace)的人脸识别测试和验证代码。

二、代码

1、RetinaFace的人脸检测和人脸对齐代码

人脸检测和人脸对齐部分代码参考:https://github.com/biubug6/Pytorch_Retinaface,该代码中也包含人脸识别,测试过期效果,不如ArcFace,感兴趣的可以试下。

2、ArcFace的人脸识别代码

人脸识别代码参考:https://github.com/TreB1eN/InsightFace_Pytorch。

3、完整测试和验证代码

整合人脸检测和人脸对齐代码(https://github.com/biubug6/Pytorch_Retinaface)和人脸识别代码(https://github.com/TreB1eN/InsightFace_Pytorch)。

具体代码参看如下:基于RetinaFace+ArcFace的人脸识别测试和验证代码

三、测试

1、人脸实时采集take_pic_retina.py

主要用于人脸采集并加入到人脸库中。take_pic_retina.py在take_pic.py基础上修改,使用RetinaFace模型进行人脸检测和采集。采集时,按键盘“t”表示采集,按键盘“q”表示退出采集。

2、人脸批量导入采集take_pic_pic.py

主要用于人脸批量采集,多个人脸图片存放规则:人脸/人名/图片。其中“人脸”为存放图片目录;“人名”是每个人脸的唯一标识符,具有唯一性;“图片”是只含有一个人脸的图片。

3、人脸库更新和测试 face_verify_retina.py

主要介绍调用入口文件face_verify_retina.py。face_verify_retina.py在源代码文件face_verify.py的基础上修改的。源代码文件face_verify.py中使用的人脸检测模型是MTCNN,在这里将其换为RetinaFace模型。

其中main入口的说明如下,if __name__ == '__main__':

bank_name = 'MyBank' #自己的人脸库
det_model_path = './weights/Resnet50_Final.pth' # 人脸检测使用的模型,这里选择为Resnet50-RetinaFace
#det_model_path = './weights/mobilenet0.25_Final.pth' # MobileNet0.25-RetinaFace
face_thres = 1.0 # 人脸比对阈值
update = True #是否更新人脸库,在第一次建立人脸库或者后面加入或减少人脸时调用;其余设为False
test_res(args, bank_name, det_model_path, face_thres, rec_mobile=False, update=update)#其中,rec_mobile为True,表示使用识别模型MobileFacenet-ArcFace;rec_mobile为False,使用模型IR-SE50-ArcFace

4、运行

python3 face_verify_retina.py

四、公开数据集验证

CASIA-FaceV5数据集的验证见:test_all_CASIA-FaceV5.py

LFW数据集的验证见:test_all_lfw.py

可参考博客:RetinaFace+ArcFace人脸识别测试

 

你可能感兴趣的:(人脸识别,深度学习,人脸识别,RetinaFace,ArcFace)