2019.07.14
Currently, I have graduated from campus and doing another kind of job. So this project may not be updated again.
The implementation of popular face recognition algorithms in pytorch framework, including arcface, cosface and sphereface and so on.
All codes are evaluated on Pytorch 0.4.0 with Python 3.6, Ubuntu 16.04.10, CUDA 9.1 and CUDNN 7.1. Partially evaluated on Pytorch 1.0.
For CNN training, I use CASIA-WebFace and Cleaned MS-Celeb-1M, aligned by MTCNN with the size of 112x112. For performance testing, I report the results on LFW, AgeDB-30, CFP-FP, MegaFace rank1 identification and verification.
For AgeDB-30 and CFP-FP, the aligned images and evaluation images pairs are restored from the mxnet binary file provided by insightface, tools are available in this repository. You should install a mxnet-cpu first for the image parsing, just do ' pip install mxnet ' is ok.
LFW @ BaiduNetdisk, AgeDB-30 @ BaiduNetdisk, CFP_FP @ BaiduNetdisk
MobileFaceNet: Struture described in MobileFaceNet
ResNet50: Original resnet structure
ResNet50-IR: CNN described in ArcFace paper
SEResNet50-IR: CNN described in ArcFace paperVerification results on LFW, AgeDB-30 and CFP_FP
Small Protocol: trained with CASIA-WebFace of data size: 453580/10575
Large Protocol: trained with DeepGlint MS-Celeb-1M of data size: 3923399/86876
Model Type | Loss | LFW | AgeDB-30 | CFP-FP | Model Size | protocol |
---|---|---|---|---|---|---|
MobileFaceNet | ArcFace | 99.23 | 93.26 | 94.34 | 4MB | small |
ResNet50-IR | ArcFace | 99.42 | 94.45 | 95.34 | 170MB | small |
SEResNet50-IR | ArcFace | 99.43 | 94.50 | 95.43 | 171MB | small |
MobileFaceNet | ArcFace | 99.58 | 96.57 | 92.90 | 4MB | large |
ResNet50-IR | ArcFace | 99.82 | 98.07 | 95.34 | 170MB | large |
SEResNet50-IR | ArcFace | 99.80 | 98.13 | 95.60 | 171MB | large |
ResNet100-IR | ArcFace | 99.83 | 98.28 | 96.41 | 256MB | large |
There exists an odd result fact that when training under small protocol, CFP-FP performances better than AgeDB-30, while when training with large scale dataset, CFP-FP performances worse than AgeDB-30.
Model Type | Loss | MF Acc. | MF Ver. | MF Acc.@R | MF Ver.@R | SIZE | protocol |
---|---|---|---|---|---|---|---|
MobileFaceNet | ArcFace | 69.10 | 84.23 | 81.15 | 85.86 | 4MB | small |
ResNet50-IR | ArcFace | 74.31 | 88.23 | 87.44 | 89.56 | 170MB | small |
SEResNet50-IR | ArcFace | 74.37 | 88.32 | 88.30 | 89.65 | 171MB | small |
MobileFaceNet | ArcFace | 74.95 | 88.77 | 89.47 | 91.03 | 4MB | large |
ResNet50-IR | ArcFace | 79.61 | 96.02 | 96.58 | 96.78 | 170MB | large |
SEResNet50-IR | ArcFace | 79.91 | 96.10 | 97.01 | 97.60 | 171MB | large |
ResNet100-IR | ArcFace | 80.40 | 96.94 | 97.60 | 98.05 | 256MB | large |
Visdom support for loss and accuracy during training process.
Softmax Loss vs Softmax_Center Loss. Left: softmax training set. Right: softmax + center loss training set.
MuggleWang/CosFace_pytorch
Xiaoccer/MobileFaceNet_Pytorch
TreB1eN/InsightFace_Pytorch
deepinsight/insightface
KaiyangZhou/pytorch-center-loss
tengshaofeng/ResidualAttentionNetwork-pytorch