Kartik Narayan 1 Nithin Gopalakrishnan Nair 1 Jennifer Xu 2 Rama Chellappa 1 Vishal M. Patel 1
ジョンズホプキンス大学1システムおよびテクノロジー研究2


低解像度のデータセットには、明確さが不十分な画像が含まれているため、顔の認識と検証に不可欠な意味のある識別機能を抽出することが困難です。さらに、低解像度のデータセットは通常小さく、被験者の数は限られています。それらをキュレーションするには、かなりの時間、労力、投資が必要です。既存の方法は、単一のエンコーダーで高解像度と低解像度の顔の画像の学習を強制し、それらの間のドメインの違いを考慮しません。図1(a)、1(b)、および1(c)から、高品質のギャラリー画像と低品質のプローブ画像が異なるドメインに属し、分類のために意味のある機能を抽出するために個別のエンコーダーが必要であることが観察されます。事前に訓練されたモデルを低解像度のデータセットに適応させるための素朴なアプローチは、これらのデータセットで完全に微調整されています。ただし、前述のように、低解像度のデータセットのサイズは小さく、小さな低解像度データセット上の多数のパラメーターを使用したモデルを更新すると、収束が不十分です。これにより、モデルは壊滅的な忘却を起こしやすくなり、図2に示すように、高解像度と混合品質のデータセットでパフォーマンスが低下します。
上記の動機で、
1️⃣ロラベースのPETL技術の使用を紹介して、大規模な訓練を受けた顔認識モデルを低解像度のデータセットに適応させます。
2️⃣LORAモジュールの画像品質ベースの重み付けを提案して、高解像度および低解像度データ用の個別のプロキシエンコーダーを作成し、顔認識のための埋め込みの効果的な抽出を確保します。
3️⃣低解像度データセットへの適応において、花びらの顔の優位性を示し、高解像度と混合品質のデータセットでパフォーマンスを維持しながら、低解像度のベンチマーク上の他の最先端モデルよりも優れています。
要約:大規模なデータセットでの事前トレーニングとマージンベースの損失関数を利用して、高解像度の顔認識のためのトレーニングモデルで大成功を収めています。ただし、これらのモデルは、異なる顔を区別するために必要な顔の属性を顔に欠いている低解像度の顔データセットと格闘しています。モデルを適応させるための素朴な方法である低解像度のデータセットの完全な微調整は、事前に訓練された知識の壊滅的な忘却のために劣ったパフォーマンスをもたらします。さらに、低解像度データセットの高解像度(HR)ギャラリー画像と低解像度(LR)プローブ画像のドメインの違いは、単一のモデルが微調整後にギャラリーとプローブの両方に適応するために不十分な収束をもたらします。この目的のために、低解像度の顔認識のためのパラメーター効率の高い転送学習アプローチであるPetalfaceを提案します。 Petalfaceを通じて、前述の両方の問題を解決しようとします。 (1)パラメーターの効率的な微調整(PEFT)の力を活用することにより、壊滅的な忘却を解決します。 (2)バックボーンに2つの低ランク適応モジュールを導入し、ギャラリー画像とプローブ画像の品質の違いを説明するために、入力画質に基づいて重みが調整されています。私たちの知る限り、Petalfaceは、低解像度の顔認識のためにPEFTの力を活用した最初の作業です。広範な実験は、提案された方法が低解像度のデータセットで完全な微調整を上回ることを示しています。

conda env create --file environment.yml
conda activate petalfaceデータセットは、それぞれのWebページから、または著者に郵送することでダウンロードできます。
次の方法でデータセットを配置します。
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プレトレインモデルは、ハグイングフェイスまたは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]でお問い合わせください