/FaceX-Zoo

A PyTorch Toolbox for Face Recognition

Primary LanguagePythonOtherNOASSERTION

FaceX-Zoo

FaceX-Zoo is a PyTorch toolbox for face recognition. It provides a training module with various supervisory heads and backbones towards state-of-the-art face recognition, as well as a standardized evaluation module which enables to evaluate the models in most of the popular benchmarks just by editing a simple configuration. Also, a simple yet fully functional face SDK is provided for the validation and primary application of the trained models. Rather than including as many as possible of the prior techniques, we enable FaceX-Zoo to easilyupgrade and extend along with the development of face related domains. Please refer to the technical report for more detailed information about this project.

About the name:

  • "Face" - this repo is mainly for face recognition.
  • "X" - we also aim to provide something beyond face recognition, e.g. face parsing, face lightning.
  • "Zoo" - there include a lot of algorithms and models in this repo. image

What's New

  • [Oct. 2021] Swin Transformer is supported now! We obtain a quite promising result of 98.17 in MegaFace rank1 protocol with Swin-S. For more results, pretrained models and logs please refer to 3.1 Experiments of SOTA backbones. For training face recognition model with Swin Transformer, please refer to swin_training. Note that the input size is 224*224 but not 112*112 and we use AdamW+CosineLRScheduler to optimize it instead of SGD+MultiStepLR.
  • [Sep. 2021] We provide a Dockfile to buid the docker image of this project.
  • [Aug. 2021] RepVGG has been added to the backbones for face recognition, the performance of RepVGG_A0, B0, B1 can be found in 3.1 Experiments of SOTA backbones.
  • [Jul. 2021] A method for facial expression recognition named DMUE has been accepted by CVPR2021, and all codes have been released here.
  • [Jun. 2021] We evaluate some knowledge distillation methods on face recognition task, results and codes can be found in face_lightning module.
  • [May. 2021] Tools to convert a trained model to onnx format and the provided sdk format can be found in model_convertor.
  • [Apr. 2021] IJB-C 1:1 protocol has been added to the evaluation module.
  • [Mar. 2021] ResNeSt and ReXNet have been added to the backbones, MagFace has been added to the heads.
  • [Feb. 2021] Distributed training and mixed precision training by apex is supported. Please check distributed_training and train_amp.py
  • [Jan. 2021] We commit the initial version of FaceX-Zoo.

Requirements

  • python >= 3.7.1
  • pytorch >= 1.1.0
  • torchvision >= 0.3.0

Model Training

See README.md in training_mode, currently support conventional training and semi-siamese training.

Model Evaluation

See README.md in test_protocol, currently support LFW, CPLFW, CALFW, RFW, AgeDB30, IJB-C, MegaFace and MegaFace-mask.

Face SDK

See README.md in face_sdk, currently support face detection, face alignment and face recognition.

Face Mask Adding

See README.md in FMA-3D.

License

FaceX-Zoo is released under the Apache License, Version 2.0.

Acknowledgements

This repo is mainly inspired by InsightFace, InsightFace_Pytorch, face.evoLVe. We thank the authors a lot for their valuable efforts.

Citation

Please consider citing our paper in your publications if the project helps your research. BibTeX reference is as follows.

@inproceedings{wang2021facex,
  author = {Jun Wang, Yinglu Liu, Yibo Hu, Hailin Shi and Tao Mei},
  title = {FaceX-Zoo: A PyTorh Toolbox for Face Recognition},
  journal = {Proceedings of the 29th ACM international conference on Multimedia},
  year = {2021}
}

If you have any questions, please contact with Jun Wang (wangjun492@jd.com), Yinglu Liu (liuyinglu1@jd.com), Yibo Hu (huyibo6@jd.com) or Hailin Shi (shihailin@jd.com).