K-FACE Analysis Project on Pytorch

Related tags

Deep Learningmixface
Overview

Installation

Setup with Conda

# create a new environment
conda create --name insightKface python=3.7 # or over
conda activate insightKface

#install the appropriate cuda version of pytorch(https://pytorch.org/)
#example:
conda install pytorch torchvision torchaudio cudatoolkit=11.1 -c pytorch -c conda-forge

# install requirements
pip install -r requirements.txt

Data prepration

K-FACE Database

K-FACE AI-hub.

Detail configuration about K-FACE is provided in the paper below.

K-FACE: A Large-Scale KIST Face Database in Consideration with Unconstrained Environments

K-FACE sample images

title

Structure of the K-FACE database

title

Configuration of K-FACE

Configuration_of_KFACE

Detection & Alignment on K-FACE

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

    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'

Training and test datasets on K-FACE

Train ID Accessories Lux Expression Pose #Image Variance
T1 A1 1000 E1 C4-10 2,590 Very Low
T2 A1-2 400-1000 E1 C4-10 46,620 Low
T3 A1-A4 200-1000 E1-2 C4-13 654,160 Middle
T4 A1-A6 40-1000 E1-3 C1-20 3,862,800 High
Test ID Accessories Lux Expression Pose #Pairs Variance
Q1 A1 1000 E1 C4-10 1,000 Very Low
Q2 A1-2 400-1000 E1 C4-10 100,000 Low
Q3 A1-4 200-1000 E1-2 C4-13 100,000 Middle
Q4 A1-6 40-1000 E1-3 C1-20 100,000 High

MS1M-RetinaFace (MS1M-R)

MS1M-RetinaFace download link:

  1. The Lightweight Face Recognition Challenge & Workshop.

  2. https://github.com/deepinsight/insightface/wiki/Dataset-Zoo

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

# example
cd detection

python rec2image.py --include '/data/FACE/ms1m-retinaface-t1/' --output 'MS1M-RetinaFace'

Inference

After downloading the pretrained model, run test.py.

Pretrained Model

For all experiments, ResNet-34 was chosen as the baseline backbone.

The model was trained on KFACE

Head&Loss Q1 Q2 Q3 Q4
ArcFace (s=16, m=0.25) 98.30 94.77 87.87 85.41
SN-pair (s=64) 99.20 95.01 91.84 89.74
MixFace (e=1e-22, m=0.25) 100 96.37 92.36 89.80

Note:

  • For ArcFace, We tested (s,m)={(16,0.5), (32,0.25), (64,0.25), (32,0.5), (64,0.5)}, but the model was not trained properly So, we apply (s,m)=(16,0.25).
cd recognition

# example
python test.py --weights 'kface.mixface.1e-22m0.25.best.pt' --dataset 'kface' --data_cfg 'data/KFACE/kface.T4.yaml'

The model was trained on MS1M-R

Head&Loss Q2 Q3 Q4 LFW CFP-FP AgeDB-30
ArcFace (s=64, m=0.5) 98.71 86.60 82.03 99.80 98.41 98.80
SN-pair (s=64) 92.85 76.36 70.08 99.55 96.20 95.46
MixFace (e=1e-22, m=0.5) 97.36 82.89 76.95 99.68 97.74 97.25
cd recognition

# example
python test.py --weights 'face.mixface.1e-22m0.5.best.pt' --dataset 'face' --data_cfg 'data/face.all.yaml'

The model was trained on MS1M-R+T4

Head&Loss Q2 Q3 Q4 LFW CFP-FP AgeDB-30
ArcFace (s=8, m=0.25) 76.58 73.13 71.38 99.46 96.75 93.83
SN-pair (s=64) 98.37 94.98 93.33 99.45 94.90 93.45
MixFace (e=1e-22, m=0.5) 99.27 96.85 94.79 99.53 96.32 95.56

Note:

  • For ArcFace, we tested (s,m)={(8, 0.5), (16, 0.25), (16,0.5), (32,0.25), (64,0.25), (32,0.5), (64,0.5)}, but the model was not trained properly So, we apply (s,m)=(8,0.25).
cd recognition

# example
python test.py --weights 'merge.mixface.1e-22m0.5.best.pt' --dataset 'merge' --data_cfg 'data/merge.yaml'

Training

Multi-GPU DataParallel Mode

Example script for training on KFACE

cd recognition

# example 
python train.py --dataset 'kface' --head 'mixface' --data_cfg 'data/KFACE/kface.T4.yaml' --hyp 'data/face.hyp.yaml' --head_cfg 'models/head.kface.cfg.yaml' --name 'example' --device 0,1

Multi-GPU DistributedDataParallel Mode

Example script for training on KFACE

cd recognition

# example
python -m torch.distributed.launch --nproc_per_node 2 train.py --dataset 'kface' --head 'mixface' --data_cfg 'data/KFACE/kface.T4.yaml' --hyp 'data/face.hyp.yaml' --head_cfg 'models/head.kface.cfg.yaml' --name 'example' --device 0,1

Note:

  • For MS1M-R, change args --dataset face, --data_cfg data/face.all.yaml, and --head_cfg model/head.face.cfg.yaml.
  • For MS1M-R+T4, change args --dataset merge, --data_cfg data/merge.yaml, and --head_cfg model/head.merge.cfg.yaml.
  • The args --nodrop should be used if you train with the metric loss(e.g., SN-pair, N-pair, etc.) on MS1M-R or MS1M-R+T4.
  • The args --double should be used if you train with the metric loss(e.g., SN-pair, N-pair, etc.) or MixFace on MS1M-R or MS1M-R+T4.
  • DistributedDataParallel is only available to classification loss(e.g., arcface, cosface, etc.)

Reference code

Thanks for these source codes porviding me with knowledges to complete this repository.

  1. https://github.com/biubug6/Pytorch_Retinaface.
  2. https://github.com/deepinsight/insightface.
  3. https://github.com/ultralytics/yolov5
Owner
Jung Jun Uk
Jung Jun Uk
Yolov5 + Deep Sort with PyTorch

딥소트 수정중 Yolov5 + Deep Sort with PyTorch Introduction This repository contains a two-stage-tracker. The detections generated by YOLOv5, a family of obj

1 Nov 26, 2021
Project repo for Learning Category-Specific Mesh Reconstruction from Image Collections

Learning Category-Specific Mesh Reconstruction from Image Collections Angjoo Kanazawa*, Shubham Tulsiani*, Alexei A. Efros, Jitendra Malik University

438 Dec 22, 2022
PipeTransformer: Automated Elastic Pipelining for Distributed Training of Large-scale Models

PipeTransformer: Automated Elastic Pipelining for Distributed Training of Large-scale Models This repository is the official implementation of the fol

DistributedML 41 Dec 06, 2022
Github Traffic Insights as Prometheus metrics.

github-traffic Github Traffic collects your repository's traffic data and exposes it as Prometheus metrics. Grafana dashboard that displays the metric

Grafana Labs 34 Oct 27, 2022
Code for ACL'2021 paper WARP 🌀 Word-level Adversarial ReProgramming

Code for ACL'2021 paper WARP 🌀 Word-level Adversarial ReProgramming. Outperforming `GPT-3` on SuperGLUE Few-Shot text classification.

YerevaNN 75 Nov 06, 2022
Train Scene Graph Generation for Visual Genome and GQA in PyTorch >= 1.2 with improved zero and few-shot generalization.

Scene Graph Generation Object Detections Ground truth Scene Graph Generated Scene Graph In this visualization, woman sitting on rock is a zero-shot tr

Boris Knyazev 93 Dec 28, 2022
Low-dose Digital Mammography with Deep Learning

Impact of loss functions on the performance of a deep neural network designed to restore low-dose digital mammography ====== This repository contains

WANG-AXIS 6 Dec 13, 2022
PyTorch implementation of HDN(Homography Decomposition Networks) for planar object tracking

Homography Decomposition Networks for Planar Object Tracking This project is the offical PyTorch implementation of HDN(Homography Decomposition Networ

CaptainHook 48 Dec 15, 2022
Adaptive Dropblock Enhanced GenerativeAdversarial Networks for Hyperspectral Image Classification

This repo holds the codes of our paper: Adaptive Dropblock Enhanced GenerativeAdversarial Networks for Hyperspectral Image Classification, which is ac

Feng Gao 17 Dec 28, 2022
Easy-to-use library to boost AI inference leveraging state-of-the-art optimization techniques.

NEW RELEASE How Nebullvm Works • Tutorials • Benchmarks • Installation • Get Started • Optimization Examples Discord | Website | LinkedIn | Twitter Ne

Nebuly 1.7k Dec 31, 2022
This code is a toolbox that uses Torch library for training and evaluating the ERFNet architecture for semantic segmentation.

ERFNet This code is a toolbox that uses Torch library for training and evaluating the ERFNet architecture for semantic segmentation. NEW!! New PyTorch

Edu 104 Jan 05, 2023
MTCNN face detection implementation for TensorFlow, as a PIP package.

MTCNN Implementation of the MTCNN face detector for Keras in Python3.4+. It is written from scratch, using as a reference the implementation of MTCNN

Iván de Paz Centeno 1.9k Dec 30, 2022
Implementation of experiments in the paper Clockwork Variational Autoencoders (project website) using JAX and Flax

Clockwork VAEs in JAX/Flax Implementation of experiments in the paper Clockwork Variational Autoencoders (project website) using JAX and Flax, ported

Julius Kunze 26 Oct 05, 2022
Out-of-Domain Human Mesh Reconstruction via Dynamic Bilevel Online Adaptation

DynaBOA Code repositoty for the paper: Out-of-Domain Human Mesh Reconstruction via Dynamic Bilevel Online Adaptation Shanyan Guan, Jingwei Xu, Michell

198 Dec 29, 2022
PyTorch implementation of EigenGAN

PyTorch Implementation of EigenGAN Train python train.py [image_folder_path] --name [experiment name] Test python test.py [ckpt path] --traverse FFH

62 Nov 12, 2022
SW components and demos for visual kinship recognition. An emphasis is put on the FIW dataset-- data loaders, benchmarks, results in summary.

FIW Data Development Kit Table of Contents Introduction Families In the Wild Database Publications Organization To Do License Getting Involved Introdu

Joseph P. Robinson 12 Jun 04, 2022
Liver segmentation using MONAI and pytorch

Machine Learning use case in the field of Healthcare. In this project MONAI and pytorch frameworks are used for 3D Liver segmentation.

Abhishek Gajbhiye 2 May 30, 2022
Torchserve server using a YoloV5 model running on docker with GPU and static batch inference to perform production ready inference.

Yolov5 running on TorchServe (GPU compatible) ! This is a dockerfile to run TorchServe for Yolo v5 object detection model. (TorchServe (PyTorch librar

82 Nov 29, 2022
[ICCV 2021] Counterfactual Attention Learning for Fine-Grained Visual Categorization and Re-identification

Counterfactual Attention Learning Created by Yongming Rao*, Guangyi Chen*, Jiwen Lu, Jie Zhou This repository contains PyTorch implementation for ICCV

Yongming Rao 90 Dec 31, 2022
This framework implements the data poisoning method found in the paper Adversarial Examples Make Strong Poisons

Adversarial poison generation and evaluation. This framework implements the data poisoning method found in the paper Adversarial Examples Make Strong

31 Nov 01, 2022