Skip to content

This tensorflow project is based on MobileFaceNet, which use SqueezeNet and ShuffleNet as stem CNN to improve speed.

Notifications You must be signed in to change notification settings

xindongzhang/LightFaceNet

 
 

Repository files navigation

MobileFaceNet_Tensorflow

Tensorflow implementation for MobileFaceNet which is modified from MobileFaceNet_TF

Requirements

  • tensorflow >= r1.2 (support cuda 8.0, original needs tensorflow >= r1.5 and cuda 9.0)
  • opencv-python
  • python 3.x ( if you want to use python 2.x, somewhere in load_data function need to change, see details in comment)
  • mxnet
  • anaconda (recommend)

Construction

├── MobileFaceNet
│   ├── arch
│       ├── img
│       ├── txt
│   ├── datasets
│       ├── faces_ms1m_112x112
│       ├── tfrecords
│   ├── losses
│   ├── nets
│   ├── output
│       ├── ckpt
│       ├── ckpt_best
│       ├── logs
│       ├── summary
│   ├── utils

Datasets

  1. choose one of The following links to download dataset which is provide by insightface. (Special Recommend MS1M)
  1. move dataset to ${MobileFaceNet_TF_ROOT}/datasets.
  2. run ${MobileFaceNet_TF_ROOT}/utils/data_process.py.

Training

train_nets.py --max_epoch=10
              --train_batch_size=128
              --model_type=0  # 0-mobilefacenet 1-tinymobilefacenet 2-squeezefacenet 3-shufflefacenet 4-shufflefacenetV2
              --gpu=0

Inference

MobileFaceNet

python inference.py --pretrained_model='./output/ckpt_best/mobilefacenet_best_ckpt'
                    --model_type=0
                    --gpu=0

Performance

size LFW(%) Val@1e-3(%) inference@MSM8976(ms)
5.7M 99.25+ 96.8+ 260-

My training results

Models LFW Cfp_FF Cfp_FP Agedb_30 inference@i7-7700 16G 240G (fps)
MobileFaceNet(Bad training) 0.983+-0.008 0.980+-0.005 0.827+-0.019 0.878+-0.023 27
Tiny_MobileFaceNet 0.981+-0.008 0.984+-0.006 0.835+-0.019 0.882+-0.023 50
SqueezeFaceNet 0.972+-0.008 0.962+-0.006 0.785+-0.019 0.837+-0.023 83
ShuffleFaceNet v1 0.962+-0.008 0.941+-0.006 0.763+-0.019 0.747+-0.023 33
ShuffleFaceNet v2 0.980+-0.008 0.971+-0.006 0.820+-0.019 0.823+-0.023 50

References

  1. facenet
  2. InsightFace mxnet
  3. InsightFace_TF
  4. MobileFaceNets: Efficient CNNs for Accurate Real-Time Face Verification on Mobile Devices
  5. CosFace: Large Margin Cosine Loss for Deep Face Recognition
  6. InsightFace : Additive Angular Margin Loss for Deep Face Recognition
  7. tensorflow-triplet-loss
  8. MobileFaceNet_TF
  9. SqueezeNet: AlexNet-level accuracy with 50x fewer parameters and <0.5MB model size
  10. ShuffleNet: An Extremely Efficient Convolutional Neural Network for Mobile Devices

About

This tensorflow project is based on MobileFaceNet, which use SqueezeNet and ShuffleNet as stem CNN to improve speed.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Python 100.0%