Training mode
Two training modes are included currently, i.e., conventional training and semi-siamese training. Edit the configuration of each training mode by the following steps, and then you can train a face recognition model by the certain mode.
1. Training data
We use MS-Celeb-1M-v1c for conventional training. To perform open-set evaluation, we try our best to remove the identities which may overlap between this dataset and all of the test sets, resulting in a training set which includes 72,778 identities and about 3.28M images. The final identity list can be found in MS-Celeb-1M-v1c-r_id_list.txt. The format of training list should be the same as MS-Celeb-1M-v1c-r_train_list.txt. The shallow training set MS-Celeb-1M-v1c-Shallow is formed by randomly selecting two images of an identity in MS-Celeb-1M-v1c, and the selected image list can be downloaded in MS-Celeb-1M-v1c-r-shallow_train_list.txt. The training set for masked face recognition(MS-Celeb-1M-v1c-Mask) includes the original face images of each identity in MS-Celeb1M-v1c, as well as the corresponding masked face image by FMA-3D.
2. Train a face recognition model
Step1: Prepare the training data
Align the face images to 112*112 according to face_align.py.
Step2: Configure the backbone
Edit the configuration in backbone_conf.yaml. Detailed description about the configuration can be found in backbone_def.py.
Step3: Configure the head
Edit the configuration in head_conf.yaml. Detailed description about the configuration can be found in head_def.py.
Step4: Configure the training setting for each mode.
Edit the configuration in train.sh. Detailed description about the configuration can be found in train.py.
Step5: Start training
sh train.sh
Other Tips
- In order to train a model using only the upper half of face (model2 in 3.4), you need to set the last parameter of 'ImageDataset' to True and modify the 'out_h' of the backbone to 4.
- In order to train the masked face recognition model (model3 in 3.4), you just need to change the training set to MS-Celeb-1M-v1c-Mask, which includes 72,778 identities and about 3.28*2M images.
3. Trained models and logs
The models and training logs mentioned in our technical report are listed as follows. You can click the link to download them. For Megaface, we report the accuracy of the last checkpoint, and for other benchmarks, we report the accuracy of the best checkpoint.
3.1 Experiments of SOTA backbones
Backbone |
LFW |
CPLFW |
CALFW |
AgeDb |
MegaFace |
Params |
Macs |
Models&Logs |
MobileFaceNet |
99.57 |
83.33 |
93.82 |
95.97 |
90.39 |
1.19M |
227.57M |
Google,Baidu:bmpn |
Resnet50-ir |
99.78 |
88.20 |
95.47 |
97.77 |
96.67 |
43.57M |
6.31G |
Google,Baidu:8ecq |
Resnet152-irse |
99.85 |
89.72 |
95.56 |
98.13 |
97.48 |
71.14M |
12.33G |
Google,Baidu:2d0c |
HRNet |
99.80 |
88.89 |
95.48 |
97.82 |
97.32 |
70.63M |
4.35G |
Google,Baidu:t9eo |
EfficientNet-B0 |
99.55 |
84.72 |
94.37 |
96.63 |
91.38 |
33.44M |
77.83M |
Google,Baidu:sgja |
TF-NAS-A |
99.75 |
85.90 |
94.87 |
97.23 |
94.42 |
39.59M |
534.41M |
Google,Baidu:kq2v |
LightCNN-29 |
99.57 |
82.60 |
93.87 |
95.78 |
89.32 |
11.60M |
2.84G |
Google,Baidu:kq2v |
GhostNet |
99.65 |
83.52 |
93.93 |
95.70 |
89.42 |
26.76M |
194.49M |
Google,Baidu:6dg1 |
Attention-56 |
99.88 |
89.18 |
95.65 |
98.12 |
97.75 |
98.96M |
6.34G |
Google,Baidu:f93u |
Attention-92(MX) |
99.82 |
90.33 |
95.88 |
98.08 |
98.09 |
134.56M |
10.62G |
Google,Baidu:3ura |
ResNeSt50 |
99.80 |
89.98 |
95.55 |
97.98 |
97.08 |
76.79M |
5.55G |
Google,Baidu:3ura |
ReXNet_1.0 |
99.65 |
84.68 |
94.58 |
96.70 |
93.17 |
15.20M |
429.64M |
Google,Baidu:3ura |
RepVGG_A0 |
99.77 |
85.43 |
94.88 |
96.97 |
94.40 |
39.94M |
1.55G |
Google,Baidu:gdsf |
RepVGG_B0 |
99.72 |
86.77 |
95.17 |
97.57 |
95.75 |
46.65M |
3.44G |
Google,Baidu:ip68 |
RepVGG_B1 |
99.82 |
87.55 |
95.50 |
97.78 |
96.74 |
106.75M |
13.21G |
Google,Baidu:b60b |
Swin-T |
99.87 |
88.57 |
95.56 |
97.90 |
97.83 |
46.74M |
4.37G |
Google,Baidu:17ww |
Swin-S |
99.85 |
90.03 |
95.92 |
98.05 |
98.17 |
68.01M |
8.53G |
Google,Baidu:hhre |
- MegaFace means MegaFace rank1 accuracy.
- Params and Macs are computed by THOP.
- MX means mixed precision training by apex.
3.2 Experiments of SOTA heads
3.3 Shallow Face Learning
3.4 Masked Face Recognition
Model |
Rank1 |
Rank3 |
Rank5 |
Rank10 |
Models&Logs |
Note |
model1 |
27.03 |
34.90 |
38.45 |
43.22 |
Google,Baidu:vp7e |
Trained by MS-Celeb-1M-v1c |
model2 |
71.40 |
76.60 |
78.62 |
81.05 |
Google,Baidu:b7tk |
Trained by the upper half face in MS-Celeb-1M-v1c |
model3 |
78.45 |
83.20 |
84.89 |
86.92 |
Google,Baidu:pcio |
Trained by MS-Celeb-1M-v1c-Mask |
model4 |
79.20 |
83.67 |
85.28 |
87.24 |
Google,Baidu:d9ii |
Concat the features of model2 and model3 |
4. Extend the training module
4.1 Add new backbone
4.2 Add new head
4.3 Add new data sampler
4.4 Add new training mode
- Create a new folder named by the new training mode in this directory.
- Implement the training procedure in 'train.py'.
- Add the configuration in 'train.sh'.