Kartik Narayan 1 Nithin Gopalakrishnan Nair 1 Jennifer Xu 2 Rama Chellappa 1 Vishal M. Patel 1
JOHNS HOPKINS UNIVERSITY 1 Systèmes et recherche technologique 2


Les ensembles de données à basse résolution contiennent des images avec une mauvaise clarté, ce qui rend difficile d'extraire des caractéristiques discriminantes significatives essentielles pour la reconnaissance et la vérification du visage. De plus, les ensembles de données à basse résolution sont généralement petits, avec un nombre limité de sujets, car les conserver nécessitent un temps, des efforts et des investissements importants. Les méthodes existantes obligent l'apprentissage des images de visage à haute résolution et à basse résolution dans un seul encodeur, n'ayant pas pris en compte les différences de domaine entre elles. De la figure 1 (a), 1 (b) et 1 (c), nous observons que les images de galerie de haute qualité et les images de sonde de faible qualité appartiennent à des domaines distincts et nécessitent des encodeurs distincts pour extraire des caractéristiques significatives pour la classification. Une approche naïve pour adapter des modèles pré-formés aux ensembles de données à basse résolution est supervisé entièrement fin sur ces ensembles de données. Cependant, comme mentionné, les ensembles de données à basse résolution sont de petite taille et mettent à jour un modèle avec un grand nombre de paramètres sur un petit ensemble de données à basse résolution entraîne une mauvaise convergence. Cela rend le modèle sujet à l'oubli catastrophique et nous voyons une baisse des performances sur les ensembles de données à haute résolution et de qualité mixte, comme le montre la figure 2.
Avec la motivation ci-dessus,
1️⃣ Nous introduisons l'utilisation de la technique PETL basée sur LORA pour adapter de grands modèles de reconnaissance faciale pré-formés aux ensembles de données à basse résolution.
2️⃣ Nous proposons une pondération basée sur la qualité de l'image des modules LORA pour créer des encodeurs proxy distincts pour les données à haute résolution et à basse résolution, garantissant une extraction efficace des intérêts pour la reconnaissance du visage.
3️⃣ Nous démontrons la supériorité de la face de pétales en s'adaptant aux ensembles de données à basse résolution, surpassant d'autres modèles de pointe sur des références à basse résolution tout en conservant des performances sur des ensembles de données à haute résolution et de qualité mixte.
Résumé: La pré-formation sur les ensembles de données à grande échelle et l'utilisation des fonctions de perte basée sur la marge ont été très réussies dans les modèles de formation pour la reconnaissance des visages à haute résolution. Cependant, ces modèles luttent avec des ensembles de données de face à basse résolution, dans lesquels les visages n'ont pas les attributs faciaux nécessaires pour distinguer différents visages. Fonctionment complet sur les ensembles de données à basse résolution, une méthode naïve pour adapter le modèle, donne des performances inférieures dues à l'oubli catastrophique des connaissances pré-formées. De plus, la différence de domaine entre les images de galerie à haute résolution (HR) et les images de sonde à basse résolution (LR) dans les ensembles de données à basse résolution conduit à une mauvaise convergence pour un seul modèle pour s'adapter à la galerie et à la sonde après un réglage fin. À cette fin, nous proposons PetalFace, une approche d'apprentissage transfert par des paramètres pour la reconnaissance des visage à basse résolution. Grâce à Petalface, nous essayons de résoudre les deux problèmes susmentionnés. (1) Nous résolvons l'oubli catastrophique en tirant parti de la puissance du réglage fin efficace des paramètres (PEFT). (2) Nous introduisons deux modules d'adaptation de bas rang à l'épine dorsale, avec des poids ajustés en fonction de la qualité de l'image d'entrée pour tenir compte de la différence de qualité pour la galerie et les images de sonde. À notre connaissance, Petalface est le premier travail en tirant parti des pouvoirs de PEFT pour la reconnaissance du visage à faible résolution. Des expériences approfondies démontrent que la méthode proposée surpasse le réglage fin complet sur les ensembles de données à basse résolution tout en préservant les performances sur des ensembles de données à haute résolution et à qualité mixte, tout en utilisant seulement 0,48% des paramètres.

conda env create --file environment.yml
conda activate petalface Les ensembles de données peuvent être téléchargés à partir de leurs pages Web respectives ou en envoyant les auteurs:
Organiser l'ensemble de données de la manière suivante:
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 . recLe modèle pré-Traind peut être téléchargé manuellement à partir de HuggingFace ou à l'aide de 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" ) Téléchargez les poids formés à partir de HuggingFace et assurez-vous que les données sont téléchargées avec une structure de répertoire appropriée.
### 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
### Les modèles qualifiés sont stockés dans l'Ouptut spécifié.
Remarque : Les scripts de formation pour la pré-formation et la finetuning LORA sont fournis dans 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 >Remarque : Les scripts d'inférence sont fournis dans PetalFace / Scripts.
Si vous trouvez un visage de pétale utile pour vos recherches, envisagez de nous citer:
@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 }
}Si vous avez des questions, veuillez créer un problème sur ce référentiel ou contacter à [email protected]