Kartik Narayan 1 Nithin Gopalakrishnan Nair 1 Jennifer Xu 2 Rama Chellappa 1 Vishal M. Patel 1
Johns Hopkins University 1 Sistem dan Penelitian Teknologi 2


Kumpulan data resolusi rendah berisi gambar dengan kejelasan yang buruk, membuatnya menantang untuk mengekstraksi fitur diskriminatif yang bermakna yang penting untuk pengenalan dan verifikasi wajah. Selain itu, set data resolusi rendah biasanya kecil, dengan sejumlah subjek, karena mengkuratori mereka membutuhkan waktu, upaya, dan investasi yang signifikan. Metode yang ada memaksa pembelajaran gambar wajah resolusi tinggi dan resolusi rendah dalam satu enkoder tunggal, gagal menjelaskan perbedaan domain di antara mereka. Dari Gambar 1 (a), 1 (b), dan 1 (c), kami mengamati bahwa gambar galeri berkualitas tinggi dan gambar probe berkualitas rendah milik domain yang berbeda, dan membutuhkan encoder terpisah untuk mengekstrak fitur yang bermakna untuk klasifikasi. Pendekatan naif untuk mengadaptasi model yang terlatih dengan set data resolusi rendah diawasi dengan fine-tuning penuh pada set data ini. Namun, seperti yang disebutkan, dataset resolusi rendah berukuran kecil, dan memperbarui model dengan sejumlah besar parameter pada dataset resolusi rendah kecil menghasilkan konvergensi yang buruk. Ini membuat model rentan terhadap lupa bencana dan kami melihat penurunan kinerja pada set data resolusi tinggi dan berkualitas campuran, seperti yang ditunjukkan pada Gambar 2.
Dengan motivasi di atas,
1️⃣ Kami memperkenalkan penggunaan teknik PETL berbasis LORA untuk mengadaptasi model pengenalan wajah yang telah dilatih sebelumnya dengan set data resolusi rendah.
2️⃣ Kami mengusulkan bobot bobot modul LORA berbasis gambar untuk membuat encoder proxy terpisah untuk data resolusi tinggi dan resolusi rendah, memastikan ekstraksi yang efektif dari embeddings untuk pengenalan wajah.
3️⃣ Kami menunjukkan keunggulan wajah kelopak dalam beradaptasi dengan set data resolusi rendah, mengungguli model canggih lainnya pada tolok ukur resolusi rendah sambil mempertahankan kinerja pada dataset resolusi tinggi dan berkualitas campuran.
Abstrak: Pra-pelatihan pada set data skala besar dan memanfaatkan fungsi kerugian berbasis margin telah sangat berhasil dalam model pelatihan untuk pengenalan wajah resolusi tinggi. Namun, model-model ini berjuang dengan set data wajah resolusi rendah, di mana wajah tidak memiliki atribut wajah yang diperlukan untuk membedakan wajah yang berbeda. Fine-tuning penuh pada set data resolusi rendah, metode naif untuk mengadaptasi model, menghasilkan kinerja yang lebih rendah karena lupa katastropik pengetahuan pra-terlatih. Selain itu perbedaan domain antara gambar galeri resolusi tinggi (HR) dan gambar penyelidikan resolusi rendah (LR) dalam set data resolusi rendah menyebabkan konvergensi yang buruk untuk model tunggal untuk beradaptasi dengan galeri dan penyelidikan setelah penyesuaian. Untuk tujuan ini, kami mengusulkan Petalface, pendekatan pembelajaran transfer yang efisien parameter untuk pengenalan wajah resolusi rendah. Melalui Petalface, kami berusaha untuk menyelesaikan kedua masalah tersebut. (1) Kami memecahkan lupa bencana dengan memanfaatkan kekuatan parameter efisien fine-tuning (PEFT). (2) Kami memperkenalkan dua modul adaptasi peringkat rendah ke tulang punggung, dengan bobot disesuaikan berdasarkan kualitas gambar input untuk memperhitungkan perbedaan kualitas untuk galeri dan gambar probe. Sepengetahuan kami, Petalface adalah karya pertama yang memanfaatkan kekuatan PEFT untuk pengakuan wajah resolusi rendah. Eksperimen ekstensif menunjukkan bahwa metode yang diusulkan mengungguli fine-tuning penuh pada set data resolusi rendah sambil menjaga kinerja pada set data resolusi tinggi dan berkualitas campuran, semuanya hanya menggunakan 0,48% dari parameter.

conda env create --file environment.yml
conda activate petalface Dataset dapat diunduh dari halaman web masing -masing atau dengan mengirimkan penulis:
Atur dataset dengan cara berikut:
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 . recModel pra-traind dapat diunduh secara manual dari permukaan pelukan atau menggunakan 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" ) Unduh bobot terlatih dari Huggingface dan pastikan data diunduh dengan struktur direktori yang sesuai.
### 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
### Model terlatih disimpan dalam "Oteptut" yang ditentukan.
Catatan : Skrip pelatihan untuk pretraining dan lora finetuning disediakan dalam petalface/skrip.
# 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 >Catatan : Skrip inferensi disediakan dalam petalface/skrip.
Jika Anda menganggap wajah kelopak bermanfaat untuk penelitian Anda, silakan pertimbangkan mengutip kami:
@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 }
}Jika Anda memiliki pertanyaan, silakan buat masalah di repositori ini atau hubungi di [email protected]