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⃣เราแนะนำการใช้เทคนิค PETL ที่ใช้ LORA เพื่อปรับรูปแบบการจดจำใบหน้าขนาดใหญ่ที่ผ่านการฝึกอบรมมาก่อนเข้ากับชุดข้อมูลความละเอียดต่ำ
2⃣เราเสนอการถ่วงน้ำหนักตามคุณภาพของโมดูล LORA เพื่อสร้างตัวเข้ารหัสพร็อกซีแยกต่างหากสำหรับข้อมูลความละเอียดสูงและความละเอียดต่ำ
3⃣เราแสดงให้เห็นถึงความเหนือกว่าของ ใบหน้า กลีบในการปรับให้เข้ากับชุดข้อมูลที่มีความละเอียดต่ำมีประสิทธิภาพสูงกว่ารุ่นที่ทันสมัยอื่น ๆ บนเกณฑ์มาตรฐานความละเอียดต่ำในขณะที่ยังคงประสิทธิภาพในชุดข้อมูลความละเอียดสูงและคุณภาพผสม
บทคัดย่อ: การฝึกอบรมล่วงหน้าในชุดข้อมูลขนาดใหญ่และการใช้ฟังก์ชั่นการสูญเสียตามมาร์จิ้นประสบความสำเร็จอย่างสูงในรูปแบบการฝึกอบรมสำหรับการจดจำใบหน้าที่มีความละเอียดสูง อย่างไรก็ตามแบบจำลองเหล่านี้ต่อสู้กับชุดข้อมูลใบหน้าที่มีความละเอียดต่ำซึ่งใบหน้าขาดคุณสมบัติใบหน้าที่จำเป็นสำหรับการแยกใบหน้าที่แตกต่างกัน การปรับแต่งอย่างละเอียดในชุดข้อมูลความละเอียดต่ำซึ่งเป็นวิธีที่ไร้เดียงสาสำหรับการปรับแบบจำลองให้ประสิทธิภาพที่ต่ำกว่าเนื่องจากการลืมความรู้ที่ผ่านการฝึกอบรมมาก่อน นอกจากนี้ความแตกต่างของโดเมนระหว่างภาพแกลเลอรี่ความละเอียดสูง (HR) และภาพโพรบความละเอียดต่ำ (LR) ในชุดข้อมูลความละเอียดต่ำนำไปสู่การบรรจบกันที่ไม่ดีสำหรับรุ่นเดียวเพื่อปรับให้เข้ากับทั้งแกลเลอรี่และโพรบหลังจากปรับจูน ด้วยเหตุนี้เราจึงเสนอ Petalface ซึ่งเป็นวิธีการเรียนรู้การถ่ายโอนพารามิเตอร์ที่มีประสิทธิภาพสำหรับการจดจำใบหน้าที่มีความละเอียดต่ำ ผ่าน Petalface เราพยายามที่จะแก้ไขปัญหาทั้งสองข้างต้น (1) เราแก้ปัญหาหายนะโดยการใช้ประโยชน์จากพลังของการปรับจูนที่มีประสิทธิภาพ (PEFT) (2) เราแนะนำโมดูลการปรับระดับต่ำสองโมดูลไปยังกระดูกสันหลังโดยมีการปรับน้ำหนักตามคุณภาพของภาพอินพุตเพื่ออธิบายความแตกต่างของคุณภาพสำหรับแกลเลอรี่และภาพโพรบ เพื่อความรู้ที่ดีที่สุดของเรา Petalface เป็นงานแรกที่ใช้ประโยชน์จากพลังของ Peft สำหรับการจดจำใบหน้าที่มีความละเอียดต่ำ การทดลองอย่างกว้างขวางแสดงให้เห็นว่าวิธีการที่นำเสนอมีประสิทธิภาพสูงกว่าการปรับแต่งอย่างละเอียดในชุดข้อมูลความละเอียดต่ำในขณะที่รักษาประสิทธิภาพในชุดข้อมูลความละเอียดสูงและคุณภาพผสมทั้งหมดในขณะที่ใช้เพียง 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 . recรุ่นก่อนเท่ากับสามารถดาวน์โหลดได้ด้วยตนเองจาก 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
หากคุณพบว่า Petal Face มีประโยชน์สำหรับการวิจัยของคุณโปรดพิจารณาอ้างเรา:
@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]