目录
一、简介
二、代码
1、RetinaFace的人脸检测和人脸对齐代码
2、ArcFace的人脸识别代码
3、完整测试和验证代码
三、测试
1、人脸实时采集take_pic_retina.py
2、人脸批量导入采集take_pic_pic.py
3、人脸库更新和测试 face_verify_retina.py
4、运行
四、公开数据集验证
主要介绍用RetinaFace(MobileNet0.25-RetinaFace和Resnet50-RetinaFace)和ArcFace(MobileFacenet-ArcFace和IR-SE50-ArcFace)的人脸识别测试和验证代码。
人脸检测和人脸对齐部分代码参考:https://github.com/biubug6/Pytorch_Retinaface,该代码中也包含人脸识别,测试过期效果,不如ArcFace,感兴趣的可以试下。
人脸识别代码参考:https://github.com/TreB1eN/InsightFace_Pytorch。
整合人脸检测和人脸对齐代码(https://github.com/biubug6/Pytorch_Retinaface)和人脸识别代码(https://github.com/TreB1eN/InsightFace_Pytorch)。
具体代码参看如下:基于RetinaFace+ArcFace的人脸识别测试和验证代码
主要用于人脸采集并加入到人脸库中。take_pic_retina.py在take_pic.py基础上修改,使用RetinaFace模型进行人脸检测和采集。采集时,按键盘“t”表示采集,按键盘“q”表示退出采集。
主要用于人脸批量采集,多个人脸图片存放规则:人脸/人名/图片。其中“人脸”为存放图片目录;“人名”是每个人脸的唯一标识符,具有唯一性;“图片”是只含有一个人脸的图片。
主要介绍调用入口文件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
python3 face_verify_retina.py
CASIA-FaceV5数据集的验证见:test_all_CASIA-FaceV5.py
LFW数据集的验证见:test_all_lfw.py
可参考博客:RetinaFace+ArcFace人脸识别测试