davidjaw / NTU-DLCV-final-Face-Recognition

The final project of DLCV course (CommE 5052) on NTU

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

DLCV-final: Face Recognition


Task description

  1. Beat TA’s Baseline
    • You will be given a dataset of interest (with predetermined data split)
    • You are NOT allowed to apply any external dataset or techniques like transfer learning
  2. Squeeze Your Model
    • Design a model (e.g., those with fewer parameters, simpler designs, compact or simplified versions) which would achieve comparable performances but save computation or storage costs.

Model descrioption

Baseline model - Inception ResNet


Compressed model - SqueezeNeXt


Teacher Student training


Result - Model comparison

Model size # of params P. V. P. T. fps weights
In.-Res. 124MB 26,781,288 88.91% 85.59% 418.96 link
2.0 SqNxt-23v5 13.7MB 3,399,352 71.28% ~ 635.68 None
2.0 SqNxt-23v5(T-S) 13.7MB 3,399,352 85.98% 82.48% 635.68 link
1.0 SqNxt-23v5(T-S) 4.5MB 1,106,456 78.42% 73.6% 805.36 link
  • T-S refers to Teacher-Student training strategy
  • P. V. refers to Performance on Validation set
  • the T-S weight is for fine-tuning, thus contains weights of embedding layer


Ablation study

Basic A. Seaweed Center L. P. N. L. H. I. M. Triplet L. P. V. P. T.
✖️ ✖️ ✖️ ✖️ ✖️ ✖️ ~30%
✔️ ✖️ ✖️ ✖️ ✖️ ✖️ 67.4%
✔️ ✔️ ✖️ ✖️ ✖️ ✖️ 72%
✔️ ✖️ ✔️ ✖️ ✖️ ✖️ 75.75%
✔️ ✔️ ✔️ ✖️ ✖️ ✖️ 78.11% 79.11%
✔️ ✔️ ✔️ ✔️ ✖️ ✖️ 81.81% 82.45%
✔️ ✔️ ✔️ ✔️ ✔️ ✔️ 88.91% 85.59%
  • Basic A. refers to basic augmentations
  • L. refers to loss
  • P. N. L. refers to pre-logit norm loss
  • H. I. M. refers to hard instance mining
  • P. V. refers to Performance on Validation set
  • P. T. refers to Performance on Test set (scores on Kaggle)

Usage

  • Use train_teacher.py to train teacher network with args
  • Use train_student.py to train student under normal training policy with args
  • Use train_TS.py to train student network under TS leraning policy with args
    • Trained teacher is required

About

The final project of DLCV course (CommE 5052) on NTU


Languages

Language:Python 99.8%Language:Shell 0.2%