kikirizki / PocketNet

Official repository for PocketNet: Extreme Lightweight Face Recognition Network using Neural Architecture Search and Multi-Step Knowledge Distillation

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

PocketNet

This is the official repository of the paper:

PocketNet: Extreme Lightweight Face Recognition Network using Neural Architecture Search and Multi-Step Knowledge Distillation

Paper on arxiv: arxiv

evaluation

Face recognition model training

Model training: In the paper, we employ MS1MV2 as the training dataset which can be downloaded from InsightFace (MS1M-ArcFace in DataZoo) Download MS1MV2 dataset from insightface on strictly follow the licence distribution

Unzip the dataset and place it in the data folder

Rename the config/config_xxxxxx.py to config/config.py

  1. Train PocketNet with ArcFace loss
    • ./train.sh
  2. Train PocketNet with template knowledge distillation
    • ./train_kd.sh
  3. Train PocketNet with multi-step template knowledge distillation
    • ./train_kd.sh
Model Parameters (M) configuration log pretrained model
PocketNetS-128 0.92 Config log Pretrained-model
PocketNetS-256 0.99 Config log Pretrained-model
PocketNetM-128 1.68 Config log Pretrained-model
PocketNetM-256 1.75 Config log Pretrained-model

All code has been trained and tested using Pytorch 1.7.1

Face recognition evaluation

evaluation on LFW, AgeDb-30, CPLFW, CALFW and CFP-FP:
  1. download the data from their offical webpages.
  2. alternative: The evaluation datasets are available in the training dataset package as bin file
  3. Rename the configuration file in config directory based on the evaluation model e.g. rename config_PocketNetM128.py to config.py to evaluate the PocketNetM128
  4. set the config.rec to dataset folder e.g. data/faces_emore
  5. set the config.val_targets for list of the evaluation dataset
  6. download the pretrained model from link the previous table
  7. set the config.output to path to pretrained model weights
  8. run eval/eval.py
  9. the output is test.log contains the evaluation results over all epochs
evaluation on IJB-B and IJB-C:
  1. Please apply for permissions from NIST before your usage NIST_Request
  2. run eval/IJB/runIJBEval.sh

Differentiable architecture search training

The code of NAS is available under NAS

To-do

  • Add pretrained model
  • Training configuration
  • Add NAS code
  • Add evaluation results

If you use any of the provided code in this repository, please cite the following paper:

@misc{boutros2021pocketnet,
      title={PocketNet: Extreme Lightweight Face Recognition Network using Neural Architecture Search and Multi-Step Knowledge Distillation}, 
      author={Fadi Boutros and Patrick Siebke and Marcel Klemt and Naser Damer and Florian Kirchbuchner and Arjan Kuijper},
      year={2021},
      eprint={2108.10710},
      archivePrefix={arXiv},
      primaryClass={cs.CV}
}

License

This project is licensed under the terms of the Attribution-NonCommercial-ShareAlike 4.0 
International (CC BY-NC-SA 4.0) license. 
Copyright (c) 2021 Fraunhofer Institute for Computer Graphics Research IGD Darmstadt

About

Official repository for PocketNet: Extreme Lightweight Face Recognition Network using Neural Architecture Search and Multi-Step Knowledge Distillation

License:Other


Languages

Language:Python 99.0%Language:Shell 1.0%