# Mobileface3D **Repository Path**: Egrt/mobileface3D ## Basic Information - **Project Name**: Mobileface3D - **Description**: 利用PRnet获取人脸3D结构辅助人脸识别 - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2022-10-24 - **Last Updated**: 2023-05-14 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ## Arcface:人脸识别模型在Pytorch当中的实现 --- ## 目录 1. [仓库更新 Top News](#仓库更新) 2. [所需环境 Environment](#所需环境) 3. [注意事项 Attention](#注意事项) 4. [文件下载 Download](#文件下载) 5. [预测步骤 How2predict](#预测步骤) 6. [训练步骤 How2train](#训练步骤) 7. [参考资料 Reference](#Reference) ## Top News **`2022-03`**:**创建仓库,支持不同模型训练,支持大量可调整参数,支持step、cos学习率下降法、支持adam、sgd优化器选择、支持学习率根据batch_size自适应调整、新增图片裁剪。** ## 所需环境 pytorch==1.2.0 ## 文件下载 训练用的CASIA-WebFaces数据集以及评估用的LFW数据集可以在百度网盘下载。 链接: https://pan.baidu.com/s/1qMxFR8H_ih0xmY-rKgRejw 提取码: bcrq ## 预测步骤 ### a、使用预训练权重 1. 下载完库后解压,可直接运行predict.py输入: ```python img\1_001.jpg img\1_002.jpg ``` 2. 也可以在百度网盘下载权值,放入model_data,修改arcface.py文件的model_path后,输入: ```python img\1_001.jpg img\1_002.jpg ``` ### b、使用自己训练的权重 1. 按照训练步骤训练。 2. 在arcface.py文件里面,在如下部分修改model_path和backbone使其对应训练好的文件;**model_path对应logs文件夹下面的权值文件,backbone对应主干特征提取网络**。 ```python _defaults = { #--------------------------------------------------------------------------# # 使用自己训练好的模型进行预测要修改model_path,指向logs文件夹下的权值文件 # 训练好后logs文件夹下存在多个权值文件,选择验证集损失较低的即可。 # 验证集损失较低不代表准确度较高,仅代表该权值在验证集上泛化性能较好。 #--------------------------------------------------------------------------# "model_path" : "model_data/arcface_mobilefacenet.pth", #--------------------------------------------------------------------------# # 输入图片的大小。 #--------------------------------------------------------------------------# "input_shape" : [112, 112, 3], #--------------------------------------------------------------------------# # 所使用到的主干特征提取网络,与训练的相同 #--------------------------------------------------------------------------# "backbone" : "arcface_mobilefacenet", #--------------------------------------# # 是否进行不失真的resize #--------------------------------------# "letterbox_image" : True, #--------------------------------------# # 是否使用Cuda # 没有GPU可以设置成False #--------------------------------------# "cuda" : True, } ``` 3. 运行predict.py,输入 ```python img\1_001.jpg img\1_002.jpg ``` ## 训练步骤 1. 本文使用如下格式进行训练。 其中npy文件为使用PRNet预测的人脸3维结构矩阵,存储类型为numpy shape为(3, 112, 112) ``` |-datasets |-people0 |-123.jpg |-123.npy |-234.jpg |-234.npy |-people1 |-345.jpg |-345.npy |-456.jpg |-456.npy |-... ``` 2. 下载好数据集,将训练用的CASIA-WebFaces数据集以及评估用的LFW数据集,解压后放在根目录。 3. 在训练前利用img_pair.py文件生成人脸jpg图片对应的保存了3维结构矩阵的npy文件。 4. 在训练前利用txt_annotation.py文件生成对应的cls_train.txt。 5. 利用train.py训练模型,训练前,根据自己的需要选择backbone,model_path和backbone一定要对应。 6. 运行train.py即可开始训练。 ## 评估步骤 1. 下载好评估数据集,将评估用的LFW数据集,解压后放在根目录 2. 在eval_LFW.py设置使用的主干特征提取网络和网络权值。 3. 运行eval_LFW.py来进行模型准确率评估。 ## Reference https://github.com/deepinsight/insightface https://github.com/timesler/facenet-pytorch