/UNPG

Unified Negative Pair Generation toward Well-discriminative Feature Space for Face Recognition

Primary LanguagePythonApache License 2.0Apache-2.0

UNPG

Unified Negative Pair Generation toward Well-discriminative Feature Space for Face Recognition

Data prepration

MS1M-ArcFace (85K ids/5.8M images) download link

#Preprocess 'train.rec' and 'train.idx' to 'jpg'

# example
cd detection

python rec2image.py --include '{path}/face_emore' --output '{path}/MS1MV2'

K-FACE download link

"""
    ###################################################################

    K-Face : Korean Facial Image AI Dataset
    url    : http://www.aihub.or.kr/aidata/73

    Directory structure : High-ID-Accessories-Lux-Emotion
    ID example          : '19062421' ... '19101513' len 400
    Accessories example : 'S001', 'S002' .. 'S006'  len 6
    Lux example         : 'L1', 'L2' .. 'L30'       len 30
    Emotion example     : 'E01', 'E02', 'E03'       len 3
    
    ###################################################################
"""

# example
cd detection

python align_kfaces.py --ori_data_path '/data/FACE/KFACE/High' --detected_data_path 'kface_retina_align_112x112'

IJBB & IJBC

download link

Please apply for permissions from NIST before your usage.

Evaluation

Performance on public benchmark datasets with ResNet-100

Method IJB-B
(1e-5)
IJB-B
(1e-4)
IJB-C
(1e-5)
IJB-C
(1e-4)
MegaFace
(Rank-1 acc)
LFW Path
Circle-loss* - - - 93.95 98.50 99.73 -
ArcFace* - 94.20 - 95.60 98.35 99.82 -
MagFace* 90.36 94.51 94.08 95.97 - 99.83 -
CosFace 89.38 94.39 94.42 96.35 99.08 99.83 -
CosFace+UNPG 90.61 94.99 94.48 96.39 99.27 99.81 link
ArcFace 89.99 94.89 93.93 96.25 98.56 99.83 -
ArcFace+UNPG 90.57 95.04 94.47 96.33 98.82 99.83 link
MagFace 89.03 93.99 93.30 95.54 98.51 99.81 -
MagFace+UNPG 90.93 95.21 94.70 96.38 98.03 99.81 link

“*” indicates results from the original paper.

Example script

cd recognition

# example
python evaluation.py --weights 'face.r100.cos.unpg.wisk1.5.pt' --data 'ijbc.yaml' 
# --data (e.g., 'ijbb.yaml', 'bins.yaml')

Performance on K-FACE test datasets (Q1-Q4) with ResNet-34

Method Q4
(1e-5)
Q4
(1e-4)
Q3
(1e-5)
Q3
(1e-4)
Q2
(1e-5)
Q2
(1e-4)
Q1
(1e-3)
Q1
(1e-2)
Path
ArcFace 0.05 0.29 2.06 4.40 26.56 41.29 94.00 100 -
SN-pair 3.50 7.21 17.67 21.16 21.93 33.26 91.80 97.60 -
MS-loss 5.68 8.70 15.15 18.74 38.33 46.64 94.60 99.20 -
MixFace 7.11 10.92 9.19 22.55 39.09 44.48 97.00 100 -
Circle-loss 18.08 25.05 33.56 41.54 71.38 77.93 100 100 -
Arc+UNPG 29.89 50.43 51.59 60.88 91.28 93.26 100 100 link
cd recognition

# example
python evaluation.py --weights 'kface.r34.arc.unpg.wisk1.0.pt' --data 'kface.yaml' 

Training

Example script (FACE)

cd recognition

# example 
python train.py --model 'iresnet-100' --head 'arcface' --aux 'unpg' --data 'data/face.yaml' --hyp 'data/hyp.yaml' --name 'example' --device 0,1

Example script (KFACE)

cd recognition

# example 
python train.py --model 'iresnet-34' --head 'arcface' --aux 'unpg' --data 'data/kface.yaml' --hyp 'data/hyp.yaml' --name 'example' --device 0,1