Kartik Narayan 1 Nithin Gopalakrishnan Nair 1 Jennifer XU 2 Rama Chellappa 1 Vishal M. Patel 1
Johns Hopkins University 1 시스템 및 기술 연구 2


저해상도 데이터 세트에는 명확성이 좋지 않은 이미지가 포함되어있어 얼굴 인식 및 검증에 필수적인 의미있는 차별적 기능을 추출하기가 어렵습니다. 또한, 저해상도 데이터 세트는 일반적으로 작고, 제한된 수의 피험자가 있으므로,이를 선별하려면 상당한 시간, 노력 및 투자가 필요하기 때문입니다. 기존의 방법은 단일 인코더에서 고해상도 및 저해상도의 이미지를 학습하여 이들 사이의 도메인 차이를 설명하지 못한다. 도 1 (a), 1 (b) 및 1 (c)에서, 우리는 고품질 갤러리 이미지와 저품질 프로브 이미지가 별개의 도메인에 속하며 분류를 위해 의미있는 기능을 추출하기 위해 별도의 인코더가 필요하다는 것을 관찰한다. 미리 훈련 된 모델을 저해상도 데이터 세트에 적응시키는 순진한 접근법은 이러한 데이터 세트에서 전체 미세 조정을 감독합니다. 그러나 언급 한 바와 같이, 저해상도 데이터 세트는 크기가 작고 작은 저해상도 데이터 세트에 많은 수의 매개 변수가있는 모델을 업데이트하면 수렴이 불량합니다. 이로 인해 모델은 치명적인 잊어 버리기 쉬우 며 그림 2와 같이 고해상도 및 혼합 품질 데이터 세트에서 성능이 떨어집니다.
위의 동기 부여로
1️ use 우리는 LORA 기반 PETL 기술의 사용을 소개하여 대규모 미리 훈련 된 얼굴 인식 모델을 저해상도 데이터 세트에 적응시킵니다.
2️ image 우리는 고해상도 및 저해상도 데이터를위한 별도의 프록시 인코더를 만들기 위해 LORA 모듈의 이미지 품질 기반 가중치를 제안하여 얼굴 인식을위한 임베딩의 효과적인 추출을 보장합니다.
3️ superior 우리는 저해상도 데이터 세트에 적응할 때 꽃잎 면 의 우수성을 보여주고, 저해상도 벤치 마크에서 다른 최첨단 모델을 능가하면서 고해상도 및 혼합 품질 데이터 세트에 대한 성능을 유지합니다.
초록 : 대규모 데이터 세트에서 사전 훈련 및 마진 기반 손실 기능을 활용하는 것은 고해상도 얼굴 인식을위한 교육 모델에서 매우 성공적이었습니다. 그러나 이러한 모델은 저해상도 얼굴 데이터 세트로 어려움을 겪고 있으며, 여기서 얼굴에는 다른면을 구별하는 데 필요한 얼굴 속성이 부족합니다. 저해상도 데이터 세트에 대한 전체 미세 조정, 모델을 조정하는 순진한 방법 인 미리 훈련 된 지식을 치명적으로 잊어 버리기 때문에 열등한 성능을 제공합니다. 또한 저해상도 데이터 세트에서 고해상도 (HR) 갤러리 이미지와 저해상도 (LR) 프로브 이미지 간의 도메인 차이는 단일 모델이 미세 조정 후 갤러리와 프로브에 적응할 수 있도록 수렴이 불량합니다. 이를 위해, 우리는 저해상도 얼굴 인식을위한 매개 변수 효율적인 전송 학습 접근법 인 Petalface를 제안합니다. Petalface를 통해, 우리는 앞서 언급 한 두 가지 문제를 해결하려고 시도합니다. (1) 우리는 PEFT (Parameter Efficial Fine Tuning)의 힘을 활용하여 치명적인 잊어 버린 것을 해결합니다. (2) 갤러리 및 프로브 이미지의 품질 차이를 설명하기 위해 입력 이미지 품질에 따라 가중치가 조정 된 두 개의 저급 적응 모듈을 백본에 소개합니다. 우리가 아는 한, Petalf 광범위한 실험은 제안 된 방법이 저해상도 데이터 세트에 대한 전체 미세 조정을 능가하면서 고해상도 및 혼합 품질 데이터 세트에서 성능을 유지하면서 매개 변수의 0.48% 만 사용한다는 것을 보여줍니다.

conda env create --file environment.yml
conda activate petalface 데이터 세트는 해당 웹 페이지에서 또는 저자를 우편으로 보내면 다운로드 할 수 있습니다.
다음과 같은 방식으로 데이터 세트를 정렬하십시오.
data /
├── BRIAR /
│ ├── train_set_1 /
│ │ ├── train . idx
│ │ ├── train . lst
│ │ └── train . rec
│ └── train_set_2 /
│ ├── train . idx
│ ├── train . lst
│ └── train . rec
├── HQ_val /
│ ├── agedb_30 . bin
│ ├── calfw . bin
│ ├── cfp_ff . bin
│ ├── cfp_fp . bin
│ ├── cplfw . bin
│ └── lfw . bin
├── ijb /
│ ├── IJB_11 . py
│ ├── IJBB /
│ ├── IJBC /
│ ├── recognition /
│ └── run . sh
├── IJBS /
│ ├── ijbs_participant_publication_consent . csv
│ ├── img /
│ ├── img . md5
│ ├── protocols /
│ ├── README . pdf
│ ├── videos /
│ ├── videos . md5
│ ├── videos_ground_truth /
│ └── videos_ground_truth . md5
├── tinyface_aligned_112 /
│ ├── Gallery_Distractor /
│ ├── Gallery_Match /
│ ├── Probe /
│ ├── train . idx
│ ├── train . lst
│ └── train . rec
├── WebFace12M /
│ ├── train . idx
│ ├── train . lst
│ └── train . rec
└── WebFace4M /
├── train . idx
├── train . lst
└── train . recPre-Traind 모델은 Huggingface 또는 Python을 사용하여 수동으로 다운로드 할 수 있습니다.
from huggingface_hub import hf_hub_download
# Finetuned Weights
# The filename "swin_arcface_webface4m_tinyface" indicates that the model has a swin bakcbone and pretraind
# on webface4m dataset with arcface loss function and finetuned on tinyface.
hf_hub_download ( repo_id = "kartiknarayan/PETALface" , filename = "swin_arcface_webface4m_tinyface/model.pt" , local_dir = "./weights" )
hf_hub_download ( repo_id = "kartiknarayan/PETALface" , filename = "swin_cosface_webface4m_tinyface/model.pt" , local_dir = "./weights" )
hf_hub_download ( repo_id = "kartiknarayan/PETALface" , filename = "swin_cosface_webface4m_briar/model.pt" , local_dir = "./weights" )
hf_hub_download ( repo_id = "kartiknarayan/PETALface" , filename = "swin_cosface_webface12m_briar/model.pt" , local_dir = "./weights" )
# Pre-trained Weights
hf_hub_download ( repo_id = "kartiknarayan/PETALface" , filename = "swin_arcface_webface4m/model.pt" , local_dir = "./weights" )
hf_hub_download ( repo_id = "kartiknarayan/PETALface" , filename = "swin_cosface_webface4m/model.pt" , local_dir = "./weights" )
hf_hub_download ( repo_id = "kartiknarayan/PETALface" , filename = "swin_arcface_webface12m/model.pt" , local_dir = "./weights" )
hf_hub_download ( repo_id = "kartiknarayan/PETALface" , filename = "swin_cosface_webface12m/model.pt" , local_dir = "./weights" ) Huggingface에서 숙련 된 가중치를 다운로드하고 데이터가 적절한 디렉토리 구조로 다운로드되어 있는지 확인하십시오.
### BRISQUE | CosFace | TinyFace ###
NCCL_P2P_DISABLE = 1 CUDA_VISIBLE_DEVICES = 0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 torchrun - - nproc_per_node = 8 - - master_port = 29190 train_iqa . py
- - network swin_256new_iqa
- - head partial_fc
- - output / mnt / store / knaraya4 / PETALface / < model_save_folder >
- - margin_list 1.0 , 0.0 , 0.4
- - batch - size 8
- - optimizer adamw
- - weight_decay 0.1
- - rec / data / knaraya4 / data / < folder_to_rec_file >
- - num_classes 2570
- - num_image 7804
- - num_epoch 50
- - lr 0.0005
- - fp16
- - warmup_epoch 2
- - image_size 120
- - use_lora
- - lora_rank 8
- - iqa brisque
- - threshold < threshold >
- - seed 19
- - load_pretrained / mnt / store / knaraya4 / PETALface / < path_to_pretrained_model >
###
# For CosFace, --margin_list 1.0,0.0,0.4; For ArcFace, --margin_list 1.0,0.5,0.0
# For BRISQUE, --iqa brisque; For CNNIQA, --iqa cnniqa; set the threshold accordingly
# For TinyFace,
# --num_classes 2570
# --num_image 7804
# --num_epoch 40
# --warmup_epoch 2
# For BRIAR,
# --num_classes 778
# --num_image 301000
# --num_epoch 10
# --warmup_epoch 1
### 훈련 된 모델은 지정된 "ouptut"에 저장됩니다.
참고 : 사전 여과 및 LORA FINETUNING을위한 교육 스크립트는 Petalface/Scripts에 제공됩니다.
# Validation HQ dataset
CUDA_VISIBLE_DEVICES = 0 python validation_hq / validate_hq_iqa . py
- - model_load_path / mnt / store / knaraya4 / PETALface / < folder_name > / model . pt
- - data_root / data / knaraya4 / data / < hq_dataset_folder >
- - model_type swin_256new_iqa
- - image_size 120
- - lora_rank 8
- - use_lora
- - iqa cnniqa
- - threshold threshold
# Validation Mixed Quality Dataset | IJBC
CUDA_VISIBLE_DEVICES = 0 python validation_ijb / eval_ijb_iqa . py
- - model_load_path / mnt / store / knaraya4 / PETALface / < folder_name > / model . pt
- - data_root / data / knaraya4 / data / ijb / < ijbc_dataset_folder >
- - batch - size 1024
- - model_type swin_256new_iqa
- - target IJBC
- - image_size 120
- - lora_rank 8
- - use_lora
- - iqa cnniqa
- - threshold < threshold >
# Validation Mixed Quality Dataset | IJBB
CUDA_VISIBLE_DEVICES = 0 python validation_ijb / eval_ijb_iqa . py
- - model_load_path / mnt / store / knaraya4 / PETALface / < folder_name > / model . pt
- - data_root / data / knaraya4 / data / < ijbb_dataset_folder >
- - batch - size 1024
- - model_type swin_256new_iqa
- - target IJBB
- - image_size 120
- - lora_rank 8
- - use_lora
- - iqa cnniqa
- - threshold < threshold >
# Validation Low-quality Dataset | TinyFace
CUDA_VISIBLE_DEVICES = 0 python validation_lq / validate_tinyface_iqa . py
- - data_root / data / knaraya4 / data
- - batch_size 512
- - model_load_path / mnt / store / knaraya4 / PETALface / < folder_name > / model . pt
- - model_type swin_256new_iqa
- - image_size 120
- - lora_rank 8
- - use_lora
- - iqa cnniqa
- - threshold < threshold >
# Validation Low-quality Dataset | IJBS
CUDA_VISIBLE_DEVICES = 0 python validation_lq / validate_ijbs_iqa . py
- - data_root / mnt / store / knaraya4 / data / < ijbs_dataset_folder >
- - batch_size 2048
- - model_load_path / mnt / store / knaraya4 / PETALface / < folder_name > / model . pt
- - model_type swin_256new_iqa
- - image_size 120
- - lora_rank 8
- - use_lora
- - iqa cnniqa
- - threshold < threshold >참고 : 추론 스크립트는 Petalface/Scripts로 제공됩니다.
당신이 당신의 연구에 유용한 꽃잎 얼굴을 발견하면, 우리를 인용하는 것을 고려하십시오.
@article { narayan2024petalface ,
title = { PETALface: Parameter Efficient Transfer Learning for Low-resolution Face Recognition } ,
author = { Narayan, Kartik and Nair, Nithin Gopalakrishnan and Xu, Jennifer and Chellappa, Rama and Patel, Vishal M } ,
journal = { arXiv preprint arXiv:2412.07771 } ,
year = { 2024 }
}궁금한 점이 있으면이 저장소에 문제를 만들거나 [email protected]로 문의하십시오.