By Weiyang Liu, Yandong Wen, Zhiding Yu, Ming Li, Bhiksha Raj and Le Song
SphereFace is released under the MIT License (refer to the LICENSE file for details).
The repository contains the entire pipeline (including all the preprocessings) for deep face recognition with SphereFace
. The recognition pipeline contains three major steps: face detection, face alignment and face recognition.
SphereFace is a recently proposed face recognition method. It was initially described in an arXiv technical report and then published in CVPR 2017. To facilitate the face recognition research, we give an example of training on CAISA-WebFace and testing on LFW using the 20-layer CNN architecture described in the paper (i.e. SphereFace-20).
SphereFace achieves the state-of-the-art verification performance (previously No.1) in MegaFace Challenge under the small training set protocol.
If you find SphereFace useful in your research, please consider to cite:
@inproceedings{liu2017sphereface,
author = {Liu, Weiyang and Wen, Yandong and Yu, Zhiding and Li, Ming and Raj, Bhiksha and Song, Le},
title = {SphereFace: Deep Hypersphere Embedding for Face Recognition},
booktitle = {Proceedings of the IEEE conference on computer vision and pattern recognition},
Year = {2017}
}
Our another closely-related previous work in ICML'16 (more):
@inproceedings{liu2016large,
author = {Liu, Weiyang and Wen, Yandong and Yu, Zhiding and Yang, Meng},
title = {Large-Margin Softmax Loss for Convolutional Neural Networks},
booktitle = {Proceedings of The 33rd International Conference on Machine Learning},
Year = {2016}
}
Matlab
Caffe
and matcaffe
(see: Caffe installation instructions)MTCNN
(see: MTCNN - face detection & alignment) and Pdollar toolbox
(see: Piotr's Image & Video Matlab Toolbox).Clone the SphereFace repository. We'll call the directory that you cloned SphereFace as SPHEREFACE_ROOT
.
git clone --recursive https://github.com/wy1iu/sphereface.git
Build Caffe and matcaffe
cd $SPHEREFACE_ROOT/tools/caffe-sphereface
# Now follow the Caffe installation instructions here:
# http://caffe.berkeleyvision.org/installation.html
make all -j8 && make matcaffe
After successfully completing the installation, you are ready to run all the following experiments.
Note: In this part, we assume you are in the directory $SPHEREFACE_ROOT/preprocess/
Download the training set (CASIA-WebFace
) and test set (LFW
) and place them in data/
.
mv /your_path/CASIA_WebFace data/
./code/get_lfw.sh
tar xvf data/lfw.tgz -C data/
Please make sure that the directory of data/
contains two datasets.
Detect faces and facial landmarks in CAISA-WebFace and LFW datasets using MTCNN
(see: MTCNN - face detection & alignment).
# In Matlab Command Window
run code/face_detect_demo.m
This will create a file dataList.mat
in the directory of result/
.
Align faces to a canonical pose using similarity transformation.
# In Matlab Command Window
run code/face_align_demo.m
This will create two folders (CASIA-WebFace-112X96/
and lfw-112X96/
) in the directory of result/
, containing the aligned face images.
Note: In this part, we assume you are in the directory $SPHEREFACE_ROOT/train/
Get a list of training images and labels.
mv ../preprocess/result/CASIA-WebFace-112X96 data/
# In Matlab Command Window
run code/get_list.m
The aligned face images in folder CASIA-WebFace-112X96/
are moved from preprocess folder to train folder. A list CASIA-WebFace-112X96.txt
is created in the directory of data/
for the subsequent training.
Train the sphereface model.
./code/sphereface/sphereface_train.sh 0,1
After training, a model sphereface_model_iter_28000.caffemodel
and a corresponding log file sphereface_train.log
are placed in the directory of result/sphereface/
.
Note: In this part, we assume you are in the directory $SPHEREFACE_ROOT/test/
Get the pair list of LFW (view 2).
mv ../preprocess/result/lfw-112X96 data/
./code/get_pairs.sh
Make sure that the LFW dataset andpairs.txt
in the directory of data/
Extract deep features and test on LFW.
# In Matlab Command Window
run code/evaluation.m
Finally we have the sphereface_model.caffemodel
, extracted features pairs.mat
in folder result/
, and accuracy on LFW like this:
fold | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | AVE |
---|---|---|---|---|---|---|---|---|---|---|---|
ACC | 99.33% | 99.17% | 98.83% | 99.50% | 99.17% | 99.83% | 99.17% | 98.83% | 99.83% | 99.33% | 99.30% |
Following the instruction, we go through the entire pipeline for 5 times. The accuracies on LFW are shown below. Generally, we report the average but we release the model-3 here.
Experiment | #1 | #2 | #3 (released) | #4 | #5 |
---|---|---|---|---|---|
ACC | 99.24% | 99.20% | 99.30% | 99.27% | 99.13% |
Other intermediate results:
Please click the image to watch the Youtube video. For Youku users, click here.
Details:
Backward gradient
Lambda and Note for training (When the loss becomes 87)
Questions can also be left as issues in the repository. We will be happy to answer them.
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。