Skip to content

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

License

Notifications You must be signed in to change notification settings

fdbtrs/PocketNet

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

40 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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

Accepted at IEEE ACCESS Journal

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:

@article{boutros2021pocketnet,
  author    = {Fadi Boutros and
               Patrick Siebke and
               Marcel Klemt and
               Naser Damer and
               Florian Kirchbuchner and
               Arjan Kuijper},
  title     = {PocketNet: Extreme Lightweight Face Recognition Network Using Neural
               Architecture Search and Multistep Knowledge Distillation},
  journal   = {{IEEE} Access},
  volume    = {10},
  pages     = {46823--46833},
  year      = {2022},
  url       = {https://doi.org/10.1109/ACCESS.2022.3170561},
  doi       = {10.1109/ACCESS.2022.3170561},
}

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

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published