Kartik Narayan 1 Nithin Gopalakrishnan Nair 1 Jennifer Xu 2 Rama Chellappa 1 Vishal M. Patel 1
Johns Hopkins University 1 Systems and Technology Research 2


Os conjuntos de dados de baixa resolução contêm imagens com pouca clareza, tornando difícil extrair recursos discriminativos significativos essenciais para o reconhecimento e verificação de rosto. Além disso, os conjuntos de dados de baixa resolução são geralmente pequenos, com um número limitado de assuntos, pois a curadoria requer tempo, esforço e investimento significativos. Os métodos existentes forçam o aprendizado de imagens de face de alta resolução e baixa resolução em um único codificador, deixando de explicar as diferenças de domínio entre elas. Na Figura 1 (a), 1 (b) e 1 (c), observamos que imagens de galeria de alta qualidade e imagens de sonda de baixa qualidade pertencem a domínios distintos e exigem codificadores separados para extrair recursos significativos para classificação. Uma abordagem ingênua para adaptar modelos pré-treinados aos conjuntos de dados de baixa resolução é supervisionada com ajuste completo nesses conjuntos de dados. No entanto, como mencionado, os conjuntos de dados de baixa resolução são de tamanho pequeno e atualizando um modelo com um grande número de parâmetros em um pequeno conjunto de dados de baixa resolução resulta em baixa convergência. Isso torna o modelo propenso ao esquecimento catastrófico e vemos uma queda no desempenho em conjuntos de dados de alta resolução e de qualidade mista, como mostra a Figura 2.
Com a motivação acima,
1️⃣ Introduzimos o uso da técnica PETL baseada em LORA para adaptar grandes modelos de reconhecimento de rosto pré-treinado a conjuntos de dados de baixa resolução.
2️⃣ Propomos uma ponderação baseada na imagem de imagem de módulos LORA para criar codificadores de proxy separados para dados de alta resolução e baixa resolução, garantindo uma extração eficaz de incorporações para o reconhecimento facial.
3️⃣ Demonstramos a superioridade da face da pétala na adaptação a conjuntos de dados de baixa resolução, superando outros modelos de última geração em benchmarks de baixa resolução, mantendo o desempenho em conjuntos de dados de alta resolução e de qualidade mista.
Resumo: O pré-treinamento em conjuntos de dados em larga escala e utilizando funções de perda baseado em margens tem sido muito bem-sucedido em modelos de treinamento para reconhecimento de facilidade de alta resolução. No entanto, esses modelos lutam com conjuntos de dados de face de baixa resolução, nos quais os rostos não possuem os atributos faciais necessários para distinguir diferentes faces. Ajuste fino total em conjuntos de dados de baixa resolução, um método ingênuo para adaptar o modelo, produz desempenho inferior devido ao esquecimento catastrófico de conhecimento pré-treinado. Além disso, a diferença de domínio entre imagens da galeria de alta resolução (HR) e imagens de sonda de baixa resolução (LR) em conjuntos de dados de baixa resolução leva a uma convergência baixa para um único modelo para se adaptar à galeria e à sonda após o ajuste fino. Para esse fim, propomos a Petalface, uma abordagem de aprendizado de transferência eficiente em parâmetro para o reconhecimento de face de baixa resolução. Através do Petalface, tentamos resolver os dois problemas acima mencionados. (1) Resolvemos o esquecimento catastrófico, alavancando o poder do ajuste fino com eficiência do parâmetro (PEFT). (2) Introduzimos dois módulos de adaptação de baixo rank na espinha dorsal, com pesos ajustados com base na qualidade da imagem de entrada para explicar a diferença de qualidade para as imagens da galeria e da sonda. Até onde sabemos, o PETALFACE é o primeiro trabalho que alavanca os poderes da PEFT para o reconhecimento de face de baixa resolução. Experiências extensas demonstram que o método proposto supera o ajuste fino total em conjuntos de dados de baixa resolução, preservando o desempenho em conjuntos de dados de alta resolução e qualidade mista, enquanto usa apenas 0,48% dos parâmetros.

conda env create --file environment.yml
conda activate petalface Os conjuntos de dados podem ser baixados de suas respectivas páginas da Web ou enviando os autores:
Organize o conjunto de dados da seguinte maneira:
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 . recO modelo pré-Traind pode ser baixado manualmente do Huggingface ou usando o 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" ) Faça o download dos pesos treinados do HuggingFace e verifique se os dados são baixados com a estrutura de diretório apropriada.
### 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
### Os modelos treinados são armazenados no "Ouptut" especificado.
NOTA : Os scripts de treinamento para pré -treinamento e Lora Finetuning são fornecidos em 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 >NOTA : Os scripts de inferência são fornecidos no Petalface/Scripts.
Se você achar o rosto de pétala útil para sua pesquisa, considere nos citar:
@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 }
}Se você tiver alguma dúvida, crie um problema neste repositório ou entre em contato em [email protected]