An open-source face recognition engine.
Support for Tensorflow-2.0.0+ @branch tensorflow2.0.0+.
Further reading: Read more related papers.
SmooFaceEngine: an open-source implementation for face recognition.
In the project, SmooFaceEngine implements a face recognition engine with one-shot training.
SmooFaceEngine employs several CNNs (VGGNet, VIPL face net, ResNet, XCEPTION, et al.) to recognize face images.
Firstly, SmooFaceEngine employs AM-Softmax loss as the cost function rather than triple-loss or other metric learning methods (e.g., siamese network) since AM-Softmax costs less training time and obtains higher accuracy. Although AM-Softmax is no longer a state-of-the-art model, subsequent not a few approaches follow the primary thought, e.g., SphereFace.
Secondly, SmooFaceEngine uses data augmentation to generate a more robust model. By the way, some GAN approaches have broken through in this field in recent times. Readers could follow the paper list above mentioned.
Finally, SmooFaceEngine has trained a model, but this model is a classification model. Therefore, users cannot compare whether two face images are similar and know the probability. Thus, SmooFaceEngine implements a metric method, which is cosine similarity. Users could supply two images by this method, and SmooFaceEngine generates two vectors to represent the two faces. They are then using cosine similarly to measure the similar probability.
To summarize, SmooFaceEngine cannot give the end-to-end similarity for two face images, which combines classification learning and the measuring method to evaluate similarity. AM-Softmax outperforms the softmax function in this scenario. This is why SmooFaceEngine does not directly use the softmax function as the output layer.
SmooFaceEngine is only a demo. SmooFaceEngine pre-trained a model with small data to see the experimental results. If you want to use this SmooFaceEngine in your production environment directly, you should do more, such as training with lots of samples, training with more batches and epochs.
Running the script train.py, like the following:
python3 train.py
Starting predict.py, then this script will validate some specified images, as follows:
python3 predict.py
Meanwhile, SmooFaceEngine offers a web interface. Users could have a taste of how the engine works.
Require Python 3.6+.
Other dependencies:
```
pip3 install -r requirements.txt
```
You can search the following papers in Google Scholar
AM-Softmax
Sphere face
FaceNet
ResNet
Xception
MobileNet v1,v2,v3
VIPL Face net
- https://github.com/xiangrufan/keras-mtcnn
- https://github.com/happynear/AMSoftmax
- https://github.com/Joker316701882/Additive-Margin-Softmax
- https://github.com/hao-qiang/AM-Softmax
- https://github.com/ageitgey/face_recognition
- https://github.com/oarriaga/face_classification
- https://github.com/seetaface/SeetaFaceEngine
- https://github.com/jiankangdeng/handbook
Apache License version 2.0
Send pull requests or issues directly. Thank you big time :)