InsightFace_Pytorch
Pytorch0.4.1 codes for InsightFace
1. Intro
- This repo is a reimplementation of Arcface(paper), or Insightface(github)
- For models, including the pytorch implementation of the backbone modules of Arcface and MobileFacenet
- Codes for transform MXNET data records in Insightface(github) to Image Datafolders are provided
- Pretrained models are posted, include the MobileFacenet and IR-SE50 in the original paper
2. Pretrained Models & Performance
IR-SE50 @ BaiduNetdisk, IR-SE50 @ Onedrive
LFW(%) | CFP-FF(%) | CFP-FP(%) | AgeDB-30(%) | calfw(%) | cplfw(%) | vgg2_fp(%) |
---|---|---|---|---|---|---|
0.9952 | 0.9962 | 0.9504 | 0.9622 | 0.9557 | 0.9107 | 0.9386 |
Mobilefacenet @ BaiduNetDisk, Mobilefacenet @ OneDrive
LFW(%) | CFP-FF(%) | CFP-FP(%) | AgeDB-30(%) | calfw(%) | cplfw(%) | vgg2_fp(%) |
---|---|---|---|---|---|---|
0.9918 | 0.9891 | 0.8986 | 0.9347 | 0.9402 | 0.866 | 0.9100 |
3. How to use
-
clone
git clone https://github.com/TropComplique/mtcnn-pytorch.git
3.1 Data Preparation
3.1.1 Prepare Facebank (For testing over camera or video)
Provide the face images your want to detect in the data/face_bank folder, and guarantee it have a structure like following:
data/facebank/
---> id1/
---> id1_1.jpg
---> id2/
---> id2_1.jpg
---> id3/
---> id3_1.jpg
---> id3_2.jpg
3.1.2 download the pretrained model to work_space/model
If more than 1 image appears in one folder, an average embedding will be calculated
3.2.3 Prepare Dataset ( For training)
download the refined dataset: (emore recommended)
- emore dataset @ BaiduDrive, emore dataset @ Dropbox
- More Dataset please refer to the original post
Note: If you use the refined MS1M dataset and the cropped VGG2 dataset, please cite the original papers.
-
after unzip the files to 'data' path, run :
python prepare_data.py
after the execution, you should find following structure:
faces_emore/
---> agedb_30
---> calfw
---> cfp_ff
---> cfp_fp
---> cfp_fp
---> cplfw
--->imgs
---> lfw
---> vgg2_fp
3.2 detect over camera:
-
- download the desired weights to model folder:
-
2 to take a picture, run
python take_pic.py -n name
press q to take a picture, it will only capture 1 highest possibility face if more than 1 person appear in the camera
-
3 or you can put any preexisting photo into the facebank directory, the file structure is as following:
- facebank/
name1/
photo1.jpg
photo2.jpg
...
name2/
photo1.jpg
photo2.jpg
...
.....
if more than 1 image appears in the directory, average embedding will be calculated
-
4 to start
python face_verify.py
3.3 detect over video:
β```
python infer_on_video.py -f [video file name] -s [save file name]
β```
the video file should be inside the data/face_bank folder
- Video Detection Demo @Youtube
3.4 Training:
β```
python train.py -b [batch_size] -lr [learning rate] -e [epochs]
# python train.py -net mobilefacenet -b 200 -w 4
β```
4. References
- This repo is mainly inspired by deepinsight/insightface and InsightFace_TF
PS
- PRs are welcome, in case that I don't have the resource to train some large models like the 100 and 151 layers model
- Email : [email protected]